@taiga-ui/cdk 2.30.0 → 2.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/abstract/control.d.ts +7 -2
  2. package/abstract/taiga-ui-cdk-abstract.metadata.json +1 -1
  3. package/bundles/taiga-ui-cdk-abstract.umd.js +31 -8
  4. package/bundles/taiga-ui-cdk-abstract.umd.js.map +1 -1
  5. package/bundles/taiga-ui-cdk-abstract.umd.min.js +2 -2
  6. package/bundles/taiga-ui-cdk-abstract.umd.min.js.map +1 -1
  7. package/bundles/taiga-ui-cdk-observables.umd.js +1 -0
  8. package/bundles/taiga-ui-cdk-observables.umd.js.map +1 -1
  9. package/bundles/taiga-ui-cdk-observables.umd.min.js.map +1 -1
  10. package/esm2015/abstract/control.js +27 -9
  11. package/esm2015/interfaces/control-value-transformer.js +1 -0
  12. package/esm2015/interfaces/index.js +1 -1
  13. package/esm2015/observables/replay-control-value-changes.js +2 -1
  14. package/esm5/abstract/control.js +32 -9
  15. package/esm5/interfaces/control-value-transformer.js +1 -0
  16. package/esm5/interfaces/index.js +1 -1
  17. package/esm5/observables/replay-control-value-changes.js +2 -1
  18. package/fesm2015/taiga-ui-cdk-abstract.js +26 -8
  19. package/fesm2015/taiga-ui-cdk-abstract.js.map +1 -1
  20. package/fesm2015/taiga-ui-cdk-observables.js +1 -0
  21. package/fesm2015/taiga-ui-cdk-observables.js.map +1 -1
  22. package/fesm5/taiga-ui-cdk-abstract.js +31 -8
  23. package/fesm5/taiga-ui-cdk-abstract.js.map +1 -1
  24. package/fesm5/taiga-ui-cdk-observables.js +1 -0
  25. package/fesm5/taiga-ui-cdk-observables.js.map +1 -1
  26. package/interfaces/control-value-transformer.d.ts +4 -0
  27. package/interfaces/index.d.ts +1 -0
  28. package/interfaces/taiga-ui-cdk-interfaces.metadata.json +1 -1
  29. package/observables/replay-control-value-changes.d.ts +1 -0
  30. package/observables/taiga-ui-cdk-observables.metadata.json +1 -1
  31. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-abstract.js","sources":["ng://@taiga-ui/cdk/abstract/interactive.ts","ng://@taiga-ui/cdk/abstract/control.ts","ng://@taiga-ui/cdk/abstract/controller.ts","ng://@taiga-ui/cdk/abstract/dialog.service.ts","ng://@taiga-ui/cdk/abstract/dialog.directive.ts","ng://@taiga-ui/cdk/abstract/multiple-control.ts","ng://@taiga-ui/cdk/abstract/nullable-control.ts","ng://@taiga-ui/cdk/abstract/theme-switcher.ts","ng://@taiga-ui/cdk/abstract/taiga-ui-cdk-abstract.ts"],"sourcesContent":["import {Directive, EventEmitter, HostBinding, Input, Output} from '@angular/core';\nimport {tuiDefaultProp} from '@taiga-ui/cdk/decorators';\n\nconst TUI = 'tui_interactive_';\n\n/**\n * The most basic class for interactive components\n */\n@Directive()\nexport abstract class AbstractTuiInteractive {\n private static autoId = 0;\n\n abstract disabled: boolean;\n\n abstract focused: boolean;\n\n private readonly autoIdString: string;\n\n @Input()\n @tuiDefaultProp()\n pseudoHovered: boolean | null = null;\n\n @Input()\n @tuiDefaultProp()\n pseudoPressed: boolean | null = null;\n\n @Input()\n @tuiDefaultProp()\n pseudoFocused: boolean | null = null;\n\n /**\n * Determines if component is focusable with keyboard.\n */\n @Input()\n @tuiDefaultProp()\n focusable = true;\n\n @Input()\n @tuiDefaultProp()\n nativeId = '';\n\n /**\n * Emits 'true' on focus and 'false' on blur.\n */\n @Output()\n readonly focusedChange = new EventEmitter<boolean>();\n\n @Output()\n readonly pressedChange = new EventEmitter<boolean>();\n\n @Output()\n readonly hoveredChange = new EventEmitter<boolean>();\n\n @Output()\n readonly focusVisibleChange = new EventEmitter<boolean>();\n\n hovered = false;\n\n pressed = false;\n\n focusVisible = false;\n\n constructor() {\n this.autoIdString = `${TUI}${AbstractTuiInteractive.autoId++}${Date.now()}`;\n }\n\n @HostBinding('class._disabled')\n get computedDisabled(): boolean {\n return this.disabled;\n }\n\n @HostBinding('class._hovered')\n get computedHovered(): boolean {\n return !this.computedDisabled && (this.pseudoHovered ?? this.hovered);\n }\n\n @HostBinding('class._pressed')\n get computedPressed(): boolean {\n return !this.computedDisabled && (this.pseudoPressed ?? this.pressed);\n }\n\n get computedFocusable(): boolean {\n return !this.computedDisabled && (this.focusable || this.focused);\n }\n\n @HostBinding('class._focused')\n get computedFocused(): boolean {\n return !this.computedDisabled && (this.pseudoFocused ?? this.focused);\n }\n\n @HostBinding('class._focus-visible')\n get computedFocusVisible(): boolean {\n return !this.computedDisabled && (this.pseudoFocused ?? this.focusVisible);\n }\n\n get id(): string {\n return this.nativeId ? this.nativeId : this.autoIdString;\n }\n\n protected updateHovered(hovered: boolean) {\n if (this.hovered === hovered) {\n return;\n }\n\n this.hovered = hovered;\n this.hoveredChange.emit(hovered);\n }\n\n protected updatePressed(pressed: boolean) {\n if (this.pressed === pressed) {\n return;\n }\n\n this.pressed = pressed;\n this.pressedChange.emit(pressed);\n }\n\n protected updateFocused(focused: boolean) {\n this.focusedChange.emit(focused);\n }\n\n protected updateFocusVisible(focusVisible: boolean) {\n if (this.focusVisible === focusVisible) {\n return;\n }\n\n this.focusVisible = focusVisible;\n this.focusVisibleChange.emit(focusVisible);\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {AbstractControl, ControlValueAccessor, NgControl, NgModel} from '@angular/forms';\nimport {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {tuiDefaultProp} from '@taiga-ui/cdk/decorators';\nimport {merge, Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {AbstractTuiInteractive} from './interactive';\n\n/**\n * Basic ControlValueAccessor class to build form components upon\n */\n@Directive()\nexport abstract class AbstractTuiControl<T>\n extends AbstractTuiInteractive\n implements OnDestroy, OnInit, ControlValueAccessor\n{\n private previousInternalValue?: T | null;\n\n private onTouched = EMPTY_FUNCTION;\n\n private onChange = EMPTY_FUNCTION;\n\n protected readonly fallbackValue = this.getFallbackValue();\n\n protected readonly destroy$ = new Subject<void>();\n\n @Input()\n @HostBinding('class._readonly')\n @tuiDefaultProp()\n readOnly = false;\n\n @Input()\n @tuiDefaultProp()\n pseudoInvalid: boolean | null = null;\n\n protected constructor(\n private readonly ngControl: NgControl | null,\n protected readonly changeDetectorRef: ChangeDetectorRef,\n ) {\n super();\n\n if (this.ngControl === null) {\n tuiAssert.assert(\n false,\n `NgControl not injected in ${this.constructor.name}!\\n`,\n 'Use [(ngModel)] or [formControl] or formControlName for correct work.',\n );\n } else {\n this.ngControl.valueAccessor = this;\n }\n }\n\n protected abstract getFallbackValue(): T;\n\n @HostBinding('class._invalid')\n get computedInvalid(): boolean {\n return (\n !this.readOnly &&\n !this.disabled &&\n (this.pseudoInvalid !== null\n ? this.pseudoInvalid\n : this.touched && this.invalid)\n );\n }\n\n get value(): T {\n return this.previousInternalValue ?? this.fallbackValue;\n }\n\n get safeCurrentValue(): T {\n return this.rawValue ?? this.fallbackValue;\n }\n\n get invalid(): boolean {\n return this.safeNgControlData<boolean>(({invalid}) => invalid, false);\n }\n\n get valid(): boolean {\n return this.safeNgControlData<boolean>(({valid}) => valid, false);\n }\n\n get touched(): boolean {\n return this.safeNgControlData<boolean>(({touched}) => touched, false);\n }\n\n get disabled(): boolean {\n return this.safeNgControlData<boolean>(({disabled}) => disabled, false);\n }\n\n get control(): AbstractControl | null {\n return this.safeNgControlData<AbstractControl | null>(\n ({control}) => control,\n null,\n );\n }\n\n get computedName(): string | number | null {\n return this.controlName;\n }\n\n protected get controlName(): string | number | null {\n return this.ngControl && this.ngControl.name;\n }\n\n private get rawValue(): T | undefined {\n const {ngControl} = this;\n\n if (ngControl === null) {\n return undefined;\n }\n\n return ngControl instanceof NgModel && this.previousInternalValue === undefined\n ? ngControl.viewModel\n : ngControl.value;\n }\n\n ngOnInit() {\n if (\n !this.ngControl ||\n !this.ngControl.valueChanges ||\n !this.ngControl.statusChanges\n ) {\n return;\n }\n\n merge(this.ngControl.valueChanges, this.ngControl.statusChanges)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.refreshLocalValue(this.safeCurrentValue);\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n checkControlUpdate() {\n this.changeDetectorRef.markForCheck();\n }\n\n registerOnChange(onChange: (value: T) => void) {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: () => void) {\n this.onTouched = onTouched;\n }\n\n setDisabledState() {\n this.checkControlUpdate();\n }\n\n writeValue(value: T | null) {\n this.refreshLocalValue(\n this.ngControl instanceof NgModel && this.previousInternalValue === undefined\n ? this.ngControl.model\n : value,\n );\n }\n\n protected updateFocused(focused: boolean) {\n if (!focused) {\n this.controlMarkAsTouched();\n }\n\n super.updateFocused(focused);\n }\n\n protected updateValue(value: T) {\n if (this.disabled || this.valueIdenticalComparator(this.value, value)) {\n return;\n }\n\n this.previousInternalValue = value;\n this.controlSetValue(value);\n }\n\n protected valueIdenticalComparator(oldValue: T, newValue: T): boolean {\n return oldValue === newValue;\n }\n\n private safeNgControlData<T>(\n extractor: (ngControl: NgControl) => T | null | undefined,\n defaultFieldValue: T,\n ): T {\n return (this.ngControl && extractor(this.ngControl)) ?? defaultFieldValue;\n }\n\n private controlMarkAsTouched() {\n this.onTouched();\n this.checkControlUpdate();\n }\n\n private controlSetValue(value: T) {\n this.onChange(value);\n this.checkControlUpdate();\n }\n\n private refreshLocalValue(value: T | null) {\n this.previousInternalValue = value;\n this.checkControlUpdate();\n }\n}\n","import {OnChanges} from '@angular/core';\nimport {Subject} from 'rxjs';\n\nexport abstract class TuiController implements OnChanges {\n readonly change$ = new Subject<void>();\n\n ngOnChanges() {\n this.change$.next();\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {TuiBaseDialogContext} from '@taiga-ui/cdk/interfaces';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport {TuiDialog} from '@taiga-ui/cdk/types';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable()\nexport abstract class AbstractTuiDialogService<T extends {}> extends Observable<\n readonly TuiDialog<T, any>[]\n> {\n protected abstract readonly component: PolymorpheusContent<TuiDialog<T, any>>;\n\n protected abstract readonly defaultOptions: T;\n\n protected readonly dialogs$ = new BehaviorSubject<readonly TuiDialog<T, any>[]>([]);\n\n protected constructor(\n @Inject(TuiIdService) private readonly idService: TuiIdService,\n ) {\n super(observer => this.dialogs$.subscribe(observer));\n }\n\n open<G>(\n content: PolymorpheusContent<TuiBaseDialogContext<G> & T>,\n options: Partial<T> = {},\n ): Observable<G> {\n return new Observable(observer => {\n const completeWith = (result: G) => {\n observer.next(result);\n observer.complete();\n };\n const dialog = {\n ...this.defaultOptions,\n ...options,\n content,\n completeWith,\n $implicit: observer,\n component: this.component,\n createdAt: Date.now(),\n id: this.idService.generate(),\n };\n\n this.dialogs$.next([...this.dialogs$.value, dialog]);\n\n return () => {\n this.dialogs$.next(this.dialogs$.value.filter(item => item !== dialog));\n };\n });\n }\n}\n","import {ChangeDetectorRef, Directive, Inject, TemplateRef} from '@angular/core';\nimport {TuiDialog} from '@taiga-ui/cdk/types';\nimport {PolymorpheusTemplate} from '@tinkoff/ng-polymorpheus';\nimport {EMPTY, Subject} from 'rxjs';\nimport {endWith, ignoreElements, switchMap} from 'rxjs/operators';\n\nimport {AbstractTuiDialogService} from './dialog.service';\n\n@Directive()\nexport abstract class AbstractTuiDialogDirective<T> extends PolymorpheusTemplate<\n TuiDialog<T, void>\n> {\n private readonly open$ = new Subject<boolean>();\n\n options: Partial<T> = {};\n\n set open(open: boolean) {\n this.open$.next(open);\n }\n\n openChange = this.open$.pipe(\n switchMap(open =>\n open\n ? this.service\n .open(this, this.options)\n .pipe(ignoreElements(), endWith(false))\n : EMPTY,\n ),\n );\n\n constructor(\n @Inject(TemplateRef)\n templateRef: TemplateRef<TuiDialog<T, void>>,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(AbstractTuiDialogService)\n private readonly service: AbstractTuiDialogService<T>,\n ) {\n super(templateRef, changeDetectorRef);\n }\n}\n","import {Directive} from '@angular/core';\n\nimport {AbstractTuiControl} from './control';\n\n@Directive()\nexport abstract class AbstractTuiMultipleControl<T> extends AbstractTuiControl<\n ReadonlyArray<T>\n> {\n clear() {\n this.updateValue([]);\n }\n\n protected getFallbackValue(): ReadonlyArray<T> {\n return [];\n }\n}\n","import {Directive} from '@angular/core';\n\nimport {AbstractTuiControl} from './control';\n\n@Directive()\nexport abstract class AbstractTuiNullableControl<T> extends AbstractTuiControl<T | null> {\n protected getFallbackValue(): T | null {\n return null;\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {Directive, Inject, OnDestroy} from '@angular/core';\n\n/**\n * Use this abstract class to create your own toggleable themes.\n * A component extending this class must have CSS variables definitions\n * and have ViewEncapsulation set to NONE. A boolean input allows to\n * switch theme on or off.\n * @dynamic\n */\n@Directive()\nexport abstract class AbstractTuiThemeSwitcher implements OnDestroy {\n static style: HTMLStyleElement | null = null;\n\n constructor(@Inject(DOCUMENT) private readonly documentRef: Document) {\n if (this.style !== null) {\n this.addTheme();\n\n return;\n }\n\n const styles = this.documentRef.head.querySelectorAll('style');\n\n (<typeof AbstractTuiThemeSwitcher>this.constructor).style =\n styles[styles.length - 1];\n }\n\n get style(): HTMLStyleElement | null {\n return (<typeof AbstractTuiThemeSwitcher>this.constructor).style;\n }\n\n ngOnDestroy() {\n this.removeTheme();\n }\n\n private addTheme() {\n if (this.style) {\n this.documentRef.head.appendChild(this.style);\n }\n }\n\n private removeTheme() {\n if (this.style && this.documentRef.head.contains(this.style)) {\n this.documentRef.head.removeChild(this.style);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-abstract.js","sources":["ng://@taiga-ui/cdk/abstract/interactive.ts","ng://@taiga-ui/cdk/abstract/control.ts","ng://@taiga-ui/cdk/abstract/controller.ts","ng://@taiga-ui/cdk/abstract/dialog.service.ts","ng://@taiga-ui/cdk/abstract/dialog.directive.ts","ng://@taiga-ui/cdk/abstract/multiple-control.ts","ng://@taiga-ui/cdk/abstract/nullable-control.ts","ng://@taiga-ui/cdk/abstract/theme-switcher.ts","ng://@taiga-ui/cdk/abstract/taiga-ui-cdk-abstract.ts"],"sourcesContent":["import {Directive, EventEmitter, HostBinding, Input, Output} from '@angular/core';\nimport {tuiDefaultProp} from '@taiga-ui/cdk/decorators';\n\nconst TUI = 'tui_interactive_';\n\n/**\n * The most basic class for interactive components\n */\n@Directive()\nexport abstract class AbstractTuiInteractive {\n private static autoId = 0;\n\n abstract disabled: boolean;\n\n abstract focused: boolean;\n\n private readonly autoIdString: string;\n\n @Input()\n @tuiDefaultProp()\n pseudoHovered: boolean | null = null;\n\n @Input()\n @tuiDefaultProp()\n pseudoPressed: boolean | null = null;\n\n @Input()\n @tuiDefaultProp()\n pseudoFocused: boolean | null = null;\n\n /**\n * Determines if component is focusable with keyboard.\n */\n @Input()\n @tuiDefaultProp()\n focusable = true;\n\n @Input()\n @tuiDefaultProp()\n nativeId = '';\n\n /**\n * Emits 'true' on focus and 'false' on blur.\n */\n @Output()\n readonly focusedChange = new EventEmitter<boolean>();\n\n @Output()\n readonly pressedChange = new EventEmitter<boolean>();\n\n @Output()\n readonly hoveredChange = new EventEmitter<boolean>();\n\n @Output()\n readonly focusVisibleChange = new EventEmitter<boolean>();\n\n hovered = false;\n\n pressed = false;\n\n focusVisible = false;\n\n constructor() {\n this.autoIdString = `${TUI}${AbstractTuiInteractive.autoId++}${Date.now()}`;\n }\n\n @HostBinding('class._disabled')\n get computedDisabled(): boolean {\n return this.disabled;\n }\n\n @HostBinding('class._hovered')\n get computedHovered(): boolean {\n return !this.computedDisabled && (this.pseudoHovered ?? this.hovered);\n }\n\n @HostBinding('class._pressed')\n get computedPressed(): boolean {\n return !this.computedDisabled && (this.pseudoPressed ?? this.pressed);\n }\n\n get computedFocusable(): boolean {\n return !this.computedDisabled && (this.focusable || this.focused);\n }\n\n @HostBinding('class._focused')\n get computedFocused(): boolean {\n return !this.computedDisabled && (this.pseudoFocused ?? this.focused);\n }\n\n @HostBinding('class._focus-visible')\n get computedFocusVisible(): boolean {\n return !this.computedDisabled && (this.pseudoFocused ?? this.focusVisible);\n }\n\n get id(): string {\n return this.nativeId ? this.nativeId : this.autoIdString;\n }\n\n protected updateHovered(hovered: boolean) {\n if (this.hovered === hovered) {\n return;\n }\n\n this.hovered = hovered;\n this.hoveredChange.emit(hovered);\n }\n\n protected updatePressed(pressed: boolean) {\n if (this.pressed === pressed) {\n return;\n }\n\n this.pressed = pressed;\n this.pressedChange.emit(pressed);\n }\n\n protected updateFocused(focused: boolean) {\n this.focusedChange.emit(focused);\n }\n\n protected updateFocusVisible(focusVisible: boolean) {\n if (this.focusVisible === focusVisible) {\n return;\n }\n\n this.focusVisible = focusVisible;\n this.focusVisibleChange.emit(focusVisible);\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {AbstractControl, ControlValueAccessor, NgControl, NgModel} from '@angular/forms';\nimport {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {tuiDefaultProp} from '@taiga-ui/cdk/decorators';\nimport {TuiControlValueTransformer} from '@taiga-ui/cdk/interfaces';\nimport {merge, Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {AbstractTuiInteractive} from './interactive';\n\n/**\n * Basic ControlValueAccessor class to build form components upon\n */\n@Directive()\nexport abstract class AbstractTuiControl<T>\n extends AbstractTuiInteractive\n implements OnDestroy, OnInit, ControlValueAccessor\n{\n private previousInternalValue?: T | null;\n\n private onTouched = EMPTY_FUNCTION;\n\n private onChange = EMPTY_FUNCTION;\n\n protected readonly fallbackValue = this.getFallbackValue();\n\n protected readonly destroy$ = new Subject<void>();\n\n @Input()\n @HostBinding('class._readonly')\n @tuiDefaultProp()\n readOnly = false;\n\n @Input()\n @tuiDefaultProp()\n pseudoInvalid: boolean | null = null;\n\n protected constructor(\n private readonly ngControl: NgControl | null,\n protected readonly changeDetectorRef: ChangeDetectorRef,\n protected readonly valueTransformer?: TuiControlValueTransformer<T> | null,\n ) {\n super();\n\n if (this.ngControl === null) {\n tuiAssert.assert(\n false,\n `NgControl not injected in ${this.constructor.name}!\\n`,\n 'Use [(ngModel)] or [formControl] or formControlName for correct work.',\n );\n } else {\n this.ngControl.valueAccessor = this;\n }\n }\n\n protected abstract getFallbackValue(): T;\n\n @HostBinding('class._invalid')\n get computedInvalid(): boolean {\n return (\n this.interactive &&\n (this.pseudoInvalid !== null\n ? this.pseudoInvalid\n : this.touched && this.invalid)\n );\n }\n\n get value(): T {\n return this.previousInternalValue ?? this.fallbackValue;\n }\n\n get safeCurrentValue(): T {\n return this.rawValue ?? this.fallbackValue;\n }\n\n get invalid(): boolean {\n return this.safeNgControlData<boolean>(({invalid}) => invalid, false);\n }\n\n get valid(): boolean {\n return this.safeNgControlData<boolean>(({valid}) => valid, false);\n }\n\n get touched(): boolean {\n return this.safeNgControlData<boolean>(({touched}) => touched, false);\n }\n\n get disabled(): boolean {\n return this.safeNgControlData<boolean>(({disabled}) => disabled, false);\n }\n\n get interactive(): boolean {\n return !this.readOnly && !this.computedDisabled;\n }\n\n get control(): AbstractControl | null {\n return this.safeNgControlData<AbstractControl | null>(\n ({control}) => control,\n null,\n );\n }\n\n get computedName(): string | number | null {\n return this.controlName;\n }\n\n protected get controlName(): string | number | null {\n return this.ngControl && this.ngControl.name;\n }\n\n private get rawValue(): T | undefined {\n const {ngControl} = this;\n\n if (ngControl === null) {\n return undefined;\n }\n\n const controlValue =\n ngControl instanceof NgModel && this.previousInternalValue === undefined\n ? ngControl.viewModel\n : ngControl.value;\n\n return this.fromControlValue(controlValue);\n }\n\n ngOnInit() {\n if (\n !this.ngControl ||\n !this.ngControl.valueChanges ||\n !this.ngControl.statusChanges\n ) {\n return;\n }\n\n merge(this.ngControl.valueChanges, this.ngControl.statusChanges)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.refreshLocalValue(this.safeCurrentValue);\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n checkControlUpdate() {\n this.changeDetectorRef.markForCheck();\n }\n\n registerOnChange(onChange: (value: T | unknown) => void) {\n this.onChange = (componentValue: T) => {\n onChange(this.toControlValue(componentValue));\n };\n }\n\n registerOnTouched(onTouched: () => void) {\n this.onTouched = onTouched;\n }\n\n setDisabledState() {\n this.checkControlUpdate();\n }\n\n writeValue(value: T | null) {\n const controlValue =\n this.ngControl instanceof NgModel && this.previousInternalValue === undefined\n ? this.ngControl.model\n : value;\n\n this.refreshLocalValue(this.fromControlValue(controlValue));\n }\n\n protected updateFocused(focused: boolean) {\n if (!focused) {\n this.controlMarkAsTouched();\n }\n\n super.updateFocused(focused);\n }\n\n protected updateValue(value: T) {\n if (this.disabled || this.valueIdenticalComparator(this.value, value)) {\n return;\n }\n\n this.previousInternalValue = value;\n this.controlSetValue(value);\n }\n\n protected valueIdenticalComparator(oldValue: T, newValue: T): boolean {\n return oldValue === newValue;\n }\n\n private safeNgControlData<T>(\n extractor: (ngControl: NgControl) => T | null | undefined,\n defaultFieldValue: T,\n ): T {\n return (this.ngControl && extractor(this.ngControl)) ?? defaultFieldValue;\n }\n\n private controlMarkAsTouched() {\n this.onTouched();\n this.checkControlUpdate();\n }\n\n private controlSetValue(value: T) {\n this.onChange(value);\n this.checkControlUpdate();\n }\n\n private refreshLocalValue(value: T | null) {\n this.previousInternalValue = value;\n this.checkControlUpdate();\n }\n\n private fromControlValue(controlValue: unknown): T {\n return this.valueTransformer\n ? this.valueTransformer.fromControlValue(controlValue)\n : (controlValue as T);\n }\n\n private toControlValue(componentValue: T): unknown {\n return this.valueTransformer\n ? this.valueTransformer.toControlValue(componentValue)\n : componentValue;\n }\n}\n","import {OnChanges} from '@angular/core';\nimport {Subject} from 'rxjs';\n\nexport abstract class TuiController implements OnChanges {\n readonly change$ = new Subject<void>();\n\n ngOnChanges() {\n this.change$.next();\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {TuiBaseDialogContext} from '@taiga-ui/cdk/interfaces';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport {TuiDialog} from '@taiga-ui/cdk/types';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable()\nexport abstract class AbstractTuiDialogService<T extends {}> extends Observable<\n readonly TuiDialog<T, any>[]\n> {\n protected abstract readonly component: PolymorpheusContent<TuiDialog<T, any>>;\n\n protected abstract readonly defaultOptions: T;\n\n protected readonly dialogs$ = new BehaviorSubject<readonly TuiDialog<T, any>[]>([]);\n\n protected constructor(\n @Inject(TuiIdService) private readonly idService: TuiIdService,\n ) {\n super(observer => this.dialogs$.subscribe(observer));\n }\n\n open<G>(\n content: PolymorpheusContent<TuiBaseDialogContext<G> & T>,\n options: Partial<T> = {},\n ): Observable<G> {\n return new Observable(observer => {\n const completeWith = (result: G) => {\n observer.next(result);\n observer.complete();\n };\n const dialog = {\n ...this.defaultOptions,\n ...options,\n content,\n completeWith,\n $implicit: observer,\n component: this.component,\n createdAt: Date.now(),\n id: this.idService.generate(),\n };\n\n this.dialogs$.next([...this.dialogs$.value, dialog]);\n\n return () => {\n this.dialogs$.next(this.dialogs$.value.filter(item => item !== dialog));\n };\n });\n }\n}\n","import {ChangeDetectorRef, Directive, Inject, TemplateRef} from '@angular/core';\nimport {TuiDialog} from '@taiga-ui/cdk/types';\nimport {PolymorpheusTemplate} from '@tinkoff/ng-polymorpheus';\nimport {EMPTY, Subject} from 'rxjs';\nimport {endWith, ignoreElements, switchMap} from 'rxjs/operators';\n\nimport {AbstractTuiDialogService} from './dialog.service';\n\n@Directive()\nexport abstract class AbstractTuiDialogDirective<T> extends PolymorpheusTemplate<\n TuiDialog<T, void>\n> {\n private readonly open$ = new Subject<boolean>();\n\n options: Partial<T> = {};\n\n set open(open: boolean) {\n this.open$.next(open);\n }\n\n openChange = this.open$.pipe(\n switchMap(open =>\n open\n ? this.service\n .open(this, this.options)\n .pipe(ignoreElements(), endWith(false))\n : EMPTY,\n ),\n );\n\n constructor(\n @Inject(TemplateRef)\n templateRef: TemplateRef<TuiDialog<T, void>>,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(AbstractTuiDialogService)\n private readonly service: AbstractTuiDialogService<T>,\n ) {\n super(templateRef, changeDetectorRef);\n }\n}\n","import {Directive} from '@angular/core';\n\nimport {AbstractTuiControl} from './control';\n\n@Directive()\nexport abstract class AbstractTuiMultipleControl<T> extends AbstractTuiControl<\n ReadonlyArray<T>\n> {\n clear() {\n this.updateValue([]);\n }\n\n protected getFallbackValue(): ReadonlyArray<T> {\n return [];\n }\n}\n","import {Directive} from '@angular/core';\n\nimport {AbstractTuiControl} from './control';\n\n@Directive()\nexport abstract class AbstractTuiNullableControl<T> extends AbstractTuiControl<T | null> {\n protected getFallbackValue(): T | null {\n return null;\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {Directive, Inject, OnDestroy} from '@angular/core';\n\n/**\n * Use this abstract class to create your own toggleable themes.\n * A component extending this class must have CSS variables definitions\n * and have ViewEncapsulation set to NONE. A boolean input allows to\n * switch theme on or off.\n * @dynamic\n */\n@Directive()\nexport abstract class AbstractTuiThemeSwitcher implements OnDestroy {\n static style: HTMLStyleElement | null = null;\n\n constructor(@Inject(DOCUMENT) private readonly documentRef: Document) {\n if (this.style !== null) {\n this.addTheme();\n\n return;\n }\n\n const styles = this.documentRef.head.querySelectorAll('style');\n\n (<typeof AbstractTuiThemeSwitcher>this.constructor).style =\n styles[styles.length - 1];\n }\n\n get style(): HTMLStyleElement | null {\n return (<typeof AbstractTuiThemeSwitcher>this.constructor).style;\n }\n\n ngOnDestroy() {\n this.removeTheme();\n }\n\n private addTheme() {\n if (this.style) {\n this.documentRef.head.appendChild(this.style);\n }\n }\n\n private removeTheme() {\n if (this.style && this.documentRef.head.contains(this.style)) {\n this.documentRef.head.removeChild(this.style);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -106,6 +106,7 @@ function preventDefault() {
