@taiga-ui/addon-commerce 4.4.1-canary.9e35085 → 4.4.1-canary.ce69ccc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/components/input-card-group/input-card-group.component.mjs +5 -5
- package/esm2022/components/input-expire/input-expire.directive.mjs +4 -2
- package/esm2022/components/thumbnail-card/thumbnail-card.component.mjs +3 -3
- package/fesm2022/taiga-ui-addon-commerce-components-input-card-group.mjs +4 -4
- package/fesm2022/taiga-ui-addon-commerce-components-input-card-group.mjs.map +1 -1
- package/fesm2022/taiga-ui-addon-commerce-components-input-expire.mjs +3 -1
- package/fesm2022/taiga-ui-addon-commerce-components-input-expire.mjs.map +1 -1
- package/fesm2022/taiga-ui-addon-commerce-components-thumbnail-card.mjs +2 -2
- package/fesm2022/taiga-ui-addon-commerce-components-thumbnail-card.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -15,7 +15,7 @@ import { tuiHovered, TuiHoveredService } from '@taiga-ui/cdk/directives/hovered'
|
|
|
15
15
|
import { TuiLet } from '@taiga-ui/cdk/directives/let';
|
|
16
16
|
import { tuiTypedFromEvent } from '@taiga-ui/cdk/observables';
|
|
17
17
|
import { TuiMapperPipe } from '@taiga-ui/cdk/pipes/mapper';
|
|
18
|
-
import {
|
|
18
|
+
import { tuiInjectId } from '@taiga-ui/cdk/services';
|
|
19
19
|
import { tuiInjectElement, tuiIsElement, tuiIsInput } from '@taiga-ui/cdk/utils/dom';
|
|
20
20
|
import { tuiIsNativeFocused, tuiIsNativeFocusedIn } from '@taiga-ui/cdk/utils/focus';
|
|
21
21
|
import { tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
@@ -63,7 +63,7 @@ class TuiInputCardGroup extends TuiControl {
|
|
|
63
63
|
this.exampleText = this.options.exampleText;
|
|
64
64
|
this.cardValidator = this.options.cardValidator;
|
|
65
65
|
this.icon = this.options.icon;
|
|
66
|
-
this.id =
|
|
66
|
+
this.id = tuiInjectId();
|
|
67
67
|
this.autocomplete = this.options.autocomplete;
|
|
68
68
|
this.binChange = new EventEmitter();
|
|
69
69
|
}
|
|
@@ -210,7 +210,7 @@ class TuiInputCardGroup extends TuiControl {
|
|
|
210
210
|
tuiAsControl(TuiInputCardGroup),
|
|
211
211
|
tuiDropdownOptionsProvider({ limitWidth: 'fixed' }),
|
|
212
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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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;block-size:var(--tui-height-l);inline-size:29.5rem;border-radius:var(--tui-radius-l);overflow:clip}:host :host-context(tui-root._mobile){inline-size:18rem}.t-outline{block-size:100%;inline-size:100%}.t-wrapper{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;inline-size:100%;block-size: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{inline-size:2rem;block-size: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;inline-size:100%;block-size: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}.t-icons{position:absolute;right:.75rem;display:flex;align-items:center;block-size: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: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], 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 }); }
|
|
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 [ngModelOptions]=\"{standalone: true}\"\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 maxlength=\"5\"\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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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;block-size:var(--tui-height-l);inline-size:29.5rem;border-radius:var(--tui-radius-l);overflow:clip}:host :host-context(tui-root._mobile){inline-size:18rem}.t-outline{block-size:100%;inline-size:100%}.t-wrapper{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;inline-size:100%;block-size: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{inline-size:2rem;block-size:2rem}.t-collapsed{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;padding:1.25rem var(--tui-padding-l) 0;box-sizing:border-box;font:var(--tui-font-text-m);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;inline-size:100%;block-size: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;inline-size:100%;block-size: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-m);color:var(--tui-text-primary)}.t-input::placeholder{color:var(--tui-text-tertiary)}.t-input:-webkit-autofill{-webkit-text-fill-color:var(--tui-text-primary)!important;caret-color:var(--tui-text-primary)!important;border-color:var(--tui-service-autofill-background)!important;box-shadow:0 0 0 100rem var(--tui-service-autofill-background) inset!important}.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}.t-icons{position:absolute;right:.75rem;display:flex;align-items:center;block-size: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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], 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
214
|
}
|
|
215
215
|
__decorate([
|
|
216
216
|
tuiPure
|
|
@@ -250,7 +250,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
250
250
|
'data-size': 'l',
|
|
251
251
|
'[attr.data-mode]': 'mode()',
|
|
252
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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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;block-size:var(--tui-height-l);inline-size:29.5rem;border-radius:var(--tui-radius-l);overflow:clip}:host :host-context(tui-root._mobile){inline-size:18rem}.t-outline{block-size:100%;inline-size:100%}.t-wrapper{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;inline-size:100%;block-size: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{inline-size:2rem;block-size:2rem}.t-collapsed{position:absolute;top:0;left:0;
|
|
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 [ngModelOptions]=\"{standalone: true}\"\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 maxlength=\"5\"\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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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;block-size:var(--tui-height-l);inline-size:29.5rem;border-radius:var(--tui-radius-l);overflow:clip}:host :host-context(tui-root._mobile){inline-size:18rem}.t-outline{block-size:100%;inline-size:100%}.t-wrapper{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;inline-size:100%;block-size: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{inline-size:2rem;block-size:2rem}.t-collapsed{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;padding:1.25rem var(--tui-padding-l) 0;box-sizing:border-box;font:var(--tui-font-text-m);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;inline-size:100%;block-size: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;inline-size:100%;block-size: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-m);color:var(--tui-text-primary)}.t-input::placeholder{color:var(--tui-text-tertiary)}.t-input:-webkit-autofill{-webkit-text-fill-color:var(--tui-text-primary)!important;caret-color:var(--tui-text-primary)!important;border-color:var(--tui-service-autofill-background)!important;box-shadow:0 0 0 100rem var(--tui-service-autofill-background) inset!important}.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}.t-icons{position:absolute;right:.75rem;display:flex;align-items:center;block-size: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
254
|
}], propDecorators: { inputCard: [{
|
|
255
255
|
type: ViewChild,
|
|
256
256
|
args: ['inputCard']
|
|
@@ -275,4 +275,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
275
275
|
}], codeLength: [{
|
|
276
276
|
type: Input
|
|
277
277
|
}], isFocusable: [], getPaymentSystem: [] } });
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2FyZC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQtZ3JvdXAvaW5wdXQtY2FyZC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQtZ3JvdXAvaW5wdXQtY2FyZC1ncm91cC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFckMsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsYUFBYSxFQUNiLFlBQVksRUFDWixlQUFlLEdBQ2xCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFekUsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFDLFVBQVUsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRXBELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDbkYsT0FBTyxFQUFDLGtCQUFrQixFQUFFLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkYsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRTFELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUNILHFCQUFxQixFQUNyQix3QkFBd0IsR0FDM0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQ0gsYUFBYSxFQUNiLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsa0JBQWtCLEdBQ3JCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUNILG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLG1CQUFtQixHQUN0QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUU1RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7O0FBUXhFLE1Bd0NhLGlCQUNULFNBQVEsVUFBMEI7SUF6Q3RDOztRQXFEWSxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUNmLG1CQUFjLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDbEQsWUFBTyxHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQy9DLE9BQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLFVBQUssR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUNyQixjQUFTLEdBQUcsUUFBUSxDQUNqQyxLQUFLLENBQ0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFDckMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FDekMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ2hELEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUN4QixDQUFDO1FBRVEsbUJBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM3QyxjQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDbkMsWUFBTyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixhQUFRLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEMsYUFBUSxHQUFHLGFBQWEsQ0FBQztRQUN6QixlQUFVLEdBQUcsZUFBZSxDQUFDO1FBQzdCLFVBQUssR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqQyxVQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7UUFDckQsU0FBSSxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBRXpCLGVBQVUsR0FBRyxhQUFhLENBQ3pDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLFVBQVUsQ0FDM0MsQ0FBQztRQUVpQixVQUFLLEdBQW9CLGtCQUFrQjtRQUMxRCw2Q0FBNkM7UUFDN0MsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNqRixDQUFDO1FBRWlCLFVBQUssR0FBRyxrQkFBa0IsQ0FDekMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FDbEQsQ0FBQztRQUVpQixnQkFBVyxHQUFHLFFBQVEsQ0FDckMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FDbkUsQ0FBQztRQUVpQixlQUFVLEdBQUcsUUFBUSxDQUNwQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQ25ELENBQUM7UUFHSyxnQkFBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBR3ZDLGtCQUFhLEdBQThCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBR3RFLFNBQUksR0FBd0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFHOUMsT0FBRSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUdyQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBR2hDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztLQThMakU7SUE1TEcsSUFDVyxVQUFVLENBQUMsTUFBYTtRQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsR0FBRztRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRWUsVUFBVSxDQUFDLEtBQXFCO1FBQzVDLE1BQU0sRUFBQyxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFFbkIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMvRCxDQUFDO0lBRUQsNkNBQTZDO0lBQ3RDLFNBQVM7UUFDWixJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLFlBQVksQ0FBQyxNQUErQjtRQUMvQyxNQUFNLEVBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUMsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3hELE1BQU0sRUFBQyxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxPQUFPLEdBQ1QsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQztZQUN4QyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDO1lBQzVDLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDO1FBRWpDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFaEMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQWMsT0FBTztRQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhELE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELElBQWMsSUFBSTtRQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQWMsTUFBTTtRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFjLEdBQUc7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFjLGFBQWE7UUFDdkIsT0FBTyxDQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMzQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQ3JELENBQUM7SUFDTixDQUFDO0lBRUQsSUFBYyxVQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQWMsYUFBYTtRQUN2QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFjLFlBQVk7UUFDdEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBYyxhQUFhO1FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDekIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEUsQ0FBQztJQUVELElBQWMsWUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFjLE1BQU07UUFDaEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2hFLENBQUM7SUFFUyxZQUFZLENBQUMsSUFBWTtRQUMvQixNQUFNLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV4QyxJQUFJLEtBQUssRUFBRSxFQUFFLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDMUIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDdkUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVTLGNBQWMsQ0FBQyxNQUFjO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXRDLElBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRO1VBQ3ZFO1lBQ0UsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ25CO0lBQ0wsQ0FBQztJQUVTLFdBQVcsQ0FBQyxHQUFXO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFUyxTQUFTLENBQUMsRUFBQyxXQUFXLEVBQWtCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsZUFBZSxXQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFUyxXQUFXLENBQUMsS0FBaUI7UUFDbkMsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDeEQsT0FBTztTQUNWO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRVMsTUFBTTtRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUdPLFdBQVcsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzFELENBQUM7SUFHTyxnQkFBZ0IsQ0FBQyxLQUFhO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU8sU0FBUyxDQUFDLE1BQXFCO1FBQ25DLE1BQU0sRUFBQyxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFFbkIsSUFBSSxHQUFHLEtBQUssTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBYSxFQUFFLFFBQW1DO1FBQ3JFLE1BQU0sRUFBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDOUQsTUFBTSxRQUFRLEdBQVksRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDO1FBRTlDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRU8sVUFBVTtRQUNkLE1BQU0sT0FBTyxHQUNULENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQztZQUNyRCxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUM7WUFDekQsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUM7UUFFakMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7K0dBdFFRLGlCQUFpQjttR0FBakIsaUJBQWlCLDJZQWxCZjtZQUNQLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDO1lBQ3BDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztZQUMvQiwwQkFBMEIsQ0FBQyxFQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUMsQ0FBQztZQUNqRCxpQkFBaUI7U0FDcEIsMmZDakdMLG1rS0EwSkEsa2pHRGhGUSxJQUFJLDRGQUNKLFdBQVcsK21CQUNYLGdCQUFnQiw2RkFDaEIsZ0JBQWdCLCtHQUNoQixrQkFBa0IseUhBR2xCLGlCQUFpQixpREFDakIsYUFBYSxrREFDYixNQUFNLHlFQUNOLE9BQU8scUZBQ1AsVUFBVSxpRkFDVixhQUFhLDhIQUNiLFdBQVc7O0FBNFBQO0lBRFAsT0FBTztvREFHUDtBQUdPO0lBRFAsT0FBTzt5REFHUDtTQTVPUSxpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkF4QzdCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHNCQUFzQixXQUN2Qjt3QkFDTCxJQUFJO3dCQUNKLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixNQUFNO3dCQUNOLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixhQUFhO3dCQUNiLFdBQVc7cUJBQ2QsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1AsaUJBQWlCLG1CQUFtQjt3QkFDcEMsWUFBWSxtQkFBbUI7d0JBQy9CLDBCQUEwQixDQUFDLEVBQUMsVUFBVSxFQUFFLE9BQU8sRUFBQyxDQUFDO3dCQUNqRCxpQkFBaUI7cUJBQ3BCLGtCQUNlO3dCQUNaLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLG1CQUFtQjtxQkFDdEIsUUFDSzt3QkFDRixXQUFXLEVBQUUsR0FBRzt3QkFDaEIsa0JBQWtCLEVBQUUsUUFBUTt3QkFDNUIsYUFBYSxFQUFFLHFCQUFxQjtxQkFDdkM7OEJBT2dCLFNBQVM7c0JBRHpCLFNBQVM7dUJBQUMsV0FBVztnQkFJTCxXQUFXO3NCQUQzQixTQUFTO3VCQUFDLGFBQWE7Z0JBSVAsUUFBUTtzQkFEeEIsU0FBUzt1QkFBQyxVQUFVO2dCQWdEZCxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLEVBQUU7c0JBRFIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlVLFNBQVM7c0JBRHhCLE1BQU07Z0JBSUksVUFBVTtzQkFEcEIsS0FBSztnQkEwSkUsV0FBVyxNQUtYLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB0eXBlIHtFbGVtZW50UmVmLCBTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWFza2l0b0RpcmVjdGl2ZX0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQge1dhUmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BuZy13ZWItYXBpcy9yZXNpemUtb2JzZXJ2ZXInO1xuaW1wb3J0IHtcbiAgICBUVUlfTUFTS19DQVJELFxuICAgIFRVSV9NQVNLX0NWQyxcbiAgICBUVUlfTUFTS19FWFBJUkUsXG59IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS9jb25zdGFudHMnO1xuaW1wb3J0IHtUdWlGb3JtYXRDYXJkUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL3BpcGVzJztcbmltcG9ydCB7VFVJX1BBWU1FTlRfU1lTVEVNX0lDT05TfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY29tbWVyY2UvdG9rZW5zJztcbmltcG9ydCB0eXBlIHtUdWlQYXltZW50U3lzdGVtfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY29tbWVyY2UvdHlwZXMnO1xuaW1wb3J0IHt0dWlBc0NvbnRyb2wsIFR1aUNvbnRyb2x9IGZyb20gJ0B0YWlnYS11aS9jZGsvY2xhc3Nlcyc7XG5pbXBvcnQge1RVSV9OT05fRElHSVRfUkVHRVhQfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aUFjdGl2ZVpvbmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9hY3RpdmUtem9uZSc7XG5pbXBvcnQge3R1aUhvdmVyZWQsIFR1aUhvdmVyZWRTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvaG92ZXJlZCc7XG5pbXBvcnQge1R1aUxldH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2xldCc7XG5pbXBvcnQge3R1aVR5cGVkRnJvbUV2ZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7VHVpTWFwcGVyUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9waXBlcy9tYXBwZXInO1xuaW1wb3J0IHtUdWlJZFNlcnZpY2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvc2VydmljZXMnO1xuaW1wb3J0IHR5cGUge1R1aUJvb2xlYW5IYW5kbGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudCwgdHVpSXNFbGVtZW50LCB0dWlJc0lucHV0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUlzTmF0aXZlRm9jdXNlZCwgdHVpSXNOYXRpdmVGb2N1c2VkSW59IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9jdXMnO1xuaW1wb3J0IHt0dWlQdXJlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHR5cGUge1R1aURhdGFMaXN0SG9zdH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QnO1xuaW1wb3J0IHt0dWlBc0RhdGFMaXN0SG9zdH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QnO1xuaW1wb3J0IHtUdWlJY29uLCBUdWlJY29uUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7XG4gICAgVFVJX1RFWFRGSUVMRF9PUFRJT05TLFxuICAgIFR1aVdpdGhUZXh0ZmllbGREcm9wZG93bixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHtcbiAgICBUdWlBcHBlYXJhbmNlLFxuICAgIHR1aUFwcGVhcmFuY2UsXG4gICAgdHVpQXBwZWFyYW5jZUZvY3VzLFxuICAgIHR1aUFwcGVhcmFuY2VTdGF0ZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9hcHBlYXJhbmNlJztcbmltcG9ydCB7XG4gICAgVHVpRHJvcGRvd25EaXJlY3RpdmUsXG4gICAgdHVpRHJvcGRvd25PcGVuLFxuICAgIHR1aURyb3Bkb3duT3B0aW9uc1Byb3ZpZGVyLFxuICAgIFR1aVdpdGhEcm9wZG93bk9wZW4sXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvZHJvcGRvd24nO1xuaW1wb3J0IHtUVUlfQ09NTU9OX0lDT05TfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHtUdWlDaGV2cm9ufSBmcm9tICdAdGFpZ2EtdWkva2l0L2RpcmVjdGl2ZXMvY2hldnJvbic7XG5pbXBvcnQgdHlwZSB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c091dGxldCwgUG9seW1vcnBoZXVzVGVtcGxhdGV9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHttYXAsIG1lcmdlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfQ0FSRF9HUk9VUF9PUFRJT05TfSBmcm9tICcuL2lucHV0LWNhcmQtZ3JvdXAub3B0aW9ucyc7XG5pbXBvcnQge1RVSV9JTlBVVF9DQVJEX0dST1VQX1RFWFRTfSBmcm9tICcuL2lucHV0LWNhcmQtZ3JvdXAucHJvdmlkZXJzJztcblxuZXhwb3J0IGludGVyZmFjZSBUdWlDYXJkIHtcbiAgICBjYXJkOiBzdHJpbmc7XG4gICAgY3ZjOiBzdHJpbmc7XG4gICAgZXhwaXJlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtY2FyZC1ncm91cCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTWFza2l0b0RpcmVjdGl2ZSxcbiAgICAgICAgV2FSZXNpemVPYnNlcnZlcixcbiAgICAgICAgUG9seW1vcnBoZXVzT3V0bGV0LFxuICAgICAgICBQb2x5bW9ycGhldXNUZW1wbGF0ZSxcbiAgICAgICAgVHVpQWN0aXZlWm9uZSxcbiAgICAgICAgVHVpRm9ybWF0Q2FyZFBpcGUsXG4gICAgICAgIFR1aU1hcHBlclBpcGUsXG4gICAgICAgIFR1aUxldCxcbiAgICAgICAgVHVpSWNvbixcbiAgICAgICAgVHVpQ2hldnJvbixcbiAgICAgICAgVHVpQXBwZWFyYW5jZSxcbiAgICAgICAgVHVpSWNvblBpcGUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtY2FyZC1ncm91cC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1jYXJkLWdyb3VwLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNEYXRhTGlzdEhvc3QoVHVpSW5wdXRDYXJkR3JvdXApLFxuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXRDYXJkR3JvdXApLFxuICAgICAgICB0dWlEcm9wZG93bk9wdGlvbnNQcm92aWRlcih7bGltaXRXaWR0aDogJ2ZpeGVkJ30pLFxuICAgICAgICBUdWlIb3ZlcmVkU2VydmljZSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIFR1aUFwcGVhcmFuY2UsXG4gICAgICAgIFR1aURyb3Bkb3duRGlyZWN0aXZlLFxuICAgICAgICBUdWlXaXRoVGV4dGZpZWxkRHJvcGRvd24sXG4gICAgICAgIFR1aVdpdGhEcm9wZG93bk9wZW4sXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdkYXRhLXNpemUnOiAnbCcsXG4gICAgICAgICdbYXR0ci5kYXRhLW1vZGVdJzogJ21vZGUoKScsXG4gICAgICAgICcobW91c2Vkb3duKSc6ICdvbk1vdXNlRG93bigkZXZlbnQpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dENhcmRHcm91cFxuICAgIGV4dGVuZHMgVHVpQ29udHJvbDxUdWlDYXJkIHwgbnVsbD5cbiAgICBpbXBsZW1lbnRzIFR1aURhdGFMaXN0SG9zdDxQYXJ0aWFsPFR1aUNhcmQ+Plxue1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0Q2FyZCcpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dENhcmQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRFeHBpcmUnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRFeHBpcmU/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRDVkMnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRDVkM/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSBleHBpcmVQcmVmaWxsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnRTeXN0ZW1zID0gaW5qZWN0KFRVSV9QQVlNRU5UX1NZU1RFTV9JQ09OUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9JTlBVVF9DQVJEX0dST1VQX09QVElPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBob3ZlciA9IHR1aUhvdmVyZWQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvY3VzZWRJbiA9IHRvU2lnbmFsKFxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAgIHR1aVR5cGVkRnJvbUV2ZW50KHRoaXMuZWwsICdmb2N1c2luJyksXG4gICAgICAgICAgICB0dWlUeXBlZEZyb21FdmVudCh0aGlzLmVsLCAnZm9jdXNvdXQnKSxcbiAgICAgICAgKS5waXBlKG1hcCgoKSA9PiB0dWlJc05hdGl2ZUZvY3VzZWRJbih0aGlzLmVsKSkpLFxuICAgICAgICB7aW5pdGlhbFZhbHVlOiBmYWxzZX0sXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCBleGFtcGxlVGV4dENWQyA9IHRoaXMub3B0aW9ucy5leGFtcGxlVGV4dENWQztcbiAgICBwcm90ZWN0ZWQgY3ZjSGlkZGVuID0gdGhpcy5vcHRpb25zLmN2Y0hpZGRlbjtcbiAgICBwcm90ZWN0ZWQgbWFza0NWQyA9IFRVSV9NQVNLX0NWQygzKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJvcGRvd24gPSBpbmplY3QoVHVpRHJvcGRvd25EaXJlY3RpdmUpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXNrQ2FyZCA9IFRVSV9NQVNLX0NBUkQ7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1hc2tFeHBpcmUgPSBUVUlfTUFTS19FWFBJUkU7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25zID0gaW5qZWN0KFRVSV9DT01NT05fSUNPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0ZXh0cyA9IHRvU2lnbmFsKGluamVjdChUVUlfSU5QVVRfQ0FSRF9HUk9VUF9URVhUUykpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvcGVuID0gdHVpRHJvcGRvd25PcGVuKCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwZWFyYW5jZSA9IHR1aUFwcGVhcmFuY2UoXG4gICAgICAgIGluamVjdChUVUlfVEVYVEZJRUxEX09QVElPTlMpLmFwcGVhcmFuY2UsXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBzdGF0ZTogU2lnbmFsPHVua25vd24+ID0gdHVpQXBwZWFyYW5jZVN0YXRlKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmVzdGVkLXRlcm5hcnlcbiAgICAgICAgY29tcHV0ZWQoKCkgPT4gKHRoaXMuZGlzYWJsZWQoKSA/ICdkaXNhYmxlZCcgOiB0aGlzLmhvdmVyKCkgPyAnaG92ZXInIDogbnVsbCkpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9jdXMgPSB0dWlBcHBlYXJhbmNlRm9jdXMoXG4gICAgICAgIGNvbXB1dGVkKCgpID0+IHRoaXMub3BlbigpIHx8IHRoaXMuZm9jdXNlZEluKCkpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGFiZWxSYWlzZWQgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gKHRoaXMuZm9jdXMoKSAmJiAhdGhpcy5yZWFkT25seSgpKSB8fCAhIXRoaXMudmFsdWUoKT8uY2FyZCxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc0NsZWFuZXIgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gISF0aGlzLnZhbHVlKCk/LmNhcmQgJiYgdGhpcy5pbnRlcmFjdGl2ZSgpLFxuICAgICk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBleGFtcGxlVGV4dCA9IHRoaXMub3B0aW9ucy5leGFtcGxlVGV4dDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhcmRWYWxpZGF0b3I6IFR1aUJvb2xlYW5IYW5kbGVyPHN0cmluZz4gPSB0aGlzLm9wdGlvbnMuY2FyZFZhbGlkYXRvcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGljb246IFBvbHltb3JwaGV1c0NvbnRlbnQgPSB0aGlzLm9wdGlvbnMuaWNvbjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gaW5qZWN0KFR1aUlkU2VydmljZSkuZ2VuZXJhdGUoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZSA9IHRoaXMub3B0aW9ucy5hdXRvY29tcGxldGU7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgYmluQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGNvZGVMZW5ndGgobGVuZ3RoOiAzIHwgNCkge1xuICAgICAgICB0aGlzLmV4YW1wbGVUZXh0Q1ZDID0gJzAnLnJlcGVhdChsZW5ndGgpO1xuICAgICAgICB0aGlzLm1hc2tDVkMgPSBUVUlfTUFTS19DVkMobGVuZ3RoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJpbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FyZC5sZW5ndGggPCA2ID8gbnVsbCA6IHRoaXMuY2FyZC5zbGljZSgwLCA2KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogVHVpQ2FyZCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge2Jpbn0gPSB0aGlzO1xuXG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUJpbihiaW4pO1xuICAgICAgICB0aGlzLmV4cGlyZVByZWZpbGxlZCA9ICEhdGhpcy5leHBpcmUgJiYgdGhpcy5jYXJkUHJlZmlsbGVkO1xuICAgIH1cblxuICAgIC8qKiBQdWJsaWMgQVBJIGZvciBtYW51YWwgZm9jdXMgbWFuYWdlbWVudCAqL1xuICAgIHB1YmxpYyBmb2N1c0NhcmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRDYXJkPy5uYXRpdmVFbGVtZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzRXhwaXJlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0RXhwaXJlPy5uYXRpdmVFbGVtZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzQ1ZDKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0Q1ZDPy5uYXRpdmVFbGVtZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZU9wdGlvbihvcHRpb246IFBhcnRpYWw8VHVpQ2FyZD4gfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHtjYXJkID0gJycsIGV4cGlyZSA9ICcnLCBjdmMgPSAnJ30gPSBvcHRpb24gfHwge307XG4gICAgICAgIGNvbnN0IHtiaW59ID0gdGhpcztcbiAgICAgICAgY29uc3QgZWxlbWVudCA9XG4gICAgICAgICAgICAoIWNhcmQgJiYgdGhpcy5pbnB1dENhcmQ/Lm5hdGl2ZUVsZW1lbnQpIHx8XG4gICAgICAgICAgICAoIWV4cGlyZSAmJiB0aGlzLmlucHV0RXhwaXJlPy5uYXRpdmVFbGVtZW50KSB8fFxuICAgICAgICAgICAgdGhpcy5pbnB1dENWQz8ubmF0aXZlRWxlbWVudDtcblxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHtjYXJkLCBleHBpcmUsIGN2Y30pO1xuICAgICAgICB0aGlzLnVwZGF0ZUJpbihiaW4pO1xuICAgICAgICB0aGlzLm9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5leHBpcmVQcmVmaWxsZWQgPSAhIWV4cGlyZTtcblxuICAgICAgICBlbGVtZW50Py5mb2N1cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leHBpcmVQcmVmaWxsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICAgICAgdGhpcy5mb2N1c0NhcmQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNvbnRlbnQoKTogUG9seW1vcnBoZXVzQ29udGVudCB7XG4gICAgICAgIGNvbnN0IHN5c3RlbSA9IHRoaXMuZ2V0UGF5bWVudFN5c3RlbSh0aGlzLmNhcmQpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmljb24gfHwgKHN5c3RlbSAmJiB0aGlzLnBheW1lbnRTeXN0ZW1zW3N5c3RlbV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY2FyZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSgpPy5jYXJkIHx8ICcnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZXhwaXJlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlKCk/LmV4cGlyZSB8fCAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGN2YygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSgpPy5jdmMgfHwgJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjYXJkQ29sbGFwc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pc0ZvY3VzYWJsZSh0aGlzLmNhcmQpICYmXG4gICAgICAgICAgICAhdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMuaW5wdXRDYXJkPy5uYXRpdmVFbGVtZW50KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgdGFpbExlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXJkLmxlbmd0aCAlIDQgPiAwID8gNSA6IDQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjYXJkUHJlZmlsbGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmNhcmQubWF0Y2goVFVJX05PTl9ESUdJVF9SRUdFWFApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY3ZjUHJlZmlsbGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmN2Yy5tYXRjaChUVUlfTk9OX0RJR0lUX1JFR0VYUCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjYXJkRm9jdXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuY2FyZFByZWZpbGxlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGV4cGlyZUZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGb2N1c2FibGUodGhpcy5jYXJkKSAmJiAhdGhpcy5leHBpcmVQcmVmaWxsZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjdmNGb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRm9jdXNhYmxlKHRoaXMuY2FyZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBtYXNrZWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FyZFByZWZpbGxlZCA/IGAqJHt0aGlzLmNhcmQuc2xpY2UoLTQpfWAgOiAnKic7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQ2FyZENoYW5nZShjYXJkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlLCBiaW59ID0gdGhpcztcbiAgICAgICAgY29uc3QgcGFyc2VkID0gY2FyZC5zcGxpdCgnICcpLmpvaW4oJycpO1xuXG4gICAgICAgIGlmICh2YWx1ZSgpPy5jYXJkID09PSBwYXJzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlUHJvcGVydHkocGFyc2VkLCAnY2FyZCcpO1xuICAgICAgICB0aGlzLnVwZGF0ZUJpbihiaW4pO1xuXG4gICAgICAgIGlmICh0aGlzLmNhcmRWYWxpZGF0b3IodGhpcy5jYXJkKSAmJiAhdmFsdWUoKT8uZXhwaXJlICYmIHRoaXMuaW5wdXRFeHBpcmUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNFeHBpcmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkV4cGlyZUNoYW5nZShleHBpcmU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVByb3BlcnR5KGV4cGlyZSwgJ2V4cGlyZScpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIE51bWJlcih0aGlzLmlucHV0RXhwaXJlPy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0KSA9PT0gNSAvLyBNTS9ZWVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNDVkMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNWQ0NoYW5nZShjdmM6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVByb3BlcnR5KGN2YywgJ2N2YycpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmFuc2Zvcm0oe29mZnNldFdpZHRofTogSFRNTFNwYW5FbGVtZW50KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FyZENvbGxhcHNlZCA/IGB0cmFuc2xhdGUzZCgke29mZnNldFdpZHRofXB4LCAwLCAwKWAgOiAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR1aUlzRWxlbWVudChldmVudC50YXJnZXQpICYmIHR1aUlzSW5wdXQoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuLnNldCghdGhpcy5vcGVuKCkpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBpc0ZvY3VzYWJsZShjYXJkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FyZFZhbGlkYXRvcihjYXJkKSB8fCB0aGlzLmNhcmRQcmVmaWxsZWQ7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGdldFBheW1lbnRTeXN0ZW0odmFsdWU6IHN0cmluZyk6IFR1aVBheW1lbnRTeXN0ZW0gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wYXltZW50U3lzdGVtSGFuZGxlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVCaW4ob2xkQmluOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHtiaW59ID0gdGhpcztcblxuICAgICAgICBpZiAoYmluICE9PSBvbGRCaW4gJiYgIXRoaXMuY2FyZFByZWZpbGxlZCkge1xuICAgICAgICAgICAgdGhpcy5iaW5DaGFuZ2UuZW1pdChiaW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCBwcm9wTmFtZTogJ2NhcmQnIHwgJ2N2YycgfCAnZXhwaXJlJyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7Y2FyZCA9ICcnLCBleHBpcmUgPSAnJywgY3ZjID0gJyd9ID0gdGhpcy52YWx1ZSgpIHx8IHt9O1xuICAgICAgICBjb25zdCBuZXdWYWx1ZTogVHVpQ2FyZCA9IHtjYXJkLCBleHBpcmUsIGN2Y307XG5cbiAgICAgICAgbmV3VmFsdWVbcHJvcE5hbWVdID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZShuZXdWYWx1ZS5leHBpcmUgfHwgbmV3VmFsdWUuY3ZjIHx8IG5ld1ZhbHVlLmNhcmQgPyBuZXdWYWx1ZSA6IG51bGwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9XG4gICAgICAgICAgICAodGhpcy5jYXJkRm9jdXNhYmxlICYmIHRoaXMuaW5wdXRDYXJkPy5uYXRpdmVFbGVtZW50KSB8fFxuICAgICAgICAgICAgKHRoaXMuZXhwaXJlRm9jdXNhYmxlICYmIHRoaXMuaW5wdXRFeHBpcmU/Lm5hdGl2ZUVsZW1lbnQpIHx8XG4gICAgICAgICAgICB0aGlzLmlucHV0Q1ZDPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInQtd3JhcHBlclwiPlxuICAgIDxsYWJlbFxuICAgICAgICAqdHVpTGV0PVwidmFsdWUoKT8uY2FyZCB8IHR1aUZvcm1hdENhcmQ6IGNhcmRQcmVmaWxsZWQgYXMgZm9ybWF0dGVkQ2FyZFwiXG4gICAgICAgIChjbGljay5zaWxlbnQucHJldmVudCk9XCIoMClcIlxuICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRDYXJkXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNhcmQtZ3JvdXBfX2NhcmRcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cInQtaW5wdXQgdC1pbnB1dF9jYXJkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCIhY2FyZFByZWZpbGxlZCAmJiAhKHRoaXMuY2FyZCB8IHR1aU1hcHBlcjogY2FyZFZhbGlkYXRvcilcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiaWQgKyAnX2NhcmQnXCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlID8gJ2NjLW51bWJlcicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICBbY2xhc3MudC1pbnB1dF9oaWRkZW5dPVwiIWNhcmQubGVuZ3RoICYmIGZvY3VzKClcIlxuICAgICAgICAgICAgW2NsYXNzLnQtaW5wdXRfaW5lcnRdPVwiY2FyZFByZWZpbGxlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgICAgICBbbWFza2l0b109XCJtYXNrQ2FyZFwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJmb3JtYXR0ZWRDYXJkXCJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNhcmRQcmVmaWxsZWQgPyAnJyA6IGV4YW1wbGVUZXh0XCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seSgpXCJcbiAgICAgICAgICAgIFt0YWJJbmRleF09XCJjYXJkRm9jdXNhYmxlID8gMCA6IC0xXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCIoMClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DYXJkQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZT1cIm5vXCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1jb2xsYXBzZWRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1iZWZvcmVdPVwibWFza2VkXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWNvbGxhcHNlZF9lbmFibGUtbWFza109XCJjYXJkQ29sbGFwc2VkXCJcbiAgICAgICAgICAgICh3YVJlc2l6ZU9ic2VydmVyKT1cIigwKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgI2dob3N0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWdob3N0XCJcbiAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiZm9ybWF0dGVkQ2FyZC5zbGljZSgtdGFpbExlbmd0aClcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cblxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0LWNvbGxhcHNlZC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJ0cmFuc2Zvcm0oZ2hvc3QpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdHRlZENhcmQgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWxhYmVsXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWxhYmVsX3JhaXNlZF09XCJsYWJlbFJhaXNlZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgdGV4dHMoKT8uY2FyZE51bWJlclRleHQgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9sYWJlbD5cbjwvZGl2PlxuPGRpdlxuICAgIGNsYXNzPVwidC13cmFwcGVyIHQtd3JhcHBlcl9leHBpcmVcIlxuICAgIFtjbGFzcy50LXdyYXBwZXJfYWN0aXZlXT1cImNhcmRDb2xsYXBzZWRcIlxuPlxuICAgIDxsYWJlbCAoY2xpY2suc2lsZW50LnByZXZlbnQpPVwiKDApXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0RXhwaXJlXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNhcmQtZ3JvdXBfX2V4cGlyZVwiXG4gICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiMDAvMDBcIlxuICAgICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWlucHV0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImlkICsgJ19leHBpcmUnXCJcbiAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiYXV0b2NvbXBsZXRlID8gJ2NjZXhwaXJ5eWVhcicgOiBudWxsXCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlID8gJ2NjLWV4cCcgOiAnb2ZmJ1wiXG4gICAgICAgICAgICBbY2xhc3MudC1pbnB1dF9pbmVydF09XCIhZXhwaXJlRm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIFttYXNraXRvXT1cIm1hc2tFeHBpcmVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZXhwaXJlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5KClcIlxuICAgICAgICAgICAgW3RhYkluZGV4XT1cImV4cGlyZUZvY3VzYWJsZSA/IDAgOiAtMVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwiKDApXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRXhwaXJlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInQtbGFiZWxcIlxuICAgICAgICAgICAgW2NsYXNzLnQtbGFiZWxfcmFpc2VkXT1cImxhYmVsUmFpc2VkKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0ZXh0cygpPy5leHBpcnlUZXh0IH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbGFiZWw+XG48L2Rpdj5cbjxkaXZcbiAgICBjbGFzcz1cInQtd3JhcHBlciB0LXdyYXBwZXJfY3ZjXCJcbiAgICBbY2xhc3MudC13cmFwcGVyX2FjdGl2ZV09XCJjYXJkQ29sbGFwc2VkXCJcbj5cbiAgICA8bGFiZWwgKGNsaWNrLnNpbGVudC5wcmV2ZW50KT1cIigwKVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dENWQ1xuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1jYXJkLWdyb3VwX19jdmNcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cInQtaW5wdXRcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiaWQgKyAnX2N2YydcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGUgPyAnY2MtY3NjJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWlucHV0X2N2Y19oaWRkZW5dPVwiY3ZjSGlkZGVuXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWlucHV0X3ByZWZpbGxlZF09XCJjdmNQcmVmaWxsZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICAgICAgW21hc2tpdG9dPVwibWFza0NWQ1wiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJjdmNcIlxuICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY3ZjUHJlZmlsbGVkID8gJ+KAouKAouKAoicgOiBleGFtcGxlVGV4dENWQ1wiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHkoKSB8fCBjdmNQcmVmaWxsZWRcIlxuICAgICAgICAgICAgW3RhYkluZGV4XT1cImN2Y0ZvY3VzYWJsZSA/IDAgOiAtMVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwiKDApXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ1ZDQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInQtbGFiZWxcIlxuICAgICAgICAgICAgW2NsYXNzLnQtbGFiZWxfcmFpc2VkXT1cImxhYmVsUmFpc2VkKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0ZXh0cygpPy5jdmNUZXh0IH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbGFiZWw+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ0LWljb25zXCI+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImNvbnRlbnRcIlxuICAgICAgICBjbGFzcz1cInQtaWNvbi1vdXRsZXRcIlxuICAgID5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImNvbnRlbnQgYXMgc3JjXCJcbiAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNhcmQtZ3JvdXBfX2ljb25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWNhcmRcIlxuICAgICAgICAgICAgW3NyY109XCJzcmMgfCB0dWlJY29uXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8dHVpLWljb25cbiAgICAgICAgKm5nSWY9XCJoYXNDbGVhbmVyKClcIlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNhcmQtZ3JvdXBfX2NsZWFuZXJcIlxuICAgICAgICB0dWlBcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgIGNsYXNzPVwidC1pY29uXCJcbiAgICAgICAgW2ljb25dPVwiaWNvbnMuY2xvc2VcIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gICAgLz5cbiAgICA8dHVpLWljb25cbiAgICAgICAgKm5nSWY9XCJkcm9wZG93bi5jb250ZW50XCJcbiAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1jYXJkLWdyb3VwX19kcm9wZG93blwiXG4gICAgICAgIHR1aUFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgdHVpQ2hldnJvblxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgIC8+XG48L2Rpdj5cbiJdfQ==
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2FyZC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQtZ3JvdXAvaW5wdXQtY2FyZC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQtZ3JvdXAvaW5wdXQtY2FyZC1ncm91cC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFckMsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsYUFBYSxFQUNiLFlBQVksRUFDWixlQUFlLEdBQ2xCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFekUsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVB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YW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUge0VsZW1lbnRSZWYsIFNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b1NpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXNraXRvRGlyZWN0aXZlfSBmcm9tICdAbWFza2l0by9hbmd1bGFyJztcbmltcG9ydCB7V2FSZXNpemVPYnNlcnZlcn0gZnJvbSAnQG5nLXdlYi1hcGlzL3Jlc2l6ZS1vYnNlcnZlcic7XG5pbXBvcnQge1xuICAgIFRVSV9NQVNLX0NBUkQsXG4gICAgVFVJX01BU0tfQ1ZDLFxuICAgIFRVSV9NQVNLX0VYUElSRSxcbn0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aUZvcm1hdENhcmRQaXBlfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY29tbWVyY2UvcGlwZXMnO1xuaW1wb3J0IHtUVUlfUEFZTUVOVF9TWVNURU1fSUNPTlN9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS90b2tlbnMnO1xuaW1wb3J0IHR5cGUge1R1aVBheW1lbnRTeXN0ZW19IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS90eXBlcyc7XG5pbXBvcnQge3R1aUFzQ29udHJvbCwgVHVpQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7VFVJX05PTl9ESUdJVF9SRUdFWFB9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7VHVpQWN0aXZlWm9uZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2FjdGl2ZS16b25lJztcbmltcG9ydCB7dHVpSG92ZXJlZCwgVHVpSG92ZXJlZFNlcnZpY2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9ob3ZlcmVkJztcbmltcG9ydCB7VHVpTGV0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvbGV0JztcbmltcG9ydCB7dHVpVHlwZWRGcm9tRXZlbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtUdWlNYXBwZXJQaXBlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3BpcGVzL21hcHBlcic7XG5pbXBvcnQge3R1aUluamVjdElkfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3NlcnZpY2VzJztcbmltcG9ydCB0eXBlIHtUdWlCb29sZWFuSGFuZGxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnQsIHR1aUlzRWxlbWVudCwgdHVpSXNJbnB1dH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlJc05hdGl2ZUZvY3VzZWQsIHR1aUlzTmF0aXZlRm9jdXNlZElufSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2ZvY3VzJztcbmltcG9ydCB7dHVpUHVyZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB0eXBlIHtUdWlEYXRhTGlzdEhvc3R9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZGF0YS1saXN0JztcbmltcG9ydCB7dHVpQXNEYXRhTGlzdEhvc3R9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZGF0YS1saXN0JztcbmltcG9ydCB7VHVpSWNvbiwgVHVpSWNvblBpcGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQge1xuICAgIFRVSV9URVhURklFTERfT1BUSU9OUyxcbiAgICBUdWlXaXRoVGV4dGZpZWxkRHJvcGRvd24sXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7XG4gICAgVHVpQXBwZWFyYW5jZSxcbiAgICB0dWlBcHBlYXJhbmNlLFxuICAgIHR1aUFwcGVhcmFuY2VGb2N1cyxcbiAgICB0dWlBcHBlYXJhbmNlU3RhdGUsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvYXBwZWFyYW5jZSc7XG5pbXBvcnQge1xuICAgIFR1aURyb3Bkb3duRGlyZWN0aXZlLFxuICAgIHR1aURyb3Bkb3duT3BlbixcbiAgICB0dWlEcm9wZG93bk9wdGlvbnNQcm92aWRlcixcbiAgICBUdWlXaXRoRHJvcGRvd25PcGVuLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duJztcbmltcG9ydCB7VFVJX0NPTU1PTl9JQ09OU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7VHVpQ2hldnJvbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9kaXJlY3RpdmVzL2NoZXZyb24nO1xuaW1wb3J0IHR5cGUge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNPdXRsZXQsIFBvbHltb3JwaGV1c1RlbXBsYXRlfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7bWFwLCBtZXJnZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX0NBUkRfR1JPVVBfT1BUSU9OU30gZnJvbSAnLi9pbnB1dC1jYXJkLWdyb3VwLm9wdGlvbnMnO1xuaW1wb3J0IHtUVUlfSU5QVVRfQ0FSRF9HUk9VUF9URVhUU30gZnJvbSAnLi9pbnB1dC1jYXJkLWdyb3VwLnByb3ZpZGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHVpQ2FyZCB7XG4gICAgY2FyZDogc3RyaW5nO1xuICAgIGN2Yzogc3RyaW5nO1xuICAgIGV4cGlyZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LWNhcmQtZ3JvdXAnLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hc2tpdG9EaXJlY3RpdmUsXG4gICAgICAgIFdhUmVzaXplT2JzZXJ2ZXIsXG4gICAgICAgIFBvbHltb3JwaGV1c091dGxldCxcbiAgICAgICAgUG9seW1vcnBoZXVzVGVtcGxhdGUsXG4gICAgICAgIFR1aUFjdGl2ZVpvbmUsXG4gICAgICAgIFR1aUZvcm1hdENhcmRQaXBlLFxuICAgICAgICBUdWlNYXBwZXJQaXBlLFxuICAgICAgICBUdWlMZXQsXG4gICAgICAgIFR1aUljb24sXG4gICAgICAgIFR1aUNoZXZyb24sXG4gICAgICAgIFR1aUFwcGVhcmFuY2UsXG4gICAgICAgIFR1aUljb25QaXBlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWNhcmQtZ3JvdXAudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtY2FyZC1ncm91cC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRGF0YUxpc3RIb3N0KFR1aUlucHV0Q2FyZEdyb3VwKSxcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0Q2FyZEdyb3VwKSxcbiAgICAgICAgdHVpRHJvcGRvd25PcHRpb25zUHJvdmlkZXIoe2xpbWl0V2lkdGg6ICdmaXhlZCd9KSxcbiAgICAgICAgVHVpSG92ZXJlZFNlcnZpY2UsXG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICBUdWlBcHBlYXJhbmNlLFxuICAgICAgICBUdWlEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICAgICAgVHVpV2l0aFRleHRmaWVsZERyb3Bkb3duLFxuICAgICAgICBUdWlXaXRoRHJvcGRvd25PcGVuLFxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnZGF0YS1zaXplJzogJ2wnLFxuICAgICAgICAnW2F0dHIuZGF0YS1tb2RlXSc6ICdtb2RlKCknLFxuICAgICAgICAnKG1vdXNlZG93biknOiAnb25Nb3VzZURvd24oJGV2ZW50KScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRDYXJkR3JvdXBcbiAgICBleHRlbmRzIFR1aUNvbnRyb2w8VHVpQ2FyZCB8IG51bGw+XG4gICAgaW1wbGVtZW50cyBUdWlEYXRhTGlzdEhvc3Q8UGFydGlhbDxUdWlDYXJkPj5cbntcbiAgICBAVmlld0NoaWxkKCdpbnB1dENhcmQnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRDYXJkPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0RXhwaXJlJylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RXhwaXJlPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0Q1ZDJylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0Q1ZDPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIHByaXZhdGUgZXhwaXJlUHJlZmlsbGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXltZW50U3lzdGVtcyA9IGluamVjdChUVUlfUEFZTUVOVF9TWVNURU1fSUNPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdChUVUlfSU5QVVRfQ0FSRF9HUk9VUF9PUFRJT05TKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaG92ZXIgPSB0dWlIb3ZlcmVkKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c2VkSW4gPSB0b1NpZ25hbChcbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICB0dWlUeXBlZEZyb21FdmVudCh0aGlzLmVsLCAnZm9jdXNpbicpLFxuICAgICAgICAgICAgdHVpVHlwZWRGcm9tRXZlbnQodGhpcy5lbCwgJ2ZvY3Vzb3V0JyksXG4gICAgICAgICkucGlwZShtYXAoKCkgPT4gdHVpSXNOYXRpdmVGb2N1c2VkSW4odGhpcy5lbCkpKSxcbiAgICAgICAge2luaXRpYWxWYWx1ZTogZmFsc2V9LFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgZXhhbXBsZVRleHRDVkMgPSB0aGlzLm9wdGlvbnMuZXhhbXBsZVRleHRDVkM7XG4gICAgcHJvdGVjdGVkIGN2Y0hpZGRlbiA9IHRoaXMub3B0aW9ucy5jdmNIaWRkZW47XG4gICAgcHJvdGVjdGVkIG1hc2tDVkMgPSBUVUlfTUFTS19DVkMoMyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duID0gaW5qZWN0KFR1aURyb3Bkb3duRGlyZWN0aXZlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFza0NhcmQgPSBUVUlfTUFTS19DQVJEO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXNrRXhwaXJlID0gVFVJX01BU0tfRVhQSVJFO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpY29ucyA9IGluamVjdChUVUlfQ09NTU9OX0lDT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGV4dHMgPSB0b1NpZ25hbChpbmplY3QoVFVJX0lOUFVUX0NBUkRfR1JPVVBfVEVYVFMpKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3BlbiA9IHR1aURyb3Bkb3duT3BlbigpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSB0dWlBcHBlYXJhbmNlKFxuICAgICAgICBpbmplY3QoVFVJX1RFWFRGSUVMRF9PUFRJT05TKS5hcHBlYXJhbmNlLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RhdGU6IFNpZ25hbDx1bmtub3duPiA9IHR1aUFwcGVhcmFuY2VTdGF0ZShcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5lc3RlZC10ZXJuYXJ5XG4gICAgICAgIGNvbXB1dGVkKCgpID0+ICh0aGlzLmRpc2FibGVkKCkgPyAnZGlzYWJsZWQnIDogdGhpcy5ob3ZlcigpID8gJ2hvdmVyJyA6IG51bGwpKSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvY3VzID0gdHVpQXBwZWFyYW5jZUZvY3VzKFxuICAgICAgICBjb21wdXRlZCgoKSA9PiB0aGlzLm9wZW4oKSB8fCB0aGlzLmZvY3VzZWRJbigpKSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxhYmVsUmFpc2VkID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+ICh0aGlzLmZvY3VzKCkgJiYgIXRoaXMucmVhZE9ubHkoKSkgfHwgISF0aGlzLnZhbHVlKCk/LmNhcmQsXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBoYXNDbGVhbmVyID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+ICEhdGhpcy52YWx1ZSgpPy5jYXJkICYmIHRoaXMuaW50ZXJhY3RpdmUoKSxcbiAgICApO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZXhhbXBsZVRleHQgPSB0aGlzLm9wdGlvbnMuZXhhbXBsZVRleHQ7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYXJkVmFsaWRhdG9yOiBUdWlCb29sZWFuSGFuZGxlcjxzdHJpbmc+ID0gdGhpcy5vcHRpb25zLmNhcmRWYWxpZGF0b3I7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpY29uOiBQb2x5bW9ycGhldXNDb250ZW50ID0gdGhpcy5vcHRpb25zLmljb247XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IHR1aUluamVjdElkKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvY29tcGxldGUgPSB0aGlzLm9wdGlvbnMuYXV0b2NvbXBsZXRlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGJpbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBjb2RlTGVuZ3RoKGxlbmd0aDogMyB8IDQpIHtcbiAgICAgICAgdGhpcy5leGFtcGxlVGV4dENWQyA9ICcwJy5yZXBlYXQobGVuZ3RoKTtcbiAgICAgICAgdGhpcy5tYXNrQ1ZDID0gVFVJX01BU0tfQ1ZDKGxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBiaW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcmQubGVuZ3RoIDwgNiA/IG51bGwgOiB0aGlzLmNhcmQuc2xpY2UoMCwgNik7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFR1aUNhcmQgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHtiaW59ID0gdGhpcztcblxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy51cGRhdGVCaW4oYmluKTtcbiAgICAgICAgdGhpcy5leHBpcmVQcmVmaWxsZWQgPSAhIXRoaXMuZXhwaXJlICYmIHRoaXMuY2FyZFByZWZpbGxlZDtcbiAgICB9XG5cbiAgICAvKiogUHVibGljIEFQSSBmb3IgbWFudWFsIGZvY3VzIG1hbmFnZW1lbnQgKi9cbiAgICBwdWJsaWMgZm9jdXNDYXJkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0Q2FyZD8ubmF0aXZlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c0V4cGlyZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dEV4cGlyZT8ubmF0aXZlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c0NWQygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dENWQz8ubmF0aXZlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVPcHRpb24ob3B0aW9uOiBQYXJ0aWFsPFR1aUNhcmQ+IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7Y2FyZCA9ICcnLCBleHBpcmUgPSAnJywgY3ZjID0gJyd9ID0gb3B0aW9uIHx8IHt9O1xuICAgICAgICBjb25zdCB7YmlufSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPVxuICAgICAgICAgICAgKCFjYXJkICYmIHRoaXMuaW5wdXRDYXJkPy5uYXRpdmVFbGVtZW50KSB8fFxuICAgICAgICAgICAgKCFleHBpcmUgJiYgdGhpcy5pbnB1dEV4cGlyZT8ubmF0aXZlRWxlbWVudCkgfHxcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDVkM/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh7Y2FyZCwgZXhwaXJlLCBjdmN9KTtcbiAgICAgICAgdGhpcy51cGRhdGVCaW4oYmluKTtcbiAgICAgICAgdGhpcy5vcGVuLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuZXhwaXJlUHJlZmlsbGVkID0gISFleHBpcmU7XG5cbiAgICAgICAgZWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXhwaXJlUHJlZmlsbGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgICAgIHRoaXMuZm9jdXNDYXJkKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb250ZW50KCk6IFBvbHltb3JwaGV1c0NvbnRlbnQge1xuICAgICAgICBjb25zdCBzeXN0ZW0gPSB0aGlzLmdldFBheW1lbnRTeXN0ZW0odGhpcy5jYXJkKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5pY29uIHx8IChzeXN0ZW0gJiYgdGhpcy5wYXltZW50U3lzdGVtc1tzeXN0ZW1dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNhcmQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUoKT8uY2FyZCB8fCAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGV4cGlyZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSgpPy5leHBpcmUgfHwgJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjdmMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUoKT8uY3ZjIHx8ICcnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY2FyZENvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaXNGb2N1c2FibGUodGhpcy5jYXJkKSAmJlxuICAgICAgICAgICAgIXR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLmlucHV0Q2FyZD8ubmF0aXZlRWxlbWVudClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHRhaWxMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FyZC5sZW5ndGggJSA0ID4gMCA/IDUgOiA0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY2FyZFByZWZpbGxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jYXJkLm1hdGNoKFRVSV9OT05fRElHSVRfUkVHRVhQKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGN2Y1ByZWZpbGxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jdmMubWF0Y2goVFVJX05PTl9ESUdJVF9SRUdFWFApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY2FyZEZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNhcmRQcmVmaWxsZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBleHBpcmVGb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRm9jdXNhYmxlKHRoaXMuY2FyZCkgJiYgIXRoaXMuZXhwaXJlUHJlZmlsbGVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY3ZjRm9jdXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ZvY3VzYWJsZSh0aGlzLmNhcmQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgbWFza2VkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcmRQcmVmaWxsZWQgPyBgKiR7dGhpcy5jYXJkLnNsaWNlKC00KX1gIDogJyonO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNhcmRDaGFuZ2UoY2FyZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHt2YWx1ZSwgYmlufSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IGNhcmQuc3BsaXQoJyAnKS5qb2luKCcnKTtcblxuICAgICAgICBpZiAodmFsdWUoKT8uY2FyZCA9PT0gcGFyc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVByb3BlcnR5KHBhcnNlZCwgJ2NhcmQnKTtcbiAgICAgICAgdGhpcy51cGRhdGVCaW4oYmluKTtcblxuICAgICAgICBpZiAodGhpcy5jYXJkVmFsaWRhdG9yKHRoaXMuY2FyZCkgJiYgIXZhbHVlKCk/LmV4cGlyZSAmJiB0aGlzLmlucHV0RXhwaXJlKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzRXhwaXJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25FeHBpcmVDaGFuZ2UoZXhwaXJlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVQcm9wZXJ0eShleHBpcmUsICdleHBpcmUnKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBOdW1iZXIodGhpcy5pbnB1dEV4cGlyZT8ubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCkgPT09IDUgLy8gTU0vWVlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQ1ZDKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DVkNDaGFuZ2UoY3ZjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVQcm9wZXJ0eShjdmMsICdjdmMnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdHJhbnNmb3JtKHtvZmZzZXRXaWR0aH06IEhUTUxTcGFuRWxlbWVudCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcmRDb2xsYXBzZWQgPyBgdHJhbnNsYXRlM2QoJHtvZmZzZXRXaWR0aH1weCwgMCwgMClgIDogJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0dWlJc0VsZW1lbnQoZXZlbnQudGFyZ2V0KSAmJiB0dWlJc0lucHV0KGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0b2dnbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3Blbi5zZXQoIXRoaXMub3BlbigpKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgaXNGb2N1c2FibGUoY2FyZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcmRWYWxpZGF0b3IoY2FyZCkgfHwgdGhpcy5jYXJkUHJlZmlsbGVkO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXRQYXltZW50U3lzdGVtKHZhbHVlOiBzdHJpbmcpOiBUdWlQYXltZW50U3lzdGVtIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMucGF5bWVudFN5c3RlbUhhbmRsZXIodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQmluKG9sZEJpbjogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7YmlufSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKGJpbiAhPT0gb2xkQmluICYmICF0aGlzLmNhcmRQcmVmaWxsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYmluQ2hhbmdlLmVtaXQoYmluKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgcHJvcE5hbWU6ICdjYXJkJyB8ICdjdmMnIHwgJ2V4cGlyZScpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge2NhcmQgPSAnJywgZXhwaXJlID0gJycsIGN2YyA9ICcnfSA9IHRoaXMudmFsdWUoKSB8fCB7fTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWU6IFR1aUNhcmQgPSB7Y2FyZCwgZXhwaXJlLCBjdmN9O1xuXG4gICAgICAgIG5ld1ZhbHVlW3Byb3BOYW1lXSA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUuZXhwaXJlIHx8IG5ld1ZhbHVlLmN2YyB8fCBuZXdWYWx1ZS5jYXJkID8gbmV3VmFsdWUgOiBudWxsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzSW5wdXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPVxuICAgICAgICAgICAgKHRoaXMuY2FyZEZvY3VzYWJsZSAmJiB0aGlzLmlucHV0Q2FyZD8ubmF0aXZlRWxlbWVudCkgfHxcbiAgICAgICAgICAgICh0aGlzLmV4cGlyZUZvY3VzYWJsZSAmJiB0aGlzLmlucHV0RXhwaXJlPy5uYXRpdmVFbGVtZW50KSB8fFxuICAgICAgICAgICAgdGhpcy5pbnB1dENWQz8ubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBlbGVtZW50Py5mb2N1cygpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0LXdyYXBwZXJcIj5cbiAgICA8bGFiZWxcbiAgICAgICAgKnR1aUxldD1cInZhbHVlKCk/LmNhcmQgfCB0dWlGb3JtYXRDYXJkOiBjYXJkUHJlZmlsbGVkIGFzIGZvcm1hdHRlZENhcmRcIlxuICAgICAgICAoY2xpY2suc2lsZW50LnByZXZlbnQpPVwiKDApXCJcbiAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0Q2FyZFxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1jYXJkLWdyb3VwX19jYXJkXCJcbiAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWlucHV0IHQtaW5wdXRfY2FyZFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiIWNhcmRQcmVmaWxsZWQgJiYgISh0aGlzLmNhcmQgfCB0dWlNYXBwZXI6IGNhcmRWYWxpZGF0b3IpXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImlkICsgJ19jYXJkJ1wiXG4gICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZSA/ICdjYy1udW1iZXInIDogJ29mZidcIlxuICAgICAgICAgICAgW2NsYXNzLnQtaW5wdXRfaGlkZGVuXT1cIiFjYXJkLmxlbmd0aCAmJiBmb2N1cygpXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWlucHV0X2luZXJ0XT1cImNhcmRQcmVmaWxsZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICAgICAgW21hc2tpdG9dPVwibWFza0NhcmRcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZm9ybWF0dGVkQ2FyZFwiXG4gICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjYXJkUHJlZmlsbGVkID8gJycgOiBleGFtcGxlVGV4dFwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHkoKVwiXG4gICAgICAgICAgICBbdGFiSW5kZXhdPVwiY2FyZEZvY3VzYWJsZSA/IDAgOiAtMVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwiKDApXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2FyZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgICAgICBjbGFzcz1cInQtY29sbGFwc2VkXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtYmVmb3JlXT1cIm1hc2tlZFwiXG4gICAgICAgICAgICBbY2xhc3MudC1jb2xsYXBzZWRfZW5hYmxlLW1hc2tdPVwiY2FyZENvbGxhcHNlZFwiXG4gICAgICAgICAgICAod2FSZXNpemVPYnNlcnZlcik9XCIoMClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICNnaG9zdFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1naG9zdFwiXG4gICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cImZvcm1hdHRlZENhcmQuc2xpY2UoLXRhaWxMZW5ndGgpXCJcbiAgICAgICAgICAgID48L3NwYW4+XG5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidC1jb2xsYXBzZWQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwidHJhbnNmb3JtKGdob3N0KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXR0ZWRDYXJkIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidC1sYWJlbFwiXG4gICAgICAgICAgICBbY2xhc3MudC1sYWJlbF9yYWlzZWRdPVwibGFiZWxSYWlzZWQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHRleHRzKCk/LmNhcmROdW1iZXJUZXh0IH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbGFiZWw+XG48L2Rpdj5cbjxkaXZcbiAgICBjbGFzcz1cInQtd3JhcHBlciB0LXdyYXBwZXJfZXhwaXJlXCJcbiAgICBbY2xhc3MudC13cmFwcGVyX2FjdGl2ZV09XCJjYXJkQ29sbGFwc2VkXCJcbj5cbiAgICA8bGFiZWwgKGNsaWNrLnNpbGVudC5wcmV2ZW50KT1cIigwKVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dEV4cGlyZVxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1jYXJkLWdyb3VwX19leHBpcmVcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCI1XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiMDAvMDBcIlxuICAgICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWlucHV0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImlkICsgJ19leHBpcmUnXCJcbiAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiYXV0b2NvbXBsZXRlID8gJ2NjZXhwaXJ5eWVhcicgOiBudWxsXCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlID8gJ2NjLWV4cCcgOiAnb2ZmJ1wiXG4gICAgICAgICAgICBbY2xhc3MudC1pbnB1dF9pbmVydF09XCIhZXhwaXJlRm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIFttYXNraXRvXT1cIm1hc2tFeHBpcmVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZXhwaXJlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5KClcIlxuICAgICAgICAgICAgW3RhYkluZGV4XT1cImV4cGlyZUZvY3VzYWJsZSA/IDAgOiAtMVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwiKDApXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRXhwaXJlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInQtbGFiZWxcIlxuICAgICAgICAgICAgW2NsYXNzLnQtbGFiZWxfcmFpc2VkXT1cImxhYmVsUmFpc2VkKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0ZXh0cygpPy5leHBpcnlUZXh0IH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbGFiZWw+XG48L2Rpdj5cbjxkaXZcbiAgICBjbGFzcz1cInQtd3JhcHBlciB0LXdyYXBwZXJfY3ZjXCJcbiAgICBbY2xhc3MudC13cmFwcGVyX2FjdGl2ZV09XCJjYXJkQ29sbGFwc2VkXCJcbj5cbiAgICA8bGFiZWwgKGNsaWNrLnNpbGVudC5wcmV2ZW50KT1cIigwKVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dENWQ1xuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1jYXJkLWdyb3VwX19jdmNcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICB0cmFuc2xhdGU9XCJub1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cInQtaW5wdXRcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiaWQgKyAnX2N2YydcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGUgPyAnY2MtY3NjJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWlucHV0X2N2Y19oaWRkZW5dPVwiY3ZjSGlkZGVuXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWlucHV0X3ByZWZpbGxlZF09XCJjdmNQcmVmaWxsZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICAgICAgW21hc2tpdG9dPVwibWFza0NWQ1wiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJjdmNcIlxuICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY3ZjUHJlZmlsbGVkID8gJ+KAouKAouKAoicgOiBleGFtcGxlVGV4dENWQ1wiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHkoKSB8fCBjdmNQcmVmaWxsZWRcIlxuICAgICAgICAgICAgW3RhYkluZGV4XT1cImN2Y0ZvY3VzYWJsZSA/IDAgOiAtMVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwiKDApXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ1ZDQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInQtbGFiZWxcIlxuICAgICAgICAgICAgW2NsYXNzLnQtbGFiZWxfcmFpc2VkXT1cImxhYmVsUmFpc2VkKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0ZXh0cygpPy5jdmNUZXh0IH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbGFiZWw+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ0LWljb25zXCI+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImNvbnRlbnRcIlxuICAgICAgICBjbGFzcz1cInQtaWNvbi1vdXRsZXRcIlxuICAgID5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImNvbnRlbnQgYXMgc3JjXCJcbiAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNhcmQtZ3JvdXBfX2ljb25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWNhcmRcIlxuICAgICAgICAgICAgW3NyY109XCJzcmMgfCB0dWlJY29uXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8dHVpLWljb25cbiAgICAgICAgKm5nSWY9XCJoYXNDbGVhbmVyKClcIlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNhcmQtZ3JvdXBfX2NsZWFuZXJcIlxuICAgICAgICB0dWlBcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgIGNsYXNzPVwidC1pY29uXCJcbiAgICAgICAgW2ljb25dPVwiaWNvbnMuY2xvc2VcIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gICAgLz5cbiAgICA8dHVpLWljb25cbiAgICAgICAgKm5nSWY9XCJkcm9wZG93bi5jb250ZW50XCJcbiAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1jYXJkLWdyb3VwX19kcm9wZG93blwiXG4gICAgICAgIHR1aUFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgdHVpQ2hldnJvblxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgIC8+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -11,7 +11,7 @@ class TuiInputExpire {
|
|
|
11
11
|
this.autocomplete = inject(TUI_INPUT_CARD_OPTIONS).autocomplete;
|
|
12
12
|
}
|
|
13
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputExpire, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
14
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputExpire, isStandalone: true, selector: "input[tuiInputExpire]", inputs: { autocomplete: "autocomplete" }, host: { attributes: { "inputmode": "numeric", "placeholder": "00/00", "translate": "no" }, properties: { "autocomplete": "autocomplete ? \"cc-exp\" : \"off\"" } }, hostDirectives: [{ directive: i1.MaskitoDirective }], ngImport: i0 }); }
|
|
14
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputExpire, isStandalone: true, selector: "input[tuiInputExpire]", inputs: { autocomplete: "autocomplete" }, host: { attributes: { "inputmode": "numeric", "placeholder": "00/00", "translate": "no", "maxlength": "5" }, properties: { "attr.name": "autocomplete ? \"ccexpiryyear\" : null", "autocomplete": "autocomplete ? \"cc-exp\" : \"off\"" } }, hostDirectives: [{ directive: i1.MaskitoDirective }], ngImport: i0 }); }
|
|
15
15
|
}
|
|
16
16
|
export { TuiInputExpire };
|
|
17
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputExpire, decorators: [{
|
|
@@ -24,10 +24,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
24
24
|
inputmode: 'numeric',
|
|
25
25
|
placeholder: '00/00',
|
|
26
26
|
translate: 'no',
|
|
27
|
+
maxlength: '5',
|
|
28
|
+
'[attr.name]': 'autocomplete ? "ccexpiryyear" : null',
|
|
27
29
|
'[autocomplete]': 'autocomplete ? "cc-exp" : "off"',
|
|
28
30
|
},
|
|
29
31
|
}]
|
|
30
32
|
}], propDecorators: { autocomplete: [{
|
|
31
33
|
type: Input
|
|
32
34
|
}] } });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZXhwaXJlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWNvbW1lcmNlL2NvbXBvbmVudHMvaW5wdXQtZXhwaXJlL2lucHV0LWV4cGlyZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7OztBQUUvQyxNQWFhLGNBQWM7SUFiM0I7UUFjdUIsU0FBSSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUcvQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLFlBQVksQ0FBQztLQUNyRTsrR0FMWSxjQUFjO21HQUFkLGNBQWM7O1NBQWQsY0FBYzs0RkFBZCxjQUFjO2tCQWIxQixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxjQUFjLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDbEMsSUFBSSxFQUFFO3dCQUNGLFNBQVMsRUFBRSxTQUFTO3dCQUNwQixXQUFXLEVBQUUsT0FBTzt3QkFDcEIsU0FBUyxFQUFFLElBQUk7d0JBQ2YsU0FBUyxFQUFFLEdBQUc7d0JBQ2QsYUFBYSxFQUFFLHNDQUFzQzt3QkFDckQsZ0JBQWdCLEVBQUUsaUNBQWlDO3FCQUN0RDtpQkFDSjs4QkFLVSxZQUFZO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXNraXRvRGlyZWN0aXZlfSBmcm9tICdAbWFza2l0by9hbmd1bGFyJztcbmltcG9ydCB7VFVJX0lOUFVUX0NBUkRfT1BUSU9OU30gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbXBvbmVudHMvaW5wdXQtY2FyZCc7XG5pbXBvcnQge1RVSV9NQVNLX0VYUElSRX0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbnN0YW50cyc7XG5pbXBvcnQge3R1aU1hc2tpdG99IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXRFeHBpcmVdJyxcbiAgICBob3N0RGlyZWN0aXZlczogW01hc2tpdG9EaXJlY3RpdmVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgaW5wdXRtb2RlOiAnbnVtZXJpYycsXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnMDAvMDAnLFxuICAgICAgICB0cmFuc2xhdGU6ICdubycsXG4gICAgICAgIG1heGxlbmd0aDogJzUnLFxuICAgICAgICAnW2F0dHIubmFtZV0nOiAnYXV0b2NvbXBsZXRlID8gXCJjY2V4cGlyeXllYXJcIiA6IG51bGwnLFxuICAgICAgICAnW2F1dG9jb21wbGV0ZV0nOiAnYXV0b2NvbXBsZXRlID8gXCJjYy1leHBcIiA6IFwib2ZmXCInLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0RXhwaXJlIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFzayA9IHR1aU1hc2tpdG8oVFVJX01BU0tfRVhQSVJFKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZSA9IGluamVjdChUVUlfSU5QVVRfQ0FSRF9PUFRJT05TKS5hdXRvY29tcGxldGU7XG59XG4iXX0=
|
|
@@ -13,14 +13,14 @@ class TuiThumbnailCard {
|
|
|
13
13
|
this.monoHandler = this.options.monoHandler;
|
|
14
14
|
}
|
|
15
15
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiThumbnailCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiThumbnailCard, isStandalone: true, selector: "tui-thumbnail-card", inputs: { size: "size", paymentSystem: "paymentSystem", iconStart: "iconStart", iconEnd: "iconEnd", monoHandler: "monoHandler" }, host: { properties: { "attr.data-size": "size" } }, ngImport: i0, template: "<div class=\"t-front\">\n <div\n *ngIf=\"iconStart\"\n class=\"t-left\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart\"\n />\n </div>\n <div\n *ngIf=\"iconEnd\"\n class=\"t-right\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconEnd\"\n />\n </div>\n <ng-content />\n <ng-container *ngIf=\"paymentSystem\">\n <tui-icon\n *ngIf=\"monoHandler(paymentSystem); else colored\"\n class=\"t-logo\"\n [icon]=\"options.icons[paymentSystem]\"\n />\n <ng-template #colored>\n <img\n class=\"t-logo\"\n [alt]=\"paymentSystem\"\n [src]=\"options.icons[paymentSystem] | tuiIcon\"\n />\n </ng-template>\n </ng-container>\n</div>\n<div class=\"t-back\"></div>\n", styles: [":host{position:relative;display:inline-flex;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden}:host:before{position:absolute;top:0;left:0;
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiThumbnailCard, isStandalone: true, selector: "tui-thumbnail-card", inputs: { size: "size", paymentSystem: "paymentSystem", iconStart: "iconStart", iconEnd: "iconEnd", monoHandler: "monoHandler" }, host: { properties: { "attr.data-size": "size" } }, ngImport: i0, template: "<div class=\"t-front\">\n <div\n *ngIf=\"iconStart\"\n class=\"t-left\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart\"\n />\n </div>\n <div\n *ngIf=\"iconEnd\"\n class=\"t-right\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconEnd\"\n />\n </div>\n <ng-content />\n <ng-container *ngIf=\"paymentSystem\">\n <tui-icon\n *ngIf=\"monoHandler(paymentSystem); else colored\"\n class=\"t-logo\"\n [icon]=\"options.icons[paymentSystem]\"\n />\n <ng-template #colored>\n <img\n class=\"t-logo\"\n [alt]=\"paymentSystem\"\n [src]=\"options.icons[paymentSystem] | tuiIcon\"\n />\n </ng-template>\n </ng-container>\n</div>\n<div class=\"t-back\"></div>\n", styles: [":host{position:relative;display:inline-flex;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden}:host:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\"}:host[data-size=s]{inline-size:2.5rem;block-size:1.625rem;border-radius:.25rem;font-size:0}:host[data-size=s] .t-left{transform:translate(.125rem,.125rem) scale(.625)}:host[data-size=s] .t-right{display:none}:host[data-size=s] .t-logo{bottom:-.375rem;transform:scale(.55)}:host[data-size=m]{inline-size:3rem;block-size:2rem;border-radius:.3125rem;text-indent:.1875rem;font:normal .5625rem/.875rem var(--tui-font-text)}:host[data-size=m] .t-left{transform:translate(.1875rem,.25rem) scale(.75)}:host[data-size=m] .t-right{transform:translate(-.1875rem,.1875rem) scale(.875)}:host[data-size=m] .t-right .t-icon{transform:scale(.714)}:host[data-size=m] .t-logo{bottom:-.3125rem;transform:scale(.55)}:host[data-size=l]{inline-size:3.375rem;block-size:2.25rem;border-radius:.375rem;text-indent:.3125rem;font:normal .625rem/1.125rem var(--tui-font-text)}:host[data-size=l] .t-left{transform:translate(.1875rem,.1875rem)}:host[data-size=l] .t-right{transform:translate(-.1875rem,.1875rem)}:host[data-size=l] .t-logo{bottom:-.1875rem;transform:scale(.75)}.t-left,.t-right{position:absolute;top:0;display:flex}.t-left{left:0;transform-origin:top left}.t-right{right:0;transform-origin:top right}.t-right:before{content:\"\";position:absolute;top:0;left:0;inline-size:100%;block-size:100%;border-radius:100%;background:currentColor;opacity:.35}.t-right .t-icon{color:#fff;transform:scale(.625)}.t-logo{position:absolute;right:.1875rem;inline-size:1.5rem;block-size:1.5rem;transform-origin:right}.t-icon{inline-size:1rem;block-size:1rem}.t-front{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;align-items:flex-end;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-shadow:inset 0 0 0 1px var(--tui-background-neutral-1);border-radius:inherit}.t-back{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:rotateY(180deg) translateZ(1px);background:#b0b0b0;border-radius:inherit}.t-back:after{position:absolute;left:0;right:0;content:\"\";top:20%;bottom:60%;background:#959595}\n"], dependencies: [{ kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TuiIconPipe, name: "tuiIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
17
17
|
}
|
|
18
18
|
export { TuiThumbnailCard };
|
|
19
19
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiThumbnailCard, decorators: [{
|
|
20
20
|
type: Component,
|
|
21
21
|
args: [{ standalone: true, selector: 'tui-thumbnail-card', imports: [TuiIcon, NgIf, TuiIconPipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
22
22
|
'[attr.data-size]': 'size',
|
|
23
|
-
}, template: "<div class=\"t-front\">\n <div\n *ngIf=\"iconStart\"\n class=\"t-left\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart\"\n />\n </div>\n <div\n *ngIf=\"iconEnd\"\n class=\"t-right\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconEnd\"\n />\n </div>\n <ng-content />\n <ng-container *ngIf=\"paymentSystem\">\n <tui-icon\n *ngIf=\"monoHandler(paymentSystem); else colored\"\n class=\"t-logo\"\n [icon]=\"options.icons[paymentSystem]\"\n />\n <ng-template #colored>\n <img\n class=\"t-logo\"\n [alt]=\"paymentSystem\"\n [src]=\"options.icons[paymentSystem] | tuiIcon\"\n />\n </ng-template>\n </ng-container>\n</div>\n<div class=\"t-back\"></div>\n", styles: [":host{position:relative;display:inline-flex;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden}:host:before{position:absolute;top:0;left:0;
|
|
23
|
+
}, template: "<div class=\"t-front\">\n <div\n *ngIf=\"iconStart\"\n class=\"t-left\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart\"\n />\n </div>\n <div\n *ngIf=\"iconEnd\"\n class=\"t-right\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconEnd\"\n />\n </div>\n <ng-content />\n <ng-container *ngIf=\"paymentSystem\">\n <tui-icon\n *ngIf=\"monoHandler(paymentSystem); else colored\"\n class=\"t-logo\"\n [icon]=\"options.icons[paymentSystem]\"\n />\n <ng-template #colored>\n <img\n class=\"t-logo\"\n [alt]=\"paymentSystem\"\n [src]=\"options.icons[paymentSystem] | tuiIcon\"\n />\n </ng-template>\n </ng-container>\n</div>\n<div class=\"t-back\"></div>\n", styles: [":host{position:relative;display:inline-flex;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden}:host:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\"}:host[data-size=s]{inline-size:2.5rem;block-size:1.625rem;border-radius:.25rem;font-size:0}:host[data-size=s] .t-left{transform:translate(.125rem,.125rem) scale(.625)}:host[data-size=s] .t-right{display:none}:host[data-size=s] .t-logo{bottom:-.375rem;transform:scale(.55)}:host[data-size=m]{inline-size:3rem;block-size:2rem;border-radius:.3125rem;text-indent:.1875rem;font:normal .5625rem/.875rem var(--tui-font-text)}:host[data-size=m] .t-left{transform:translate(.1875rem,.25rem) scale(.75)}:host[data-size=m] .t-right{transform:translate(-.1875rem,.1875rem) scale(.875)}:host[data-size=m] .t-right .t-icon{transform:scale(.714)}:host[data-size=m] .t-logo{bottom:-.3125rem;transform:scale(.55)}:host[data-size=l]{inline-size:3.375rem;block-size:2.25rem;border-radius:.375rem;text-indent:.3125rem;font:normal .625rem/1.125rem var(--tui-font-text)}:host[data-size=l] .t-left{transform:translate(.1875rem,.1875rem)}:host[data-size=l] .t-right{transform:translate(-.1875rem,.1875rem)}:host[data-size=l] .t-logo{bottom:-.1875rem;transform:scale(.75)}.t-left,.t-right{position:absolute;top:0;display:flex}.t-left{left:0;transform-origin:top left}.t-right{right:0;transform-origin:top right}.t-right:before{content:\"\";position:absolute;top:0;left:0;inline-size:100%;block-size:100%;border-radius:100%;background:currentColor;opacity:.35}.t-right .t-icon{color:#fff;transform:scale(.625)}.t-logo{position:absolute;right:.1875rem;inline-size:1.5rem;block-size:1.5rem;transform-origin:right}.t-icon{inline-size:1rem;block-size:1rem}.t-front{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;align-items:flex-end;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-shadow:inset 0 0 0 1px var(--tui-background-neutral-1);border-radius:inherit}.t-back{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:rotateY(180deg) translateZ(1px);background:#b0b0b0;border-radius:inherit}.t-back:after{position:absolute;left:0;right:0;content:\"\";top:20%;bottom:60%;background:#959595}\n"] }]
|
|
24
24
|
}], propDecorators: { size: [{
|
|
25
25
|
type: Input
|
|
26
26
|
}], paymentSystem: [{
|
|
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
32
32
|
}], monoHandler: [{
|
|
33
33
|
type: Input
|
|
34
34
|
}] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bWJuYWlsLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tY29tbWVyY2UvY29tcG9uZW50cy90aHVtYm5haWwtY2FyZC90aHVtYm5haWwtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL3RodW1ibmFpbC1jYXJkL3RodW1ibmFpbC1jYXJkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdoRixPQUFPLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBR3BFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDBCQUEwQixDQUFDOztBQUVwRSxNQVdhLGdCQUFnQjtJQVg3QjtRQVl1QixZQUFPLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFHekQsU0FBSSxHQUF3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUc5QyxrQkFBYSxHQUE0QixJQUFJLENBQUM7UUFHOUMsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUdmLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFHYixnQkFBVyxHQUF3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztLQUN0RjsrR0FqQlksZ0JBQWdCO21HQUFoQixnQkFBZ0Isb1FDcEI3QixrNUJBb0NBLGswRUR4QmMsT0FBTyxxRkFBRSxJQUFJLHdGQUFFLFdBQVc7O1NBUTNCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQVg1QixTQUFTO2lDQUNNLElBQUksWUFDTixvQkFBb0IsV0FDckIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixrQkFBa0IsRUFBRSxNQUFNO3FCQUM3Qjs4QkFNTSxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1R1aVBheW1lbnRTeXN0ZW19IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS90eXBlcyc7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHtUdWlJY29uLCBUdWlJY29uUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB0eXBlIHtUdWlTaXplTCwgVHVpU2l6ZVN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3R5cGVzJztcblxuaW1wb3J0IHtUVUlfVEhVTUJOQUlMX0NBUkRfT1BUSU9OU30gZnJvbSAnLi90aHVtYm5haWwtY2FyZC5vcHRpb25zJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS10aHVtYm5haWwtY2FyZCcsXG4gICAgaW1wb3J0czogW1R1aUljb24sIE5nSWYsIFR1aUljb25QaXBlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGh1bWJuYWlsLWNhcmQudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGh1bWJuYWlsLWNhcmQuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmRhdGEtc2l6ZV0nOiAnc2l6ZScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpVGh1bWJuYWlsQ2FyZCB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX1RIVU1CTkFJTF9DQVJEX09QVElPTlMpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2l6ZTogVHVpU2l6ZUwgfCBUdWlTaXplUyA9IHRoaXMub3B0aW9ucy5zaXplO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGF5bWVudFN5c3RlbTogVHVpUGF5bWVudFN5c3RlbSB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWNvblN0YXJ0ID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpY29uRW5kID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtb25vSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpUGF5bWVudFN5c3RlbT4gPSB0aGlzLm9wdGlvbnMubW9ub0hhbmRsZXI7XG59XG4iLCI8ZGl2IGNsYXNzPVwidC1mcm9udFwiPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpY29uU3RhcnRcIlxuICAgICAgICBjbGFzcz1cInQtbGVmdFwiXG4gICAgPlxuICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgIGNsYXNzPVwidC1pY29uXCJcbiAgICAgICAgICAgIFtpY29uXT1cImljb25TdGFydFwiXG4gICAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImljb25FbmRcIlxuICAgICAgICBjbGFzcz1cInQtcmlnaHRcIlxuICAgID5cbiAgICAgICAgPHR1aS1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInQtaWNvblwiXG4gICAgICAgICAgICBbaWNvbl09XCJpY29uRW5kXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudCAvPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXltZW50U3lzdGVtXCI+XG4gICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgKm5nSWY9XCJtb25vSGFuZGxlcihwYXltZW50U3lzdGVtKTsgZWxzZSBjb2xvcmVkXCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1sb2dvXCJcbiAgICAgICAgICAgIFtpY29uXT1cIm9wdGlvbnMuaWNvbnNbcGF5bWVudFN5c3RlbV1cIlxuICAgICAgICAvPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2NvbG9yZWQ+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWxvZ29cIlxuICAgICAgICAgICAgICAgIFthbHRdPVwicGF5bWVudFN5c3RlbVwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJvcHRpb25zLmljb25zW3BheW1lbnRTeXN0ZW1dIHwgdHVpSWNvblwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidC1iYWNrXCI+PC9kaXY+XG4iXX0=
|
|
@@ -17,7 +17,7 @@ import { tuiHovered, TuiHoveredService } from '@taiga-ui/cdk/directives/hovered'
|
|
|
17
17
|
import { TuiLet } from '@taiga-ui/cdk/directives/let';
|
|
18
18
|
import { tuiTypedFromEvent } from '@taiga-ui/cdk/observables';
|
|
19
19
|
import { TuiMapperPipe } from '@taiga-ui/cdk/pipes/mapper';
|
|
20
|
-
import {
|
|
20
|
+
import { tuiInjectId } from '@taiga-ui/cdk/services';
|
|
21
21
|
import { tuiInjectElement, tuiIsElement, tuiIsInput } from '@taiga-ui/cdk/utils/dom';
|
|
22
22
|
import { tuiIsNativeFocusedIn, tuiIsNativeFocused } from '@taiga-ui/cdk/utils/focus';
|
|
23
23
|
import { tuiCreateToken, tuiProvideOptions, tuiCreateTokenFromFactory, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
@@ -98,7 +98,7 @@ class TuiInputCardGroup extends TuiControl {
|
|
|
98
98
|
this.exampleText = this.options.exampleText;
|
|
99
99
|
this.cardValidator = this.options.cardValidator;
|
|
100
100
|
this.icon = this.options.icon;
|
|
101
|
-
this.id =
|
|
101
|
+
this.id = tuiInjectId();
|
|
102
102
|
this.autocomplete = this.options.autocomplete;
|
|
103
103
|
this.binChange = new EventEmitter();
|
|
104
104
|
}
|
|
@@ -245,7 +245,7 @@ class TuiInputCardGroup extends TuiControl {
|
|
|
245
245
|
tuiAsControl(TuiInputCardGroup),
|
|
246
246
|
tuiDropdownOptionsProvider({ limitWidth: 'fixed' }),
|
|
247
247
|
TuiHoveredService,
|
|
248
|
-
], 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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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;block-size:var(--tui-height-l);inline-size:29.5rem;border-radius:var(--tui-radius-l);overflow:clip}:host :host-context(tui-root._mobile){inline-size:18rem}.t-outline{block-size:100%;inline-size:100%}.t-wrapper{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;inline-size:100%;block-size: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{inline-size:2rem;block-size: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;inline-size:100%;block-size: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}.t-icons{position:absolute;right:.75rem;display:flex;align-items:center;block-size: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: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], 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 }); }
|
|
248
|
+
], 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 [ngModelOptions]=\"{standalone: true}\"\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 maxlength=\"5\"\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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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;block-size:var(--tui-height-l);inline-size:29.5rem;border-radius:var(--tui-radius-l);overflow:clip}:host :host-context(tui-root._mobile){inline-size:18rem}.t-outline{block-size:100%;inline-size:100%}.t-wrapper{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;inline-size:100%;block-size: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{inline-size:2rem;block-size:2rem}.t-collapsed{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;padding:1.25rem var(--tui-padding-l) 0;box-sizing:border-box;font:var(--tui-font-text-m);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;inline-size:100%;block-size: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;inline-size:100%;block-size: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-m);color:var(--tui-text-primary)}.t-input::placeholder{color:var(--tui-text-tertiary)}.t-input:-webkit-autofill{-webkit-text-fill-color:var(--tui-text-primary)!important;caret-color:var(--tui-text-primary)!important;border-color:var(--tui-service-autofill-background)!important;box-shadow:0 0 0 100rem var(--tui-service-autofill-background) inset!important}.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}.t-icons{position:absolute;right:.75rem;display:flex;align-items:center;block-size: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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], 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 }); }
|
|
249
249
|
}
|
|
250
250
|
__decorate([
|
|
251
251
|
tuiPure
|
|
@@ -284,7 +284,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
284
284
|
'data-size': 'l',
|
|
285
285
|
'[attr.data-mode]': 'mode()',
|
|
286
286
|
'(mousedown)': 'onMouseDown($event)',
|
|
287
|
-
}, 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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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;block-size:var(--tui-height-l);inline-size:29.5rem;border-radius:var(--tui-radius-l);overflow:clip}:host :host-context(tui-root._mobile){inline-size:18rem}.t-outline{block-size:100%;inline-size:100%}.t-wrapper{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;inline-size:100%;block-size: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{inline-size:2rem;block-size:2rem}.t-collapsed{position:absolute;top:0;left:0;
|
|
287
|
+
}, 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 [ngModelOptions]=\"{standalone: true}\"\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 maxlength=\"5\"\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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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;block-size:var(--tui-height-l);inline-size:29.5rem;border-radius:var(--tui-radius-l);overflow:clip}:host :host-context(tui-root._mobile){inline-size:18rem}.t-outline{block-size:100%;inline-size:100%}.t-wrapper{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;inline-size:100%;block-size: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{inline-size:2rem;block-size:2rem}.t-collapsed{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;padding:1.25rem var(--tui-padding-l) 0;box-sizing:border-box;font:var(--tui-font-text-m);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;inline-size:100%;block-size: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;inline-size:100%;block-size: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-m);color:var(--tui-text-primary)}.t-input::placeholder{color:var(--tui-text-tertiary)}.t-input:-webkit-autofill{-webkit-text-fill-color:var(--tui-text-primary)!important;caret-color:var(--tui-text-primary)!important;border-color:var(--tui-service-autofill-background)!important;box-shadow:0 0 0 100rem var(--tui-service-autofill-background) inset!important}.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}.t-icons{position:absolute;right:.75rem;display:flex;align-items:center;block-size: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"] }]
|
|
288
288
|
}], propDecorators: { inputCard: [{
|
|
289
289
|
type: ViewChild,
|
|
290
290
|
args: ['inputCard']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-commerce-components-input-card-group.mjs","sources":["../../../projects/addon-commerce/components/input-card-group/input-card-group.options.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.providers.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.component.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.template.html","../../../projects/addon-commerce/components/input-card-group/taiga-ui-addon-commerce-components-input-card-group.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport type {TuiInputCardOptions} from '@taiga-ui/addon-commerce/components/input-card';\nimport {TUI_INPUT_CARD_DEFAULT_OPTIONS} from '@taiga-ui/addon-commerce/components/input-card';\nimport {tuiDefaultCardValidator} from '@taiga-ui/addon-commerce/constants';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiInputCardGroupOptions extends TuiInputCardOptions {\n readonly cardValidator: TuiBooleanHandler<string>;\n readonly exampleText: string;\n readonly exampleTextCVC: string;\n readonly cvcHidden: boolean;\n}\n\nexport const TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS: TuiInputCardGroupOptions = {\n ...TUI_INPUT_CARD_DEFAULT_OPTIONS,\n cardValidator: tuiDefaultCardValidator,\n exampleText: '0000 0000 0000 0000',\n exampleTextCVC: '000',\n cvcHidden: true,\n};\n\nexport const TUI_INPUT_CARD_GROUP_OPTIONS = tuiCreateToken(\n TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS,\n);\n\nexport function tuiInputCardGroupOptionsProvider(\n options: Partial<TuiInputCardGroupOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_CARD_GROUP_OPTIONS,\n options,\n TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS,\n );\n}\n","import {inject} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {\n TUI_CARD_CVC_TEXTS,\n TUI_CARD_EXPIRY_TEXTS,\n TUI_CARD_NUMBER_TEXTS,\n} from '@taiga-ui/addon-commerce/tokens';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_MEDIA} from '@taiga-ui/core/tokens';\nimport type {Observable} from 'rxjs';\nimport {combineLatest, map, of, startWith, switchMap} from 'rxjs';\n\nexport interface TuiCardGroupedTexts {\n readonly cardNumberText: string;\n readonly cvcText: string;\n readonly expiryText: string;\n}\n\n/**\n * InputCardGroup texts\n */\nexport const TUI_INPUT_CARD_GROUP_TEXTS = tuiCreateTokenFromFactory<\n Observable<TuiCardGroupedTexts>\n>(() => {\n const win = inject(WA_WINDOW);\n const cardNumberTexts = inject(TUI_CARD_NUMBER_TEXTS);\n const expiryTexts = inject(TUI_CARD_EXPIRY_TEXTS);\n const cvcTexts = inject(TUI_CARD_CVC_TEXTS);\n const {desktopSmall} = inject(TUI_MEDIA);\n\n const media = win.matchMedia(`screen and (min-width: ${(desktopSmall - 1) / 16}em)`);\n\n return tuiTypedFromEvent(media, 'change').pipe(\n startWith(null),\n switchMap(() =>\n combineLatest([\n of(Number(media.matches)),\n cardNumberTexts,\n expiryTexts,\n cvcTexts,\n ]),\n ),\n map(([index, cardNumber, expiry, cvcTexts]) => ({\n cardNumberText: cardNumber[index] ?? '',\n expiryText: expiry[index] ?? '',\n cvcText: cvcTexts[index] ?? '',\n })),\n );\n});\n","import {NgIf} from '@angular/common';\nimport type {ElementRef, Signal} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\nimport {\n TUI_MASK_CARD,\n TUI_MASK_CVC,\n TUI_MASK_EXPIRE,\n} from '@taiga-ui/addon-commerce/constants';\nimport {TuiFormatCardPipe} from '@taiga-ui/addon-commerce/pipes';\nimport {TUI_PAYMENT_SYSTEM_ICONS} from '@taiga-ui/addon-commerce/tokens';\nimport type {TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_NON_DIGIT_REGEXP} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiHovered, TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiLet} from '@taiga-ui/cdk/directives/let';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement, tuiIsElement, tuiIsInput} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsNativeFocused, tuiIsNativeFocusedIn} from '@taiga-ui/cdk/utils/focus';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiDataListHost} from '@taiga-ui/core/components/data-list';\nimport {tuiAsDataListHost} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon, TuiIconPipe} from '@taiga-ui/core/components/icon';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiWithTextfieldDropdown,\n} from '@taiga-ui/core/components/textfield';\nimport {\n TuiAppearance,\n tuiAppearance,\n tuiAppearanceFocus,\n tuiAppearanceState,\n} from '@taiga-ui/core/directives/appearance';\nimport {\n TuiDropdownDirective,\n tuiDropdownOpen,\n tuiDropdownOptionsProvider,\n TuiWithDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusOutlet, PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\nimport {map, merge} from 'rxjs';\n\nimport {TUI_INPUT_CARD_GROUP_OPTIONS} from './input-card-group.options';\nimport {TUI_INPUT_CARD_GROUP_TEXTS} from './input-card-group.providers';\n\nexport interface TuiCard {\n card: string;\n cvc: string;\n expire: string;\n}\n\n@Component({\n standalone: true,\n selector: 'tui-input-card-group',\n imports: [\n NgIf,\n FormsModule,\n MaskitoDirective,\n WaResizeObserver,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n TuiActiveZone,\n TuiFormatCardPipe,\n TuiMapperPipe,\n TuiLet,\n TuiIcon,\n TuiChevron,\n TuiAppearance,\n TuiIconPipe,\n ],\n templateUrl: './input-card-group.template.html',\n styleUrls: ['./input-card-group.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsDataListHost(TuiInputCardGroup),\n tuiAsControl(TuiInputCardGroup),\n tuiDropdownOptionsProvider({limitWidth: 'fixed'}),\n TuiHoveredService,\n ],\n hostDirectives: [\n TuiAppearance,\n TuiDropdownDirective,\n TuiWithTextfieldDropdown,\n TuiWithDropdownOpen,\n ],\n host: {\n 'data-size': 'l',\n '[attr.data-mode]': 'mode()',\n '(mousedown)': 'onMouseDown($event)',\n },\n})\nexport class TuiInputCardGroup\n extends TuiControl<TuiCard | null>\n implements TuiDataListHost<Partial<TuiCard>>\n{\n @ViewChild('inputCard')\n private readonly inputCard?: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputExpire')\n private readonly inputExpire?: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputCVC')\n private readonly inputCVC?: ElementRef<HTMLInputElement>;\n\n private expirePrefilled = false;\n private readonly paymentSystems = inject(TUI_PAYMENT_SYSTEM_ICONS);\n private readonly options = inject(TUI_INPUT_CARD_GROUP_OPTIONS);\n private readonly el = tuiInjectElement();\n private readonly hover = tuiHovered();\n private readonly focusedIn = toSignal(\n merge(\n tuiTypedFromEvent(this.el, 'focusin'),\n tuiTypedFromEvent(this.el, 'focusout'),\n ).pipe(map(() => tuiIsNativeFocusedIn(this.el))),\n {initialValue: false},\n );\n\n protected exampleTextCVC = this.options.exampleTextCVC;\n protected cvcHidden = this.options.cvcHidden;\n protected maskCVC = TUI_MASK_CVC(3);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly maskCard = TUI_MASK_CARD;\n protected readonly maskExpire = TUI_MASK_EXPIRE;\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly texts = toSignal(inject(TUI_INPUT_CARD_GROUP_TEXTS));\n protected readonly open = tuiDropdownOpen();\n\n protected readonly appearance = tuiAppearance(\n inject(TUI_TEXTFIELD_OPTIONS).appearance,\n );\n\n protected readonly state: Signal<unknown> = tuiAppearanceState(\n // eslint-disable-next-line no-nested-ternary\n computed(() => (this.disabled() ? 'disabled' : this.hover() ? 'hover' : null)),\n );\n\n protected readonly focus = tuiAppearanceFocus(\n computed(() => this.open() || this.focusedIn()),\n );\n\n protected readonly labelRaised = computed(\n () => (this.focus() && !this.readOnly()) || !!this.value()?.card,\n );\n\n protected readonly hasCleaner = computed(\n () => !!this.value()?.card && this.interactive(),\n );\n\n @Input()\n public exampleText = this.options.exampleText;\n\n @Input()\n public cardValidator: TuiBooleanHandler<string> = this.options.cardValidator;\n\n @Input()\n public icon: PolymorpheusContent = this.options.icon;\n\n @Input()\n public id = inject(TuiIdService).generate();\n\n @Input()\n public autocomplete = this.options.autocomplete;\n\n @Output()\n public readonly binChange = new EventEmitter<string | null>();\n\n @Input()\n public set codeLength(length: 3 | 4) {\n this.exampleTextCVC = '0'.repeat(length);\n this.maskCVC = TUI_MASK_CVC(length);\n }\n\n public get bin(): string | null {\n return this.card.length < 6 ? null : this.card.slice(0, 6);\n }\n\n public override writeValue(value: TuiCard | null): void {\n const {bin} = this;\n\n super.writeValue(value);\n this.updateBin(bin);\n this.expirePrefilled = !!this.expire && this.cardPrefilled;\n }\n\n /** Public API for manual focus management */\n public focusCard(): void {\n this.inputCard?.nativeElement.focus({preventScroll: true});\n }\n\n public focusExpire(): void {\n this.inputExpire?.nativeElement.focus({preventScroll: true});\n }\n\n public focusCVC(): void {\n this.inputCVC?.nativeElement.focus({preventScroll: true});\n }\n\n public handleOption(option: Partial<TuiCard> | null): void {\n const {card = '', expire = '', cvc = ''} = option || {};\n const {bin} = this;\n const element =\n (!card && this.inputCard?.nativeElement) ||\n (!expire && this.inputExpire?.nativeElement) ||\n this.inputCVC?.nativeElement;\n\n this.onChange({card, expire, cvc});\n this.updateBin(bin);\n this.open.set(false);\n this.expirePrefilled = !!expire;\n\n element?.focus();\n }\n\n public clear(): void {\n this.expirePrefilled = false;\n this.onChange(null);\n this.focusCard();\n }\n\n protected get content(): PolymorpheusContent {\n const system = this.getPaymentSystem(this.card);\n\n return this.icon || (system && this.paymentSystems[system]);\n }\n\n protected get card(): string {\n return this.value()?.card || '';\n }\n\n protected get expire(): string {\n return this.value()?.expire || '';\n }\n\n protected get cvc(): string {\n return this.value()?.cvc || '';\n }\n\n protected get cardCollapsed(): boolean {\n return (\n this.isFocusable(this.card) &&\n !tuiIsNativeFocused(this.inputCard?.nativeElement)\n );\n }\n\n protected get tailLength(): number {\n return this.card.length % 4 > 0 ? 5 : 4;\n }\n\n protected get cardPrefilled(): boolean {\n return !!this.card.match(TUI_NON_DIGIT_REGEXP);\n }\n\n protected get cvcPrefilled(): boolean {\n return !!this.cvc.match(TUI_NON_DIGIT_REGEXP);\n }\n\n protected get cardFocusable(): boolean {\n return !this.cardPrefilled;\n }\n\n protected get expireFocusable(): boolean {\n return this.isFocusable(this.card) && !this.expirePrefilled;\n }\n\n protected get cvcFocusable(): boolean {\n return this.isFocusable(this.card);\n }\n\n protected get masked(): string {\n return this.cardPrefilled ? `*${this.card.slice(-4)}` : '*';\n }\n\n protected onCardChange(card: string): void {\n const {value, bin} = this;\n const parsed = card.split(' ').join('');\n\n if (value()?.card === parsed) {\n return;\n }\n\n this.updateProperty(parsed, 'card');\n this.updateBin(bin);\n\n if (this.cardValidator(this.card) && !value()?.expire && this.inputExpire) {\n this.focusExpire();\n }\n }\n\n protected onExpireChange(expire: string): void {\n this.updateProperty(expire, 'expire');\n\n if (\n Number(this.inputExpire?.nativeElement.selectionStart) === 5 // MM/YY\n ) {\n this.focusCVC();\n }\n }\n\n protected onCVCChange(cvc: string): void {\n this.updateProperty(cvc, 'cvc');\n }\n\n protected transform({offsetWidth}: HTMLSpanElement): string {\n return this.cardCollapsed ? `translate3d(${offsetWidth}px, 0, 0)` : '';\n }\n\n protected onMouseDown(event: MouseEvent): void {\n if (tuiIsElement(event.target) && tuiIsInput(event.target)) {\n return;\n }\n\n event.preventDefault();\n this.focusInput();\n }\n\n protected toggle(): void {\n this.open.set(!this.open());\n }\n\n @tuiPure\n private isFocusable(card: string): boolean {\n return this.cardValidator(card) || this.cardPrefilled;\n }\n\n @tuiPure\n private getPaymentSystem(value: string): TuiPaymentSystem | null {\n return this.options.paymentSystemHandler(value);\n }\n\n private updateBin(oldBin: string | null): void {\n const {bin} = this;\n\n if (bin !== oldBin && !this.cardPrefilled) {\n this.binChange.emit(bin);\n }\n }\n\n private updateProperty(value: string, propName: 'card' | 'cvc' | 'expire'): void {\n const {card = '', expire = '', cvc = ''} = this.value() || {};\n const newValue: TuiCard = {card, expire, cvc};\n\n newValue[propName] = value;\n\n this.onChange(newValue.expire || newValue.cvc || newValue.card ? newValue : null);\n }\n\n private focusInput(): void {\n const element =\n (this.cardFocusable && this.inputCard?.nativeElement) ||\n (this.expireFocusable && this.inputExpire?.nativeElement) ||\n this.inputCVC?.nativeElement;\n\n element?.focus();\n }\n}\n","<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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cvcPrefilled ? '•••' : 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-addon-commerce-components-input-card-group.mjs","sources":["../../../projects/addon-commerce/components/input-card-group/input-card-group.options.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.providers.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.component.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.template.html","../../../projects/addon-commerce/components/input-card-group/taiga-ui-addon-commerce-components-input-card-group.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport type {TuiInputCardOptions} from '@taiga-ui/addon-commerce/components/input-card';\nimport {TUI_INPUT_CARD_DEFAULT_OPTIONS} from '@taiga-ui/addon-commerce/components/input-card';\nimport {tuiDefaultCardValidator} from '@taiga-ui/addon-commerce/constants';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiInputCardGroupOptions extends TuiInputCardOptions {\n readonly cardValidator: TuiBooleanHandler<string>;\n readonly exampleText: string;\n readonly exampleTextCVC: string;\n readonly cvcHidden: boolean;\n}\n\nexport const TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS: TuiInputCardGroupOptions = {\n ...TUI_INPUT_CARD_DEFAULT_OPTIONS,\n cardValidator: tuiDefaultCardValidator,\n exampleText: '0000 0000 0000 0000',\n exampleTextCVC: '000',\n cvcHidden: true,\n};\n\nexport const TUI_INPUT_CARD_GROUP_OPTIONS = tuiCreateToken(\n TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS,\n);\n\nexport function tuiInputCardGroupOptionsProvider(\n options: Partial<TuiInputCardGroupOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_CARD_GROUP_OPTIONS,\n options,\n TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS,\n );\n}\n","import {inject} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {\n TUI_CARD_CVC_TEXTS,\n TUI_CARD_EXPIRY_TEXTS,\n TUI_CARD_NUMBER_TEXTS,\n} from '@taiga-ui/addon-commerce/tokens';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_MEDIA} from '@taiga-ui/core/tokens';\nimport type {Observable} from 'rxjs';\nimport {combineLatest, map, of, startWith, switchMap} from 'rxjs';\n\nexport interface TuiCardGroupedTexts {\n readonly cardNumberText: string;\n readonly cvcText: string;\n readonly expiryText: string;\n}\n\n/**\n * InputCardGroup texts\n */\nexport const TUI_INPUT_CARD_GROUP_TEXTS = tuiCreateTokenFromFactory<\n Observable<TuiCardGroupedTexts>\n>(() => {\n const win = inject(WA_WINDOW);\n const cardNumberTexts = inject(TUI_CARD_NUMBER_TEXTS);\n const expiryTexts = inject(TUI_CARD_EXPIRY_TEXTS);\n const cvcTexts = inject(TUI_CARD_CVC_TEXTS);\n const {desktopSmall} = inject(TUI_MEDIA);\n\n const media = win.matchMedia(`screen and (min-width: ${(desktopSmall - 1) / 16}em)`);\n\n return tuiTypedFromEvent(media, 'change').pipe(\n startWith(null),\n switchMap(() =>\n combineLatest([\n of(Number(media.matches)),\n cardNumberTexts,\n expiryTexts,\n cvcTexts,\n ]),\n ),\n map(([index, cardNumber, expiry, cvcTexts]) => ({\n cardNumberText: cardNumber[index] ?? '',\n expiryText: expiry[index] ?? '',\n cvcText: cvcTexts[index] ?? '',\n })),\n );\n});\n","import {NgIf} from '@angular/common';\nimport type {ElementRef, Signal} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\nimport {\n TUI_MASK_CARD,\n TUI_MASK_CVC,\n TUI_MASK_EXPIRE,\n} from '@taiga-ui/addon-commerce/constants';\nimport {TuiFormatCardPipe} from '@taiga-ui/addon-commerce/pipes';\nimport {TUI_PAYMENT_SYSTEM_ICONS} from '@taiga-ui/addon-commerce/tokens';\nimport type {TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_NON_DIGIT_REGEXP} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiHovered, TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiLet} from '@taiga-ui/cdk/directives/let';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {tuiInjectId} from '@taiga-ui/cdk/services';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement, tuiIsElement, tuiIsInput} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsNativeFocused, tuiIsNativeFocusedIn} from '@taiga-ui/cdk/utils/focus';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiDataListHost} from '@taiga-ui/core/components/data-list';\nimport {tuiAsDataListHost} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon, TuiIconPipe} from '@taiga-ui/core/components/icon';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiWithTextfieldDropdown,\n} from '@taiga-ui/core/components/textfield';\nimport {\n TuiAppearance,\n tuiAppearance,\n tuiAppearanceFocus,\n tuiAppearanceState,\n} from '@taiga-ui/core/directives/appearance';\nimport {\n TuiDropdownDirective,\n tuiDropdownOpen,\n tuiDropdownOptionsProvider,\n TuiWithDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusOutlet, PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\nimport {map, merge} from 'rxjs';\n\nimport {TUI_INPUT_CARD_GROUP_OPTIONS} from './input-card-group.options';\nimport {TUI_INPUT_CARD_GROUP_TEXTS} from './input-card-group.providers';\n\nexport interface TuiCard {\n card: string;\n cvc: string;\n expire: string;\n}\n\n@Component({\n standalone: true,\n selector: 'tui-input-card-group',\n imports: [\n NgIf,\n FormsModule,\n MaskitoDirective,\n WaResizeObserver,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n TuiActiveZone,\n TuiFormatCardPipe,\n TuiMapperPipe,\n TuiLet,\n TuiIcon,\n TuiChevron,\n TuiAppearance,\n TuiIconPipe,\n ],\n templateUrl: './input-card-group.template.html',\n styleUrls: ['./input-card-group.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsDataListHost(TuiInputCardGroup),\n tuiAsControl(TuiInputCardGroup),\n tuiDropdownOptionsProvider({limitWidth: 'fixed'}),\n TuiHoveredService,\n ],\n hostDirectives: [\n TuiAppearance,\n TuiDropdownDirective,\n TuiWithTextfieldDropdown,\n TuiWithDropdownOpen,\n ],\n host: {\n 'data-size': 'l',\n '[attr.data-mode]': 'mode()',\n '(mousedown)': 'onMouseDown($event)',\n },\n})\nexport class TuiInputCardGroup\n extends TuiControl<TuiCard | null>\n implements TuiDataListHost<Partial<TuiCard>>\n{\n @ViewChild('inputCard')\n private readonly inputCard?: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputExpire')\n private readonly inputExpire?: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputCVC')\n private readonly inputCVC?: ElementRef<HTMLInputElement>;\n\n private expirePrefilled = false;\n private readonly paymentSystems = inject(TUI_PAYMENT_SYSTEM_ICONS);\n private readonly options = inject(TUI_INPUT_CARD_GROUP_OPTIONS);\n private readonly el = tuiInjectElement();\n private readonly hover = tuiHovered();\n private readonly focusedIn = toSignal(\n merge(\n tuiTypedFromEvent(this.el, 'focusin'),\n tuiTypedFromEvent(this.el, 'focusout'),\n ).pipe(map(() => tuiIsNativeFocusedIn(this.el))),\n {initialValue: false},\n );\n\n protected exampleTextCVC = this.options.exampleTextCVC;\n protected cvcHidden = this.options.cvcHidden;\n protected maskCVC = TUI_MASK_CVC(3);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly maskCard = TUI_MASK_CARD;\n protected readonly maskExpire = TUI_MASK_EXPIRE;\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly texts = toSignal(inject(TUI_INPUT_CARD_GROUP_TEXTS));\n protected readonly open = tuiDropdownOpen();\n\n protected readonly appearance = tuiAppearance(\n inject(TUI_TEXTFIELD_OPTIONS).appearance,\n );\n\n protected readonly state: Signal<unknown> = tuiAppearanceState(\n // eslint-disable-next-line no-nested-ternary\n computed(() => (this.disabled() ? 'disabled' : this.hover() ? 'hover' : null)),\n );\n\n protected readonly focus = tuiAppearanceFocus(\n computed(() => this.open() || this.focusedIn()),\n );\n\n protected readonly labelRaised = computed(\n () => (this.focus() && !this.readOnly()) || !!this.value()?.card,\n );\n\n protected readonly hasCleaner = computed(\n () => !!this.value()?.card && this.interactive(),\n );\n\n @Input()\n public exampleText = this.options.exampleText;\n\n @Input()\n public cardValidator: TuiBooleanHandler<string> = this.options.cardValidator;\n\n @Input()\n public icon: PolymorpheusContent = this.options.icon;\n\n @Input()\n public id = tuiInjectId();\n\n @Input()\n public autocomplete = this.options.autocomplete;\n\n @Output()\n public readonly binChange = new EventEmitter<string | null>();\n\n @Input()\n public set codeLength(length: 3 | 4) {\n this.exampleTextCVC = '0'.repeat(length);\n this.maskCVC = TUI_MASK_CVC(length);\n }\n\n public get bin(): string | null {\n return this.card.length < 6 ? null : this.card.slice(0, 6);\n }\n\n public override writeValue(value: TuiCard | null): void {\n const {bin} = this;\n\n super.writeValue(value);\n this.updateBin(bin);\n this.expirePrefilled = !!this.expire && this.cardPrefilled;\n }\n\n /** Public API for manual focus management */\n public focusCard(): void {\n this.inputCard?.nativeElement.focus({preventScroll: true});\n }\n\n public focusExpire(): void {\n this.inputExpire?.nativeElement.focus({preventScroll: true});\n }\n\n public focusCVC(): void {\n this.inputCVC?.nativeElement.focus({preventScroll: true});\n }\n\n public handleOption(option: Partial<TuiCard> | null): void {\n const {card = '', expire = '', cvc = ''} = option || {};\n const {bin} = this;\n const element =\n (!card && this.inputCard?.nativeElement) ||\n (!expire && this.inputExpire?.nativeElement) ||\n this.inputCVC?.nativeElement;\n\n this.onChange({card, expire, cvc});\n this.updateBin(bin);\n this.open.set(false);\n this.expirePrefilled = !!expire;\n\n element?.focus();\n }\n\n public clear(): void {\n this.expirePrefilled = false;\n this.onChange(null);\n this.focusCard();\n }\n\n protected get content(): PolymorpheusContent {\n const system = this.getPaymentSystem(this.card);\n\n return this.icon || (system && this.paymentSystems[system]);\n }\n\n protected get card(): string {\n return this.value()?.card || '';\n }\n\n protected get expire(): string {\n return this.value()?.expire || '';\n }\n\n protected get cvc(): string {\n return this.value()?.cvc || '';\n }\n\n protected get cardCollapsed(): boolean {\n return (\n this.isFocusable(this.card) &&\n !tuiIsNativeFocused(this.inputCard?.nativeElement)\n );\n }\n\n protected get tailLength(): number {\n return this.card.length % 4 > 0 ? 5 : 4;\n }\n\n protected get cardPrefilled(): boolean {\n return !!this.card.match(TUI_NON_DIGIT_REGEXP);\n }\n\n protected get cvcPrefilled(): boolean {\n return !!this.cvc.match(TUI_NON_DIGIT_REGEXP);\n }\n\n protected get cardFocusable(): boolean {\n return !this.cardPrefilled;\n }\n\n protected get expireFocusable(): boolean {\n return this.isFocusable(this.card) && !this.expirePrefilled;\n }\n\n protected get cvcFocusable(): boolean {\n return this.isFocusable(this.card);\n }\n\n protected get masked(): string {\n return this.cardPrefilled ? `*${this.card.slice(-4)}` : '*';\n }\n\n protected onCardChange(card: string): void {\n const {value, bin} = this;\n const parsed = card.split(' ').join('');\n\n if (value()?.card === parsed) {\n return;\n }\n\n this.updateProperty(parsed, 'card');\n this.updateBin(bin);\n\n if (this.cardValidator(this.card) && !value()?.expire && this.inputExpire) {\n this.focusExpire();\n }\n }\n\n protected onExpireChange(expire: string): void {\n this.updateProperty(expire, 'expire');\n\n if (\n Number(this.inputExpire?.nativeElement.selectionStart) === 5 // MM/YY\n ) {\n this.focusCVC();\n }\n }\n\n protected onCVCChange(cvc: string): void {\n this.updateProperty(cvc, 'cvc');\n }\n\n protected transform({offsetWidth}: HTMLSpanElement): string {\n return this.cardCollapsed ? `translate3d(${offsetWidth}px, 0, 0)` : '';\n }\n\n protected onMouseDown(event: MouseEvent): void {\n if (tuiIsElement(event.target) && tuiIsInput(event.target)) {\n return;\n }\n\n event.preventDefault();\n this.focusInput();\n }\n\n protected toggle(): void {\n this.open.set(!this.open());\n }\n\n @tuiPure\n private isFocusable(card: string): boolean {\n return this.cardValidator(card) || this.cardPrefilled;\n }\n\n @tuiPure\n private getPaymentSystem(value: string): TuiPaymentSystem | null {\n return this.options.paymentSystemHandler(value);\n }\n\n private updateBin(oldBin: string | null): void {\n const {bin} = this;\n\n if (bin !== oldBin && !this.cardPrefilled) {\n this.binChange.emit(bin);\n }\n }\n\n private updateProperty(value: string, propName: 'card' | 'cvc' | 'expire'): void {\n const {card = '', expire = '', cvc = ''} = this.value() || {};\n const newValue: TuiCard = {card, expire, cvc};\n\n newValue[propName] = value;\n\n this.onChange(newValue.expire || newValue.cvc || newValue.card ? newValue : null);\n }\n\n private focusInput(): void {\n const element =\n (this.cardFocusable && this.inputCard?.nativeElement) ||\n (this.expireFocusable && this.inputExpire?.nativeElement) ||\n this.inputCVC?.nativeElement;\n\n element?.focus();\n }\n}\n","<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 [ngModelOptions]=\"{standalone: true}\"\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 maxlength=\"5\"\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 [ngModelOptions]=\"{standalone: true}\"\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 [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cvcPrefilled ? '•••' : 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ class TuiInputExpire {
|
|
|
12
12
|
this.autocomplete = inject(TUI_INPUT_CARD_OPTIONS).autocomplete;
|
|
13
13
|
}
|
|
14
14
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputExpire, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
15
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputExpire, isStandalone: true, selector: "input[tuiInputExpire]", inputs: { autocomplete: "autocomplete" }, host: { attributes: { "inputmode": "numeric", "placeholder": "00/00", "translate": "no" }, properties: { "autocomplete": "autocomplete ? \"cc-exp\" : \"off\"" } }, hostDirectives: [{ directive: i1.MaskitoDirective }], ngImport: i0 }); }
|
|
15
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputExpire, isStandalone: true, selector: "input[tuiInputExpire]", inputs: { autocomplete: "autocomplete" }, host: { attributes: { "inputmode": "numeric", "placeholder": "00/00", "translate": "no", "maxlength": "5" }, properties: { "attr.name": "autocomplete ? \"ccexpiryyear\" : null", "autocomplete": "autocomplete ? \"cc-exp\" : \"off\"" } }, hostDirectives: [{ directive: i1.MaskitoDirective }], ngImport: i0 }); }
|
|
16
16
|
}
|
|
17
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputExpire, decorators: [{
|
|
18
18
|
type: Directive,
|
|
@@ -24,6 +24,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
24
24
|
inputmode: 'numeric',
|
|
25
25
|
placeholder: '00/00',
|
|
26
26
|
translate: 'no',
|
|
27
|
+
maxlength: '5',
|
|
28
|
+
'[attr.name]': 'autocomplete ? "ccexpiryyear" : null',
|
|
27
29
|
'[autocomplete]': 'autocomplete ? "cc-exp" : "off"',
|
|
28
30
|
},
|
|
29
31
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-commerce-components-input-expire.mjs","sources":["../../../projects/addon-commerce/components/input-expire/input-expire.directive.ts","../../../projects/addon-commerce/components/input-expire/taiga-ui-addon-commerce-components-input-expire.ts"],"sourcesContent":["import {Directive, inject, Input} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {TUI_INPUT_CARD_OPTIONS} from '@taiga-ui/addon-commerce/components/input-card';\nimport {TUI_MASK_EXPIRE} from '@taiga-ui/addon-commerce/constants';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputExpire]',\n hostDirectives: [MaskitoDirective],\n host: {\n inputmode: 'numeric',\n placeholder: '00/00',\n translate: 'no',\n '[autocomplete]': 'autocomplete ? \"cc-exp\" : \"off\"',\n },\n})\nexport class TuiInputExpire {\n protected readonly mask = tuiMaskito(TUI_MASK_EXPIRE);\n\n @Input()\n public autocomplete = inject(TUI_INPUT_CARD_OPTIONS).autocomplete;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAMA,
|
|
1
|
+
{"version":3,"file":"taiga-ui-addon-commerce-components-input-expire.mjs","sources":["../../../projects/addon-commerce/components/input-expire/input-expire.directive.ts","../../../projects/addon-commerce/components/input-expire/taiga-ui-addon-commerce-components-input-expire.ts"],"sourcesContent":["import {Directive, inject, Input} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {TUI_INPUT_CARD_OPTIONS} from '@taiga-ui/addon-commerce/components/input-card';\nimport {TUI_MASK_EXPIRE} from '@taiga-ui/addon-commerce/constants';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputExpire]',\n hostDirectives: [MaskitoDirective],\n host: {\n inputmode: 'numeric',\n placeholder: '00/00',\n translate: 'no',\n maxlength: '5',\n '[attr.name]': 'autocomplete ? \"ccexpiryyear\" : null',\n '[autocomplete]': 'autocomplete ? \"cc-exp\" : \"off\"',\n },\n})\nexport class TuiInputExpire {\n protected readonly mask = tuiMaskito(TUI_MASK_EXPIRE);\n\n @Input()\n public autocomplete = inject(TUI_INPUT_CARD_OPTIONS).autocomplete;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAMA,MAaa,cAAc,CAAA;AAb3B,IAAA,WAAA,GAAA;AAcuB,QAAA,IAAA,CAAA,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AAG/C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC,YAAY,CAAC;AACrE,KAAA;+GALY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,EAAA,IAAA,EAAA,WAAA,EAAA,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,wCAAA,EAAA,cAAA,EAAA,qCAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;oBACjC,cAAc,EAAE,CAAC,gBAAgB,CAAC;AAClC,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,SAAS,EAAE,IAAI;AACf,wBAAA,SAAS,EAAE,GAAG;AACd,wBAAA,aAAa,EAAE,sCAAsC;AACrD,wBAAA,gBAAgB,EAAE,iCAAiC;AACtD,qBAAA;AACJ,iBAAA,CAAA;8BAKU,YAAY,EAAA,CAAA;sBADlB,KAAK;;;ACtBV;;AAEG;;;;"}
|
|
@@ -21,13 +21,13 @@ class TuiThumbnailCard {
|
|
|
21
21
|
this.monoHandler = this.options.monoHandler;
|
|
22
22
|
}
|
|
23
23
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiThumbnailCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiThumbnailCard, isStandalone: true, selector: "tui-thumbnail-card", inputs: { size: "size", paymentSystem: "paymentSystem", iconStart: "iconStart", iconEnd: "iconEnd", monoHandler: "monoHandler" }, host: { properties: { "attr.data-size": "size" } }, ngImport: i0, template: "<div class=\"t-front\">\n <div\n *ngIf=\"iconStart\"\n class=\"t-left\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart\"\n />\n </div>\n <div\n *ngIf=\"iconEnd\"\n class=\"t-right\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconEnd\"\n />\n </div>\n <ng-content />\n <ng-container *ngIf=\"paymentSystem\">\n <tui-icon\n *ngIf=\"monoHandler(paymentSystem); else colored\"\n class=\"t-logo\"\n [icon]=\"options.icons[paymentSystem]\"\n />\n <ng-template #colored>\n <img\n class=\"t-logo\"\n [alt]=\"paymentSystem\"\n [src]=\"options.icons[paymentSystem] | tuiIcon\"\n />\n </ng-template>\n </ng-container>\n</div>\n<div class=\"t-back\"></div>\n", styles: [":host{position:relative;display:inline-flex;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden}:host:before{position:absolute;top:0;left:0;
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiThumbnailCard, isStandalone: true, selector: "tui-thumbnail-card", inputs: { size: "size", paymentSystem: "paymentSystem", iconStart: "iconStart", iconEnd: "iconEnd", monoHandler: "monoHandler" }, host: { properties: { "attr.data-size": "size" } }, ngImport: i0, template: "<div class=\"t-front\">\n <div\n *ngIf=\"iconStart\"\n class=\"t-left\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart\"\n />\n </div>\n <div\n *ngIf=\"iconEnd\"\n class=\"t-right\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconEnd\"\n />\n </div>\n <ng-content />\n <ng-container *ngIf=\"paymentSystem\">\n <tui-icon\n *ngIf=\"monoHandler(paymentSystem); else colored\"\n class=\"t-logo\"\n [icon]=\"options.icons[paymentSystem]\"\n />\n <ng-template #colored>\n <img\n class=\"t-logo\"\n [alt]=\"paymentSystem\"\n [src]=\"options.icons[paymentSystem] | tuiIcon\"\n />\n </ng-template>\n </ng-container>\n</div>\n<div class=\"t-back\"></div>\n", styles: [":host{position:relative;display:inline-flex;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden}:host:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\"}:host[data-size=s]{inline-size:2.5rem;block-size:1.625rem;border-radius:.25rem;font-size:0}:host[data-size=s] .t-left{transform:translate(.125rem,.125rem) scale(.625)}:host[data-size=s] .t-right{display:none}:host[data-size=s] .t-logo{bottom:-.375rem;transform:scale(.55)}:host[data-size=m]{inline-size:3rem;block-size:2rem;border-radius:.3125rem;text-indent:.1875rem;font:normal .5625rem/.875rem var(--tui-font-text)}:host[data-size=m] .t-left{transform:translate(.1875rem,.25rem) scale(.75)}:host[data-size=m] .t-right{transform:translate(-.1875rem,.1875rem) scale(.875)}:host[data-size=m] .t-right .t-icon{transform:scale(.714)}:host[data-size=m] .t-logo{bottom:-.3125rem;transform:scale(.55)}:host[data-size=l]{inline-size:3.375rem;block-size:2.25rem;border-radius:.375rem;text-indent:.3125rem;font:normal .625rem/1.125rem var(--tui-font-text)}:host[data-size=l] .t-left{transform:translate(.1875rem,.1875rem)}:host[data-size=l] .t-right{transform:translate(-.1875rem,.1875rem)}:host[data-size=l] .t-logo{bottom:-.1875rem;transform:scale(.75)}.t-left,.t-right{position:absolute;top:0;display:flex}.t-left{left:0;transform-origin:top left}.t-right{right:0;transform-origin:top right}.t-right:before{content:\"\";position:absolute;top:0;left:0;inline-size:100%;block-size:100%;border-radius:100%;background:currentColor;opacity:.35}.t-right .t-icon{color:#fff;transform:scale(.625)}.t-logo{position:absolute;right:.1875rem;inline-size:1.5rem;block-size:1.5rem;transform-origin:right}.t-icon{inline-size:1rem;block-size:1rem}.t-front{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;align-items:flex-end;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-shadow:inset 0 0 0 1px var(--tui-background-neutral-1);border-radius:inherit}.t-back{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:rotateY(180deg) translateZ(1px);background:#b0b0b0;border-radius:inherit}.t-back:after{position:absolute;left:0;right:0;content:\"\";top:20%;bottom:60%;background:#959595}\n"], dependencies: [{ kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TuiIconPipe, name: "tuiIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25
25
|
}
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiThumbnailCard, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
28
|
args: [{ standalone: true, selector: 'tui-thumbnail-card', imports: [TuiIcon, NgIf, TuiIconPipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
29
29
|
'[attr.data-size]': 'size',
|
|
30
|
-
}, template: "<div class=\"t-front\">\n <div\n *ngIf=\"iconStart\"\n class=\"t-left\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart\"\n />\n </div>\n <div\n *ngIf=\"iconEnd\"\n class=\"t-right\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconEnd\"\n />\n </div>\n <ng-content />\n <ng-container *ngIf=\"paymentSystem\">\n <tui-icon\n *ngIf=\"monoHandler(paymentSystem); else colored\"\n class=\"t-logo\"\n [icon]=\"options.icons[paymentSystem]\"\n />\n <ng-template #colored>\n <img\n class=\"t-logo\"\n [alt]=\"paymentSystem\"\n [src]=\"options.icons[paymentSystem] | tuiIcon\"\n />\n </ng-template>\n </ng-container>\n</div>\n<div class=\"t-back\"></div>\n", styles: [":host{position:relative;display:inline-flex;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden}:host:before{position:absolute;top:0;left:0;
|
|
30
|
+
}, template: "<div class=\"t-front\">\n <div\n *ngIf=\"iconStart\"\n class=\"t-left\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart\"\n />\n </div>\n <div\n *ngIf=\"iconEnd\"\n class=\"t-right\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconEnd\"\n />\n </div>\n <ng-content />\n <ng-container *ngIf=\"paymentSystem\">\n <tui-icon\n *ngIf=\"monoHandler(paymentSystem); else colored\"\n class=\"t-logo\"\n [icon]=\"options.icons[paymentSystem]\"\n />\n <ng-template #colored>\n <img\n class=\"t-logo\"\n [alt]=\"paymentSystem\"\n [src]=\"options.icons[paymentSystem] | tuiIcon\"\n />\n </ng-template>\n </ng-container>\n</div>\n<div class=\"t-back\"></div>\n", styles: [":host{position:relative;display:inline-flex;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden}:host:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\"}:host[data-size=s]{inline-size:2.5rem;block-size:1.625rem;border-radius:.25rem;font-size:0}:host[data-size=s] .t-left{transform:translate(.125rem,.125rem) scale(.625)}:host[data-size=s] .t-right{display:none}:host[data-size=s] .t-logo{bottom:-.375rem;transform:scale(.55)}:host[data-size=m]{inline-size:3rem;block-size:2rem;border-radius:.3125rem;text-indent:.1875rem;font:normal .5625rem/.875rem var(--tui-font-text)}:host[data-size=m] .t-left{transform:translate(.1875rem,.25rem) scale(.75)}:host[data-size=m] .t-right{transform:translate(-.1875rem,.1875rem) scale(.875)}:host[data-size=m] .t-right .t-icon{transform:scale(.714)}:host[data-size=m] .t-logo{bottom:-.3125rem;transform:scale(.55)}:host[data-size=l]{inline-size:3.375rem;block-size:2.25rem;border-radius:.375rem;text-indent:.3125rem;font:normal .625rem/1.125rem var(--tui-font-text)}:host[data-size=l] .t-left{transform:translate(.1875rem,.1875rem)}:host[data-size=l] .t-right{transform:translate(-.1875rem,.1875rem)}:host[data-size=l] .t-logo{bottom:-.1875rem;transform:scale(.75)}.t-left,.t-right{position:absolute;top:0;display:flex}.t-left{left:0;transform-origin:top left}.t-right{right:0;transform-origin:top right}.t-right:before{content:\"\";position:absolute;top:0;left:0;inline-size:100%;block-size:100%;border-radius:100%;background:currentColor;opacity:.35}.t-right .t-icon{color:#fff;transform:scale(.625)}.t-logo{position:absolute;right:.1875rem;inline-size:1.5rem;block-size:1.5rem;transform-origin:right}.t-icon{inline-size:1rem;block-size:1rem}.t-front{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;align-items:flex-end;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-shadow:inset 0 0 0 1px var(--tui-background-neutral-1);border-radius:inherit}.t-back{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:rotateY(180deg) translateZ(1px);background:#b0b0b0;border-radius:inherit}.t-back:after{position:absolute;left:0;right:0;content:\"\";top:20%;bottom:60%;background:#959595}\n"] }]
|
|
31
31
|
}], propDecorators: { size: [{
|
|
32
32
|
type: Input
|
|
33
33
|
}], paymentSystem: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-commerce-components-thumbnail-card.mjs","sources":["../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.options.ts","../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.component.ts","../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.template.html","../../../projects/addon-commerce/components/thumbnail-card/taiga-ui-addon-commerce-components-thumbnail-card.ts"],"sourcesContent":["import {inject} from '@angular/core';\nimport {TUI_PAYMENT_SYSTEM_ICONS} from '@taiga-ui/addon-commerce/tokens';\nimport type {TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiThumbnailCardOptions {\n readonly size: TuiSizeL | TuiSizeS;\n readonly icons: Record<TuiPaymentSystem, string>;\n readonly monoHandler: TuiBooleanHandler<TuiPaymentSystem>;\n}\n\nexport const TUI_THUMBNAIL_CARD_OPTIONS =\n tuiCreateTokenFromFactory<TuiThumbnailCardOptions>(() => ({\n icons: inject(TUI_PAYMENT_SYSTEM_ICONS),\n size: 'm',\n monoHandler: (ps) => ps === 'mir' || ps === 'visa' || ps === 'electron',\n }));\n","import {NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject, Input} from '@angular/core';\nimport type {TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {TuiIcon, TuiIconPipe} from '@taiga-ui/core/components/icon';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\n\nimport {TUI_THUMBNAIL_CARD_OPTIONS} from './thumbnail-card.options';\n\n@Component({\n standalone: true,\n selector: 'tui-thumbnail-card',\n imports: [TuiIcon, NgIf, TuiIconPipe],\n templateUrl: './thumbnail-card.template.html',\n styleUrls: ['./thumbnail-card.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiThumbnailCard {\n protected readonly options = inject(TUI_THUMBNAIL_CARD_OPTIONS);\n\n @Input()\n public size: TuiSizeL | TuiSizeS = this.options.size;\n\n @Input()\n public paymentSystem: TuiPaymentSystem | null = null;\n\n @Input()\n public iconStart = '';\n\n @Input()\n public iconEnd = '';\n\n @Input()\n public monoHandler: TuiBooleanHandler<TuiPaymentSystem> = this.options.monoHandler;\n}\n","<div class=\"t-front\">\n <div\n *ngIf=\"iconStart\"\n class=\"t-left\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart\"\n />\n </div>\n <div\n *ngIf=\"iconEnd\"\n class=\"t-right\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconEnd\"\n />\n </div>\n <ng-content />\n <ng-container *ngIf=\"paymentSystem\">\n <tui-icon\n *ngIf=\"monoHandler(paymentSystem); else colored\"\n class=\"t-logo\"\n [icon]=\"options.icons[paymentSystem]\"\n />\n <ng-template #colored>\n <img\n class=\"t-logo\"\n [alt]=\"paymentSystem\"\n [src]=\"options.icons[paymentSystem] | tuiIcon\"\n />\n </ng-template>\n </ng-container>\n</div>\n<div class=\"t-back\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAaa,0BAA0B,GACnC,yBAAyB,CAA0B,OAAO;AACtD,IAAA,KAAK,EAAE,MAAM,CAAC,wBAAwB,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,UAAU;AAC1E,CAAA,CAAC;;ACTN,MAWa,gBAAgB,CAAA;AAX7B,IAAA,WAAA,GAAA;AAYuB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAGzD,QAAA,IAAA,CAAA,IAAI,GAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAG9C,IAAa,CAAA,aAAA,GAA4B,IAAI,CAAC;QAG9C,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;QAGf,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AAGb,QAAA,IAAA,CAAA,WAAW,GAAwC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACtF,KAAA;+GAjBY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,oQCpB7B,k5BAoCA,EAAA,MAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"taiga-ui-addon-commerce-components-thumbnail-card.mjs","sources":["../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.options.ts","../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.component.ts","../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.template.html","../../../projects/addon-commerce/components/thumbnail-card/taiga-ui-addon-commerce-components-thumbnail-card.ts"],"sourcesContent":["import {inject} from '@angular/core';\nimport {TUI_PAYMENT_SYSTEM_ICONS} from '@taiga-ui/addon-commerce/tokens';\nimport type {TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiThumbnailCardOptions {\n readonly size: TuiSizeL | TuiSizeS;\n readonly icons: Record<TuiPaymentSystem, string>;\n readonly monoHandler: TuiBooleanHandler<TuiPaymentSystem>;\n}\n\nexport const TUI_THUMBNAIL_CARD_OPTIONS =\n tuiCreateTokenFromFactory<TuiThumbnailCardOptions>(() => ({\n icons: inject(TUI_PAYMENT_SYSTEM_ICONS),\n size: 'm',\n monoHandler: (ps) => ps === 'mir' || ps === 'visa' || ps === 'electron',\n }));\n","import {NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject, Input} from '@angular/core';\nimport type {TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {TuiIcon, TuiIconPipe} from '@taiga-ui/core/components/icon';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\n\nimport {TUI_THUMBNAIL_CARD_OPTIONS} from './thumbnail-card.options';\n\n@Component({\n standalone: true,\n selector: 'tui-thumbnail-card',\n imports: [TuiIcon, NgIf, TuiIconPipe],\n templateUrl: './thumbnail-card.template.html',\n styleUrls: ['./thumbnail-card.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiThumbnailCard {\n protected readonly options = inject(TUI_THUMBNAIL_CARD_OPTIONS);\n\n @Input()\n public size: TuiSizeL | TuiSizeS = this.options.size;\n\n @Input()\n public paymentSystem: TuiPaymentSystem | null = null;\n\n @Input()\n public iconStart = '';\n\n @Input()\n public iconEnd = '';\n\n @Input()\n public monoHandler: TuiBooleanHandler<TuiPaymentSystem> = this.options.monoHandler;\n}\n","<div class=\"t-front\">\n <div\n *ngIf=\"iconStart\"\n class=\"t-left\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart\"\n />\n </div>\n <div\n *ngIf=\"iconEnd\"\n class=\"t-right\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconEnd\"\n />\n </div>\n <ng-content />\n <ng-container *ngIf=\"paymentSystem\">\n <tui-icon\n *ngIf=\"monoHandler(paymentSystem); else colored\"\n class=\"t-logo\"\n [icon]=\"options.icons[paymentSystem]\"\n />\n <ng-template #colored>\n <img\n class=\"t-logo\"\n [alt]=\"paymentSystem\"\n [src]=\"options.icons[paymentSystem] | tuiIcon\"\n />\n </ng-template>\n </ng-container>\n</div>\n<div class=\"t-back\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAaa,0BAA0B,GACnC,yBAAyB,CAA0B,OAAO;AACtD,IAAA,KAAK,EAAE,MAAM,CAAC,wBAAwB,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,UAAU;AAC1E,CAAA,CAAC;;ACTN,MAWa,gBAAgB,CAAA;AAX7B,IAAA,WAAA,GAAA;AAYuB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAGzD,QAAA,IAAA,CAAA,IAAI,GAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAG9C,IAAa,CAAA,aAAA,GAA4B,IAAI,CAAC;QAG9C,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;QAGf,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AAGb,QAAA,IAAA,CAAA,WAAW,GAAwC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACtF,KAAA;+GAjBY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,oQCpB7B,k5BAoCA,EAAA,MAAA,EAAA,CAAA,0wEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxBc,OAAO,EAAE,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,wFAAE,WAAW,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAQ3B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,oBAAoB,EACrB,OAAA,EAAA,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,EAAA,eAAA,EAGpB,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,kBAAkB,EAAE,MAAM;AAC7B,qBAAA,EAAA,QAAA,EAAA,k5BAAA,EAAA,MAAA,EAAA,CAAA,0wEAAA,CAAA,EAAA,CAAA;8BAMM,IAAI,EAAA,CAAA;sBADV,KAAK;gBAIC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAIC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAIC,WAAW,EAAA,CAAA;sBADjB,KAAK;;;AEnCV;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taiga-ui/addon-commerce",
|
|
3
|
-
"version": "4.4.1-canary.
|
|
3
|
+
"version": "4.4.1-canary.ce69ccc",
|
|
4
4
|
"description": "Extension package for Taiga UI related to commerce, payment systems, currencies etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"@maskito/core": "^3.0.1",
|
|
22
22
|
"@maskito/kit": "^3.0.1",
|
|
23
23
|
"@ng-web-apis/common": "^4.2.1",
|
|
24
|
-
"@taiga-ui/cdk": "^4.4.1-canary.
|
|
25
|
-
"@taiga-ui/core": "^4.4.1-canary.
|
|
26
|
-
"@taiga-ui/i18n": "^4.4.1-canary.
|
|
27
|
-
"@taiga-ui/kit": "^4.4.1-canary.
|
|
24
|
+
"@taiga-ui/cdk": "^4.4.1-canary.ce69ccc",
|
|
25
|
+
"@taiga-ui/core": "^4.4.1-canary.ce69ccc",
|
|
26
|
+
"@taiga-ui/i18n": "^4.4.1-canary.ce69ccc",
|
|
27
|
+
"@taiga-ui/kit": "^4.4.1-canary.ce69ccc",
|
|
28
28
|
"@taiga-ui/polymorpheus": "^4.6.4",
|
|
29
29
|
"rxjs": ">=7.0.0"
|
|
30
30
|
},
|