@taiga-ui/kit 4.49.0-canary.8c4d1de → 4.49.0-canary.b853f27

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.
@@ -1,14 +1,13 @@
1
1
  import { TuiControl } from '@taiga-ui/cdk/classes';
2
- import { type TuiAppearanceOptions } from '@taiga-ui/core/directives/appearance';
3
2
  import { type TuiFileLike } from '../files.types';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "@taiga-ui/cdk/directives/native-validator";
6
5
  import * as i2 from "@taiga-ui/core/directives/appearance";
7
6
  import * as i3 from "./input-files-validator.directive";
8
- export declare class TuiInputFilesDirective extends TuiControl<TuiFileLike | readonly TuiFileLike[]> implements TuiAppearanceOptions {
7
+ export declare class TuiInputFilesDirective extends TuiControl<TuiFileLike | readonly TuiFileLike[]> {
9
8
  protected readonly host: any;
9
+ protected readonly m: import("@angular/core").Signal<string | readonly string[] | null>;
10
10
  readonly reject: import("rxjs").Observable<File[]>;
11
- readonly appearance = "file";
12
11
  readonly input: HTMLInputElement;
13
12
  process(files: FileList): void;
14
13
  protected onClick(event: MouseEvent): void;
@@ -1,6 +1,7 @@
1
1
  import { InjectionToken, type Provider } from '@angular/core';
2
+ import { type TuiAppearanceOptions } from '@taiga-ui/core/directives/appearance';
2
3
  import { type TuiSizeL } from '@taiga-ui/core/types';
3
- export interface TuiInputFilesOptions {
4
+ export interface TuiInputFilesOptions extends TuiAppearanceOptions {
4
5
  accept: string;
5
6
  maxFileSize: number;
6
7
  multiple: boolean;
@@ -7,6 +7,8 @@ export declare class TuiInputNumberDirective extends TuiControl<number | null> {
7
7
  private readonly options;
8
8
  private readonly textfield;
9
9
  private readonly isIOS;
10
+ private readonly minRaw;
11
+ private readonly maxRaw;
10
12
  private readonly numberFormat;
11
13
  private readonly formatted;
12
14
  private readonly precision;
@@ -17,8 +19,8 @@ export declare class TuiInputNumberDirective extends TuiControl<number | null> {
17
19
  protected readonly defaultMaxLength: import("@angular/core").Signal<number>;
18
20
  protected readonly onChangeEffect: import("@angular/core").EffectRef;
19
21
  protected maskInitialCalibrationEffect: import("@angular/core").EffectRef;
20
- readonly min: import("@angular/core").WritableSignal<number>;
21
- readonly max: import("@angular/core").WritableSignal<number>;
22
+ readonly min: import("@angular/core").Signal<number>;
23
+ readonly max: import("@angular/core").Signal<number>;
22
24
  readonly prefix: import("@angular/core").WritableSignal<string>;
23
25
  readonly postfix: import("@angular/core").WritableSignal<string>;
24
26
  set minSetter(x: number | null);
@@ -30,7 +32,6 @@ export declare class TuiInputNumberDirective extends TuiControl<number | null> {
30
32
  protected onFocus(): void;
31
33
  private get maskParams();
32
34
  private formatNumber;
33
- private updateMinMaxLimits;
34
35
  private computeMask;
35
36
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputNumberDirective, never>;
36
37
  static ɵdir: i0.ɵɵDirectiveDeclaration<TuiInputNumberDirective, "input[tuiInputNumber]", never, { "minSetter": { "alias": "min"; "required": false; }; "maxSetter": { "alias": "max"; "required": false; }; "prefixSetter": { "alias": "prefix"; "required": false; }; "postfixSetter": { "alias": "postfix"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiWithTextfield; inputs: {}; outputs: {}; }, { directive: typeof i2.MaskitoDirective; inputs: {}; outputs: {}; }]>;
@@ -1,5 +1,5 @@
1
1
  import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef, ViewEncapsulation, } from '@angular/core';
2
- import { PolymorpheusComponent, PolymorpheusOutlet, PolymorpheusTemplate, } from '@taiga-ui/polymorpheus';
2
+ import { PolymorpheusComponent, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
3
3
  import { TuiInputFilesContent } from './input-files.content';
4
4
  import { TuiInputFilesDirective } from './input-files.directive';
5
5
  import * as i0 from "@angular/core";
@@ -37,12 +37,12 @@ class TuiInputFiles {
37
37
  >
38
38
  {{ text }}
39
39
  </span>
40
- `, isInline: true, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:invalid{border-color:var(--tui-status-negative)!important}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
+ `, isInline: true, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:not(:disabled)[data-mode~=invalid],[tuiAppearance][data-appearance=file]:invalid:not(:disabled):not([data-mode]){border-color:var(--tui-status-negative)!important}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
41
41
  }
42
42
  export { TuiInputFiles };
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputFiles, decorators: [{
44
44
  type: Component,
45
- args: [{ standalone: true, selector: 'label[tuiInputFiles]', imports: [PolymorpheusOutlet, PolymorpheusTemplate], template: `
45
+ args: [{ standalone: true, selector: 'label[tuiInputFiles]', imports: [PolymorpheusOutlet], template: `
46
46
  <ng-content />
47
47
  <span
48
48
  *polymorpheusOutlet="
@@ -59,7 +59,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
59
59
  '(dragleave)': 'onDrag(null)',
60
60
  '[class._dragged]': 'fileDragged',
61
61
  '(change)': 'onFilesSelected($event.target)',
62
- }, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:invalid{border-color:var(--tui-status-negative)!important}\n"] }]
62
+ }, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:not(:disabled)[data-mode~=invalid],[tuiAppearance][data-appearance=file]:invalid:not(:disabled):not([data-mode]){border-color:var(--tui-status-negative)!important}\n"] }]
63
63
  }], propDecorators: { template: [{
64
64
  type: ContentChild,
65
65
  args: [TemplateRef]
@@ -67,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
67
67
  type: ContentChild,
68
68
  args: [TuiInputFilesDirective]
69
69
  }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvZmlsZXMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLG9CQUFvQixHQUN2QixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDOztBQUUvRCxNQTJCYSxhQUFhO0lBM0IxQjtRQWdDdUIsWUFBTyxHQUFHLElBQUkscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQTZCaEY7SUF4QkcsSUFBYyxXQUFXO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFUyxlQUFlLENBQUMsS0FBdUI7UUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVTLFNBQVMsQ0FBQyxFQUFDLFlBQVksRUFBWTtRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUVsQixJQUFJLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQztJQUNMLENBQUM7SUFFUyxNQUFNLENBQUMsWUFBaUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLEVBQUUsS0FBSyxDQUFDO0lBQ3JDLENBQUM7K0dBakNRLGFBQWE7bUdBQWIsYUFBYSw0WEFDUixXQUFXLHdFQU1YLHNCQUFzQixnREE5QjFCOzs7Ozs7Ozs7O0tBVVQsMHpIQVhTLGtCQUFrQjs7U0F3Qm5CLGFBQWE7NEZBQWIsYUFBYTtrQkEzQnpCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHNCQUFzQixXQUN2QixDQUFDLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDLFlBQ3pDOzs7Ozs7Ozs7O0tBVVQsaUJBRWMsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRiw2QkFBNkIsRUFBRSxHQUFHO3dCQUNsQyxnQkFBZ0IsRUFBRSxtQkFBbUI7d0JBQ3JDLGFBQWEsRUFBRSw2QkFBNkI7d0JBQzVDLGFBQWEsRUFBRSxjQUFjO3dCQUM3QixrQkFBa0IsRUFBRSxhQUFhO3dCQUNqQyxVQUFVLEVBQUUsZ0NBQWdDO3FCQUMvQzs4QkFJa0IsUUFBUTtzQkFEMUIsWUFBWTt1QkFBQyxXQUFXO2dCQU9ULEtBQUs7c0JBRHBCLFlBQVk7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHlwZSBUdWlDb250ZXh0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7XG4gICAgUG9seW1vcnBoZXVzQ29tcG9uZW50LFxuICAgIFBvbHltb3JwaGV1c091dGxldCxcbiAgICBQb2x5bW9ycGhldXNUZW1wbGF0ZSxcbn0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5cbmltcG9ydCB7VHVpSW5wdXRGaWxlc0NvbnRlbnR9IGZyb20gJy4vaW5wdXQtZmlsZXMuY29udGVudCc7XG5pbXBvcnQge1R1aUlucHV0RmlsZXNEaXJlY3RpdmV9IGZyb20gJy4vaW5wdXQtZmlsZXMuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2xhYmVsW3R1aUlucHV0RmlsZXNdJyxcbiAgICBpbXBvcnRzOiBbUG9seW1vcnBoZXVzT3V0bGV0LCBQb2x5bW9ycGhldXNUZW1wbGF0ZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZSB8fCBjb250ZW50IGFzIHRleHQ7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyRpbXBsaWNpdDogZmlsZURyYWdnZWR9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICBgLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWZpbGVzLnN0eWxlLmxlc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhkcmFnb3Zlci5wcmV2ZW50LnpvbmVsZXNzKSc6ICcwJyxcbiAgICAgICAgJyhkcm9wLnByZXZlbnQpJzogJ29uRHJvcHBlZCgkZXZlbnQpJyxcbiAgICAgICAgJyhkcmFnZW50ZXIpJzogJ29uRHJhZygkZXZlbnQuZGF0YVRyYW5zZmVyKScsXG4gICAgICAgICcoZHJhZ2xlYXZlKSc6ICdvbkRyYWcobnVsbCknLFxuICAgICAgICAnW2NsYXNzLl9kcmFnZ2VkXSc6ICdmaWxlRHJhZ2dlZCcsXG4gICAgICAgICcoY2hhbmdlKSc6ICdvbkZpbGVzU2VsZWN0ZWQoJGV2ZW50LnRhcmdldCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0RmlsZXMge1xuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VHVpQ29udGV4dDxib29sZWFuPj47XG5cbiAgICBwcm90ZWN0ZWQgZmlsZXM/OiBGaWxlTGlzdCB8IG51bGw7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRlbnQgPSBuZXcgUG9seW1vcnBoZXVzQ29tcG9uZW50KFR1aUlucHV0RmlsZXNDb250ZW50KTtcblxuICAgIEBDb250ZW50Q2hpbGQoVHVpSW5wdXRGaWxlc0RpcmVjdGl2ZSlcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5wdXQ/OiBUdWlJbnB1dEZpbGVzRGlyZWN0aXZlO1xuXG4gICAgcHJvdGVjdGVkIGdldCBmaWxlRHJhZ2dlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5maWxlcyAmJiAhdGhpcy5pbnB1dD8uZGlzYWJsZWQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25GaWxlc1NlbGVjdGVkKGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghaW5wdXQ/LmZpbGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0Py5wcm9jZXNzKGlucHV0LmZpbGVzKTtcbiAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Ecm9wcGVkKHtkYXRhVHJhbnNmZXJ9OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWxlcyA9IG51bGw7XG5cbiAgICAgICAgaWYgKGRhdGFUcmFuc2Zlcj8uZmlsZXMgJiYgIXRoaXMuaW5wdXQ/LmRpc2FibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQ/LnByb2Nlc3MoZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkRyYWcoZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBkYXRhVHJhbnNmZXI/LmZpbGVzO1xuICAgIH1cbn1cbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvZmlsZXMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRWpGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDOztBQUUvRCxNQTJCYSxhQUFhO0lBM0IxQjtRQWdDdUIsWUFBTyxHQUFHLElBQUkscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQTZCaEY7SUF4QkcsSUFBYyxXQUFXO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFUyxlQUFlLENBQUMsS0FBdUI7UUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVTLFNBQVMsQ0FBQyxFQUFDLFlBQVksRUFBWTtRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUVsQixJQUFJLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQztJQUNMLENBQUM7SUFFUyxNQUFNLENBQUMsWUFBaUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLEVBQUUsS0FBSyxDQUFDO0lBQ3JDLENBQUM7K0dBakNRLGFBQWE7bUdBQWIsYUFBYSw0WEFDUixXQUFXLHdFQU1YLHNCQUFzQixnREE5QjFCOzs7Ozs7Ozs7O0tBVVQsbTZIQVhTLGtCQUFrQjs7U0F3Qm5CLGFBQWE7NEZBQWIsYUFBYTtrQkEzQnpCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHNCQUFzQixXQUN2QixDQUFDLGtCQUFrQixDQUFDLFlBQ25COzs7Ozs7Ozs7O0tBVVQsaUJBRWMsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRiw2QkFBNkIsRUFBRSxHQUFHO3dCQUNsQyxnQkFBZ0IsRUFBRSxtQkFBbUI7d0JBQ3JDLGFBQWEsRUFBRSw2QkFBNkI7d0JBQzVDLGFBQWEsRUFBRSxjQUFjO3dCQUM3QixrQkFBa0IsRUFBRSxhQUFhO3dCQUNqQyxVQUFVLEVBQUUsZ0NBQWdDO3FCQUMvQzs4QkFJa0IsUUFBUTtzQkFEMUIsWUFBWTt1QkFBQyxXQUFXO2dCQU9ULEtBQUs7c0JBRHBCLFlBQVk7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHlwZSBUdWlDb250ZXh0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29tcG9uZW50LCBQb2x5bW9ycGhldXNPdXRsZXR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuXG5pbXBvcnQge1R1aUlucHV0RmlsZXNDb250ZW50fSBmcm9tICcuL2lucHV0LWZpbGVzLmNvbnRlbnQnO1xuaW1wb3J0IHtUdWlJbnB1dEZpbGVzRGlyZWN0aXZlfSBmcm9tICcuL2lucHV0LWZpbGVzLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdsYWJlbFt0dWlJbnB1dEZpbGVzXScsXG4gICAgaW1wb3J0czogW1BvbHltb3JwaGV1c091dGxldF0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZSB8fCBjb250ZW50IGFzIHRleHQ7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyRpbXBsaWNpdDogZmlsZURyYWdnZWR9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICBgLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWZpbGVzLnN0eWxlLmxlc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhkcmFnb3Zlci5wcmV2ZW50LnpvbmVsZXNzKSc6ICcwJyxcbiAgICAgICAgJyhkcm9wLnByZXZlbnQpJzogJ29uRHJvcHBlZCgkZXZlbnQpJyxcbiAgICAgICAgJyhkcmFnZW50ZXIpJzogJ29uRHJhZygkZXZlbnQuZGF0YVRyYW5zZmVyKScsXG4gICAgICAgICcoZHJhZ2xlYXZlKSc6ICdvbkRyYWcobnVsbCknLFxuICAgICAgICAnW2NsYXNzLl9kcmFnZ2VkXSc6ICdmaWxlRHJhZ2dlZCcsXG4gICAgICAgICcoY2hhbmdlKSc6ICdvbkZpbGVzU2VsZWN0ZWQoJGV2ZW50LnRhcmdldCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0RmlsZXMge1xuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VHVpQ29udGV4dDxib29sZWFuPj47XG5cbiAgICBwcm90ZWN0ZWQgZmlsZXM/OiBGaWxlTGlzdCB8IG51bGw7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRlbnQgPSBuZXcgUG9seW1vcnBoZXVzQ29tcG9uZW50KFR1aUlucHV0RmlsZXNDb250ZW50KTtcblxuICAgIEBDb250ZW50Q2hpbGQoVHVpSW5wdXRGaWxlc0RpcmVjdGl2ZSlcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5wdXQ/OiBUdWlJbnB1dEZpbGVzRGlyZWN0aXZlO1xuXG4gICAgcHJvdGVjdGVkIGdldCBmaWxlRHJhZ2dlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5maWxlcyAmJiAhdGhpcy5pbnB1dD8uZGlzYWJsZWQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25GaWxlc1NlbGVjdGVkKGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghaW5wdXQ/LmZpbGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0Py5wcm9jZXNzKGlucHV0LmZpbGVzKTtcbiAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Ecm9wcGVkKHtkYXRhVHJhbnNmZXJ9OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWxlcyA9IG51bGw7XG5cbiAgICAgICAgaWYgKGRhdGFUcmFuc2Zlcj8uZmlsZXMgJiYgIXRoaXMuaW5wdXQ/LmRpc2FibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQ/LnByb2Nlc3MoZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkRyYWcoZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBkYXRhVHJhbnNmZXI/LmZpbGVzO1xuICAgIH1cbn1cbiJdfQ==
@@ -5,10 +5,11 @@ import { EMPTY_ARRAY } from '@taiga-ui/cdk/constants';
5
5
  import { TuiNativeValidator } from '@taiga-ui/cdk/directives/native-validator';
6
6
  import { tuiControlValue, tuiZonefreeScheduler } from '@taiga-ui/cdk/observables';
7
7
  import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
8
- import { tuiAppearanceOptionsProvider, TuiWithAppearance, } from '@taiga-ui/core/directives/appearance';
8
+ import { tuiAppearanceMode, tuiAppearanceOptionsProvider, TuiWithAppearance, } from '@taiga-ui/core/directives/appearance';
9
9
  import { filter, map, switchMap, timer } from 'rxjs';
10
10
  import { tuiFilesRejected } from '../files.utils';
11
11
  import { TuiInputFiles } from './input-files.component';
12
+ import { TUI_INPUT_FILES_OPTIONS } from './input-files.options';
12
13
  import { TuiInputFilesValidator } from './input-files-validator.directive';
13
14
  import * as i0 from "@angular/core";
14
15
  import * as i1 from "@taiga-ui/cdk/directives/native-validator";
@@ -18,8 +19,8 @@ class TuiInputFilesDirective extends TuiControl {
18
19
  constructor() {
19
20
  super(...arguments);
20
21
  this.host = inject(forwardRef(() => TuiInputFiles));
22
+ this.m = tuiAppearanceMode(this.mode, {});
21
23
  this.reject = timer(0, tuiZonefreeScheduler()).pipe(switchMap(() => tuiControlValue(this.control.control)), map(() => tuiFilesRejected(this.control.control)), filter(({ length }) => !!length));
22
- this.appearance = 'file';
23
24
  this.input = tuiInjectElement();
24
25
  }
25
26
  process(files) {
@@ -38,7 +39,7 @@ class TuiInputFilesDirective extends TuiControl {
38
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputFilesDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
39
40
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputFilesDirective, isStandalone: true, selector: "input[tuiInputFiles]", outputs: { reject: "reject" }, host: { attributes: { "title": "", "type": "file" }, listeners: { "blur": "onTouched()", "click": "onClick($event)" }, properties: { "disabled": "disabled()" } }, providers: [
40
41
  tuiAsControl(TuiInputFilesDirective),
41
- tuiAppearanceOptionsProvider(TuiInputFilesDirective),
42
+ tuiAppearanceOptionsProvider(TUI_INPUT_FILES_OPTIONS),
42
43
  ], usesInheritance: true, hostDirectives: [{ directive: i1.TuiNativeValidator }, { directive: i2.TuiWithAppearance }, { directive: i3.TuiInputFilesValidator, inputs: ["accept", "accept", "maxFileSize", "maxFileSize"] }], ngImport: i0 }); }
43
44
  }
44
45
  export { TuiInputFilesDirective };
@@ -49,7 +50,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
49
50
  selector: 'input[tuiInputFiles]',
50
51
  providers: [
51
52
  tuiAsControl(TuiInputFilesDirective),
52
- tuiAppearanceOptionsProvider(TuiInputFilesDirective),
53
+ tuiAppearanceOptionsProvider(TUI_INPUT_FILES_OPTIONS),
53
54
  ],
54
55
  hostDirectives: [
55
56
  TuiNativeValidator,
@@ -73,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
73
74
  function toArray(value) {
74
75
  return value ? coerceArray(value) : EMPTY_ARRAY;
75
76
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvZmlsZXMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxlQUFlLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBRUgsNEJBQTRCLEVBQzVCLGlCQUFpQixHQUNwQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHbkQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7OztBQUV6RSxNQXVCYSxzQkFDVCxTQUFRLFVBQWdEO0lBeEI1RDs7UUEyQnVCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFHbEQsV0FBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDMUQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ3RELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ2pELE1BQU0sQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDakMsQ0FBQztRQUVjLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDcEIsVUFBSyxHQUFHLGdCQUFnQixFQUFvQixDQUFDO0tBaUJoRTtJQWZVLE9BQU8sQ0FBQyxLQUFlO1FBQzFCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUNuQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVmLElBQUksV0FBVyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFUyxPQUFPLENBQUMsS0FBaUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNyQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDOytHQTlCUSxzQkFBc0I7bUdBQXRCLHNCQUFzQixxUUFwQnBCO1lBQ1AsWUFBWSxDQUFDLHNCQUFzQixDQUFDO1lBQ3BDLDRCQUE0QixDQUFDLHNCQUFzQixDQUFDO1NBQ3ZEOztTQWlCUSxzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkF2QmxDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFNBQVMsRUFBRTt3QkFDUCxZQUFZLHdCQUF3Qjt3QkFDcEMsNEJBQTRCLHdCQUF3QjtxQkFDdkQ7b0JBQ0QsY0FBYyxFQUFFO3dCQUNaLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQjs0QkFDSSxTQUFTLEVBQUUsc0JBQXNCOzRCQUNqQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDO3lCQUNwQztxQkFDSjtvQkFDRCxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsSUFBSSxFQUFFLE1BQU07d0JBQ1osWUFBWSxFQUFFLFlBQVk7d0JBQzFCLFFBQVEsRUFBRSxhQUFhO3dCQUN2QixTQUFTLEVBQUUsaUJBQWlCO3FCQUMvQjtpQkFDSjs4QkFRbUIsTUFBTTtzQkFEckIsTUFBTTs7QUEyQlgsU0FBUyxPQUFPLENBQ1osS0FBa0Q7SUFFbEQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvZXJjZUFycmF5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtEaXJlY3RpdmUsIGZvcndhcmRSZWYsIGluamVjdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtFTVBUWV9BUlJBWX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtUdWlOYXRpdmVWYWxpZGF0b3J9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9uYXRpdmUtdmFsaWRhdG9yJztcbmltcG9ydCB7dHVpQ29udHJvbFZhbHVlLCB0dWlab25lZnJlZVNjaGVkdWxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7XG4gICAgdHlwZSBUdWlBcHBlYXJhbmNlT3B0aW9ucyxcbiAgICB0dWlBcHBlYXJhbmNlT3B0aW9uc1Byb3ZpZGVyLFxuICAgIFR1aVdpdGhBcHBlYXJhbmNlLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2FwcGVhcmFuY2UnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7dHlwZSBUdWlGaWxlTGlrZX0gZnJvbSAnLi4vZmlsZXMudHlwZXMnO1xuaW1wb3J0IHt0dWlGaWxlc1JlamVjdGVkfSBmcm9tICcuLi9maWxlcy51dGlscyc7XG5pbXBvcnQge1R1aUlucHV0RmlsZXN9IGZyb20gJy4vaW5wdXQtZmlsZXMuY29tcG9uZW50JztcbmltcG9ydCB7VHVpSW5wdXRGaWxlc1ZhbGlkYXRvcn0gZnJvbSAnLi9pbnB1dC1maWxlcy12YWxpZGF0b3IuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2lucHV0W3R1aUlucHV0RmlsZXNdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0RmlsZXNEaXJlY3RpdmUpLFxuICAgICAgICB0dWlBcHBlYXJhbmNlT3B0aW9uc1Byb3ZpZGVyKFR1aUlucHV0RmlsZXNEaXJlY3RpdmUpLFxuICAgIF0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAgVHVpTmF0aXZlVmFsaWRhdG9yLFxuICAgICAgICBUdWlXaXRoQXBwZWFyYW5jZSxcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBUdWlJbnB1dEZpbGVzVmFsaWRhdG9yLFxuICAgICAgICAgICAgaW5wdXRzOiBbJ2FjY2VwdCcsICdtYXhGaWxlU2l6ZSddLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIHR5cGU6ICdmaWxlJyxcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknLFxuICAgICAgICAnKGNsaWNrKSc6ICdvbkNsaWNrKCRldmVudCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0RmlsZXNEaXJlY3RpdmVcbiAgICBleHRlbmRzIFR1aUNvbnRyb2w8VHVpRmlsZUxpa2UgfCByZWFkb25seSBUdWlGaWxlTGlrZVtdPlxuICAgIGltcGxlbWVudHMgVHVpQXBwZWFyYW5jZU9wdGlvbnNcbntcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaG9zdCA9IGluamVjdChmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0RmlsZXMpKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSByZWplY3QgPSB0aW1lcigwLCB0dWlab25lZnJlZVNjaGVkdWxlcigpKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdHVpQ29udHJvbFZhbHVlKHRoaXMuY29udHJvbC5jb250cm9sKSksXG4gICAgICAgIG1hcCgoKSA9PiB0dWlGaWxlc1JlamVjdGVkKHRoaXMuY29udHJvbC5jb250cm9sKSksXG4gICAgICAgIGZpbHRlcigoe2xlbmd0aH0pID0+ICEhbGVuZ3RoKSxcbiAgICApO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSAnZmlsZSc7XG4gICAgcHVibGljIHJlYWRvbmx5IGlucHV0ID0gdHVpSW5qZWN0RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50PigpO1xuXG4gICAgcHVibGljIHByb2Nlc3MoZmlsZXM6IEZpbGVMaXN0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbGVPckZpbGVzID0gdGhpcy5pbnB1dC5tdWx0aXBsZVxuICAgICAgICAgICAgPyBbLi4udG9BcnJheSh0aGlzLnZhbHVlKCkpLCAuLi5BcnJheS5mcm9tKGZpbGVzKV1cbiAgICAgICAgICAgIDogZmlsZXNbMF07XG5cbiAgICAgICAgaWYgKGZpbGVPckZpbGVzKSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGZpbGVPckZpbGVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0LnJlYWRPbmx5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0b0FycmF5KFxuICAgIHZhbHVlOiBUdWlGaWxlTGlrZSB8IHJlYWRvbmx5IFR1aUZpbGVMaWtlW10gfCBudWxsLFxuKTogcmVhZG9ubHkgVHVpRmlsZUxpa2VbXSB7XG4gICAgcmV0dXJuIHZhbHVlID8gY29lcmNlQXJyYXkodmFsdWUpIDogRU1QVFlfQVJSQVk7XG59XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvZmlsZXMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxlQUFlLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLDRCQUE0QixFQUM1QixpQkFBaUIsR0FDcEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR25ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFFekUsTUF1QmEsc0JBQXVCLFNBQVEsVUFFM0M7SUF6QkQ7O1FBMEJ1QixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQy9DLE1BQUMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBR3hDLFdBQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzFELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUN0RCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUNqRCxNQUFNLENBQUMsQ0FBQyxFQUFDLE1BQU0sRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQ2pDLENBQUM7UUFFYyxVQUFLLEdBQUcsZ0JBQWdCLEVBQW9CLENBQUM7S0FpQmhFO0lBZlUsT0FBTyxDQUFDLEtBQWU7UUFDMUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQ25DLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWYsSUFBSSxXQUFXLEVBQUU7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzlCO0lBQ0wsQ0FBQztJQUVTLE9BQU8sQ0FBQyxLQUFpQjtRQUMvQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3JCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7K0dBN0JRLHNCQUFzQjttR0FBdEIsc0JBQXNCLHFRQXBCcEI7WUFDUCxZQUFZLENBQUMsc0JBQXNCLENBQUM7WUFDcEMsNEJBQTRCLENBQUMsdUJBQXVCLENBQUM7U0FDeEQ7O1NBaUJRLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQXZCbEMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsU0FBUyxFQUFFO3dCQUNQLFlBQVksd0JBQXdCO3dCQUNwQyw0QkFBNEIsQ0FBQyx1QkFBdUIsQ0FBQztxQkFDeEQ7b0JBQ0QsY0FBYyxFQUFFO3dCQUNaLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQjs0QkFDSSxTQUFTLEVBQUUsc0JBQXNCOzRCQUNqQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDO3lCQUNwQztxQkFDSjtvQkFDRCxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsSUFBSSxFQUFFLE1BQU07d0JBQ1osWUFBWSxFQUFFLFlBQVk7d0JBQzFCLFFBQVEsRUFBRSxhQUFhO3dCQUN2QixTQUFTLEVBQUUsaUJBQWlCO3FCQUMvQjtpQkFDSjs4QkFRbUIsTUFBTTtzQkFEckIsTUFBTTs7QUEwQlgsU0FBUyxPQUFPLENBQ1osS0FBa0Q7SUFFbEQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvZXJjZUFycmF5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtEaXJlY3RpdmUsIGZvcndhcmRSZWYsIGluamVjdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtFTVBUWV9BUlJBWX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtUdWlOYXRpdmVWYWxpZGF0b3J9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9uYXRpdmUtdmFsaWRhdG9yJztcbmltcG9ydCB7dHVpQ29udHJvbFZhbHVlLCB0dWlab25lZnJlZVNjaGVkdWxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7XG4gICAgdHVpQXBwZWFyYW5jZU1vZGUsXG4gICAgdHVpQXBwZWFyYW5jZU9wdGlvbnNQcm92aWRlcixcbiAgICBUdWlXaXRoQXBwZWFyYW5jZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9hcHBlYXJhbmNlJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge3R5cGUgVHVpRmlsZUxpa2V9IGZyb20gJy4uL2ZpbGVzLnR5cGVzJztcbmltcG9ydCB7dHVpRmlsZXNSZWplY3RlZH0gZnJvbSAnLi4vZmlsZXMudXRpbHMnO1xuaW1wb3J0IHtUdWlJbnB1dEZpbGVzfSBmcm9tICcuL2lucHV0LWZpbGVzLmNvbXBvbmVudCc7XG5pbXBvcnQge1RVSV9JTlBVVF9GSUxFU19PUFRJT05TfSBmcm9tICcuL2lucHV0LWZpbGVzLm9wdGlvbnMnO1xuaW1wb3J0IHtUdWlJbnB1dEZpbGVzVmFsaWRhdG9yfSBmcm9tICcuL2lucHV0LWZpbGVzLXZhbGlkYXRvci5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXRGaWxlc10nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXRGaWxlc0RpcmVjdGl2ZSksXG4gICAgICAgIHR1aUFwcGVhcmFuY2VPcHRpb25zUHJvdmlkZXIoVFVJX0lOUFVUX0ZJTEVTX09QVElPTlMpLFxuICAgIF0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAgVHVpTmF0aXZlVmFsaWRhdG9yLFxuICAgICAgICBUdWlXaXRoQXBwZWFyYW5jZSxcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBUdWlJbnB1dEZpbGVzVmFsaWRhdG9yLFxuICAgICAgICAgICAgaW5wdXRzOiBbJ2FjY2VwdCcsICdtYXhGaWxlU2l6ZSddLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIHR5cGU6ICdmaWxlJyxcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknLFxuICAgICAgICAnKGNsaWNrKSc6ICdvbkNsaWNrKCRldmVudCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0RmlsZXNEaXJlY3RpdmUgZXh0ZW5kcyBUdWlDb250cm9sPFxuICAgIFR1aUZpbGVMaWtlIHwgcmVhZG9ubHkgVHVpRmlsZUxpa2VbXVxuPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGhvc3QgPSBpbmplY3QoZm9yd2FyZFJlZigoKSA9PiBUdWlJbnB1dEZpbGVzKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG0gPSB0dWlBcHBlYXJhbmNlTW9kZSh0aGlzLm1vZGUsIHt9KTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSByZWplY3QgPSB0aW1lcigwLCB0dWlab25lZnJlZVNjaGVkdWxlcigpKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdHVpQ29udHJvbFZhbHVlKHRoaXMuY29udHJvbC5jb250cm9sKSksXG4gICAgICAgIG1hcCgoKSA9PiB0dWlGaWxlc1JlamVjdGVkKHRoaXMuY29udHJvbC5jb250cm9sKSksXG4gICAgICAgIGZpbHRlcigoe2xlbmd0aH0pID0+ICEhbGVuZ3RoKSxcbiAgICApO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGlucHV0ID0gdHVpSW5qZWN0RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50PigpO1xuXG4gICAgcHVibGljIHByb2Nlc3MoZmlsZXM6IEZpbGVMaXN0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbGVPckZpbGVzID0gdGhpcy5pbnB1dC5tdWx0aXBsZVxuICAgICAgICAgICAgPyBbLi4udG9BcnJheSh0aGlzLnZhbHVlKCkpLCAuLi5BcnJheS5mcm9tKGZpbGVzKV1cbiAgICAgICAgICAgIDogZmlsZXNbMF07XG5cbiAgICAgICAgaWYgKGZpbGVPckZpbGVzKSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGZpbGVPckZpbGVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0LnJlYWRPbmx5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0b0FycmF5KFxuICAgIHZhbHVlOiBUdWlGaWxlTGlrZSB8IHJlYWRvbmx5IFR1aUZpbGVMaWtlW10gfCBudWxsLFxuKTogcmVhZG9ubHkgVHVpRmlsZUxpa2VbXSB7XG4gICAgcmV0dXJuIHZhbHVlID8gY29lcmNlQXJyYXkodmFsdWUpIDogRU1QVFlfQVJSQVk7XG59XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { tuiProvideOptions } from '@taiga-ui/cdk/utils/miscellaneous';
3
3
  export const TUI_INPUT_FILES_DEFAULT_OPTIONS = {
4
+ appearance: 'file',
4
5
  accept: '',
5
6
  multiple: false,
6
7
  size: 'm',
@@ -15,4 +16,4 @@ export const TUI_INPUT_FILES_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_INPUT
15
16
  export function tuiInputFilesOptionsProvider(options) {
16
17
  return tuiProvideOptions(TUI_INPUT_FILES_OPTIONS, options, TUI_INPUT_FILES_DEFAULT_OPTIONS);
17
18
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMub3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2ZpbGVzL2lucHV0LWZpbGVzL2lucHV0LWZpbGVzLm9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFVcEUsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQXlCO0lBQ2pFLE1BQU0sRUFBRSxFQUFFO0lBQ1YsUUFBUSxFQUFFLEtBQUs7SUFDZixJQUFJLEVBQUUsR0FBRztJQUNULFdBQVcsRUFBRSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksRUFBRSxTQUFTO0NBQzNDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUNyRCxTQUFTLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQzFDO0lBQ0ksT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLCtCQUErQjtDQUNqRCxDQUNKLENBQUM7QUFFRixNQUFNLFVBQVUsNEJBQTRCLENBQ3hDLE9BQXNDO0lBRXRDLE9BQU8saUJBQWlCLENBQ3BCLHVCQUF1QixFQUN2QixPQUFPLEVBQ1AsK0JBQStCLENBQ2xDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgdHlwZSBQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3R1aVByb3ZpZGVPcHRpb25zfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHt0eXBlIFR1aVNpemVMfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHVpSW5wdXRGaWxlc09wdGlvbnMge1xuICAgIGFjY2VwdDogc3RyaW5nO1xuICAgIG1heEZpbGVTaXplOiBudW1iZXI7XG4gICAgbXVsdGlwbGU6IGJvb2xlYW47XG4gICAgc2l6ZTogVHVpU2l6ZUw7XG59XG5cbmV4cG9ydCBjb25zdCBUVUlfSU5QVVRfRklMRVNfREVGQVVMVF9PUFRJT05TOiBUdWlJbnB1dEZpbGVzT3B0aW9ucyA9IHtcbiAgICBhY2NlcHQ6ICcnLFxuICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICBzaXplOiAnbScsXG4gICAgbWF4RmlsZVNpemU6IDMwICogMTAyNCAqIDEwMjQsIC8vIDMwIE1pQlxufTtcblxuLyoqXG4gKiBEZWZhdWx0IHBhcmFtZXRlcnMgZm9yIGlucHV0IGZpbGVzIGNvbXBvbmVudFxuICovXG5leHBvcnQgY29uc3QgVFVJX0lOUFVUX0ZJTEVTX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW4oXG4gICAgbmdEZXZNb2RlID8gJ1RVSV9JTlBVVF9GSUxFU19PUFRJT05TJyA6ICcnLFxuICAgIHtcbiAgICAgICAgZmFjdG9yeTogKCkgPT4gVFVJX0lOUFVUX0ZJTEVTX0RFRkFVTFRfT1BUSU9OUyxcbiAgICB9LFxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUlucHV0RmlsZXNPcHRpb25zUHJvdmlkZXIoXG4gICAgb3B0aW9uczogUGFydGlhbDxUdWlJbnB1dEZpbGVzT3B0aW9ucz4sXG4pOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIHR1aVByb3ZpZGVPcHRpb25zKFxuICAgICAgICBUVUlfSU5QVVRfRklMRVNfT1BUSU9OUyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgVFVJX0lOUFVUX0ZJTEVTX0RFRkFVTFRfT1BUSU9OUyxcbiAgICApO1xufVxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMub3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2ZpbGVzL2lucHV0LWZpbGVzL2lucHV0LWZpbGVzLm9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFXcEUsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQXlCO0lBQ2pFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE1BQU0sRUFBRSxFQUFFO0lBQ1YsUUFBUSxFQUFFLEtBQUs7SUFDZixJQUFJLEVBQUUsR0FBRztJQUNULFdBQVcsRUFBRSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksRUFBRSxTQUFTO0NBQzNDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUNyRCxTQUFTLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQzFDO0lBQ0ksT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLCtCQUErQjtDQUNqRCxDQUNKLENBQUM7QUFFRixNQUFNLFVBQVUsNEJBQTRCLENBQ3hDLE9BQXNDO0lBRXRDLE9BQU8saUJBQWlCLENBQ3BCLHVCQUF1QixFQUN2QixPQUFPLEVBQ1AsK0JBQStCLENBQ2xDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgdHlwZSBQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3R1aVByb3ZpZGVPcHRpb25zfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHt0eXBlIFR1aUFwcGVhcmFuY2VPcHRpb25zfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2FwcGVhcmFuY2UnO1xuaW1wb3J0IHt0eXBlIFR1aVNpemVMfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHVpSW5wdXRGaWxlc09wdGlvbnMgZXh0ZW5kcyBUdWlBcHBlYXJhbmNlT3B0aW9ucyB7XG4gICAgYWNjZXB0OiBzdHJpbmc7XG4gICAgbWF4RmlsZVNpemU6IG51bWJlcjtcbiAgICBtdWx0aXBsZTogYm9vbGVhbjtcbiAgICBzaXplOiBUdWlTaXplTDtcbn1cblxuZXhwb3J0IGNvbnN0IFRVSV9JTlBVVF9GSUxFU19ERUZBVUxUX09QVElPTlM6IFR1aUlucHV0RmlsZXNPcHRpb25zID0ge1xuICAgIGFwcGVhcmFuY2U6ICdmaWxlJyxcbiAgICBhY2NlcHQ6ICcnLFxuICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICBzaXplOiAnbScsXG4gICAgbWF4RmlsZVNpemU6IDMwICogMTAyNCAqIDEwMjQsIC8vIDMwIE1pQlxufTtcblxuLyoqXG4gKiBEZWZhdWx0IHBhcmFtZXRlcnMgZm9yIGlucHV0IGZpbGVzIGNvbXBvbmVudFxuICovXG5leHBvcnQgY29uc3QgVFVJX0lOUFVUX0ZJTEVTX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW4oXG4gICAgbmdEZXZNb2RlID8gJ1RVSV9JTlBVVF9GSUxFU19PUFRJT05TJyA6ICcnLFxuICAgIHtcbiAgICAgICAgZmFjdG9yeTogKCkgPT4gVFVJX0lOUFVUX0ZJTEVTX0RFRkFVTFRfT1BUSU9OUyxcbiAgICB9LFxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUlucHV0RmlsZXNPcHRpb25zUHJvdmlkZXIoXG4gICAgb3B0aW9uczogUGFydGlhbDxUdWlJbnB1dEZpbGVzT3B0aW9ucz4sXG4pOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIHR1aVByb3ZpZGVPcHRpb25zKFxuICAgICAgICBUVUlfSU5QVVRfRklMRVNfT1BUSU9OUyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgVFVJX0lOUFVUX0ZJTEVTX0RFRkFVTFRfT1BUSU9OUyxcbiAgICApO1xufVxuIl19
@@ -23,6 +23,8 @@ class TuiInputNumberDirective extends TuiControl {
23
23
  this.options = inject(TUI_INPUT_NUMBER_OPTIONS);
24
24
  this.textfield = inject(TuiTextfieldDirective);
25
25
  this.isIOS = inject(TUI_IS_IOS);
26
+ this.minRaw = signal(this.options.min);
27
+ this.maxRaw = signal(this.options.max);
26
28
  this.numberFormat = toSignal(inject(TUI_NUMBER_FORMAT), {
27
29
  initialValue: TUI_DEFAULT_NUMBER_FORMAT,
28
30
  });
@@ -72,16 +74,16 @@ class TuiInputNumberDirective extends TuiControl {
72
74
  });
73
75
  this.textfield.value.update((x) => maskitoTransform(x, options));
74
76
  }, TUI_ALLOW_SIGNAL_WRITES);
75
- this.min = signal(this.options.min);
76
- this.max = signal(this.options.max);
77
+ this.min = computed(() => Math.min(this.minRaw(), this.maxRaw()));
78
+ this.max = computed(() => Math.max(this.minRaw(), this.maxRaw()));
77
79
  this.prefix = signal(this.options.prefix);
78
80
  this.postfix = signal(this.options.postfix);
79
81
  }
80
82
  set minSetter(x) {
81
- this.updateMinMaxLimits(this.transformer.fromControlValue(x), this.max());
83
+ this.minRaw.set(this.transformer.fromControlValue(x ?? this.options.min));
82
84
  }
83
85
  set maxSetter(x) {
84
- this.updateMinMaxLimits(this.min(), this.transformer.fromControlValue(x));
86
+ this.maxRaw.set(this.transformer.fromControlValue(x ?? this.options.max));
85
87
  }
86
88
  // TODO(v5): replace with signal input
87
89
  set prefixSetter(x) {
@@ -135,12 +137,6 @@ class TuiInputNumberDirective extends TuiControl {
135
137
  }).replace(CHAR_HYPHEN, CHAR_MINUS) +
136
138
  this.postfix());
137
139
  }
138
- updateMinMaxLimits(nullableMin, nullableMax) {
139
- const min = nullableMin ?? this.options.min;
140
- const max = nullableMax ?? this.options.max;
141
- this.min.set(Math.min(min, max));
142
- this.max.set(Math.max(min, max));
143
- }
144
140
  computeMask(params) {
145
141
  const { prefix = '', postfix = '' } = params;
146
142
  const { plugins, ...options } = maskitoNumberOptionsGenerator(params);
@@ -193,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
193
189
  type: Input,
194
190
  args: ['postfix']
195
191
  }] } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFzQixnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLDZCQUE2QixFQUU3QixrQkFBa0IsR0FDckIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RixPQUFPLEVBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLGdCQUFnQixHQUNuQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBQyx5QkFBeUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFL0MsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFFaEUsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFFOUIsTUFpQmEsdUJBQXdCLFNBQVEsVUFBeUI7SUFqQnRFOztRQWtCcUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzNDLGNBQVMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxQyxVQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNCLGlCQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ2hFLFlBQVksRUFBRSx5QkFBeUI7U0FDMUMsQ0FBQyxDQUFDO1FBRWMsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDdkMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FDbEUsQ0FBQztRQUVlLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ3ZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQ2xGLENBQUM7UUFFZSxlQUFVLEdBQUcsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQ2hFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQ3RELENBQUM7UUFFaUIsWUFBTyxHQUFHLGdCQUFnQixFQUFvQixDQUFDO1FBQy9DLFNBQUksR0FBRyxVQUFVLENBQ2hDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUNwRCxDQUFDO1FBRWlCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDWixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO29CQUNqQixDQUFDLENBQUMsTUFBTSxDQUFDLCtFQUErRTtvQkFDeEYsQ0FBQyxDQUFDLFNBQVMsQ0FBQzthQUNuQjtZQUVEOzs7ZUFHRztZQUNILE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRWdCLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDaEQsTUFBTSxFQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xFLE1BQU0sV0FBVyxHQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RSxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFFeEQsT0FBTyxrQkFBa0IsR0FBRyxTQUFTLEdBQUcsWUFBWSxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO1FBRWdCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFL0IsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUVwQixPQUFPO2FBQ1Y7WUFFRCxJQUNJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2pCLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNsQixLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssRUFDeEI7Z0JBQ0UsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixDQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUVsQixpQ0FBNEIsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2pELE1BQU0sT0FBTyxHQUFHLDZCQUE2QixDQUFDO2dCQUMxQyxHQUFHLElBQUksQ0FBQyxVQUFVO2dCQUNsQixHQUFHLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtnQkFDNUIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7YUFDL0IsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUVaLFFBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixRQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLFlBQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQXVHMUQ7SUFyR0csSUFDVyxTQUFTLENBQUMsQ0FBZ0I7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELElBQ1csU0FBUyxDQUFDLENBQWdCO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsSUFDVyxZQUFZLENBQUMsQ0FBUztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLElBQ1csYUFBYSxDQUFDLENBQVM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVlLFVBQVUsQ0FBQyxLQUFvQjtRQUMzQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFvQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFUyxPQUFPO1FBQ2IsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDNUQ7SUFDTCxDQUFDO0lBRUQsSUFBWSxVQUFVO1FBQ2xCLE1BQU0sRUFBQyxXQUFXLEVBQUUsR0FBRyxZQUFZLEVBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0QsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFL0MsT0FBTztZQUNILEdBQUcsWUFBWTtZQUNmLHFCQUFxQjtZQUNyQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNmLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDdkIscUJBQXFCLEVBQUUsV0FBVyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUUsQ0FBQztJQUNOLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBb0I7UUFDckMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkMsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUVELE9BQU8sQ0FDSCxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ25ELGVBQWUsQ0FBQyxLQUFLLEVBQUU7Z0JBQ25CLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdEI7Ozs7O21CQUtHO2dCQUNILFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDbEIsQ0FBQyxDQUFDLFFBQVE7YUFDakIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO1lBQ25DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FDakIsQ0FBQztJQUNOLENBQUM7SUFFTyxrQkFBa0IsQ0FDdEIsV0FBMEIsRUFDMUIsV0FBMEI7UUFFMUIsTUFBTSxHQUFHLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQzVDLE1BQU0sR0FBRyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUU1QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxNQUEyQjtRQUMzQyxNQUFNLEVBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzNDLE1BQU0sRUFBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUMsR0FBRyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRSxPQUFPO1lBQ0gsR0FBRyxPQUFPO1lBQ1YsT0FBTyxFQUFFO2dCQUNMLEdBQUcsT0FBTztnQkFDVixpQkFBaUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sQ0FBQyxNQUFNO29CQUNiLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU07aUJBQ2hDLENBQUM7YUFDTDtTQUNKLENBQUM7SUFDTixDQUFDOytHQXpMUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix3ZkFkckI7WUFDUCxZQUFZLENBQUMsdUJBQXVCLENBQUM7WUFDckMsdUJBQXVCLENBQUMsd0JBQXdCLENBQUM7U0FDcEQ7O1NBV1EsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBakJuQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxTQUFTLEVBQUU7d0JBQ1AsWUFBWSx5QkFBeUI7d0JBQ3JDLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDO3FCQUNwRDtvQkFDRCxjQUFjLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDcEQsSUFBSSxFQUFFO3dCQUNGLFlBQVksRUFBRSxZQUFZO3dCQUMxQixrQkFBa0IsRUFBRSxhQUFhO3dCQUNqQyxrQkFBa0IsRUFDZCxnRUFBZ0U7d0JBQ3BFLFFBQVEsRUFBRSx1REFBdUQ7d0JBQ2pFLFNBQVMsRUFBRSxXQUFXO3FCQUN6QjtpQkFDSjs4QkF1RmMsU0FBUztzQkFEbkIsS0FBSzt1QkFBQyxLQUFLO2dCQU1ELFNBQVM7c0JBRG5CLEtBQUs7dUJBQUMsS0FBSztnQkFPRCxZQUFZO3NCQUR0QixLQUFLO3VCQUFDLFFBQVE7Z0JBT0osYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb21wdXRlZCwgRGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdCwgSW5wdXQsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge01hc2tpdG9EaXJlY3RpdmV9IGZyb20gJ0BtYXNraXRvL2FuZ3VsYXInO1xuaW1wb3J0IHt0eXBlIE1hc2tpdG9PcHRpb25zLCBtYXNraXRvVHJhbnNmb3JtfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7XG4gICAgbWFza2l0b0NhcmV0R3VhcmQsXG4gICAgbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IsXG4gICAgdHlwZSBNYXNraXRvTnVtYmVyUGFyYW1zLFxuICAgIG1hc2tpdG9QYXJzZU51bWJlcixcbn0gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sLCB0dWlWYWx1ZVRyYW5zZm9ybWVyRnJvbX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7Q0hBUl9IWVBIRU4sIENIQVJfTUlOVVMsIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1RVSV9JU19JT1N9IGZyb20gJ0B0YWlnYS11aS9jZGsvdG9rZW5zJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlJc1NhZmVUb1JvdW5kfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuaW1wb3J0IHtcbiAgICBUdWlUZXh0ZmllbGREaXJlY3RpdmUsXG4gICAgVHVpV2l0aFRleHRmaWVsZCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHtUVUlfREVGQVVMVF9OVU1CRVJfRk9STUFULCBUVUlfTlVNQkVSX0ZPUk1BVH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7dHVpRm9ybWF0TnVtYmVyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS91dGlscy9mb3JtYXQnO1xuaW1wb3J0IHt0dWlNYXNraXRvfSBmcm9tICdAdGFpZ2EtdWkva2l0L3V0aWxzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfTlVNQkVSX09QVElPTlN9IGZyb20gJy4vaW5wdXQtbnVtYmVyLm9wdGlvbnMnO1xuXG5jb25zdCBERUZBVUxUX01BWF9MRU5HVEggPSAxODtcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2lucHV0W3R1aUlucHV0TnVtYmVyXScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dE51bWJlckRpcmVjdGl2ZSksXG4gICAgICAgIHR1aVZhbHVlVHJhbnNmb3JtZXJGcm9tKFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUyksXG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1R1aVdpdGhUZXh0ZmllbGQsIE1hc2tpdG9EaXJlY3RpdmVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgICAgICdbYXR0ci5pbnB1dE1vZGVdJzogJ2lucHV0TW9kZSgpJyxcbiAgICAgICAgJ1thdHRyLm1heExlbmd0aF0nOlxuICAgICAgICAgICAgJ2VsZW1lbnQubWF4TGVuZ3RoID4gMCA/IGVsZW1lbnQubWF4TGVuZ3RoIDogZGVmYXVsdE1heExlbmd0aCgpJyxcbiAgICAgICAgJyhibHVyKSc6ICdzZXRWYWx1ZSh0cmFuc2Zvcm1lci5mcm9tQ29udHJvbFZhbHVlKGNvbnRyb2wudmFsdWUpKScsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXROdW1iZXJEaXJlY3RpdmUgZXh0ZW5kcyBUdWlDb250cm9sPG51bWJlciB8IG51bGw+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0lOUFVUX05VTUJFUl9PUFRJT05TKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZCA9IGluamVjdChUdWlUZXh0ZmllbGREaXJlY3RpdmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNJT1MgPSBpbmplY3QoVFVJX0lTX0lPUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJGb3JtYXQgPSB0b1NpZ25hbChpbmplY3QoVFVJX05VTUJFUl9GT1JNQVQpLCB7XG4gICAgICAgIGluaXRpYWxWYWx1ZTogVFVJX0RFRkFVTFRfTlVNQkVSX0ZPUk1BVCxcbiAgICB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybWF0dGVkID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgbWFza2l0b1BhcnNlTnVtYmVyKHRoaXMudGV4dGZpZWxkLnZhbHVlKCksIHRoaXMubnVtYmVyRm9ybWF0KCkpLFxuICAgICk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZWNpc2lvbiA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIE51bWJlci5pc05hTih0aGlzLm51bWJlckZvcm1hdCgpLnByZWNpc2lvbikgPyAyIDogdGhpcy5udW1iZXJGb3JtYXQoKS5wcmVjaXNpb24sXG4gICAgKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgdW5maW5pc2hlZCA9IGNvbXB1dGVkKCh2YWx1ZSA9IHRoaXMuZm9ybWF0dGVkKCkpID0+XG4gICAgICAgIHZhbHVlIDwgMCA/IHZhbHVlID4gdGhpcy5tYXgoKSA6IHZhbHVlIDwgdGhpcy5taW4oKSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnQgPSB0dWlJbmplY3RFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1hc2sgPSB0dWlNYXNraXRvKFxuICAgICAgICBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbXB1dGVNYXNrKHRoaXMubWFza1BhcmFtcykpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXRNb2RlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0lPUykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWluKCkgPCAwXG4gICAgICAgICAgICAgICAgPyAndGV4dCcgLy8gaVBob25lIGRvZXMgbm90IGhhdmUgbWludXMgc2lnbiBpZiBpbnB1dE1vZGUgZXF1YWxzIHRvICdudW1lcmljJyAvICdkZWNpbWFsJ1xuICAgICAgICAgICAgICAgIDogJ2RlY2ltYWwnO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbXN1bmcgS2V5Ym9hcmQgZG9lcyBub3QgbWludXMgc2lnbiBmb3IgYGlucHV0bW9kZT1kZWNpbWFsYFxuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90YWlnYS1mYW1pbHkvdGFpZ2EtdWkvaXNzdWVzLzExMDYxI2lzc3VlY29tbWVudC0yOTM5MTAzNzkyXG4gICAgICAgICAqL1xuICAgICAgICByZXR1cm4gJ251bWVyaWMnO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRNYXhMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHtkZWNpbWFsU2VwYXJhdG9yLCB0aG91c2FuZFNlcGFyYXRvcn0gPSB0aGlzLm51bWJlckZvcm1hdCgpO1xuICAgICAgICBjb25zdCBkZWNpbWFsUGFydCA9XG4gICAgICAgICAgICAhIXRoaXMucHJlY2lzaW9uKCkgJiYgdGhpcy50ZXh0ZmllbGQudmFsdWUoKS5pbmNsdWRlcyhkZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uID0gZGVjaW1hbFBhcnQgPyBNYXRoLm1pbih0aGlzLnByZWNpc2lvbigpICsgMSwgMjApIDogMDtcbiAgICAgICAgY29uc3QgdGFrZVRob3VzYW5kID0gdGhvdXNhbmRTZXBhcmF0b3IucmVwZWF0KDUpLmxlbmd0aDtcblxuICAgICAgICByZXR1cm4gREVGQVVMVF9NQVhfTEVOR1RIICsgcHJlY2lzaW9uICsgdGFrZVRob3VzYW5kO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9uQ2hhbmdlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmZvcm1hdHRlZCgpO1xuXG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnVuZmluaXNoZWQoKSB8fFxuICAgICAgICAgICAgdmFsdWUgPCB0aGlzLm1pbigpIHx8XG4gICAgICAgICAgICB2YWx1ZSA+IHRoaXMubWF4KCkgfHxcbiAgICAgICAgICAgIHRoaXMudmFsdWUoKSA9PT0gdmFsdWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB9LCBUVUlfQUxMT1dfU0lHTkFMX1dSSVRFUyk7XG5cbiAgICBwcm90ZWN0ZWQgbWFza0luaXRpYWxDYWxpYnJhdGlvbkVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgICAuLi50aGlzLm1hc2tQYXJhbXMsXG4gICAgICAgICAgICBtaW46IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgbWF4OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy50ZXh0ZmllbGQudmFsdWUudXBkYXRlKCh4KSA9PiBtYXNraXRvVHJhbnNmb3JtKHgsIG9wdGlvbnMpKTtcbiAgICB9LCBUVUlfQUxMT1dfU0lHTkFMX1dSSVRFUyk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgbWluID0gc2lnbmFsKHRoaXMub3B0aW9ucy5taW4pO1xuICAgIHB1YmxpYyByZWFkb25seSBtYXggPSBzaWduYWwodGhpcy5vcHRpb25zLm1heCk7XG4gICAgcHVibGljIHJlYWRvbmx5IHByZWZpeCA9IHNpZ25hbCh0aGlzLm9wdGlvbnMucHJlZml4KTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcG9zdGZpeCA9IHNpZ25hbCh0aGlzLm9wdGlvbnMucG9zdGZpeCk7XG5cbiAgICBASW5wdXQoJ21pbicpXG4gICAgcHVibGljIHNldCBtaW5TZXR0ZXIoeDogbnVtYmVyIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1pbk1heExpbWl0cyh0aGlzLnRyYW5zZm9ybWVyLmZyb21Db250cm9sVmFsdWUoeCksIHRoaXMubWF4KCkpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWF4JylcbiAgICBwdWJsaWMgc2V0IG1heFNldHRlcih4OiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWluTWF4TGltaXRzKHRoaXMubWluKCksIHRoaXMudHJhbnNmb3JtZXIuZnJvbUNvbnRyb2xWYWx1ZSh4KSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETyh2NSk6IHJlcGxhY2Ugd2l0aCBzaWduYWwgaW5wdXRcbiAgICBASW5wdXQoJ3ByZWZpeCcpXG4gICAgcHVibGljIHNldCBwcmVmaXhTZXR0ZXIoeDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucHJlZml4LnNldCh4KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPKHY1KTogcmVwbGFjZSB3aXRoIHNpZ25hbCBpbnB1dFxuICAgIEBJbnB1dCgncG9zdGZpeCcpXG4gICAgcHVibGljIHNldCBwb3N0Zml4U2V0dGVyKHg6IHN0cmluZykge1xuICAgICAgICB0aGlzLnBvc3RmaXguc2V0KHgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGV4dGZpZWxkLnZhbHVlLnNldCh0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHRoaXMuZm9ybWF0dGVkKCkpICYmICF0aGlzLnJlYWRPbmx5KCkpIHtcbiAgICAgICAgICAgIHRoaXMudGV4dGZpZWxkLnZhbHVlLnNldCh0aGlzLnByZWZpeCgpICsgdGhpcy5wb3N0Zml4KCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgbWFza1BhcmFtcygpOiBNYXNraXRvTnVtYmVyUGFyYW1zIHtcbiAgICAgICAgY29uc3Qge2RlY2ltYWxNb2RlLCAuLi5udW1iZXJGb3JtYXR9ID0gdGhpcy5udW1iZXJGb3JtYXQoKTtcbiAgICAgICAgY29uc3QgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gdGhpcy5wcmVjaXNpb24oKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ubnVtYmVyRm9ybWF0LFxuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzLFxuICAgICAgICAgICAgbWluOiB0aGlzLm1pbigpLFxuICAgICAgICAgICAgbWF4OiB0aGlzLm1heCgpLFxuICAgICAgICAgICAgcHJlZml4OiB0aGlzLnByZWZpeCgpLFxuICAgICAgICAgICAgcG9zdGZpeDogdGhpcy5wb3N0Zml4KCksXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGRlY2ltYWxNb2RlID09PSAnYWx3YXlzJyA/IG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IDAsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgTnVtYmVyLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0aGlzLnByZWZpeCgpICE9PSBDSEFSX01JTlVTID8gdGhpcy5wcmVmaXgoKSA6ICcnKSArXG4gICAgICAgICAgICB0dWlGb3JtYXROdW1iZXIodmFsdWUsIHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLm51bWJlckZvcm1hdCgpLFxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIE51bWJlciBjYW4gc2F0aXNmeSBpbnRlcnZhbCBbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXVxuICAgICAgICAgICAgICAgICAqIGJ1dCBpdHMgcm91bmRpbmcgY2FuIHZpb2xhdGUgaXQuXG4gICAgICAgICAgICAgICAgICogQmVmb3JlIEJpZ0ludCBzdXBwb3J0IHRoZXJlIGlzIG5vIHBlcmZlY3Qgc29sdXRpb24g4oCTIG9ubHkgdHJhZGUgb2ZmLlxuICAgICAgICAgICAgICAgICAqIE5vIHJvdW5kaW5nIGlzIGJldHRlciB0aGFuIGxvc2UgcHJlY2lzaW9uIGFuZCBpbmNvcnJlY3QgbXV0YXRpb24gb2YgYWxyZWFkeSB2YWxpZCB2YWx1ZS5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IHR1aUlzU2FmZVRvUm91bmQodmFsdWUsIHRoaXMucHJlY2lzaW9uKCkpXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcmVjaXNpb24oKVxuICAgICAgICAgICAgICAgICAgICA6IEluZmluaXR5LFxuICAgICAgICAgICAgfSkucmVwbGFjZShDSEFSX0hZUEhFTiwgQ0hBUl9NSU5VUykgK1xuICAgICAgICAgICAgdGhpcy5wb3N0Zml4KClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZU1pbk1heExpbWl0cyhcbiAgICAgICAgbnVsbGFibGVNaW46IG51bWJlciB8IG51bGwsXG4gICAgICAgIG51bGxhYmxlTWF4OiBudW1iZXIgfCBudWxsLFxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBtaW4gPSBudWxsYWJsZU1pbiA/PyB0aGlzLm9wdGlvbnMubWluO1xuICAgICAgICBjb25zdCBtYXggPSBudWxsYWJsZU1heCA/PyB0aGlzLm9wdGlvbnMubWF4O1xuXG4gICAgICAgIHRoaXMubWluLnNldChNYXRoLm1pbihtaW4sIG1heCkpO1xuICAgICAgICB0aGlzLm1heC5zZXQoTWF0aC5tYXgobWluLCBtYXgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVNYXNrKHBhcmFtczogTWFza2l0b051bWJlclBhcmFtcyk6IE1hc2tpdG9PcHRpb25zIHtcbiAgICAgICAgY29uc3Qge3ByZWZpeCA9ICcnLCBwb3N0Zml4ID0gJyd9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCB7cGx1Z2lucywgLi4ub3B0aW9uc30gPSBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcihwYXJhbXMpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgICAgIC4uLnBsdWdpbnMsXG4gICAgICAgICAgICAgICAgbWFza2l0b0NhcmV0R3VhcmQoKHZhbHVlKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCAtIHBvc3RmaXgubGVuZ3RoLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFzQixnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLDZCQUE2QixFQUU3QixrQkFBa0IsR0FDckIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RixPQUFPLEVBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLGdCQUFnQixHQUNuQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBQyx5QkFBeUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxP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LFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFNBQVMsRUFBRTt3QkFDUCxZQUFZLHlCQUF5Qjt3QkFDckMsdUJBQXVCLENBQUMsd0JBQXdCLENBQUM7cUJBQ3BEO29CQUNELGNBQWMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO29CQUNwRCxJQUFJLEVBQUU7d0JBQ0YsWUFBWSxFQUFFLFlBQVk7d0JBQzFCLGtCQUFrQixFQUFFLGFBQWE7d0JBQ2pDLGtCQUFrQixFQUNkLGdFQUFnRTt3QkFDcEUsUUFBUSxFQUFFLHVEQUF1RDt3QkFDakUsU0FBUyxFQUFFLFdBQVc7cUJBQ3pCO2lCQUNKOzhCQXlGYyxTQUFTO3NCQURuQixLQUFLO3VCQUFDLEtBQUs7Z0JBTUQsU0FBUztzQkFEbkIsS0FBSzt1QkFBQyxLQUFLO2dCQU9ELFlBQVk7c0JBRHRCLEtBQUs7dUJBQUMsUUFBUTtnQkFPSixhQUFhO3NCQUR2QixLQUFLO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvbXB1dGVkLCBEaXJlY3RpdmUsIGVmZmVjdCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7TWFza2l0b0RpcmVjdGl2ZX0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQge3R5cGUgTWFza2l0b09wdGlvbnMsIG1hc2tpdG9UcmFuc2Zvcm19IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBtYXNraXRvQ2FyZXRHdWFyZCxcbiAgICBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcixcbiAgICB0eXBlIE1hc2tpdG9OdW1iZXJQYXJhbXMsXG4gICAgbWFza2l0b1BhcnNlTnVtYmVyLFxufSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHt0dWlBc0NvbnRyb2wsIFR1aUNvbnRyb2wsIHR1aVZhbHVlVHJhbnNmb3JtZXJGcm9tfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtDSEFSX0hZUEhFTiwgQ0hBUl9NSU5VUywgVFVJX0FMTE9XX1NJR05BTF9XUklURVN9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7VFVJX0lTX0lPU30gZnJvbSAnQHRhaWdhLXVpL2Nkay90b2tlbnMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUlzU2FmZVRvUm91bmR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5pbXBvcnQge1xuICAgIFR1aVRleHRmaWVsZERpcmVjdGl2ZSxcbiAgICBUdWlXaXRoVGV4dGZpZWxkLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1RVSV9ERUZBVUxUX05VTUJFUl9GT1JNQVQsIFRVSV9OVU1CRVJfRk9STUFUfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlGb3JtYXROdW1iZXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL2Zvcm1hdCc7XG5pbXBvcnQge3R1aU1hc2tpdG99IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuXG5pbXBvcnQge1RVSV9JTlBVVF9OVU1CRVJfT1BUSU9OU30gZnJvbSAnLi9pbnB1dC1udW1iZXIub3B0aW9ucyc7XG5cbmNvbnN0IERFRkFVTFRfTUFYX0xFTkdUSCA9IDE4O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXROdW1iZXJdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0TnVtYmVyRGlyZWN0aXZlKSxcbiAgICAgICAgdHVpVmFsdWVUcmFuc2Zvcm1lckZyb20oVFVJX0lOUFVUX05VTUJFUl9PUFRJT05TKSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpV2l0aFRleHRmaWVsZCwgTWFza2l0b0RpcmVjdGl2ZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCgpJyxcbiAgICAgICAgJ1thdHRyLmlucHV0TW9kZV0nOiAnaW5wdXRNb2RlKCknLFxuICAgICAgICAnW2F0dHIubWF4TGVuZ3RoXSc6XG4gICAgICAgICAgICAnZWxlbWVudC5tYXhMZW5ndGggPiAwID8gZWxlbWVudC5tYXhMZW5ndGggOiBkZWZhdWx0TWF4TGVuZ3RoKCknLFxuICAgICAgICAnKGJsdXIpJzogJ3NldFZhbHVlKHRyYW5zZm9ybWVyLmZyb21Db250cm9sVmFsdWUoY29udHJvbC52YWx1ZSkpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnb25Gb2N1cygpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dE51bWJlckRpcmVjdGl2ZSBleHRlbmRzIFR1aUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdChUVUlfSU5QVVRfTlVNQkVSX09QVElPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkID0gaW5qZWN0KFR1aVRleHRmaWVsZERpcmVjdGl2ZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0lPUyA9IGluamVjdChUVUlfSVNfSU9TKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1pblJhdyA9IHNpZ25hbCh0aGlzLm9wdGlvbnMubWluKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1heFJhdyA9IHNpZ25hbCh0aGlzLm9wdGlvbnMubWF4KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlckZvcm1hdCA9IHRvU2lnbmFsKGluamVjdChUVUlfTlVNQkVSX0ZPUk1BVCksIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlOiBUVUlfREVGQVVMVF9OVU1CRVJfRk9STUFULFxuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtYXR0ZWQgPSBjb21wdXRlZCgoKSA9PlxuICAgICAgICBtYXNraXRvUGFyc2VOdW1iZXIodGhpcy50ZXh0ZmllbGQudmFsdWUoKSwgdGhpcy5udW1iZXJGb3JtYXQoKSksXG4gICAgKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJlY2lzaW9uID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgTnVtYmVyLmlzTmFOKHRoaXMubnVtYmVyRm9ybWF0KCkucHJlY2lzaW9uKSA/IDIgOiB0aGlzLm51bWJlckZvcm1hdCgpLnByZWNpc2lvbixcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bmZpbmlzaGVkID0gY29tcHV0ZWQoKHZhbHVlID0gdGhpcy5mb3JtYXR0ZWQoKSkgPT5cbiAgICAgICAgdmFsdWUgPCAwID8gdmFsdWUgPiB0aGlzLm1heCgpIDogdmFsdWUgPCB0aGlzLm1pbigpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWxlbWVudCA9IHR1aUluamVjdEVsZW1lbnQ8SFRNTElucHV0RWxlbWVudD4oKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFzayA9IHR1aU1hc2tpdG8oXG4gICAgICAgIGNvbXB1dGVkKCgpID0+IHRoaXMuY29tcHV0ZU1hc2sodGhpcy5tYXNrUGFyYW1zKSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpbnB1dE1vZGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzSU9TKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5taW4oKSA8IDBcbiAgICAgICAgICAgICAgICA/ICd0ZXh0JyAvLyBpUGhvbmUgZG9lcyBub3QgaGF2ZSBtaW51cyBzaWduIGlmIGlucHV0TW9kZSBlcXVhbHMgdG8gJ251bWVyaWMnIC8gJ2RlY2ltYWwnXG4gICAgICAgICAgICAgICAgOiAnZGVjaW1hbCc7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU2Ftc3VuZyBLZXlib2FyZCBkb2VzIG5vdCBtaW51cyBzaWduIGZvciBgaW5wdXRtb2RlPWRlY2ltYWxgXG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3RhaWdhLWZhbWlseS90YWlnYS11aS9pc3N1ZXMvMTEwNjEjaXNzdWVjb21tZW50LTI5MzkxMDM3OTJcbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiAnbnVtZXJpYyc7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdE1heExlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qge2RlY2ltYWxTZXBhcmF0b3IsIHRob3VzYW5kU2VwYXJhdG9yfSA9IHRoaXMubnVtYmVyRm9ybWF0KCk7XG4gICAgICAgIGNvbnN0IGRlY2ltYWxQYXJ0ID1cbiAgICAgICAgICAgICEhdGhpcy5wcmVjaXNpb24oKSAmJiB0aGlzLnRleHRmaWVsZC52YWx1ZSgpLmluY2x1ZGVzKGRlY2ltYWxTZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCBwcmVjaXNpb24gPSBkZWNpbWFsUGFydCA/IE1hdGgubWluKHRoaXMucHJlY2lzaW9uKCkgKyAxLCAyMCkgOiAwO1xuICAgICAgICBjb25zdCB0YWtlVGhvdXNhbmQgPSB0aG91c2FuZFNlcGFyYXRvci5yZXBlYXQoNSkubGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBERUZBVUxUX01BWF9MRU5HVEggKyBwcmVjaXNpb24gKyB0YWtlVGhvdXNhbmQ7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25DaGFuZ2VFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybWF0dGVkKCk7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMudW5maW5pc2hlZCgpIHx8XG4gICAgICAgICAgICB2YWx1ZSA8IHRoaXMubWluKCkgfHxcbiAgICAgICAgICAgIHZhbHVlID4gdGhpcy5tYXgoKSB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZSgpID09PSB2YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCBtYXNrSW5pdGlhbENhbGlicmF0aW9uRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICAgIC4uLnRoaXMubWFza1BhcmFtcyxcbiAgICAgICAgICAgIG1pbjogTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICBtYXg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRleHRmaWVsZC52YWx1ZS51cGRhdGUoKHgpID0+IG1hc2tpdG9UcmFuc2Zvcm0oeCwgb3B0aW9ucykpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBtaW4gPSBjb21wdXRlZCgoKSA9PiBNYXRoLm1pbih0aGlzLm1pblJhdygpLCB0aGlzLm1heFJhdygpKSk7XG4gICAgcHVibGljIHJlYWRvbmx5IG1heCA9IGNvbXB1dGVkKCgpID0+IE1hdGgubWF4KHRoaXMubWluUmF3KCksIHRoaXMubWF4UmF3KCkpKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4ID0gc2lnbmFsKHRoaXMub3B0aW9ucy5wcmVmaXgpO1xuICAgIHB1YmxpYyByZWFkb25seSBwb3N0Zml4ID0gc2lnbmFsKHRoaXMub3B0aW9ucy5wb3N0Zml4KTtcblxuICAgIEBJbnB1dCgnbWluJylcbiAgICBwdWJsaWMgc2V0IG1pblNldHRlcih4OiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIHRoaXMubWluUmF3LnNldCh0aGlzLnRyYW5zZm9ybWVyLmZyb21Db250cm9sVmFsdWUoeCA/PyB0aGlzLm9wdGlvbnMubWluKSk7XG4gICAgfVxuXG4gICAgQElucHV0KCdtYXgnKVxuICAgIHB1YmxpYyBzZXQgbWF4U2V0dGVyKHg6IG51bWJlciB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5tYXhSYXcuc2V0KHRoaXMudHJhbnNmb3JtZXIuZnJvbUNvbnRyb2xWYWx1ZSh4ID8/IHRoaXMub3B0aW9ucy5tYXgpKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPKHY1KTogcmVwbGFjZSB3aXRoIHNpZ25hbCBpbnB1dFxuICAgIEBJbnB1dCgncHJlZml4JylcbiAgICBwdWJsaWMgc2V0IHByZWZpeFNldHRlcih4OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5wcmVmaXguc2V0KHgpO1xuICAgIH1cblxuICAgIC8vIFRPRE8odjUpOiByZXBsYWNlIHdpdGggc2lnbmFsIGlucHV0XG4gICAgQElucHV0KCdwb3N0Zml4JylcbiAgICBwdWJsaWMgc2V0IHBvc3RmaXhTZXR0ZXIoeDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucG9zdGZpeC5zZXQoeCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50ZXh0ZmllbGQudmFsdWUuc2V0KHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4odGhpcy5mb3JtYXR0ZWQoKSkgJiYgIXRoaXMucmVhZE9ubHkoKSkge1xuICAgICAgICAgICAgdGhpcy50ZXh0ZmllbGQudmFsdWUuc2V0KHRoaXMucHJlZml4KCkgKyB0aGlzLnBvc3RmaXgoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBtYXNrUGFyYW1zKCk6IE1hc2tpdG9OdW1iZXJQYXJhbXMge1xuICAgICAgICBjb25zdCB7ZGVjaW1hbE1vZGUsIC4uLm51bWJlckZvcm1hdH0gPSB0aGlzLm51bWJlckZvcm1hdCgpO1xuICAgICAgICBjb25zdCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSB0aGlzLnByZWNpc2lvbigpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5udW1iZXJGb3JtYXQsXG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMsXG4gICAgICAgICAgICBtaW46IHRoaXMubWluKCksXG4gICAgICAgICAgICBtYXg6IHRoaXMubWF4KCksXG4gICAgICAgICAgICBwcmVmaXg6IHRoaXMucHJlZml4KCksXG4gICAgICAgICAgICBwb3N0Zml4OiB0aGlzLnBvc3RmaXgoKSxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZGVjaW1hbE1vZGUgPT09ICdhbHdheXMnID8gbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogMCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdE51bWJlcih2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCBOdW1iZXIuaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMucHJlZml4KCkgIT09IENIQVJfTUlOVVMgPyB0aGlzLnByZWZpeCgpIDogJycpICtcbiAgICAgICAgICAgIHR1aUZvcm1hdE51bWJlcih2YWx1ZSwge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMubnVtYmVyRm9ybWF0KCksXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogTnVtYmVyIGNhbiBzYXRpc2Z5IGludGVydmFsIFtOdW1iZXIuTUlOX1NBRkVfSU5URUdFUjsgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdXG4gICAgICAgICAgICAgICAgICogYnV0IGl0cyByb3VuZGluZyBjYW4gdmlvbGF0ZSBpdC5cbiAgICAgICAgICAgICAgICAgKiBCZWZvcmUgQmlnSW50IHN1cHBvcnQgdGhlcmUgaXMgbm8gcGVyZmVjdCBzb2x1dGlvbiDigJMgb25seSB0cmFkZSBvZmYuXG4gICAgICAgICAgICAgICAgICogTm8gcm91bmRpbmcgaXMgYmV0dGVyIHRoYW4gbG9zZSBwcmVjaXNpb24gYW5kIGluY29ycmVjdCBtdXRhdGlvbiBvZiBhbHJlYWR5IHZhbGlkIHZhbHVlLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdHVpSXNTYWZlVG9Sb3VuZCh2YWx1ZSwgdGhpcy5wcmVjaXNpb24oKSlcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnByZWNpc2lvbigpXG4gICAgICAgICAgICAgICAgICAgIDogSW5maW5pdHksXG4gICAgICAgICAgICB9KS5yZXBsYWNlKENIQVJfSFlQSEVOLCBDSEFSX01JTlVTKSArXG4gICAgICAgICAgICB0aGlzLnBvc3RmaXgoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcHV0ZU1hc2socGFyYW1zOiBNYXNraXRvTnVtYmVyUGFyYW1zKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICBjb25zdCB7cHJlZml4ID0gJycsIHBvc3RmaXggPSAnJ30gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IHtwbHVnaW5zLCAuLi5vcHRpb25zfSA9IG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHBhcmFtcyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICAgICAgLi4ucGx1Z2lucyxcbiAgICAgICAgICAgICAgICBtYXNraXRvQ2FyZXRHdWFyZCgodmFsdWUpID0+IFtcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoIC0gcG9zdGZpeC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
@@ -10,11 +10,11 @@ import { TuiButton } from '@taiga-ui/core/components/button';
10
10
  import { TuiIcon } from '@taiga-ui/core/components/icon';
11
11
  import { TuiLoader } from '@taiga-ui/core/components/loader';
12
12
  import * as i1 from '@taiga-ui/core/directives/appearance';
13
- import { tuiAppearanceOptionsProvider, TuiAppearance, TuiWithAppearance } from '@taiga-ui/core/directives/appearance';
13
+ import { tuiAppearanceOptionsProvider, TuiAppearance, tuiAppearanceMode, TuiWithAppearance } from '@taiga-ui/core/directives/appearance';
14
14
  import { TuiHintOverflow } from '@taiga-ui/core/directives/hint';
15
15
  import { TUI_COMMON_ICONS } from '@taiga-ui/core/tokens';
16
16
  import { TUI_DIGITAL_INFORMATION_UNITS, TUI_FILE_TEXTS, TUI_HIDE_TEXT, TUI_SHOW_ALL_TEXT, TUI_INPUT_FILE_TEXTS } from '@taiga-ui/kit/tokens';
17
- import { PolymorpheusOutlet, injectContext, PolymorpheusComponent, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
17
+ import { PolymorpheusOutlet, injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus';
18
18
  import { map, of, combineLatest, timer, switchMap, filter } from 'rxjs';
19
19
  import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
20
20
  import { coerceArray } from '@angular/cdk/coercion';
@@ -329,6 +329,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
329
329
  }], propDecorators: { computeLink$: [], computeLabel$: [] } });
330
330
 
331
331
  const TUI_INPUT_FILES_DEFAULT_OPTIONS = {
332
+ appearance: 'file',
332
333
  accept: '',
333
334
  multiple: false,
334
335
  size: 'm',
@@ -385,8 +386,8 @@ class TuiInputFilesDirective extends TuiControl {
385
386
  constructor() {
386
387
  super(...arguments);
387
388
  this.host = inject(forwardRef(() => TuiInputFiles));
389
+ this.m = tuiAppearanceMode(this.mode, {});
388
390
  this.reject = timer(0, tuiZonefreeScheduler()).pipe(switchMap(() => tuiControlValue(this.control.control)), map(() => tuiFilesRejected(this.control.control)), filter(({ length }) => !!length));
389
- this.appearance = 'file';
390
391
  this.input = tuiInjectElement();
391
392
  }
392
393
  process(files) {
@@ -405,7 +406,7 @@ class TuiInputFilesDirective extends TuiControl {
405
406
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputFilesDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
406
407
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputFilesDirective, isStandalone: true, selector: "input[tuiInputFiles]", outputs: { reject: "reject" }, host: { attributes: { "title": "", "type": "file" }, listeners: { "blur": "onTouched()", "click": "onClick($event)" }, properties: { "disabled": "disabled()" } }, providers: [
407
408
  tuiAsControl(TuiInputFilesDirective),
408
- tuiAppearanceOptionsProvider(TuiInputFilesDirective),
409
+ tuiAppearanceOptionsProvider(TUI_INPUT_FILES_OPTIONS),
409
410
  ], usesInheritance: true, hostDirectives: [{ directive: i1$2.TuiNativeValidator }, { directive: i1.TuiWithAppearance }, { directive: TuiInputFilesValidator, inputs: ["accept", "accept", "maxFileSize", "maxFileSize"] }], ngImport: i0 }); }
410
411
  }
411
412
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputFilesDirective, decorators: [{
@@ -415,7 +416,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
415
416
  selector: 'input[tuiInputFiles]',
416
417
  providers: [
417
418
  tuiAsControl(TuiInputFilesDirective),
418
- tuiAppearanceOptionsProvider(TuiInputFilesDirective),
419
+ tuiAppearanceOptionsProvider(TUI_INPUT_FILES_OPTIONS),
419
420
  ],
420
421
  hostDirectives: [
421
422
  TuiNativeValidator,
@@ -474,11 +475,11 @@ class TuiInputFiles {
474
475
  >
475
476
  {{ text }}
476
477
  </span>
477
- `, isInline: true, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:invalid{border-color:var(--tui-status-negative)!important}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
478
+ `, isInline: true, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:not(:disabled)[data-mode~=invalid],[tuiAppearance][data-appearance=file]:invalid:not(:disabled):not([data-mode]){border-color:var(--tui-status-negative)!important}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
478
479
  }
479
480
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputFiles, decorators: [{
480
481
  type: Component,
481
- args: [{ standalone: true, selector: 'label[tuiInputFiles]', imports: [PolymorpheusOutlet, PolymorpheusTemplate], template: `
482
+ args: [{ standalone: true, selector: 'label[tuiInputFiles]', imports: [PolymorpheusOutlet], template: `
482
483
  <ng-content />
483
484
  <span
484
485
  *polymorpheusOutlet="
@@ -495,7 +496,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
495
496
  '(dragleave)': 'onDrag(null)',
496
497
  '[class._dragged]': 'fileDragged',
497
498
  '(change)': 'onFilesSelected($event.target)',
498
- }, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:invalid{border-color:var(--tui-status-negative)!important}\n"] }]
499
+ }, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:not(:disabled)[data-mode~=invalid],[tuiAppearance][data-appearance=file]:invalid:not(:disabled):not([data-mode]){border-color:var(--tui-status-negative)!important}\n"] }]
499
500
  }], propDecorators: { template: [{
500
501
  type: ContentChild,
501
502
  args: [TemplateRef]
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-files.mjs","sources":["../../../projects/kit/components/files/files.validators.ts","../../../projects/kit/components/files/files.utils.ts","../../../projects/kit/components/files/file/file.options.ts","../../../projects/kit/components/files/file/file.component.ts","../../../projects/kit/components/files/file/file.template.html","../../../projects/kit/components/files/files/files.component.ts","../../../projects/kit/components/files/files/files.template.html","../../../projects/kit/components/files/input-files/input-files.content.ts","../../../projects/kit/components/files/input-files/input-files.options.ts","../../../projects/kit/components/files/input-files/input-files-validator.directive.ts","../../../projects/kit/components/files/input-files/input-files.directive.ts","../../../projects/kit/components/files/input-files/input-files.component.ts","../../../projects/kit/components/files/pipes/file-rejected.pipe.ts","../../../projects/kit/components/files/files.ts","../../../projects/kit/components/files/taiga-ui-kit-components-files.ts"],"sourcesContent":["import {coerceArray} from '@angular/cdk/coercion';\nimport {type ValidatorFn} from '@angular/forms';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\n\nexport const TUI_SIZE_ERROR = 'tuiSize';\nexport const TUI_FORMAT_ERROR = 'tuiFormat';\n\ninterface FileFormatError {\n [TUI_FORMAT_ERROR]: TuiContext<File[]>;\n}\n\ninterface FileSizeError {\n [TUI_SIZE_ERROR]: TuiContext<File[]> & {size: number};\n}\n\nexport function tuiCreateFileSizeValidator(size: number): ValidatorFn {\n return ({value}: {value: File | readonly File[] | null}): FileSizeError | null => {\n const files = value && coerceArray(value);\n const $implicit = value && files?.filter((file) => file.size > size);\n\n return $implicit?.length ? {[TUI_SIZE_ERROR]: {$implicit, size}} : null;\n };\n}\n\nexport function tuiCreateFileFormatValidator(accept: string): ValidatorFn {\n return ({value}: {value: File | readonly File[] | null}): FileFormatError | null => {\n const files = value && coerceArray(value);\n const formats = toArray(accept);\n const $implicit = value && files?.filter((file) => !checkFormat(file, formats));\n\n return $implicit?.length && accept ? {[TUI_FORMAT_ERROR]: {$implicit}} : null;\n };\n}\n\nfunction checkFormat({name, type}: File, formats: readonly string[]): boolean {\n const extension = `.${(name.split('.').pop() || '').toLowerCase()}`;\n\n return formats.some(\n (format) =>\n format === extension ||\n format === type ||\n (format.split('/')[1] === '*' &&\n type?.split('/')[0] === format.split('/')[0]),\n );\n}\n\nfunction toArray(accept: string): readonly string[] {\n return accept\n .toLowerCase()\n .split(',')\n .map((format) => format.trim().toLowerCase());\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {type AbstractControl} from '@angular/forms';\nimport {tuiRound} from '@taiga-ui/cdk/utils/math';\n\nimport {TUI_FORMAT_ERROR, TUI_SIZE_ERROR} from './files.validators';\n\nconst BYTES_PER_KIB = 1024;\nconst BYTES_PER_MIB = 1024 * BYTES_PER_KIB;\n\nexport function tuiFilesRejected(control?: AbstractControl | null): File[] {\n const format: File[] = control?.getError(TUI_FORMAT_ERROR)?.$implicit || [];\n const size: File[] = control?.getError(TUI_SIZE_ERROR)?.$implicit || [];\n\n return Array.from(new Set([...format, ...size]));\n}\n\nexport function tuiFilesAccepted(control?: AbstractControl | null): File[] {\n const value = control?.value || [];\n const files: File[] = coerceArray(value);\n const size: File[] = control?.getError(TUI_SIZE_ERROR)?.$implicit || [];\n const format: File[] = control?.getError(TUI_FORMAT_ERROR)?.$implicit || [];\n\n return files.filter((file) => !size.includes(file) && !format.includes(file));\n}\n\nexport function tuiFormatSize(\n units: readonly [string, string, string],\n size?: number,\n locale?: string,\n): string | null {\n if (size === undefined) {\n return null;\n }\n\n if (size < BYTES_PER_KIB) {\n return `${size} ${units[0]}`;\n }\n\n if (size < BYTES_PER_MIB) {\n return `${(size / BYTES_PER_KIB).toFixed(0)} ${units[1]}`;\n }\n\n return `${tuiRound(size / BYTES_PER_MIB, 2).toLocaleString(locale)} ${units[2]}`;\n}\n","import {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {type TuiFileState} from '../files.types';\nimport {tuiFormatSize} from '../files.utils';\n\nexport interface TuiFileOptions extends TuiAppearanceOptions {\n readonly formatSize: (\n units: readonly [string, string, string],\n size?: number,\n locale?: string,\n ) => string | null;\n readonly icons: Record<\n Exclude<TuiFileState, 'loading'>,\n PolymorpheusContent<TuiContext<TuiSizeL>>\n >;\n}\n\nexport const TUI_FILE_DEFAULT_OPTIONS: TuiFileOptions = {\n appearance: 'outline',\n formatSize: tuiFormatSize,\n icons: {\n normal: ({$implicit}) => ($implicit === 'l' ? '@tui.file' : '@tui.circle-check'),\n error: '@tui.circle-alert',\n deleted: '@tui.trash',\n },\n};\n\n/**\n * Default parameters for file component\n */\nexport const [TUI_FILE_OPTIONS, tuiFileOptionsProvider] = tuiCreateOptions(\n TUI_FILE_DEFAULT_OPTIONS,\n);\n","import {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n LOCALE_ID,\n Output,\n} from '@angular/core';\nimport {DomSanitizer, type SafeValue} from '@angular/platform-browser';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {\n TuiAppearance,\n tuiAppearanceOptionsProvider,\n} from '@taiga-ui/core/directives/appearance';\nimport {TuiHintOverflow} from '@taiga-ui/core/directives/hint';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\nimport {type TuiLanguage} from '@taiga-ui/i18n/types';\nimport {TUI_DIGITAL_INFORMATION_UNITS, TUI_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {map, type Observable, of} from 'rxjs';\n\nimport {type TuiFileLike, type TuiFileState} from '../files.types';\nimport {TUI_FILE_OPTIONS} from './file.options';\n\n@Component({\n standalone: true,\n selector: 'tui-file,a[tuiFile],button[tuiFile]',\n imports: [\n CommonModule,\n PolymorpheusOutlet,\n TuiButton,\n TuiHintOverflow,\n TuiIcon,\n TuiLoader,\n ],\n templateUrl: './file.template.html',\n styleUrls: ['./file.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAppearanceOptionsProvider(TUI_FILE_OPTIONS)],\n hostDirectives: [TuiAppearance],\n host: {\n '[attr.data-delete]': 'showDelete',\n },\n})\nexport class TuiFile {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly options = inject(TUI_FILE_OPTIONS);\n private readonly locale = inject(LOCALE_ID);\n private readonly units$ = inject(TUI_DIGITAL_INFORMATION_UNITS);\n private readonly win = inject(WA_WINDOW) as Window & {File: typeof File};\n\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly fileTexts$ = inject(TUI_FILE_TEXTS);\n\n @Input()\n public file: TuiFileLike = {name: ''};\n\n @Input()\n public state: TuiFileState = 'normal';\n\n @Input()\n public size: TuiSizeL = 'm';\n\n @Input()\n public showDelete: boolean | 'always' = true;\n\n @Input()\n public showSize = true;\n\n @Input()\n public leftContent: PolymorpheusContent;\n\n @Output()\n public readonly remove = new EventEmitter<void>();\n\n protected get preview(): SafeValue {\n return this.isBig ? this.createPreview(this.file) : '';\n }\n\n protected get isBig(): boolean {\n return this.size === 'l';\n }\n\n protected get isLoading(): boolean {\n return this.state === 'loading';\n }\n\n protected get isError(): boolean {\n return this.state === 'error';\n }\n\n protected get isDeleted(): boolean {\n return this.state === 'deleted';\n }\n\n protected get allowDelete(): boolean {\n return this.showDelete && this.remove.observed;\n }\n\n protected get icon(): PolymorpheusContent<TuiContext<TuiSizeL>> {\n return this.state === 'loading' ? '' : this.options.icons[this.state];\n }\n\n protected get name(): string {\n return this.getName(this.file);\n }\n\n protected get type(): string {\n return this.getType(this.file);\n }\n\n protected get content$(): Observable<PolymorpheusContent> {\n return this.calculateContent$(this.state, this.file, this.fileTexts$);\n }\n\n protected get fileSize$(): Observable<string | null> {\n return this.calculateFileSize$(this.file, this.units$);\n }\n\n @tuiPure\n private calculateContent$(\n state: TuiFileState,\n file: TuiFileLike,\n fileTexts$: Observable<Record<keyof TuiLanguage['fileTexts'], string>>,\n ): Observable<PolymorpheusContent> {\n return state === 'error' && !file.content\n ? fileTexts$.pipe(map((texts) => texts.loadingError))\n : of(this.file.content || '');\n }\n\n @tuiPure\n private calculateFileSize$(\n file: TuiFileLike,\n units$: Observable<readonly [string, string, string]>,\n ): Observable<string | null> {\n return units$.pipe(\n map((units) => this.options.formatSize(units, file.size, this.locale)),\n );\n }\n\n @tuiPure\n private createPreview(file: TuiFileLike): SafeValue {\n if (file.src) {\n return file.src;\n }\n\n if (\n this.win.File &&\n file instanceof this.win.File &&\n file.type?.startsWith('image/')\n ) {\n return this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file));\n }\n\n return '';\n }\n\n @tuiPure\n private getName(file: TuiFileLike): string {\n const dot = file.name.lastIndexOf('.');\n // a dot at position 0 means a “hidden” file, not an extension\n\n return dot > 0 ? file.name.slice(0, dot) : file.name;\n }\n\n @tuiPure\n private getType(file: TuiFileLike): string {\n const dot = file.name.lastIndexOf('.');\n // only return an extension when there is one\n\n return dot > 0 ? file.name.slice(dot) : '';\n }\n}\n","<div\n class=\"t-preview\"\n [class.t-preview_big]=\"isBig\"\n>\n <ng-container *polymorpheusOutlet=\"leftContent || defaultLeftContent as text\">\n {{ text }}\n </ng-container>\n</div>\n<div class=\"t-wrapper\">\n <div class=\"t-text\">\n <div\n tuiHintOverflow\n class=\"t-name\"\n >\n {{ name }}\n </div>\n <div class=\"t-type\">{{ type }}</div>\n <div\n *ngIf=\"showSize && (fileSize$ | async) as fileSize\"\n class=\"t-size\"\n >\n {{ fileSize }}\n </div>\n </div>\n <div\n *ngIf=\"content$ | async as content\"\n class=\"t-content\"\n >\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </div>\n <ng-content />\n</div>\n<ng-container *ngIf=\"allowDelete\">\n <button\n *ngIf=\"fileTexts$ | async as texts\"\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-remove\"\n [iconStart]=\"icons.close\"\n (click.prevent)=\"remove.emit()\"\n (mousedown.prevent.zoneless)=\"(0)\"\n >\n {{ texts.remove }}\n </button>\n</ng-container>\n\n<ng-template #defaultLeftContent>\n <img\n *ngIf=\"preview; else loader\"\n alt=\"file preview\"\n class=\"t-image\"\n [src]=\"preview\"\n />\n <ng-template #loader>\n <tui-loader\n *ngIf=\"isLoading; else svg\"\n class=\"t-loader\"\n [inheritColor]=\"isBig\"\n />\n </ng-template>\n <ng-template #svg>\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [class.t-icon_blank]=\"isBig || isDeleted\"\n [class.t-icon_error]=\"isError\"\n [icon]=\"src.toString()\"\n />\n </ng-template>\n</ng-template>\n","import {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n Output,\n type QueryList,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiExpandComponent} from '@taiga-ui/core/components/expand';\nimport {TuiGroup, tuiGroupOptionsProvider} from '@taiga-ui/core/directives/group';\nimport {TUI_HIDE_TEXT, TUI_SHOW_ALL_TEXT} from '@taiga-ui/kit/tokens';\n\n@Component({\n standalone: true,\n selector: 'tui-files',\n imports: [CommonModule, TuiButton, TuiExpandComponent, TuiGroup],\n templateUrl: './files.template.html',\n styleUrls: ['./files.styles.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiGroupOptionsProvider({size: 'm', collapsed: true, orientation: 'vertical'}),\n ],\n hostDirectives: [TuiGroup],\n})\nexport class TuiFilesComponent {\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected readonly hideText$ = inject(TUI_HIDE_TEXT);\n protected readonly showAllText$ = inject(TUI_SHOW_ALL_TEXT);\n\n @Input()\n public max = 0;\n\n @Input()\n public expanded = false;\n\n @Output()\n public readonly expandedChange = new EventEmitter<boolean>();\n\n protected get hasExtraItems(): boolean {\n return !!this.max && this.items.length > this.max;\n }\n\n protected toggle(): void {\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n}\n","<ng-container *ngIf=\"items?.changes | async\" />\n<ng-content />\n<ng-container *ngFor=\"let item of items; let index = index\">\n <ng-container\n *ngIf=\"!max || index < max\"\n [ngTemplateOutlet]=\"item\"\n />\n</ng-container>\n<tui-expand\n *ngIf=\"hasExtraItems\"\n [expanded]=\"expanded\"\n>\n <div\n tuiGroup\n class=\"t-extra-items\"\n >\n <ng-container *ngFor=\"let item of items; let index = index\">\n <ng-container\n *ngIf=\"max && index >= max\"\n [ngTemplateOutlet]=\"item\"\n />\n </ng-container>\n </div>\n</tui-expand>\n<div\n *ngIf=\"hasExtraItems\"\n class=\"t-bottom\"\n [class.t-bottom_collapsed]=\"!expanded\"\n>\n <button\n appearance=\"outline\"\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n (click)=\"toggle()\"\n >\n {{ (expanded ? hideText$ : showAllText$) | async }}\n </button>\n</div>\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiBreakpointService} from '@taiga-ui/core/services';\nimport {TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {injectContext} from '@taiga-ui/polymorpheus';\nimport {combineLatest, map, type Observable, of} from 'rxjs';\n\nimport {TuiInputFiles} from './input-files.component';\n\n@Component({\n standalone: true,\n imports: [AsyncPipe, TuiLink],\n template: `\n <a tuiLink>{{ link$ | async }}</a>\n {{ label$ | async }}\n `,\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiInputFilesContent {\n private readonly breakpoint$ = inject(TuiBreakpointService);\n private readonly text$ = inject(TUI_INPUT_FILE_TEXTS);\n private readonly context = injectContext<TuiContext<boolean>>();\n private readonly component = inject(TuiInputFiles);\n\n protected get link$(): Observable<string> {\n return this.computeLink$(\n this.context.$implicit,\n !!this.component.input?.input.multiple,\n );\n }\n\n protected get label$(): Observable<string> {\n return this.computeLabel$(\n this.context.$implicit,\n !!this.component.input?.input.multiple,\n );\n }\n\n @tuiPure\n private computeLink$(fileDragged: boolean, multiple: boolean): Observable<string> {\n return fileDragged\n ? of('')\n : this.text$.pipe(\n map((t) => (multiple ? t.defaultLinkMultiple : t.defaultLinkSingle)),\n );\n }\n\n @tuiPure\n private computeLabel$(fileDragged: boolean, multiple: boolean): Observable<string> {\n return fileDragged\n ? combineLatest([this.breakpoint$, this.text$]).pipe(\n map(([breakpoint, text]) => {\n if (breakpoint === 'mobile') {\n return '';\n }\n\n return multiple ? text.dropMultiple : text.drop;\n }),\n )\n : combineLatest([this.breakpoint$, this.text$]).pipe(\n map(([breakpoint, text]) => {\n if (breakpoint === 'mobile') {\n return '';\n }\n\n return multiple\n ? text.defaultLabelMultiple\n : text.defaultLabelSingle;\n }),\n );\n }\n}\n","import {InjectionToken, type Provider} from '@angular/core';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\n\nexport interface TuiInputFilesOptions {\n accept: string;\n maxFileSize: number;\n multiple: boolean;\n size: TuiSizeL;\n}\n\nexport const TUI_INPUT_FILES_DEFAULT_OPTIONS: TuiInputFilesOptions = {\n accept: '',\n multiple: false,\n size: 'm',\n maxFileSize: 30 * 1024 * 1024, // 30 MiB\n};\n\n/**\n * Default parameters for input files component\n */\nexport const TUI_INPUT_FILES_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_INPUT_FILES_OPTIONS' : '',\n {\n factory: () => TUI_INPUT_FILES_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiInputFilesOptionsProvider(\n options: Partial<TuiInputFilesOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_FILES_OPTIONS,\n options,\n TUI_INPUT_FILES_DEFAULT_OPTIONS,\n );\n}\n","import {Directive, inject, type OnChanges, type OnInit} from '@angular/core';\nimport {NG_VALIDATORS, Validators} from '@angular/forms';\nimport {TuiValidator} from '@taiga-ui/cdk/directives/validator';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {\n tuiCreateFileFormatValidator,\n tuiCreateFileSizeValidator,\n} from '../files.validators';\nimport {TUI_INPUT_FILES_OPTIONS} from './input-files.options';\n\n@Directive({\n standalone: true,\n inputs: ['accept', 'maxFileSize'],\n providers: [tuiProvide(NG_VALIDATORS, TuiInputFilesValidator, true)],\n exportAs: 'tuiInputFilesValidator',\n host: {\n '[accept]': 'accept',\n },\n})\nexport class TuiInputFilesValidator extends TuiValidator implements OnInit, OnChanges {\n private readonly options = inject(TUI_INPUT_FILES_OPTIONS);\n\n public accept = this.options.accept;\n public maxFileSize = this.options.maxFileSize;\n\n public override ngOnChanges(): void {\n this.update();\n }\n\n public ngOnInit(): void {\n this.update();\n }\n\n private update(): void {\n this.validate =\n Validators.compose([\n tuiCreateFileFormatValidator(this.accept),\n tuiCreateFileSizeValidator(this.maxFileSize),\n ]) || Validators.nullValidator;\n this.onChange();\n }\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {Directive, forwardRef, inject, Output} from '@angular/core';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {EMPTY_ARRAY} from '@taiga-ui/cdk/constants';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiControlValue, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n type TuiAppearanceOptions,\n tuiAppearanceOptionsProvider,\n TuiWithAppearance,\n} from '@taiga-ui/core/directives/appearance';\nimport {filter, map, switchMap, timer} from 'rxjs';\n\nimport {type TuiFileLike} from '../files.types';\nimport {tuiFilesRejected} from '../files.utils';\nimport {TuiInputFiles} from './input-files.component';\nimport {TuiInputFilesValidator} from './input-files-validator.directive';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputFiles]',\n providers: [\n tuiAsControl(TuiInputFilesDirective),\n tuiAppearanceOptionsProvider(TuiInputFilesDirective),\n ],\n hostDirectives: [\n TuiNativeValidator,\n TuiWithAppearance,\n {\n directive: TuiInputFilesValidator,\n inputs: ['accept', 'maxFileSize'],\n },\n ],\n host: {\n title: '',\n type: 'file',\n '[disabled]': 'disabled()',\n '(blur)': 'onTouched()',\n '(click)': 'onClick($event)',\n },\n})\nexport class TuiInputFilesDirective\n extends TuiControl<TuiFileLike | readonly TuiFileLike[]>\n implements TuiAppearanceOptions\n{\n protected readonly host = inject(forwardRef(() => TuiInputFiles));\n\n @Output()\n public readonly reject = timer(0, tuiZonefreeScheduler()).pipe(\n switchMap(() => tuiControlValue(this.control.control)),\n map(() => tuiFilesRejected(this.control.control)),\n filter(({length}) => !!length),\n );\n\n public readonly appearance = 'file';\n public readonly input = tuiInjectElement<HTMLInputElement>();\n\n public process(files: FileList): void {\n const fileOrFiles = this.input.multiple\n ? [...toArray(this.value()), ...Array.from(files)]\n : files[0];\n\n if (fileOrFiles) {\n this.onChange(fileOrFiles);\n }\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.input.readOnly) {\n event.preventDefault();\n }\n }\n}\n\nfunction toArray(\n value: TuiFileLike | readonly TuiFileLike[] | null,\n): readonly TuiFileLike[] {\n return value ? coerceArray(value) : EMPTY_ARRAY;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {\n PolymorpheusComponent,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n} from '@taiga-ui/polymorpheus';\n\nimport {TuiInputFilesContent} from './input-files.content';\nimport {TuiInputFilesDirective} from './input-files.directive';\n\n@Component({\n standalone: true,\n selector: 'label[tuiInputFiles]',\n imports: [PolymorpheusOutlet, PolymorpheusTemplate],\n template: `\n <ng-content />\n <span\n *polymorpheusOutlet=\"\n template || content as text;\n context: {$implicit: fileDragged}\n \"\n >\n {{ text }}\n </span>\n `,\n styleUrls: ['./input-files.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(dragover.prevent.zoneless)': '0',\n '(drop.prevent)': 'onDropped($event)',\n '(dragenter)': 'onDrag($event.dataTransfer)',\n '(dragleave)': 'onDrag(null)',\n '[class._dragged]': 'fileDragged',\n '(change)': 'onFilesSelected($event.target)',\n },\n})\nexport class TuiInputFiles {\n @ContentChild(TemplateRef)\n protected readonly template?: TemplateRef<TuiContext<boolean>>;\n\n protected files?: FileList | null;\n protected readonly content = new PolymorpheusComponent(TuiInputFilesContent);\n\n @ContentChild(TuiInputFilesDirective)\n public readonly input?: TuiInputFilesDirective;\n\n protected get fileDragged(): boolean {\n return !!this.files && !this.input?.disabled();\n }\n\n protected onFilesSelected(input: HTMLInputElement): void {\n if (!input?.files) {\n return;\n }\n\n this.input?.process(input.files);\n input.value = '';\n }\n\n protected onDropped({dataTransfer}: DragEvent): void {\n this.files = null;\n\n if (dataTransfer?.files && !this.input?.disabled()) {\n this.input?.process(dataTransfer.files);\n }\n }\n\n protected onDrag(dataTransfer: DataTransfer | null): void {\n this.files = dataTransfer?.files;\n }\n}\n","import {inject, LOCALE_ID, Pipe, type PipeTransform} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {TUI_DIGITAL_INFORMATION_UNITS, TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {combineLatest, map, type Observable} from 'rxjs';\n\nimport {TUI_FILE_OPTIONS} from '../file/file.options';\nimport {type TuiFileLike} from '../files.types';\nimport {\n tuiCreateFileFormatValidator,\n tuiCreateFileSizeValidator,\n} from '../files.validators';\nimport {TUI_INPUT_FILES_OPTIONS} from '../input-files/input-files.options';\n\n@Pipe({\n standalone: true,\n name: 'tuiFileRejected',\n})\nexport class TuiFileRejectedPipe implements PipeTransform {\n private readonly options = inject(TUI_INPUT_FILES_OPTIONS);\n private readonly formatSize = inject(TUI_FILE_OPTIONS).formatSize;\n private readonly locale = inject(LOCALE_ID);\n private readonly text$ = inject(TUI_INPUT_FILE_TEXTS);\n private readonly unit$ = inject(TUI_DIGITAL_INFORMATION_UNITS);\n\n public transform(\n file: TuiFileLike | null,\n {\n accept = this.options.accept,\n maxFileSize = this.options.maxFileSize,\n }: {accept?: string; maxFileSize?: number} = this.options,\n ): Observable<TuiFileLike | null> {\n const sizeValidator = tuiCreateFileSizeValidator(maxFileSize);\n const formatValidator = tuiCreateFileFormatValidator(accept);\n const control = new FormControl(file);\n\n return combineLatest([this.text$, this.unit$]).pipe(\n map(([{maxSizeRejectionReason, formatRejectionReason}, units]) => {\n if (file && formatValidator(control)) {\n return {\n name: file.name,\n size: file.size,\n content: formatRejectionReason,\n };\n }\n\n if (file && sizeValidator(control)) {\n return {\n name: file.name,\n size: file.size,\n content: `${maxSizeRejectionReason}${CHAR_NO_BREAK_SPACE}${this.formatSize(units, maxFileSize, this.locale)}`,\n };\n }\n\n return null;\n }),\n );\n }\n}\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiFile} from './file/file.component';\nimport {TuiFilesComponent} from './files/files.component';\nimport {TuiInputFiles} from './input-files/input-files.component';\nimport {TuiInputFilesDirective} from './input-files/input-files.directive';\nimport {TuiFileRejectedPipe} from './pipes/file-rejected.pipe';\n\nexport const TuiFiles = [\n TuiItem,\n TuiFile,\n TuiInputFiles,\n TuiFilesComponent,\n TuiFileRejectedPipe,\n TuiInputFilesDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["toArray","i1","i2","i3.TuiInputFilesValidator"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-files.mjs","sources":["../../../projects/kit/components/files/files.validators.ts","../../../projects/kit/components/files/files.utils.ts","../../../projects/kit/components/files/file/file.options.ts","../../../projects/kit/components/files/file/file.component.ts","../../../projects/kit/components/files/file/file.template.html","../../../projects/kit/components/files/files/files.component.ts","../../../projects/kit/components/files/files/files.template.html","../../../projects/kit/components/files/input-files/input-files.content.ts","../../../projects/kit/components/files/input-files/input-files.options.ts","../../../projects/kit/components/files/input-files/input-files-validator.directive.ts","../../../projects/kit/components/files/input-files/input-files.directive.ts","../../../projects/kit/components/files/input-files/input-files.component.ts","../../../projects/kit/components/files/pipes/file-rejected.pipe.ts","../../../projects/kit/components/files/files.ts","../../../projects/kit/components/files/taiga-ui-kit-components-files.ts"],"sourcesContent":["import {coerceArray} from '@angular/cdk/coercion';\nimport {type ValidatorFn} from '@angular/forms';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\n\nexport const TUI_SIZE_ERROR = 'tuiSize';\nexport const TUI_FORMAT_ERROR = 'tuiFormat';\n\ninterface FileFormatError {\n [TUI_FORMAT_ERROR]: TuiContext<File[]>;\n}\n\ninterface FileSizeError {\n [TUI_SIZE_ERROR]: TuiContext<File[]> & {size: number};\n}\n\nexport function tuiCreateFileSizeValidator(size: number): ValidatorFn {\n return ({value}: {value: File | readonly File[] | null}): FileSizeError | null => {\n const files = value && coerceArray(value);\n const $implicit = value && files?.filter((file) => file.size > size);\n\n return $implicit?.length ? {[TUI_SIZE_ERROR]: {$implicit, size}} : null;\n };\n}\n\nexport function tuiCreateFileFormatValidator(accept: string): ValidatorFn {\n return ({value}: {value: File | readonly File[] | null}): FileFormatError | null => {\n const files = value && coerceArray(value);\n const formats = toArray(accept);\n const $implicit = value && files?.filter((file) => !checkFormat(file, formats));\n\n return $implicit?.length && accept ? {[TUI_FORMAT_ERROR]: {$implicit}} : null;\n };\n}\n\nfunction checkFormat({name, type}: File, formats: readonly string[]): boolean {\n const extension = `.${(name.split('.').pop() || '').toLowerCase()}`;\n\n return formats.some(\n (format) =>\n format === extension ||\n format === type ||\n (format.split('/')[1] === '*' &&\n type?.split('/')[0] === format.split('/')[0]),\n );\n}\n\nfunction toArray(accept: string): readonly string[] {\n return accept\n .toLowerCase()\n .split(',')\n .map((format) => format.trim().toLowerCase());\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {type AbstractControl} from '@angular/forms';\nimport {tuiRound} from '@taiga-ui/cdk/utils/math';\n\nimport {TUI_FORMAT_ERROR, TUI_SIZE_ERROR} from './files.validators';\n\nconst BYTES_PER_KIB = 1024;\nconst BYTES_PER_MIB = 1024 * BYTES_PER_KIB;\n\nexport function tuiFilesRejected(control?: AbstractControl | null): File[] {\n const format: File[] = control?.getError(TUI_FORMAT_ERROR)?.$implicit || [];\n const size: File[] = control?.getError(TUI_SIZE_ERROR)?.$implicit || [];\n\n return Array.from(new Set([...format, ...size]));\n}\n\nexport function tuiFilesAccepted(control?: AbstractControl | null): File[] {\n const value = control?.value || [];\n const files: File[] = coerceArray(value);\n const size: File[] = control?.getError(TUI_SIZE_ERROR)?.$implicit || [];\n const format: File[] = control?.getError(TUI_FORMAT_ERROR)?.$implicit || [];\n\n return files.filter((file) => !size.includes(file) && !format.includes(file));\n}\n\nexport function tuiFormatSize(\n units: readonly [string, string, string],\n size?: number,\n locale?: string,\n): string | null {\n if (size === undefined) {\n return null;\n }\n\n if (size < BYTES_PER_KIB) {\n return `${size} ${units[0]}`;\n }\n\n if (size < BYTES_PER_MIB) {\n return `${(size / BYTES_PER_KIB).toFixed(0)} ${units[1]}`;\n }\n\n return `${tuiRound(size / BYTES_PER_MIB, 2).toLocaleString(locale)} ${units[2]}`;\n}\n","import {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {type TuiFileState} from '../files.types';\nimport {tuiFormatSize} from '../files.utils';\n\nexport interface TuiFileOptions extends TuiAppearanceOptions {\n readonly formatSize: (\n units: readonly [string, string, string],\n size?: number,\n locale?: string,\n ) => string | null;\n readonly icons: Record<\n Exclude<TuiFileState, 'loading'>,\n PolymorpheusContent<TuiContext<TuiSizeL>>\n >;\n}\n\nexport const TUI_FILE_DEFAULT_OPTIONS: TuiFileOptions = {\n appearance: 'outline',\n formatSize: tuiFormatSize,\n icons: {\n normal: ({$implicit}) => ($implicit === 'l' ? '@tui.file' : '@tui.circle-check'),\n error: '@tui.circle-alert',\n deleted: '@tui.trash',\n },\n};\n\n/**\n * Default parameters for file component\n */\nexport const [TUI_FILE_OPTIONS, tuiFileOptionsProvider] = tuiCreateOptions(\n TUI_FILE_DEFAULT_OPTIONS,\n);\n","import {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n LOCALE_ID,\n Output,\n} from '@angular/core';\nimport {DomSanitizer, type SafeValue} from '@angular/platform-browser';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {\n TuiAppearance,\n tuiAppearanceOptionsProvider,\n} from '@taiga-ui/core/directives/appearance';\nimport {TuiHintOverflow} from '@taiga-ui/core/directives/hint';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\nimport {type TuiLanguage} from '@taiga-ui/i18n/types';\nimport {TUI_DIGITAL_INFORMATION_UNITS, TUI_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {map, type Observable, of} from 'rxjs';\n\nimport {type TuiFileLike, type TuiFileState} from '../files.types';\nimport {TUI_FILE_OPTIONS} from './file.options';\n\n@Component({\n standalone: true,\n selector: 'tui-file,a[tuiFile],button[tuiFile]',\n imports: [\n CommonModule,\n PolymorpheusOutlet,\n TuiButton,\n TuiHintOverflow,\n TuiIcon,\n TuiLoader,\n ],\n templateUrl: './file.template.html',\n styleUrls: ['./file.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAppearanceOptionsProvider(TUI_FILE_OPTIONS)],\n hostDirectives: [TuiAppearance],\n host: {\n '[attr.data-delete]': 'showDelete',\n },\n})\nexport class TuiFile {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly options = inject(TUI_FILE_OPTIONS);\n private readonly locale = inject(LOCALE_ID);\n private readonly units$ = inject(TUI_DIGITAL_INFORMATION_UNITS);\n private readonly win = inject(WA_WINDOW) as Window & {File: typeof File};\n\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly fileTexts$ = inject(TUI_FILE_TEXTS);\n\n @Input()\n public file: TuiFileLike = {name: ''};\n\n @Input()\n public state: TuiFileState = 'normal';\n\n @Input()\n public size: TuiSizeL = 'm';\n\n @Input()\n public showDelete: boolean | 'always' = true;\n\n @Input()\n public showSize = true;\n\n @Input()\n public leftContent: PolymorpheusContent;\n\n @Output()\n public readonly remove = new EventEmitter<void>();\n\n protected get preview(): SafeValue {\n return this.isBig ? this.createPreview(this.file) : '';\n }\n\n protected get isBig(): boolean {\n return this.size === 'l';\n }\n\n protected get isLoading(): boolean {\n return this.state === 'loading';\n }\n\n protected get isError(): boolean {\n return this.state === 'error';\n }\n\n protected get isDeleted(): boolean {\n return this.state === 'deleted';\n }\n\n protected get allowDelete(): boolean {\n return this.showDelete && this.remove.observed;\n }\n\n protected get icon(): PolymorpheusContent<TuiContext<TuiSizeL>> {\n return this.state === 'loading' ? '' : this.options.icons[this.state];\n }\n\n protected get name(): string {\n return this.getName(this.file);\n }\n\n protected get type(): string {\n return this.getType(this.file);\n }\n\n protected get content$(): Observable<PolymorpheusContent> {\n return this.calculateContent$(this.state, this.file, this.fileTexts$);\n }\n\n protected get fileSize$(): Observable<string | null> {\n return this.calculateFileSize$(this.file, this.units$);\n }\n\n @tuiPure\n private calculateContent$(\n state: TuiFileState,\n file: TuiFileLike,\n fileTexts$: Observable<Record<keyof TuiLanguage['fileTexts'], string>>,\n ): Observable<PolymorpheusContent> {\n return state === 'error' && !file.content\n ? fileTexts$.pipe(map((texts) => texts.loadingError))\n : of(this.file.content || '');\n }\n\n @tuiPure\n private calculateFileSize$(\n file: TuiFileLike,\n units$: Observable<readonly [string, string, string]>,\n ): Observable<string | null> {\n return units$.pipe(\n map((units) => this.options.formatSize(units, file.size, this.locale)),\n );\n }\n\n @tuiPure\n private createPreview(file: TuiFileLike): SafeValue {\n if (file.src) {\n return file.src;\n }\n\n if (\n this.win.File &&\n file instanceof this.win.File &&\n file.type?.startsWith('image/')\n ) {\n return this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file));\n }\n\n return '';\n }\n\n @tuiPure\n private getName(file: TuiFileLike): string {\n const dot = file.name.lastIndexOf('.');\n // a dot at position 0 means a “hidden” file, not an extension\n\n return dot > 0 ? file.name.slice(0, dot) : file.name;\n }\n\n @tuiPure\n private getType(file: TuiFileLike): string {\n const dot = file.name.lastIndexOf('.');\n // only return an extension when there is one\n\n return dot > 0 ? file.name.slice(dot) : '';\n }\n}\n","<div\n class=\"t-preview\"\n [class.t-preview_big]=\"isBig\"\n>\n <ng-container *polymorpheusOutlet=\"leftContent || defaultLeftContent as text\">\n {{ text }}\n </ng-container>\n</div>\n<div class=\"t-wrapper\">\n <div class=\"t-text\">\n <div\n tuiHintOverflow\n class=\"t-name\"\n >\n {{ name }}\n </div>\n <div class=\"t-type\">{{ type }}</div>\n <div\n *ngIf=\"showSize && (fileSize$ | async) as fileSize\"\n class=\"t-size\"\n >\n {{ fileSize }}\n </div>\n </div>\n <div\n *ngIf=\"content$ | async as content\"\n class=\"t-content\"\n >\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </div>\n <ng-content />\n</div>\n<ng-container *ngIf=\"allowDelete\">\n <button\n *ngIf=\"fileTexts$ | async as texts\"\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-remove\"\n [iconStart]=\"icons.close\"\n (click.prevent)=\"remove.emit()\"\n (mousedown.prevent.zoneless)=\"(0)\"\n >\n {{ texts.remove }}\n </button>\n</ng-container>\n\n<ng-template #defaultLeftContent>\n <img\n *ngIf=\"preview; else loader\"\n alt=\"file preview\"\n class=\"t-image\"\n [src]=\"preview\"\n />\n <ng-template #loader>\n <tui-loader\n *ngIf=\"isLoading; else svg\"\n class=\"t-loader\"\n [inheritColor]=\"isBig\"\n />\n </ng-template>\n <ng-template #svg>\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [class.t-icon_blank]=\"isBig || isDeleted\"\n [class.t-icon_error]=\"isError\"\n [icon]=\"src.toString()\"\n />\n </ng-template>\n</ng-template>\n","import {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n Output,\n type QueryList,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiExpandComponent} from '@taiga-ui/core/components/expand';\nimport {TuiGroup, tuiGroupOptionsProvider} from '@taiga-ui/core/directives/group';\nimport {TUI_HIDE_TEXT, TUI_SHOW_ALL_TEXT} from '@taiga-ui/kit/tokens';\n\n@Component({\n standalone: true,\n selector: 'tui-files',\n imports: [CommonModule, TuiButton, TuiExpandComponent, TuiGroup],\n templateUrl: './files.template.html',\n styleUrls: ['./files.styles.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiGroupOptionsProvider({size: 'm', collapsed: true, orientation: 'vertical'}),\n ],\n hostDirectives: [TuiGroup],\n})\nexport class TuiFilesComponent {\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected readonly hideText$ = inject(TUI_HIDE_TEXT);\n protected readonly showAllText$ = inject(TUI_SHOW_ALL_TEXT);\n\n @Input()\n public max = 0;\n\n @Input()\n public expanded = false;\n\n @Output()\n public readonly expandedChange = new EventEmitter<boolean>();\n\n protected get hasExtraItems(): boolean {\n return !!this.max && this.items.length > this.max;\n }\n\n protected toggle(): void {\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n}\n","<ng-container *ngIf=\"items?.changes | async\" />\n<ng-content />\n<ng-container *ngFor=\"let item of items; let index = index\">\n <ng-container\n *ngIf=\"!max || index < max\"\n [ngTemplateOutlet]=\"item\"\n />\n</ng-container>\n<tui-expand\n *ngIf=\"hasExtraItems\"\n [expanded]=\"expanded\"\n>\n <div\n tuiGroup\n class=\"t-extra-items\"\n >\n <ng-container *ngFor=\"let item of items; let index = index\">\n <ng-container\n *ngIf=\"max && index >= max\"\n [ngTemplateOutlet]=\"item\"\n />\n </ng-container>\n </div>\n</tui-expand>\n<div\n *ngIf=\"hasExtraItems\"\n class=\"t-bottom\"\n [class.t-bottom_collapsed]=\"!expanded\"\n>\n <button\n appearance=\"outline\"\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n (click)=\"toggle()\"\n >\n {{ (expanded ? hideText$ : showAllText$) | async }}\n </button>\n</div>\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiBreakpointService} from '@taiga-ui/core/services';\nimport {TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {injectContext} from '@taiga-ui/polymorpheus';\nimport {combineLatest, map, type Observable, of} from 'rxjs';\n\nimport {TuiInputFiles} from './input-files.component';\n\n@Component({\n standalone: true,\n imports: [AsyncPipe, TuiLink],\n template: `\n <a tuiLink>{{ link$ | async }}</a>\n {{ label$ | async }}\n `,\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiInputFilesContent {\n private readonly breakpoint$ = inject(TuiBreakpointService);\n private readonly text$ = inject(TUI_INPUT_FILE_TEXTS);\n private readonly context = injectContext<TuiContext<boolean>>();\n private readonly component = inject(TuiInputFiles);\n\n protected get link$(): Observable<string> {\n return this.computeLink$(\n this.context.$implicit,\n !!this.component.input?.input.multiple,\n );\n }\n\n protected get label$(): Observable<string> {\n return this.computeLabel$(\n this.context.$implicit,\n !!this.component.input?.input.multiple,\n );\n }\n\n @tuiPure\n private computeLink$(fileDragged: boolean, multiple: boolean): Observable<string> {\n return fileDragged\n ? of('')\n : this.text$.pipe(\n map((t) => (multiple ? t.defaultLinkMultiple : t.defaultLinkSingle)),\n );\n }\n\n @tuiPure\n private computeLabel$(fileDragged: boolean, multiple: boolean): Observable<string> {\n return fileDragged\n ? combineLatest([this.breakpoint$, this.text$]).pipe(\n map(([breakpoint, text]) => {\n if (breakpoint === 'mobile') {\n return '';\n }\n\n return multiple ? text.dropMultiple : text.drop;\n }),\n )\n : combineLatest([this.breakpoint$, this.text$]).pipe(\n map(([breakpoint, text]) => {\n if (breakpoint === 'mobile') {\n return '';\n }\n\n return multiple\n ? text.defaultLabelMultiple\n : text.defaultLabelSingle;\n }),\n );\n }\n}\n","import {InjectionToken, type Provider} from '@angular/core';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\n\nexport interface TuiInputFilesOptions extends TuiAppearanceOptions {\n accept: string;\n maxFileSize: number;\n multiple: boolean;\n size: TuiSizeL;\n}\n\nexport const TUI_INPUT_FILES_DEFAULT_OPTIONS: TuiInputFilesOptions = {\n appearance: 'file',\n accept: '',\n multiple: false,\n size: 'm',\n maxFileSize: 30 * 1024 * 1024, // 30 MiB\n};\n\n/**\n * Default parameters for input files component\n */\nexport const TUI_INPUT_FILES_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_INPUT_FILES_OPTIONS' : '',\n {\n factory: () => TUI_INPUT_FILES_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiInputFilesOptionsProvider(\n options: Partial<TuiInputFilesOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_FILES_OPTIONS,\n options,\n TUI_INPUT_FILES_DEFAULT_OPTIONS,\n );\n}\n","import {Directive, inject, type OnChanges, type OnInit} from '@angular/core';\nimport {NG_VALIDATORS, Validators} from '@angular/forms';\nimport {TuiValidator} from '@taiga-ui/cdk/directives/validator';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {\n tuiCreateFileFormatValidator,\n tuiCreateFileSizeValidator,\n} from '../files.validators';\nimport {TUI_INPUT_FILES_OPTIONS} from './input-files.options';\n\n@Directive({\n standalone: true,\n inputs: ['accept', 'maxFileSize'],\n providers: [tuiProvide(NG_VALIDATORS, TuiInputFilesValidator, true)],\n exportAs: 'tuiInputFilesValidator',\n host: {\n '[accept]': 'accept',\n },\n})\nexport class TuiInputFilesValidator extends TuiValidator implements OnInit, OnChanges {\n private readonly options = inject(TUI_INPUT_FILES_OPTIONS);\n\n public accept = this.options.accept;\n public maxFileSize = this.options.maxFileSize;\n\n public override ngOnChanges(): void {\n this.update();\n }\n\n public ngOnInit(): void {\n this.update();\n }\n\n private update(): void {\n this.validate =\n Validators.compose([\n tuiCreateFileFormatValidator(this.accept),\n tuiCreateFileSizeValidator(this.maxFileSize),\n ]) || Validators.nullValidator;\n this.onChange();\n }\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {Directive, forwardRef, inject, Output} from '@angular/core';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {EMPTY_ARRAY} from '@taiga-ui/cdk/constants';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiControlValue, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiAppearanceMode,\n tuiAppearanceOptionsProvider,\n TuiWithAppearance,\n} from '@taiga-ui/core/directives/appearance';\nimport {filter, map, switchMap, timer} from 'rxjs';\n\nimport {type TuiFileLike} from '../files.types';\nimport {tuiFilesRejected} from '../files.utils';\nimport {TuiInputFiles} from './input-files.component';\nimport {TUI_INPUT_FILES_OPTIONS} from './input-files.options';\nimport {TuiInputFilesValidator} from './input-files-validator.directive';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputFiles]',\n providers: [\n tuiAsControl(TuiInputFilesDirective),\n tuiAppearanceOptionsProvider(TUI_INPUT_FILES_OPTIONS),\n ],\n hostDirectives: [\n TuiNativeValidator,\n TuiWithAppearance,\n {\n directive: TuiInputFilesValidator,\n inputs: ['accept', 'maxFileSize'],\n },\n ],\n host: {\n title: '',\n type: 'file',\n '[disabled]': 'disabled()',\n '(blur)': 'onTouched()',\n '(click)': 'onClick($event)',\n },\n})\nexport class TuiInputFilesDirective extends TuiControl<\n TuiFileLike | readonly TuiFileLike[]\n> {\n protected readonly host = inject(forwardRef(() => TuiInputFiles));\n protected readonly m = tuiAppearanceMode(this.mode, {});\n\n @Output()\n public readonly reject = timer(0, tuiZonefreeScheduler()).pipe(\n switchMap(() => tuiControlValue(this.control.control)),\n map(() => tuiFilesRejected(this.control.control)),\n filter(({length}) => !!length),\n );\n\n public readonly input = tuiInjectElement<HTMLInputElement>();\n\n public process(files: FileList): void {\n const fileOrFiles = this.input.multiple\n ? [...toArray(this.value()), ...Array.from(files)]\n : files[0];\n\n if (fileOrFiles) {\n this.onChange(fileOrFiles);\n }\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.input.readOnly) {\n event.preventDefault();\n }\n }\n}\n\nfunction toArray(\n value: TuiFileLike | readonly TuiFileLike[] | null,\n): readonly TuiFileLike[] {\n return value ? coerceArray(value) : EMPTY_ARRAY;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {PolymorpheusComponent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiInputFilesContent} from './input-files.content';\nimport {TuiInputFilesDirective} from './input-files.directive';\n\n@Component({\n standalone: true,\n selector: 'label[tuiInputFiles]',\n imports: [PolymorpheusOutlet],\n template: `\n <ng-content />\n <span\n *polymorpheusOutlet=\"\n template || content as text;\n context: {$implicit: fileDragged}\n \"\n >\n {{ text }}\n </span>\n `,\n styleUrls: ['./input-files.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(dragover.prevent.zoneless)': '0',\n '(drop.prevent)': 'onDropped($event)',\n '(dragenter)': 'onDrag($event.dataTransfer)',\n '(dragleave)': 'onDrag(null)',\n '[class._dragged]': 'fileDragged',\n '(change)': 'onFilesSelected($event.target)',\n },\n})\nexport class TuiInputFiles {\n @ContentChild(TemplateRef)\n protected readonly template?: TemplateRef<TuiContext<boolean>>;\n\n protected files?: FileList | null;\n protected readonly content = new PolymorpheusComponent(TuiInputFilesContent);\n\n @ContentChild(TuiInputFilesDirective)\n public readonly input?: TuiInputFilesDirective;\n\n protected get fileDragged(): boolean {\n return !!this.files && !this.input?.disabled();\n }\n\n protected onFilesSelected(input: HTMLInputElement): void {\n if (!input?.files) {\n return;\n }\n\n this.input?.process(input.files);\n input.value = '';\n }\n\n protected onDropped({dataTransfer}: DragEvent): void {\n this.files = null;\n\n if (dataTransfer?.files && !this.input?.disabled()) {\n this.input?.process(dataTransfer.files);\n }\n }\n\n protected onDrag(dataTransfer: DataTransfer | null): void {\n this.files = dataTransfer?.files;\n }\n}\n","import {inject, LOCALE_ID, Pipe, type PipeTransform} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {TUI_DIGITAL_INFORMATION_UNITS, TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {combineLatest, map, type Observable} from 'rxjs';\n\nimport {TUI_FILE_OPTIONS} from '../file/file.options';\nimport {type TuiFileLike} from '../files.types';\nimport {\n tuiCreateFileFormatValidator,\n tuiCreateFileSizeValidator,\n} from '../files.validators';\nimport {TUI_INPUT_FILES_OPTIONS} from '../input-files/input-files.options';\n\n@Pipe({\n standalone: true,\n name: 'tuiFileRejected',\n})\nexport class TuiFileRejectedPipe implements PipeTransform {\n private readonly options = inject(TUI_INPUT_FILES_OPTIONS);\n private readonly formatSize = inject(TUI_FILE_OPTIONS).formatSize;\n private readonly locale = inject(LOCALE_ID);\n private readonly text$ = inject(TUI_INPUT_FILE_TEXTS);\n private readonly unit$ = inject(TUI_DIGITAL_INFORMATION_UNITS);\n\n public transform(\n file: TuiFileLike | null,\n {\n accept = this.options.accept,\n maxFileSize = this.options.maxFileSize,\n }: {accept?: string; maxFileSize?: number} = this.options,\n ): Observable<TuiFileLike | null> {\n const sizeValidator = tuiCreateFileSizeValidator(maxFileSize);\n const formatValidator = tuiCreateFileFormatValidator(accept);\n const control = new FormControl(file);\n\n return combineLatest([this.text$, this.unit$]).pipe(\n map(([{maxSizeRejectionReason, formatRejectionReason}, units]) => {\n if (file && formatValidator(control)) {\n return {\n name: file.name,\n size: file.size,\n content: formatRejectionReason,\n };\n }\n\n if (file && sizeValidator(control)) {\n return {\n name: file.name,\n size: file.size,\n content: `${maxSizeRejectionReason}${CHAR_NO_BREAK_SPACE}${this.formatSize(units, maxFileSize, this.locale)}`,\n };\n }\n\n return null;\n }),\n );\n }\n}\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiFile} from './file/file.component';\nimport {TuiFilesComponent} from './files/files.component';\nimport {TuiInputFiles} from './input-files/input-files.component';\nimport {TuiInputFilesDirective} from './input-files/input-files.directive';\nimport {TuiFileRejectedPipe} from './pipes/file-rejected.pipe';\n\nexport const TuiFiles = [\n TuiItem,\n TuiFile,\n TuiInputFiles,\n TuiFilesComponent,\n TuiFileRejectedPipe,\n TuiInputFilesDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["toArray","i1","i2","i3.TuiInputFilesValidator"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, computed, effect, signal, Directive, Input, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
2
+ import { inject, signal, computed, effect, Directive, Input, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
3
3
  import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import * as i2 from '@maskito/angular';
5
5
  import { MaskitoDirective } from '@maskito/angular';
@@ -43,6 +43,8 @@ class TuiInputNumberDirective extends TuiControl {
43
43
  this.options = inject(TUI_INPUT_NUMBER_OPTIONS);
44
44
  this.textfield = inject(TuiTextfieldDirective);
45
45
  this.isIOS = inject(TUI_IS_IOS);
46
+ this.minRaw = signal(this.options.min);
47
+ this.maxRaw = signal(this.options.max);
46
48
  this.numberFormat = toSignal(inject(TUI_NUMBER_FORMAT), {
47
49
  initialValue: TUI_DEFAULT_NUMBER_FORMAT,
48
50
  });
@@ -92,16 +94,16 @@ class TuiInputNumberDirective extends TuiControl {
92
94
  });
93
95
  this.textfield.value.update((x) => maskitoTransform(x, options));
94
96
  }, TUI_ALLOW_SIGNAL_WRITES);
95
- this.min = signal(this.options.min);
96
- this.max = signal(this.options.max);
97
+ this.min = computed(() => Math.min(this.minRaw(), this.maxRaw()));
98
+ this.max = computed(() => Math.max(this.minRaw(), this.maxRaw()));
97
99
  this.prefix = signal(this.options.prefix);
98
100
  this.postfix = signal(this.options.postfix);
99
101
  }
100
102
  set minSetter(x) {
101
- this.updateMinMaxLimits(this.transformer.fromControlValue(x), this.max());
103
+ this.minRaw.set(this.transformer.fromControlValue(x ?? this.options.min));
102
104
  }
103
105
  set maxSetter(x) {
104
- this.updateMinMaxLimits(this.min(), this.transformer.fromControlValue(x));
106
+ this.maxRaw.set(this.transformer.fromControlValue(x ?? this.options.max));
105
107
  }
106
108
  // TODO(v5): replace with signal input
107
109
  set prefixSetter(x) {
@@ -155,12 +157,6 @@ class TuiInputNumberDirective extends TuiControl {
155
157
  }).replace(CHAR_HYPHEN, CHAR_MINUS) +
156
158
  this.postfix());
157
159
  }
158
- updateMinMaxLimits(nullableMin, nullableMax) {
159
- const min = nullableMin ?? this.options.min;
160
- const max = nullableMax ?? this.options.max;
161
- this.min.set(Math.min(min, max));
162
- this.max.set(Math.max(min, max));
163
- }
164
160
  computeMask(params) {
165
161
  const { prefix = '', postfix = '' } = params;
166
162
  const { plugins, ...options } = maskitoNumberOptionsGenerator(params);
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-number.mjs","sources":["../../../projects/kit/components/input-number/input-number.options.ts","../../../projects/kit/components/input-number/input-number.directive.ts","../../../projects/kit/components/input-number/quantum.directive.ts","../../../projects/kit/components/input-number/step/input-number-step.component.ts","../../../projects/kit/components/input-number/step/input-number-step.template.html","../../../projects/kit/components/input-number/input-number.ts","../../../projects/kit/components/input-number/taiga-ui-kit-components-input-number.ts"],"sourcesContent":["import {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputNumberOptions {\n readonly max: number;\n readonly min: number;\n readonly prefix: string;\n readonly postfix: string;\n readonly step: number;\n readonly icons: Readonly<{\n decrease: string;\n increase: string;\n }>;\n readonly valueTransformer: TuiValueTransformer<number | null, any> | null;\n}\n\nexport const TUI_INPUT_NUMBER_DEFAULT_OPTIONS: TuiInputNumberOptions = {\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n prefix: '',\n postfix: '',\n step: 0,\n icons: {\n increase: '@tui.plus',\n decrease: '@tui.minus',\n },\n valueTransformer: null,\n};\n\nexport const [TUI_INPUT_NUMBER_OPTIONS, tuiInputNumberOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n);\n","import {computed, Directive, effect, inject, Input, signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoOptions, maskitoTransform} from '@maskito/core';\nimport {\n maskitoCaretGuard,\n maskitoNumberOptionsGenerator,\n type MaskitoNumberParams,\n maskitoParseNumber,\n} from '@maskito/kit';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {CHAR_HYPHEN, CHAR_MINUS, TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\nimport {TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsSafeToRound} from '@taiga-ui/cdk/utils/math';\nimport {\n TuiTextfieldDirective,\n TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {TUI_DEFAULT_NUMBER_FORMAT, TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {tuiFormatNumber} from '@taiga-ui/core/utils/format';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from './input-number.options';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputNumber]',\n providers: [\n tuiAsControl(TuiInputNumberDirective),\n tuiValueTransformerFrom(TUI_INPUT_NUMBER_OPTIONS),\n ],\n hostDirectives: [TuiWithTextfield, MaskitoDirective],\n host: {\n '[disabled]': 'disabled()',\n '[attr.inputMode]': 'inputMode()',\n '[attr.maxLength]':\n 'element.maxLength > 0 ? element.maxLength : defaultMaxLength()',\n '(blur)': 'setValue(transformer.fromControlValue(control.value))',\n '(focus)': 'onFocus()',\n },\n})\nexport class TuiInputNumberDirective extends TuiControl<number | null> {\n private readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n private readonly textfield = inject(TuiTextfieldDirective);\n private readonly isIOS = inject(TUI_IS_IOS);\n private readonly numberFormat = toSignal(inject(TUI_NUMBER_FORMAT), {\n initialValue: TUI_DEFAULT_NUMBER_FORMAT,\n });\n\n private readonly formatted = computed(() =>\n maskitoParseNumber(this.textfield.value(), this.numberFormat()),\n );\n\n private readonly precision = computed(() =>\n Number.isNaN(this.numberFormat().precision) ? 2 : this.numberFormat().precision,\n );\n\n private readonly unfinished = computed((value = this.formatted()) =>\n value < 0 ? value > this.max() : value < this.min(),\n );\n\n protected readonly element = tuiInjectElement<HTMLInputElement>();\n protected readonly mask = tuiMaskito(\n computed(() => this.computeMask(this.maskParams)),\n );\n\n protected readonly inputMode = computed(() => {\n if (this.isIOS) {\n return this.min() < 0\n ? 'text' // iPhone does not have minus sign if inputMode equals to 'numeric' / 'decimal'\n : 'decimal';\n }\n\n /**\n * Samsung Keyboard does not minus sign for `inputmode=decimal`\n * @see https://github.com/taiga-family/taiga-ui/issues/11061#issuecomment-2939103792\n */\n return 'numeric';\n });\n\n protected readonly defaultMaxLength = computed(() => {\n const {decimalSeparator, thousandSeparator} = this.numberFormat();\n const decimalPart =\n !!this.precision() && this.textfield.value().includes(decimalSeparator);\n const precision = decimalPart ? Math.min(this.precision() + 1, 20) : 0;\n const takeThousand = thousandSeparator.repeat(5).length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand;\n });\n\n protected readonly onChangeEffect = effect(() => {\n const value = this.formatted();\n\n if (Number.isNaN(value)) {\n this.onChange(null);\n\n return;\n }\n\n if (\n this.unfinished() ||\n value < this.min() ||\n value > this.max() ||\n this.value() === value\n ) {\n return;\n }\n\n this.onChange(value);\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected maskInitialCalibrationEffect = effect(() => {\n const options = maskitoNumberOptionsGenerator({\n ...this.maskParams,\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n });\n\n this.textfield.value.update((x) => maskitoTransform(x, options));\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n public readonly min = signal(this.options.min);\n public readonly max = signal(this.options.max);\n public readonly prefix = signal(this.options.prefix);\n public readonly postfix = signal(this.options.postfix);\n\n @Input('min')\n public set minSetter(x: number | null) {\n this.updateMinMaxLimits(this.transformer.fromControlValue(x), this.max());\n }\n\n @Input('max')\n public set maxSetter(x: number | null) {\n this.updateMinMaxLimits(this.min(), this.transformer.fromControlValue(x));\n }\n\n // TODO(v5): replace with signal input\n @Input('prefix')\n public set prefixSetter(x: string) {\n this.prefix.set(x);\n }\n\n // TODO(v5): replace with signal input\n @Input('postfix')\n public set postfixSetter(x: string) {\n this.postfix.set(x);\n }\n\n public override writeValue(value: number | null): void {\n super.writeValue(value);\n this.setValue(this.value());\n }\n\n public setValue(value: number | null): void {\n this.textfield.value.set(this.formatNumber(value));\n }\n\n protected onFocus(): void {\n if (Number.isNaN(this.formatted()) && !this.readOnly()) {\n this.textfield.value.set(this.prefix() + this.postfix());\n }\n }\n\n private get maskParams(): MaskitoNumberParams {\n const {decimalMode, ...numberFormat} = this.numberFormat();\n const maximumFractionDigits = this.precision();\n\n return {\n ...numberFormat,\n maximumFractionDigits,\n min: this.min(),\n max: this.max(),\n prefix: this.prefix(),\n postfix: this.postfix(),\n minimumFractionDigits: decimalMode === 'always' ? maximumFractionDigits : 0,\n };\n }\n\n private formatNumber(value: number | null): string {\n if (value === null || Number.isNaN(value)) {\n return '';\n }\n\n return (\n (this.prefix() !== CHAR_MINUS ? this.prefix() : '') +\n tuiFormatNumber(value, {\n ...this.numberFormat(),\n /**\n * Number can satisfy interval [Number.MIN_SAFE_INTEGER; Number.MAX_SAFE_INTEGER]\n * but its rounding can violate it.\n * Before BigInt support there is no perfect solution – only trade off.\n * No rounding is better than lose precision and incorrect mutation of already valid value.\n */\n precision: tuiIsSafeToRound(value, this.precision())\n ? this.precision()\n : Infinity,\n }).replace(CHAR_HYPHEN, CHAR_MINUS) +\n this.postfix()\n );\n }\n\n private updateMinMaxLimits(\n nullableMin: number | null,\n nullableMax: number | null,\n ): void {\n const min = nullableMin ?? this.options.min;\n const max = nullableMax ?? this.options.max;\n\n this.min.set(Math.min(min, max));\n this.max.set(Math.max(min, max));\n }\n\n private computeMask(params: MaskitoNumberParams): MaskitoOptions {\n const {prefix = '', postfix = ''} = params;\n const {plugins, ...options} = maskitoNumberOptionsGenerator(params);\n\n return {\n ...options,\n plugins: [\n ...plugins,\n maskitoCaretGuard((value) => [\n prefix.length,\n value.length - postfix.length,\n ]),\n ],\n };\n }\n}\n","import {Directive, inject, Input} from '@angular/core';\nimport {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiIsSafeToRound, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiGetFractionPartPadded} from '@taiga-ui/core/utils/format';\nimport {TUI_FLOATING_PRECISION} from '@taiga-ui/kit/components/slider';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from './input-number.options';\n\n@Directive({\n standalone: true,\n selector: '[tuiInputNumber][quantum], [tuiInputSlider][quantum]',\n providers: [tuiProvide(TuiValueTransformer, TuiQuantumValueTransformer)],\n})\nexport class TuiQuantumValueTransformer extends TuiValueTransformer<\n number | null,\n number | null\n> {\n private readonly parent = inject(TUI_INPUT_NUMBER_OPTIONS).valueTransformer;\n\n @Input()\n public quantum = 1;\n\n public override fromControlValue(controlValue: number | null): number | null {\n return this.parent?.fromControlValue(controlValue) ?? controlValue;\n }\n\n public toControlValue(internalValue: number | null): number | null {\n const value = this.parent?.toControlValue(internalValue) ?? internalValue;\n\n return value != null &&\n tuiIsSafeToRound(value, tuiGetFractionPartPadded(this.quantum).length)\n ? tuiRound(\n Math.round(value / this.quantum) * this.quantum,\n TUI_FLOATING_PRECISION,\n )\n : value;\n }\n}\n\n@Directive({\n standalone: true,\n hostDirectives: [\n {\n directive: TuiQuantumValueTransformer,\n inputs: ['quantum'],\n },\n ],\n})\nexport class TuiWithQuantumValueTransformer {}\n","import {DOCUMENT, NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n Input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {expand, fromEvent, map, merge, Subject, switchMap, takeUntil, timer} from 'rxjs';\n\nimport {TuiInputNumberDirective} from '../input-number.directive';\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from '../input-number.options';\n\nconst INITIAL_DELAY = 300;\nconst DELAY_DECREMENT = 15;\nconst MIN_DELAY = 100;\n\n@Component({\n standalone: true,\n selector: 'input[tuiInputNumber][step]',\n imports: [NgIf, TuiButton, TuiTextfieldContent],\n templateUrl: './input-number-step.template.html',\n styleUrls: ['./input-number-step.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n ngSkipHydration: 'true',\n '(keydown.arrowDown.prevent)': 'onStep(-step())',\n '(keydown.arrowUp.prevent)': 'onStep(step())',\n '[class._with-buttons]': 'step()',\n },\n})\nexport class TuiInputNumberStep {\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;\n protected readonly options = inject<TuiInputNumberOptions>(TUI_INPUT_NUMBER_OPTIONS);\n protected readonly input = inject(TuiInputNumberDirective, {self: true});\n protected readonly step = signal(this.options.step);\n protected readonly value = computed(() => this.input.value() ?? NaN);\n protected readonly step$ = new Subject<number>();\n protected readonly doc = inject(DOCUMENT);\n\n protected readonly stop$ = merge(\n fromEvent(this.doc, 'pointerup'),\n fromEvent(this.doc, 'pointerleave'),\n fromEvent(this.doc, 'pointercancel'),\n );\n\n protected readonly stepping = this.step$\n .pipe(\n switchMap((value) =>\n timer(INITIAL_DELAY).pipe(\n expand((_, index) => timer(getDelay(index))),\n map(() => value),\n takeUntil(this.stop$),\n ),\n ),\n takeUntilDestroyed(),\n )\n .subscribe((value) => this.onStep(value));\n\n // TODO(v5): replace with signal input\n @Input('step')\n public set stepSetter(x: number) {\n this.step.set(x);\n }\n\n protected onStep(step: number): void {\n const current = this.input.value() ?? 0;\n\n this.input.setValue(tuiClamp(current + step, this.input.min(), this.input.max()));\n this.el.setSelectionRange(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n }\n}\n\nfunction getDelay(index: number): number {\n return Math.max(INITIAL_DELAY - index * DELAY_DECREMENT, MIN_DELAY);\n}\n","<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || value() >= input.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (pointerdown.prevent)=\"step$.next(step())\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || value() <= input.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (pointerdown.prevent)=\"step$.next(-step())\"\n >\n -\n </button>\n </section>\n</ng-container>\n","import {TuiInputNumberDirective} from './input-number.directive';\nimport {TuiQuantumValueTransformer} from './quantum.directive';\nimport {TuiInputNumberStep} from './step/input-number-step.component';\n\nexport const TuiInputNumber = [\n TuiInputNumberDirective,\n TuiInputNumberStep,\n TuiQuantumValueTransformer,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAgBa,MAAA,gCAAgC,GAA0B;IACnE,GAAG,EAAE,MAAM,CAAC,gBAAgB;IAC5B,GAAG,EAAE,MAAM,CAAC,gBAAgB;AAC5B,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,KAAK,EAAE;AACH,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,QAAQ,EAAE,YAAY;AACzB,KAAA;AACD,IAAA,gBAAgB,EAAE,IAAI;EACxB;AAEK,MAAM,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,GAAG,gBAAgB,CACrF,gCAAgC;;ACLpC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,MAiBa,uBAAwB,SAAQ,UAAyB,CAAA;AAjBtE,IAAA,WAAA,GAAA;;AAkBqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;AAChE,YAAA,YAAY,EAAE,yBAAyB;AAC1C,SAAA,CAAC,CAAC;QAEc,IAAS,CAAA,SAAA,GAAG,QAAQ,CAAC,MAClC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAClE,CAAC;AAEe,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAClC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAClF,CAAC;AAEe,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,KAC5D,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CACtD,CAAC;QAEiB,IAAO,CAAA,OAAA,GAAG,gBAAgB,EAAoB,CAAC;AAC/C,QAAA,IAAA,CAAA,IAAI,GAAG,UAAU,CAChC,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CACpD,CAAC;AAEiB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YACzC,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;sBACf,MAAM;sBACN,SAAS,CAAC;AACnB,aAAA;AAED;;;AAGG;AACH,YAAA,OAAO,SAAS,CAAC;AACrB,SAAC,CAAC,CAAC;AAEgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YAChD,MAAM,EAAC,gBAAgB,EAAE,iBAAiB,EAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAClE,MAAM,WAAW,GACb,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC5E,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACvE,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAExD,YAAA,OAAO,kBAAkB,GAAG,SAAS,GAAG,YAAY,CAAC;AACzD,SAAC,CAAC,CAAC;AAEgB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,MAAK;AAC5C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAE/B,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACrB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEpB,OAAO;AACV,aAAA;YAED,IACI,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAClB,gBAAA,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAClB,gBAAA,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,EACxB;gBACE,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACxB,EAAE,uBAAuB,CAAC,CAAC;AAElB,QAAA,IAAA,CAAA,4BAA4B,GAAG,MAAM,CAAC,MAAK;YACjD,MAAM,OAAO,GAAG,6BAA6B,CAAC;gBAC1C,GAAG,IAAI,CAAC,UAAU;gBAClB,GAAG,EAAE,MAAM,CAAC,gBAAgB;gBAC5B,GAAG,EAAE,MAAM,CAAC,gBAAgB;AAC/B,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;SACpE,EAAE,uBAAuB,CAAC,CAAC;QAEZ,IAAG,CAAA,GAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAG,CAAA,GAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAuG1D,KAAA;IArGG,IACW,SAAS,CAAC,CAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;KAC7E;IAED,IACW,SAAS,CAAC,CAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7E;;IAGD,IACW,YAAY,CAAC,CAAS,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACtB;;IAGD,IACW,aAAa,CAAC,CAAS,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACvB;AAEe,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC3C,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAC/B;AAEM,IAAA,QAAQ,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;KACtD;IAES,OAAO,GAAA;AACb,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpD,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5D,SAAA;KACJ;AAED,IAAA,IAAY,UAAU,GAAA;QAClB,MAAM,EAAC,WAAW,EAAE,GAAG,YAAY,EAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAC3D,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAE/C,OAAO;AACH,YAAA,GAAG,YAAY;YACf,qBAAqB;AACrB,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;YACvB,qBAAqB,EAAE,WAAW,KAAK,QAAQ,GAAG,qBAAqB,GAAG,CAAC;SAC9E,CAAC;KACL;AAEO,IAAA,YAAY,CAAC,KAAoB,EAAA;QACrC,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AAED,QAAA,QACI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;YAClD,eAAe,CAAC,KAAK,EAAE;gBACnB,GAAG,IAAI,CAAC,YAAY,EAAE;AACtB;;;;;AAKG;gBACH,SAAS,EAAE,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAChD,sBAAE,IAAI,CAAC,SAAS,EAAE;AAClB,sBAAE,QAAQ;AACjB,aAAA,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC;AACnC,YAAA,IAAI,CAAC,OAAO,EAAE,EAChB;KACL;IAEO,kBAAkB,CACtB,WAA0B,EAC1B,WAA0B,EAAA;QAE1B,MAAM,GAAG,GAAG,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC5C,MAAM,GAAG,GAAG,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAE5C,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;KACpC;AAEO,IAAA,WAAW,CAAC,MAA2B,EAAA;QAC3C,MAAM,EAAC,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAC,GAAG,MAAM,CAAC;QAC3C,MAAM,EAAC,OAAO,EAAE,GAAG,OAAO,EAAC,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;QAEpE,OAAO;AACH,YAAA,GAAG,OAAO;AACV,YAAA,OAAO,EAAE;AACL,gBAAA,GAAG,OAAO;AACV,gBAAA,iBAAiB,CAAC,CAAC,KAAK,KAAK;AACzB,oBAAA,MAAM,CAAC,MAAM;AACb,oBAAA,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;iBAChC,CAAC;AACL,aAAA;SACJ,CAAC;KACL;+GAzLQ,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAdrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,KAAA,EAAA,WAAA,CAAA,EAAA,SAAA,EAAA,CAAA,KAAA,EAAA,WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,aAAA,EAAA,CAAA,SAAA,EAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,uDAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gEAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACP,YAAY,CAAC,uBAAuB,CAAC;YACrC,uBAAuB,CAAC,wBAAwB,CAAC;AACpD,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAWQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAjBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,SAAS,EAAE;AACP,wBAAA,YAAY,CAAyB,uBAAA,CAAA;wBACrC,uBAAuB,CAAC,wBAAwB,CAAC;AACpD,qBAAA;AACD,oBAAA,cAAc,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AACpD,oBAAA,IAAI,EAAE;AACF,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,kBAAkB,EAAE,aAAa;AACjC,wBAAA,kBAAkB,EACd,gEAAgE;AACpE,wBAAA,QAAQ,EAAE,uDAAuD;AACjE,wBAAA,SAAS,EAAE,WAAW;AACzB,qBAAA;AACJ,iBAAA,CAAA;8BAuFc,SAAS,EAAA,CAAA;sBADnB,KAAK;uBAAC,KAAK,CAAA;gBAMD,SAAS,EAAA,CAAA;sBADnB,KAAK;uBAAC,KAAK,CAAA;gBAOD,YAAY,EAAA,CAAA;sBADtB,KAAK;uBAAC,QAAQ,CAAA;gBAOJ,aAAa,EAAA,CAAA;sBADvB,KAAK;uBAAC,SAAS,CAAA;;;ACzIpB,MAKa,0BAA2B,SAAQ,mBAG/C,CAAA;AARD,IAAA,WAAA,GAAA;;AASqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC,gBAAgB,CAAC;QAGrE,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;AAiBtB,KAAA;AAfmB,IAAA,gBAAgB,CAAC,YAA2B,EAAA;QACxD,OAAO,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC;KACtE;AAEM,IAAA,cAAc,CAAC,aAA4B,EAAA;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC;QAE1E,OAAO,KAAK,IAAI,IAAI;YAChB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACtE,cAAE,QAAQ,CACJ,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,EAC/C,sBAAsB,CACzB;cACD,KAAK,CAAC;KACf;+GAvBQ,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sDAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAFxB,CAAC,UAAU,CAAC,mBAAmB,EAAE,0BAA0B,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAE/D,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sDAAsD;AAChE,oBAAA,SAAS,EAAE,CAAC,UAAU,CAAC,mBAAmB,6BAA6B,CAAC;AAC3E,iBAAA,CAAA;8BAQU,OAAO,EAAA,CAAA;sBADb,KAAK;;AAoBV,MASa,8BAA8B,CAAA;+GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,oDAnC9B,0BAA0B,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAmC1B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAT1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,0BAA0B;4BACrC,MAAM,EAAE,CAAC,SAAS,CAAC;AACtB,yBAAA;AACJ,qBAAA;AACJ,iBAAA,CAAA;;;ACtBD,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,MAea,kBAAkB,CAAA;AAf/B,IAAA,WAAA,GAAA;QAgBuB,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAoB,CAAC;AAC1C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC;AACtD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAwB,wBAAwB,CAAC,CAAC;QAClE,IAAK,CAAA,KAAA,GAAG,MAAM,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;QACtD,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAU,CAAC;AAC9B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEvB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAC5B,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAChC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EACnC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CACvC,CAAC;QAEiB,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,KAAK;aACnC,IAAI,CACD,SAAS,CAAC,CAAC,KAAK,KACZ,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CACrB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAC5C,GAAG,CAAC,MAAM,KAAK,CAAC,EAChB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CACxB,CACJ,EACD,kBAAkB,EAAE,CACvB;AACA,aAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAcjD,KAAA;;IAXG,IACW,UAAU,CAAC,CAAS,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACpB;AAES,IAAA,MAAM,CAAC,IAAY,EAAA;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;KAC/E;+GAxCQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,yVC7C/B,mmCAoCA,EAAA,MAAA,EAAA,CAAA,09DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHc,IAAI,EAAE,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,oIAAE,mBAAmB,EAAA,QAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAYrC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAf9B,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,6BAA6B,EAAA,OAAA,EAC9B,CAAC,IAAI,EAAE,SAAS,EAAE,mBAAmB,CAAC,EAAA,aAAA,EAGhC,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,eAAe,EAAE,MAAM;AACvB,wBAAA,6BAA6B,EAAE,iBAAiB;AAChD,wBAAA,2BAA2B,EAAE,gBAAgB;AAC7C,wBAAA,uBAAuB,EAAE,QAAQ;AACpC,qBAAA,EAAA,QAAA,EAAA,mmCAAA,EAAA,MAAA,EAAA,CAAA,09DAAA,CAAA,EAAA,CAAA;8BAiCU,UAAU,EAAA,CAAA;sBADpB,KAAK;uBAAC,MAAM,CAAA;;AAajB,SAAS,QAAQ,CAAC,KAAa,EAAA;AAC3B,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,KAAK,GAAG,eAAe,EAAE,SAAS,CAAC,CAAC;AACxE;;AEtFa,MAAA,cAAc,GAAG;IAC1B,uBAAuB;IACvB,kBAAkB;IAClB,0BAA0B;;;ACP9B;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-number.mjs","sources":["../../../projects/kit/components/input-number/input-number.options.ts","../../../projects/kit/components/input-number/input-number.directive.ts","../../../projects/kit/components/input-number/quantum.directive.ts","../../../projects/kit/components/input-number/step/input-number-step.component.ts","../../../projects/kit/components/input-number/step/input-number-step.template.html","../../../projects/kit/components/input-number/input-number.ts","../../../projects/kit/components/input-number/taiga-ui-kit-components-input-number.ts"],"sourcesContent":["import {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputNumberOptions {\n readonly max: number;\n readonly min: number;\n readonly prefix: string;\n readonly postfix: string;\n readonly step: number;\n readonly icons: Readonly<{\n decrease: string;\n increase: string;\n }>;\n readonly valueTransformer: TuiValueTransformer<number | null, any> | null;\n}\n\nexport const TUI_INPUT_NUMBER_DEFAULT_OPTIONS: TuiInputNumberOptions = {\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n prefix: '',\n postfix: '',\n step: 0,\n icons: {\n increase: '@tui.plus',\n decrease: '@tui.minus',\n },\n valueTransformer: null,\n};\n\nexport const [TUI_INPUT_NUMBER_OPTIONS, tuiInputNumberOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n);\n","import {computed, Directive, effect, inject, Input, signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoOptions, maskitoTransform} from '@maskito/core';\nimport {\n maskitoCaretGuard,\n maskitoNumberOptionsGenerator,\n type MaskitoNumberParams,\n maskitoParseNumber,\n} from '@maskito/kit';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {CHAR_HYPHEN, CHAR_MINUS, TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\nimport {TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsSafeToRound} from '@taiga-ui/cdk/utils/math';\nimport {\n TuiTextfieldDirective,\n TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {TUI_DEFAULT_NUMBER_FORMAT, TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {tuiFormatNumber} from '@taiga-ui/core/utils/format';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from './input-number.options';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputNumber]',\n providers: [\n tuiAsControl(TuiInputNumberDirective),\n tuiValueTransformerFrom(TUI_INPUT_NUMBER_OPTIONS),\n ],\n hostDirectives: [TuiWithTextfield, MaskitoDirective],\n host: {\n '[disabled]': 'disabled()',\n '[attr.inputMode]': 'inputMode()',\n '[attr.maxLength]':\n 'element.maxLength > 0 ? element.maxLength : defaultMaxLength()',\n '(blur)': 'setValue(transformer.fromControlValue(control.value))',\n '(focus)': 'onFocus()',\n },\n})\nexport class TuiInputNumberDirective extends TuiControl<number | null> {\n private readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n private readonly textfield = inject(TuiTextfieldDirective);\n private readonly isIOS = inject(TUI_IS_IOS);\n private readonly minRaw = signal(this.options.min);\n private readonly maxRaw = signal(this.options.max);\n private readonly numberFormat = toSignal(inject(TUI_NUMBER_FORMAT), {\n initialValue: TUI_DEFAULT_NUMBER_FORMAT,\n });\n\n private readonly formatted = computed(() =>\n maskitoParseNumber(this.textfield.value(), this.numberFormat()),\n );\n\n private readonly precision = computed(() =>\n Number.isNaN(this.numberFormat().precision) ? 2 : this.numberFormat().precision,\n );\n\n private readonly unfinished = computed((value = this.formatted()) =>\n value < 0 ? value > this.max() : value < this.min(),\n );\n\n protected readonly element = tuiInjectElement<HTMLInputElement>();\n protected readonly mask = tuiMaskito(\n computed(() => this.computeMask(this.maskParams)),\n );\n\n protected readonly inputMode = computed(() => {\n if (this.isIOS) {\n return this.min() < 0\n ? 'text' // iPhone does not have minus sign if inputMode equals to 'numeric' / 'decimal'\n : 'decimal';\n }\n\n /**\n * Samsung Keyboard does not minus sign for `inputmode=decimal`\n * @see https://github.com/taiga-family/taiga-ui/issues/11061#issuecomment-2939103792\n */\n return 'numeric';\n });\n\n protected readonly defaultMaxLength = computed(() => {\n const {decimalSeparator, thousandSeparator} = this.numberFormat();\n const decimalPart =\n !!this.precision() && this.textfield.value().includes(decimalSeparator);\n const precision = decimalPart ? Math.min(this.precision() + 1, 20) : 0;\n const takeThousand = thousandSeparator.repeat(5).length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand;\n });\n\n protected readonly onChangeEffect = effect(() => {\n const value = this.formatted();\n\n if (Number.isNaN(value)) {\n this.onChange(null);\n\n return;\n }\n\n if (\n this.unfinished() ||\n value < this.min() ||\n value > this.max() ||\n this.value() === value\n ) {\n return;\n }\n\n this.onChange(value);\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected maskInitialCalibrationEffect = effect(() => {\n const options = maskitoNumberOptionsGenerator({\n ...this.maskParams,\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n });\n\n this.textfield.value.update((x) => maskitoTransform(x, options));\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n public readonly min = computed(() => Math.min(this.minRaw(), this.maxRaw()));\n public readonly max = computed(() => Math.max(this.minRaw(), this.maxRaw()));\n public readonly prefix = signal(this.options.prefix);\n public readonly postfix = signal(this.options.postfix);\n\n @Input('min')\n public set minSetter(x: number | null) {\n this.minRaw.set(this.transformer.fromControlValue(x ?? this.options.min));\n }\n\n @Input('max')\n public set maxSetter(x: number | null) {\n this.maxRaw.set(this.transformer.fromControlValue(x ?? this.options.max));\n }\n\n // TODO(v5): replace with signal input\n @Input('prefix')\n public set prefixSetter(x: string) {\n this.prefix.set(x);\n }\n\n // TODO(v5): replace with signal input\n @Input('postfix')\n public set postfixSetter(x: string) {\n this.postfix.set(x);\n }\n\n public override writeValue(value: number | null): void {\n super.writeValue(value);\n this.setValue(this.value());\n }\n\n public setValue(value: number | null): void {\n this.textfield.value.set(this.formatNumber(value));\n }\n\n protected onFocus(): void {\n if (Number.isNaN(this.formatted()) && !this.readOnly()) {\n this.textfield.value.set(this.prefix() + this.postfix());\n }\n }\n\n private get maskParams(): MaskitoNumberParams {\n const {decimalMode, ...numberFormat} = this.numberFormat();\n const maximumFractionDigits = this.precision();\n\n return {\n ...numberFormat,\n maximumFractionDigits,\n min: this.min(),\n max: this.max(),\n prefix: this.prefix(),\n postfix: this.postfix(),\n minimumFractionDigits: decimalMode === 'always' ? maximumFractionDigits : 0,\n };\n }\n\n private formatNumber(value: number | null): string {\n if (value === null || Number.isNaN(value)) {\n return '';\n }\n\n return (\n (this.prefix() !== CHAR_MINUS ? this.prefix() : '') +\n tuiFormatNumber(value, {\n ...this.numberFormat(),\n /**\n * Number can satisfy interval [Number.MIN_SAFE_INTEGER; Number.MAX_SAFE_INTEGER]\n * but its rounding can violate it.\n * Before BigInt support there is no perfect solution – only trade off.\n * No rounding is better than lose precision and incorrect mutation of already valid value.\n */\n precision: tuiIsSafeToRound(value, this.precision())\n ? this.precision()\n : Infinity,\n }).replace(CHAR_HYPHEN, CHAR_MINUS) +\n this.postfix()\n );\n }\n\n private computeMask(params: MaskitoNumberParams): MaskitoOptions {\n const {prefix = '', postfix = ''} = params;\n const {plugins, ...options} = maskitoNumberOptionsGenerator(params);\n\n return {\n ...options,\n plugins: [\n ...plugins,\n maskitoCaretGuard((value) => [\n prefix.length,\n value.length - postfix.length,\n ]),\n ],\n };\n }\n}\n","import {Directive, inject, Input} from '@angular/core';\nimport {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiIsSafeToRound, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiGetFractionPartPadded} from '@taiga-ui/core/utils/format';\nimport {TUI_FLOATING_PRECISION} from '@taiga-ui/kit/components/slider';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from './input-number.options';\n\n@Directive({\n standalone: true,\n selector: '[tuiInputNumber][quantum], [tuiInputSlider][quantum]',\n providers: [tuiProvide(TuiValueTransformer, TuiQuantumValueTransformer)],\n})\nexport class TuiQuantumValueTransformer extends TuiValueTransformer<\n number | null,\n number | null\n> {\n private readonly parent = inject(TUI_INPUT_NUMBER_OPTIONS).valueTransformer;\n\n @Input()\n public quantum = 1;\n\n public override fromControlValue(controlValue: number | null): number | null {\n return this.parent?.fromControlValue(controlValue) ?? controlValue;\n }\n\n public toControlValue(internalValue: number | null): number | null {\n const value = this.parent?.toControlValue(internalValue) ?? internalValue;\n\n return value != null &&\n tuiIsSafeToRound(value, tuiGetFractionPartPadded(this.quantum).length)\n ? tuiRound(\n Math.round(value / this.quantum) * this.quantum,\n TUI_FLOATING_PRECISION,\n )\n : value;\n }\n}\n\n@Directive({\n standalone: true,\n hostDirectives: [\n {\n directive: TuiQuantumValueTransformer,\n inputs: ['quantum'],\n },\n ],\n})\nexport class TuiWithQuantumValueTransformer {}\n","import {DOCUMENT, NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n Input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {expand, fromEvent, map, merge, Subject, switchMap, takeUntil, timer} from 'rxjs';\n\nimport {TuiInputNumberDirective} from '../input-number.directive';\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from '../input-number.options';\n\nconst INITIAL_DELAY = 300;\nconst DELAY_DECREMENT = 15;\nconst MIN_DELAY = 100;\n\n@Component({\n standalone: true,\n selector: 'input[tuiInputNumber][step]',\n imports: [NgIf, TuiButton, TuiTextfieldContent],\n templateUrl: './input-number-step.template.html',\n styleUrls: ['./input-number-step.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n ngSkipHydration: 'true',\n '(keydown.arrowDown.prevent)': 'onStep(-step())',\n '(keydown.arrowUp.prevent)': 'onStep(step())',\n '[class._with-buttons]': 'step()',\n },\n})\nexport class TuiInputNumberStep {\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;\n protected readonly options = inject<TuiInputNumberOptions>(TUI_INPUT_NUMBER_OPTIONS);\n protected readonly input = inject(TuiInputNumberDirective, {self: true});\n protected readonly step = signal(this.options.step);\n protected readonly value = computed(() => this.input.value() ?? NaN);\n protected readonly step$ = new Subject<number>();\n protected readonly doc = inject(DOCUMENT);\n\n protected readonly stop$ = merge(\n fromEvent(this.doc, 'pointerup'),\n fromEvent(this.doc, 'pointerleave'),\n fromEvent(this.doc, 'pointercancel'),\n );\n\n protected readonly stepping = this.step$\n .pipe(\n switchMap((value) =>\n timer(INITIAL_DELAY).pipe(\n expand((_, index) => timer(getDelay(index))),\n map(() => value),\n takeUntil(this.stop$),\n ),\n ),\n takeUntilDestroyed(),\n )\n .subscribe((value) => this.onStep(value));\n\n // TODO(v5): replace with signal input\n @Input('step')\n public set stepSetter(x: number) {\n this.step.set(x);\n }\n\n protected onStep(step: number): void {\n const current = this.input.value() ?? 0;\n\n this.input.setValue(tuiClamp(current + step, this.input.min(), this.input.max()));\n this.el.setSelectionRange(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n }\n}\n\nfunction getDelay(index: number): number {\n return Math.max(INITIAL_DELAY - index * DELAY_DECREMENT, MIN_DELAY);\n}\n","<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || value() >= input.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (pointerdown.prevent)=\"step$.next(step())\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || value() <= input.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (pointerdown.prevent)=\"step$.next(-step())\"\n >\n -\n </button>\n </section>\n</ng-container>\n","import {TuiInputNumberDirective} from './input-number.directive';\nimport {TuiQuantumValueTransformer} from './quantum.directive';\nimport {TuiInputNumberStep} from './step/input-number-step.component';\n\nexport const TuiInputNumber = [\n TuiInputNumberDirective,\n TuiInputNumberStep,\n TuiQuantumValueTransformer,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/kit",
3
- "version": "4.49.0-canary.8c4d1de",
3
+ "version": "4.49.0-canary.b853f27",
4
4
  "description": "Taiga UI Angular main components kit",
5
5
  "keywords": [
6
6
  "angular",
@@ -131,18 +131,18 @@
131
131
  "esm": "./esm2022/components/checkbox/taiga-ui-kit-components-checkbox.mjs",
132
132
  "default": "./fesm2022/taiga-ui-kit-components-checkbox.mjs"
133
133
  },
134
- "./components/chip": {
135
- "types": "./components/chip/index.d.ts",
136
- "esm2022": "./esm2022/components/chip/taiga-ui-kit-components-chip.mjs",
137
- "esm": "./esm2022/components/chip/taiga-ui-kit-components-chip.mjs",
138
- "default": "./fesm2022/taiga-ui-kit-components-chip.mjs"
139
- },
140
134
  "./components/combo-box": {
141
135
  "types": "./components/combo-box/index.d.ts",
142
136
  "esm2022": "./esm2022/components/combo-box/taiga-ui-kit-components-combo-box.mjs",
143
137
  "esm": "./esm2022/components/combo-box/taiga-ui-kit-components-combo-box.mjs",
144
138
  "default": "./fesm2022/taiga-ui-kit-components-combo-box.mjs"
145
139
  },
140
+ "./components/chip": {
141
+ "types": "./components/chip/index.d.ts",
142
+ "esm2022": "./esm2022/components/chip/taiga-ui-kit-components-chip.mjs",
143
+ "esm": "./esm2022/components/chip/taiga-ui-kit-components-chip.mjs",
144
+ "default": "./fesm2022/taiga-ui-kit-components-chip.mjs"
145
+ },
146
146
  "./components/comment": {
147
147
  "types": "./components/comment/index.d.ts",
148
148
  "esm2022": "./esm2022/components/comment/taiga-ui-kit-components-comment.mjs",