@taiga-ui/kit 3.35.0-dev.main-a0208cf → 3.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/bundles/taiga-ui-kit-components-input-copy.umd.js +39 -17
  2. package/bundles/taiga-ui-kit-components-input-copy.umd.js.map +1 -1
  3. package/bundles/taiga-ui-kit-components-input-files.umd.js +2 -2
  4. package/bundles/taiga-ui-kit-components-input-files.umd.js.map +1 -1
  5. package/bundles/taiga-ui-kit-components-input-inline.umd.js +10 -2
  6. package/bundles/taiga-ui-kit-components-input-inline.umd.js.map +1 -1
  7. package/bundles/taiga-ui-kit-components-input-phone.umd.js +15 -47
  8. package/bundles/taiga-ui-kit-components-input-phone.umd.js.map +1 -1
  9. package/components/input-copy/index.d.ts +1 -0
  10. package/components/input-copy/input-copy.component.d.ts +9 -7
  11. package/components/input-copy/input-copy.options.d.ts +13 -0
  12. package/components/input-inline/input-inline.component.d.ts +1 -1
  13. package/components/input-phone/input-phone.component.d.ts +2 -6
  14. package/esm2015/components/input-copy/index.js +2 -1
  15. package/esm2015/components/input-copy/input-copy.component.js +18 -15
  16. package/esm2015/components/input-copy/input-copy.options.js +15 -0
  17. package/esm2015/components/input-files/input-files.directive.js +4 -4
  18. package/esm2015/components/input-inline/input-inline.component.js +11 -3
  19. package/esm2015/components/input-phone/input-phone.component.js +12 -40
  20. package/fesm2015/taiga-ui-kit-components-input-copy.js +31 -15
  21. package/fesm2015/taiga-ui-kit-components-input-copy.js.map +1 -1
  22. package/fesm2015/taiga-ui-kit-components-input-files.js +3 -3
  23. package/fesm2015/taiga-ui-kit-components-input-files.js.map +1 -1
  24. package/fesm2015/taiga-ui-kit-components-input-inline.js +10 -2
  25. package/fesm2015/taiga-ui-kit-components-input-inline.js.map +1 -1
  26. package/fesm2015/taiga-ui-kit-components-input-phone.js +11 -39
  27. package/fesm2015/taiga-ui-kit-components-input-phone.js.map +1 -1
  28. package/package.json +4 -4
@@ -2,7 +2,7 @@ import { __decorate } from 'tslib';
2
2
  import * as i3 from '@angular/common';
3
3
  import { DOCUMENT, CommonModule } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
- import { ChangeDetectorRef, Component, ChangeDetectionStrategy, Optional, Self, Inject, ViewChild, Input, HostBinding, Directive, NgModule } from '@angular/core';
5
+ import { InjectionToken, ChangeDetectorRef, Component, ChangeDetectionStrategy, Optional, Self, Inject, ViewChild, Input, Directive, NgModule } from '@angular/core';
6
6
  import * as i4 from '@angular/forms';
7
7
  import { NgControl } from '@angular/forms';
8
8
  import { AbstractTuiControl, tuiAsFocusableItemAccessor, tuiAsControl, tuiPure } from '@taiga-ui/cdk';
@@ -16,18 +16,31 @@ import { switchMap, map, startWith } from 'rxjs/operators';
16
16
  import * as i2 from '@tinkoff/ng-polymorpheus';
17
17
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
18
18
 
