@taiga-ui/cdk 5.4.0 → 5.5.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.
- package/constants/version.d.ts +1 -1
- package/constants/version.js +1 -1
- package/fesm2022/taiga-ui-cdk-classes.mjs +1 -1
- package/fesm2022/taiga-ui-cdk-classes.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-constants.mjs +1 -1
- package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-active-zone.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-animated.mjs +2 -2
- package/fesm2022/taiga-ui-cdk-directives-animated.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-copy-processor.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-focus-trap.mjs +2 -2
- package/fesm2022/taiga-ui-cdk-directives-focus-trap.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-font-size.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-media.mjs +4 -4
- package/fesm2022/taiga-ui-cdk-directives-media.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-obscured.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-resizer.mjs +2 -2
- package/fesm2022/taiga-ui-cdk-directives-resizer.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-truncate.mjs +4 -4
- package/fesm2022/taiga-ui-cdk-directives-truncate.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-validator.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-with-styles.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-observables.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-portals.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-utils-dom.mjs +1 -3
- package/fesm2022/taiga-ui-cdk-utils-dom.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-utils-math.mjs +9 -5
- package/fesm2022/taiga-ui-cdk-utils-math.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/ng-add/constants/versions.d.ts +1 -1
- package/schematics/ng-update/utils/templates/control-state-attrs.d.ts +8 -0
- package/schematics/ng-update/utils/templates/control-state-attrs.js +46 -0
- package/schematics/ng-update/utils/templates/control-state-attrs.js.map +1 -0
- package/schematics/ng-update/utils/templates/dom-traversal.js +2 -4
- package/schematics/ng-update/utils/templates/dom-traversal.js.map +1 -1
- package/schematics/ng-update/utils/templates/index.d.ts +1 -0
- package/schematics/ng-update/utils/templates/index.js +1 -0
- package/schematics/ng-update/utils/templates/index.js.map +1 -1
- package/schematics/ng-update/v5/steps/migrate-doc-i18n-tokens.js +4 -4
- package/schematics/ng-update/v5/steps/migrate-doc-i18n-tokens.js.map +1 -1
- package/schematics/ng-update/v5/steps/migrate-filter-by-input.js +31 -14
- package/schematics/ng-update/v5/steps/migrate-filter-by-input.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-combo-box.js +12 -5
- package/schematics/ng-update/v5/steps/templates/migrate-combo-box.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-hint-on-legacy-controls.d.ts +7 -0
- package/schematics/ng-update/v5/steps/templates/migrate-hint-on-legacy-controls.js +20 -3
- package/schematics/ng-update/v5/steps/templates/migrate-hint-on-legacy-controls.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-date-range.js +5 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-date-range.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-date.js +5 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-date.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-password.js +14 -3
- package/schematics/ng-update/v5/steps/templates/migrate-input-password.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-phone.js +5 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-phone.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-tag.js +5 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-tag.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-time.js +5 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-time.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input.js +72 -11
- package/schematics/ng-update/v5/steps/templates/migrate-input.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-multi-select.js +9 -3
- package/schematics/ng-update/v5/steps/templates/migrate-multi-select.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-select.js +8 -3
- package/schematics/ng-update/v5/steps/templates/migrate-select.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-textarea.js +13 -4
- package/schematics/ng-update/v5/steps/templates/migrate-textarea.js.map +1 -1
- package/schematics/ng-update/v5/tests/migrate-tokens/utils.js.map +1 -1
- package/schematics/utils/push-to-array-property.js +5 -7
- package/schematics/utils/push-to-array-property.js.map +1 -1
- package/schematics/utils/templates/migrate-attr-value.js +2 -4
- package/schematics/utils/templates/migrate-attr-value.js.map +1 -1
- package/utils/math/sum.d.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-observables.mjs","sources":["../../../projects/cdk/observables/close-watcher.ts","../../../projects/cdk/observables/control-value.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/drag-and-drop-from.ts","../../../projects/cdk/observables/events.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/scroll-from.ts","../../../projects/cdk/observables/take-until-destroyed.ts","../../../projects/cdk/observables/untracked-scheduler.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import {Observable} from 'rxjs';\n\ninterface CloseWatcher {\n destroy(): void;\n onclose?(event: Event): void;\n oncancel?(event: Event): void;\n}\n\nexport function tuiCloseWatcher(): Observable<void> {\n return new Observable((subscriber) => {\n let watcher!: CloseWatcher;\n\n const setup = (): void => {\n watcher = getWatcher();\n watcher.onclose = () => setup();\n\n watcher.oncancel = (event) => {\n event.preventDefault();\n subscriber.next();\n };\n };\n\n setup();\n\n return () => watcher.destroy();\n });\n}\n\nfunction getWatcher(): CloseWatcher {\n try {\n // @ts-ignore\n return new CloseWatcher();\n } catch {\n return {destroy: () => {}};\n }\n}\n","import {type AbstractControl, type AbstractControlDirective} from '@angular/forms';\nimport {Observable, startWith} from 'rxjs';\n\n/**\n * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)\n */\nexport function tuiControlValue<T>(\n control?: AbstractControl | AbstractControlDirective | null,\n): Observable<T> {\n return new Observable((subscriber) =>\n control?.valueChanges?.pipe(startWith(control.value)).subscribe(subscriber),\n );\n}\n","import {fromEvent, type Observable} from 'rxjs';\n\nexport interface TuiTypedEventTarget<E> {\n addEventListener(\n type: string,\n listener: ((evt: E) => void) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener(\n type: string,\n listener?: ((evt: E) => void) | null,\n options?: EventListenerOptions | boolean,\n ): void;\n}\n\n/**\n * Wrapper around {@link Event} to add typings to target and currentTarget.\n */\nexport type TuiEventWith<G extends Event, T extends TuiTypedEventTarget<G>> = G & {\n readonly currentTarget: T;\n};\n\nexport function tuiTypedFromEvent<E extends keyof WindowEventMap>(\n target: Window,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<WindowEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<E extends keyof DocumentEventMap>(\n target: Document,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<DocumentEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\n target: T,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<HTMLElementEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<\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>>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<E>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options: AddEventListenerOptions = {},\n): Observable<E> {\n /**\n * @note:\n * in RxJS 7 type signature `TuiTypedEventTarget<E>` !== `HasEventTargetAddRemove<E>`\n */\n return fromEvent<E>(target as any, event, options) as unknown as Observable<E>;\n}\n","import {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n concat,\n endWith,\n map,\n merge,\n type Observable,\n repeat,\n take,\n takeWhile,\n} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nexport type TuiDragStage = 'continues' | 'end' | 'start';\n\nexport class TuiDragState {\n constructor(\n public readonly stage: TuiDragStage,\n public readonly event: MouseEvent,\n ) {}\n}\n\nexport function tuiDragAndDropFrom(element: Element): Observable<TuiDragState> {\n const {ownerDocument} = element;\n\n return concat(\n tuiTypedFromEvent(element, 'mousedown').pipe(\n take(1),\n map((event) => new TuiDragState('start', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mousemove').pipe(\n map((event) => new TuiDragState('continues', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mouseup'),\n tuiTypedFromEvent(ownerDocument, 'dragend'),\n ).pipe(\n take(1),\n map((event) => new TuiDragState('end', event)),\n endWith(null),\n ),\n ).pipe(takeWhile(tuiIsPresent)),\n ).pipe(repeat());\n}\n","import {type MonoTypeOperatorFunction, tap} from 'rxjs';\n\nexport function tuiPreventDefault<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.preventDefault());\n}\n\nexport function tuiStopPropagation<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.stopPropagation());\n}\n","import {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {EMPTY, type Observable, type OperatorFunction, pipe, switchMap} from 'rxjs';\n\nexport function tuiIfMap<T, G>(\n project: (value: T) => Observable<G>,\n predicate: TuiBooleanHandler<T> = Boolean,\n): OperatorFunction<T, G> {\n return pipe(switchMap((value) => (predicate(value) ? project(value) : EMPTY)));\n}\n","import {type Observable} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\n/**\n * Normalizes scroll event in case element is `html` (document.documentElement)\n */\nexport function tuiScrollFrom(element: Element): Observable<Event> {\n return tuiTypedFromEvent(\n element === element.ownerDocument.documentElement\n ? element.ownerDocument\n : element,\n 'scroll',\n );\n}\n","import {type DestroyRef} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n catchError,\n defaultIfEmpty,\n EMPTY,\n type MonoTypeOperatorFunction,\n NEVER,\n pipe,\n takeUntil,\n} from 'rxjs';\n\n// NOTE: takeUntilDestroyed and DestroyRef can cause error:\n// NG0911: View has already been destroyed\n// https://github.com/angular/angular/issues/54527\nexport function tuiTakeUntilDestroyed<T>(\n destroyRef?: DestroyRef,\n): MonoTypeOperatorFunction<T> {\n return pipe(\n takeUntil(\n NEVER.pipe(\n takeUntilDestroyed(destroyRef),\n catchError(() => EMPTY),\n defaultIfEmpty(null),\n ),\n ),\n );\n}\n","import {untracked} from '@angular/core';\nimport {\n queueScheduler,\n type SchedulerAction,\n type SchedulerLike,\n type Subscription,\n} from 'rxjs';\n\nexport const tuiUntrackedScheduler: SchedulerLike = {\n now: queueScheduler.now.bind(queueScheduler),\n\n schedule<T>(\n work: (this: SchedulerAction<T>, state?: T) => void,\n delay?: number,\n state?: T,\n ): Subscription {\n return queueScheduler.schedule(\n function (this: SchedulerAction<T>, s?: T) {\n return untracked(() => work.call(this, s));\n },\n delay,\n state,\n );\n },\n};\n","import {ChangeDetectorRef, inject} from '@angular/core';\nimport {type MonoTypeOperatorFunction, tap} from 'rxjs';\n\nexport function tuiWatch<T>(\n cdr = inject(ChangeDetectorRef),\n): MonoTypeOperatorFunction<T> {\n return tap(() => cdr.markForCheck());\n}\n","import {inject, NgZone} from '@angular/core';\nimport {\n asyncScheduler,\n type MonoTypeOperatorFunction,\n Observable,\n pipe,\n type SchedulerLike,\n type Subscription,\n} from 'rxjs';\n\nexport function tuiZonefull<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n source.subscribe({\n next: (value) => zone.run(() => subscriber.next(value)),\n error: (error: unknown) => zone.run(() => subscriber.error(error)),\n complete: () => zone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tuiZonefree<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n zone.runOutsideAngular(() => source.subscribe(subscriber)),\n );\n}\n\nexport function tuiZoneOptimized<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return pipe(tuiZonefree(zone), tuiZonefull(zone));\n}\n\nclass TuiZoneScheduler implements SchedulerLike {\n constructor(\n private readonly zoneConditionFn: <T>(fn: (...args: unknown[]) => T) => T,\n private readonly scheduler: SchedulerLike = asyncScheduler,\n ) {}\n\n public now(): number {\n return this.scheduler.now();\n }\n\n public schedule(...args: Parameters<SchedulerLike['schedule']>): Subscription {\n return this.zoneConditionFn(() => this.scheduler.schedule(...args));\n }\n}\n\nexport function tuiZonefreeScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);\n}\n\nexport function tuiZonefullScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.run.bind(zone), scheduler);\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.mjs","sources":["../../../projects/cdk/observables/close-watcher.ts","../../../projects/cdk/observables/control-value.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/drag-and-drop-from.ts","../../../projects/cdk/observables/events.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/scroll-from.ts","../../../projects/cdk/observables/take-until-destroyed.ts","../../../projects/cdk/observables/untracked-scheduler.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import {Observable} from 'rxjs';\n\ninterface CloseWatcher {\n destroy(): void;\n onclose?(event: Event): void;\n oncancel?(event: Event): void;\n}\n\nexport function tuiCloseWatcher(): Observable<void> {\n return new Observable((subscriber) => {\n let watcher!: CloseWatcher;\n\n const setup = (): void => {\n watcher = getWatcher();\n watcher.onclose = () => setup();\n\n watcher.oncancel = (event) => {\n event.preventDefault();\n subscriber.next();\n };\n };\n\n setup();\n\n return () => watcher.destroy();\n });\n}\n\nfunction getWatcher(): CloseWatcher {\n try {\n // @ts-ignore\n return new CloseWatcher();\n } catch {\n return {destroy: () => {}};\n }\n}\n","import {type AbstractControl, type AbstractControlDirective} from '@angular/forms';\nimport {Observable, startWith} from 'rxjs';\n\n/**\n * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)\n */\nexport function tuiControlValue<T>(\n control?: AbstractControl | AbstractControlDirective | null,\n): Observable<T> {\n return new Observable((subscriber) =>\n control?.valueChanges?.pipe(startWith(control.value)).subscribe(subscriber),\n );\n}\n","import {fromEvent, type Observable} from 'rxjs';\n\nexport interface TuiTypedEventTarget<E> {\n addEventListener(\n type: string,\n listener: ((evt: E) => void) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener(\n type: string,\n listener?: ((evt: E) => void) | null,\n options?: EventListenerOptions | boolean,\n ): void;\n}\n\n/**\n * Wrapper around {@link Event} to add typings to target and currentTarget.\n */\nexport type TuiEventWith<G extends Event, T extends TuiTypedEventTarget<G>> = G & {\n readonly currentTarget: T;\n};\n\nexport function tuiTypedFromEvent<E extends keyof WindowEventMap>(\n target: Window,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<WindowEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<E extends keyof DocumentEventMap>(\n target: Document,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<DocumentEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\n target: T,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<HTMLElementEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<\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>>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<E>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options: AddEventListenerOptions = {},\n): Observable<E> {\n /**\n * @note:\n * in RxJS 7 type signature `TuiTypedEventTarget<E>` !== `HasEventTargetAddRemove<E>`\n */\n return fromEvent<E>(target as any, event, options);\n}\n","import {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n concat,\n endWith,\n map,\n merge,\n type Observable,\n repeat,\n take,\n takeWhile,\n} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nexport type TuiDragStage = 'continues' | 'end' | 'start';\n\nexport class TuiDragState {\n constructor(\n public readonly stage: TuiDragStage,\n public readonly event: MouseEvent,\n ) {}\n}\n\nexport function tuiDragAndDropFrom(element: Element): Observable<TuiDragState> {\n const {ownerDocument} = element;\n\n return concat(\n tuiTypedFromEvent(element, 'mousedown').pipe(\n take(1),\n map((event) => new TuiDragState('start', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mousemove').pipe(\n map((event) => new TuiDragState('continues', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mouseup'),\n tuiTypedFromEvent(ownerDocument, 'dragend'),\n ).pipe(\n take(1),\n map((event) => new TuiDragState('end', event)),\n endWith(null),\n ),\n ).pipe(takeWhile(tuiIsPresent)),\n ).pipe(repeat());\n}\n","import {type MonoTypeOperatorFunction, tap} from 'rxjs';\n\nexport function tuiPreventDefault<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.preventDefault());\n}\n\nexport function tuiStopPropagation<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.stopPropagation());\n}\n","import {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {EMPTY, type Observable, type OperatorFunction, pipe, switchMap} from 'rxjs';\n\nexport function tuiIfMap<T, G>(\n project: (value: T) => Observable<G>,\n predicate: TuiBooleanHandler<T> = Boolean,\n): OperatorFunction<T, G> {\n return pipe(switchMap((value) => (predicate(value) ? project(value) : EMPTY)));\n}\n","import {type Observable} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\n/**\n * Normalizes scroll event in case element is `html` (document.documentElement)\n */\nexport function tuiScrollFrom(element: Element): Observable<Event> {\n return tuiTypedFromEvent(\n element === element.ownerDocument.documentElement\n ? element.ownerDocument\n : element,\n 'scroll',\n );\n}\n","import {type DestroyRef} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n catchError,\n defaultIfEmpty,\n EMPTY,\n type MonoTypeOperatorFunction,\n NEVER,\n pipe,\n takeUntil,\n} from 'rxjs';\n\n// NOTE: takeUntilDestroyed and DestroyRef can cause error:\n// NG0911: View has already been destroyed\n// https://github.com/angular/angular/issues/54527\nexport function tuiTakeUntilDestroyed<T>(\n destroyRef?: DestroyRef,\n): MonoTypeOperatorFunction<T> {\n return pipe(\n takeUntil(\n NEVER.pipe(\n takeUntilDestroyed(destroyRef),\n catchError(() => EMPTY),\n defaultIfEmpty(null),\n ),\n ),\n );\n}\n","import {untracked} from '@angular/core';\nimport {\n queueScheduler,\n type SchedulerAction,\n type SchedulerLike,\n type Subscription,\n} from 'rxjs';\n\nexport const tuiUntrackedScheduler: SchedulerLike = {\n now: queueScheduler.now.bind(queueScheduler),\n\n schedule<T>(\n work: (this: SchedulerAction<T>, state?: T) => void,\n delay?: number,\n state?: T,\n ): Subscription {\n return queueScheduler.schedule(\n function (this: SchedulerAction<T>, s?: T) {\n return untracked(() => work.call(this, s));\n },\n delay,\n state,\n );\n },\n};\n","import {ChangeDetectorRef, inject} from '@angular/core';\nimport {type MonoTypeOperatorFunction, tap} from 'rxjs';\n\nexport function tuiWatch<T>(\n cdr = inject(ChangeDetectorRef),\n): MonoTypeOperatorFunction<T> {\n return tap(() => cdr.markForCheck());\n}\n","import {inject, NgZone} from '@angular/core';\nimport {\n asyncScheduler,\n type MonoTypeOperatorFunction,\n Observable,\n pipe,\n type SchedulerLike,\n type Subscription,\n} from 'rxjs';\n\nexport function tuiZonefull<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n source.subscribe({\n next: (value) => zone.run(() => subscriber.next(value)),\n error: (error: unknown) => zone.run(() => subscriber.error(error)),\n complete: () => zone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tuiZonefree<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n zone.runOutsideAngular(() => source.subscribe(subscriber)),\n );\n}\n\nexport function tuiZoneOptimized<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return pipe(tuiZonefree(zone), tuiZonefull(zone));\n}\n\nclass TuiZoneScheduler implements SchedulerLike {\n constructor(\n private readonly zoneConditionFn: <T>(fn: (...args: unknown[]) => T) => T,\n private readonly scheduler: SchedulerLike = asyncScheduler,\n ) {}\n\n public now(): number {\n return this.scheduler.now();\n }\n\n public schedule(...args: Parameters<SchedulerLike['schedule']>): Subscription {\n return this.zoneConditionFn(() => this.scheduler.schedule(...args));\n }\n}\n\nexport function tuiZonefreeScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);\n}\n\nexport function tuiZonefullScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.run.bind(zone), scheduler);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-portals.mjs","sources":["../../../projects/cdk/portals/portal.ts","../../../projects/cdk/portals/directive.ts","../../../projects/cdk/portals/service.ts","../../../projects/cdk/portals/portals.ts","../../../projects/cdk/portals/taiga-ui-cdk-portals.ts"],"sourcesContent":["import {\n inject,\n Injectable,\n INJECTOR,\n Injector,\n type Provider,\n type Type,\n} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiGenerateId} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n // eslint-disable-next-line no-restricted-imports\n POLYMORPHEUS_CONTEXT,\n PolymorpheusComponent,\n type PolymorpheusContent,\n} from '@taiga-ui/polymorpheus';\nimport {Observable, type Observer} from 'rxjs';\n\nimport {type TuiPortalService} from './service';\n\nexport type TuiPortalContext<T, O = void> = T &\n TuiContext<Observer<O>> & {\n readonly content: PolymorpheusContent<TuiPortalContext<T, O>>;\n readonly createdAt: number;\n readonly id: string;\n completeWith(value: O): void;\n };\n\n@Injectable()\nexport abstract class TuiPortal<T, K = void> {\n protected abstract readonly component: Type<any>;\n protected abstract readonly options: T;\n\n private readonly injector = inject(INJECTOR);\n\n // eslint-disable-next-line @angular-eslint/prefer-inject\n constructor(protected readonly service: TuiPortalService) {}\n\n public open<G = void>(\n content: PolymorpheusContent<TuiPortalContext<T, K extends void ? G : K>>,\n options: Partial<T> = {},\n ): Observable<K extends void ? G : K> {\n return new Observable(($implicit) =>\n this.add(\n new PolymorpheusComponent(\n this.component,\n Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: POLYMORPHEUS_CONTEXT,\n useValue: {\n ...this.options,\n ...options,\n content,\n $implicit,\n createdAt: Date.now(),\n id: tuiGenerateId(),\n completeWith: (v: K extends void ? G : K): void => {\n $implicit.next(v);\n $implicit.complete();\n },\n } satisfies TuiPortalContext<T, K extends void ? G : K>,\n },\n ],\n }),\n ),\n ),\n );\n }\n\n protected add(component: PolymorpheusComponent<unknown>): () => void {\n const ref = this.service.add(component);\n\n return () => ref.destroy();\n }\n}\n\nexport function tuiAsPortal(portal: typeof TuiPortal<any>): Provider {\n return tuiProvide(TuiPortal, portal);\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {outputFromObservable, toObservable} from '@angular/core/rxjs-interop';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\nimport {endWith, ignoreElements, share} from 'rxjs';\n\nimport {TuiPortal, type TuiPortalContext} from './portal';\n\n@Directive()\nexport class TuiPortalDirective<T> extends PolymorpheusTemplate<TuiPortalContext<T>> {\n private readonly service = inject(TuiPortal<T>);\n\n public readonly options = input<Partial<T>>({});\n public readonly open = input(false);\n public readonly openChange = outputFromObservable(\n toObservable(this.open).pipe(\n tuiIfMap(() =>\n this.service\n .open(this, this.options())\n .pipe(ignoreElements(), endWith(false)),\n ),\n share(),\n ),\n );\n}\n","import {\n type ComponentRef,\n type EmbeddedViewRef,\n Injectable,\n type TemplateRef,\n} from '@angular/core';\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {type TuiPortals} from './portals';\n\n@Injectable()\nexport abstract class TuiPortalService {\n protected host?: TuiPortals;\n\n public attach(host: TuiPortals): void {\n this.host = host;\n }\n\n public add<C>(content: PolymorpheusComponent<C>): ComponentRef<C>;\n public add<C>(content: TemplateRef<C>, context?: C): EmbeddedViewRef<C>;\n public add<C>(\n content: PolymorpheusComponent<C> | TemplateRef<C>,\n context?: C,\n ): ComponentRef<C> | EmbeddedViewRef<C> {\n if (!this.host) {\n throw new TuiNoHostException();\n }\n\n return content instanceof PolymorpheusComponent\n ? this.host.addComponent(content)\n : this.host.addTemplate(content, context);\n }\n}\n\nexport class TuiNoHostException extends Error {\n constructor() {\n super(\n ngDevMode\n ? 'Portals cannot be used without TuiPortals component; perhaps you forgot to wrap your application with tui-root.'\n : '',\n );\n }\n}\n","import {\n type ComponentRef,\n Directive,\n type EmbeddedViewRef,\n inject,\n INJECTOR,\n type TemplateRef,\n viewChild,\n} from '@angular/core';\nimport {TuiVCR} from '@taiga-ui/cdk/directives/vcr';\nimport {type PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiPortalService} from './service';\n\n@Directive()\nexport abstract class TuiPortals {\n private readonly injector = inject(INJECTOR);\n private readonly anchor = viewChild.required(TuiVCR);\n\n constructor() {\n inject(TuiPortalService).attach(this);\n }\n\n public addComponent<C>(component: PolymorpheusComponent<C>): ComponentRef<C> {\n const injector = component.createInjector(this.injector);\n const ref = this.anchor().vcr.createComponent(component.component, {injector});\n\n ref.changeDetectorRef.detectChanges();\n\n return ref;\n }\n\n public addTemplate<C>(templateRef: TemplateRef<C>, context?: C): EmbeddedViewRef<C> {\n return this.anchor().vcr.createEmbeddedView(templateRef, context);\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-portals.mjs","sources":["../../../projects/cdk/portals/portal.ts","../../../projects/cdk/portals/directive.ts","../../../projects/cdk/portals/service.ts","../../../projects/cdk/portals/portals.ts","../../../projects/cdk/portals/taiga-ui-cdk-portals.ts"],"sourcesContent":["import {\n inject,\n Injectable,\n INJECTOR,\n Injector,\n type Provider,\n type Type,\n} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiGenerateId} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n // eslint-disable-next-line no-restricted-imports\n POLYMORPHEUS_CONTEXT,\n PolymorpheusComponent,\n type PolymorpheusContent,\n} from '@taiga-ui/polymorpheus';\nimport {Observable, type Observer} from 'rxjs';\n\nimport {type TuiPortalService} from './service';\n\nexport type TuiPortalContext<T, O = void> = T &\n TuiContext<Observer<O>> & {\n readonly content: PolymorpheusContent<TuiPortalContext<T, O>>;\n readonly createdAt: number;\n readonly id: string;\n completeWith(value: O): void;\n };\n\n@Injectable()\nexport abstract class TuiPortal<T, K = void> {\n protected abstract readonly component: Type<any>;\n protected abstract readonly options: T;\n private readonly injector = inject(INJECTOR);\n\n // eslint-disable-next-line @angular-eslint/prefer-inject\n constructor(protected readonly service: TuiPortalService) {}\n\n public open<G = void>(\n content: PolymorpheusContent<TuiPortalContext<T, K extends void ? G : K>>,\n options: Partial<T> = {},\n ): Observable<K extends void ? G : K> {\n return new Observable(($implicit) =>\n this.add(\n new PolymorpheusComponent(\n this.component,\n Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: POLYMORPHEUS_CONTEXT,\n useValue: {\n ...this.options,\n ...options,\n content,\n $implicit,\n createdAt: Date.now(),\n id: tuiGenerateId(),\n completeWith: (v: K extends void ? G : K): void => {\n $implicit.next(v);\n $implicit.complete();\n },\n } satisfies TuiPortalContext<T, K extends void ? G : K>,\n },\n ],\n }),\n ),\n ),\n );\n }\n\n protected add(component: PolymorpheusComponent<unknown>): () => void {\n const ref = this.service.add(component);\n\n return () => ref.destroy();\n }\n}\n\nexport function tuiAsPortal(portal: typeof TuiPortal<any>): Provider {\n return tuiProvide(TuiPortal, portal);\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {outputFromObservable, toObservable} from '@angular/core/rxjs-interop';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\nimport {endWith, ignoreElements, share} from 'rxjs';\n\nimport {TuiPortal, type TuiPortalContext} from './portal';\n\n@Directive()\nexport class TuiPortalDirective<T> extends PolymorpheusTemplate<TuiPortalContext<T>> {\n private readonly service = inject(TuiPortal<T>);\n public readonly options = input<Partial<T>>({});\n public readonly open = input(false);\n\n public readonly openChange = outputFromObservable(\n toObservable(this.open).pipe(\n tuiIfMap(() =>\n this.service\n .open(this, this.options())\n .pipe(ignoreElements(), endWith(false)),\n ),\n share(),\n ),\n );\n}\n","import {\n type ComponentRef,\n type EmbeddedViewRef,\n Injectable,\n type TemplateRef,\n} from '@angular/core';\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {type TuiPortals} from './portals';\n\n@Injectable()\nexport abstract class TuiPortalService {\n protected host?: TuiPortals;\n\n public attach(host: TuiPortals): void {\n this.host = host;\n }\n\n public add<C>(content: PolymorpheusComponent<C>): ComponentRef<C>;\n public add<C>(content: TemplateRef<C>, context?: C): EmbeddedViewRef<C>;\n public add<C>(\n content: PolymorpheusComponent<C> | TemplateRef<C>,\n context?: C,\n ): ComponentRef<C> | EmbeddedViewRef<C> {\n if (!this.host) {\n throw new TuiNoHostException();\n }\n\n return content instanceof PolymorpheusComponent\n ? this.host.addComponent(content)\n : this.host.addTemplate(content, context);\n }\n}\n\nexport class TuiNoHostException extends Error {\n constructor() {\n super(\n ngDevMode\n ? 'Portals cannot be used without TuiPortals component; perhaps you forgot to wrap your application with tui-root.'\n : '',\n );\n }\n}\n","import {\n type ComponentRef,\n Directive,\n type EmbeddedViewRef,\n inject,\n INJECTOR,\n type TemplateRef,\n viewChild,\n} from '@angular/core';\nimport {TuiVCR} from '@taiga-ui/cdk/directives/vcr';\nimport {type PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiPortalService} from './service';\n\n@Directive()\nexport abstract class TuiPortals {\n private readonly injector = inject(INJECTOR);\n private readonly anchor = viewChild.required(TuiVCR);\n\n constructor() {\n inject(TuiPortalService).attach(this);\n }\n\n public addComponent<C>(component: PolymorpheusComponent<C>): ComponentRef<C> {\n const injector = component.createInjector(this.injector);\n const ref = this.anchor().vcr.createComponent(component.component, {injector});\n\n ref.changeDetectorRef.detectChanges();\n\n return ref;\n }\n\n public addTemplate<C>(templateRef: TemplateRef<C>, context?: C): EmbeddedViewRef<C> {\n return this.anchor().vcr.createEmbeddedView(templateRef, context);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -93,9 +93,7 @@ function tuiGetElementObscures(element) {
|
|
|
93
93
|
return [];
|
|
94
94
|
}
|
|
95
95
|
const filtered = elements.filter((el) => !element.contains(el) && !el.contains(element));
|
|
96
|
-
return filtered.length === 4
|
|
97
|
-
? filtered
|
|
98
|
-
: null;
|
|
96
|
+
return filtered.length === 4 ? filtered : null;
|
|
99
97
|
}
|
|
100
98
|
|
|
101
99
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-utils-dom.mjs","sources":["../../../projects/cdk/utils/dom/contains-or-after.ts","../../../projects/cdk/utils/dom/element-checks.ts","../../../projects/cdk/utils/dom/event-checks.ts","../../../projects/cdk/utils/dom/get-actual-target.ts","../../../projects/cdk/utils/dom/get-clipboard-data-text.ts","../../../projects/cdk/utils/dom/get-document-or-shadow-root.ts","../../../projects/cdk/utils/dom/get-element-obscurers.ts","../../../projects/cdk/utils/dom/get-element-offset.ts","../../../projects/cdk/utils/dom/get-selected-text.ts","../../../projects/cdk/utils/dom/inject-element.ts","../../../projects/cdk/utils/dom/is-element-editable.ts","../../../projects/cdk/utils/dom/point-to-client-rect.ts","../../../projects/cdk/utils/dom/value.ts","../../../projects/cdk/utils/dom/window-size.ts","../../../projects/cdk/utils/dom/taiga-ui-cdk-utils-dom.ts"],"sourcesContent":["export function tuiContainsOrAfter(current: Node, node: Node): boolean {\n try {\n return (\n current.contains(node) ||\n !!(node.compareDocumentPosition(current) & Node.DOCUMENT_POSITION_PRECEDING)\n );\n } catch {\n return false;\n }\n}\n","export function tuiIsInput(element: Element): element is HTMLInputElement {\n return element.matches('input');\n}\n\nexport function tuiIsTextarea(element: Element): element is HTMLTextAreaElement {\n return element.matches('textarea');\n}\n\nexport function tuiIsTextfield(\n element: Element,\n): element is HTMLInputElement | HTMLTextAreaElement {\n return tuiIsInput(element) || tuiIsTextarea(element);\n}\n\nexport function tuiIsElement(\n node?: Element | EventTarget | Node | null,\n): node is Element {\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function tuiIsHTMLElement(node: unknown): node is HTMLElement {\n const defaultView = (node as Element | undefined)?.ownerDocument.defaultView;\n\n return !!node && !!defaultView && node instanceof defaultView.HTMLElement;\n}\n\nexport function tuiIsTextNode(node: Node): node is Text {\n return node.nodeType === Node.TEXT_NODE;\n}\n","export function tuiIsInputEvent(event: Event): event is InputEvent {\n return 'data' in event && 'inputType' in event;\n}\n","/**\n * Gets actual target from open Shadow DOM if event happened within it\n */\nexport function tuiGetActualTarget(event: Event): Node {\n return event.composedPath()[0] as Node;\n}\n","const DEFAULT_FORMAT = 'text/plain';\n\n/**\n * Gets text from data of clipboardEvent, it also works in IE and Edge browsers\n */\nexport function tuiGetClipboardDataText(\n event: ClipboardEvent,\n format: string = DEFAULT_FORMAT,\n): string {\n return 'clipboardData' in event && event.clipboardData !== null\n ? event.clipboardData.getData(format) ||\n event.clipboardData.getData(DEFAULT_FORMAT)\n : (event as any).target.ownerDocument.defaultView.clipboardData.getData('text');\n}\n","export function tuiGetDocumentOrShadowRoot(node: Node): DocumentOrShadowRoot {\n return 'getRootNode' in node && node.isConnected\n ? (node.getRootNode() as Document)\n : (node.ownerDocument as DocumentOrShadowRoot);\n}\n","import {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {tuiGetDocumentOrShadowRoot} from './get-document-or-shadow-root';\n\n/**\n * Returns array of Elements covering edges of given element or null if at least one edge middle point is visible\n *\n * CAUTION: Empty array means element if offscreen i.e. covered by no elements, rather than not covered\n * ```ts\n * function tuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null\n * ```\n */\nexport function tuiGetElementObscures(element: Element): readonly Element[] | null {\n if (!element.getBoundingClientRect) {\n return null;\n }\n\n const {left, right, top, bottom, width, height} = element.getBoundingClientRect();\n\n if (width === 0 && height === 0) {\n return null;\n }\n\n const doc = tuiGetDocumentOrShadowRoot(element);\n const horizontalMiddle = Math.round(left + width / 2);\n const verticalMiddle = Math.round(top + height / 2);\n const elements = [\n doc.elementFromPoint(horizontalMiddle, Math.round(top) + 2),\n doc.elementFromPoint(horizontalMiddle, Math.round(bottom) - 2),\n doc.elementFromPoint(Math.round(left) + 2, verticalMiddle),\n doc.elementFromPoint(Math.round(right) - 2, verticalMiddle),\n ].filter(tuiIsPresent);\n\n if (!elements.length) {\n return [];\n }\n\n const filtered = elements.filter(\n (el) => !element.contains(el) && !el.contains(element),\n );\n\n return filtered.length === 4\n ? (filtered as [Element, Element, Element, Element])\n : null;\n}\n","import {tuiIsHTMLElement} from './element-checks';\n\n/**\n * Calculates offset for an element relative to it's parent several levels above\n *\n * @param host parent element\n * @param element\n * @return object with offsetTop and offsetLeft number properties\n */\nexport function tuiGetElementOffset(\n host: Element,\n element: HTMLElement,\n): {offsetLeft: number; offsetTop: number} {\n ngDevMode && console.assert(host.contains(element), 'Host must contain element');\n\n let {offsetTop, offsetLeft, offsetParent} = element;\n\n while (tuiIsHTMLElement(offsetParent) && offsetParent !== host) {\n offsetTop += offsetParent.offsetTop;\n offsetLeft += offsetParent.offsetLeft;\n offsetParent = offsetParent.offsetParent;\n }\n\n return {offsetTop, offsetLeft};\n}\n","import {tuiIsTextfield} from './element-checks';\n\n/**\n * @description:\n * cross browser way to get selected text\n *\n * History:\n * BUG - window.getSelection() fails when text selected in a form field\n * https://bugzilla.mozilla.org/show_bug.cgi?id=85686\n */\nexport function tuiGetSelectedText({getSelection, document}: Window): string | null {\n return document.activeElement && tuiIsTextfield(document.activeElement)\n ? document.activeElement.value.slice(\n document.activeElement.selectionStart || 0,\n document.activeElement.selectionEnd || 0,\n )\n : getSelection()?.toString() || null;\n}\n","import {ElementRef, inject} from '@angular/core';\n\nexport function tuiInjectElement<T = HTMLElement>(): T {\n return inject(ElementRef).nativeElement;\n}\n","import {tuiIsTextfield} from './element-checks';\n\nexport function tuiIsElementEditable(element: HTMLElement): boolean {\n return (\n (tuiIsTextfield(element) && !element.readOnly && element.inputMode !== 'none') ||\n Boolean(element.isContentEditable as unknown as string)\n );\n}\n","export function tuiPointToClientRect(x = 0, y = 0): DOMRect {\n const rect = {\n x,\n y,\n left: x,\n right: x,\n top: y,\n bottom: y,\n width: 0,\n height: 0,\n } as const;\n\n return {\n ...rect,\n toJSON: () => rect,\n };\n}\n","import {coerceElement} from '@angular/cdk/coercion';\nimport {isPlatformBrowser} from '@angular/common';\nimport {\n DestroyRef,\n effect,\n type ElementRef,\n inject,\n INJECTOR,\n isSignal,\n PLATFORM_ID,\n type Signal,\n signal,\n untracked,\n type WritableSignal,\n} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\n\ntype WithValue = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n\nexport function tuiValue(\n input:\n | ElementRef<WithValue>\n | Signal<ElementRef<WithValue> | undefined>\n | Signal<WithValue | undefined>\n | WithValue,\n injector = inject(INJECTOR),\n): WritableSignal<string> {\n const win = injector.get<any>(WA_WINDOW);\n\n if (!win.tuiInputPatched && isPlatformBrowser(injector.get(PLATFORM_ID))) {\n win.tuiInputPatched = true;\n\n patch(win.HTMLInputElement.prototype);\n patch(win.HTMLTextAreaElement.prototype);\n patch(win.HTMLSelectElement.prototype);\n }\n\n let element = isSignal(input) ? undefined : coerceElement(input);\n let cleanup = (): void => {};\n\n const options = {injector};\n const value = signal(element?.value || '');\n const process = (el: WithValue): (() => void) => {\n const update = (): void => untracked(() => value.set(el.value));\n\n el.addEventListener('input', update, {capture: true});\n el.addEventListener('tui-input', update, {capture: true});\n\n return (): void => {\n el.removeEventListener('input', update, {capture: true});\n el.removeEventListener('tui-input', update, {capture: true});\n };\n };\n\n injector.get(DestroyRef).onDestroy(() => cleanup());\n\n if (isSignal(input)) {\n effect(() => {\n element = coerceElement(input());\n cleanup();\n\n if (element && !element.matches('select[multiple]')) {\n value.set(element.value);\n cleanup = process(element);\n }\n }, options);\n } else if (element && !element.matches('select[multiple]')) {\n cleanup = process(element);\n }\n\n effect(() => {\n const v = value();\n\n /**\n * select[multiple] elements have value of first selected option,\n * but there could be more, setting value resets other selected options\n */\n if (element?.matches('select[multiple]')) {\n return;\n }\n\n if (element?.matches(':focus') && 'selectionStart' in element) {\n const {selectionStart, selectionEnd} = element;\n\n /**\n * After programmatic updates of input's value, caret is automatically placed at the end –\n * revert to the previous position\n */\n element.value = v;\n\n try {\n element.setSelectionRange(selectionStart, selectionEnd);\n } catch {\n // Only certain types of inputs support setSelectionRange, so we need to catch the error for unsupported ones\n }\n } else if (element) {\n element.value = v;\n }\n }, options);\n\n return value;\n}\n\nfunction patch(prototype: WithValue): void {\n const {set} = Object.getOwnPropertyDescriptor(prototype, 'value')!;\n\n Object.defineProperty(prototype, 'value', {\n set(this: WithValue, detail: string) {\n const value = this.value;\n const event = new CustomEvent('tui-input', {detail, bubbles: true});\n\n set!.call(this, detail);\n\n if (value !== detail) {\n this.dispatchEvent(event);\n }\n },\n });\n}\n","import {type Signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {fromEvent, map, startWith} from 'rxjs';\n\nexport function tuiWindowSize(window: Window): Signal<DOMRect> {\n return toSignal(\n fromEvent(window, 'resize').pipe(\n startWith(null),\n map(() => {\n const width = Math.max(\n window.document.documentElement.clientWidth || 0,\n window.innerWidth || 0,\n window.visualViewport?.width || 0,\n );\n const height = Math.max(\n window.document.documentElement.clientHeight || 0,\n window.innerHeight || 0,\n window.visualViewport?.height || 0,\n );\n const rect = {\n width,\n height,\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n x: 0,\n y: 0,\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect),\n };\n }),\n ),\n {requireSync: true},\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-utils-dom.mjs","sources":["../../../projects/cdk/utils/dom/contains-or-after.ts","../../../projects/cdk/utils/dom/element-checks.ts","../../../projects/cdk/utils/dom/event-checks.ts","../../../projects/cdk/utils/dom/get-actual-target.ts","../../../projects/cdk/utils/dom/get-clipboard-data-text.ts","../../../projects/cdk/utils/dom/get-document-or-shadow-root.ts","../../../projects/cdk/utils/dom/get-element-obscurers.ts","../../../projects/cdk/utils/dom/get-element-offset.ts","../../../projects/cdk/utils/dom/get-selected-text.ts","../../../projects/cdk/utils/dom/inject-element.ts","../../../projects/cdk/utils/dom/is-element-editable.ts","../../../projects/cdk/utils/dom/point-to-client-rect.ts","../../../projects/cdk/utils/dom/value.ts","../../../projects/cdk/utils/dom/window-size.ts","../../../projects/cdk/utils/dom/taiga-ui-cdk-utils-dom.ts"],"sourcesContent":["export function tuiContainsOrAfter(current: Node, node: Node): boolean {\n try {\n return (\n current.contains(node) ||\n !!(node.compareDocumentPosition(current) & Node.DOCUMENT_POSITION_PRECEDING)\n );\n } catch {\n return false;\n }\n}\n","export function tuiIsInput(element: Element): element is HTMLInputElement {\n return element.matches('input');\n}\n\nexport function tuiIsTextarea(element: Element): element is HTMLTextAreaElement {\n return element.matches('textarea');\n}\n\nexport function tuiIsTextfield(\n element: Element,\n): element is HTMLInputElement | HTMLTextAreaElement {\n return tuiIsInput(element) || tuiIsTextarea(element);\n}\n\nexport function tuiIsElement(\n node?: Element | EventTarget | Node | null,\n): node is Element {\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function tuiIsHTMLElement(node: unknown): node is HTMLElement {\n const defaultView = (node as Element | undefined)?.ownerDocument.defaultView;\n\n return !!node && !!defaultView && node instanceof defaultView.HTMLElement;\n}\n\nexport function tuiIsTextNode(node: Node): node is Text {\n return node.nodeType === Node.TEXT_NODE;\n}\n","export function tuiIsInputEvent(event: Event): event is InputEvent {\n return 'data' in event && 'inputType' in event;\n}\n","/**\n * Gets actual target from open Shadow DOM if event happened within it\n */\nexport function tuiGetActualTarget(event: Event): Node {\n return event.composedPath()[0] as Node;\n}\n","const DEFAULT_FORMAT = 'text/plain';\n\n/**\n * Gets text from data of clipboardEvent, it also works in IE and Edge browsers\n */\nexport function tuiGetClipboardDataText(\n event: ClipboardEvent,\n format: string = DEFAULT_FORMAT,\n): string {\n return 'clipboardData' in event && event.clipboardData !== null\n ? event.clipboardData.getData(format) ||\n event.clipboardData.getData(DEFAULT_FORMAT)\n : (event as any).target.ownerDocument.defaultView.clipboardData.getData('text');\n}\n","export function tuiGetDocumentOrShadowRoot(node: Node): DocumentOrShadowRoot {\n return 'getRootNode' in node && node.isConnected\n ? (node.getRootNode() as Document)\n : (node.ownerDocument as DocumentOrShadowRoot);\n}\n","import {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {tuiGetDocumentOrShadowRoot} from './get-document-or-shadow-root';\n\n/**\n * Returns array of Elements covering edges of given element or null if at least one edge middle point is visible\n *\n * CAUTION: Empty array means element if offscreen i.e. covered by no elements, rather than not covered\n * ```ts\n * function tuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null\n * ```\n */\nexport function tuiGetElementObscures(element: Element): readonly Element[] | null {\n if (!element.getBoundingClientRect) {\n return null;\n }\n\n const {left, right, top, bottom, width, height} = element.getBoundingClientRect();\n\n if (width === 0 && height === 0) {\n return null;\n }\n\n const doc = tuiGetDocumentOrShadowRoot(element);\n const horizontalMiddle = Math.round(left + width / 2);\n const verticalMiddle = Math.round(top + height / 2);\n const elements = [\n doc.elementFromPoint(horizontalMiddle, Math.round(top) + 2),\n doc.elementFromPoint(horizontalMiddle, Math.round(bottom) - 2),\n doc.elementFromPoint(Math.round(left) + 2, verticalMiddle),\n doc.elementFromPoint(Math.round(right) - 2, verticalMiddle),\n ].filter(tuiIsPresent);\n\n if (!elements.length) {\n return [];\n }\n\n const filtered = elements.filter(\n (el) => !element.contains(el) && !el.contains(element),\n );\n\n return filtered.length === 4 ? filtered : null;\n}\n","import {tuiIsHTMLElement} from './element-checks';\n\n/**\n * Calculates offset for an element relative to it's parent several levels above\n *\n * @param host parent element\n * @param element\n * @return object with offsetTop and offsetLeft number properties\n */\nexport function tuiGetElementOffset(\n host: Element,\n element: HTMLElement,\n): {offsetLeft: number; offsetTop: number} {\n ngDevMode && console.assert(host.contains(element), 'Host must contain element');\n\n let {offsetTop, offsetLeft, offsetParent} = element;\n\n while (tuiIsHTMLElement(offsetParent) && offsetParent !== host) {\n offsetTop += offsetParent.offsetTop;\n offsetLeft += offsetParent.offsetLeft;\n offsetParent = offsetParent.offsetParent;\n }\n\n return {offsetTop, offsetLeft};\n}\n","import {tuiIsTextfield} from './element-checks';\n\n/**\n * @description:\n * cross browser way to get selected text\n *\n * History:\n * BUG - window.getSelection() fails when text selected in a form field\n * https://bugzilla.mozilla.org/show_bug.cgi?id=85686\n */\nexport function tuiGetSelectedText({getSelection, document}: Window): string | null {\n return document.activeElement && tuiIsTextfield(document.activeElement)\n ? document.activeElement.value.slice(\n document.activeElement.selectionStart || 0,\n document.activeElement.selectionEnd || 0,\n )\n : getSelection()?.toString() || null;\n}\n","import {ElementRef, inject} from '@angular/core';\n\nexport function tuiInjectElement<T = HTMLElement>(): T {\n return inject(ElementRef).nativeElement;\n}\n","import {tuiIsTextfield} from './element-checks';\n\nexport function tuiIsElementEditable(element: HTMLElement): boolean {\n return (\n (tuiIsTextfield(element) && !element.readOnly && element.inputMode !== 'none') ||\n Boolean(element.isContentEditable as unknown as string)\n );\n}\n","export function tuiPointToClientRect(x = 0, y = 0): DOMRect {\n const rect = {\n x,\n y,\n left: x,\n right: x,\n top: y,\n bottom: y,\n width: 0,\n height: 0,\n } as const;\n\n return {\n ...rect,\n toJSON: () => rect,\n };\n}\n","import {coerceElement} from '@angular/cdk/coercion';\nimport {isPlatformBrowser} from '@angular/common';\nimport {\n DestroyRef,\n effect,\n type ElementRef,\n inject,\n INJECTOR,\n isSignal,\n PLATFORM_ID,\n type Signal,\n signal,\n untracked,\n type WritableSignal,\n} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\n\ntype WithValue = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n\nexport function tuiValue(\n input:\n | ElementRef<WithValue>\n | Signal<ElementRef<WithValue> | undefined>\n | Signal<WithValue | undefined>\n | WithValue,\n injector = inject(INJECTOR),\n): WritableSignal<string> {\n const win = injector.get<any>(WA_WINDOW);\n\n if (!win.tuiInputPatched && isPlatformBrowser(injector.get(PLATFORM_ID))) {\n win.tuiInputPatched = true;\n\n patch(win.HTMLInputElement.prototype);\n patch(win.HTMLTextAreaElement.prototype);\n patch(win.HTMLSelectElement.prototype);\n }\n\n let element = isSignal(input) ? undefined : coerceElement(input);\n let cleanup = (): void => {};\n\n const options = {injector};\n const value = signal(element?.value || '');\n const process = (el: WithValue): (() => void) => {\n const update = (): void => untracked(() => value.set(el.value));\n\n el.addEventListener('input', update, {capture: true});\n el.addEventListener('tui-input', update, {capture: true});\n\n return (): void => {\n el.removeEventListener('input', update, {capture: true});\n el.removeEventListener('tui-input', update, {capture: true});\n };\n };\n\n injector.get(DestroyRef).onDestroy(() => cleanup());\n\n if (isSignal(input)) {\n effect(() => {\n element = coerceElement(input());\n cleanup();\n\n if (element && !element.matches('select[multiple]')) {\n value.set(element.value);\n cleanup = process(element);\n }\n }, options);\n } else if (element && !element.matches('select[multiple]')) {\n cleanup = process(element);\n }\n\n effect(() => {\n const v = value();\n\n /**\n * select[multiple] elements have value of first selected option,\n * but there could be more, setting value resets other selected options\n */\n if (element?.matches('select[multiple]')) {\n return;\n }\n\n if (element?.matches(':focus') && 'selectionStart' in element) {\n const {selectionStart, selectionEnd} = element;\n\n /**\n * After programmatic updates of input's value, caret is automatically placed at the end –\n * revert to the previous position\n */\n element.value = v;\n\n try {\n element.setSelectionRange(selectionStart, selectionEnd);\n } catch {\n // Only certain types of inputs support setSelectionRange, so we need to catch the error for unsupported ones\n }\n } else if (element) {\n element.value = v;\n }\n }, options);\n\n return value;\n}\n\nfunction patch(prototype: WithValue): void {\n const {set} = Object.getOwnPropertyDescriptor(prototype, 'value')!;\n\n Object.defineProperty(prototype, 'value', {\n set(this: WithValue, detail: string) {\n const value = this.value;\n const event = new CustomEvent('tui-input', {detail, bubbles: true});\n\n set!.call(this, detail);\n\n if (value !== detail) {\n this.dispatchEvent(event);\n }\n },\n });\n}\n","import {type Signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {fromEvent, map, startWith} from 'rxjs';\n\nexport function tuiWindowSize(window: Window): Signal<DOMRect> {\n return toSignal(\n fromEvent(window, 'resize').pipe(\n startWith(null),\n map(() => {\n const width = Math.max(\n window.document.documentElement.clientWidth || 0,\n window.innerWidth || 0,\n window.visualViewport?.width || 0,\n );\n const height = Math.max(\n window.document.documentElement.clientHeight || 0,\n window.innerHeight || 0,\n window.visualViewport?.height || 0,\n );\n const rect = {\n width,\n height,\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n x: 0,\n y: 0,\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect),\n };\n }),\n ),\n {requireSync: true},\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -113,14 +113,18 @@ function tuiRoundWith({ value, precision, method, }) {
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
/**
|
|
117
|
-
* Calculates sum of any number of passed arguments with proper floating point precision
|
|
118
|
-
*/
|
|
119
116
|
function tuiSum(...args) {
|
|
120
|
-
|
|
117
|
+
if (args.length === 0) {
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
120
|
+
if (args.every((arg) => typeof arg === 'bigint')) {
|
|
121
|
+
return args.reduce((acc, n) => acc + n, BigInt(0));
|
|
122
|
+
}
|
|
123
|
+
const numbers = args.map((arg) => Number(arg));
|
|
124
|
+
const decimal = numbers.map((n) => (n.toString().split('.')[1] ?? '').length);
|
|
121
125
|
const maxDecimal = Math.max(0, ...decimal);
|
|
122
126
|
const precision = 10 ** maxDecimal;
|
|
123
|
-
const sumInt =
|
|
127
|
+
const sumInt = numbers.reduce((acc, n) => acc + Math.round(n * precision), 0);
|
|
124
128
|
return sumInt / precision;
|
|
125
129
|
}
|
|
126
130
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-utils-math.mjs","sources":["../../../projects/cdk/utils/math/clamp.ts","../../../projects/cdk/utils/math/in-range.ts","../../../projects/cdk/utils/math/normalize-to-int-number.ts","../../../projects/cdk/utils/math/quantize.ts","../../../projects/cdk/utils/math/round.ts","../../../projects/cdk/utils/math/round-with.ts","../../../projects/cdk/utils/math/sum.ts","../../../projects/cdk/utils/math/to-int.ts","../../../projects/cdk/utils/math/taiga-ui-cdk-utils-math.ts"],"sourcesContent":["/**\n * Clamps a value between two inclusive limits\n */\nexport function tuiClamp<T extends bigint | number>(\n value: T,\n minimum: T | null,\n maximum?: T | null,\n): T {\n ngDevMode && console.assert(!Number.isNaN(value));\n ngDevMode && console.assert(!Number.isNaN(minimum));\n ngDevMode && console.assert(!Number.isNaN(maximum));\n ngDevMode && maximum && minimum && console.assert(maximum >= minimum);\n\n const minClamped = max(minimum ?? value, value);\n\n return min(maximum ?? minClamped, minClamped);\n}\n\nfunction min<T extends bigint | number>(x: T, ...values: T[]): T {\n return values.reduce((a, b) => (a < b ? a : b), x);\n}\n\nfunction max<T extends bigint | number>(x: T, ...values: T[]): T {\n return values.reduce((a, b) => (a > b ? a : b), x);\n}\n","export function tuiInRange(\n value: number,\n fromInclude: number,\n toExclude: number,\n): boolean {\n ngDevMode && console.assert(!Number.isNaN(value));\n ngDevMode && console.assert(!Number.isNaN(fromInclude));\n ngDevMode && console.assert(!Number.isNaN(toExclude));\n ngDevMode && console.assert(fromInclude < toExclude);\n\n return value >= fromInclude && value < toExclude;\n}\n","/**\n * Normalizes any number to an integer within inclusive range\n *\n * @param value\n * @param min lower inclusive integer\n * @param max upper inclusive integer\n * @return an integer between min and max inclusive\n */\nexport function tuiNormalizeToIntNumber(value: number, min: number, max: number): number {\n ngDevMode && console.assert(Number.isInteger(min));\n ngDevMode && console.assert(Number.isInteger(max));\n ngDevMode && console.assert(min <= max);\n\n if (Number.isNaN(value) || value <= min) {\n return min;\n }\n\n if (value >= max) {\n return max;\n }\n\n return Math.round(value);\n}\n","/**\n * Rounds a number to the closest value in a fixed discrete series\n *\n * @param value\n * @param quantum series step\n */\nexport function tuiQuantize(value: number, quantum: number): number {\n ngDevMode && console.assert(Number.isFinite(value));\n ngDevMode && console.assert(Number.isFinite(quantum));\n ngDevMode && console.assert(quantum > 0);\n\n const remainder = value % quantum;\n\n return remainder < quantum / 2 ? value - remainder : value + quantum - remainder;\n}\n","const MAX_PRECISION = 292;\n\n/**\n * Rounding number to the set precision\n *\n * @param value\n * @param precision number of digits in a float part\n * @param func rounding function (round, floor, ceil)\n */\nfunction calculate(\n value: number,\n precision: number,\n func: (x: number) => number,\n): number {\n if (value === Infinity) {\n return value;\n }\n\n ngDevMode && console.assert(!Number.isNaN(value), 'Value must be number');\n ngDevMode && console.assert(Number.isInteger(precision), 'Precision must be integer');\n\n precision = Math.min(precision, MAX_PRECISION);\n\n const [significand, exponent = ''] = `${value}`.split('e');\n const roundedInt = func(Number(`${significand}e${Number(exponent) + precision}`));\n\n /**\n * TODO: use BigInt after bumping Safari to 14+\n */\n ngDevMode &&\n console.assert(\n Number.isSafeInteger(roundedInt),\n 'Impossible to correctly round such a large number',\n );\n\n const processedPair = `${roundedInt}e`.split('e');\n\n return Number(`${processedPair[0]}e${Number(processedPair[1]) - precision}`);\n}\n\nexport function tuiRound(value: number, precision = 0): number {\n return calculate(value, precision, Math.round);\n}\n\nexport function tuiCeil(value: number, precision = 0): number {\n return calculate(value, precision, Math.ceil);\n}\n\nexport function tuiFloor(value: number, precision = 0): number {\n return calculate(value, precision, Math.floor);\n}\n\nexport function tuiTrunc(value: number, precision = 0): number {\n return calculate(value, precision, Math.trunc);\n}\n\nexport function tuiIsSafeToRound(value: number, precision = 0): boolean {\n return Number.isSafeInteger(Math.trunc(value * 10 ** precision));\n}\n","import {type TuiRounding} from '@taiga-ui/cdk/types';\n\nimport {tuiCeil, tuiFloor, tuiRound, tuiTrunc} from './round';\n\nexport function tuiRoundWith({\n value,\n precision,\n method,\n}: {\n method: TuiRounding;\n precision: number;\n value: number;\n}): number {\n switch (method) {\n case 'ceil':\n return tuiCeil(value, precision);\n case 'floor':\n return tuiFloor(value, precision);\n case 'round':\n return tuiRound(value, precision);\n default:\n return tuiTrunc(value, precision);\n }\n}\n","/**\n * Calculates sum of any number of passed arguments with proper floating point precision\n */\nexport function tuiSum(...args: number[]): number {\n const decimal = args.map((double) => (double.toString().split('.')[1] ?? '').length);\n const maxDecimal = Math.max(0, ...decimal);\n const precision = 10 ** maxDecimal;\n const sumInt = args.reduce((acc, n) => acc + Math.round(n * precision), 0);\n\n return sumInt / precision;\n}\n","export function tuiToInt(bool: boolean): 0 | 1 {\n return bool ? 1 : 0;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;AAEG;SACa,QAAQ,CACpB,KAAQ,EACR,OAAiB,EACjB,OAAkB,EAAA;AAElB,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACnD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACnD,IAAA,SAAS,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC;IAErE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,EAAE,KAAK,CAAC;IAE/C,OAAO,GAAG,CAAC,OAAO,IAAI,UAAU,EAAE,UAAU,CAAC;AACjD;AAEA,SAAS,GAAG,CAA4B,CAAI,EAAE,GAAG,MAAW,EAAA;IACxD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD;AAEA,SAAS,GAAG,CAA4B,CAAI,EAAE,GAAG,MAAW,EAAA;IACxD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD;;SCxBgB,UAAU,CACtB,KAAa,EACb,WAAmB,EACnB,SAAiB,EAAA;AAEjB,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACvD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACrD,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;AAEpD,IAAA,OAAO,KAAK,IAAI,WAAW,IAAI,KAAK,GAAG,SAAS;AACpD;;ACXA;;;;;;;AAOG;SACa,uBAAuB,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAA;AAC3E,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAClD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAClD,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC;IAEvC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE;AACrC,QAAA,OAAO,GAAG;IACd;AAEA,IAAA,IAAI,KAAK,IAAI,GAAG,EAAE;AACd,QAAA,OAAO,GAAG;IACd;AAEA,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5B;;ACtBA;;;;;AAKG;AACG,SAAU,WAAW,CAAC,KAAa,EAAE,OAAe,EAAA;AACtD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrD,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;AAExC,IAAA,MAAM,SAAS,GAAG,KAAK,GAAG,OAAO;AAEjC,IAAA,OAAO,SAAS,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS;AACpF;;ACdA,MAAM,aAAa,GAAG,GAAG;AAEzB;;;;;;AAMG;AACH,SAAS,SAAS,CACd,KAAa,EACb,SAAiB,EACjB,IAA2B,EAAA;AAE3B,IAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACpB,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,sBAAsB,CAAC;AACzE,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC;IAErF,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC;AAE9C,IAAA,MAAM,CAAC,WAAW,EAAE,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAA,EAAG,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1D,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,CAAA,CAAA,EAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAA,CAAE,CAAC,CAAC;AAEjF;;AAEG;IACH,SAAS;AACL,QAAA,OAAO,CAAC,MAAM,CACV,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAChC,mDAAmD,CACtD;IAEL,MAAM,aAAa,GAAG,CAAA,EAAG,UAAU,CAAA,CAAA,CAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAEjD,IAAA,OAAO,MAAM,CAAC,CAAA,EAAG,aAAa,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA,CAAE,CAAC;AAChF;SAEgB,QAAQ,CAAC,KAAa,EAAE,SAAS,GAAG,CAAC,EAAA;IACjD,OAAO,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;AAClD;SAEgB,OAAO,CAAC,KAAa,EAAE,SAAS,GAAG,CAAC,EAAA;IAChD,OAAO,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC;AACjD;SAEgB,QAAQ,CAAC,KAAa,EAAE,SAAS,GAAG,CAAC,EAAA;IACjD,OAAO,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;AAClD;SAEgB,QAAQ,CAAC,KAAa,EAAE,SAAS,GAAG,CAAC,EAAA;IACjD,OAAO,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;AAClD;SAEgB,gBAAgB,CAAC,KAAa,EAAE,SAAS,GAAG,CAAC,EAAA;AACzD,IAAA,OAAO,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC;AACpE;;ACtDM,SAAU,YAAY,CAAC,EACzB,KAAK,EACL,SAAS,EACT,MAAM,GAKT,EAAA;IACG,QAAQ,MAAM;AACV,QAAA,KAAK,MAAM;AACP,YAAA,OAAO,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;AACpC,QAAA,KAAK,OAAO;AACR,YAAA,OAAO,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;AACrC,QAAA,KAAK,OAAO;AACR,YAAA,OAAO,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;AACrC,QAAA;AACI,YAAA,OAAO,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;;AAE7C;;ACvBA;;AAEG;AACG,SAAU,MAAM,CAAC,GAAG,IAAc,EAAA;AACpC,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC;IACpF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC;AAC1C,IAAA,MAAM,SAAS,GAAG,EAAE,IAAI,UAAU;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAE1E,OAAO,MAAM,GAAG,SAAS;AAC7B;;ACVM,SAAU,QAAQ,CAAC,IAAa,EAAA;IAClC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC;AACvB;;ACFA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-utils-math.mjs","sources":["../../../projects/cdk/utils/math/clamp.ts","../../../projects/cdk/utils/math/in-range.ts","../../../projects/cdk/utils/math/normalize-to-int-number.ts","../../../projects/cdk/utils/math/quantize.ts","../../../projects/cdk/utils/math/round.ts","../../../projects/cdk/utils/math/round-with.ts","../../../projects/cdk/utils/math/sum.ts","../../../projects/cdk/utils/math/to-int.ts","../../../projects/cdk/utils/math/taiga-ui-cdk-utils-math.ts"],"sourcesContent":["/**\n * Clamps a value between two inclusive limits\n */\nexport function tuiClamp<T extends bigint | number>(\n value: T,\n minimum: T | null,\n maximum?: T | null,\n): T {\n ngDevMode && console.assert(!Number.isNaN(value));\n ngDevMode && console.assert(!Number.isNaN(minimum));\n ngDevMode && console.assert(!Number.isNaN(maximum));\n ngDevMode && maximum && minimum && console.assert(maximum >= minimum);\n\n const minClamped = max(minimum ?? value, value);\n\n return min(maximum ?? minClamped, minClamped);\n}\n\nfunction min<T extends bigint | number>(x: T, ...values: T[]): T {\n return values.reduce((a, b) => (a < b ? a : b), x);\n}\n\nfunction max<T extends bigint | number>(x: T, ...values: T[]): T {\n return values.reduce((a, b) => (a > b ? a : b), x);\n}\n","export function tuiInRange(\n value: number,\n fromInclude: number,\n toExclude: number,\n): boolean {\n ngDevMode && console.assert(!Number.isNaN(value));\n ngDevMode && console.assert(!Number.isNaN(fromInclude));\n ngDevMode && console.assert(!Number.isNaN(toExclude));\n ngDevMode && console.assert(fromInclude < toExclude);\n\n return value >= fromInclude && value < toExclude;\n}\n","/**\n * Normalizes any number to an integer within inclusive range\n *\n * @param value\n * @param min lower inclusive integer\n * @param max upper inclusive integer\n * @return an integer between min and max inclusive\n */\nexport function tuiNormalizeToIntNumber(value: number, min: number, max: number): number {\n ngDevMode && console.assert(Number.isInteger(min));\n ngDevMode && console.assert(Number.isInteger(max));\n ngDevMode && console.assert(min <= max);\n\n if (Number.isNaN(value) || value <= min) {\n return min;\n }\n\n if (value >= max) {\n return max;\n }\n\n return Math.round(value);\n}\n","/**\n * Rounds a number to the closest value in a fixed discrete series\n *\n * @param value\n * @param quantum series step\n */\nexport function tuiQuantize(value: number, quantum: number): number {\n ngDevMode && console.assert(Number.isFinite(value));\n ngDevMode && console.assert(Number.isFinite(quantum));\n ngDevMode && console.assert(quantum > 0);\n\n const remainder = value % quantum;\n\n return remainder < quantum / 2 ? value - remainder : value + quantum - remainder;\n}\n","const MAX_PRECISION = 292;\n\n/**\n * Rounding number to the set precision\n *\n * @param value\n * @param precision number of digits in a float part\n * @param func rounding function (round, floor, ceil)\n */\nfunction calculate(\n value: number,\n precision: number,\n func: (x: number) => number,\n): number {\n if (value === Infinity) {\n return value;\n }\n\n ngDevMode && console.assert(!Number.isNaN(value), 'Value must be number');\n ngDevMode && console.assert(Number.isInteger(precision), 'Precision must be integer');\n\n precision = Math.min(precision, MAX_PRECISION);\n\n const [significand, exponent = ''] = `${value}`.split('e');\n const roundedInt = func(Number(`${significand}e${Number(exponent) + precision}`));\n\n /**\n * TODO: use BigInt after bumping Safari to 14+\n */\n ngDevMode &&\n console.assert(\n Number.isSafeInteger(roundedInt),\n 'Impossible to correctly round such a large number',\n );\n\n const processedPair = `${roundedInt}e`.split('e');\n\n return Number(`${processedPair[0]}e${Number(processedPair[1]) - precision}`);\n}\n\nexport function tuiRound(value: number, precision = 0): number {\n return calculate(value, precision, Math.round);\n}\n\nexport function tuiCeil(value: number, precision = 0): number {\n return calculate(value, precision, Math.ceil);\n}\n\nexport function tuiFloor(value: number, precision = 0): number {\n return calculate(value, precision, Math.floor);\n}\n\nexport function tuiTrunc(value: number, precision = 0): number {\n return calculate(value, precision, Math.trunc);\n}\n\nexport function tuiIsSafeToRound(value: number, precision = 0): boolean {\n return Number.isSafeInteger(Math.trunc(value * 10 ** precision));\n}\n","import {type TuiRounding} from '@taiga-ui/cdk/types';\n\nimport {tuiCeil, tuiFloor, tuiRound, tuiTrunc} from './round';\n\nexport function tuiRoundWith({\n value,\n precision,\n method,\n}: {\n method: TuiRounding;\n precision: number;\n value: number;\n}): number {\n switch (method) {\n case 'ceil':\n return tuiCeil(value, precision);\n case 'floor':\n return tuiFloor(value, precision);\n case 'round':\n return tuiRound(value, precision);\n default:\n return tuiTrunc(value, precision);\n }\n}\n","/**\n * Calculates sum of any number of passed arguments with proper floating point precision\n */\nexport function tuiSum(): 0;\nexport function tuiSum(...args: number[]): number;\nexport function tuiSum(...args: bigint[]): bigint;\nexport function tuiSum(...args: ReadonlyArray<bigint | number>): number;\nexport function tuiSum(...args: ReadonlyArray<bigint | number>): bigint | number {\n if (args.length === 0) {\n return 0;\n }\n\n if (args.every((arg) => typeof arg === 'bigint')) {\n return args.reduce<bigint>((acc, n) => acc + n, BigInt(0));\n }\n\n const numbers = args.map((arg) => Number(arg));\n const decimal = numbers.map((n) => (n.toString().split('.')[1] ?? '').length);\n const maxDecimal = Math.max(0, ...decimal);\n const precision = 10 ** maxDecimal;\n const sumInt = numbers.reduce((acc, n) => acc + Math.round(n * precision), 0);\n\n return sumInt / precision;\n}\n","export function tuiToInt(bool: boolean): 0 | 1 {\n return bool ? 1 : 0;\n}\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 +1 @@
|
|
|
1
|
-
export declare const TAIGA_VERSION = "^5.
|
|
1
|
+
export declare const TAIGA_VERSION = "^5.5.0";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type UpdateRecorder } from '@angular-devkit/schematics';
|
|
2
|
+
import { type DefaultTreeAdapterTypes } from 'parse5';
|
|
3
|
+
type Element = DefaultTreeAdapterTypes.Element;
|
|
4
|
+
type Attribute = Element['attrs'][number];
|
|
5
|
+
export declare function getControlStateAttrs(element: Element): Attribute[];
|
|
6
|
+
export declare function removeControlStateAttrs(recorder: UpdateRecorder, templateOffset: number, element: Element, template: string, attrs?: Attribute[]): void;
|
|
7
|
+
export declare function stringifyControlStateAttrs(attrs: Attribute[]): string;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getControlStateAttrs = getControlStateAttrs;
|
|
4
|
+
exports.removeControlStateAttrs = removeControlStateAttrs;
|
|
5
|
+
exports.stringifyControlStateAttrs = stringifyControlStateAttrs;
|
|
6
|
+
const CONTROL_STATE_ATTR_NAMES_LOWER = new Set([
|
|
7
|
+
'[disabled]'.toLowerCase(),
|
|
8
|
+
'[readOnly]'.toLowerCase(),
|
|
9
|
+
'disabled'.toLowerCase(),
|
|
10
|
+
'readOnly'.toLowerCase(),
|
|
11
|
+
]);
|
|
12
|
+
const CANONICAL_NAME_BY_LOWER = new Map([
|
|
13
|
+
['[disabled]'.toLowerCase(), '[disabled]'],
|
|
14
|
+
['[readOnly]'.toLowerCase(), '[readOnly]'],
|
|
15
|
+
['disabled'.toLowerCase(), 'disabled'],
|
|
16
|
+
['readOnly'.toLowerCase(), 'readOnly'],
|
|
17
|
+
]);
|
|
18
|
+
function getControlStateAttrs(element) {
|
|
19
|
+
return element.attrs.filter((attr) => CONTROL_STATE_ATTR_NAMES_LOWER.has(attr.name.toLowerCase()));
|
|
20
|
+
}
|
|
21
|
+
function removeControlStateAttrs(recorder, templateOffset, element, template, attrs = getControlStateAttrs(element)) {
|
|
22
|
+
var _a, _b, _c;
|
|
23
|
+
for (const attr of attrs) {
|
|
24
|
+
const { startOffset = 0, endOffset = 0 } = (_c = (_b = (_a = element.sourceCodeLocation) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b[attr.name]) !== null && _c !== void 0 ? _c : {};
|
|
25
|
+
const lineStart = template.lastIndexOf('\n', startOffset) + 1;
|
|
26
|
+
const lineEnd = template.indexOf('\n', endOffset);
|
|
27
|
+
const attrText = template.slice(startOffset, endOffset);
|
|
28
|
+
const lineText = lineEnd === -1 ? '' : template.slice(lineStart, lineEnd);
|
|
29
|
+
if (lineText.trim() === attrText.trim() && lineEnd !== -1) {
|
|
30
|
+
recorder.remove(templateOffset + lineStart, lineEnd - lineStart + 1);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
recorder.remove(templateOffset + startOffset - 1, endOffset - startOffset + 1);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function stringifyControlStateAttrs(attrs) {
|
|
37
|
+
return attrs
|
|
38
|
+
.map(({ name, value }) => {
|
|
39
|
+
var _a;
|
|
40
|
+
const normalized = (_a = CANONICAL_NAME_BY_LOWER.get(name.toLowerCase())) !== null && _a !== void 0 ? _a : name;
|
|
41
|
+
const token = value ? `${normalized}="${value}"` : normalized;
|
|
42
|
+
return ` ${token}`;
|
|
43
|
+
})
|
|
44
|
+
.join('');
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=control-state-attrs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-state-attrs.js","sourceRoot":"","sources":["../../../../../../projects/cdk/schematics/ng-update/utils/templates/control-state-attrs.ts"],"names":[],"mappings":";;AAqBA,oDAIC;AAED,0DAsBC;AAED,gEASC;AArDD,MAAM,8BAA8B,GAAwB,IAAI,GAAG,CAAC;IAChE,YAAY,CAAC,WAAW,EAAE;IAC1B,YAAY,CAAC,WAAW,EAAE;IAC1B,UAAU,CAAC,WAAW,EAAE;IACxB,UAAU,CAAC,WAAW,EAAE;CAC3B,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAgC,IAAI,GAAG,CAAC;IACjE,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC;IAC1C,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC;IAC1C,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC;IACtC,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC;CACzC,CAAC,CAAC;AAEH,SAAgB,oBAAoB,CAAC,OAAgB;IACjD,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACjC,8BAA8B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAC9D,CAAC;AACN,CAAC;AAED,SAAgB,uBAAuB,CACnC,QAAwB,EACxB,cAAsB,EACtB,OAAgB,EAChB,QAAgB,EAChB,QAAqB,oBAAoB,CAAC,OAAO,CAAC;;IAElD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,EAAC,WAAW,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAC,GAClC,MAAA,MAAA,MAAA,OAAO,CAAC,kBAAkB,0CAAE,KAAK,0CAAG,IAAI,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE1E,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACxD,QAAQ,CAAC,MAAM,CAAC,cAAc,GAAG,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;YACrE,SAAS;QACb,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,cAAc,GAAG,WAAW,GAAG,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;IACnF,CAAC;AACL,CAAC;AAED,SAAgB,0BAA0B,CAAC,KAAkB;IACzD,OAAO,KAAK;SACP,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,EAAE;;QACnB,MAAM,UAAU,GAAG,MAAA,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,mCAAI,IAAI,CAAC;QAC3E,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;QAE9D,OAAO,IAAI,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -17,10 +17,8 @@ function hasChild(element, tagName) {
|
|
|
17
17
|
return false;
|
|
18
18
|
}
|
|
19
19
|
for (const child of element.childNodes) {
|
|
20
|
-
if (child.tagName === tagName
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
if (hasChild(child, tagName)) {
|
|
20
|
+
if (child.tagName === tagName ||
|
|
21
|
+
hasChild(child, tagName)) {
|
|
24
22
|
return true;
|
|
25
23
|
}
|
|
26
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-traversal.js","sourceRoot":"","sources":["../../../../../../projects/cdk/schematics/ng-update/utils/templates/dom-traversal.ts"],"names":[],"mappings":";;AAIA,kCAYC;AAED,
|
|
1
|
+
{"version":3,"file":"dom-traversal.js","sourceRoot":"","sources":["../../../../../../projects/cdk/schematics/ng-update/utils/templates/dom-traversal.ts"],"names":[],"mappings":";;AAIA,kCAYC;AAED,4BAeC;AA7BD,SAAgB,WAAW,CAAC,OAAgB,EAAE,OAAe;IACzD,IAAI,OAAO,GAAG,OAAO,CAAC,UAAiC,CAAC;IAExD,OAAO,OAAO,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,GAAG,OAAO,CAAC,UAAiC,CAAC;IACxD,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,QAAQ,CAAC,OAAgB,EAAE,OAAe;IACtD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACrC,IACK,KAAiB,CAAC,OAAO,KAAK,OAAO;YACtC,QAAQ,CAAC,KAAgB,EAAE,OAAO,CAAC,EACrC,CAAC;YACC,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./control-state-attrs"), exports);
|
|
4
5
|
tslib_1.__exportStar(require("./dom-traversal"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./remove-inputs"), exports);
|
|
6
7
|
tslib_1.__exportStar(require("./replace-attr-values"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../projects/cdk/schematics/ng-update/utils/templates/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,0DAAgC;AAChC,gEAAsC;AACtC,0DAAgC;AAChC,wDAA8B;AAC9B,yDAA+B;AAC/B,8DAAoC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../projects/cdk/schematics/ng-update/utils/templates/index.ts"],"names":[],"mappings":";;;AAAA,gEAAsC;AACtC,0DAAgC;AAChC,0DAAgC;AAChC,gEAAsC;AACtC,0DAAgC;AAChC,wDAA8B;AAC9B,yDAA+B;AAC/B,8DAAoC"}
|
|
@@ -43,10 +43,10 @@ function migrateDocI18nTokens(tree, options) {
|
|
|
43
43
|
continue;
|
|
44
44
|
}
|
|
45
45
|
const parent = ref.getParent();
|
|
46
|
-
if (!parent ||
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
if (!parent ||
|
|
47
|
+
ng_morph_1.Node.isImportSpecifier(parent) ||
|
|
48
|
+
!ng_morph_1.Node.isPropertyAssignment(parent) ||
|
|
49
|
+
parent.getName() !== 'provide') {
|
|
50
50
|
continue;
|
|
51
51
|
}
|
|
52
52
|
const objectLiteral = parent.getParent();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-doc-i18n-tokens.js","sourceRoot":"","sources":["../../../../../../projects/cdk/schematics/ng-update/v5/steps/migrate-doc-i18n-tokens.ts"],"names":[],"mappings":";;AAmCA,
|
|
1
|
+
{"version":3,"file":"migrate-doc-i18n-tokens.js","sourceRoot":"","sources":["../../../../../../projects/cdk/schematics/ng-update/v5/steps/migrate-doc-i18n-tokens.ts"],"names":[],"mappings":";;AAmCA,oDA8DC;AAhGD,uCAAkF;AAElF,8DAA2D;AAE3D,wEAAiE;AACjE,4DAA6D;AAC7D,4FAAoF;AACpF,8DAAwD;AAExD,MAAM,YAAY,GAAG,eAAe,CAAC;AACrC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAExB,MAAM,eAAe,GAAG;IACpB,oBAAoB;IACpB,sBAAsB;IACtB,mBAAmB;IACnB,qBAAqB;IACrB,uBAAuB;IACvB,kBAAkB;IAClB,0BAA0B;CACpB,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,SAAgB,oBAAoB,CAAC,IAAU,EAAE,OAAkB;IAC/D,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACxB,IAAA,qBAAO,EAAC,oEAAoE,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,wBAAa,EAAC,IAAI,EAAE,IAAA,0BAAW,GAAE,EAAE,yBAAY,CAAC,CAAC;IAEjE,IAAA,2BAAgB,EAAC,OAAO,CAAC,CAAC;IAE1B,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAA,sDAAwB,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAExE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC;gBACrB,SAAS;YACb,CAAC;YAED,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YAE/B,IACI,CAAC,MAAM;gBACP,eAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBAC9B,CAAC,eAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;gBAClC,MAAM,CAAC,OAAO,EAAE,KAAK,SAAS,EAChC,CAAC;gBACC,SAAS;YACb,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAEzC,IAAI,CAAC,aAAa,IAAI,CAAC,eAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE,CAAC;gBACnE,SAAS;YACb,CAAC;YAED,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAE3D,IAAI,CAAC,YAAY,IAAI,CAAC,eAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC5D,SAAS;YACb,CAAC;YAED,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;YAElD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,SAAS;YACb,CAAC;YAED,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;YAEvC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,SAAS;YACb,CAAC;YAED,YAAY,CAAC,cAAc,CAAC,GAAG,MAAM,IAAI,QAAQ,GAAG,CAAC,CAAC;YACtD,IAAA,mCAAe,EAAC,GAAG,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IAED,IAAA,4BAAiB,GAAE,CAAC;IAEpB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACxB,IAAA,sBAAQ,EAAC,2CAA2C,CAAC,CAAC;IAC1D,CAAC;AACL,CAAC"}
|
|
@@ -5,7 +5,7 @@ const ng_morph_1 = require("ng-morph");
|
|
|
5
5
|
const constants_1 = require("../../../constants");
|
|
6
6
|
const add_unique_import_1 = require("../../../utils/add-unique-import");
|
|
7
7
|
const get_component_templates_1 = require("../../../utils/templates/get-component-templates");
|
|
8
|
-
const FILTER_BY_INPUT_PIPE_RE = /\|\s*tuiFilterByInput:\s*(\w+)
|
|
8
|
+
const FILTER_BY_INPUT_PIPE_RE = /\|\s*tuiFilterByInput:\s*(\w+)(\s*\(([^)]*)\))?/g;
|
|
9
9
|
const TUI_STRING_MATCHER_GENERIC_RE = /TuiStringMatcher<([^>]+)>/;
|
|
10
10
|
function migrateFilterByInput(tree, _options) {
|
|
11
11
|
for (const resource of (0, get_component_templates_1.getComponentTemplates)(constants_1.ALL_TS_FILES)) {
|
|
@@ -21,8 +21,8 @@ function migrateResource(resource, tree) {
|
|
|
21
21
|
if (!templateText) {
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
24
|
-
const
|
|
25
|
-
if (
|
|
24
|
+
const matcherUsages = collectMatcherUsages(templateText);
|
|
25
|
+
if (matcherUsages.size === 0) {
|
|
26
26
|
return;
|
|
27
27
|
}
|
|
28
28
|
const [sourceFile] = (0, ng_morph_1.getSourceFiles)(resource.componentPath);
|
|
@@ -35,7 +35,7 @@ function migrateResource(resource, tree) {
|
|
|
35
35
|
if (!componentClass) {
|
|
36
36
|
return;
|
|
37
37
|
}
|
|
38
|
-
const propsToAdd = buildFilterProps(
|
|
38
|
+
const propsToAdd = buildFilterProps(matcherUsages, componentClass);
|
|
39
39
|
if (propsToAdd.length === 0) {
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
@@ -49,19 +49,28 @@ function migrateResource(resource, tree) {
|
|
|
49
49
|
addFilterWrapperProperties(componentClass, propsToAdd);
|
|
50
50
|
(0, add_unique_import_1.addUniqueImport)(resource.componentPath, 'TuiFilterByInputOptions', '@taiga-ui/core');
|
|
51
51
|
}
|
|
52
|
-
function
|
|
52
|
+
function collectMatcherUsages(templateText) {
|
|
53
53
|
FILTER_BY_INPUT_PIPE_RE.lastIndex = 0;
|
|
54
|
-
const
|
|
54
|
+
const usages = new Map();
|
|
55
55
|
let match;
|
|
56
56
|
while ((match = FILTER_BY_INPUT_PIPE_RE.exec(templateText)) !== null) {
|
|
57
|
-
|
|
57
|
+
const name = match[1];
|
|
58
|
+
const callSuffix = match[2];
|
|
59
|
+
const args = match[3];
|
|
60
|
+
let kind = 'reference';
|
|
61
|
+
if (callSuffix !== undefined) {
|
|
62
|
+
kind = (args === null || args === void 0 ? void 0 : args.trim()) ? 'call-with-args' : 'call-no-args';
|
|
63
|
+
}
|
|
64
|
+
if (!usages.has(name)) {
|
|
65
|
+
usages.set(name, kind);
|
|
66
|
+
}
|
|
58
67
|
}
|
|
59
|
-
return
|
|
68
|
+
return usages;
|
|
60
69
|
}
|
|
61
|
-
function buildFilterProps(
|
|
70
|
+
function buildFilterProps(matcherUsages, componentClass) {
|
|
62
71
|
var _a, _b;
|
|
63
72
|
const result = [];
|
|
64
|
-
for (const matcherName of
|
|
73
|
+
for (const [matcherName, kind] of matcherUsages) {
|
|
65
74
|
const filterWithName = `filterWith${matcherName[0].toUpperCase()}${matcherName.slice(1)}`;
|
|
66
75
|
if (componentClass.getProperty(filterWithName)) {
|
|
67
76
|
continue;
|
|
@@ -70,7 +79,7 @@ function buildFilterProps(matcherNames, componentClass) {
|
|
|
70
79
|
const typeText = (_b = (_a = prop === null || prop === void 0 ? void 0 : prop.getTypeNode()) === null || _a === void 0 ? void 0 : _a.getText()) !== null && _b !== void 0 ? _b : '';
|
|
71
80
|
const genericMatch = TUI_STRING_MATCHER_GENERIC_RE.exec(typeText);
|
|
72
81
|
const generic = genericMatch ? `<${genericMatch[1]}>` : '';
|
|
73
|
-
result.push({ filterWithName, matcherName, generic });
|
|
82
|
+
result.push({ filterWithName, matcherName, generic, kind });
|
|
74
83
|
}
|
|
75
84
|
return result;
|
|
76
85
|
}
|
|
@@ -95,9 +104,17 @@ function addFilterWrapperProperties(componentClass, propsToAdd) {
|
|
|
95
104
|
return;
|
|
96
105
|
}
|
|
97
106
|
const indent = ' ';
|
|
98
|
-
const propsText = `\n${propsToAdd
|
|
99
|
-
.map(({ filterWithName, matcherName, generic }) => `${indent}${filterWithName}: TuiFilterByInputOptions${generic}['filter'] = (items, query, stringify) => items.filter((item) => this.${matcherName}(item, query, stringify));`)
|
|
100
|
-
.join('\n')}\n`;
|
|
107
|
+
const propsText = `\n${propsToAdd.map((prop) => buildFilterPropLine(prop, indent)).join('\n')}\n`;
|
|
101
108
|
closeBrace.getSourceFile().insertText(closeBrace.getStart(), propsText);
|
|
102
109
|
}
|
|
110
|
+
function buildFilterPropLine({ filterWithName, matcherName, generic, kind }, indent) {
|
|
111
|
+
switch (kind) {
|
|
112
|
+
case 'call-no-args':
|
|
113
|
+
return `${indent}${filterWithName} = (): TuiFilterByInputOptions${generic}['filter'] => (items, query, stringify) => items.filter((item) => this.${matcherName}()(item, query, stringify));`;
|
|
114
|
+
case 'call-with-args':
|
|
115
|
+
return `${indent}${filterWithName} = (...args: any[]): TuiFilterByInputOptions${generic}['filter'] => (items, query, stringify) => items.filter((item) => this.${matcherName}(...args)(item, query, stringify));`;
|
|
116
|
+
default:
|
|
117
|
+
return `${indent}${filterWithName}: TuiFilterByInputOptions${generic}['filter'] = (items, query, stringify) => items.filter((item) => this.${matcherName}(item, query, stringify));`;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
103
120
|
//# sourceMappingURL=migrate-filter-by-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-filter-by-input.js","sourceRoot":"","sources":["../../../../../../projects/cdk/schematics/ng-update/v5/steps/migrate-filter-by-input.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"migrate-filter-by-input.js","sourceRoot":"","sources":["../../../../../../projects/cdk/schematics/ng-update/v5/steps/migrate-filter-by-input.ts"],"names":[],"mappings":"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"}
|