106
106
 
107
107
  /**
108
108
  * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)
109
+ * TODO: rename function in 3.0. The name should be shorter.
109
110
  */
110
111
  function tuiReplayedValueChangesFrom(control) {
111
112
  return new Observable(function (subscriber) {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-observables.js","sources":["ng://@taiga-ui/cdk/observables/typed-from-event.ts","ng://@taiga-ui/cdk/observables/mouse-drag-finish-from.ts","ng://@taiga-ui/cdk/observables/drag-and-drop-from.ts","ng://@taiga-ui/cdk/observables/is-alive.ts","ng://@taiga-ui/cdk/observables/focus-visible-observable.ts","ng://@taiga-ui/cdk/observables/items-query-list-observable.ts","ng://@taiga-ui/cdk/observables/must-be-present.ts","ng://@taiga-ui/cdk/observables/pressed-observable.ts","ng://@taiga-ui/cdk/observables/prevent-default.ts","ng://@taiga-ui/cdk/observables/replay-control-value-changes.ts","ng://@taiga-ui/cdk/observables/stop-propagation.ts","ng://@taiga-ui/cdk/observables/watch.ts","ng://@taiga-ui/cdk/observables/zone-free.ts","ng://@taiga-ui/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import {TuiEventWith, TuiTypedEventTarget} from '@taiga-ui/cdk/types';\nimport {fromEvent, Observable} from 'rxjs';\n\nexport function typedFromEvent<E extends keyof WindowEventMap>(\n target: Window,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<WindowEventMap[E], typeof target>>;\nexport function typedFromEvent<E extends keyof DocumentEventMap>(\n target: Document,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<DocumentEventMap[E], typeof target>>;\nexport function typedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\n target: T,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<HTMLElementEventMap[E], typeof target>>;\nexport function typedFromEvent<\n E extends Event,\n T extends TuiTypedEventTarget<TuiEventWith<E, T>>,\n>(\n target: T,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<E, T>>;\nexport function typedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<E>;\nexport function typedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options: AddEventListenerOptions = {},\n): Observable<E> {\n return fromEvent(target, event, options);\n}\n","import {TuiEventWith, TuiTypedEventTarget} from '@taiga-ui/cdk/types';\nimport {merge, Observable} from 'rxjs';\n\nimport {typedFromEvent} from './typed-from-event';\n\n/**\n * Letting go of the mouse after it was pressed\n * @param target\n */\nexport function mouseDragFinishFrom<\n T extends TuiTypedEventTarget<TuiEventWith<DragEvent, T>>,\n>(target: Exclude<T, null>): Observable<TuiEventWith<MouseEvent, T>> {\n return merge(typedFromEvent(target, 'mouseup'), typedFromEvent(target, 'dragend'));\n}\n","import {isPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {concat, merge, Observable} from 'rxjs';\nimport {endWith, map, repeat, take, takeWhile} from 'rxjs/operators';\n\nimport {mouseDragFinishFrom} from './mouse-drag-finish-from';\nimport {typedFromEvent} from './typed-from-event';\n\nexport const enum TuiDragStage {\n Start,\n Continues,\n End,\n}\n\nexport class TuiDragState {\n constructor(readonly stage: TuiDragStage, readonly event: MouseEvent) {}\n}\n\nexport function dragAndDropFrom(element: Element): Observable<TuiDragState> {\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new Error('element does not have ownerDocument');\n }\n\n return concat(\n typedFromEvent(element, 'mousedown').pipe(\n take(1),\n map(event => new TuiDragState(TuiDragStage.Start, event)),\n ),\n merge(\n typedFromEvent(ownerDocument, 'mousemove').pipe(\n map(event => new TuiDragState(TuiDragStage.Continues, event)),\n ),\n mouseDragFinishFrom(ownerDocument).pipe(\n take(1),\n map(event => new TuiDragState(TuiDragStage.End, event)),\n endWith(null),\n ),\n ).pipe(takeWhile(isPresent)),\n ).pipe(repeat());\n}\n","import {OperatorFunction, pipe, timer} from 'rxjs';\nimport {distinctUntilChanged, mapTo, startWith, switchMapTo} from 'rxjs/operators';\n\n/**\n * Operator to set lifespan after which current value is considered obsolete\n */\nexport function tuiIsAlive(lifespan: number = 0): OperatorFunction<any, boolean> {\n return pipe(\n switchMapTo(timer(lifespan).pipe(mapTo(false), startWith(true))),\n distinctUntilChanged(),\n );\n}\n","import {isNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {concat, merge, Observable} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n ignoreElements,\n mapTo,\n repeat,\n shareReplay,\n startWith,\n switchMapTo,\n take,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {tuiIsAlive} from './is-alive';\nimport {typedFromEvent} from './typed-from-event';\n\nlet documentMouseUpIsAlive$: Observable<boolean>;\nlet documentMouseDownIsAlive$: Observable<boolean>;\n\nexport function focusVisibleObservable(element: Element): Observable<boolean> {\n const elementBlur$ = typedFromEvent(element, 'blur');\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new Error('element does not have ownerDocument');\n }\n\n if (!documentMouseDownIsAlive$ || !documentMouseUpIsAlive$) {\n documentMouseUpIsAlive$ = typedFromEvent(ownerDocument, 'mouseup', {\n capture: true,\n }).pipe(tuiIsAlive(), startWith(false), shareReplay(1));\n documentMouseDownIsAlive$ = typedFromEvent(ownerDocument, 'mousedown', {\n capture: true,\n }).pipe(tuiIsAlive(), startWith(false), shareReplay(1));\n }\n\n return merge(\n // focus events excluding ones that came right after mouse action\n concat(\n typedFromEvent(element, 'focus').pipe(take(1)),\n // filtering out blur events when element remains focused so that we ignore browser tab focus loss\n elementBlur$.pipe(\n filter(() => !isNativeFocused(element)),\n take(1),\n ignoreElements(),\n ),\n ).pipe(\n repeat(),\n withLatestFrom(\n documentMouseDownIsAlive$,\n documentMouseUpIsAlive$,\n (_event, elementActual, documentActual) =>\n elementActual || documentActual,\n ),\n filter(isUserFocus => !isUserFocus),\n ),\n ).pipe(\n switchMapTo(elementBlur$.pipe(mapTo(false), take(1), startWith(true))),\n distinctUntilChanged(),\n );\n}\n","import {QueryList} from '@angular/core';\nimport {getOriginalArrayFromQueryList} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\n\n/**\n * Converts changes observable of a QueryList to an Observable of arrays\n */\nexport function itemsQueryListObservable<T>(\n queryList: QueryList<T>,\n): Observable<ReadonlyArray<T>> {\n return queryList.changes.pipe(\n map(() => getOriginalArrayFromQueryList(queryList)),\n startWith(getOriginalArrayFromQueryList(queryList)),\n );\n}\n","import {isPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {OperatorFunction} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nexport function mustBePresent<T>(): OperatorFunction<T | undefined | null, T> {\n return map(value => {\n if (!isPresent(value)) {\n throw new Error('Value must present');\n }\n\n return value;\n });\n}\n","import {Observable} from 'rxjs';\nimport {filter, mapTo, startWith, switchMapTo, take} from 'rxjs/operators';\n\nimport {mouseDragFinishFrom} from './mouse-drag-finish-from';\nimport {typedFromEvent} from './typed-from-event';\n\nexport interface TuiPressedObservableOptions {\n onlyTrusted: boolean;\n}\n\nexport function pressedObservable(\n element: Element,\n {onlyTrusted}: TuiPressedObservableOptions = {onlyTrusted: true},\n): Observable<boolean> {\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new Error('element does not have ownerDocument');\n }\n\n return typedFromEvent(element, 'mousedown').pipe(\n filter(({isTrusted}) => isTrusted || !onlyTrusted),\n switchMapTo(\n mouseDragFinishFrom(ownerDocument).pipe(\n mapTo(false),\n take(1),\n startWith(true),\n ),\n ),\n );\n}\n","import {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function preventDefault<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap(e => {\n e.preventDefault();\n });\n}\n","import {AbstractControl, AbstractControlDirective} from '@angular/forms';\nimport {Observable} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\n/**\n * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)\n */\nexport function tuiReplayedValueChangesFrom<T>(\n control: AbstractControl | AbstractControlDirective,\n): Observable<T> {\n return new Observable(subscriber => {\n if (!control.valueChanges) {\n throw new Error('Control does not have valueChanges');\n }\n\n control.valueChanges.pipe(startWith(control.value)).subscribe(subscriber);\n });\n}\n","import {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function stopPropagation<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap(e => {\n e.stopPropagation();\n });\n}\n","import {ChangeDetectorRef} from '@angular/core';\nimport {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function watch<T>(\n changeDetectorRef: ChangeDetectorRef,\n): MonoTypeOperatorFunction<T> {\n return tap(() => {\n changeDetectorRef.markForCheck();\n });\n}\n","import {NgZone} from '@angular/core';\nimport {MonoTypeOperatorFunction, Observable, pipe} from 'rxjs';\n\nexport function tuiZonefull<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return source =>\n new Observable(subscriber =>\n source.subscribe({\n next: value => ngZone.run(() => subscriber.next(value)),\n error: error => ngZone.run(() => subscriber.error(error)),\n complete: () => ngZone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tuiZonefree<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return source =>\n new Observable(subscriber =>\n ngZone.runOutsideAngular(() => source.subscribe(subscriber)),\n );\n}\n\nexport function tuiZoneOptimized<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return pipe(tuiZonefree(ngZone), tuiZonefull(ngZone));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-observables.js","sources":["ng://@taiga-ui/cdk/observables/typed-from-event.ts","ng://@taiga-ui/cdk/observables/mouse-drag-finish-from.ts","ng://@taiga-ui/cdk/observables/drag-and-drop-from.ts","ng://@taiga-ui/cdk/observables/is-alive.ts","ng://@taiga-ui/cdk/observables/focus-visible-observable.ts","ng://@taiga-ui/cdk/observables/items-query-list-observable.ts","ng://@taiga-ui/cdk/observables/must-be-present.ts","ng://@taiga-ui/cdk/observables/pressed-observable.ts","ng://@taiga-ui/cdk/observables/prevent-default.ts","ng://@taiga-ui/cdk/observables/replay-control-value-changes.ts","ng://@taiga-ui/cdk/observables/stop-propagation.ts","ng://@taiga-ui/cdk/observables/watch.ts","ng://@taiga-ui/cdk/observables/zone-free.ts","ng://@taiga-ui/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import {TuiEventWith, TuiTypedEventTarget} from '@taiga-ui/cdk/types';\nimport {fromEvent, Observable} from 'rxjs';\n\nexport function typedFromEvent<E extends keyof WindowEventMap>(\n target: Window,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<WindowEventMap[E], typeof target>>;\nexport function typedFromEvent<E extends keyof DocumentEventMap>(\n target: Document,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<DocumentEventMap[E], typeof target>>;\nexport function typedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\n target: T,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<HTMLElementEventMap[E], typeof target>>;\nexport function typedFromEvent<\n E extends Event,\n T extends TuiTypedEventTarget<TuiEventWith<E, T>>,\n>(\n target: T,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<E, T>>;\nexport function typedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<E>;\nexport function typedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options: AddEventListenerOptions = {},\n): Observable<E> {\n return fromEvent(target, event, options);\n}\n","import {TuiEventWith, TuiTypedEventTarget} from '@taiga-ui/cdk/types';\nimport {merge, Observable} from 'rxjs';\n\nimport {typedFromEvent} from './typed-from-event';\n\n/**\n * Letting go of the mouse after it was pressed\n * @param target\n */\nexport function mouseDragFinishFrom<\n T extends TuiTypedEventTarget<TuiEventWith<DragEvent, T>>,\n>(target: Exclude<T, null>): Observable<TuiEventWith<MouseEvent, T>> {\n return merge(typedFromEvent(target, 'mouseup'), typedFromEvent(target, 'dragend'));\n}\n","import {isPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {concat, merge, Observable} from 'rxjs';\nimport {endWith, map, repeat, take, takeWhile} from 'rxjs/operators';\n\nimport {mouseDragFinishFrom} from './mouse-drag-finish-from';\nimport {typedFromEvent} from './typed-from-event';\n\nexport const enum TuiDragStage {\n Start,\n Continues,\n End,\n}\n\nexport class TuiDragState {\n constructor(readonly stage: TuiDragStage, readonly event: MouseEvent) {}\n}\n\nexport function dragAndDropFrom(element: Element): Observable<TuiDragState> {\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new Error('element does not have ownerDocument');\n }\n\n return concat(\n typedFromEvent(element, 'mousedown').pipe(\n take(1),\n map(event => new TuiDragState(TuiDragStage.Start, event)),\n ),\n merge(\n typedFromEvent(ownerDocument, 'mousemove').pipe(\n map(event => new TuiDragState(TuiDragStage.Continues, event)),\n ),\n mouseDragFinishFrom(ownerDocument).pipe(\n take(1),\n map(event => new TuiDragState(TuiDragStage.End, event)),\n endWith(null),\n ),\n ).pipe(takeWhile(isPresent)),\n ).pipe(repeat());\n}\n","import {OperatorFunction, pipe, timer} from 'rxjs';\nimport {distinctUntilChanged, mapTo, startWith, switchMapTo} from 'rxjs/operators';\n\n/**\n * Operator to set lifespan after which current value is considered obsolete\n */\nexport function tuiIsAlive(lifespan: number = 0): OperatorFunction<any, boolean> {\n return pipe(\n switchMapTo(timer(lifespan).pipe(mapTo(false), startWith(true))),\n distinctUntilChanged(),\n );\n}\n","import {isNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {concat, merge, Observable} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n ignoreElements,\n mapTo,\n repeat,\n shareReplay,\n startWith,\n switchMapTo,\n take,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {tuiIsAlive} from './is-alive';\nimport {typedFromEvent} from './typed-from-event';\n\nlet documentMouseUpIsAlive$: Observable<boolean>;\nlet documentMouseDownIsAlive$: Observable<boolean>;\n\nexport function focusVisibleObservable(element: Element): Observable<boolean> {\n const elementBlur$ = typedFromEvent(element, 'blur');\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new Error('element does not have ownerDocument');\n }\n\n if (!documentMouseDownIsAlive$ || !documentMouseUpIsAlive$) {\n documentMouseUpIsAlive$ = typedFromEvent(ownerDocument, 'mouseup', {\n capture: true,\n }).pipe(tuiIsAlive(), startWith(false), shareReplay(1));\n documentMouseDownIsAlive$ = typedFromEvent(ownerDocument, 'mousedown', {\n capture: true,\n }).pipe(tuiIsAlive(), startWith(false), shareReplay(1));\n }\n\n return merge(\n // focus events excluding ones that came right after mouse action\n concat(\n typedFromEvent(element, 'focus').pipe(take(1)),\n // filtering out blur events when element remains focused so that we ignore browser tab focus loss\n elementBlur$.pipe(\n filter(() => !isNativeFocused(element)),\n take(1),\n ignoreElements(),\n ),\n ).pipe(\n repeat(),\n withLatestFrom(\n documentMouseDownIsAlive$,\n documentMouseUpIsAlive$,\n (_event, elementActual, documentActual) =>\n elementActual || documentActual,\n ),\n filter(isUserFocus => !isUserFocus),\n ),\n ).pipe(\n switchMapTo(elementBlur$.pipe(mapTo(false), take(1), startWith(true))),\n distinctUntilChanged(),\n );\n}\n","import {QueryList} from '@angular/core';\nimport {getOriginalArrayFromQueryList} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\n\n/**\n * Converts changes observable of a QueryList to an Observable of arrays\n */\nexport function itemsQueryListObservable<T>(\n queryList: QueryList<T>,\n): Observable<ReadonlyArray<T>> {\n return queryList.changes.pipe(\n map(() => getOriginalArrayFromQueryList(queryList)),\n startWith(getOriginalArrayFromQueryList(queryList)),\n );\n}\n","import {isPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {OperatorFunction} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nexport function mustBePresent<T>(): OperatorFunction<T | undefined | null, T> {\n return map(value => {\n if (!isPresent(value)) {\n throw new Error('Value must present');\n }\n\n return value;\n });\n}\n","import {Observable} from 'rxjs';\nimport {filter, mapTo, startWith, switchMapTo, take} from 'rxjs/operators';\n\nimport {mouseDragFinishFrom} from './mouse-drag-finish-from';\nimport {typedFromEvent} from './typed-from-event';\n\nexport interface TuiPressedObservableOptions {\n onlyTrusted: boolean;\n}\n\nexport function pressedObservable(\n element: Element,\n {onlyTrusted}: TuiPressedObservableOptions = {onlyTrusted: true},\n): Observable<boolean> {\n const {ownerDocument} = element;\n\n if (!ownerDocument) {\n throw new Error('element does not have ownerDocument');\n }\n\n return typedFromEvent(element, 'mousedown').pipe(\n filter(({isTrusted}) => isTrusted || !onlyTrusted),\n switchMapTo(\n mouseDragFinishFrom(ownerDocument).pipe(\n mapTo(false),\n take(1),\n startWith(true),\n ),\n ),\n );\n}\n","import {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function preventDefault<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap(e => {\n e.preventDefault();\n });\n}\n","import {AbstractControl, AbstractControlDirective} from '@angular/forms';\nimport {Observable} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\n/**\n * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)\n * TODO: rename function in 3.0. The name should be shorter.\n */\nexport function tuiReplayedValueChangesFrom<T>(\n control: AbstractControl | AbstractControlDirective,\n): Observable<T> {\n return new Observable(subscriber => {\n if (!control.valueChanges) {\n throw new Error('Control does not have valueChanges');\n }\n\n control.valueChanges.pipe(startWith(control.value)).subscribe(subscriber);\n });\n}\n","import {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function stopPropagation<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap(e => {\n e.stopPropagation();\n });\n}\n","import {ChangeDetectorRef} from '@angular/core';\nimport {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\nexport function watch<T>(\n changeDetectorRef: ChangeDetectorRef,\n): MonoTypeOperatorFunction<T> {\n return tap(() => {\n changeDetectorRef.markForCheck();\n });\n}\n","import {NgZone} from '@angular/core';\nimport {MonoTypeOperatorFunction, Observable, pipe} from 'rxjs';\n\nexport function tuiZonefull<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return source =>\n new Observable(subscriber =>\n source.subscribe({\n next: value => ngZone.run(() => subscriber.next(value)),\n error: error => ngZone.run(() => subscriber.error(error)),\n complete: () => ngZone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tuiZonefree<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return source =>\n new Observable(subscriber =>\n ngZone.runOutsideAngular(() => source.subscribe(subscriber)),\n );\n}\n\nexport function tuiZoneOptimized<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return pipe(tuiZonefree(ngZone), tuiZonefull(ngZone));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface TuiControlValueTransformer<From, To = unknown> {
2
+ readonly toControlValue: (componentValue: From) => To;
3
+ readonly fromControlValue: (controlValue: To) => From;
4
+ }
@@ -2,6 +2,7 @@ export * from './aria-dialog-context';
2
2
  export * from './base-dialog';
3
3
  export * from './base-dialog-context';
4
4
  export * from './context-with-implicit';
5
+ export * from './control-value-transformer';
5
6
  export * from './day-like';
6
7
  export * from './focusable-element-accessor';
7
8
  export * from './month-like';
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"TuiAriaDialogContext":{"__symbolic":"interface"},"TuiBaseDialog":{"__symbolic":"interface"},"TuiBaseDialogContext":{"__symbolic":"interface"},"TuiContextWithImplicit":{"__symbolic":"interface"},"TuiDayLike":{"__symbolic":"interface"},"TuiNativeFocusableElement":{"__symbolic":"interface"},"TuiFocusableElementAccessor":{"__symbolic":"interface"},"TuiMonthLike":{"__symbolic":"interface"},"TuiSwipe":{"__symbolic":"interface"},"TuiSwipeDirection":{"__symbolic":"interface"},"TuiSwipeOptions":{"__symbolic":"interface"},"TuiTimeLike":{"__symbolic":"interface"},"TuiYearLike":{"__symbolic":"interface"},"TuiZoom":{"__symbolic":"interface"},"TuiZoomOptions":{"__symbolic":"interface"}},"origins":{"TuiAriaDialogContext":"./aria-dialog-context","TuiBaseDialog":"./base-dialog","TuiBaseDialogContext":"./base-dialog-context","TuiContextWithImplicit":"./context-with-implicit","TuiDayLike":"./day-like","TuiNativeFocusableElement":"./focusable-element-accessor","TuiFocusableElementAccessor":"./focusable-element-accessor","TuiMonthLike":"./month-like","TuiSwipe":"./swipe","TuiSwipeDirection":"./swipe","TuiSwipeOptions":"./swipe","TuiTimeLike":"./time-like","TuiYearLike":"./year-like","TuiZoom":"./zoom","TuiZoomOptions":"./zoom"},"importAs":"@taiga-ui/cdk/interfaces"}
1
+ {"__symbolic":"module","version":4,"metadata":{"TuiAriaDialogContext":{"__symbolic":"interface"},"TuiBaseDialog":{"__symbolic":"interface"},"TuiBaseDialogContext":{"__symbolic":"interface"},"TuiContextWithImplicit":{"__symbolic":"interface"},"TuiControlValueTransformer":{"__symbolic":"interface"},"TuiDayLike":{"__symbolic":"interface"},"TuiNativeFocusableElement":{"__symbolic":"interface"},"TuiFocusableElementAccessor":{"__symbolic":"interface"},"TuiMonthLike":{"__symbolic":"interface"},"TuiSwipe":{"__symbolic":"interface"},"TuiSwipeDirection":{"__symbolic":"interface"},"TuiSwipeOptions":{"__symbolic":"interface"},"TuiTimeLike":{"__symbolic":"interface"},"TuiYearLike":{"__symbolic":"interface"},"TuiZoom":{"__symbolic":"interface"},"TuiZoomOptions":{"__symbolic":"interface"}},"origins":{"TuiAriaDialogContext":"./aria-dialog-context","TuiBaseDialog":"./base-dialog","TuiBaseDialogContext":"./base-dialog-context","TuiContextWithImplicit":"./context-with-implicit","TuiControlValueTransformer":"./control-value-transformer","TuiDayLike":"./day-like","TuiNativeFocusableElement":"./focusable-element-accessor","TuiFocusableElementAccessor":"./focusable-element-accessor","TuiMonthLike":"./month-like","TuiSwipe":"./swipe","TuiSwipeDirection":"./swipe","TuiSwipeOptions":"./swipe","TuiTimeLike":"./time-like","TuiYearLike":"./year-like","TuiZoom":"./zoom","TuiZoomOptions":"./zoom"},"importAs":"@taiga-ui/cdk/interfaces"}
@@ -2,5 +2,6 @@ import { AbstractControl, AbstractControlDirective } from '@angular/forms';
2
2
  import { Observable } from 'rxjs';