19
+ const TUI_INPUT_COPY_DEFAULT_OPTIONS = {
20
+ successMessage: ``,
21
+ messageDirection: `bottom-left`,
22
+ messageAppearance: ``,
23
+ icon: ({ $implicit }) => ($implicit === `s` ? `tuiIconCopy` : `tuiIconCopyLarge`),
24
+ };
25
+ const TUI_INPUT_COPY_OPTIONS = new InjectionToken(`[TUI_INPUT_COPY_OPTIONS]`, {
26
+ factory: () => TUI_INPUT_COPY_DEFAULT_OPTIONS,
27
+ });
28
+ const tuiInputCopyOptionsProvider = (options) => ({
29
+ provide: TUI_INPUT_COPY_OPTIONS,
30
+ useValue: Object.assign(Object.assign({}, TUI_INPUT_COPY_DEFAULT_OPTIONS), options),
31
+ });
32
+
19
33
  class TuiInputCopyComponent extends AbstractTuiControl {
20
- constructor(control, cdr, doc, textfieldSize, copyTexts$) {
34
+ constructor(control, cdr, doc, textfieldSize, copyTexts$, options) {
21
35
  super(control, cdr);
22
36
  this.doc = doc;
23
37
  this.textfieldSize = textfieldSize;
24
38
  this.copyTexts$ = copyTexts$;
39
+ this.options = options;
25
40
  this.copy$ = new Subject();
26
- this.messageDirection = 'bottom-left';
27
- this.messageAppearance = '';
28
- }
29
- get hasValue() {
30
- return !!this.value;
41
+ this.successMessage = this.options.successMessage;
42
+ this.messageDirection = this.options.messageDirection;
43
+ this.messageAppearance = this.options.messageAppearance;
31
44
  }
32
45
  get hintText$() {
33
46
  return this.copyTexts$.pipe(switchMap(texts => this.copy$.pipe(switchMap(() => merge(of(this.successMessage || texts[1]), timer(3000).pipe(map(() => texts[0])))), startWith(texts[0]))));
@@ -40,8 +53,11 @@ class TuiInputCopyComponent extends AbstractTuiControl {
40
53
  get focused() {
41
54
  return !!this.textfield && this.textfield.focused;
42
55
  }
56
+ get size() {
57
+ return this.textfieldSize.size;
58
+ }
43
59
  get icon() {
44
- return this.textfieldSize.size === 's' ? 'tuiIconCopy' : 'tuiIconCopyLarge';
60
+ return this.options.icon;
45
61
  }
46
62
  onValueChange(value) {
47
63
  this.value = value;
@@ -62,12 +78,12 @@ class TuiInputCopyComponent extends AbstractTuiControl {
62
78
  return '';
63
79
  }
64
80
  }
65
- TuiInputCopyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputCopyComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: DOCUMENT }, { token: TUI_TEXTFIELD_SIZE }, { token: TUI_COPY_TEXTS }], target: i0.ɵɵFactoryTarget.Component });
66
- TuiInputCopyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputCopyComponent, selector: "tui-input-copy", inputs: { successMessage: "successMessage", messageDirection: "messageDirection", messageAppearance: "messageAppearance" }, host: { properties: { "class._has-value": "this.hasValue" } }, providers: [
81
+ TuiInputCopyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputCopyComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: DOCUMENT }, { token: TUI_TEXTFIELD_SIZE }, { token: TUI_COPY_TEXTS }, { token: TUI_INPUT_COPY_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
82
+ TuiInputCopyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputCopyComponent, selector: "tui-input-copy", inputs: { successMessage: "successMessage", messageDirection: "messageDirection", messageAppearance: "messageAppearance" }, providers: [
67
83
  TUI_VALUE_ACCESSOR_PROVIDER,
68
84
  tuiAsFocusableItemAccessor(TuiInputCopyComponent),
69
85
  tuiAsControl(TuiInputCopyComponent),
70
- ], viewQueries: [{ propertyName: "textfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-primitive-textfield\n class=\"t-textfield\"\n [tuiTextfieldIcon]=\"!disabled ? iconContent : ''\"\n [pseudoFocus]=\"pseudoFocus\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoActive]=\"pseudoActive\"\n [invalid]=\"computedInvalid\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [(value)]=\"value\"\n (focusedChange)=\"onFocused($event)\"\n>\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n</tui-primitive-textfield>\n\n<ng-template #iconContent>\n <tui-svg\n tuiWrapper\n appearance=\"icon\"\n automation-id=\"tui-copy__icon\"\n class=\"t-icon\"\n [tuiHint]=\"hint\"\n [tuiHintDirection]=\"messageDirection\"\n [tuiHintAppearance]=\"messageAppearance\"\n [src]=\"icon\"\n (click)=\"copy()\"\n ></tui-svg>\n</ng-template>\n\n<ng-template #hint>\n <ng-container *polymorpheusOutlet=\"hintText$ | async as text\">\n {{ text }}\n </ng-container>\n</ng-template>\n", styles: [":host{display:block;border-radius:var(--tui-radius-m);text-align:left}.t-icon{position:relative;cursor:pointer;pointer-events:auto;color:var(--tui-base-06)}:host:not(._has-value) .t-icon{pointer-events:none;opacity:var(--tui-disabled-opacity)}.t-textfield{border-radius:inherit;text-align:inherit}\n"], components: [{ type: i1.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "filler", "iconCleaner", "readOnly", "invalid", "disabled", "prefix", "postfix", "value"], outputs: ["valueChange"] }, { type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }], directives: [{ type: i1.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { type: i1.TuiTextfieldIconDirective, selector: "[tuiTextfieldIcon]", inputs: ["tuiTextfieldIcon"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { type: i1.TuiHintDriverDirective, selector: "[tuiHint]" }, { type: i1.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { type: i1.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }, { type: i2.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
86
+ ], viewQueries: [{ propertyName: "textfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-primitive-textfield\n class=\"t-textfield\"\n [tuiTextfieldIcon]=\"!disabled ? iconContent : ''\"\n [pseudoFocus]=\"pseudoFocus\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoActive]=\"pseudoActive\"\n [invalid]=\"computedInvalid\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [(value)]=\"value\"\n (focusedChange)=\"onFocused($event)\"\n>\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n</tui-primitive-textfield>\n\n<ng-template #iconContent>\n <tui-svg\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n tuiWrapper\n appearance=\"icon\"\n automation-id=\"tui-copy__icon\"\n class=\"t-icon\"\n [disabled]=\"!value\"\n [tuiHint]=\"hint\"\n [tuiHintDirection]=\"messageDirection\"\n [tuiHintAppearance]=\"messageAppearance\"\n [src]=\"src\"\n (click)=\"copy()\"\n ></tui-svg>\n</ng-template>\n\n<ng-template #hint>\n <ng-container *polymorpheusOutlet=\"hintText$ | async as text\">\n {{ text }}\n </ng-container>\n</ng-template>\n", styles: [":host{display:block;border-radius:var(--tui-radius-m);text-align:left}.t-icon{position:relative;cursor:pointer;pointer-events:auto;color:var(--tui-base-06)}.t-textfield{border-radius:inherit;text-align:inherit}\n"], components: [{ type: i1.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "filler", "iconCleaner", "readOnly", "invalid", "disabled", "prefix", "postfix", "value"], outputs: ["valueChange"] }, { type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }], directives: [{ type: i1.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { type: i1.TuiTextfieldIconDirective, selector: "[tuiTextfieldIcon]", inputs: ["tuiTextfieldIcon"] }, { type: i2.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { type: i1.TuiHintDriverDirective, selector: "[tuiHint]" }, { type: i1.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { type: i1.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
87
  __decorate([
72
88
  tuiPure
73
89
  ], TuiInputCopyComponent.prototype, "hintText$", null);
@@ -103,6 +119,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
103
119
  }] }, { type: i5.Observable, decorators: [{
104
120
  type: Inject,
105
121
  args: [TUI_COPY_TEXTS]
122
+ }] }, { type: undefined, decorators: [{
123
+ type: Inject,
124
+ args: [TUI_INPUT_COPY_OPTIONS]
106
125
  }] }]; }, propDecorators: { textfield: [{
107
126
  type: ViewChild,
108
127
  args: [TuiPrimitiveTextfieldComponent]
@@ -112,9 +131,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
112
131
  type: Input
113
132
  }], messageAppearance: [{
114
133
  type: Input
115
- }], hasValue: [{
116
- type: HostBinding,
117
- args: ['class._has-value']
118
134
  }], hintText$: [] } });
119
135
 
120
136
  class TuiInputCopyDirective extends AbstractTuiTextfieldHost {
@@ -175,5 +191,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
175
191
  * Generated bundle index. Do not edit.
176
192
  */
177
193
 
178
- export { TuiInputCopyComponent, TuiInputCopyDirective, TuiInputCopyModule };
194
+ export { TUI_INPUT_COPY_DEFAULT_OPTIONS, TUI_INPUT_COPY_OPTIONS, TuiInputCopyComponent, TuiInputCopyDirective, TuiInputCopyModule, tuiInputCopyOptionsProvider };
179
195
  //# sourceMappingURL=taiga-ui-kit-components-input-copy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-copy.js","sources":["../../../projects/kit/components/input-copy/input-copy.component.ts","../../../projects/kit/components/input-copy/input-copy.template.html","../../../projects/kit/components/input-copy/input-copy.directive.ts","../../../projects/kit/components/input-copy/input-copy.module.ts","../../../projects/kit/components/input-copy/taiga-ui-kit-components-input-copy.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n tuiAsControl,\n tuiAsFocusableItemAccessor,\n TuiFocusableElementAccessor,\n TuiNativeFocusableElement,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n TUI_TEXTFIELD_SIZE,\n TuiHintDirection,\n TuiPrimitiveTextfieldComponent,\n TuiTextfieldSizeDirective,\n} from '@taiga-ui/core';\nimport {TUI_VALUE_ACCESSOR_PROVIDER} from '@taiga-ui/kit/providers';\nimport {TUI_COPY_TEXTS} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {merge, Observable, of, Subject, timer} from 'rxjs';\nimport {map, startWith, switchMap} from 'rxjs/operators';\n\n@Component({\n selector: 'tui-input-copy',\n templateUrl: './input-copy.template.html',\n styleUrls: ['./input-copy.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TUI_VALUE_ACCESSOR_PROVIDER,\n tuiAsFocusableItemAccessor(TuiInputCopyComponent),\n tuiAsControl(TuiInputCopyComponent),\n ],\n})\nexport class TuiInputCopyComponent\n extends AbstractTuiControl<string>\n implements TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n private readonly copy$ = new Subject<void>();\n\n @Input()\n successMessage: PolymorpheusContent;\n\n @Input()\n messageDirection: TuiHintDirection = 'bottom-left';\n\n @Input()\n messageAppearance = '';\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) private readonly doc: Document,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n @Inject(TUI_COPY_TEXTS) private readonly copyTexts$: Observable<[string, string]>,\n ) {\n super(control, cdr);\n }\n\n @HostBinding('class._has-value')\n get hasValue(): boolean {\n return !!this.value;\n }\n\n @tuiPure\n get hintText$(): Observable<PolymorpheusContent> {\n return this.copyTexts$.pipe(\n switchMap(texts =>\n this.copy$.pipe(\n switchMap(() =>\n merge(\n of(this.successMessage || texts[1]),\n timer(3000).pipe(map(() => texts[0])),\n ),\n ),\n startWith(texts[0]),\n ),\n ),\n );\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement | null {\n return this.computedDisabled || !this.textfield\n ? null\n : this.textfield.nativeFocusableElement;\n }\n\n get focused(): boolean {\n return !!this.textfield && this.textfield.focused;\n }\n\n get icon(): string {\n return this.textfieldSize.size === 's' ? 'tuiIconCopy' : 'tuiIconCopyLarge';\n }\n\n onValueChange(value: string): void {\n this.value = value;\n }\n\n onFocused(focused: boolean): void {\n this.updateFocused(focused);\n }\n\n copy(): void {\n if (!this.textfield?.nativeFocusableElement) {\n return;\n }\n\n this.textfield.nativeFocusableElement.select();\n this.doc.execCommand('copy');\n this.copy$.next();\n }\n\n protected getFallbackValue(): string {\n return '';\n }\n}\n","<tui-primitive-textfield\n class=\"t-textfield\"\n [tuiTextfieldIcon]=\"!disabled ? iconContent : ''\"\n [pseudoFocus]=\"pseudoFocus\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoActive]=\"pseudoActive\"\n [invalid]=\"computedInvalid\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [(value)]=\"value\"\n (focusedChange)=\"onFocused($event)\"\n>\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n</tui-primitive-textfield>\n\n<ng-template #iconContent>\n <tui-svg\n tuiWrapper\n appearance=\"icon\"\n automation-id=\"tui-copy__icon\"\n class=\"t-icon\"\n [tuiHint]=\"hint\"\n [tuiHintDirection]=\"messageDirection\"\n [tuiHintAppearance]=\"messageAppearance\"\n [src]=\"icon\"\n (click)=\"copy()\"\n ></tui-svg>\n</ng-template>\n\n<ng-template #hint>\n <ng-container *polymorpheusOutlet=\"hintText$ | async as text\">\n {{ text }}\n </ng-container>\n</ng-template>\n","import {Directive} from '@angular/core';\nimport {AbstractTuiTextfieldHost, tuiAsTextfieldHost} from '@taiga-ui/core';\n\nimport {TuiInputCopyComponent} from './input-copy.component';\n\n@Directive({\n selector: 'tui-input-copy',\n providers: [tuiAsTextfieldHost(TuiInputCopyDirective)],\n})\nexport class TuiInputCopyDirective extends AbstractTuiTextfieldHost<TuiInputCopyComponent> {\n onValueChange(value: string): void {\n this.host.onValueChange(value);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiAlertModule,\n TuiHintModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiTextfieldComponent,\n TuiTextfieldControllerModule,\n TuiWrapperModule,\n} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiInputCopyComponent} from './input-copy.component';\nimport {TuiInputCopyDirective} from './input-copy.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiWrapperModule,\n TuiSvgModule,\n TuiHintModule,\n TuiPrimitiveTextfieldModule,\n TuiAlertModule,\n TuiTextfieldControllerModule,\n ],\n declarations: [TuiInputCopyComponent, TuiInputCopyDirective],\n exports: [TuiInputCopyComponent, TuiInputCopyDirective, TuiTextfieldComponent],\n})\nexport class TuiInputCopyModule {}\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-kit-components-input-copy.js","sources":["../../../projects/kit/components/input-copy/input-copy.options.ts","../../../projects/kit/components/input-copy/input-copy.component.ts","../../../projects/kit/components/input-copy/input-copy.template.html","../../../projects/kit/components/input-copy/input-copy.directive.ts","../../../projects/kit/components/input-copy/input-copy.module.ts","../../../projects/kit/components/input-copy/taiga-ui-kit-components-input-copy.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {TuiHintDirection, TuiSizeL, TuiSizeS} from '@taiga-ui/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiInputCopyOptions {\n readonly successMessage: PolymorpheusContent;\n readonly messageDirection: TuiHintDirection;\n readonly messageAppearance: string;\n readonly icon: PolymorpheusContent<TuiContextWithImplicit<TuiSizeL | TuiSizeS>>;\n}\n\nexport const TUI_INPUT_COPY_DEFAULT_OPTIONS: TuiInputCopyOptions = {\n successMessage: ``,\n messageDirection: `bottom-left`,\n messageAppearance: ``,\n icon: ({$implicit}) => ($implicit === `s` ? `tuiIconCopy` : `tuiIconCopyLarge`),\n};\n\nexport const TUI_INPUT_COPY_OPTIONS = new InjectionToken<TuiInputCopyOptions>(\n `[TUI_INPUT_COPY_OPTIONS]`,\n {\n factory: () => TUI_INPUT_COPY_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiInputCopyOptionsProvider: (\n options: Partial<TuiInputCopyOptions>,\n) => ValueProvider = (options: Partial<TuiInputCopyOptions>) => ({\n provide: TUI_INPUT_COPY_OPTIONS,\n useValue: {...TUI_INPUT_COPY_DEFAULT_OPTIONS, ...options},\n});\n","import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n tuiAsControl,\n tuiAsFocusableItemAccessor,\n TuiFocusableElementAccessor,\n TuiNativeFocusableElement,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n TUI_TEXTFIELD_SIZE,\n TuiPrimitiveTextfieldComponent,\n TuiSizeL,\n TuiSizeS,\n TuiTextfieldSizeDirective,\n} from '@taiga-ui/core';\nimport {TUI_VALUE_ACCESSOR_PROVIDER} from '@taiga-ui/kit/providers';\nimport {TUI_COPY_TEXTS} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {merge, Observable, of, Subject, timer} from 'rxjs';\nimport {map, startWith, switchMap} from 'rxjs/operators';\n\nimport {TUI_INPUT_COPY_OPTIONS, TuiInputCopyOptions} from './input-copy.options';\n\n@Component({\n selector: 'tui-input-copy',\n templateUrl: './input-copy.template.html',\n styleUrls: ['./input-copy.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TUI_VALUE_ACCESSOR_PROVIDER,\n tuiAsFocusableItemAccessor(TuiInputCopyComponent),\n tuiAsControl(TuiInputCopyComponent),\n ],\n})\nexport class TuiInputCopyComponent\n extends AbstractTuiControl<string>\n implements TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n private readonly copy$ = new Subject<void>();\n\n @Input()\n successMessage = this.options.successMessage;\n\n @Input()\n messageDirection = this.options.messageDirection;\n\n @Input()\n messageAppearance = this.options.messageAppearance;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) private readonly doc: Document,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n @Inject(TUI_COPY_TEXTS) private readonly copyTexts$: Observable<[string, string]>,\n @Inject(TUI_INPUT_COPY_OPTIONS) private readonly options: TuiInputCopyOptions,\n ) {\n super(control, cdr);\n }\n\n @tuiPure\n get hintText$(): Observable<PolymorpheusContent> {\n return this.copyTexts$.pipe(\n switchMap(texts =>\n this.copy$.pipe(\n switchMap(() =>\n merge(\n of(this.successMessage || texts[1]),\n timer(3000).pipe(map(() => texts[0])),\n ),\n ),\n startWith(texts[0]),\n ),\n ),\n );\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement | null {\n return this.computedDisabled || !this.textfield\n ? null\n : this.textfield.nativeFocusableElement;\n }\n\n get focused(): boolean {\n return !!this.textfield && this.textfield.focused;\n }\n\n get size(): TuiSizeL | TuiSizeS {\n return this.textfieldSize.size;\n }\n\n get icon(): TuiInputCopyOptions['icon'] {\n return this.options.icon;\n }\n\n onValueChange(value: string): void {\n this.value = value;\n }\n\n onFocused(focused: boolean): void {\n this.updateFocused(focused);\n }\n\n copy(): void {\n if (!this.textfield?.nativeFocusableElement) {\n return;\n }\n\n this.textfield.nativeFocusableElement.select();\n this.doc.execCommand('copy');\n this.copy$.next();\n }\n\n protected getFallbackValue(): string {\n return '';\n }\n}\n","<tui-primitive-textfield\n class=\"t-textfield\"\n [tuiTextfieldIcon]=\"!disabled ? iconContent : ''\"\n [pseudoFocus]=\"pseudoFocus\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoActive]=\"pseudoActive\"\n [invalid]=\"computedInvalid\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [(value)]=\"value\"\n (focusedChange)=\"onFocused($event)\"\n>\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n</tui-primitive-textfield>\n\n<ng-template #iconContent>\n <tui-svg\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n tuiWrapper\n appearance=\"icon\"\n automation-id=\"tui-copy__icon\"\n class=\"t-icon\"\n [disabled]=\"!value\"\n [tuiHint]=\"hint\"\n [tuiHintDirection]=\"messageDirection\"\n [tuiHintAppearance]=\"messageAppearance\"\n [src]=\"src\"\n (click)=\"copy()\"\n ></tui-svg>\n</ng-template>\n\n<ng-template #hint>\n <ng-container *polymorpheusOutlet=\"hintText$ | async as text\">\n {{ text }}\n </ng-container>\n</ng-template>\n","import {Directive} from '@angular/core';\nimport {AbstractTuiTextfieldHost, tuiAsTextfieldHost} from '@taiga-ui/core';\n\nimport {TuiInputCopyComponent} from './input-copy.component';\n\n@Directive({\n selector: 'tui-input-copy',\n providers: [tuiAsTextfieldHost(TuiInputCopyDirective)],\n})\nexport class TuiInputCopyDirective extends AbstractTuiTextfieldHost<TuiInputCopyComponent> {\n onValueChange(value: string): void {\n this.host.onValueChange(value);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiAlertModule,\n TuiHintModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiTextfieldComponent,\n TuiTextfieldControllerModule,\n TuiWrapperModule,\n} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiInputCopyComponent} from './input-copy.component';\nimport {TuiInputCopyDirective} from './input-copy.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiWrapperModule,\n TuiSvgModule,\n TuiHintModule,\n TuiPrimitiveTextfieldModule,\n TuiAlertModule,\n TuiTextfieldControllerModule,\n ],\n declarations: [TuiInputCopyComponent, TuiInputCopyDirective],\n exports: [TuiInputCopyComponent, TuiInputCopyDirective, TuiTextfieldComponent],\n})\nexport class TuiInputCopyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, ElementRef, Directive, Inject, HostBinding, Pipe, EventEmitter, ChangeDetectorRef, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Self, ViewChild, ContentChild, forwardRef, Input, Output, HostListener, NgModule } from '@angular/core';
3
+ import { InjectionToken, forwardRef, ElementRef, Directive, Inject, HostBinding, Pipe, EventEmitter, ChangeDetectorRef, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Self, ViewChild, ContentChild, Input, Output, HostListener, NgModule } from '@angular/core';
4
4
  import * as i6 from '@angular/forms';
5
5
  import { NgControl } from '@angular/forms';
6
6
  import * as i2 from '@taiga-ui/cdk';
@@ -66,7 +66,7 @@ class TuiInputFilesDirective {
66
66
  return this.el.nativeElement;
67
67
  }
68
68
  }
69
- TuiInputFilesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputFilesDirective, deps: [{ token: TuiInputFilesComponent }, { token: ElementRef }, { token: TuiIdService }, { token: TUI_INPUT_FILES_OPTIONS }], target: i0.ɵɵFactoryTarget.Directive });
69
+ TuiInputFilesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputFilesDirective, deps: [{ token: forwardRef(() => TuiInputFilesComponent) }, { token: ElementRef }, { token: TuiIdService }, { token: TUI_INPUT_FILES_OPTIONS }], target: i0.ɵɵFactoryTarget.Directive });
70
70
  TuiInputFilesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputFilesDirective, selector: "input[tuiInputFiles]", host: { attributes: { "type": "file" }, properties: { "tabIndex": "this.tabIndex", "id": "this.id", "accept": "this.accept", "multiple": "this.multiple", "attr.capture": "this.capture" }, classAttribute: "t-native" }, ngImport: i0 });
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputFilesDirective, decorators: [{
72
72
  type: Directive,
@@ -79,7 +79,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
79
79
  }]
