@taiga-ui/kit 2.80.0 → 2.81.0

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.
@@ -2,7 +2,7 @@ import { __decorate, __extends, __param } from "tslib";
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, HostListener, Inject, Input, Optional, Output, Self, ViewChild, } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
4
  import { AbstractTuiControl, CHAR_PLUS, setNativeFocused, TUI_FOCUSABLE_ITEM_ACCESSOR, tuiDefaultProp, tuiPure, } from '@taiga-ui/cdk';
5
- import { TUI_ICONS_PATH, TUI_MASK_SYMBOLS_REGEXP, TUI_NON_DIGITS_REGEXP, TuiPrimitiveTextfieldComponent, } from '@taiga-ui/core';
5
+ import { TUI_MASK_SYMBOLS_REGEXP, TUI_NON_DIGITS_REGEXP, TuiFlagPipe, TuiPrimitiveTextfieldComponent, TuiSizeL, TuiSizeM, TuiSizeS, } from '@taiga-ui/core';
6
6
  import { TuiCountryIsoCode } from '@taiga-ui/i18n';
7
7
  import { TUI_ARROW } from '@taiga-ui/kit/components/arrow';
8
8
  import { TuiInputPhoneComponent } from '@taiga-ui/kit/components/input-phone';
@@ -16,12 +16,12 @@ import { extractValueFromEvent } from './utils/extract-value-from-event';
16
16
  // @dynamic
17
17
  var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
18
18
  __extends(TuiInputPhoneInternationalComponent, _super);
19
- function TuiInputPhoneInternationalComponent(control, changeDetectorRef, iconsPath, countriesNames$, countriesMasks, options) {
19
+ function TuiInputPhoneInternationalComponent(control, changeDetectorRef, countriesNames$, countriesMasks, options, flagPipe) {
20
20
  var _this = _super.call(this, control, changeDetectorRef) || this;
21
21
  _this.countriesNames$ = countriesNames$;
22
22
  _this.countriesMasks = countriesMasks;
23
23
  _this.options = options;
24
- _this.staticPath = null;
24
+ _this.flagPipe = flagPipe;
25
25
  _this.countries = _this.options.countries;
26
26
  _this.countryIsoCodeChange = new EventEmitter();
27
27
  _this.countryIsoCode = _this.options.countryIsoCode;
@@ -30,7 +30,6 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
30
30
  _this.isoToCountryCodeMapper = function (item) {
31
31
  return _this.isoToCountryCode(item);
32
32
  };
33
- _this.staticPath = iconsPath('tuiIcon').replace('tuiIcon.svg#tuiIcon', '');
34
33
  return _this;
35
34
  }
36
35
  TuiInputPhoneInternationalComponent_1 = TuiInputPhoneInternationalComponent;
@@ -76,6 +75,10 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
76
75
  configurable: true
77
76
  });