3
3
  /**
4
4
  * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)
5
+ * TODO: rename function in 3.0. The name should be shorter.
5
6
  */
6
7
  export declare function tuiReplayedValueChangesFrom<T>(control: AbstractControl | AbstractControlDirective): Observable<T>;
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"TuiDragStage":{"Start":0,"Continues":1,"End":2},"TuiDragState":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":14,"character":32,"context":{"typeName":"TuiDragStage"},"module":"./drag-and-drop-from"},{"__symbolic":"error","message":"Could not resolve type","line":14,"character":62,"context":{"typeName":"MouseEvent"},"module":"./drag-and-drop-from"}]}]}},"dragAndDropFrom":{"__symbolic":"function"},"focusVisibleObservable":{"__symbolic":"function"},"tuiIsAlive":{"__symbolic":"function","parameters":["lifespan"],"defaults":[0],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"pipe","line":7,"character":11},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"switchMapTo","line":8,"character":8},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"timer","line":8,"character":20},"arguments":[{"__symbolic":"reference","name":"lifespan"}]},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"mapTo","line":8,"character":41},"arguments":[false]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"startWith","line":8,"character":55},"arguments":[true]}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"distinctUntilChanged","line":9,"character":8}}]}},"itemsQueryListObservable":{"__symbolic":"function","parameters":["queryList"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"queryList"},"member":"changes"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"map","line":12,"character":8},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":12,"character":12,"module":"./items-query-list-observable"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"startWith","line":13,"character":8},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk/utils/miscellaneous","name":"getOriginalArrayFromQueryList","line":13,"character":18},"arguments":[{"__symbolic":"reference","name":"queryList"}]}]}]}},"mouseDragFinishFrom":{"__symbolic":"function","parameters":["target"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"merge","line":12,"character":11},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"typedFromEvent"},"arguments":[{"__symbolic":"reference","name":"target"},"mouseup"]},{"__symbolic":"call","expression":{"__symbolic":"reference","name":"typedFromEvent"},"arguments":[{"__symbolic":"reference","name":"target"},"dragend"]}]}},"mustBePresent":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"map","line":5,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":5,"character":15,"module":"./must-be-present"}]}},"TuiPressedObservableOptions":{"__symbolic":"interface"},"pressedObservable":{"__symbolic":"function"},"preventDefault":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"tap","line":4,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":4,"character":15,"module":"./prevent-default"}]}},"tuiReplayedValueChangesFrom":{"__symbolic":"function","parameters":["control"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"rxjs","name":"Observable","line":10,"character":15},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":10,"character":26,"module":"./replay-control-value-changes"}]}},"stopPropagation":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"tap","line":4,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":4,"character":15,"module":"./stop-propagation"}]}},"typedFromEvent":{"__symbolic":"function","parameters":["target","event","options"],"defaults":[null,null,{}],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"fromEvent","line":36,"character":11},"arguments":[{"__symbolic":"reference","name":"target"},{"__symbolic":"reference","name":"event"},{"__symbolic":"reference","name":"options"}]}},"watch":{"__symbolic":"function","parameters":["changeDetectorRef"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"tap","line":7,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":7,"character":15,"module":"./watch"}]}},"tuiZonefull":{"__symbolic":"function","parameters":["ngZone"],"value":{"__symbolic":"error","message":"Lambda not supported","line":4,"character":11,"module":"./zone-free"}},"tuiZonefree":{"__symbolic":"function","parameters":["ngZone"],"value":{"__symbolic":"error","message":"Lambda not supported","line":15,"character":11,"module":"./zone-free"}},"tuiZoneOptimized":{"__symbolic":"function","parameters":["ngZone"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"pipe","line":22,"character":11},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"tuiZonefree"},"arguments":[{"__symbolic":"reference","name":"ngZone"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","name":"tuiZonefull"},"arguments":[{"__symbolic":"reference","name":"ngZone"}]}]}}},"origins":{"TuiDragStage":"./drag-and-drop-from","TuiDragState":"./drag-and-drop-from","dragAndDropFrom":"./drag-and-drop-from","focusVisibleObservable":"./focus-visible-observable","tuiIsAlive":"./is-alive","itemsQueryListObservable":"./items-query-list-observable","mouseDragFinishFrom":"./mouse-drag-finish-from","mustBePresent":"./must-be-present","TuiPressedObservableOptions":"./pressed-observable","pressedObservable":"./pressed-observable","preventDefault":"./prevent-default","tuiReplayedValueChangesFrom":"./replay-control-value-changes","stopPropagation":"./stop-propagation","typedFromEvent":"./typed-from-event","watch":"./watch","tuiZonefull":"./zone-free","tuiZonefree":"./zone-free","tuiZoneOptimized":"./zone-free"},"importAs":"@taiga-ui/cdk/observables"}
1
+ {"__symbolic":"module","version":4,"metadata":{"TuiDragStage":{"Start":0,"Continues":1,"End":2},"TuiDragState":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":14,"character":32,"context":{"typeName":"TuiDragStage"},"module":"./drag-and-drop-from"},{"__symbolic":"error","message":"Could not resolve type","line":14,"character":62,"context":{"typeName":"MouseEvent"},"module":"./drag-and-drop-from"}]}]}},"dragAndDropFrom":{"__symbolic":"function"},"focusVisibleObservable":{"__symbolic":"function"},"tuiIsAlive":{"__symbolic":"function","parameters":["lifespan"],"defaults":[0],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"pipe","line":7,"character":11},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"switchMapTo","line":8,"character":8},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"timer","line":8,"character":20},"arguments":[{"__symbolic":"reference","name":"lifespan"}]},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"mapTo","line":8,"character":41},"arguments":[false]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"startWith","line":8,"character":55},"arguments":[true]}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"distinctUntilChanged","line":9,"character":8}}]}},"itemsQueryListObservable":{"__symbolic":"function","parameters":["queryList"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"queryList"},"member":"changes"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"map","line":12,"character":8},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":12,"character":12,"module":"./items-query-list-observable"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"startWith","line":13,"character":8},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk/utils/miscellaneous","name":"getOriginalArrayFromQueryList","line":13,"character":18},"arguments":[{"__symbolic":"reference","name":"queryList"}]}]}]}},"mouseDragFinishFrom":{"__symbolic":"function","parameters":["target"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"merge","line":12,"character":11},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"typedFromEvent"},"arguments":[{"__symbolic":"reference","name":"target"},"mouseup"]},{"__symbolic":"call","expression":{"__symbolic":"reference","name":"typedFromEvent"},"arguments":[{"__symbolic":"reference","name":"target"},"dragend"]}]}},"mustBePresent":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"map","line":5,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":5,"character":15,"module":"./must-be-present"}]}},"TuiPressedObservableOptions":{"__symbolic":"interface"},"pressedObservable":{"__symbolic":"function"},"preventDefault":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"tap","line":4,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":4,"character":15,"module":"./prevent-default"}]}},"tuiReplayedValueChangesFrom":{"__symbolic":"function","parameters":["control"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"rxjs","name":"Observable","line":11,"character":15},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":11,"character":26,"module":"./replay-control-value-changes"}]}},"stopPropagation":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"tap","line":4,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":4,"character":15,"module":"./stop-propagation"}]}},"typedFromEvent":{"__symbolic":"function","parameters":["target","event","options"],"defaults":[null,null,{}],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"fromEvent","line":36,"character":11},"arguments":[{"__symbolic":"reference","name":"target"},{"__symbolic":"reference","name":"event"},{"__symbolic":"reference","name":"options"}]}},"watch":{"__symbolic":"function","parameters":["changeDetectorRef"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"tap","line":7,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":7,"character":15,"module":"./watch"}]}},"tuiZonefull":{"__symbolic":"function","parameters":["ngZone"],"value":{"__symbolic":"error","message":"Lambda not supported","line":4,"character":11,"module":"./zone-free"}},"tuiZonefree":{"__symbolic":"function","parameters":["ngZone"],"value":{"__symbolic":"error","message":"Lambda not supported","line":15,"character":11,"module":"./zone-free"}},"tuiZoneOptimized":{"__symbolic":"function","parameters":["ngZone"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"pipe","line":22,"character":11},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"tuiZonefree"},"arguments":[{"__symbolic":"reference","name":"ngZone"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","name":"tuiZonefull"},"arguments":[{"__symbolic":"reference","name":"ngZone"}]}]}}},"origins":{"TuiDragStage":"./drag-and-drop-from","TuiDragState":"./drag-and-drop-from","dragAndDropFrom":"./drag-and-drop-from","focusVisibleObservable":"./focus-visible-observable","tuiIsAlive":"./is-alive","itemsQueryListObservable":"./items-query-list-observable","mouseDragFinishFrom":"./mouse-drag-finish-from","mustBePresent":"./must-be-present","TuiPressedObservableOptions":"./pressed-observable","pressedObservable":"./pressed-observable","preventDefault":"./prevent-default","tuiReplayedValueChangesFrom":"./replay-control-value-changes","stopPropagation":"./stop-propagation","typedFromEvent":"./typed-from-event","watch":"./watch","tuiZonefull":"./zone-free","tuiZonefree":"./zone-free","tuiZoneOptimized":"./zone-free"},"importAs":"@taiga-ui/cdk/observables"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/cdk",
3
- "version": "2.30.0",
3
+ "version": "2.31.0",
4
4
  "description": "Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance",
5
5
  "keywords": [
6
6
  "angular",