80
80
  }], ctorParameters: function () { return [{ type: TuiInputFilesComponent, decorators: [{
81
81
  type: Inject,
82
- args: [TuiInputFilesComponent]
82
+ args: [forwardRef(() => TuiInputFilesComponent)]
83
83
  }] }, { type: i0.ElementRef, decorators: [{
84
84
  type: Inject,
85
85
  args: [ElementRef]
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-files.js","sources":["../../../projects/kit/components/input-files/input-files.options.ts","../../../projects/kit/components/input-files/input-files.directive.ts","../../../projects/kit/components/input-files/max-size-rejection-error.pipe.ts","../../../projects/kit/components/input-files/input-files.component.ts","../../../projects/kit/components/input-files/input-files.template.html","../../../projects/kit/components/input-files/input-files.module.ts","../../../projects/kit/components/input-files/taiga-ui-kit-components-input-files.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiSizeL} from '@taiga-ui/core';\n\nexport interface TuiInputFilesOptions {\n /**\n * @description:\n * user - The user-facing camera and/or microphone should be used.\n * environment - The outward-facing camera and/or microphone should be used\n */\n capture: 'environment' | 'user' | null;\n accepts: string;\n multiple: boolean;\n size: TuiSizeL;\n maxFileSize: number;\n}\n\nexport const TUI_INPUT_FILES_DEFAULT_OPTIONS: TuiInputFilesOptions = {\n capture: null,\n accepts: ``,\n multiple: false,\n size: `m`,\n maxFileSize: 30 * 1000 * 1000, // 30 MB\n};\n\n/**\n * Default parameters for input files component\n */\nexport const TUI_INPUT_FILES_OPTIONS = new InjectionToken<TuiInputFilesOptions>(\n `[TUI_INPUT_FILES_OPTIONS]`,\n {\n factory: () => TUI_INPUT_FILES_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiInputFilesOptionsProvider: (\n options: Partial<TuiInputFilesOptions>,\n) => ValueProvider = (options: Partial<TuiInputFilesOptions>) => ({\n provide: TUI_INPUT_FILES_OPTIONS,\n useValue: {...TUI_INPUT_FILES_DEFAULT_OPTIONS, ...options},\n});\n","import {Directive, ElementRef, HostBinding, Inject} from '@angular/core';\nimport {TuiIdService} from '@taiga-ui/cdk';\n\n// eslint-disable-next-line import/no-cycle\nimport {TuiInputFilesComponent} from './input-files.component';\nimport {TUI_INPUT_FILES_OPTIONS, TuiInputFilesOptions} from './input-files.options';\n\n@Directive({\n selector: 'input[tuiInputFiles]',\n host: {\n type: 'file',\n class: 't-native',\n },\n})\nexport class TuiInputFilesDirective {\n constructor(\n @Inject(TuiInputFilesComponent) readonly host: TuiInputFilesComponent,\n @Inject(ElementRef) private readonly el: ElementRef<HTMLInputElement>,\n @Inject(TuiIdService) private readonly idService: TuiIdService,\n @Inject(TUI_INPUT_FILES_OPTIONS) private readonly options: TuiInputFilesOptions,\n ) {}\n\n @HostBinding('tabIndex')\n get tabIndex(): number {\n return this.host.focusable ? 0 : -1;\n }\n\n @HostBinding('id')\n get id(): string {\n return this.el.nativeElement.id || this.idService.generate();\n }\n\n @HostBinding('accept')\n get accept(): string {\n return this.el.nativeElement.accept ?? this.options.accepts;\n }\n\n @HostBinding('multiple')\n get multiple(): boolean {\n return this.el.nativeElement.multiple ?? this.options.multiple;\n }\n\n @HostBinding('attr.capture')\n get capture(): string | null {\n return this.el.nativeElement.getAttribute('capture') ?? this.options.capture;\n }\n\n get input(): HTMLInputElement {\n return this.el.nativeElement;\n }\n}\n","import {Inject, Pipe, PipeTransform} from '@angular/core';\nimport {TuiInjectionTokenType} from '@taiga-ui/cdk';\nimport {TUI_DIGITAL_INFORMATION_UNITS, TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {tuiFormatSize} from '@taiga-ui/kit/utils';\nimport {combineLatest, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n@Pipe({name: `tuiMaxSizeRejectionError`})\nexport class TuiMaxSizeRejectionErrorPipe implements PipeTransform {\n constructor(\n @Inject(TUI_INPUT_FILE_TEXTS)\n private readonly inputFileTexts$: TuiInjectionTokenType<\n typeof TUI_INPUT_FILE_TEXTS\n >,\n @Inject(TUI_DIGITAL_INFORMATION_UNITS)\n private readonly units$: TuiInjectionTokenType<\n typeof TUI_DIGITAL_INFORMATION_UNITS\n >,\n ) {}\n\n transform(maxFileSize: number): Observable<string> {\n return combineLatest([this.inputFileTexts$, this.units$]).pipe(\n map(\n ([{maxSizeRejectionReason}, units]) =>\n `${maxSizeRejectionReason}${tuiFormatSize(units, maxFileSize)}`,\n ),\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n Inject,\n Input,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiNullableControl,\n EMPTY_ARRAY,\n TUI_IS_MOBILE,\n tuiAsFocusableItemAccessor,\n TuiContextWithImplicit,\n TuiFocusableElementAccessor,\n tuiIsNativeFocused,\n TuiNativeFocusableElement,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TuiSizeL} from '@taiga-ui/core';\nimport {TuiFileLike} from '@taiga-ui/kit/interfaces';\nimport {TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {tuiGetAcceptArray} from '@taiga-ui/kit/utils/files';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n// eslint-disable-next-line import/no-cycle\nimport {TuiInputFilesDirective} from './input-files.directive';\nimport {TUI_INPUT_FILES_OPTIONS, TuiInputFilesOptions} from './input-files.options';\n\n@Component({\n selector: 'tui-input-files',\n templateUrl: './input-files.template.html',\n styleUrls: ['./input-files.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [MODE_PROVIDER, tuiAsFocusableItemAccessor(TuiInputFilesComponent)],\n})\nexport class TuiInputFilesComponent\n extends AbstractTuiNullableControl<TuiFileLike | readonly TuiFileLike[]>\n implements TuiFocusableElementAccessor\n{\n @ViewChild('input')\n private readonly input?: ElementRef<HTMLInputElement>;\n\n private dataTransfer: DataTransfer | null = null;\n\n @ContentChild(forwardRef(() => TuiInputFilesDirective))\n readonly nativeInput?: TuiInputFilesDirective;\n\n @ContentChild(TemplateRef)\n readonly template?: TemplateRef<TuiContextWithImplicit<boolean>>;\n\n @ViewChild('formatRejection')\n readonly formatRejection!: PolymorpheusContent;\n\n @ViewChild('maxSizeRejection')\n readonly maxSizeRejection!: PolymorpheusContent;\n\n @Input()\n link: PolymorpheusContent;\n\n @Input()\n label: PolymorpheusContent;\n\n /**\n * @deprecated: use `<input tuiInputFiles accept=\"image/*\" />`\n */\n @Input()\n accept = this.options.accepts;\n\n /**\n * @deprecated: use `<input tuiInputFiles multiple />`\n */\n @Input()\n multiple = this.options.multiple;\n\n @Input()\n size: TuiSizeL = this.options.size;\n\n @Input()\n maxFileSize = this.options.maxFileSize;\n\n @Output()\n readonly reject = new EventEmitter<TuiFileLike | readonly TuiFileLike[]>();\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef)\n cdr: ChangeDetectorRef,\n @Inject(TUI_IS_MOBILE)\n readonly isMobile: boolean,\n @Inject(TUI_INPUT_FILE_TEXTS)\n readonly inputFileTexts$: Observable<\n Record<\n | 'defaultLabelMultiple'\n | 'defaultLabelSingle'\n | 'defaultLinkMultiple'\n | 'defaultLinkSingle'\n | 'drop'\n | 'dropMultiple'\n | 'formatRejectionReason'\n | 'maxSizeRejectionReason',\n string\n >\n >,\n @Inject(TUI_INPUT_FILES_OPTIONS)\n readonly options: TuiInputFilesOptions,\n ) {\n super(control, cdr);\n }\n\n get computedMultiple(): boolean {\n return this.nativeInput?.multiple ?? this.multiple;\n }\n\n get computedAccept(): string {\n return this.nativeInput?.accept ?? this.accept;\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement | null {\n return this.input?.nativeElement || null;\n }\n\n get focused(): boolean {\n return tuiIsNativeFocused(this.nativeFocusableElement);\n }\n\n get computedPseudoHovered(): boolean | null {\n return this.pseudoHover ?? (this.fileDragged || null);\n }\n\n get computedLink$(): Observable<PolymorpheusContent> {\n return this.computeLink$(this.fileDragged, this.computedMultiple, this.link);\n }\n\n get computedLabel$(): Observable<PolymorpheusContent> {\n return this.computeLabel$(\n this.isMobile,\n this.fileDragged,\n this.computedMultiple,\n this.label,\n );\n }\n\n get fileDragged(): boolean {\n return !!this.dataTransfer?.types.includes('Files');\n }\n\n get arrayValue(): readonly TuiFileLike[] {\n return this.getValueArray(this.value);\n }\n\n @HostListener('focusin', ['true'])\n @HostListener('focusout', ['false'])\n onFocused(focused: boolean): void {\n this.updateFocused(focused);\n }\n\n @HostListener('change')\n onFilesSelected(): void {\n const input = this.nativeInput?.input ?? this.input?.nativeElement;\n\n if (!input) {\n return;\n }\n\n this.processSelectedFiles(input.files);\n\n input.value = '';\n }\n\n onDropped(event: DataTransfer): void {\n this.processSelectedFiles(event.files);\n }\n\n onDragOver(dataTransfer: DataTransfer | null): void {\n this.dataTransfer = dataTransfer;\n }\n\n removeFile(removedFile: TuiFileLike): void {\n this.value = this.computedMultiple\n ? this.arrayValue.filter(file => file !== removedFile)\n : null;\n }\n\n @tuiPure\n private computeLink$(\n fileDragged: boolean,\n multiple: boolean,\n link: PolymorpheusContent,\n ): Observable<PolymorpheusContent> {\n return fileDragged\n ? of('')\n : this.inputFileTexts$.pipe(\n map(texts =>\n multiple && !link\n ? texts.defaultLinkMultiple\n : link || texts.defaultLinkSingle,\n ),\n );\n }\n\n @tuiPure\n private computeLabel$(\n isMobile: boolean,\n fileDragged: boolean,\n multiple: boolean,\n label: PolymorpheusContent,\n ): Observable<PolymorpheusContent> {\n if (isMobile) {\n return of('');\n }\n\n if (fileDragged) {\n return this.inputFileTexts$.pipe(\n map(texts => (multiple ? texts.dropMultiple : texts.drop)),\n );\n }\n\n return this.inputFileTexts$.pipe(\n map(texts =>\n multiple && !label\n ? texts.defaultLabelMultiple\n : label || texts.defaultLabelSingle,\n ),\n );\n }\n\n @tuiPure\n private getValueArray(\n value: TuiFileLike | readonly TuiFileLike[] | null,\n ): readonly TuiFileLike[] {\n if (!value) {\n return EMPTY_ARRAY;\n }\n\n return Array.isArray(value) ? value : [value];\n }\n\n private processSelectedFiles(files: FileList | null): void {\n // IE11 after selecting a file through the open dialog generates a second event passing an empty FileList.\n if (!files?.length) {\n return;\n }\n\n const errors: Record<\n 'formatRejection' | 'maxSizeRejection',\n PolymorpheusContent\n > = {\n formatRejection: this.formatRejection,\n maxSizeRejection: this.maxSizeRejection,\n };\n\n const newFiles = this.computedMultiple ? Array.from(files) : [files[0]];\n const tooBigFiles = newFiles.filter(file => file.size > this.maxFileSize);\n const wrongFormatFiles = newFiles.filter(\n file => !this.isFormatAcceptable(file) && !tooBigFiles.includes(file),\n );\n const acceptedFiles = newFiles.filter(\n file => !tooBigFiles.includes(file) && !wrongFormatFiles.includes(file),\n );\n\n if (tooBigFiles.length || wrongFormatFiles.length) {\n this.rejectFiles([\n ...tooBigFiles.map(file => ({\n name: file.name,\n type: file.type,\n size: file.size,\n content: errors.maxSizeRejection,\n })),\n ...wrongFormatFiles.map(file => ({\n name: file.name,\n type: file.type,\n size: file.size,\n content: errors.formatRejection,\n })),\n ]);\n }\n\n this.value = this.computedMultiple\n ? [...this.arrayValue, ...acceptedFiles]\n : acceptedFiles[0] || null;\n }\n\n private isFormatAcceptable(file: File): boolean {\n if (!this.computedAccept) {\n return true;\n }\n\n const extension = `.${(file.name.split('.').pop() || '').toLowerCase()}`;\n\n return tuiGetAcceptArray(this.computedAccept).some(\n format =>\n format === extension ||\n format === file.type ||\n (format.split('/')[1] === '*' &&\n file.type.split('/')[0] === format.split('/')[0]),\n );\n }\n\n private rejectFiles(rejectedFiles: readonly TuiFileLike[]): void {\n this.reject.emit(this.computedMultiple ? rejectedFiles : rejectedFiles[0]);\n }\n}\n","<div\n tuiWrapper\n appearance=\"input-file\"\n class=\"t-wrapper\"\n [class._mobile]=\"isMobile\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover || fileDragged || null\"\n [active]=\"pseudoActive\"\n [disabled]=\"computedDisabled\"\n>\n <label\n automation-id=\"tui-input-file__label\"\n class=\"t-label\"\n (tuiDroppableDropped)=\"onDropped($event)\"\n (tuiDroppableDragOverChange)=\"onDragOver($event)\"\n (mousedown.prevent.silent)=\"(0)\"\n >\n <div class=\"t-description\">\n <ng-container *ngTemplateOutlet=\"template || null; context: {$implicit: fileDragged}\"></ng-container>\n <div *ngIf=\"!template\">\n <a tuiLink>\n <ng-container *polymorpheusOutlet=\"computedLink$ | async as text\">\n {{ text }}\n </ng-container>\n </a>\n <span\n *polymorpheusOutlet=\"computedLabel$ | async as text\"\n [textContent]=\"text\"\n ></span>\n </div>\n </div>\n <ng-container *ngIf=\"!readOnly && !computedDisabled\">\n <ng-content select=\"input\"></ng-content>\n <input\n #input\n type=\"file\"\n title=\"\"\n class=\"t-native\"\n [id]=\"id\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [tuiFocusable]=\"focusable\"\n />\n </ng-container>\n </label>\n</div>\n\n<ng-template #formatRejection>\n {{ (inputFileTexts$ | async)?.formatRejectionReason || '' }}\n</ng-template>\n\n<ng-template #maxSizeRejection>\n {{ maxFileSize | tuiMaxSizeRejectionError | async }}\n</ng-template>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiDroppableModule,\n TuiFocusableModule,\n TuiFocusedModule,\n TuiFocusVisibleModule,\n TuiHoveredModule,\n TuiItemDirective,\n TuiLetModule,\n TuiPressedModule,\n} from '@taiga-ui/cdk';\nimport {\n TuiButtonModule,\n TuiGroupModule,\n TuiLinkModule,\n TuiLoaderModule,\n TuiSvgModule,\n TuiWrapperModule,\n} from '@taiga-ui/core';\nimport {\n TuiFileComponent,\n TuiFilesComponent,\n TuiFilesModule,\n} from '@taiga-ui/kit/components/files';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiInputFilesComponent} from './input-files.component';\nimport {TuiInputFilesDirective} from './input-files.directive';\nimport {TuiMaxSizeRejectionErrorPipe} from './max-size-rejection-error.pipe';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiLetModule,\n TuiFocusedModule,\n TuiFocusVisibleModule,\n TuiPressedModule,\n TuiHoveredModule,\n TuiFocusableModule,\n TuiDroppableModule,\n TuiWrapperModule,\n TuiSvgModule,\n TuiLinkModule,\n TuiLoaderModule,\n TuiButtonModule,\n TuiGroupModule,\n TuiFilesModule,\n ],\n declarations: [\n TuiInputFilesComponent,\n TuiInputFilesDirective,\n TuiMaxSizeRejectionErrorPipe,\n ],\n exports: [\n TuiInputFilesComponent,\n TuiInputFilesDirective,\n TuiFilesComponent,\n TuiFileComponent,\n TuiItemDirective,\n ],\n})\nexport class TuiInputFilesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5.TuiMaxSizeRejectionErrorPipe"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-files.js","sources":["../../../projects/kit/components/input-files/input-files.options.ts","../../../projects/kit/components/input-files/input-files.directive.ts","../../../projects/kit/components/input-files/max-size-rejection-error.pipe.ts","../../../projects/kit/components/input-files/input-files.component.ts","../../../projects/kit/components/input-files/input-files.template.html","../../../projects/kit/components/input-files/input-files.module.ts","../../../projects/kit/components/input-files/taiga-ui-kit-components-input-files.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiSizeL} from '@taiga-ui/core';\n\nexport interface TuiInputFilesOptions {\n /**\n * @description:\n * user - The user-facing camera and/or microphone should be used.\n * environment - The outward-facing camera and/or microphone should be used\n */\n capture: 'environment' | 'user' | null;\n accepts: string;\n multiple: boolean;\n size: TuiSizeL;\n maxFileSize: number;\n}\n\nexport const TUI_INPUT_FILES_DEFAULT_OPTIONS: TuiInputFilesOptions = {\n capture: null,\n accepts: ``,\n multiple: false,\n size: `m`,\n maxFileSize: 30 * 1000 * 1000, // 30 MB\n};\n\n/**\n * Default parameters for input files component\n */\nexport const TUI_INPUT_FILES_OPTIONS = new InjectionToken<TuiInputFilesOptions>(\n `[TUI_INPUT_FILES_OPTIONS]`,\n {\n factory: () => TUI_INPUT_FILES_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiInputFilesOptionsProvider: (\n options: Partial<TuiInputFilesOptions>,\n) => ValueProvider = (options: Partial<TuiInputFilesOptions>) => ({\n provide: TUI_INPUT_FILES_OPTIONS,\n useValue: {...TUI_INPUT_FILES_DEFAULT_OPTIONS, ...options},\n});\n","import {Directive, ElementRef, forwardRef, HostBinding, Inject} from '@angular/core';\nimport {TuiIdService} from '@taiga-ui/cdk';\n\n// eslint-disable-next-line import/no-cycle\nimport {TuiInputFilesComponent} from './input-files.component';\nimport {TUI_INPUT_FILES_OPTIONS, TuiInputFilesOptions} from './input-files.options';\n\n@Directive({\n selector: 'input[tuiInputFiles]',\n host: {\n type: 'file',\n class: 't-native',\n },\n})\nexport class TuiInputFilesDirective {\n constructor(\n @Inject(forwardRef(() => TuiInputFilesComponent))\n readonly host: TuiInputFilesComponent,\n @Inject(ElementRef) private readonly el: ElementRef<HTMLInputElement>,\n @Inject(TuiIdService) private readonly idService: TuiIdService,\n @Inject(TUI_INPUT_FILES_OPTIONS) private readonly options: TuiInputFilesOptions,\n ) {}\n\n @HostBinding('tabIndex')\n get tabIndex(): number {\n return this.host.focusable ? 0 : -1;\n }\n\n @HostBinding('id')\n get id(): string {\n return this.el.nativeElement.id || this.idService.generate();\n }\n\n @HostBinding('accept')\n get accept(): string {\n return this.el.nativeElement.accept ?? this.options.accepts;\n }\n\n @HostBinding('multiple')\n get multiple(): boolean {\n return this.el.nativeElement.multiple ?? this.options.multiple;\n }\n\n @HostBinding('attr.capture')\n get capture(): string | null {\n return this.el.nativeElement.getAttribute('capture') ?? this.options.capture;\n }\n\n get input(): HTMLInputElement {\n return this.el.nativeElement;\n }\n}\n","import {Inject, Pipe, PipeTransform} from '@angular/core';\nimport {TuiInjectionTokenType} from '@taiga-ui/cdk';\nimport {TUI_DIGITAL_INFORMATION_UNITS, TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {tuiFormatSize} from '@taiga-ui/kit/utils';\nimport {combineLatest, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n@Pipe({name: `tuiMaxSizeRejectionError`})\nexport class TuiMaxSizeRejectionErrorPipe implements PipeTransform {\n constructor(\n @Inject(TUI_INPUT_FILE_TEXTS)\n private readonly inputFileTexts$: TuiInjectionTokenType<\n typeof TUI_INPUT_FILE_TEXTS\n >,\n @Inject(TUI_DIGITAL_INFORMATION_UNITS)\n private readonly units$: TuiInjectionTokenType<\n typeof TUI_DIGITAL_INFORMATION_UNITS\n >,\n ) {}\n\n transform(maxFileSize: number): Observable<string> {\n return combineLatest([this.inputFileTexts$, this.units$]).pipe(\n map(\n ([{maxSizeRejectionReason}, units]) =>\n `${maxSizeRejectionReason}${tuiFormatSize(units, maxFileSize)}`,\n ),\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n Inject,\n Input,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiNullableControl,\n EMPTY_ARRAY,\n TUI_IS_MOBILE,\n tuiAsFocusableItemAccessor,\n TuiContextWithImplicit,\n TuiFocusableElementAccessor,\n tuiIsNativeFocused,\n TuiNativeFocusableElement,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TuiSizeL} from '@taiga-ui/core';\nimport {TuiFileLike} from '@taiga-ui/kit/interfaces';\nimport {TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {tuiGetAcceptArray} from '@taiga-ui/kit/utils/files';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n// eslint-disable-next-line import/no-cycle\nimport {TuiInputFilesDirective} from './input-files.directive';\nimport {TUI_INPUT_FILES_OPTIONS, TuiInputFilesOptions} from './input-files.options';\n\n@Component({\n selector: 'tui-input-files',\n templateUrl: './input-files.template.html',\n styleUrls: ['./input-files.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [MODE_PROVIDER, tuiAsFocusableItemAccessor(TuiInputFilesComponent)],\n})\nexport class TuiInputFilesComponent\n extends AbstractTuiNullableControl<TuiFileLike | readonly TuiFileLike[]>\n implements TuiFocusableElementAccessor\n{\n @ViewChild('input')\n private readonly input?: ElementRef<HTMLInputElement>;\n\n private dataTransfer: DataTransfer | null = null;\n\n @ContentChild(forwardRef(() => TuiInputFilesDirective))\n readonly nativeInput?: TuiInputFilesDirective;\n\n @ContentChild(TemplateRef)\n readonly template?: TemplateRef<TuiContextWithImplicit<boolean>>;\n\n @ViewChild('formatRejection')\n readonly formatRejection!: PolymorpheusContent;\n\n @ViewChild('maxSizeRejection')\n readonly maxSizeRejection!: PolymorpheusContent;\n\n @Input()\n link: PolymorpheusContent;\n\n @Input()\n label: PolymorpheusContent;\n\n /**\n * @deprecated: use `<input tuiInputFiles accept=\"image/*\" />`\n */\n @Input()\n accept = this.options.accepts;\n\n /**\n * @deprecated: use `<input tuiInputFiles multiple />`\n */\n @Input()\n multiple = this.options.multiple;\n\n @Input()\n size: TuiSizeL = this.options.size;\n\n @Input()\n maxFileSize = this.options.maxFileSize;\n\n @Output()\n readonly reject = new EventEmitter<TuiFileLike | readonly TuiFileLike[]>();\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef)\n cdr: ChangeDetectorRef,\n @Inject(TUI_IS_MOBILE)\n readonly isMobile: boolean,\n @Inject(TUI_INPUT_FILE_TEXTS)\n readonly inputFileTexts$: Observable<\n Record<\n | 'defaultLabelMultiple'\n | 'defaultLabelSingle'\n | 'defaultLinkMultiple'\n | 'defaultLinkSingle'\n | 'drop'\n | 'dropMultiple'\n | 'formatRejectionReason'\n | 'maxSizeRejectionReason',\n string\n >\n >,\n @Inject(TUI_INPUT_FILES_OPTIONS)\n readonly options: TuiInputFilesOptions,\n ) {\n super(control, cdr);\n }\n\n get computedMultiple(): boolean {\n return this.nativeInput?.multiple ?? this.multiple;\n }\n\n get computedAccept(): string {\n return this.nativeInput?.accept ?? this.accept;\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement | null {\n return this.input?.nativeElement || null;\n }\n\n get focused(): boolean {\n return tuiIsNativeFocused(this.nativeFocusableElement);\n }\n\n get computedPseudoHovered(): boolean | null {\n return this.pseudoHover ?? (this.fileDragged || null);\n }\n\n get computedLink$(): Observable<PolymorpheusContent> {\n return this.computeLink$(this.fileDragged, this.computedMultiple, this.link);\n }\n\n get computedLabel$(): Observable<PolymorpheusContent> {\n return this.computeLabel$(\n this.isMobile,\n this.fileDragged,\n this.computedMultiple,\n this.label,\n );\n }\n\n get fileDragged(): boolean {\n return !!this.dataTransfer?.types.includes('Files');\n }\n\n get arrayValue(): readonly TuiFileLike[] {\n return this.getValueArray(this.value);\n }\n\n @HostListener('focusin', ['true'])\n @HostListener('focusout', ['false'])\n onFocused(focused: boolean): void {\n this.updateFocused(focused);\n }\n\n @HostListener('change')\n onFilesSelected(): void {\n const input = this.nativeInput?.input ?? this.input?.nativeElement;\n\n if (!input) {\n return;\n }\n\n this.processSelectedFiles(input.files);\n\n input.value = '';\n }\n\n onDropped(event: DataTransfer): void {\n this.processSelectedFiles(event.files);\n }\n\n onDragOver(dataTransfer: DataTransfer | null): void {\n this.dataTransfer = dataTransfer;\n }\n\n removeFile(removedFile: TuiFileLike): void {\n this.value = this.computedMultiple\n ? this.arrayValue.filter(file => file !== removedFile)\n : null;\n }\n\n @tuiPure\n private computeLink$(\n fileDragged: boolean,\n multiple: boolean,\n link: PolymorpheusContent,\n ): Observable<PolymorpheusContent> {\n return fileDragged\n ? of('')\n : this.inputFileTexts$.pipe(\n map(texts =>\n multiple && !link\n ? texts.defaultLinkMultiple\n : link || texts.defaultLinkSingle,\n ),\n );\n }\n\n @tuiPure\n private computeLabel$(\n isMobile: boolean,\n fileDragged: boolean,\n multiple: boolean,\n label: PolymorpheusContent,\n ): Observable<PolymorpheusContent> {\n if (isMobile) {\n return of('');\n }\n\n if (fileDragged) {\n return this.inputFileTexts$.pipe(\n map(texts => (multiple ? texts.dropMultiple : texts.drop)),\n );\n }\n\n return this.inputFileTexts$.pipe(\n map(texts =>\n multiple && !label\n ? texts.defaultLabelMultiple\n : label || texts.defaultLabelSingle,\n ),\n );\n }\n\n @tuiPure\n private getValueArray(\n value: TuiFileLike | readonly TuiFileLike[] | null,\n ): readonly TuiFileLike[] {\n if (!value) {\n return EMPTY_ARRAY;\n }\n\n return Array.isArray(value) ? value : [value];\n }\n\n private processSelectedFiles(files: FileList | null): void {\n // IE11 after selecting a file through the open dialog generates a second event passing an empty FileList.\n if (!files?.length) {\n return;\n }\n\n const errors: Record<\n 'formatRejection' | 'maxSizeRejection',\n PolymorpheusContent\n > = {\n formatRejection: this.formatRejection,\n maxSizeRejection: this.maxSizeRejection,\n };\n\n const newFiles = this.computedMultiple ? Array.from(files) : [files[0]];\n const tooBigFiles = newFiles.filter(file => file.size > this.maxFileSize);\n const wrongFormatFiles = newFiles.filter(\n file => !this.isFormatAcceptable(file) && !tooBigFiles.includes(file),\n );\n const acceptedFiles = newFiles.filter(\n file => !tooBigFiles.includes(file) && !wrongFormatFiles.includes(file),\n );\n\n if (tooBigFiles.length || wrongFormatFiles.length) {\n this.rejectFiles([\n ...tooBigFiles.map(file => ({\n name: file.name,\n type: file.type,\n size: file.size,\n content: errors.maxSizeRejection,\n })),\n ...wrongFormatFiles.map(file => ({\n name: file.name,\n type: file.type,\n size: file.size,\n content: errors.formatRejection,\n })),\n ]);\n }\n\n this.value = this.computedMultiple\n ? [...this.arrayValue, ...acceptedFiles]\n : acceptedFiles[0] || null;\n }\n\n private isFormatAcceptable(file: File): boolean {\n if (!this.computedAccept) {\n return true;\n }\n\n const extension = `.${(file.name.split('.').pop() || '').toLowerCase()}`;\n\n return tuiGetAcceptArray(this.computedAccept).some(\n format =>\n format === extension ||\n format === file.type ||\n (format.split('/')[1] === '*' &&\n file.type.split('/')[0] === format.split('/')[0]),\n );\n }\n\n private rejectFiles(rejectedFiles: readonly TuiFileLike[]): void {\n this.reject.emit(this.computedMultiple ? rejectedFiles : rejectedFiles[0]);\n }\n}\n","<div\n tuiWrapper\n appearance=\"input-file\"\n class=\"t-wrapper\"\n [class._mobile]=\"isMobile\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover || fileDragged || null\"\n [active]=\"pseudoActive\"\n [disabled]=\"computedDisabled\"\n>\n <label\n automation-id=\"tui-input-file__label\"\n class=\"t-label\"\n (tuiDroppableDropped)=\"onDropped($event)\"\n (tuiDroppableDragOverChange)=\"onDragOver($event)\"\n (mousedown.prevent.silent)=\"(0)\"\n >\n <div class=\"t-description\">\n <ng-container *ngTemplateOutlet=\"template || null; context: {$implicit: fileDragged}\"></ng-container>\n <div *ngIf=\"!template\">\n <a tuiLink>\n <ng-container *polymorpheusOutlet=\"computedLink$ | async as text\">\n {{ text }}\n </ng-container>\n </a>\n <span\n *polymorpheusOutlet=\"computedLabel$ | async as text\"\n [textContent]=\"text\"\n ></span>\n </div>\n </div>\n <ng-container *ngIf=\"!readOnly && !computedDisabled\">\n <ng-content select=\"input\"></ng-content>\n <input\n #input\n type=\"file\"\n title=\"\"\n class=\"t-native\"\n [id]=\"id\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [tuiFocusable]=\"focusable\"\n />\n </ng-container>\n </label>\n</div>\n\n<ng-template #formatRejection>\n {{ (inputFileTexts$ | async)?.formatRejectionReason || '' }}\n</ng-template>\n\n<ng-template #maxSizeRejection>\n {{ maxFileSize | tuiMaxSizeRejectionError | async }}\n</ng-template>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiDroppableModule,\n TuiFocusableModule,\n TuiFocusedModule,\n TuiFocusVisibleModule,\n TuiHoveredModule,\n TuiItemDirective,\n TuiLetModule,\n TuiPressedModule,\n} from '@taiga-ui/cdk';\nimport {\n TuiButtonModule,\n TuiGroupModule,\n TuiLinkModule,\n TuiLoaderModule,\n TuiSvgModule,\n TuiWrapperModule,\n} from '@taiga-ui/core';\nimport {\n TuiFileComponent,\n TuiFilesComponent,\n TuiFilesModule,\n} from '@taiga-ui/kit/components/files';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiInputFilesComponent} from './input-files.component';\nimport {TuiInputFilesDirective} from './input-files.directive';\nimport {TuiMaxSizeRejectionErrorPipe} from './max-size-rejection-error.pipe';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiLetModule,\n TuiFocusedModule,\n TuiFocusVisibleModule,\n TuiPressedModule,\n TuiHoveredModule,\n TuiFocusableModule,\n TuiDroppableModule,\n TuiWrapperModule,\n TuiSvgModule,\n TuiLinkModule,\n TuiLoaderModule,\n TuiButtonModule,\n TuiGroupModule,\n TuiFilesModule,\n ],\n declarations: [\n TuiInputFilesComponent,\n TuiInputFilesDirective,\n TuiMaxSizeRejectionErrorPipe,\n ],\n exports: [\n TuiInputFilesComponent,\n TuiInputFilesDirective,\n TuiFilesComponent,\n TuiFileComponent,\n TuiItemDirective,\n ],\n})\nexport class TuiInputFilesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5.TuiMaxSizeRejectionErrorPipe"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgBa,MAAA,+BAA+B,GAAyB;AACjE,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,OAAO,EAAE,CAAE,CAAA;AACX,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,IAAI,EAAE,CAAG,CAAA,CAAA;AACT,IAAA,WAAW,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;EAC/B;AAEF;;AAEG;MACU,uBAAuB,GAAG,IAAI,cAAc,CACrD,2BAA2B,EAC3B;AACI,IAAA,OAAO,EAAE,MAAM,+BAA+B;AACjD,CAAA,EACH;MAEW,4BAA4B,GAEpB,CAAC,OAAsC,MAAM;AAC9D,IAAA,OAAO,EAAE,uBAAuB;AAChC,IAAA,QAAQ,EAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,+BAA+B,CAAK,EAAA,OAAO,CAAC;AAC7D,CAAA;;MCzBY,sBAAsB,CAAA;AAC/B,IAAA,WAAA,CAEa,IAA4B,EACA,EAAgC,EAC9B,SAAuB,EACZ,OAA6B,EAAA;QAHtE,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAwB;QACA,IAAE,CAAA,EAAA,GAAF,EAAE,CAA8B;QAC9B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;QACZ,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsB;KAC/E;AAEJ,IAAA,IACI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KACvC;AAED,IAAA,IACI,EAAE,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAChE;AAED,IAAA,IACI,MAAM,GAAA;;AACN,QAAA,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KAC/D;AAED,IAAA,IACI,QAAQ,GAAA;;AACR,QAAA,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAClE;AAED,IAAA,IACI,OAAO,GAAA;;AACP,QAAA,OAAO,MAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KAChF;AAED,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;KAChC;;AApCQ,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAEnB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,UAAU,CAAC,MAAM,sBAAsB,CAAC,EAExC,EAAA,EAAA,KAAA,EAAA,UAAU,EACV,EAAA,EAAA,KAAA,EAAA,YAAY,aACZ,uBAAuB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAN1B,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,eAAA,EAAA,IAAA,EAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,KAAK,EAAE,UAAU;AACpB,qBAAA;AACJ,iBAAA,CAAA;;0BAGQ,MAAM;AAAC,oBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,sBAAsB,CAAC,CAAA;;0BAE/C,MAAM;2BAAC,UAAU,CAAA;;0BACjB,MAAM;2BAAC,YAAY,CAAA;;0BACnB,MAAM;2BAAC,uBAAuB,CAAA;4CAI/B,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,UAAU,CAAA;gBAMnB,EAAE,EAAA,CAAA;sBADL,WAAW;uBAAC,IAAI,CAAA;gBAMb,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,QAAQ,CAAA;gBAMjB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,UAAU,CAAA;gBAMnB,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,cAAc,CAAA;;;MCnClB,4BAA4B,CAAA;IACrC,WAEqB,CAAA,eAEhB,EAEgB,MAEhB,EAAA;QANgB,IAAe,CAAA,eAAA,GAAf,eAAe,CAE/B;QAEgB,IAAM,CAAA,MAAA,GAAN,MAAM,CAEtB;KACD;AAEJ,IAAA,SAAS,CAAC,WAAmB,EAAA;AACzB,QAAA,OAAO,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC1D,GAAG,CACC,CAAC,CAAC,EAAC,sBAAsB,EAAC,EAAE,KAAK,CAAC,KAC9B,GAAG,sBAAsB,CAAA,EAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAE,CAAA,CACtE,CACJ,CAAC;KACL;;0HAnBQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAEzB,oBAAoB,EAAA,EAAA,EAAA,KAAA,EAIpB,6BAA6B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;wHANhC,4BAA4B,EAAA,IAAA,EAAA,0BAAA,EAAA,CAAA,CAAA;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,IAAI;mBAAC,EAAC,IAAI,EAAE,CAAA,wBAAA,CAA0B,EAAC,CAAA;;0BAG/B,MAAM;2BAAC,oBAAoB,CAAA;;0BAI3B,MAAM;2BAAC,6BAA6B,CAAA;;;ACoCvC,MAAO,sBACT,SAAQ,0BAAgE,CAAA;IA+CxE,WAII,CAAA,OAAyB,EAEzB,GAAsB,EAEb,QAAiB,EAEjB,eAYR,EAEQ,OAA6B,EAAA;AAEtC,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAlBX,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QAEjB,IAAe,CAAA,eAAA,GAAf,eAAe,CAYvB;QAEQ,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsB;QAjElC,IAAY,CAAA,YAAA,GAAwB,IAAI,CAAC;AAoBjD;;AAEG;AAEH,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAE9B;;AAEG;AAEH,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAGjC,QAAA,IAAA,CAAA,IAAI,GAAa,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAGnC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAG9B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAwC,CAAC;KA6B1E;AAED,IAAA,IAAI,gBAAgB,GAAA;;QAChB,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC;KACtD;AAED,IAAA,IAAI,cAAc,GAAA;;QACd,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC;KAClD;AAED,IAAA,IAAI,sBAAsB,GAAA;;QACtB,OAAO,CAAA,MAAA,IAAI,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,KAAI,IAAI,CAAC;KAC5C;AAED,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;KAC1D;AAED,IAAA,IAAI,qBAAqB,GAAA;;AACrB,QAAA,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,IAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;KACzD;AAED,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAChF;AAED,IAAA,IAAI,cAAc,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CACrB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,KAAK,CACb,CAAC;KACL;AAED,IAAA,IAAI,WAAW,GAAA;;AACX,QAAA,OAAO,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA,CAAC;KACvD;AAED,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC;AAID,IAAA,SAAS,CAAC,OAAgB,EAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAGD,eAAe,GAAA;;AACX,QAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC;QAEnE,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAEvC,QAAA,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,SAAS,CAAC,KAAmB,EAAA;AACzB,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC1C;AAED,IAAA,UAAU,CAAC,YAAiC,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;KACpC;AAED,IAAA,UAAU,CAAC,WAAwB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB;AAC9B,cAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,WAAW,CAAC;cACpD,IAAI,CAAC;KACd;AAGO,IAAA,YAAY,CAChB,WAAoB,EACpB,QAAiB,EACjB,IAAyB,EAAA;AAEzB,QAAA,OAAO,WAAW;AACd,cAAE,EAAE,CAAC,EAAE,CAAC;AACR,cAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CACrB,GAAG,CAAC,KAAK,IACL,QAAQ,IAAI,CAAC,IAAI;kBACX,KAAK,CAAC,mBAAmB;kBACzB,IAAI,IAAI,KAAK,CAAC,iBAAiB,CACxC,CACJ,CAAC;KACX;AAGO,IAAA,aAAa,CACjB,QAAiB,EACjB,WAAoB,EACpB,QAAiB,EACjB,KAA0B,EAAA;AAE1B,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACjB,SAAA;AAED,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC5B,GAAG,CAAC,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAC7D,CAAC;AACL,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC5B,GAAG,CAAC,KAAK,IACL,QAAQ,IAAI,CAAC,KAAK;cACZ,KAAK,CAAC,oBAAoB;cAC1B,KAAK,IAAI,KAAK,CAAC,kBAAkB,CAC1C,CACJ,CAAC;KACL;AAGO,IAAA,aAAa,CACjB,KAAkD,EAAA;QAElD,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,WAAW,CAAC;AACtB,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;KACjD;AAEO,IAAA,oBAAoB,CAAC,KAAsB,EAAA;;QAE/C,IAAI,EAAC,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA,EAAE;YAChB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,MAAM,GAGR;YACA,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SAC1C,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CACpC,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CACxE,CAAC;QACF,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CACjC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC1E,CAAC;AAEF,QAAA,IAAI,WAAW,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE;YAC/C,IAAI,CAAC,WAAW,CAAC;gBACb,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,KAAK;oBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE,MAAM,CAAC,gBAAgB;AACnC,iBAAA,CAAC,CAAC;gBACH,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,KAAK;oBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE,MAAM,CAAC,eAAe;AAClC,iBAAA,CAAC,CAAC;AACN,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB;cAC5B,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC;AACxC,cAAE,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;KAClC;AAEO,IAAA,kBAAkB,CAAC,IAAU,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,SAAS,GAAG,CAAI,CAAA,EAAA,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAA,CAAE,CAAC;AAEzE,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAC9C,MAAM,IACF,MAAM,KAAK,SAAS;YACpB,MAAM,KAAK,IAAI,CAAC,IAAI;aACnB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;gBACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;KACL;AAEO,IAAA,WAAW,CAAC,aAAqC,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9E;;oHA5QQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAmDnB,SAAS,EAET,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,iBAAiB,aAEjB,aAAa,EAAA,EAAA,EAAA,KAAA,EAEb,oBAAoB,EAAA,EAAA,EAAA,KAAA,EAcpB,uBAAuB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvE1B,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAFpB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,aAAa,EAAE,0BAA0B,CAAC,sBAAsB,CAAC,CAAC,EAW/C,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,OAAA,sBAAsB,CAGvC,EAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAW,mXC9D7B,8yDAsDA,EAAA,MAAA,EAAA,CAAA,o4IAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,CAAA,SAAA,EAAA,0BAAA,EAAAA,4BAAA,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;ADoJI,UAAA,CAAA;IADC,OAAO;AAeP,CAAA,EAAA,sBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,OAAO;AAwBP,CAAA,EAAA,sBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,OAAO;AASP,CAAA,EAAA,sBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;4FA3MQ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,WAAW,EAAE,6BAA6B;oBAC1C,SAAS,EAAE,CAAC,0BAA0B,CAAC;oBACvC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,SAAS,EAAE,CAAC,aAAa,EAAE,0BAA0B,wBAAwB,CAAC;AACjF,iBAAA,CAAA;;0BAkDQ,QAAQ;;0BACR,IAAI;;0BACJ,MAAM;2BAAC,SAAS,CAAA;;0BAEhB,MAAM;2BAAC,iBAAiB,CAAA;;0BAExB,MAAM;2BAAC,aAAa,CAAA;;0BAEpB,MAAM;2BAAC,oBAAoB,CAAA;;0BAc3B,MAAM;2BAAC,uBAAuB,CAAA;4CAlElB,KAAK,EAAA,CAAA;sBADrB,SAAS;uBAAC,OAAO,CAAA;gBAMT,WAAW,EAAA,CAAA;sBADnB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,sBAAsB,CAAC,CAAA;gBAI7C,QAAQ,EAAA,CAAA;sBADhB,YAAY;uBAAC,WAAW,CAAA;gBAIhB,eAAe,EAAA,CAAA;sBADvB,SAAS;uBAAC,iBAAiB,CAAA;gBAInB,gBAAgB,EAAA,CAAA;sBADxB,SAAS;uBAAC,kBAAkB,CAAA;gBAI7B,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAON,MAAM,EAAA,CAAA;sBADL,KAAK;gBAON,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIG,MAAM,EAAA,CAAA;sBADd,MAAM;gBA2EP,SAAS,EAAA,CAAA;sBAFR,YAAY;uBAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAA;;sBAChC,YAAY;uBAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAA;gBAMnC,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,QAAQ,CAAA;gBA4Bd,YAAY,EAAA,EAAA,EAiBZ,aAAa,EAAA,EAAA,EA0Bb,aAAa,EAAA,EAAA,EAAA,EAAA,CAAA;;MEtLZ,mBAAmB,CAAA;;iHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAZxB,sBAAsB;QACtB,sBAAsB;AACtB,QAAA,4BAA4B,aApB5B,YAAY;QACZ,kBAAkB;QAClB,YAAY;QACZ,gBAAgB;QAChB,qBAAqB;QACrB,gBAAgB;QAChB,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,gBAAgB;QAChB,YAAY;QACZ,aAAa;QACb,eAAe;QACf,eAAe;QACf,cAAc;AACd,QAAA,cAAc,aAQd,sBAAsB;QACtB,sBAAsB;QACtB,iBAAiB;QACjB,gBAAgB;QAChB,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAGX,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EA/BnB,OAAA,EAAA,CAAA;YACL,YAAY;YACZ,kBAAkB;YAClB,YAAY;YACZ,gBAAgB;YAChB,qBAAqB;YACrB,gBAAgB;YAChB,gBAAgB;YAChB,kBAAkB;YAClB,kBAAkB;YAClB,gBAAgB;YAChB,YAAY;YACZ,aAAa;YACb,eAAe;YACf,eAAe;YACf,cAAc;YACd,cAAc;AACjB,SAAA,CAAA,EAAA,CAAA,CAAA;4FAcQ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhC/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,kBAAkB;wBAClB,YAAY;wBACZ,gBAAgB;wBAChB,qBAAqB;wBACrB,gBAAgB;wBAChB,gBAAgB;wBAChB,kBAAkB;wBAClB,kBAAkB;wBAClB,gBAAgB;wBAChB,YAAY;wBACZ,aAAa;wBACb,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,cAAc;AACjB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,sBAAsB;wBACtB,sBAAsB;wBACtB,4BAA4B;AAC/B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,sBAAsB;wBACtB,sBAAsB;wBACtB,iBAAiB;wBACjB,gBAAgB;wBAChB,gBAAgB;AACnB,qBAAA;AACJ,iBAAA,CAAA;;;AC9DD;;AAEG;;;;"}
@@ -25,8 +25,13 @@ class TuiInputInlineComponent extends AbstractTuiControl {
25
25
  get hasValue() {
26
26
  return this.value !== '';
27
27
  }
28
- /** @deprecated use 'value' setter */
29
28
  onValueChange(value) {
29
+ if (!this.text) {
30
+ return;
31
+ }
32
+ // Sync update so width is calculated immediately
33
+ this.text.nativeElement.textContent = value;
34
+ this.text.nativeElement.style.textIndent = '';
30
35
  this.value = value;
31
36
  }
32
37
  onFocused(focused) {
@@ -46,7 +51,7 @@ TuiInputInlineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0",
46
51
  TuiInputInlineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputInlineComponent, selector: "tui-input-inline", inputs: { maxLength: "maxLength" }, providers: [
47
52
  TUI_VALUE_ACCESSOR_PROVIDER,
48
53
  tuiAsFocusableItemAccessor(TuiInputInlineComponent),
49
- ], viewQueries: [{ propertyName: "native", first: true, predicate: ["native"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span\n class=\"t-before\"\n [style.text-indent.px]=\"indent\"\n [textContent]=\"value\"\n></span>\n\n<span\n *ngIf=\"!hasValue\"\n automation-id=\"tui-input-inline__placeholder\"\n class=\"t-placeholder\"\n>\n <ng-content></ng-content>\n</span>\n\n<input\n #native\n automation-id=\"tui-input-inline__native\"\n type=\"text\"\n tuiMaskAccessor\n class=\"t-native\"\n [attr.maxLength]=\"maxLength\"\n [id]=\"id\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [tuiFocusable]=\"focusable\"\n [(ngModel)]=\"value\"\n (scroll)=\"onScroll()\"\n (tuiFocusedChange)=\"onFocused($event)\"\n/>\n", styles: [":host{position:relative;display:inline-block;overflow:hidden;white-space:nowrap;box-sizing:border-box}.t-before{display:block;padding-right:.02em;margin-left:1px;white-space:pre}.t-placeholder{display:inline-block;min-width:1px}.t-native{position:absolute;top:0;left:0;background-color:transparent;padding:inherit;font:inherit;-webkit-text-fill-color:transparent;box-sizing:border-box;width:100%;height:100%;border-width:0;text-align:inherit;letter-spacing:inherit;text-indent:inherit;text-transform:inherit;outline:none}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TuiMaskAccessorDirective, selector: "input[tuiMaskAccessor]" }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.TuiFocusedDirective, selector: "[tuiFocusedChange]", outputs: ["tuiFocusedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
54
+ ], viewQueries: [{ propertyName: "native", first: true, predicate: ["native"], descendants: true }, { propertyName: "text", first: true, predicate: ["text"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span\n #text\n class=\"t-before\"\n [style.text-indent.px]=\"indent\"\n [textContent]=\"value\"\n></span>\n\n<span\n *ngIf=\"!hasValue\"\n automation-id=\"tui-input-inline__placeholder\"\n class=\"t-placeholder\"\n>\n <ng-content></ng-content>\n</span>\n\n<input\n #native\n automation-id=\"tui-input-inline__native\"\n type=\"text\"\n tuiMaskAccessor\n class=\"t-native\"\n [attr.maxLength]=\"maxLength\"\n [id]=\"id\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [tuiFocusable]=\"focusable\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (scroll)=\"onScroll()\"\n (tuiFocusedChange)=\"onFocused($event)\"\n/>\n", styles: [":host{position:relative;display:inline-block;overflow:hidden;white-space:nowrap;box-sizing:border-box}.t-before{display:block;padding-right:.02em;margin-left:1px;white-space:pre}.t-placeholder{display:inline-block;min-width:1px}.t-native{position:absolute;top:0;left:0;background-color:transparent;padding:inherit;font:inherit;-webkit-text-fill-color:transparent;box-sizing:border-box;width:100%;height:100%;border-width:0;text-align:inherit;letter-spacing:inherit;text-indent:inherit;text-transform:inherit;outline:none}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TuiMaskAccessorDirective, selector: "input[tuiMaskAccessor]" }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.TuiFocusedDirective, selector: "[tuiFocusedChange]", outputs: ["tuiFocusedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputInlineComponent, decorators: [{
51
56
  type: Component,
52
57
  args: [{
@@ -72,6 +77,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
72
77
  }] }]; }, propDecorators: { native: [{
73
78
  type: ViewChild,
74
79
  args: ['native']
80
+ }], text: [{
81
+ type: ViewChild,
82
+ args: ['text']
75
83
  }], maxLength: [{
76
84
  type: Input
77
85
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-inline.js","sources":["../../../projects/kit/components/input-inline/input-inline.component.ts","../../../projects/kit/components/input-inline/input-inline.template.html","../../../projects/kit/components/input-inline/input-inline.module.ts","../../../projects/kit/components/input-inline/taiga-ui-kit-components-input-inline.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n tuiAsFocusableItemAccessor,\n TuiFocusableElementAccessor,\n tuiIsNativeFocused,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk';\nimport {TUI_VALUE_ACCESSOR_PROVIDER} from '@taiga-ui/kit/providers';\n\n@Component({\n selector: 'tui-input-inline',\n templateUrl: './input-inline.template.html',\n styleUrls: ['./input-inline.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TUI_VALUE_ACCESSOR_PROVIDER,\n tuiAsFocusableItemAccessor(TuiInputInlineComponent),\n ],\n})\nexport class TuiInputInlineComponent\n extends AbstractTuiControl<number | string>\n implements TuiFocusableElementAccessor\n{\n @ViewChild('native')\n private readonly native?: ElementRef<HTMLInputElement>;\n\n @Input()\n maxLength: number | null = null;\n\n indent = -1;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) cdr: ChangeDetectorRef,\n ) {\n super(control, cdr);\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement | null {\n return !this.native ? null : this.native.nativeElement;\n }\n\n get focused(): boolean {\n return tuiIsNativeFocused(this.nativeFocusableElement);\n }\n\n get hasValue(): boolean {\n return this.value !== '';\n }\n\n /** @deprecated use 'value' setter */\n onValueChange(value: string): void {\n this.value = value;\n }\n\n onFocused(focused: boolean): void {\n this.updateFocused(focused);\n }\n\n onScroll(): void {\n const indent = this.native?.nativeElement.scrollLeft || 0;\n\n // -1 for Safari (see styles)\n this.indent = -1 - indent;\n }\n\n protected getFallbackValue(): string {\n return '';\n }\n}\n","<span\n class=\"t-before\"\n [style.text-indent.px]=\"indent\"\n [textContent]=\"value\"\n></span>\n\n<span\n *ngIf=\"!hasValue\"\n automation-id=\"tui-input-inline__placeholder\"\n class=\"t-placeholder\"\n>\n <ng-content></ng-content>\n</span>\n\n<input\n #native\n automation-id=\"tui-input-inline__native\"\n type=\"text\"\n tuiMaskAccessor\n class=\"t-native\"\n [attr.maxLength]=\"maxLength\"\n [id]=\"id\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [tuiFocusable]=\"focusable\"\n [(ngModel)]=\"value\"\n (scroll)=\"onScroll()\"\n (tuiFocusedChange)=\"onFocused($event)\"\n/>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiFocusableModule, TuiFocusedModule} from '@taiga-ui/cdk';\nimport {TuiMaskAccessorModule} from '@taiga-ui/core';\n\nimport {TuiInputInlineComponent} from './input-inline.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TuiFocusableModule,\n TuiFocusedModule,\n TuiMaskAccessorModule,\n ],\n declarations: [TuiInputInlineComponent],\n exports: [TuiInputInlineComponent],\n})\nexport class TuiInputInlineModule {}\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-kit-components-input-inline.js","sources":["../../../projects/kit/components/input-inline/input-inline.component.ts","../../../projects/kit/components/input-inline/input-inline.template.html","../../../projects/kit/components/input-inline/input-inline.module.ts","../../../projects/kit/components/input-inline/taiga-ui-kit-components-input-inline.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n tuiAsFocusableItemAccessor,\n TuiFocusableElementAccessor,\n tuiIsNativeFocused,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk';\nimport {TUI_VALUE_ACCESSOR_PROVIDER} from '@taiga-ui/kit/providers';\n\n@Component({\n selector: 'tui-input-inline',\n templateUrl: './input-inline.template.html',\n styleUrls: ['./input-inline.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TUI_VALUE_ACCESSOR_PROVIDER,\n tuiAsFocusableItemAccessor(TuiInputInlineComponent),\n ],\n})\nexport class TuiInputInlineComponent\n extends AbstractTuiControl<number | string>\n implements TuiFocusableElementAccessor\n{\n @ViewChild('native')\n private readonly native?: ElementRef<HTMLInputElement>;\n\n @ViewChild('text')\n private readonly text?: ElementRef<HTMLElement>;\n\n @Input()\n maxLength: number | null = null;\n\n indent = -1;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) cdr: ChangeDetectorRef,\n ) {\n super(control, cdr);\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement | null {\n return !this.native ? null : this.native.nativeElement;\n }\n\n get focused(): boolean {\n return tuiIsNativeFocused(this.nativeFocusableElement);\n }\n\n get hasValue(): boolean {\n return this.value !== '';\n }\n\n onValueChange(value: string): void {\n if (!this.text) {\n return;\n }\n\n // Sync update so width is calculated immediately\n this.text.nativeElement.textContent = value;\n this.text.nativeElement.style.textIndent = '';\n this.value = value;\n }\n\n onFocused(focused: boolean): void {\n this.updateFocused(focused);\n }\n\n onScroll(): void {\n const indent = this.native?.nativeElement.scrollLeft || 0;\n\n // -1 for Safari (see styles)\n this.indent = -1 - indent;\n }\n\n protected getFallbackValue(): string {\n return '';\n }\n}\n","<span\n #text\n class=\"t-before\"\n [style.text-indent.px]=\"indent\"\n [textContent]=\"value\"\n></span>\n\n<span\n *ngIf=\"!hasValue\"\n automation-id=\"tui-input-inline__placeholder\"\n class=\"t-placeholder\"\n>\n <ng-content></ng-content>\n</span>\n\n<input\n #native\n automation-id=\"tui-input-inline__native\"\n type=\"text\"\n tuiMaskAccessor\n class=\"t-native\"\n [attr.maxLength]=\"maxLength\"\n [id]=\"id\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [tuiFocusable]=\"focusable\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (scroll)=\"onScroll()\"\n (tuiFocusedChange)=\"onFocused($event)\"\n/>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiFocusableModule, TuiFocusedModule} from '@taiga-ui/cdk';\nimport {TuiMaskAccessorModule} from '@taiga-ui/core';\n\nimport {TuiInputInlineComponent} from './input-inline.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TuiFocusableModule,\n TuiFocusedModule,\n TuiMaskAccessorModule,\n ],\n declarations: [TuiInputInlineComponent],\n exports: [TuiInputInlineComponent],\n})\nexport class TuiInputInlineModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -4,18 +4,16 @@ import { InjectionToken, EventEmitter, ChangeDetectorRef, TemplateRef, Component
4
4
  import * as i5 from '@angular/forms';
5
5
  import { NgControl } from '@angular/forms';
6
6
  import { maskitoTransform, MASKITO_DEFAULT_OPTIONS } from '@maskito/core';
7
- import { maskitoPrefixPostprocessorGenerator } from '@maskito/kit';
7
+ import { maskitoPrefixPostprocessorGenerator, maskitoCaretGuard } from '@maskito/kit';
8
8
  import * as i2 from '@taiga-ui/cdk';
9
- import { AbstractTuiControl, tuiIsNativeFocused, TuiDestroyService, tuiAsFocusableItemAccessor, tuiAsControl, tuiPure, TuiActiveZoneModule } from '@taiga-ui/cdk';
9
+ import { AbstractTuiControl, tuiIsNativeFocused, tuiAsFocusableItemAccessor, tuiAsControl, tuiPure, TuiActiveZoneModule } from '@taiga-ui/cdk';
10
10
  import * as i1 from '@taiga-ui/core';
11
- import { TUI_MASK_SYMBOLS_REGEXP, TUI_SELECTION_STREAM, TUI_TEXTFIELD_CLEANER, tuiAsDataListHost, TuiDataListDirective, TuiHostedDropdownComponent, TuiPrimitiveTextfieldComponent, AbstractTuiTextfieldHost, tuiAsTextfieldHost, TuiPrimitiveTextfieldModule, TuiHostedDropdownModule, TuiTextfieldControllerModule, TuiTextfieldComponent } from '@taiga-ui/core';
11
+ import { TUI_MASK_SYMBOLS_REGEXP, TUI_TEXTFIELD_CLEANER, tuiAsDataListHost, TuiDataListDirective, TuiHostedDropdownComponent, TuiPrimitiveTextfieldComponent, AbstractTuiTextfieldHost, tuiAsTextfieldHost, TuiPrimitiveTextfieldModule, TuiHostedDropdownModule, TuiTextfieldControllerModule, TuiTextfieldComponent } from '@taiga-ui/core';
12
12
  import { FIXED_DROPDOWN_CONTROLLER_PROVIDER } from '@taiga-ui/kit/providers';
13
- import { takeUntil } from 'rxjs/operators';
14
13
  import * as i3 from '@taiga-ui/kit/directives';
15
14
  import { TuiValueAccessorModule } from '@taiga-ui/kit/directives';
16
15
  import * as i4 from '@maskito/angular';
17
16
  import { MaskitoModule } from '@maskito/angular';
18
- import * as i6 from 'rxjs';
19
17
 
20
18
  const TUI_INPUT_PHONE_DEFAULT_OPTIONS = {
21
19
  phoneMaskAfterCountryCode: `### ###-##-##`,
@@ -94,7 +92,7 @@ function tuiCreatePhoneMaskExpression(countryCode, phoneMaskAfterCountryCode) {
94
92
  }
95
93
 
96
94
  class TuiInputPhoneComponent extends AbstractTuiControl {
97
- constructor(control, destroy$, cdr, selection$, textfieldCleaner, options) {
95
+ constructor(control, cdr, textfieldCleaner, options) {
98
96
  super(control, cdr);
99
97
  this.textfieldCleaner = textfieldCleaner;
100
98
  this.options = options;
@@ -104,9 +102,6 @@ class TuiInputPhoneComponent extends AbstractTuiControl {
104
102
  this.searchChange = new EventEmitter();
105
103
  this.countryCode = this.options.countryCode;
106
104
  this.open = false;
107
- selection$.pipe(takeUntil(destroy$)).subscribe(() => {
108
- this.setCaretPosition();
109
- });
110
105
  }
111
106
  set countryCodeSetter(newCountryCode) {
112
107
  const prevCountryCode = this.countryCode;
@@ -186,23 +181,9 @@ class TuiInputPhoneComponent extends AbstractTuiControl {
186
181
  getFallbackValue() {
187
182
  return '';
188
183
  }
189
- get caretIsInForbiddenArea() {
190
- const { nativeFocusableElement } = this;
191
- if (!nativeFocusableElement) {
192
- return false;
193
- }
194
- const { selectionStart, selectionEnd } = nativeFocusableElement;
195
- return (tuiIsNativeFocused(nativeFocusableElement) &&
196
- selectionStart !== null &&
197
- selectionStart < this.nonRemovableLength &&
198
- selectionStart === selectionEnd);
199
- }
200
184
  get nonRemovablePrefix() {
201
185
  return `${this.countryCode} `;
202
186
  }
203
- get nonRemovableLength() {
204
- return this.isTextValue ? 0 : this.nonRemovablePrefix.length;
205
- }
206
187
  get maxPhoneLength() {
207
188
  return (this.countryCode.length +
208
189
  this.phoneMaskAfterCountryCode.replace(/[^#]+/g, '').length);
@@ -228,13 +209,14 @@ class TuiInputPhoneComponent extends AbstractTuiControl {
228
209
  postprocessors: [
229
210
  maskitoPrefixPostprocessorGenerator(nonRemovablePrefix),
230
211
  ],
212
+ plugins: [
213
+ maskitoCaretGuard((value, [from, to]) => [
214
+ from === to ? nonRemovablePrefix.length : 0,
215
+ value.length,
216
+ ]),
217
+ ],
231
218
  };
232
219
  }
233
- setCaretPosition() {
234
- if (this.caretIsInForbiddenArea && !!this.nativeFocusableElement) {
235
- this.nativeFocusableElement.setSelectionRange(this.nonRemovableLength, this.nonRemovableLength);
236
- }
237
- }
238
220
  focusInput() {
239
221
  if (this.nativeFocusableElement) {
240
222
  this.nativeFocusableElement.focus({ preventScroll: true });
@@ -254,9 +236,8 @@ class TuiInputPhoneComponent extends AbstractTuiControl {
254
236
  }
255
237
  }
256
238
  }
257
- TuiInputPhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputPhoneComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: TuiDestroyService, self: true }, { token: ChangeDetectorRef }, { token: TUI_SELECTION_STREAM }, { token: TUI_TEXTFIELD_CLEANER }, { token: TUI_INPUT_PHONE_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
239
+ TuiInputPhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputPhoneComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_TEXTFIELD_CLEANER }, { token: TUI_INPUT_PHONE_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
258
240
  TuiInputPhoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputPhoneComponent, selector: "tui-input-phone", inputs: { countryCodeSetter: ["countryCode", "countryCodeSetter"], phoneMaskAfterCountryCode: "phoneMaskAfterCountryCode", allowText: "allowText", search: "search" }, outputs: { searchChange: "searchChange" }, providers: [
259
- TuiDestroyService,
260
241
  tuiAsFocusableItemAccessor(TuiInputPhoneComponent),
261
242
  tuiAsControl(TuiInputPhoneComponent),
262
243
  tuiAsDataListHost(TuiInputPhoneComponent),
@@ -272,7 +253,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
272
253
  styleUrls: ['./input-phone.style.less'],
273
254
  changeDetection: ChangeDetectionStrategy.OnPush,
274
255
  providers: [
275
- TuiDestroyService,
276
256
  tuiAsFocusableItemAccessor(TuiInputPhoneComponent),
277
257
  tuiAsControl(TuiInputPhoneComponent),
278
258
  tuiAsDataListHost(TuiInputPhoneComponent),
@@ -286,17 +266,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
286
266
  }, {
287
267
  type: Inject,
288
268
  args: [NgControl]
289
- }] }, { type: i6.Observable, decorators: [{
290
- type: Self
291
- }, {
292
- type: Inject,
293
- args: [TuiDestroyService]
294
269
  }] }, { type: i0.ChangeDetectorRef, decorators: [{
295
270
  type: Inject,
296
271
  args: [ChangeDetectorRef]
297
- }] }, { type: i6.Observable, decorators: [{
298
- type: Inject,
299
- args: [TUI_SELECTION_STREAM]
300
272
  }] }, { type: i1.TuiTextfieldCleanerDirective, decorators: [{
301
273
  type: Inject,
302
274
  args: [TUI_TEXTFIELD_CLEANER]