78
77
  Object.defineProperty(TuiInputPhoneInternationalComponent.prototype, "countryFlagPath", {
78
+ /**
79
+ * @deprecated use `<img [src]="countryIsoCode | tuiFlagPipe" />`
80
+ * TODO drop in v4.0
81
+ */
79
82
  get: function () {
80
83
  return this.getFlagPath(this.countryIsoCode);
81
84
  },
@@ -97,8 +100,12 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
97
100
  this.updateCountryIsoCode(countryIsoCode);
98
101
  this.updateValue("" + CHAR_PLUS + value);
99
102
  };
103
+ /**
104
+ * @deprecated use `<img [src]="countryIsoCode | tuiFlagPipe" />`
105
+ * TODO drop in v4.0
106
+ */
100
107
  TuiInputPhoneInternationalComponent.prototype.getFlagPath = function (code) {
101
- return "" + this.staticPath + code + ".png";
108
+ return this.flagPipe.transform(code);
102
109
  };
103
110
  TuiInputPhoneInternationalComponent.prototype.onItemClick = function (isoCode) {
104
111
  this.open = false;
@@ -158,10 +165,10 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
158
165
  TuiInputPhoneInternationalComponent.ctorParameters = function () { return [
159
166
  { type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
160
167
  { type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
161
- { type: undefined, decorators: [{ type: Inject, args: [TUI_ICONS_PATH,] }] },
162
168
  { type: Observable, decorators: [{ type: Inject, args: [TUI_COUNTRIES,] }] },
163
169
  { type: undefined, decorators: [{ type: Inject, args: [TUI_COUNTRIES_MASKS,] }] },
164
- { type: undefined, decorators: [{ type: Inject, args: [TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS,] }] }
170
+ { type: undefined, decorators: [{ type: Inject, args: [TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS,] }] },
171
+ { type: TuiFlagPipe, decorators: [{ type: Inject, args: [TuiFlagPipe,] }] }
165
172
  ]; };
166
173
  __decorate([
167
174
  ViewChild(TuiInputPhoneComponent)
@@ -189,7 +196,7 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
189
196
  TuiInputPhoneInternationalComponent = TuiInputPhoneInternationalComponent_1 = __decorate([
190
197
  Component({
191
198
  selector: 'tui-input-phone-international',
192
- template: "<tui-hosted-dropdown\n *tuiLet=\"countriesNames$ | async as countriesNames\"\n class=\"t-hosted-dropdown\"\n [content]=\"dropdown\"\n [canOpen]=\"!readOnly\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div tuiGroup>\n <tui-primitive-textfield\n tuiHostedDropdownHost\n class=\"t-country-select tui-group__auto-width-item\"\n [tuiTextfieldCustomContent]=\"countryValueContent\"\n [tuiTextfieldLabelOutside]=\"true\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [editable]=\"false\"\n [iconContent]=\"arrow\"\n [pseudoFocused]=\"open || null\"\n [readOnly]=\"readOnly\"\n [tuiHintContent]=\"null\"\n ></tui-primitive-textfield>\n <tui-input-phone\n tuiTextfieldAutocomplete=\"off\"\n class=\"t-input-phone tui-group__auto-width-item\"\n [ngModel]=\"value\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [countryCode]=\"inputPhoneCountryCode\"\n [phoneMaskAfterCountryCode]=\"phoneMaskAfterCountryCode\"\n [readOnly]=\"readOnly\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-content></ng-content>\n </tui-input-phone>\n </div>\n\n <ng-template #dropdown>\n <tui-data-list>\n <button\n *ngFor=\"let item of countries\"\n tuiOption\n (click)=\"onItemClick(item)\"\n >\n <img\n alt=\"\"\n class=\"t-country-item-flag\"\n [src]=\"getFlagPath(item)\"\n />\n <span class=\"t-country-item-name\">\n {{ countriesNames[item] }}\n </span>\n <span class=\"t-country-item-code\">\n {{ item | tuiMapper: isoToCountryCodeMapper }}\n </span>\n </button>\n </tui-data-list>\n </ng-template>\n\n <ng-template #countryValueContent>\n <img\n class=\"t-flag\"\n [alt]=\"countriesNames[countryIsoCode]\"\n [src]=\"countryFlagPath\"\n />\n </ng-template>\n</tui-hosted-dropdown>\n",
199
+ template: "<tui-hosted-dropdown\n *ngIf=\"countriesNames$ | async as countriesNames\"\n class=\"t-hosted-dropdown\"\n [content]=\"dropdown\"\n [canOpen]=\"!readOnly\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div tuiGroup>\n <tui-primitive-textfield\n tuiHostedDropdownHost\n class=\"t-country-select tui-group__auto-width-item\"\n [tuiTextfieldCustomContent]=\"countryValueContent\"\n [tuiTextfieldLabelOutside]=\"true\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [editable]=\"false\"\n [iconContent]=\"arrow\"\n [pseudoFocused]=\"open || null\"\n [readOnly]=\"readOnly\"\n [tuiHintContent]=\"null\"\n ></tui-primitive-textfield>\n <tui-input-phone\n tuiTextfieldAutocomplete=\"off\"\n class=\"t-input-phone tui-group__auto-width-item\"\n [ngModel]=\"value\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [countryCode]=\"inputPhoneCountryCode\"\n [phoneMaskAfterCountryCode]=\"phoneMaskAfterCountryCode\"\n [readOnly]=\"readOnly\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-content></ng-content>\n </tui-input-phone>\n </div>\n\n <ng-template #dropdown>\n <tui-data-list>\n <button\n *ngFor=\"let isoCode of countries\"\n tuiOption\n (click)=\"onItemClick(isoCode)\"\n >\n <img\n alt=\"\"\n class=\"t-country-item-flag\"\n [src]=\"getFlagPath(isoCode)\"\n />\n <span class=\"t-country-item-name\">\n {{ countriesNames[isoCode] }}\n </span>\n <span class=\"t-country-item-code\">\n {{ isoCode | tuiMapper: isoToCountryCodeMapper }}\n </span>\n </button>\n </tui-data-list>\n </ng-template>\n\n <ng-template #countryValueContent>\n <img\n class=\"t-flag\"\n [alt]=\"countriesNames[countryIsoCode]\"\n [src]=\"countryFlagPath\"\n />\n </ng-template>\n</tui-hosted-dropdown>\n",
193
200
  changeDetection: ChangeDetectionStrategy.OnPush,
194
201
  providers: [
195
202
  {
@@ -197,6 +204,8 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
197
204
  useExisting: forwardRef(function () { return TuiInputPhoneInternationalComponent_1; }),
198
205
  },
199
206
  FIXED_DROPDOWN_CONTROLLER_PROVIDER,
207
+ // TODO: for backward compatibility only. Drop in v4.0
208
+ TuiFlagPipe,
200
209
  ],
201
210
  styles: [":host{display:block}:host._disabled{pointer-events:none}.t-hosted-dropdown{display:block}.t-country-select{width:5.625rem}.t-country-select:not(._readonly) ::ng-deep input:not(:disabled){cursor:pointer}.t-country-select._readonly ::ng-deep input{cursor:default}.t-arrow-icon{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.t-arrow-icon:hover{color:var(--tui-text-02)}:host._disabled .t-arrow-icon,:host._readonly .t-arrow-icon{pointer-events:none}:host[data-mode=onDark] .t-arrow-icon{color:var(--tui-text-03-night)}:host[data-mode=onDark] .t-arrow-icon:hover{color:var(--tui-text-01-night)}.t-arrow-icon_open{transform:rotate(180deg)}.t-input-phone{flex:1}.t-flag{width:1.75rem;height:1.25rem;margin-left:-.5rem}.t-country-item-flag{width:1.75rem;height:1.25rem}.t-country-item-name{margin-left:.75rem;margin-right:auto}.t-country-item-code{color:var(--tui-text-02);margin-right:.25rem}"]
202
211
  }),
@@ -204,12 +213,12 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
204
213
  __param(0, Self()),
205
214
  __param(0, Inject(NgControl)),
206
215
  __param(1, Inject(ChangeDetectorRef)),
207
- __param(2, Inject(TUI_ICONS_PATH)),
208
- __param(3, Inject(TUI_COUNTRIES)),
209
- __param(4, Inject(TUI_COUNTRIES_MASKS)),
210
- __param(5, Inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS))
216
+ __param(2, Inject(TUI_COUNTRIES)),
217
+ __param(3, Inject(TUI_COUNTRIES_MASKS)),
218
+ __param(4, Inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS)),
219
+ __param(5, Inject(TuiFlagPipe))
211
220
  ], TuiInputPhoneInternationalComponent);
212
221
  return TuiInputPhoneInternationalComponent;
213
222
  }(AbstractTuiControl));
214
223
  export { TuiInputPhoneInternationalComponent };
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC8iLCJzb3VyY2VzIjpbImlucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsU0FBUyxFQUNULGdCQUFnQixFQUNoQiwyQkFBMkIsRUFFM0IsY0FBYyxFQUdkLE9BQU8sR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsY0FBYyxFQUNkLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsOEJBQThCLEdBSWpDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FB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ZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpQ29udHJvbCxcbiAgICBDSEFSX1BMVVMsXG4gICAgc2V0TmF0aXZlRm9jdXNlZCxcbiAgICBUVUlfRk9DVVNBQkxFX0lURU1fQUNDRVNTT1IsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgVHVpTWFwcGVyLFxuICAgIHR1aVB1cmUsXG4gICAgVHVpU3RyaW5nSGFuZGxlcixcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRVSV9JQ09OU19QQVRILFxuICAgIFRVSV9NQVNLX1NZTUJPTFNfUkVHRVhQLFxuICAgIFRVSV9OT05fRElHSVRTX1JFR0VYUCxcbiAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQsXG4gICAgVHVpU2l6ZUwsXG4gICAgVHVpU2l6ZU0sXG4gICAgVHVpU2l6ZVMsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VHVpQ291bnRyeUlzb0NvZGV9IGZyb20gJ0B0YWlnYS11aS9pMThuJztcbmltcG9ydCB7VFVJX0FSUk9XfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvYXJyb3cnO1xuaW1wb3J0IHtUdWlJbnB1dFBob25lQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUnO1xuaW1wb3J0IHtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Byb3ZpZGVycyc7XG5pbXBvcnQge1RVSV9DT1VOVFJJRVN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TUFTS19BRlRFUl9DT0RFX1JFR0VYUH0gZnJvbSAnLi9jb25zdC9jb3VudHJpZXMnO1xuaW1wb3J0IHtcbiAgICBUVUlfSU5QVVRfUEhPTkVfSU5URVJOQVRJT05BTF9PUFRJT05TLFxuICAgIFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsT3B0aW9ucyxcbn0gZnJvbSAnLi9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLm9wdGlvbnMnO1xuaW1wb3J0IHtUVUlfQ09VTlRSSUVTX01BU0tTfSBmcm9tICcuL3Rva2Vucy9jb3VudHJpZXMtbWFza3MnO1xuaW1wb3J0IHtleHRyYWN0VmFsdWVGcm9tRXZlbnR9IGZyb20gJy4vdXRpbHMvZXh0cmFjdC12YWx1ZS1mcm9tLWV2ZW50JztcblxuLy8gQGR5bmFtaWNcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LXBob25lLWludGVybmF0aW9uYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUVUlfRk9DVVNBQkxFX0lURU1fQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgICAgIEZJWEVEX0RST1BET1dOX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpQ29udHJvbDxzdHJpbmc+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBAVmlld0NoaWxkKFR1aUlucHV0UGhvbmVDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFBob25lQ29tcG9uZW50PzogVHVpSW5wdXRQaG9uZUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbWl0aXZlVGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0aWNQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgnY291bnRyeUlzb0NvZGUnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc2V0IGlzb0NvZGUoY29kZTogVHVpQ291bnRyeUlzb0NvZGUpIHtcbiAgICAgICAgdGhpcy5pbnB1dFBob25lQ29tcG9uZW50Py53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLmNvdW50cnlJc29Db2RlID0gY29kZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGNvdW50cmllcyA9IHRoaXMub3B0aW9ucy5jb3VudHJpZXM7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBjb3VudHJ5SXNvQ29kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VHVpQ291bnRyeUlzb0NvZGU+KCk7XG5cbiAgICBjb3VudHJ5SXNvQ29kZSA9IHRoaXMub3B0aW9ucy5jb3VudHJ5SXNvQ29kZTtcblxuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIHJlYWRvbmx5IGFycm93OiBQb2x5bW9ycGhldXNDb250ZW50PFxuICAgICAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aVNpemVMIHwgVHVpU2l6ZU0gfCBUdWlTaXplUz5cbiAgICA+ID0gVFVJX0FSUk9XO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfSUNPTlNfUEFUSClcbiAgICAgICAgaWNvbnNQYXRoOiBUdWlTdHJpbmdIYW5kbGVyPHN0cmluZz4sXG4gICAgICAgIEBJbmplY3QoVFVJX0NPVU5UUklFUylcbiAgICAgICAgcmVhZG9ubHkgY291bnRyaWVzTmFtZXMkOiBPYnNlcnZhYmxlPFJlY29yZDxUdWlDb3VudHJ5SXNvQ29kZSwgc3RyaW5nPj4sXG4gICAgICAgIEBJbmplY3QoVFVJX0NPVU5UUklFU19NQVNLUylcbiAgICAgICAgcmVhZG9ubHkgY291bnRyaWVzTWFza3M6IFJlY29yZDxUdWlDb3VudHJ5SXNvQ29kZSwgc3RyaW5nPixcbiAgICAgICAgQEluamVjdChUVUlfSU5QVVRfUEhPTkVfSU5URVJOQVRJT05BTF9PUFRJT05TKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsT3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgICAgIHRoaXMuc3RhdGljUGF0aCA9IGljb25zUGF0aCgndHVpSWNvbicpLnJlcGxhY2UoJ3R1aUljb24uc3ZnI3R1aUljb24nLCAnJyk7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudCAmJiAhdGhpcy5jb21wdXRlZERpc2FibGVkXG4gICAgICAgICAgICA/IHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudC5uYXRpdmVGb2N1c2FibGVFbGVtZW50XG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoISF0aGlzLnByaW1pdGl2ZVRleHRmaWVsZCAmJiB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC5mb2N1c2VkKSB8fFxuICAgICAgICAgICAgKCEhdGhpcy5pbnB1dFBob25lQ29tcG9uZW50ICYmIHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudC5mb2N1c2VkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBpbnB1dFBob25lQ291bnRyeUNvZGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNvVG9Db3VudHJ5Q29kZSh0aGlzLmNvdW50cnlJc29Db2RlKTtcbiAgICB9XG5cbiAgICBnZXQgcGhvbmVNYXNrQWZ0ZXJDb3VudHJ5Q29kZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjb3VudHJ5Q29kZSA9IHRoaXMuaXNvVG9Db3VudHJ5Q29kZSh0aGlzLmNvdW50cnlJc29Db2RlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVNYXNrQWZ0ZXJDb3VudHJ5Q29kZShcbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzTWFza3NbdGhpcy5jb3VudHJ5SXNvQ29kZV0sXG4gICAgICAgICAgICBjb3VudHJ5Q29kZSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgY291bnRyeUZsYWdQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZsYWdQYXRoKHRoaXMuY291bnRyeUlzb0NvZGUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlLmNhcHR1cmUucHJldmVudC5zdG9wJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdkcm9wLmNhcHR1cmUucHJldmVudC5zdG9wJywgWyckZXZlbnQnXSlcbiAgICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCB8IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgdmFsdWUgPSBleHRyYWN0VmFsdWVGcm9tRXZlbnQoZXZlbnQpLnJlcGxhY2UoVFVJX05PTl9ESUdJVFNfUkVHRVhQLCAnJyk7XG4gICAgICAgIGNvbnN0IGNvdW50cnlJc29Db2RlID0gdGhpcy5leHRyYWN0Q291bnRyeUNvZGUodmFsdWUpO1xuXG4gICAgICAgIGlmICghY291bnRyeUlzb0NvZGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5pbnB1dFBob25lQ291bnRyeUNvZGV9JHt2YWx1ZX1gXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFRVSV9NQVNLX1NZTUJPTFNfUkVHRVhQLCAnJylcbiAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIHRoaXMuZ2V0TWF4QWxsb3dlZExlbmd0aCh0aGlzLmNvdW50cnlJc29Db2RlKSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY291bnRyeUlzb0NvZGUgPT09IFR1aUNvdW50cnlJc29Db2RlLlJVKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL144LywgJzcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlQ291bnRyeUlzb0NvZGUoY291bnRyeUlzb0NvZGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGAke0NIQVJfUExVU30ke3ZhbHVlfWApO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IGlzb1RvQ291bnRyeUNvZGVNYXBwZXI6IFR1aU1hcHBlcjxUdWlDb3VudHJ5SXNvQ29kZSwgc3RyaW5nPiA9IGl0ZW0gPT5cbiAgICAgICAgdGhpcy5pc29Ub0NvdW50cnlDb2RlKGl0ZW0pO1xuXG4gICAgZ2V0RmxhZ1BhdGgoY29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5zdGF0aWNQYXRofSR7Y29kZX0ucG5nYDtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhpc29Db2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy51cGRhdGVDb3VudHJ5SXNvQ29kZShpc29Db2RlKTtcbiAgICAgICAgLy8gcmVjYWxjdWxhdGVzIG1hc2sgaW5zaWRlIGlucHV0UGhvbmUgdG8gcHJldmVudCBpc29Db2RlIGNvbmZsaWN0XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IHRoaXMuZ2V0TWF4QWxsb3dlZExlbmd0aChpc29Db2RlKTtcblxuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy52YWx1ZS5zbGljZSgwLCBtYXhMZW5ndGgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHNldE5hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnNldERpc2FibGVkU3RhdGUoKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIGlzb1RvQ291bnRyeUNvZGUoaXNvQ29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudHJpZXNNYXNrc1tpc29Db2RlXS5yZXBsYWNlKE1BU0tfQUZURVJfQ09ERV9SRUdFWFAsICcnKTtcbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoYWN0aXZlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmFsbGJhY2tWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1hc2tBZnRlckNvdW50cnlDb2RlKG1hc2s6IHN0cmluZywgY291bnRyeUNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBtYXNrLnJlcGxhY2UoY291bnRyeUNvZGUsICcnKS50cmltKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYXhBbGxvd2VkTGVuZ3RoKGlzb0NvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRyaWVzTWFza3NbaXNvQ29kZV0ucmVwbGFjZSgvWygpXFwtIF0vZywgJycpLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNvdW50cnlJc29Db2RlKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY291bnRyeUlzb0NvZGUgPSBjb2RlO1xuICAgICAgICB0aGlzLmNvdW50cnlJc29Db2RlQ2hhbmdlLmVtaXQoY29kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0Q291bnRyeUNvZGUodmFsdWU6IHN0cmluZyk6IFR1aUNvdW50cnlJc29Db2RlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRyaWVzLmZpbmQoY291bnRyeUlzb0NvZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVDb2RlVGVzdCA9XG4gICAgICAgICAgICAgICAgY291bnRyeUlzb0NvZGUgPT09IFR1aUNvdW50cnlJc29Db2RlLlJVICYmXG4gICAgICAgICAgICAgICAgL15bNyB8IDhdLy50ZXN0KHZhbHVlKSAmJlxuICAgICAgICAgICAgICAgIC9eKD8hODgwWzEtOSBdKS8udGVzdCh2YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGggKyAxID09PSB0aGlzLmdldE1heEFsbG93ZWRMZW5ndGgoVHVpQ291bnRyeUlzb0NvZGUuUlUpO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHJ1Q29kZVRlc3QgfHxcbiAgICAgICAgICAgICAgICAodmFsdWUuc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc29Ub0NvdW50cnlDb2RlKGNvdW50cnlJc29Db2RlKS5yZXBsYWNlKENIQVJfUExVUywgJycpLFxuICAgICAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoICsgMSA9PT0gdGhpcy5nZXRNYXhBbGxvd2VkTGVuZ3RoKGNvdW50cnlJc29Db2RlKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC8iLCJzb3VyY2VzIjpbImlucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsU0FBUyxFQUNULGdCQUFnQixFQUNoQiwyQkFBMkIsRUFFM0IsY0FBYyxFQUdkLE9BQU8sR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsOEJBQThCLEVBQzlCLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBQyxz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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpQ29udHJvbCxcbiAgICBDSEFSX1BMVVMsXG4gICAgc2V0TmF0aXZlRm9jdXNlZCxcbiAgICBUVUlfRk9DVVNBQkxFX0lURU1fQUNDRVNTT1IsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgVHVpTWFwcGVyLFxuICAgIHR1aVB1cmUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUVUlfTUFTS19TWU1CT0xTX1JFR0VYUCxcbiAgICBUVUlfTk9OX0RJR0lUU19SRUdFWFAsXG4gICAgVHVpRmxhZ1BpcGUsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50LFxuICAgIFR1aVNpemVMLFxuICAgIFR1aVNpemVNLFxuICAgIFR1aVNpemVTLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aUNvdW50cnlJc29Db2RlfSBmcm9tICdAdGFpZ2EtdWkvaTE4bic7XG5pbXBvcnQge1RVSV9BUlJPV30gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2Fycm93JztcbmltcG9ydCB7VHVpSW5wdXRQaG9uZUNvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LXBob25lJztcbmltcG9ydCB7RklYRURfRFJPUERPV05fQ09OVFJPTExFUl9QUk9WSURFUn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9wcm92aWRlcnMnO1xuaW1wb3J0IHtUVUlfQ09VTlRSSUVTfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge01BU0tfQUZURVJfQ09ERV9SRUdFWFB9IGZyb20gJy4vY29uc3QvY291bnRyaWVzJztcbmltcG9ydCB7XG4gICAgVFVJX0lOUFVUX1BIT05FX0lOVEVSTkFUSU9OQUxfT1BUSU9OUyxcbiAgICBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE9wdGlvbnMsXG59IGZyb20gJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5vcHRpb25zJztcbmltcG9ydCB7VFVJX0NPVU5UUklFU19NQVNLU30gZnJvbSAnLi90b2tlbnMvY291bnRyaWVzLW1hc2tzJztcbmltcG9ydCB7ZXh0cmFjdFZhbHVlRnJvbUV2ZW50fSBmcm9tICcuL3V0aWxzL2V4dHJhY3QtdmFsdWUtZnJvbS1ldmVudCc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgICBGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgICAgICAvLyBUT0RPOiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvbmx5LiBEcm9wIGluIHY0LjBcbiAgICAgICAgVHVpRmxhZ1BpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpQ29udHJvbDxzdHJpbmc+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBAVmlld0NoaWxkKFR1aUlucHV0UGhvbmVDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFBob25lQ29tcG9uZW50PzogVHVpSW5wdXRQaG9uZUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbWl0aXZlVGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgQElucHV0KCdjb3VudHJ5SXNvQ29kZScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzZXQgaXNvQ29kZShjb2RlOiBUdWlDb3VudHJ5SXNvQ29kZSkge1xuICAgICAgICB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQ/LndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuY291bnRyeUlzb0NvZGUgPSBjb2RlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgY291bnRyaWVzID0gdGhpcy5vcHRpb25zLmNvdW50cmllcztcblxuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGNvdW50cnlJc29Db2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlDb3VudHJ5SXNvQ29kZT4oKTtcblxuICAgIGNvdW50cnlJc29Db2RlID0gdGhpcy5vcHRpb25zLmNvdW50cnlJc29Db2RlO1xuXG4gICAgb3BlbiA9IGZhbHNlO1xuXG4gICAgcmVhZG9ubHkgYXJyb3c6IFBvbHltb3JwaGV1c0NvbnRlbnQ8XG4gICAgICAgIFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8VHVpU2l6ZUwgfCBUdWlTaXplTSB8IFR1aVNpemVTPlxuICAgID4gPSBUVUlfQVJST1c7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9DT1VOVFJJRVMpXG4gICAgICAgIHJlYWRvbmx5IGNvdW50cmllc05hbWVzJDogT2JzZXJ2YWJsZTxSZWNvcmQ8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4+LFxuICAgICAgICBASW5qZWN0KFRVSV9DT1VOVFJJRVNfTUFTS1MpXG4gICAgICAgIHJlYWRvbmx5IGNvdW50cmllc01hc2tzOiBSZWNvcmQ8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4sXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX1BIT05FX0lOVEVSTkFUSU9OQUxfT1BUSU9OUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE9wdGlvbnMsXG4gICAgICAgIEBJbmplY3QoVHVpRmxhZ1BpcGUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmxhZ1BpcGU6IFR1aUZsYWdQaXBlLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudCAmJiAhdGhpcy5jb21wdXRlZERpc2FibGVkXG4gICAgICAgICAgICA/IHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudC5uYXRpdmVGb2N1c2FibGVFbGVtZW50XG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoISF0aGlzLnByaW1pdGl2ZVRleHRmaWVsZCAmJiB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC5mb2N1c2VkKSB8fFxuICAgICAgICAgICAgKCEhdGhpcy5pbnB1dFBob25lQ29tcG9uZW50ICYmIHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudC5mb2N1c2VkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBpbnB1dFBob25lQ291bnRyeUNvZGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNvVG9Db3VudHJ5Q29kZSh0aGlzLmNvdW50cnlJc29Db2RlKTtcbiAgICB9XG5cbiAgICBnZXQgcGhvbmVNYXNrQWZ0ZXJDb3VudHJ5Q29kZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjb3VudHJ5Q29kZSA9IHRoaXMuaXNvVG9Db3VudHJ5Q29kZSh0aGlzLmNvdW50cnlJc29Db2RlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVNYXNrQWZ0ZXJDb3VudHJ5Q29kZShcbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzTWFza3NbdGhpcy5jb3VudHJ5SXNvQ29kZV0sXG4gICAgICAgICAgICBjb3VudHJ5Q29kZSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYDxpbWcgW3NyY109XCJjb3VudHJ5SXNvQ29kZSB8IHR1aUZsYWdQaXBlXCIgLz5gXG4gICAgICogVE9ETyBkcm9wIGluIHY0LjBcbiAgICAgKi9cbiAgICBnZXQgY291bnRyeUZsYWdQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZsYWdQYXRoKHRoaXMuY291bnRyeUlzb0NvZGUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlLmNhcHR1cmUucHJldmVudC5zdG9wJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdkcm9wLmNhcHR1cmUucHJldmVudC5zdG9wJywgWyckZXZlbnQnXSlcbiAgICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCB8IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgdmFsdWUgPSBleHRyYWN0VmFsdWVGcm9tRXZlbnQoZXZlbnQpLnJlcGxhY2UoVFVJX05PTl9ESUdJVFNfUkVHRVhQLCAnJyk7XG4gICAgICAgIGNvbnN0IGNvdW50cnlJc29Db2RlID0gdGhpcy5leHRyYWN0Q291bnRyeUNvZGUodmFsdWUpO1xuXG4gICAgICAgIGlmICghY291bnRyeUlzb0NvZGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5pbnB1dFBob25lQ291bnRyeUNvZGV9JHt2YWx1ZX1gXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFRVSV9NQVNLX1NZTUJPTFNfUkVHRVhQLCAnJylcbiAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIHRoaXMuZ2V0TWF4QWxsb3dlZExlbmd0aCh0aGlzLmNvdW50cnlJc29Db2RlKSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY291bnRyeUlzb0NvZGUgPT09IFR1aUNvdW50cnlJc29Db2RlLlJVKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL144LywgJzcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlQ291bnRyeUlzb0NvZGUoY291bnRyeUlzb0NvZGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGAke0NIQVJfUExVU30ke3ZhbHVlfWApO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IGlzb1RvQ291bnRyeUNvZGVNYXBwZXI6IFR1aU1hcHBlcjxUdWlDb3VudHJ5SXNvQ29kZSwgc3RyaW5nPiA9IGl0ZW0gPT5cbiAgICAgICAgdGhpcy5pc29Ub0NvdW50cnlDb2RlKGl0ZW0pO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGA8aW1nIFtzcmNdPVwiY291bnRyeUlzb0NvZGUgfCB0dWlGbGFnUGlwZVwiIC8+YFxuICAgICAqIFRPRE8gZHJvcCBpbiB2NC4wXG4gICAgICovXG4gICAgZ2V0RmxhZ1BhdGgoY29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mbGFnUGlwZS50cmFuc2Zvcm0oY29kZSk7XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soaXNvQ29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlQ291bnRyeUlzb0NvZGUoaXNvQ29kZSk7XG4gICAgICAgIC8vIHJlY2FsY3VsYXRlcyBtYXNrIGluc2lkZSBpbnB1dFBob25lIHRvIHByZXZlbnQgaXNvQ29kZSBjb25mbGljdFxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLmdldE1heEFsbG93ZWRMZW5ndGgoaXNvQ29kZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudmFsdWUuc2xpY2UoMCwgbWF4TGVuZ3RoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5zZXREaXNhYmxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpc29Ub0NvdW50cnlDb2RlKGlzb0NvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRyaWVzTWFza3NbaXNvQ29kZV0ucmVwbGFjZShNQVNLX0FGVEVSX0NPREVfUkVHRVhQLCAnJyk7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIG9uQWN0aXZlWm9uZShhY3RpdmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGFjdGl2ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZhbGxiYWNrVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrQWZ0ZXJDb3VudHJ5Q29kZShtYXNrOiBzdHJpbmcsIGNvdW50cnlDb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbWFzay5yZXBsYWNlKGNvdW50cnlDb2RlLCAnJykudHJpbSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWF4QWxsb3dlZExlbmd0aChpc29Db2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50cmllc01hc2tzW2lzb0NvZGVdLnJlcGxhY2UoL1soKVxcLSBdL2csICcnKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDb3VudHJ5SXNvQ29kZShjb2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvdW50cnlJc29Db2RlID0gY29kZTtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZUNoYW5nZS5lbWl0KGNvZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdENvdW50cnlDb2RlKHZhbHVlOiBzdHJpbmcpOiBUdWlDb3VudHJ5SXNvQ29kZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50cmllcy5maW5kKGNvdW50cnlJc29Db2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1Q29kZVRlc3QgPVxuICAgICAgICAgICAgICAgIGNvdW50cnlJc29Db2RlID09PSBUdWlDb3VudHJ5SXNvQ29kZS5SVSAmJlxuICAgICAgICAgICAgICAgIC9eWzcgfCA4XS8udGVzdCh2YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAvXig/ITg4MFsxLTkgXSkvLnRlc3QodmFsdWUpICYmXG4gICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoICsgMSA9PT0gdGhpcy5nZXRNYXhBbGxvd2VkTGVuZ3RoKFR1aUNvdW50cnlJc29Db2RlLlJVKTtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBydUNvZGVUZXN0IHx8XG4gICAgICAgICAgICAgICAgKHZhbHVlLnN0YXJ0c1dpdGgoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNvVG9Db3VudHJ5Q29kZShjb3VudHJ5SXNvQ29kZSkucmVwbGFjZShDSEFSX1BMVVMsICcnKSxcbiAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCArIDEgPT09IHRoaXMuZ2V0TWF4QWxsb3dlZExlbmd0aChjb3VudHJ5SXNvQ29kZSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -2,8 +2,8 @@ import { __decorate } from "tslib";
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { NgModule } from '@angular/core';
4
4
  import { FormsModule } from '@angular/forms';
5
- import { TuiActiveZoneModule, TuiLetModule, TuiMapperPipeModule } from '@taiga-ui/cdk';
6
- import { TuiDataListModule, TuiGroupModule, TuiHintControllerModule, TuiHostedDropdownModule, TuiPrimitiveTextfieldModule, TuiSvgModule, TuiTextfieldControllerModule, } from '@taiga-ui/core';
5
+ import { TuiActiveZoneModule, TuiMapperPipeModule } from '@taiga-ui/cdk';
6
+ import { TuiDataListModule, TuiFlagPipeModule, TuiGroupModule, TuiHintControllerModule, TuiHostedDropdownModule, TuiPrimitiveTextfieldModule, TuiSvgModule, TuiTextfieldControllerModule, } from '@taiga-ui/core';
7
7
  import { TuiArrowModule } from '@taiga-ui/kit/components/arrow';
8
8
  import { TuiInputPhoneModule } from '@taiga-ui/kit/components/input-phone';
9
9
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
@@ -26,7 +26,7 @@ var TuiInputPhoneInternationalModule = /** @class */ (function () {
26
26
  TuiHostedDropdownModule,
27
27
  TuiDataListModule,
28
28
  TuiArrowModule,
29
- TuiLetModule,
29
+ TuiFlagPipeModule,
30
30
  TuiMapperPipeModule,
31
31
  TuiActiveZoneModule,
32
32
  ],
@@ -37,4 +37,4 @@ var TuiInputPhoneInternationalModule = /** @class */ (function () {
37
37
  return TuiInputPhoneInternationalModule;
38
38
  }());
39
39
  export { TuiInputPhoneInternationalModule };
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC8iLCJzb3VyY2VzIjpbImlucHV0LXBob25lLWludGVybmF0aW9uYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLG1CQUFtQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLDJCQUEyQixFQUMzQixZQUFZLEVBQ1osNEJBQTRCLEdBQy9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBdUIxRjtJQUFBO0lBQStDLENBQUM7SUFBbkMsZ0NBQWdDO1FBckI1QyxRQUFRLENBQUM7WUFDTixPQUFPLEVBQUU7Z0JBQ0wsWUFBWTtnQkFDWixXQUFXO2dCQUNYLGtCQUFrQjtnQkFDbEIsWUFBWTtnQkFDWixtQkFBbUI7Z0JBQ25CLGNBQWM7Z0JBQ2QsMkJBQTJCO2dCQUMzQiw0QkFBNEI7Z0JBQzVCLHVCQUF1QjtnQkFDdkIsdUJBQXVCO2dCQUN2QixpQkFBaUI7Z0JBQ2pCLGNBQWM7Z0JBQ2QsWUFBWTtnQkFDWixtQkFBbUI7Z0JBQ25CLG1CQUFtQjthQUN0QjtZQUNELFlBQVksRUFBRSxDQUFDLG1DQUFtQyxDQUFDO1lBQ25ELE9BQU8sRUFBRSxDQUFDLG1DQUFtQyxDQUFDO1NBQ2pELENBQUM7T0FDVyxnQ0FBZ0MsQ0FBRztJQUFELHVDQUFDO0NBQUEsQUFBaEQsSUFBZ0Q7U0FBbkMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VHVpQWN0aXZlWm9uZU1vZHVsZSwgVHVpTGV0TW9kdWxlLCBUdWlNYXBwZXJQaXBlTW9kdWxlfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgVHVpRGF0YUxpc3RNb2R1bGUsXG4gICAgVHVpR3JvdXBNb2R1bGUsXG4gICAgVHVpSGludENvbnRyb2xsZXJNb2R1bGUsXG4gICAgVHVpSG9zdGVkRHJvcGRvd25Nb2R1bGUsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkTW9kdWxlLFxuICAgIFR1aVN2Z01vZHVsZSxcbiAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aUFycm93TW9kdWxlfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvYXJyb3cnO1xuaW1wb3J0IHtUdWlJbnB1dFBob25lTW9kdWxlfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNNb2R1bGV9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5cbmltcG9ydCB7VHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxDb21wb25lbnR9IGZyb20gJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUG9seW1vcnBoZXVzTW9kdWxlLFxuICAgICAgICBUdWlTdmdNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0UGhvbmVNb2R1bGUsXG4gICAgICAgIFR1aUdyb3VwTW9kdWxlLFxuICAgICAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRNb2R1bGUsXG4gICAgICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUsXG4gICAgICAgIFR1aUhpbnRDb250cm9sbGVyTW9kdWxlLFxuICAgICAgICBUdWlIb3N0ZWREcm9wZG93bk1vZHVsZSxcbiAgICAgICAgVHVpRGF0YUxpc3RNb2R1bGUsXG4gICAgICAgIFR1aUFycm93TW9kdWxlLFxuICAgICAgICBUdWlMZXRNb2R1bGUsXG4gICAgICAgIFR1aU1hcHBlclBpcGVNb2R1bGUsXG4gICAgICAgIFR1aUFjdGl2ZVpvbmVNb2R1bGUsXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW1R1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxNb2R1bGUge31cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC8iLCJzb3VyY2VzIjpbImlucHV0LXBob25lLWludGVybmF0aW9uYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLDJCQUEyQixFQUMzQixZQUFZLEVBQ1osNEJBQTRCLEdBQy9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBdUIxRjtJQUFBO0lBQStDLENBQUM7SUFBbkMsZ0NBQWdDO1FBckI1QyxRQUFRLENBQUM7WUFDTixPQUFPLEVBQUU7Z0JBQ0wsWUFBWTtnQkFDWixXQUFXO2dCQUNYLGtCQUFrQjtnQkFDbEIsWUFBWTtnQkFDWixtQkFBbUI7Z0JBQ25CLGNBQWM7Z0JBQ2QsMkJBQTJCO2dCQUMzQiw0QkFBNEI7Z0JBQzVCLHVCQUF1QjtnQkFDdkIsdUJBQXVCO2dCQUN2QixpQkFBaUI7Z0JBQ2pCLGNBQWM7Z0JBQ2QsaUJBQWlCO2dCQUNqQixtQkFBbUI7Z0JBQ25CLG1CQUFtQjthQUN0QjtZQUNELFlBQVksRUFBRSxDQUFDLG1DQUFtQyxDQUFDO1lBQ25ELE9BQU8sRUFBRSxDQUFDLG1DQUFtQyxDQUFDO1NBQ2pELENBQUM7T0FDVyxnQ0FBZ0MsQ0FBRztJQUFELHVDQUFDO0NBQUEsQUFBaEQsSUFBZ0Q7U0FBbkMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VHVpQWN0aXZlWm9uZU1vZHVsZSwgVHVpTWFwcGVyUGlwZU1vZHVsZX0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFR1aURhdGFMaXN0TW9kdWxlLFxuICAgIFR1aUZsYWdQaXBlTW9kdWxlLFxuICAgIFR1aUdyb3VwTW9kdWxlLFxuICAgIFR1aUhpbnRDb250cm9sbGVyTW9kdWxlLFxuICAgIFR1aUhvc3RlZERyb3Bkb3duTW9kdWxlLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZE1vZHVsZSxcbiAgICBUdWlTdmdNb2R1bGUsXG4gICAgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlBcnJvd01vZHVsZX0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2Fycm93JztcbmltcG9ydCB7VHVpSW5wdXRQaG9uZU1vZHVsZX0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LXBob25lJztcbmltcG9ydCB7UG9seW1vcnBoZXVzTW9kdWxlfSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuXG5pbXBvcnQge1R1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsQ29tcG9uZW50fSBmcm9tICcuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFBvbHltb3JwaGV1c01vZHVsZSxcbiAgICAgICAgVHVpU3ZnTW9kdWxlLFxuICAgICAgICBUdWlJbnB1dFBob25lTW9kdWxlLFxuICAgICAgICBUdWlHcm91cE1vZHVsZSxcbiAgICAgICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkTW9kdWxlLFxuICAgICAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlLFxuICAgICAgICBUdWlIaW50Q29udHJvbGxlck1vZHVsZSxcbiAgICAgICAgVHVpSG9zdGVkRHJvcGRvd25Nb2R1bGUsXG4gICAgICAgIFR1aURhdGFMaXN0TW9kdWxlLFxuICAgICAgICBUdWlBcnJvd01vZHVsZSxcbiAgICAgICAgVHVpRmxhZ1BpcGVNb2R1bGUsXG4gICAgICAgIFR1aU1hcHBlclBpcGVNb2R1bGUsXG4gICAgICAgIFR1aUFjdGl2ZVpvbmVNb2R1bGUsXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW1R1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxNb2R1bGUge31cbiJdfQ==
@@ -2,8 +2,8 @@ import { TuiCountryIsoCode as TuiCountryIsoCode$1 } from '@taiga-ui/i18n';
2
2
  import { __decorate, __param } from 'tslib';
3
3
  import { InjectionToken, EventEmitter, Optional, Self, Inject, ChangeDetectorRef, ViewChild, Input, Output, HostListener, Component, ChangeDetectionStrategy, forwardRef, NgModule } from '@angular/core';
4
4
  import { NgControl, FormsModule } from '@angular/forms';
5
- import { getClipboardDataText, AbstractTuiControl, CHAR_PLUS, setNativeFocused, tuiDefaultProp, tuiPure, TUI_FOCUSABLE_ITEM_ACCESSOR, TuiLetModule, TuiMapperPipeModule, TuiActiveZoneModule } from '@taiga-ui/cdk';
6
- import { TUI_NON_DIGITS_REGEXP, TUI_MASK_SYMBOLS_REGEXP, TUI_ICONS_PATH, TuiPrimitiveTextfieldComponent, TuiSvgModule, TuiGroupModule, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule, TuiHintControllerModule, TuiHostedDropdownModule, TuiDataListModule } from '@taiga-ui/core';
5
+ import { getClipboardDataText, AbstractTuiControl, CHAR_PLUS, setNativeFocused, tuiDefaultProp, tuiPure, TUI_FOCUSABLE_ITEM_ACCESSOR, TuiMapperPipeModule, TuiActiveZoneModule } from '@taiga-ui/cdk';
6
+ import { TUI_NON_DIGITS_REGEXP, TUI_MASK_SYMBOLS_REGEXP, TuiFlagPipe, TuiPrimitiveTextfieldComponent, TuiSvgModule, TuiGroupModule, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule, TuiHintControllerModule, TuiHostedDropdownModule, TuiDataListModule, TuiFlagPipeModule } from '@taiga-ui/core';
7
7
  import { TUI_ARROW, TuiArrowModule } from '@taiga-ui/kit/components/arrow';
8
8
  import { TuiInputPhoneComponent, TuiInputPhoneModule } from '@taiga-ui/kit/components/input-phone';
9
9
  import { FIXED_DROPDOWN_CONTROLLER_PROVIDER } from '@taiga-ui/kit/providers';
@@ -47,6 +47,7 @@ const COUNTRIES = {
47
47
  [TuiCountryIsoCode$1.BH]: { mask: `+973####-####`, name: `Бахрейн` },
48
48
  [TuiCountryIsoCode$1.BI]: { mask: `+257##-##-####`, name: `Бурунди` },
49
49
  [TuiCountryIsoCode$1.BJ]: { mask: `+229##-##-####`, name: `Бенин` },
50
+ [TuiCountryIsoCode$1.BL]: { mask: `+590 ## ## ## ## ##`, name: `Сен-Бартельми` },
50
51
  [TuiCountryIsoCode$1.BM]: { mask: `+1(441) ###-####`, name: `Бермудские острова` },
51
52
  [TuiCountryIsoCode$1.BN]: { mask: `+673###-####`, name: `Бруней-Даруссалам` },
52
53
  [TuiCountryIsoCode$1.BO]: { mask: `+591#-###-####`, name: `Боливия` },
@@ -103,11 +104,13 @@ const COUNTRIES = {
103
104
  [TuiCountryIsoCode$1.GB]: { mask: `+44##-####-####`, name: `Великобритания` },
104
105
  [TuiCountryIsoCode$1.GD]: { mask: `+1(473) ###-####`, name: `Гренада` },
105
106
  [TuiCountryIsoCode$1.GE]: { mask: `+995(###) ###-###`, name: `Грузия` },
107
+ [TuiCountryIsoCode$1.GF]: { mask: `+594 ## ## ## ## ##`, name: `Гайана` },
106
108
  [TuiCountryIsoCode$1.GH]: { mask: `+233(###) ###-###`, name: `Гана` },
107
109
  [TuiCountryIsoCode$1.GI]: { mask: `+350###-#####`, name: `Гибралтар` },
108
110
  [TuiCountryIsoCode$1.GL]: { mask: `+299##-##-##`, name: `Гренландия` },
109
111
  [TuiCountryIsoCode$1.GM]: { mask: `+220(###) ##-##`, name: `Гамбия` },
110
112
  [TuiCountryIsoCode$1.GN]: { mask: `+224##-###-###`, name: `Гвинея` },
113
+ [TuiCountryIsoCode$1.GP]: { mask: `+590 ## ## ## ## ##`, name: `Гваделупа` },
111
114
  [TuiCountryIsoCode$1.GQ]: { mask: `+240##-###-####`, name: `Экваториальная Гвинея` },
112
115
  [TuiCountryIsoCode$1.GR]: { mask: `+30(###) ###-####`, name: `Греция` },
113
116
  [TuiCountryIsoCode$1.GT]: { mask: `+502#-###-####`, name: `Гватемала` },
@@ -154,12 +157,14 @@ const COUNTRIES = {
154
157
  [TuiCountryIsoCode$1.MC]: { mask: `+377###-###-###`, name: `Монако` },
155
158
  [TuiCountryIsoCode$1.MD]: { mask: `+373####-####`, name: `Молдова` },
156
159
  [TuiCountryIsoCode$1.ME]: { mask: `+382##-###-###`, name: `Черногория` },
160
+ [TuiCountryIsoCode$1.MF]: { mask: `+590 ## ## ## ## ##`, name: `Сен-Мартен` },
157
161
  [TuiCountryIsoCode$1.MG]: { mask: `+261##-##-#####`, name: `Мадагаскар` },
158
162
  [TuiCountryIsoCode$1.MK]: { mask: `+389##-###-###`, name: `Респ. Македония` },
159
163
  [TuiCountryIsoCode$1.ML]: { mask: `+223##-##-####`, name: `Мали` },
160
164
  [TuiCountryIsoCode$1.MM]: { mask: `+95##-###-###`, name: `Бирма (Мьянма)` },
161
165
  [TuiCountryIsoCode$1.MN]: { mask: `+976##-##-####`, name: `Монголия` },
162
166
  [TuiCountryIsoCode$1.MO]: { mask: `+853####-####`, name: `Макао` },
167
+ [TuiCountryIsoCode$1.MQ]: { mask: `+596 ## ## ## ## ##`, name: `Мартиника` },
163
168
  [TuiCountryIsoCode$1.MR]: { mask: `+222##-##-####`, name: `Мавритания` },
164
169
  [TuiCountryIsoCode$1.MS]: { mask: `+1(664) ###-####`, name: `Монтсеррат` },
165
170
  [TuiCountryIsoCode$1.MT]: { mask: `+356####-####`, name: `Мальта` },
@@ -170,6 +175,7 @@ const COUNTRIES = {
170
175
  [TuiCountryIsoCode$1.MY]: { mask: `+60(###) ###-###`, name: `Малайзия` },
171
176
  [TuiCountryIsoCode$1.MZ]: { mask: `+258##-###-###`, name: `Мозамбик` },
172
177
  [TuiCountryIsoCode$1.NA]: { mask: `+264##-###-####`, name: `Намибия` },
178
+ [TuiCountryIsoCode$1.NC]: { mask: `+687 ### ###`, name: `Каледония` },
173
179
  [TuiCountryIsoCode$1.NE]: { mask: `+227##-##-####`, name: `Нигер` },
174
180
  [TuiCountryIsoCode$1.NG]: { mask: `+234(###) ###-####`, name: `Нигерия` },
175
181
  [TuiCountryIsoCode$1.NI]: { mask: `+505####-####`, name: `Никарагуа` },
@@ -192,6 +198,7 @@ const COUNTRIES = {
192
198
  [TuiCountryIsoCode$1.PW]: { mask: `+680###-####`, name: `Палау` },
193
199
  [TuiCountryIsoCode$1.PY]: { mask: `+595(###) ###-###`, name: `Парагвай` },
194
200
  [TuiCountryIsoCode$1.QA]: { mask: `+974####-####`, name: `Катар` },
201
+ [TuiCountryIsoCode$1.RE]: { mask: `+262 ## ## ## ## ##`, name: `Реюньон` },
195
202
  [TuiCountryIsoCode$1.RO]: { mask: `+40##-###-####`, name: `Румыния` },
196
203
  [TuiCountryIsoCode$1.RS]: { mask: `+381##-###-####`, name: `Сербия` },
197
204
  [TuiCountryIsoCode$1.RU]: { mask: `+7### ###-##-##`, name: `Россия` },
@@ -247,6 +254,7 @@ const COUNTRIES = {
247
254
  [TuiCountryIsoCode$1.WS]: { mask: `+685##-####`, name: `Самоа` },
248
255
  [TuiCountryIsoCode$1.XK]: { mask: `+383##-###-###`, name: `Косово` },
249
256
  [TuiCountryIsoCode$1.YE]: { mask: `+967###-###-###`, name: `Йемен ` },
257
+ [TuiCountryIsoCode$1.YT]: { mask: `+262 ## ## ## ## ##`, name: `Майотта` },
250
258
  [TuiCountryIsoCode$1.ZA]: { mask: `+27##-###-####`, name: `Южно-Африканская Респ.` },
251
259
  [TuiCountryIsoCode$1.ZM]: { mask: `+260##-###-####`, name: `Замбия` },
252
260
  [TuiCountryIsoCode$1.ZW]: { mask: `+263#-######`, name: `Зимбабве` },
@@ -509,19 +517,18 @@ const tuiExtractValueFromEvent = extractValueFromEvent;
509
517
  var TuiInputPhoneInternationalComponent_1;
510
518
  // @dynamic
511
519
  let TuiInputPhoneInternationalComponent = TuiInputPhoneInternationalComponent_1 = class TuiInputPhoneInternationalComponent extends AbstractTuiControl {
512
- constructor(control, changeDetectorRef, iconsPath, countriesNames$, countriesMasks, options) {
520
+ constructor(control, changeDetectorRef, countriesNames$, countriesMasks, options, flagPipe) {
513
521
  super(control, changeDetectorRef);
514
522
  this.countriesNames$ = countriesNames$;
515
523
  this.countriesMasks = countriesMasks;
516
524
  this.options = options;
517
- this.staticPath = null;
525
+ this.flagPipe = flagPipe;
518
526
  this.countries = this.options.countries;
519
527
  this.countryIsoCodeChange = new EventEmitter();
520
528
  this.countryIsoCode = this.options.countryIsoCode;
521
529
  this.open = false;
522
530
  this.arrow = TUI_ARROW;
523
531
  this.isoToCountryCodeMapper = item => this.isoToCountryCode(item);
524
- this.staticPath = iconsPath('tuiIcon').replace('tuiIcon.svg#tuiIcon', '');
525
532
  }
526
533
  set isoCode(code) {
527
534
  var _a;
@@ -544,6 +551,10 @@ let TuiInputPhoneInternationalComponent = TuiInputPhoneInternationalComponent_1
544
551
  const countryCode = this.isoToCountryCode(this.countryIsoCode);
545
552
  return this.calculateMaskAfterCountryCode(this.countriesMasks[this.countryIsoCode], countryCode);
546
553
  }
554
+ /**
555
+ * @deprecated use `<img [src]="countryIsoCode | tuiFlagPipe" />`
556
+ * TODO drop in v4.0
557
+ */
547
558
  get countryFlagPath() {
548
559
  return this.getFlagPath(this.countryIsoCode);
549
560
  }
@@ -562,8 +573,12 @@ let TuiInputPhoneInternationalComponent = TuiInputPhoneInternationalComponent_1
562
573
  this.updateCountryIsoCode(countryIsoCode);
563
574
  this.updateValue(`${CHAR_PLUS}${value}`);
564
575
  }
576
+ /**
577
+ * @deprecated use `<img [src]="countryIsoCode | tuiFlagPipe" />`
578
+ * TODO drop in v4.0
579
+ */
565
580
  getFlagPath(code) {
566
- return `${this.staticPath}${code}.png`;
581
+ return this.flagPipe.transform(code);
567
582
  }
568
583
  onItemClick(isoCode) {
569
584
  this.open = false;
@@ -622,10 +637,10 @@ let TuiInputPhoneInternationalComponent = TuiInputPhoneInternationalComponent_1
622
637
  TuiInputPhoneInternationalComponent.ctorParameters = () => [
623
638
  { type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
624
639
  { type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
625
- { type: undefined, decorators: [{ type: Inject, args: [TUI_ICONS_PATH,] }] },
626
640
  { type: Observable, decorators: [{ type: Inject, args: [TUI_COUNTRIES,] }] },
627
641
  { type: undefined, decorators: [{ type: Inject, args: [TUI_COUNTRIES_MASKS,] }] },
628
- { type: undefined, decorators: [{ type: Inject, args: [TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS,] }] }
642
+ { type: undefined, decorators: [{ type: Inject, args: [TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS,] }] },
643
+ { type: TuiFlagPipe, decorators: [{ type: Inject, args: [TuiFlagPipe,] }] }
629
644
  ];
630
645
  __decorate([
631
646
  ViewChild(TuiInputPhoneComponent)
@@ -653,7 +668,7 @@ __decorate([
653
668
  TuiInputPhoneInternationalComponent = TuiInputPhoneInternationalComponent_1 = __decorate([
654
669
  Component({
655
670
  selector: 'tui-input-phone-international',
656
- template: "<tui-hosted-dropdown\n *tuiLet=\"countriesNames$ | async as countriesNames\"\n class=\"t-hosted-dropdown\"\n [content]=\"dropdown\"\n [canOpen]=\"!readOnly\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div tuiGroup>\n <tui-primitive-textfield\n tuiHostedDropdownHost\n class=\"t-country-select tui-group__auto-width-item\"\n [tuiTextfieldCustomContent]=\"countryValueContent\"\n [tuiTextfieldLabelOutside]=\"true\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [editable]=\"false\"\n [iconContent]=\"arrow\"\n [pseudoFocused]=\"open || null\"\n [readOnly]=\"readOnly\"\n [tuiHintContent]=\"null\"\n ></tui-primitive-textfield>\n <tui-input-phone\n tuiTextfieldAutocomplete=\"off\"\n class=\"t-input-phone tui-group__auto-width-item\"\n [ngModel]=\"value\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [countryCode]=\"inputPhoneCountryCode\"\n [phoneMaskAfterCountryCode]=\"phoneMaskAfterCountryCode\"\n [readOnly]=\"readOnly\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-content></ng-content>\n </tui-input-phone>\n </div>\n\n <ng-template #dropdown>\n <tui-data-list>\n <button\n *ngFor=\"let item of countries\"\n tuiOption\n (click)=\"onItemClick(item)\"\n >\n <img\n alt=\"\"\n class=\"t-country-item-flag\"\n [src]=\"getFlagPath(item)\"\n />\n <span class=\"t-country-item-name\">\n {{ countriesNames[item] }}\n </span>\n <span class=\"t-country-item-code\">\n {{ item | tuiMapper: isoToCountryCodeMapper }}\n </span>\n </button>\n </tui-data-list>\n </ng-template>\n\n <ng-template #countryValueContent>\n <img\n class=\"t-flag\"\n [alt]=\"countriesNames[countryIsoCode]\"\n [src]=\"countryFlagPath\"\n />\n </ng-template>\n</tui-hosted-dropdown>\n",
671
+ template: "<tui-hosted-dropdown\n *ngIf=\"countriesNames$ | async as countriesNames\"\n class=\"t-hosted-dropdown\"\n [content]=\"dropdown\"\n [canOpen]=\"!readOnly\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div tuiGroup>\n <tui-primitive-textfield\n tuiHostedDropdownHost\n class=\"t-country-select tui-group__auto-width-item\"\n [tuiTextfieldCustomContent]=\"countryValueContent\"\n [tuiTextfieldLabelOutside]=\"true\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [editable]=\"false\"\n [iconContent]=\"arrow\"\n [pseudoFocused]=\"open || null\"\n [readOnly]=\"readOnly\"\n [tuiHintContent]=\"null\"\n ></tui-primitive-textfield>\n <tui-input-phone\n tuiTextfieldAutocomplete=\"off\"\n class=\"t-input-phone tui-group__auto-width-item\"\n [ngModel]=\"value\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [countryCode]=\"inputPhoneCountryCode\"\n [phoneMaskAfterCountryCode]=\"phoneMaskAfterCountryCode\"\n [readOnly]=\"readOnly\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-content></ng-content>\n </tui-input-phone>\n </div>\n\n <ng-template #dropdown>\n <tui-data-list>\n <button\n *ngFor=\"let isoCode of countries\"\n tuiOption\n (click)=\"onItemClick(isoCode)\"\n >\n <img\n alt=\"\"\n class=\"t-country-item-flag\"\n [src]=\"getFlagPath(isoCode)\"\n />\n <span class=\"t-country-item-name\">\n {{ countriesNames[isoCode] }}\n </span>\n <span class=\"t-country-item-code\">\n {{ isoCode | tuiMapper: isoToCountryCodeMapper }}\n </span>\n </button>\n </tui-data-list>\n </ng-template>\n\n <ng-template #countryValueContent>\n <img\n class=\"t-flag\"\n [alt]=\"countriesNames[countryIsoCode]\"\n [src]=\"countryFlagPath\"\n />\n </ng-template>\n</tui-hosted-dropdown>\n",
657
672
  changeDetection: ChangeDetectionStrategy.OnPush,
658
673
  providers: [
659
674
  {
@@ -661,6 +676,8 @@ TuiInputPhoneInternationalComponent = TuiInputPhoneInternationalComponent_1 = __
661
676
  useExisting: forwardRef(() => TuiInputPhoneInternationalComponent_1),
662
677
  },
663
678
  FIXED_DROPDOWN_CONTROLLER_PROVIDER,
679
+ // TODO: for backward compatibility only. Drop in v4.0
680
+ TuiFlagPipe,
664
681
  ],
665
682
  styles: [":host{display:block}:host._disabled{pointer-events:none}.t-hosted-dropdown{display:block}.t-country-select{width:5.625rem}.t-country-select:not(._readonly) ::ng-deep input:not(:disabled){cursor:pointer}.t-country-select._readonly ::ng-deep input{cursor:default}.t-arrow-icon{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.t-arrow-icon:hover{color:var(--tui-text-02)}:host._disabled .t-arrow-icon,:host._readonly .t-arrow-icon{pointer-events:none}:host[data-mode=onDark] .t-arrow-icon{color:var(--tui-text-03-night)}:host[data-mode=onDark] .t-arrow-icon:hover{color:var(--tui-text-01-night)}.t-arrow-icon_open{transform:rotate(180deg)}.t-input-phone{flex:1}.t-flag{width:1.75rem;height:1.25rem;margin-left:-.5rem}.t-country-item-flag{width:1.75rem;height:1.25rem}.t-country-item-name{margin-left:.75rem;margin-right:auto}.t-country-item-code{color:var(--tui-text-02);margin-right:.25rem}"]
666
683
  }),
@@ -668,10 +685,10 @@ TuiInputPhoneInternationalComponent = TuiInputPhoneInternationalComponent_1 = __
668
685
  __param(0, Self()),
669
686
  __param(0, Inject(NgControl)),
670
687
  __param(1, Inject(ChangeDetectorRef)),
671
- __param(2, Inject(TUI_ICONS_PATH)),
672
- __param(3, Inject(TUI_COUNTRIES)),
673
- __param(4, Inject(TUI_COUNTRIES_MASKS)),
674
- __param(5, Inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS))
688
+ __param(2, Inject(TUI_COUNTRIES)),
689
+ __param(3, Inject(TUI_COUNTRIES_MASKS)),
690
+ __param(4, Inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS)),
691
+ __param(5, Inject(TuiFlagPipe))
675
692
  ], TuiInputPhoneInternationalComponent);
676
693
 
677
694
  let TuiInputPhoneInternationalModule = class TuiInputPhoneInternationalModule {
@@ -691,7 +708,7 @@ TuiInputPhoneInternationalModule = __decorate([
691
708
  TuiHostedDropdownModule,
692
709
  TuiDataListModule,
693
710
  TuiArrowModule,
694
- TuiLetModule,
711
+ TuiFlagPipeModule,
695
712
  TuiMapperPipeModule,
696
713
  TuiActiveZoneModule,
697
714
  ],