@taiga-ui/cdk 4.4.1 → 4.5.0-canary.49229f4

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 (90) hide show
  1. package/constants/used-icons.d.ts +1 -1
  2. package/constants/version.d.ts +1 -1
  3. package/constants/version.js +1 -1
  4. package/directives/auto-focus/handlers/default.handler.d.ts +3 -2
  5. package/directives/native-validator/native-validator.directive.d.ts +1 -2
  6. package/esm2022/constants/used-icons.mjs +3 -1
  7. package/esm2022/constants/version.mjs +2 -2
  8. package/esm2022/date-time/day.mjs +9 -9
  9. package/esm2022/date-time/month.mjs +4 -4
  10. package/esm2022/directives/auto-focus/autofocus.options.mjs +2 -2
  11. package/esm2022/directives/auto-focus/handlers/default.handler.mjs +5 -3
  12. package/esm2022/directives/native-validator/native-validator.directive.mjs +4 -7
  13. package/esm2022/directives/obscured/obscured.service.mjs +4 -4
  14. package/esm2022/directives/pan/pan.service.mjs +3 -3
  15. package/esm2022/directives/swipe/swipe.service.mjs +7 -7
  16. package/esm2022/directives/zoom/zoom.service.mjs +5 -5
  17. package/esm2022/observables/zone.mjs +24 -4
  18. package/esm2022/services/id.service.mjs +6 -7
  19. package/esm2022/utils/color/hex-to-rgba.mjs +2 -2
  20. package/esm2022/utils/color/parse-gradient.mjs +10 -10
  21. package/esm2022/utils/color/rgba-to-hex.mjs +8 -10
  22. package/esm2022/utils/focus/move-focus.mjs +2 -2
  23. package/esm2022/utils/math/round-with.mjs +3 -3
  24. package/esm2022/utils/miscellaneous/distance-between-touches.mjs +2 -2
  25. package/esm2022/utils/miscellaneous/is-valid-url.mjs +7 -7
  26. package/fesm2022/taiga-ui-cdk-constants.mjs +3 -1
  27. package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
  28. package/fesm2022/taiga-ui-cdk-date-time.mjs +11 -11
  29. package/fesm2022/taiga-ui-cdk-date-time.mjs.map +1 -1
  30. package/fesm2022/taiga-ui-cdk-directives-auto-focus.mjs +5 -3
  31. package/fesm2022/taiga-ui-cdk-directives-auto-focus.mjs.map +1 -1
  32. package/fesm2022/taiga-ui-cdk-directives-native-validator.mjs +3 -6
  33. package/fesm2022/taiga-ui-cdk-directives-native-validator.mjs.map +1 -1
  34. package/fesm2022/taiga-ui-cdk-directives-obscured.mjs +3 -3
  35. package/fesm2022/taiga-ui-cdk-directives-obscured.mjs.map +1 -1
  36. package/fesm2022/taiga-ui-cdk-directives-pan.mjs +2 -2
  37. package/fesm2022/taiga-ui-cdk-directives-pan.mjs.map +1 -1
  38. package/fesm2022/taiga-ui-cdk-directives-swipe.mjs +6 -6
  39. package/fesm2022/taiga-ui-cdk-directives-swipe.mjs.map +1 -1
  40. package/fesm2022/taiga-ui-cdk-directives-zoom.mjs +4 -4
  41. package/fesm2022/taiga-ui-cdk-directives-zoom.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-cdk-observables.mjs +24 -5
  43. package/fesm2022/taiga-ui-cdk-observables.mjs.map +1 -1
  44. package/fesm2022/taiga-ui-cdk-services.mjs +5 -6
  45. package/fesm2022/taiga-ui-cdk-services.mjs.map +1 -1
  46. package/fesm2022/taiga-ui-cdk-utils-color.mjs +17 -19
  47. package/fesm2022/taiga-ui-cdk-utils-color.mjs.map +1 -1
  48. package/fesm2022/taiga-ui-cdk-utils-focus.mjs +1 -1
  49. package/fesm2022/taiga-ui-cdk-utils-focus.mjs.map +1 -1
  50. package/fesm2022/taiga-ui-cdk-utils-math.mjs +2 -2
  51. package/fesm2022/taiga-ui-cdk-utils-math.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs +7 -7
  53. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs.map +1 -1
  54. package/observables/zone.d.ts +7 -5
  55. package/package.json +356 -356
  56. package/schematics/constants/taiga-styles.d.ts +0 -2
  57. package/schematics/constants/taiga-styles.js +1 -3
  58. package/schematics/ng-add/index.js +4 -7
  59. package/schematics/ng-add/schema.d.ts +0 -1
  60. package/schematics/ng-add/schema.json +0 -9
  61. package/schematics/ng-add/steps/add-taiga-modules.js +10 -1
  62. package/schematics/ng-add/steps/add-taiga-styles.js +1 -4
  63. package/schematics/ng-add/steps/wrap-with-tui-root.js +7 -2
  64. package/schematics/ng-update/v4/index.js +4 -0
  65. package/schematics/ng-update/v4/migrate-addon-doc/replace-symbols.js +4 -0
  66. package/schematics/ng-update/v4/steps/constants/attr-with-values-to-replace.js +5 -0
  67. package/schematics/ng-update/v4/steps/constants/identifiers-to-replace.js +0 -41
  68. package/schematics/ng-update/v4/steps/drop-universal-mock.d.ts +2 -0
  69. package/schematics/ng-update/v4/steps/drop-universal-mock.js +20 -0
  70. package/schematics/ng-update/v4/steps/migrate-alert-service.js +2 -2
  71. package/schematics/ng-update/v4/steps/migrate-editor.d.ts +5 -0
  72. package/schematics/ng-update/v4/steps/migrate-editor.js +77 -0
  73. package/schematics/ng-update/v4/steps/migrate-legacy-mask.js +2 -2
  74. package/schematics/ng-update/v4/steps/migrate-number-format-settings.js +1 -1
  75. package/schematics/ng-update/v4/steps/migrate-root.js +28 -8
  76. package/schematics/ng-update/v4/steps/restore-tui-mapper.js +1 -1
  77. package/schematics/ng-update/v4/steps/restore-tui-matcher.js +1 -1
  78. package/schematics/ng-update/v4/steps/templates/migrate-avatar.js +4 -1
  79. package/schematics/ng-update/v4/steps/templates/migrate-overscroll.js +5 -1
  80. package/schematics/ng-update/v4/steps/templates/migrate-prevent-default.js +3 -3
  81. package/schematics/ng-update/v4/steps/templates/migrate-progress-segmented.js +2 -2
  82. package/schematics/ng-update/v4/steps/update-packages.d.ts +0 -1
  83. package/schematics/ng-update/v4/steps/update-packages.js +1 -6
  84. package/schematics/ng-update/v4/steps/utils/clean-object.js +1 -1
  85. package/schematics/utils/add-unique-import.js +4 -3
  86. package/schematics/utils/angular-json-manipulations.js +5 -3
  87. package/schematics/utils/get-component-from-identifier.js +1 -1
  88. package/schematics/utils/templates/get-component-templates.js +2 -2
  89. package/schematics/utils/templates/ng-component-input-manipulations.js +3 -3
  90. package/services/id.service.d.ts +1 -3
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-swipe.mjs","sources":["../../../projects/cdk/directives/swipe/swipe.options.ts","../../../projects/cdk/directives/swipe/swipe.service.ts","../../../projects/cdk/directives/swipe/swipe.directive.ts","../../../projects/cdk/directives/swipe/taiga-ui-cdk-directives-swipe.ts"],"sourcesContent":["import {tuiCreateToken} from '@taiga-ui/cdk/utils';\n\nimport type {TuiSwipeOptions} from './swipe.types';\n\nexport const TUI_SWIPE_OPTIONS = tuiCreateToken<TuiSwipeOptions>({\n timeout: 500,\n threshold: 30,\n});\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {filter, map, merge, Observable, pairwise} from 'rxjs';\n\nimport {TUI_SWIPE_OPTIONS} from './swipe.options';\nimport type {TuiSwipeDirection, TuiSwipeEvent} from './swipe.types';\n\n@Injectable()\nexport class TuiSwipeService extends Observable<TuiSwipeEvent> {\n constructor() {\n const doc = inject(DOCUMENT);\n const el = tuiInjectElement();\n const {timeout, threshold} = inject(TUI_SWIPE_OPTIONS);\n\n super((subscriber) => {\n merge(\n tuiTypedFromEvent(el, 'touchstart', {passive: true}),\n tuiTypedFromEvent(doc, 'touchend'),\n )\n .pipe(\n pairwise(),\n filter(\n ([first, second]) =>\n !!first.touches.length &&\n first.touches[0].identifier ===\n second.changedTouches[0].identifier,\n ),\n map(([start, end]) => {\n const startX = start.touches[0].clientX;\n const startY = start.touches[0].clientY;\n const endX = end.changedTouches[0].clientX;\n const endY = end.changedTouches[0].clientY;\n\n const distanceX = startX - endX;\n const distanceY = startY - endY;\n const duration = end.timeStamp - start.timeStamp;\n\n if (\n (Math.abs(distanceX) > threshold ||\n Math.abs(distanceY) > threshold) &&\n duration < timeout\n ) {\n return {\n direction: tuiGetSwipeDirection(distanceX, distanceY),\n events: [start, end] as [TouchEvent, TouchEvent],\n };\n }\n\n return null;\n }),\n filter(tuiIsPresent),\n )\n .subscribe(subscriber);\n });\n }\n}\n\nfunction tuiGetSwipeDirection(deltaX: number, deltaY: number): TuiSwipeDirection {\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n return deltaY > 0 ? 'top' : 'bottom';\n }\n\n return deltaX > 0 ? 'left' : 'right';\n}\n","import {Directive, inject, Output} from '@angular/core';\n\nimport {TuiSwipeService} from './swipe.service';\n\n@Directive({\n standalone: true,\n selector: '[tuiSwipe]',\n providers: [TuiSwipeService],\n})\nexport class TuiSwipe {\n @Output()\n public readonly tuiSwipe = inject(TuiSwipeService);\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-directives-swipe.mjs","sources":["../../../projects/cdk/directives/swipe/swipe.options.ts","../../../projects/cdk/directives/swipe/swipe.service.ts","../../../projects/cdk/directives/swipe/swipe.directive.ts","../../../projects/cdk/directives/swipe/taiga-ui-cdk-directives-swipe.ts"],"sourcesContent":["import {tuiCreateToken} from '@taiga-ui/cdk/utils';\n\nimport type {TuiSwipeOptions} from './swipe.types';\n\nexport const TUI_SWIPE_OPTIONS = tuiCreateToken<TuiSwipeOptions>({\n timeout: 500,\n threshold: 30,\n});\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {filter, map, merge, Observable, pairwise} from 'rxjs';\n\nimport {TUI_SWIPE_OPTIONS} from './swipe.options';\nimport type {TuiSwipeDirection, TuiSwipeEvent} from './swipe.types';\n\n@Injectable()\nexport class TuiSwipeService extends Observable<TuiSwipeEvent> {\n constructor() {\n const doc = inject(DOCUMENT);\n const el = tuiInjectElement();\n const {timeout, threshold} = inject(TUI_SWIPE_OPTIONS);\n\n super((subscriber) => {\n merge(\n tuiTypedFromEvent(el, 'touchstart', {passive: true}),\n tuiTypedFromEvent(doc, 'touchend'),\n )\n .pipe(\n pairwise(),\n filter(\n ([first, second]) =>\n !!first.touches.length &&\n first.touches[0]?.identifier ===\n second.changedTouches[0]?.identifier,\n ),\n map(([start, end]) => {\n const startX = start.touches[0]?.clientX ?? 0;\n const startY = start.touches[0]?.clientY ?? 0;\n const endX = end.changedTouches[0]?.clientX ?? 0;\n const endY = end.changedTouches[0]?.clientY ?? 0;\n\n const distanceX = startX - endX;\n const distanceY = startY - endY;\n const duration = end.timeStamp - start.timeStamp;\n\n if (\n (Math.abs(distanceX) > threshold ||\n Math.abs(distanceY) > threshold) &&\n duration < timeout\n ) {\n return {\n direction: tuiGetSwipeDirection(distanceX, distanceY),\n events: [start, end] as [TouchEvent, TouchEvent],\n };\n }\n\n return null;\n }),\n filter(tuiIsPresent),\n )\n .subscribe(subscriber);\n });\n }\n}\n\nfunction tuiGetSwipeDirection(deltaX: number, deltaY: number): TuiSwipeDirection {\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n return deltaY > 0 ? 'top' : 'bottom';\n }\n\n return deltaX > 0 ? 'left' : 'right';\n}\n","import {Directive, inject, Output} from '@angular/core';\n\nimport {TuiSwipeService} from './swipe.service';\n\n@Directive({\n standalone: true,\n selector: '[tuiSwipe]',\n providers: [TuiSwipeService],\n})\nexport class TuiSwipe {\n @Output()\n public readonly tuiSwipe = inject(TuiSwipeService);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -30,11 +30,11 @@ class TuiZoomService extends Observable {
30
30
  distance: tuiDistanceBetweenTouches(startEvent),
31
31
  delta: 0,
32
32
  }), map(({ event, delta }) => {
33
- const clientX = (event.touches[0].clientX +
34
- event.touches[1].clientX) /
33
+ const clientX = ((event.touches[0]?.clientX ?? 0) +
34
+ (event.touches[1]?.clientX ?? 0)) /
35
35
  2;
36
- const clientY = (event.touches[0].clientY +
37
- event.touches[1].clientY) /
36
+ const clientY = ((event.touches[0]?.clientY ?? 0) +
37
+ (event.touches[1]?.clientY ?? 0)) /
38
38
  2;
39
39
  return { clientX, clientY, delta, event };
40
40
  }), takeUntil(tuiTypedFromEvent(el, 'touchend'))))), tuiTypedFromEvent(el, 'wheel', { passive: false }).pipe(tuiPreventDefault(), map((wheel) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-zoom.mjs","sources":["../../../projects/cdk/directives/zoom/zoom.options.ts","../../../projects/cdk/directives/zoom/zoom.service.ts","../../../projects/cdk/directives/zoom/zoom.directive.ts","../../../projects/cdk/directives/zoom/taiga-ui-cdk-directives-zoom.ts"],"sourcesContent":["import {tuiCreateToken} from '@taiga-ui/cdk/utils';\n\nimport type {TuiZoomOptions} from './zoom.types';\n\n/**\n * Zoom options\n */\nexport const TUI_ZOOM_OPTIONS = tuiCreateToken<TuiZoomOptions>({\n wheelSensitivity: 0.01,\n});\n","import {inject, Injectable} from '@angular/core';\nimport {tuiPreventDefault, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiDistanceBetweenTouches, tuiInjectElement} from '@taiga-ui/cdk/utils';\nimport {filter, map, merge, Observable, scan, switchMap, takeUntil} from 'rxjs';\n\nimport {TUI_ZOOM_OPTIONS} from './zoom.options';\nimport type {TuiZoomEvent} from './zoom.types';\n\nconst TOUCH_SENSITIVITY = 0.01;\n\n@Injectable()\nexport class TuiZoomService extends Observable<TuiZoomEvent> {\n constructor() {\n const el = tuiInjectElement();\n const {wheelSensitivity} = inject(TUI_ZOOM_OPTIONS);\n\n super((subscriber) => {\n merge(\n tuiTypedFromEvent(el, 'touchstart', {passive: true}).pipe(\n filter(({touches}) => touches.length > 1),\n switchMap((startEvent) =>\n tuiTypedFromEvent(el, 'touchmove', {passive: true}).pipe(\n tuiPreventDefault(),\n scan(\n (prev, event) => {\n const distance = tuiDistanceBetweenTouches(event);\n\n return {\n event,\n distance,\n delta:\n (distance - prev.distance) *\n TOUCH_SENSITIVITY,\n };\n },\n {\n event: startEvent,\n distance: tuiDistanceBetweenTouches(startEvent),\n delta: 0,\n },\n ),\n map(({event, delta}) => {\n const clientX =\n (event.touches[0].clientX +\n event.touches[1].clientX) /\n 2;\n const clientY =\n (event.touches[0].clientY +\n event.touches[1].clientY) /\n 2;\n\n return {clientX, clientY, delta, event};\n }),\n takeUntil(tuiTypedFromEvent(el, 'touchend')),\n ),\n ),\n ),\n tuiTypedFromEvent(el, 'wheel', {passive: false}).pipe(\n tuiPreventDefault(),\n map((wheel) => ({\n clientX: wheel.clientX,\n clientY: wheel.clientY,\n delta: -wheel.deltaY * wheelSensitivity,\n event: wheel,\n })),\n ),\n ).subscribe(subscriber);\n });\n }\n}\n","import {Directive, inject} from '@angular/core';\n\nimport {TuiZoomService} from './zoom.service';\n\n@Directive({\n standalone: true,\n selector: '[tuiZoom]',\n outputs: ['tuiZoom'],\n providers: [TuiZoomService],\n host: {\n '[style.touch-action]': '\"none\"',\n },\n})\nexport class TuiZoom {\n protected readonly tuiZoom = inject(TuiZoomService);\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-directives-zoom.mjs","sources":["../../../projects/cdk/directives/zoom/zoom.options.ts","../../../projects/cdk/directives/zoom/zoom.service.ts","../../../projects/cdk/directives/zoom/zoom.directive.ts","../../../projects/cdk/directives/zoom/taiga-ui-cdk-directives-zoom.ts"],"sourcesContent":["import {tuiCreateToken} from '@taiga-ui/cdk/utils';\n\nimport type {TuiZoomOptions} from './zoom.types';\n\n/**\n * Zoom options\n */\nexport const TUI_ZOOM_OPTIONS = tuiCreateToken<TuiZoomOptions>({\n wheelSensitivity: 0.01,\n});\n","import {inject, Injectable} from '@angular/core';\nimport {tuiPreventDefault, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiDistanceBetweenTouches, tuiInjectElement} from '@taiga-ui/cdk/utils';\nimport {filter, map, merge, Observable, scan, switchMap, takeUntil} from 'rxjs';\n\nimport {TUI_ZOOM_OPTIONS} from './zoom.options';\nimport type {TuiZoomEvent} from './zoom.types';\n\nconst TOUCH_SENSITIVITY = 0.01;\n\n@Injectable()\nexport class TuiZoomService extends Observable<TuiZoomEvent> {\n constructor() {\n const el = tuiInjectElement();\n const {wheelSensitivity} = inject(TUI_ZOOM_OPTIONS);\n\n super((subscriber) => {\n merge(\n tuiTypedFromEvent(el, 'touchstart', {passive: true}).pipe(\n filter(({touches}) => touches.length > 1),\n switchMap((startEvent) =>\n tuiTypedFromEvent(el, 'touchmove', {passive: true}).pipe(\n tuiPreventDefault(),\n scan(\n (prev, event) => {\n const distance = tuiDistanceBetweenTouches(event);\n\n return {\n event,\n distance,\n delta:\n (distance - prev.distance) *\n TOUCH_SENSITIVITY,\n };\n },\n {\n event: startEvent,\n distance: tuiDistanceBetweenTouches(startEvent),\n delta: 0,\n },\n ),\n map(({event, delta}) => {\n const clientX =\n ((event.touches[0]?.clientX ?? 0) +\n (event.touches[1]?.clientX ?? 0)) /\n 2;\n const clientY =\n ((event.touches[0]?.clientY ?? 0) +\n (event.touches[1]?.clientY ?? 0)) /\n 2;\n\n return {clientX, clientY, delta, event};\n }),\n takeUntil(tuiTypedFromEvent(el, 'touchend')),\n ),\n ),\n ),\n tuiTypedFromEvent(el, 'wheel', {passive: false}).pipe(\n tuiPreventDefault(),\n map((wheel) => ({\n clientX: wheel.clientX,\n clientY: wheel.clientY,\n delta: -wheel.deltaY * wheelSensitivity,\n event: wheel,\n })),\n ),\n ).subscribe(subscriber);\n });\n }\n}\n","import {Directive, inject} from '@angular/core';\n\nimport {TuiZoomService} from './zoom.service';\n\n@Directive({\n standalone: true,\n selector: '[tuiZoom]',\n outputs: ['tuiZoom'],\n providers: [TuiZoomService],\n host: {\n '[style.touch-action]': '\"none\"',\n },\n})\nexport class TuiZoom {\n protected readonly tuiZoom = inject(TuiZoomService);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { Observable, startWith, fromEvent, concat, take, map, merge, endWith, takeWhile, repeat, tap, pipe, switchMap, EMPTY, takeUntil, NEVER, catchError, defaultIfEmpty } from 'rxjs';
1
+ import { Observable, startWith, fromEvent, concat, take, map, merge, endWith, takeWhile, repeat, tap, pipe, switchMap, EMPTY, takeUntil, NEVER, catchError, defaultIfEmpty, asyncScheduler } from 'rxjs';
2
2
  import { tuiIsPresent, tuiGetOriginalArrayFromQueryList } from '@taiga-ui/cdk/utils/miscellaneous';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { inject, NgZone } from '@angular/core';
4
5
 
5
6
  /**
6
7
  * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)
@@ -81,23 +82,41 @@ function tuiWatch(cdr) {
81
82
  return tap(() => cdr.markForCheck());
82
83
  }
83
84
 
84
- function tuiZonefull(zone) {
85
+ function tuiZonefull(zone = inject(NgZone)) {
85
86
  return (source) => new Observable((subscriber) => source.subscribe({
86
87
  next: (value) => zone.run(() => subscriber.next(value)),
87
88
  error: (error) => zone.run(() => subscriber.error(error)),
88
89
  complete: () => zone.run(() => subscriber.complete()),
89
90
  }));
90
91
  }
91
- function tuiZonefree(zone) {
92
+ function tuiZonefree(zone = inject(NgZone)) {
92
93
  return (source) => new Observable((subscriber) => zone.runOutsideAngular(() => source.subscribe(subscriber)));
93
94
  }
94
- function tuiZoneOptimized(zone) {
95
+ function tuiZoneOptimized(zone = inject(NgZone)) {
95
96
  return pipe(tuiZonefree(zone), tuiZonefull(zone));
96
97
  }
98
+ class TuiZoneScheduler {
99
+ constructor(zoneConditionFn, scheduler = asyncScheduler) {
100
+ this.zoneConditionFn = zoneConditionFn;
101
+ this.scheduler = scheduler;
102
+ }
103
+ now() {
104
+ return this.scheduler.now();
105
+ }
106
+ schedule(...args) {
107
+ return this.zoneConditionFn(() => this.scheduler.schedule(...args));
108
+ }
109
+ }
110
+ function tuiZonefreeScheduler(zone = inject(NgZone), scheduler = asyncScheduler) {
111
+ return new TuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);
112
+ }
113
+ function tuiZonefullScheduler(zone = inject(NgZone), scheduler = asyncScheduler) {
114
+ return new TuiZoneScheduler(zone.run.bind(zone), scheduler);
115
+ }
97
116
 
98
117
  /**
99
118
  * Generated bundle index. Do not edit.
100
119
  */
101
120
 
102
- export { TuiDragState, TuiValuePresentException, tuiControlValue, tuiDragAndDropFrom, tuiIfMap, tuiMustBePresent, tuiPreventDefault, tuiQueryListChanges, tuiScrollFrom, tuiStopPropagation, tuiTakeUntilDestroyed, tuiTypedFromEvent, tuiWatch, tuiZoneOptimized, tuiZonefree, tuiZonefull };
121
+ export { TuiDragState, TuiValuePresentException, tuiControlValue, tuiDragAndDropFrom, tuiIfMap, tuiMustBePresent, tuiPreventDefault, tuiQueryListChanges, tuiScrollFrom, tuiStopPropagation, tuiTakeUntilDestroyed, tuiTypedFromEvent, tuiWatch, tuiZoneOptimized, tuiZonefree, tuiZonefreeScheduler, tuiZonefull, tuiZonefullScheduler };
103
122
  //# sourceMappingURL=taiga-ui-cdk-observables.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-observables.mjs","sources":["../../../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/must-be-present.ts","../../../projects/cdk/observables/query-list-observable.ts","../../../projects/cdk/observables/scroll-from.ts","../../../projects/cdk/observables/take-until-destroyed.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import type {AbstractControl, 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 type {Observable} from 'rxjs';\nimport {fromEvent} 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 type {Observable} from 'rxjs';\nimport {concat, endWith, map, merge, repeat, take, takeWhile} 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} from 'rxjs';\nimport {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 type {Observable, OperatorFunction} from 'rxjs';\nimport {EMPTY, 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","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {OperatorFunction} from 'rxjs';\nimport {map} from 'rxjs';\n\nexport function tuiMustBePresent<T>(): OperatorFunction<T | null | undefined, T> {\n return map((value) => {\n if (!tuiIsPresent(value)) {\n throw new TuiValuePresentException();\n }\n\n return value;\n });\n}\n\nexport class TuiValuePresentException extends Error {\n constructor() {\n super(ngDevMode ? 'Value must present' : '');\n }\n}\n","import type {QueryList} from '@angular/core';\nimport {tuiGetOriginalArrayFromQueryList} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs';\n\n/**\n * Converts changes observable of a QueryList to an Observable of arrays\n */\nexport function tuiQueryListChanges<T>(\n queryList: QueryList<T>,\n): Observable<readonly T[]> {\n return queryList.changes.pipe(\n startWith(null),\n map(() => tuiGetOriginalArrayFromQueryList(queryList)),\n );\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 type {MonoTypeOperatorFunction} from 'rxjs';\nimport {catchError, defaultIfEmpty, EMPTY, NEVER, pipe, takeUntil} 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 type {ChangeDetectorRef} from '@angular/core';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs';\n\nexport function tuiWatch<T>(cdr: ChangeDetectorRef): MonoTypeOperatorFunction<T> {\n return tap(() => cdr.markForCheck());\n}\n","import type {NgZone} from '@angular/core';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {Observable, pipe} from 'rxjs';\n\nexport function tuiZonefull<T>(zone: 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: NgZone): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n zone.runOutsideAngular(() => source.subscribe(subscriber)),\n );\n}\n\nexport function tuiZoneOptimized<T>(zone: NgZone): MonoTypeOperatorFunction<T> {\n return pipe(tuiZonefree(zone), tuiZonefull(zone));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA;;AAEG;AACG,SAAU,eAAe,CAC3B,OAA0D,EAAA;IAE1D,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAC7B,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAC9E,CAAC;AACN;;AC4CM,SAAU,iBAAiB,CAC7B,MAA8B,EAC9B,KAAa,EACb,UAAmC,EAAE,EAAA;AAErC;;;AAGG;IACH,OAAO,SAAS,CAAI,MAAa,EAAE,KAAK,EAAE,OAAO,CAA6B,CAAC;AACnF;;MC1Da,YAAY,CAAA;IACrB,WACoB,CAAA,KAAmB,EACnB,KAAiB,EAAA;QADjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;QACnB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KACjC;AACP,CAAA;AAEK,SAAU,kBAAkB,CAAC,OAAgB,EAAA;AAC/C,IAAA,MAAM,EAAC,aAAa,EAAC,GAAG,OAAO,CAAC;IAEhC,OAAO,MAAM,CACT,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CACxC,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CACnD,EACD,KAAK,CACD,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CACvD,EACD,KAAK,CACD,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,EAC3C,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,CAC9C,CAAC,IAAI,CACF,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAC9C,OAAO,CAAC,IAAI,CAAC,CAChB,CACJ,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAClC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACrB;;SClCgB,iBAAiB,GAAA;AAC7B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;AAClD,CAAC;SAEe,kBAAkB,GAAA;AAC9B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;AACnD;;SCLgB,QAAQ,CACpB,OAAoC,EACpC,YAAkC,OAAO,EAAA;AAEzC,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACnF;;ACTA;SAMgB,gBAAgB,GAAA;AAC5B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAI;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,wBAAwB,EAAE,CAAC;AACxC,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAC,CAAC;AACP,CAAC;AAEK,MAAO,wBAAyB,SAAQ,KAAK,CAAA;AAC/C,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,SAAS,GAAG,oBAAoB,GAAG,EAAE,CAAC,CAAC;KAChD;AACJ;;ACfD;;AAEG;AACG,SAAU,mBAAmB,CAC/B,SAAuB,EAAA;IAEvB,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CACzB,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAM,gCAAgC,CAAC,SAAS,CAAC,CAAC,CACzD,CAAC;AACN;;ACXA;;AAEG;AACG,SAAU,aAAa,CAAC,OAAgB,EAAA;IAC1C,OAAO,iBAAiB,CACpB,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC,eAAe;UAC3C,OAAO,CAAC,aAAa;AACvB,UAAE,OAAO,EACb,QAAQ,CACX,CAAC;AACN;;ACTA;AACA;AACA;AACM,SAAU,qBAAqB,CACjC,UAAuB,EAAA;AAEvB,IAAA,OAAO,IAAI,CACP,SAAS,CACL,KAAK,CAAC,IAAI,CACN,kBAAkB,CAAC,UAAU,CAAC,EAC9B,UAAU,CAAC,MAAM,KAAK,CAAC,EACvB,cAAc,CAAC,IAAI,CAAC,CACvB,CACJ,CACJ,CAAC;AACN;;AChBM,SAAU,QAAQ,CAAI,GAAsB,EAAA;IAC9C,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACzC;;ACFM,SAAU,WAAW,CAAI,IAAY,EAAA;AACvC,IAAA,OAAO,CAAC,MAAM,KACV,IAAI,UAAU,CAAC,CAAC,UAAU,KACtB,MAAM,CAAC,SAAS,CAAC;AACb,QAAA,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,QAAA,KAAK,EAAE,CAAC,KAAc,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClE,QAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;AACxD,KAAA,CAAC,CACL,CAAC;AACV,CAAC;AAEK,SAAU,WAAW,CAAI,IAAY,EAAA;AACvC,IAAA,OAAO,CAAC,MAAM,KACV,IAAI,UAAU,CAAC,CAAC,UAAU,KACtB,IAAI,CAAC,iBAAiB,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAC7D,CAAC;AACV,CAAC;AAEK,SAAU,gBAAgB,CAAI,IAAY,EAAA;AAC5C,IAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD;;ACxBA;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-observables.mjs","sources":["../../../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/must-be-present.ts","../../../projects/cdk/observables/query-list-observable.ts","../../../projects/cdk/observables/scroll-from.ts","../../../projects/cdk/observables/take-until-destroyed.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import type {AbstractControl, 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 type {Observable} from 'rxjs';\nimport {fromEvent} 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 type {Observable} from 'rxjs';\nimport {concat, endWith, map, merge, repeat, take, takeWhile} 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} from 'rxjs';\nimport {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 type {Observable, OperatorFunction} from 'rxjs';\nimport {EMPTY, 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","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {OperatorFunction} from 'rxjs';\nimport {map} from 'rxjs';\n\nexport function tuiMustBePresent<T>(): OperatorFunction<T | null | undefined, T> {\n return map((value) => {\n if (!tuiIsPresent(value)) {\n throw new TuiValuePresentException();\n }\n\n return value;\n });\n}\n\nexport class TuiValuePresentException extends Error {\n constructor() {\n super(ngDevMode ? 'Value must present' : '');\n }\n}\n","import type {QueryList} from '@angular/core';\nimport {tuiGetOriginalArrayFromQueryList} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs';\n\n/**\n * Converts changes observable of a QueryList to an Observable of arrays\n */\nexport function tuiQueryListChanges<T>(\n queryList: QueryList<T>,\n): Observable<readonly T[]> {\n return queryList.changes.pipe(\n startWith(null),\n map(() => tuiGetOriginalArrayFromQueryList(queryList)),\n );\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 type {MonoTypeOperatorFunction} from 'rxjs';\nimport {catchError, defaultIfEmpty, EMPTY, NEVER, pipe, takeUntil} 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 type {ChangeDetectorRef} from '@angular/core';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs';\n\nexport function tuiWatch<T>(cdr: ChangeDetectorRef): MonoTypeOperatorFunction<T> {\n return tap(() => cdr.markForCheck());\n}\n","import {inject, NgZone} from '@angular/core';\nimport {\n asyncScheduler,\n type MonoTypeOperatorFunction,\n type SchedulerLike,\n type Subscription,\n} from 'rxjs';\nimport {Observable, pipe} 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":";;;;;AAGA;;AAEG;AACG,SAAU,eAAe,CAC3B,OAA0D,EAAA;IAE1D,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAC7B,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAC9E,CAAC;AACN;;AC4CM,SAAU,iBAAiB,CAC7B,MAA8B,EAC9B,KAAa,EACb,UAAmC,EAAE,EAAA;AAErC;;;AAGG;IACH,OAAO,SAAS,CAAI,MAAa,EAAE,KAAK,EAAE,OAAO,CAA6B,CAAC;AACnF;;MC1Da,YAAY,CAAA;IACrB,WACoB,CAAA,KAAmB,EACnB,KAAiB,EAAA;QADjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;QACnB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KACjC;AACP,CAAA;AAEK,SAAU,kBAAkB,CAAC,OAAgB,EAAA;AAC/C,IAAA,MAAM,EAAC,aAAa,EAAC,GAAG,OAAO,CAAC;IAEhC,OAAO,MAAM,CACT,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CACxC,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CACnD,EACD,KAAK,CACD,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CACvD,EACD,KAAK,CACD,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,EAC3C,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,CAC9C,CAAC,IAAI,CACF,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAC9C,OAAO,CAAC,IAAI,CAAC,CAChB,CACJ,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAClC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACrB;;SClCgB,iBAAiB,GAAA;AAC7B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;AAClD,CAAC;SAEe,kBAAkB,GAAA;AAC9B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;AACnD;;SCLgB,QAAQ,CACpB,OAAoC,EACpC,YAAkC,OAAO,EAAA;AAEzC,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACnF;;ACTA;SAMgB,gBAAgB,GAAA;AAC5B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAI;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,wBAAwB,EAAE,CAAC;AACxC,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAC,CAAC;AACP,CAAC;AAEK,MAAO,wBAAyB,SAAQ,KAAK,CAAA;AAC/C,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,SAAS,GAAG,oBAAoB,GAAG,EAAE,CAAC,CAAC;KAChD;AACJ;;ACfD;;AAEG;AACG,SAAU,mBAAmB,CAC/B,SAAuB,EAAA;IAEvB,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CACzB,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAM,gCAAgC,CAAC,SAAS,CAAC,CAAC,CACzD,CAAC;AACN;;ACXA;;AAEG;AACG,SAAU,aAAa,CAAC,OAAgB,EAAA;IAC1C,OAAO,iBAAiB,CACpB,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC,eAAe;UAC3C,OAAO,CAAC,aAAa;AACvB,UAAE,OAAO,EACb,QAAQ,CACX,CAAC;AACN;;ACTA;AACA;AACA;AACM,SAAU,qBAAqB,CACjC,UAAuB,EAAA;AAEvB,IAAA,OAAO,IAAI,CACP,SAAS,CACL,KAAK,CAAC,IAAI,CACN,kBAAkB,CAAC,UAAU,CAAC,EAC9B,UAAU,CAAC,MAAM,KAAK,CAAC,EACvB,cAAc,CAAC,IAAI,CAAC,CACvB,CACJ,CACJ,CAAC;AACN;;AChBM,SAAU,QAAQ,CAAI,GAAsB,EAAA;IAC9C,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACzC;;ACGM,SAAU,WAAW,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AAChD,IAAA,OAAO,CAAC,MAAM,KACV,IAAI,UAAU,CAAC,CAAC,UAAU,KACtB,MAAM,CAAC,SAAS,CAAC;AACb,QAAA,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,QAAA,KAAK,EAAE,CAAC,KAAc,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClE,QAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;AACxD,KAAA,CAAC,CACL,CAAC;AACV,CAAC;AAEK,SAAU,WAAW,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AAChD,IAAA,OAAO,CAAC,MAAM,KACV,IAAI,UAAU,CAAC,CAAC,UAAU,KACtB,IAAI,CAAC,iBAAiB,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAC7D,CAAC;AACV,CAAC;AAEK,SAAU,gBAAgB,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AACrD,IAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,gBAAgB,CAAA;IAClB,WACqB,CAAA,eAAwD,EACxD,SAAA,GAA2B,cAAc,EAAA;QADzC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAyC;QACxD,IAAS,CAAA,SAAA,GAAT,SAAS,CAAgC;KAC1D;IAEG,GAAG,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;KAC/B;IAEM,QAAQ,CAAC,GAAG,IAA2C,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KACvE;AACJ,CAAA;AAEK,SAAU,oBAAoB,CAChC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EACrB,SAAA,GAA2B,cAAc,EAAA;AAEzC,IAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC9E,CAAC;AAEK,SAAU,oBAAoB,CAChC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EACrB,SAAA,GAA2B,cAAc,EAAA;AAEzC,IAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAChE;;AC1DA;;AAEG;;;;"}
@@ -9,14 +9,10 @@ import { tuiEaseInOutQuad } from '@taiga-ui/cdk/utils/miscellaneous';
9
9
  import { DOCUMENT } from '@angular/common';
10
10
  import { Meta } from '@angular/platform-browser';
11
11
 
12
- const TUI = 'tui_';
13
- /**
14
- * Generates unique ids
15
- */
16
12
  class TuiIdService {
17
13
  static { this.autoId = 0; }
18
14
  generate() {
19
- return `${TUI}${TuiIdService.autoId++}${Date.now()}`;
15
+ return `tui_${TuiIdService.autoId++}${Date.now()}`;
20
16
  }
21
17
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiIdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
22
18
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiIdService, providedIn: 'root' }); }
@@ -27,6 +23,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27
23
  providedIn: 'root',
28
24
  }]
29
25
  }] });
26
+ function tuiInjectId() {
27
+ return inject(TuiIdService).generate();
28
+ }
30
29
 
31
30
  class TuiPopoverService {
32
31
  constructor(items, component, options = {}) {
@@ -140,5 +139,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
140
139
  * Generated bundle index. Do not edit.
141
140
  */
142
141
 
143
- export { TUI_THEME_COLOR, TuiIdService, TuiPopoverService, TuiScrollService, TuiThemeColorService, tuiAsPopover };
142
+ export { TUI_THEME_COLOR, TuiIdService, TuiPopoverService, TuiScrollService, TuiThemeColorService, tuiAsPopover, tuiInjectId };
144
143
  //# sourceMappingURL=taiga-ui-cdk-services.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-services.mjs","sources":["../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/popover.service.ts","../../../projects/cdk/services/scroll.service.ts","../../../projects/cdk/services/theme-color.service.ts","../../../projects/cdk/services/taiga-ui-cdk-services.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\n\nconst TUI = 'tui_';\n\n/**\n * Generates unique ids\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiIdService {\n private static autoId = 0;\n\n public generate(): string {\n return `${TUI}${TuiIdService.autoId++}${Date.now()}`;\n }\n}\n","import type {Provider, ProviderToken, Type} from '@angular/core';\nimport {inject, Injectable} from '@angular/core';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\nimport type {BehaviorSubject, Observer} from 'rxjs';\nimport {Observable} from 'rxjs';\n\nimport {TuiIdService} from './id.service';\n\nexport interface TuiPopoverContext<O> extends TuiContext<Observer<O>> {\n readonly component: PolymorpheusComponent<any>;\n readonly createdAt: number;\n readonly id: string;\n readonly completeWith: (value: O) => void;\n}\n\nexport type TuiPopover<T, O> = T &\n TuiPopoverContext<O> & {\n content: PolymorpheusContent<T & TuiPopoverContext<O>>;\n };\n\n@Injectable()\nexport abstract class TuiPopoverService<T, K = void> {\n private readonly component: PolymorpheusComponent<any>;\n private readonly items$: BehaviorSubject<ReadonlyArray<TuiPopover<T, any>>>;\n private readonly id = inject(TuiIdService);\n\n constructor(\n items: ProviderToken<BehaviorSubject<ReadonlyArray<TuiPopover<T, any>>>>,\n component: Type<any>,\n protected readonly options: T = {} as T,\n ) {\n this.component = new PolymorpheusComponent(component);\n this.items$ = inject(items);\n }\n\n public open<G = void>(\n content: PolymorpheusContent<T & TuiPopoverContext<K extends void ? G : K>>,\n options: Partial<T> = {},\n ): Observable<K extends void ? G : K> {\n return new Observable((observer) => {\n const item = {\n ...this.options,\n ...options,\n content,\n $implicit: observer,\n component: this.component,\n createdAt: Date.now(),\n id: this.id.generate(),\n completeWith: (result: K extends void ? G : K): void => {\n observer.next(result);\n observer.complete();\n },\n };\n\n this.items$.next([...this.items$.value, item]);\n\n return () => {\n this.items$.next(this.items$.value.filter((value) => value !== item));\n };\n });\n }\n}\n\nexport function tuiAsPopover(popover: Type<TuiPopoverService<any>>): Provider {\n return tuiProvide(TuiPopoverService, popover);\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {inject, Injectable} from '@angular/core';\nimport {WA_ANIMATION_FRAME, WA_PERFORMANCE} from '@ng-web-apis/common';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiEaseInOutQuad} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {defer, endWith, map, of, switchMap, takeUntil, tap, timer} from 'rxjs';\n\nconst SCROLL_TIME = 300;\n\nfunction getX(elementOrWindow: Element | Window): number {\n return 'scrollX' in elementOrWindow\n ? elementOrWindow.scrollX\n : elementOrWindow.scrollLeft;\n}\n\nfunction getY(elementOrWindow: Element | Window): number {\n return 'scrollY' in elementOrWindow\n ? elementOrWindow.scrollY\n : elementOrWindow.scrollTop;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiScrollService {\n private readonly performanceRef = inject(WA_PERFORMANCE);\n private readonly animationFrame$ = inject(WA_ANIMATION_FRAME);\n\n public scroll$(\n elementOrWindow: Element | Window,\n scrollTop: number,\n scrollLeft: number = getX(elementOrWindow),\n duration: number = SCROLL_TIME,\n ): Observable<[number, number]> {\n ngDevMode && console.assert(duration >= 0, 'duration cannot be negative');\n ngDevMode && console.assert(scrollTop >= 0, 'scrollTop cannot be negative');\n ngDevMode && console.assert(scrollLeft >= 0, 'scrollLeft cannot be negative');\n\n const initialTop = getY(elementOrWindow);\n const initialLeft = getX(elementOrWindow);\n const deltaTop = scrollTop - initialTop;\n const deltaLeft = scrollLeft - initialLeft;\n const observable = !duration\n ? of<[number, number]>([scrollTop, scrollLeft])\n : defer(() => of(this.performanceRef.now())).pipe(\n switchMap((start) =>\n this.animationFrame$.pipe(map((now) => now - start)),\n ),\n map((elapsed) => tuiEaseInOutQuad(tuiClamp(elapsed / duration, 0, 1))),\n map<number, [number, number]>((percent) => [\n initialTop + deltaTop * percent,\n initialLeft + deltaLeft * percent,\n ]),\n takeUntil(timer(duration)),\n endWith<[number, number]>([scrollTop, scrollLeft]),\n );\n\n return observable.pipe(\n tap(([scrollTop, scrollLeft]) => {\n elementOrWindow.scrollTo?.(scrollLeft, scrollTop);\n }),\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable} from '@angular/core';\nimport {Meta} from '@angular/platform-browser';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils';\n\nexport const TUI_THEME_COLOR = tuiCreateTokenFromFactory<string>(\n () => inject(Meta).getTag('name=\"theme-color\"')?.content ?? '',\n);\n\ninterface TuiThemeColor {\n get color(): string;\n set color(value: string);\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiThemeColorService implements TuiThemeColor {\n private readonly current = inject(TUI_THEME_COLOR);\n private readonly doc = inject(DOCUMENT);\n private readonly meta = inject(Meta);\n\n public get color(): string {\n return this.current;\n }\n\n public set color(content: string) {\n this.meta.updateTag({name: 'theme-color', content});\n this.doc.documentElement.style.setProperty('--tui-theme-color', content);\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-services.mjs","sources":["../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/popover.service.ts","../../../projects/cdk/services/scroll.service.ts","../../../projects/cdk/services/theme-color.service.ts","../../../projects/cdk/services/taiga-ui-cdk-services.ts"],"sourcesContent":["import {inject, Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiIdService {\n private static autoId = 0;\n\n public generate(): string {\n return `tui_${TuiIdService.autoId++}${Date.now()}`;\n }\n}\n\nexport function tuiInjectId(): string {\n return inject(TuiIdService).generate();\n}\n","import type {Provider, ProviderToken, Type} from '@angular/core';\nimport {inject, Injectable} from '@angular/core';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\nimport type {BehaviorSubject, Observer} from 'rxjs';\nimport {Observable} from 'rxjs';\n\nimport {TuiIdService} from './id.service';\n\nexport interface TuiPopoverContext<O> extends TuiContext<Observer<O>> {\n readonly component: PolymorpheusComponent<any>;\n readonly createdAt: number;\n readonly id: string;\n readonly completeWith: (value: O) => void;\n}\n\nexport type TuiPopover<T, O> = T &\n TuiPopoverContext<O> & {\n content: PolymorpheusContent<T & TuiPopoverContext<O>>;\n };\n\n@Injectable()\nexport abstract class TuiPopoverService<T, K = void> {\n private readonly component: PolymorpheusComponent<any>;\n private readonly items$: BehaviorSubject<ReadonlyArray<TuiPopover<T, any>>>;\n private readonly id = inject(TuiIdService);\n\n constructor(\n items: ProviderToken<BehaviorSubject<ReadonlyArray<TuiPopover<T, any>>>>,\n component: Type<any>,\n protected readonly options: T = {} as T,\n ) {\n this.component = new PolymorpheusComponent(component);\n this.items$ = inject(items);\n }\n\n public open<G = void>(\n content: PolymorpheusContent<T & TuiPopoverContext<K extends void ? G : K>>,\n options: Partial<T> = {},\n ): Observable<K extends void ? G : K> {\n return new Observable((observer) => {\n const item = {\n ...this.options,\n ...options,\n content,\n $implicit: observer,\n component: this.component,\n createdAt: Date.now(),\n id: this.id.generate(),\n completeWith: (result: K extends void ? G : K): void => {\n observer.next(result);\n observer.complete();\n },\n };\n\n this.items$.next([...this.items$.value, item]);\n\n return () => {\n this.items$.next(this.items$.value.filter((value) => value !== item));\n };\n });\n }\n}\n\nexport function tuiAsPopover(popover: Type<TuiPopoverService<any>>): Provider {\n return tuiProvide(TuiPopoverService, popover);\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {inject, Injectable} from '@angular/core';\nimport {WA_ANIMATION_FRAME, WA_PERFORMANCE} from '@ng-web-apis/common';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiEaseInOutQuad} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {defer, endWith, map, of, switchMap, takeUntil, tap, timer} from 'rxjs';\n\nconst SCROLL_TIME = 300;\n\nfunction getX(elementOrWindow: Element | Window): number {\n return 'scrollX' in elementOrWindow\n ? elementOrWindow.scrollX\n : elementOrWindow.scrollLeft;\n}\n\nfunction getY(elementOrWindow: Element | Window): number {\n return 'scrollY' in elementOrWindow\n ? elementOrWindow.scrollY\n : elementOrWindow.scrollTop;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiScrollService {\n private readonly performanceRef = inject(WA_PERFORMANCE);\n private readonly animationFrame$ = inject(WA_ANIMATION_FRAME);\n\n public scroll$(\n elementOrWindow: Element | Window,\n scrollTop: number,\n scrollLeft: number = getX(elementOrWindow),\n duration: number = SCROLL_TIME,\n ): Observable<[number, number]> {\n ngDevMode && console.assert(duration >= 0, 'duration cannot be negative');\n ngDevMode && console.assert(scrollTop >= 0, 'scrollTop cannot be negative');\n ngDevMode && console.assert(scrollLeft >= 0, 'scrollLeft cannot be negative');\n\n const initialTop = getY(elementOrWindow);\n const initialLeft = getX(elementOrWindow);\n const deltaTop = scrollTop - initialTop;\n const deltaLeft = scrollLeft - initialLeft;\n const observable = !duration\n ? of<[number, number]>([scrollTop, scrollLeft])\n : defer(() => of(this.performanceRef.now())).pipe(\n switchMap((start) =>\n this.animationFrame$.pipe(map((now) => now - start)),\n ),\n map((elapsed) => tuiEaseInOutQuad(tuiClamp(elapsed / duration, 0, 1))),\n map<number, [number, number]>((percent) => [\n initialTop + deltaTop * percent,\n initialLeft + deltaLeft * percent,\n ]),\n takeUntil(timer(duration)),\n endWith<[number, number]>([scrollTop, scrollLeft]),\n );\n\n return observable.pipe(\n tap(([scrollTop, scrollLeft]) => {\n elementOrWindow.scrollTo?.(scrollLeft, scrollTop);\n }),\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable} from '@angular/core';\nimport {Meta} from '@angular/platform-browser';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils';\n\nexport const TUI_THEME_COLOR = tuiCreateTokenFromFactory<string>(\n () => inject(Meta).getTag('name=\"theme-color\"')?.content ?? '',\n);\n\ninterface TuiThemeColor {\n get color(): string;\n set color(value: string);\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiThemeColorService implements TuiThemeColor {\n private readonly current = inject(TUI_THEME_COLOR);\n private readonly doc = inject(DOCUMENT);\n private readonly meta = inject(Meta);\n\n public get color(): string {\n return this.current;\n }\n\n public set color(content: string) {\n this.meta.updateTag({name: 'theme-color', content});\n this.doc.documentElement.style.setProperty('--tui-theme-color', content);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -40,7 +40,7 @@ function tuiParseHex(hex, alpha) {
40
40
  }
41
41
  const chunkSize = Math.floor((hex.length - 1) / 3);
42
42
  const hexArr = getChunksFromString(hex.slice(1), chunkSize);
43
- const [r, g, b, a] = hexArr?.map(convertHexUnitTo256) ?? [];
43
+ const [r = NaN, g = NaN, b = NaN, a] = hexArr?.map(convertHexUnitTo256) ?? [];
44
44
  const floatAlpha = getAlphaFloat(a, alpha);
45
45
  return [r, g, b, floatAlpha];
46
46
  }
@@ -88,11 +88,11 @@ function tuiParseColor(color) {
88
88
  // https://stackoverflow.com/a/20238168/2706426
89
89
  //
90
90
  // SETUP CODE
91
- const COMMA = '\\s*,\\s*'; // Allow space around comma.
91
+ const COMMA = String.raw `\s*,\s*`; // Allow space around comma.
92
92
  const HEX = '#(?:[a-f0-9]{6}|[a-f0-9]{3})'; // 3 or 6 character form
93
- const RGB = '\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*\\)'; // "(1, 2, 3)"
94
- const RGBA = '\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*,\\s*\\d*\\.?\\d+\\)'; // "(1, 2, 3, 4)"
95
- const VALUE = '(?:[+-]?\\d*\\.?\\d+)(?:%|[a-z]+)?'; // ".9", "-5px", "100%".
93
+ const RGB = String.raw `\(\s*(?:\d{1,3}\s*,\s*){2}\d{1,3}\s*\)`; // "(1, 2, 3)"
94
+ const RGBA = String.raw `\(\s*(?:\d{1,3}\s*,\s*){2}\d{1,3}\s*,\s*\d*\.?\d+\)`; // "(1, 2, 3, 4)"
95
+ const VALUE = String.raw `(?:[+-]?\d*\.?\d+)(?:%|[a-z]+)?`; // ".9", "-5px", "100%".
96
96
  const KEYWORD = '[_a-z-][_a-z0-9-]*'; // "red", "transparent", "border-collapse".
97
97
  const COLOR = [
98
98
  '(?:',
@@ -108,16 +108,16 @@ const COLOR = [
108
108
  ')',
109
109
  ];
110
110
  const REGEXP_ARRAY = [
111
- '\\s*(',
111
+ String.raw `\s*(`,
112
112
  ...COLOR,
113
113
  ')',
114
- '(?:\\s+',
114
+ String.raw `(?:\s+`,
115
115
  '(',
116
116
  VALUE,
117
117
  '))?',
118
118
  '(?:',
119
119
  COMMA,
120
- '\\s*)?',
120
+ String.raw `\s*)?`,
121
121
  ];
122
122
  function getPosition(match, stops) {
123
123
  const fallback = stops === 1 ? '100%' : `${stops}%`;
@@ -135,8 +135,8 @@ function tuiParseGradient(input) {
135
135
  let matchColorStop = stopsRegexp.exec(stopsString);
136
136
  while (matchColorStop !== null) {
137
137
  stops = stops.concat({
138
- color: matchColorStop[1],
139
- position: getPosition(matchColorStop[2], stops.length),
138
+ color: matchColorStop[1] || '',
139
+ position: getPosition(matchColorStop[2] || '', stops.length),
140
140
  });
141
141
  matchColorStop = stopsRegexp.exec(stopsString);
142
142
  }
@@ -168,15 +168,13 @@ function tuiRgbaToHex(color) {
168
168
  if (!tuiIsValidRgba(color)) {
169
169
  throw new Error('Invalid RGBa');
170
170
  }
171
- const rgb = color
172
- .replaceAll(/\s/g, '')
173
- .match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i) ??
174
- [];
171
+ const rgb = color.replaceAll(/\s/g, '').match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i) ??
172
+ null;
175
173
  let alpha = (rgb?.[4] ?? '').toString().trim();
176
174
  let hex = rgb
177
- ? (rgb[1] | (1 << 8)).toString(16).slice(1) +
178
- (rgb[2] | (1 << 8)).toString(16).slice(1) +
179
- (rgb[3] | (1 << 8)).toString(16).slice(1)
175
+ ? ((parseInt(rgb?.[1] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +
176
+ ((parseInt(rgb?.[2] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +
177
+ ((parseInt(rgb?.[3] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1)
180
178
  : color;
181
179
  alpha = alpha !== '' ? alpha : 0o1;
182
180
  alpha = ((Number(alpha) * 255) | (1 << 8)).toString(16).slice(1);
@@ -184,8 +182,8 @@ function tuiRgbaToHex(color) {
184
182
  return `#${hex.toUpperCase()}`;
185
183
  }
186
184
  function tuiIsValidRgba(rgba) {
187
- const range = '(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|2[0-5]{2})';
188
- const alpha = '([01]|0?\\.\\d+)';
185
+ const range = String.raw `(\d|[1-9]\d|1\d{2}|2[0-4]\d|2[0-5]{2})`;
186
+ const alpha = String.raw `([01]|0?\.\d+)`;
189
187
  return new RegExp(`^(?:rgb\\(\\s*${range}\\s*,\\s*${range}\\s*,\\s*${range}\\s*\\)|rgba\\(\\s*${range}\\s*,\\s*${range}\\s*,\\s*${range}\\s*,\\s*${alpha}\\s*\\))$`).test(rgba);
190
188
  }
191
189
 
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-color.mjs","sources":["../../../projects/cdk/utils/color/get-gradient-data.ts","../../../projects/cdk/utils/color/hex-to-rgb.ts","../../../projects/cdk/utils/color/hex-to-rgba.ts","../../../projects/cdk/utils/color/hsv-to-rgb.ts","../../../projects/cdk/utils/color/parse-color.ts","../../../projects/cdk/utils/color/parse-gradient.ts","../../../projects/cdk/utils/color/rgb-to-hex.ts","../../../projects/cdk/utils/color/rgb-to-hsv.ts","../../../projects/cdk/utils/color/rgba-to-hex.ts","../../../projects/cdk/utils/color/taiga-ui-cdk-utils-color.ts"],"sourcesContent":["export function tuiGetGradientData(gradient: string): string {\n return gradient\n .slice(0, Math.max(0, gradient.length - 1))\n .replace('linear-gradient(', '');\n}\n","export function tuiHexToRgb(hex: string): [number, number, number] {\n const matches = hex\n .replace('#', '')\n .split('')\n .map((char, _, array) => (array.length === 3 ? char + char : char))\n .join('')\n .match(/.{2}/g);\n\n return matches\n ? (matches.map((x) => Number.parseInt(x, 16)) as [number, number, number])\n : [0, 0, 0];\n}\n","const getChunksFromString = (hex: string, chunkSize: number): RegExpMatchArray | null =>\n hex.match(new RegExp(`.{${chunkSize}}`, 'g'));\n\nconst convertHexUnitTo256 = (hexStr: string): number =>\n parseInt(hexStr.repeat(2 / hexStr.length), 16);\n\nconst getAlphaFloat = (a: number, alpha?: number): number => {\n if (typeof a !== 'undefined') {\n return Number((a / 255).toFixed(2));\n }\n\n if (typeof alpha !== 'number' || alpha < 0 || alpha > 1) {\n return 1;\n }\n\n return alpha;\n};\n\nexport function tuiHexToRGBA(hex: string, alpha?: number): string {\n const [r, g, b, a] = tuiParseHex(hex, alpha);\n\n return a < 1 ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`;\n}\n\nexport function tuiIsValidHex(hex: string): boolean {\n return /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);\n}\n\nexport function tuiParseHex(\n hex: string,\n alpha?: number,\n): [number, number, number, number] {\n if (!tuiIsValidHex(hex)) {\n throw new Error('Invalid HEX');\n }\n\n const chunkSize = Math.floor((hex.length - 1) / 3);\n const hexArr = getChunksFromString(hex.slice(1), chunkSize);\n const [r, g, b, a] = hexArr?.map(convertHexUnitTo256) ?? [];\n const floatAlpha = getAlphaFloat(a, alpha);\n\n return [r, g, b, floatAlpha];\n}\n","function hsvToColor(h: number, s: number, v: number, n: number): number {\n const k = (n + h / 60) % 6;\n\n return Math.round(v - v * s * Math.max(Math.min(k, 4 - k, 1), 0));\n}\n\n/**\n * https://stackoverflow.com/a/54024653/2706426\n */\nexport function tuiHsvToRgb(h: number, s: number, v: number): [number, number, number] {\n return [hsvToColor(h, s, v, 5), hsvToColor(h, s, v, 3), hsvToColor(h, s, v, 1)];\n}\n","const DEFAULT: [number, number, number, number] = [0, 0, 0, 1];\n\nexport function tuiParseColor(color: string): [number, number, number, number] {\n const stripped = color\n .replace('#', '')\n .replace('rgba(', '')\n .replace('rgb(', '')\n .replace(')', '');\n const array = stripped.split(',').map((item) => parseFloat(item));\n\n if (array.length === 4) {\n return array as [number, number, number, number];\n }\n\n if (array.length === 3) {\n return array.concat(1) as [number, number, number, number];\n }\n\n const matches = stripped.match(new RegExp(`(.{${stripped.length / 3}})`, 'g'));\n\n if (!matches) {\n return DEFAULT;\n }\n\n const parsed = matches.map((char) =>\n parseInt(stripped.length % 2 ? char + char : char, 16),\n );\n\n return [\n parsed[0] || DEFAULT[0],\n parsed[1] || DEFAULT[1],\n parsed[2] || DEFAULT[2],\n parsed[3] === undefined ? DEFAULT[3] : parsed[3],\n ];\n}\n","import {tuiParseColor} from './parse-color';\n\nexport interface TuiParsedGradient {\n readonly side: TuiGradientDirection;\n readonly stops: ReadonlyArray<{\n readonly color: string;\n readonly position: string;\n }>;\n}\n\nexport type TuiGradientDirection =\n | 'to bottom left'\n | 'to bottom right'\n | 'to bottom'\n | 'to left'\n | 'to right'\n | 'to top left'\n | 'to top right'\n | 'to top';\n\n//\n// TypeScript parser based on Dean Taylor's answer:\n// https://stackoverflow.com/a/20238168/2706426\n//\n// SETUP CODE\nconst COMMA = '\\\\s*,\\\\s*'; // Allow space around comma.\nconst HEX = '#(?:[a-f0-9]{6}|[a-f0-9]{3})'; // 3 or 6 character form\nconst RGB = '\\\\(\\\\s*(?:\\\\d{1,3}\\\\s*,\\\\s*){2}\\\\d{1,3}\\\\s*\\\\)'; // \"(1, 2, 3)\"\nconst RGBA = '\\\\(\\\\s*(?:\\\\d{1,3}\\\\s*,\\\\s*){2}\\\\d{1,3}\\\\s*,\\\\s*\\\\d*\\\\.?\\\\d+\\\\)'; // \"(1, 2, 3, 4)\"\nconst VALUE = '(?:[+-]?\\\\d*\\\\.?\\\\d+)(?:%|[a-z]+)?'; // \".9\", \"-5px\", \"100%\".\nconst KEYWORD = '[_a-z-][_a-z0-9-]*'; // \"red\", \"transparent\", \"border-collapse\".\nconst COLOR = [\n '(?:',\n HEX,\n '|',\n '(?:rgb|hsl)',\n RGB,\n '|',\n '(?:rgba|hsla)',\n RGBA,\n '|',\n KEYWORD,\n ')',\n];\nconst REGEXP_ARRAY = [\n '\\\\s*(',\n ...COLOR,\n ')',\n '(?:\\\\s+',\n '(',\n VALUE,\n '))?',\n '(?:',\n COMMA,\n '\\\\s*)?',\n];\n\nfunction getPosition(match: string, stops: number): string {\n const fallback = stops === 1 ? '100%' : `${stops}%`;\n\n return match?.includes('%') ? match : fallback;\n}\n\nexport function tuiParseGradient(input: string): TuiParsedGradient {\n const stopsRegexp = new RegExp(REGEXP_ARRAY.join(''), 'gi');\n const stopsString =\n input.startsWith('to') || input.match(/^\\d/)\n ? input.slice(Math.max(0, input.indexOf(',') + 1)).trim()\n : input;\n\n const side = input.startsWith('to')\n ? (input.split(',')[0] as TuiGradientDirection)\n : 'to bottom';\n let stops: TuiParsedGradient['stops'] = [];\n\n let matchColorStop = stopsRegexp.exec(stopsString);\n\n while (matchColorStop !== null) {\n stops = stops.concat({\n color: matchColorStop[1],\n position: getPosition(matchColorStop[2], stops.length),\n });\n\n matchColorStop = stopsRegexp.exec(stopsString);\n }\n\n stops = stops.filter(({color}) => color.startsWith('#') || color.startsWith('rgb'));\n\n return {\n stops,\n side,\n };\n}\n\nexport function tuiToGradient({stops, side}: TuiParsedGradient): string {\n return `linear-gradient(${side}, ${stops\n .map(\n ({color, position}) => `rgba(${tuiParseColor(color).join(', ')}) ${position}`,\n )\n .join(', ')})`;\n}\n","export function tuiRgbToHex(r: number, g: number, b: number): string {\n return `#${[r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n}\n","export function tuiRgbToHsv(r: number, g: number, b: number): [number, number, number] {\n const v = Math.max(r, g, b);\n const n = v - Math.min(r, g, b);\n\n // eslint-disable-next-line no-nested-ternary\n const h = n && (v === r ? (g - b) / n : v === g ? 2 + (b - r) / n : 4 + (r - g) / n);\n\n return [60 * (h < 0 ? h + 6 : h), v && n / v, v];\n}\n","export function tuiRgbaToHex(color: string): string {\n if (!tuiIsValidRgba(color)) {\n throw new Error('Invalid RGBa');\n }\n\n const rgb: number[] =\n (color\n .replaceAll(/\\s/g, '')\n .match(/^rgba?\\((\\d+),(\\d+),(\\d+),?([^,\\s)]+)?/i) as unknown as number[]) ??\n [];\n let alpha: number | string = (rgb?.[4] ?? '').toString().trim();\n let hex = rgb\n ? (rgb[1] | (1 << 8)).toString(16).slice(1) +\n (rgb[2] | (1 << 8)).toString(16).slice(1) +\n (rgb[3] | (1 << 8)).toString(16).slice(1)\n : color;\n\n alpha = alpha !== '' ? alpha : 0o1;\n alpha = ((Number(alpha) * 255) | (1 << 8)).toString(16).slice(1);\n hex += alpha;\n\n return `#${hex.toUpperCase()}`;\n}\n\nexport function tuiIsValidRgba(rgba: string): boolean {\n const range = '(\\\\d|[1-9]\\\\d|1\\\\d{2}|2[0-4]\\\\d|2[0-5]{2})';\n const alpha = '([01]|0?\\\\.\\\\d+)';\n\n return new RegExp(\n `^(?:rgb\\\\(\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*\\\\)|rgba\\\\(\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${alpha}\\\\s*\\\\))$`,\n ).test(rgba);\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-color.mjs","sources":["../../../projects/cdk/utils/color/get-gradient-data.ts","../../../projects/cdk/utils/color/hex-to-rgb.ts","../../../projects/cdk/utils/color/hex-to-rgba.ts","../../../projects/cdk/utils/color/hsv-to-rgb.ts","../../../projects/cdk/utils/color/parse-color.ts","../../../projects/cdk/utils/color/parse-gradient.ts","../../../projects/cdk/utils/color/rgb-to-hex.ts","../../../projects/cdk/utils/color/rgb-to-hsv.ts","../../../projects/cdk/utils/color/rgba-to-hex.ts","../../../projects/cdk/utils/color/taiga-ui-cdk-utils-color.ts"],"sourcesContent":["export function tuiGetGradientData(gradient: string): string {\n return gradient\n .slice(0, Math.max(0, gradient.length - 1))\n .replace('linear-gradient(', '');\n}\n","export function tuiHexToRgb(hex: string): [number, number, number] {\n const matches = hex\n .replace('#', '')\n .split('')\n .map((char, _, array) => (array.length === 3 ? char + char : char))\n .join('')\n .match(/.{2}/g);\n\n return matches\n ? (matches.map((x) => Number.parseInt(x, 16)) as [number, number, number])\n : [0, 0, 0];\n}\n","const getChunksFromString = (hex: string, chunkSize: number): RegExpMatchArray | null =>\n hex.match(new RegExp(`.{${chunkSize}}`, 'g'));\n\nconst convertHexUnitTo256 = (hexStr: string): number =>\n parseInt(hexStr.repeat(2 / hexStr.length), 16);\n\nconst getAlphaFloat = (a?: number, alpha?: number): number => {\n if (typeof a !== 'undefined') {\n return Number((a / 255).toFixed(2));\n }\n\n if (typeof alpha !== 'number' || alpha < 0 || alpha > 1) {\n return 1;\n }\n\n return alpha;\n};\n\nexport function tuiHexToRGBA(hex: string, alpha?: number): string {\n const [r, g, b, a] = tuiParseHex(hex, alpha);\n\n return a < 1 ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`;\n}\n\nexport function tuiIsValidHex(hex: string): boolean {\n return /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);\n}\n\nexport function tuiParseHex(\n hex: string,\n alpha?: number,\n): [number, number, number, number] {\n if (!tuiIsValidHex(hex)) {\n throw new Error('Invalid HEX');\n }\n\n const chunkSize = Math.floor((hex.length - 1) / 3);\n const hexArr = getChunksFromString(hex.slice(1), chunkSize);\n const [r = NaN, g = NaN, b = NaN, a] = hexArr?.map(convertHexUnitTo256) ?? [];\n const floatAlpha = getAlphaFloat(a, alpha);\n\n return [r, g, b, floatAlpha];\n}\n","function hsvToColor(h: number, s: number, v: number, n: number): number {\n const k = (n + h / 60) % 6;\n\n return Math.round(v - v * s * Math.max(Math.min(k, 4 - k, 1), 0));\n}\n\n/**\n * https://stackoverflow.com/a/54024653/2706426\n */\nexport function tuiHsvToRgb(h: number, s: number, v: number): [number, number, number] {\n return [hsvToColor(h, s, v, 5), hsvToColor(h, s, v, 3), hsvToColor(h, s, v, 1)];\n}\n","const DEFAULT: [number, number, number, number] = [0, 0, 0, 1];\n\nexport function tuiParseColor(color: string): [number, number, number, number] {\n const stripped = color\n .replace('#', '')\n .replace('rgba(', '')\n .replace('rgb(', '')\n .replace(')', '');\n const array = stripped.split(',').map((item) => parseFloat(item));\n\n if (array.length === 4) {\n return array as [number, number, number, number];\n }\n\n if (array.length === 3) {\n return array.concat(1) as [number, number, number, number];\n }\n\n const matches = stripped.match(new RegExp(`(.{${stripped.length / 3}})`, 'g'));\n\n if (!matches) {\n return DEFAULT;\n }\n\n const parsed = matches.map((char) =>\n parseInt(stripped.length % 2 ? char + char : char, 16),\n );\n\n return [\n parsed[0] || DEFAULT[0],\n parsed[1] || DEFAULT[1],\n parsed[2] || DEFAULT[2],\n parsed[3] === undefined ? DEFAULT[3] : parsed[3],\n ];\n}\n","import {tuiParseColor} from './parse-color';\n\nexport interface TuiParsedGradient {\n readonly side: TuiGradientDirection;\n readonly stops: ReadonlyArray<{\n readonly color: string;\n readonly position: string;\n }>;\n}\n\nexport type TuiGradientDirection =\n | 'to bottom left'\n | 'to bottom right'\n | 'to bottom'\n | 'to left'\n | 'to right'\n | 'to top left'\n | 'to top right'\n | 'to top';\n\n//\n// TypeScript parser based on Dean Taylor's answer:\n// https://stackoverflow.com/a/20238168/2706426\n//\n// SETUP CODE\nconst COMMA = String.raw`\\s*,\\s*`; // Allow space around comma.\nconst HEX = '#(?:[a-f0-9]{6}|[a-f0-9]{3})'; // 3 or 6 character form\nconst RGB = String.raw`\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*\\)`; // \"(1, 2, 3)\"\nconst RGBA = String.raw`\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*,\\s*\\d*\\.?\\d+\\)`; // \"(1, 2, 3, 4)\"\nconst VALUE = String.raw`(?:[+-]?\\d*\\.?\\d+)(?:%|[a-z]+)?`; // \".9\", \"-5px\", \"100%\".\nconst KEYWORD = '[_a-z-][_a-z0-9-]*'; // \"red\", \"transparent\", \"border-collapse\".\nconst COLOR = [\n '(?:',\n HEX,\n '|',\n '(?:rgb|hsl)',\n RGB,\n '|',\n '(?:rgba|hsla)',\n RGBA,\n '|',\n KEYWORD,\n ')',\n];\nconst REGEXP_ARRAY = [\n String.raw`\\s*(`,\n ...COLOR,\n ')',\n String.raw`(?:\\s+`,\n '(',\n VALUE,\n '))?',\n '(?:',\n COMMA,\n String.raw`\\s*)?`,\n];\n\nfunction getPosition(match: string, stops: number): string {\n const fallback = stops === 1 ? '100%' : `${stops}%`;\n\n return match?.includes('%') ? match : fallback;\n}\n\nexport function tuiParseGradient(input: string): TuiParsedGradient {\n const stopsRegexp = new RegExp(REGEXP_ARRAY.join(''), 'gi');\n const stopsString =\n input.startsWith('to') || input.match(/^\\d/)\n ? input.slice(Math.max(0, input.indexOf(',') + 1)).trim()\n : input;\n\n const side = input.startsWith('to')\n ? (input.split(',')[0] as TuiGradientDirection)\n : 'to bottom';\n let stops: TuiParsedGradient['stops'] = [];\n\n let matchColorStop = stopsRegexp.exec(stopsString);\n\n while (matchColorStop !== null) {\n stops = stops.concat({\n color: matchColorStop[1] || '',\n position: getPosition(matchColorStop[2] || '', stops.length),\n });\n\n matchColorStop = stopsRegexp.exec(stopsString);\n }\n\n stops = stops.filter(({color}) => color.startsWith('#') || color.startsWith('rgb'));\n\n return {\n stops,\n side,\n };\n}\n\nexport function tuiToGradient({stops, side}: TuiParsedGradient): string {\n return `linear-gradient(${side}, ${stops\n .map(\n ({color, position}) => `rgba(${tuiParseColor(color).join(', ')}) ${position}`,\n )\n .join(', ')})`;\n}\n","export function tuiRgbToHex(r: number, g: number, b: number): string {\n return `#${[r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n}\n","export function tuiRgbToHsv(r: number, g: number, b: number): [number, number, number] {\n const v = Math.max(r, g, b);\n const n = v - Math.min(r, g, b);\n\n // eslint-disable-next-line no-nested-ternary\n const h = n && (v === r ? (g - b) / n : v === g ? 2 + (b - r) / n : 4 + (r - g) / n);\n\n return [60 * (h < 0 ? h + 6 : h), v && n / v, v];\n}\n","export function tuiRgbaToHex(color: string): string {\n if (!tuiIsValidRgba(color)) {\n throw new Error('Invalid RGBa');\n }\n\n const rgb =\n color.replaceAll(/\\s/g, '').match(/^rgba?\\((\\d+),(\\d+),(\\d+),?([^,\\s)]+)?/i) ??\n null;\n\n let alpha: number | string = (rgb?.[4] ?? '').toString().trim();\n\n let hex = rgb\n ? ((parseInt(rgb?.[1] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +\n ((parseInt(rgb?.[2] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +\n ((parseInt(rgb?.[3] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1)\n : color;\n\n alpha = alpha !== '' ? alpha : 0o1;\n alpha = ((Number(alpha) * 255) | (1 << 8)).toString(16).slice(1);\n hex += alpha;\n\n return `#${hex.toUpperCase()}`;\n}\n\nexport function tuiIsValidRgba(rgba: string): boolean {\n const range = String.raw`(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|2[0-5]{2})`;\n const alpha = String.raw`([01]|0?\\.\\d+)`;\n\n return new RegExp(\n `^(?:rgb\\\\(\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*\\\\)|rgba\\\\(\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${alpha}\\\\s*\\\\))$`,\n ).test(rgba);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -128,7 +128,7 @@ function tuiIsNativeFocusedIn(node) {
128
128
  function tuiMoveFocus(currentIndex, elements, step) {
129
129
  currentIndex += step;
130
130
  while (currentIndex >= 0 && currentIndex < elements.length) {
131
- elements[currentIndex].focus();
131
+ elements[currentIndex]?.focus();
132
132
  if (tuiIsNativeFocused(elements[currentIndex])) {
133
133
  return;
134
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-focus.mjs","sources":["../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/focused-in.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/focus/is-native-focused-in.ts","../../../projects/cdk/utils/focus/move-focus.ts","../../../projects/cdk/utils/focus/taiga-ui-cdk-utils-focus.ts"],"sourcesContent":["/**\n * Returns current active element, including shadow dom\n *\n * @return element or null\n */\nexport function tuiGetNativeFocused({activeElement}: Document): Element | null {\n if (!activeElement?.shadowRoot) {\n return activeElement;\n }\n\n let element = activeElement.shadowRoot.activeElement;\n\n while (element?.shadowRoot) {\n element = element.shadowRoot.activeElement;\n }\n\n return element;\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Finds and blurs current active element, including shadow DOM\n */\nexport function tuiBlurNativeFocused(doc: Document): void {\n const activeElement = tuiGetNativeFocused(doc);\n\n if (tuiIsHTMLElement(activeElement)) {\n activeElement.blur();\n }\n}\n","import type {Signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {fromEvent, map, merge} from 'rxjs';\n\nexport function tuiFocusedIn(node: Node): Signal<boolean> {\n return toSignal(\n merge(\n fromEvent(node, 'focusin').pipe(map(TUI_TRUE_HANDLER)),\n fromEvent(node, 'focusout').pipe(map(TUI_FALSE_HANDLER)),\n ),\n {initialValue: false},\n );\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\n/**\n * Checks for signs that element can be focused with keyboard. tabIndex above 0 is ignored to\n * only target natural focus order. Not checking the possibility of an element to\n * be focused, for example element can have display: none applied to it or any other\n * circumstances could prevent actual focus.\n */\nexport function tuiIsNativeKeyboardFocusable(element: Element): boolean {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n\n if (\n (tuiIsHTMLElement(element) && element.isContentEditable) ||\n element.getAttribute('tabIndex') === '0'\n ) {\n return true;\n }\n\n switch (element.tagName) {\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'VIDEO':\n case 'AUDIO':\n return element.hasAttribute('controls');\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n default:\n return false;\n }\n}\n","import {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\n\nexport function tuiIsNativeMouseFocusable(element: Element): boolean {\n return (\n !element.hasAttribute('disabled') &&\n (element.getAttribute('tabIndex') === '-1' ||\n tuiIsNativeKeyboardFocusable(element))\n );\n}\n","import {svgNodeFilter} from '@taiga-ui/cdk/constants';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\nimport {tuiIsNativeMouseFocusable} from './is-native-mouse-focusable';\n\nexport interface TuiGetClosestFocusableOptions {\n /**\n * @description:\n * current HTML element\n */\n initial: Element;\n\n /**\n * @description:\n * determine if only keyboard focus is of interest\n */\n keyboard?: boolean;\n\n /**\n * @description:\n * should it look backwards instead (find item that will be focused with Shift + Tab)\n */\n previous?: boolean;\n\n /**\n * @description:\n * top Node limiting the search area\n */\n root: Node;\n}\n\n/**\n * @description:\n * Finds the closest element that can be focused with a keyboard or mouse in theory\n */\nexport function tuiGetClosestFocusable({\n initial,\n root,\n previous = false,\n keyboard = true,\n}: TuiGetClosestFocusableOptions): HTMLElement | null {\n if (!root.ownerDocument) {\n return null;\n }\n\n const check = keyboard ? tuiIsNativeKeyboardFocusable : tuiIsNativeMouseFocusable;\n const treeWalker = root.ownerDocument.createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n svgNodeFilter,\n );\n\n treeWalker.currentNode = initial;\n\n while (previous ? treeWalker.previousNode() : treeWalker.nextNode()) {\n if (tuiIsHTMLElement(treeWalker.currentNode)) {\n initial = treeWalker.currentNode;\n }\n\n if (tuiIsHTMLElement(initial) && check(initial)) {\n return initial;\n }\n }\n\n return null;\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if element is focused.\n *\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\n *\n * @param node or null (as a common return value of DOM nodes walking)\n * @return true if focused\n */\nexport function tuiIsNativeFocused(node?: Node | null): boolean {\n return (\n !!node?.ownerDocument &&\n tuiGetNativeFocused(node.ownerDocument) === node &&\n node.ownerDocument.hasFocus()\n );\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if focused element is within given element.\n *\n * @param node\n * @return true if focused node is contained within element\n */\nexport function tuiIsNativeFocusedIn(node?: Node | null): boolean {\n const focused = node?.ownerDocument && tuiGetNativeFocused(node.ownerDocument);\n\n return !!focused && node.contains(focused) && !!node.ownerDocument?.hasFocus();\n}\n","import {tuiIsNativeFocused} from './is-native-focused';\n\n/**\n * Utility method for moving focus in a list of elements\n *\n * @param currentIndex currently focused index\n * @param elements array of focusable elements\n * @param step a step to move focus by, typically -1 or 1\n */\nexport function tuiMoveFocus(\n currentIndex: number,\n elements: readonly HTMLElement[],\n step: number,\n): void {\n currentIndex += step;\n\n while (currentIndex >= 0 && currentIndex < elements.length) {\n elements[currentIndex].focus();\n\n if (tuiIsNativeFocused(elements[currentIndex])) {\n return;\n }\n\n currentIndex += step;\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-focus.mjs","sources":["../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/focused-in.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/focus/is-native-focused-in.ts","../../../projects/cdk/utils/focus/move-focus.ts","../../../projects/cdk/utils/focus/taiga-ui-cdk-utils-focus.ts"],"sourcesContent":["/**\n * Returns current active element, including shadow dom\n *\n * @return element or null\n */\nexport function tuiGetNativeFocused({activeElement}: Document): Element | null {\n if (!activeElement?.shadowRoot) {\n return activeElement;\n }\n\n let element = activeElement.shadowRoot.activeElement;\n\n while (element?.shadowRoot) {\n element = element.shadowRoot.activeElement;\n }\n\n return element;\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Finds and blurs current active element, including shadow DOM\n */\nexport function tuiBlurNativeFocused(doc: Document): void {\n const activeElement = tuiGetNativeFocused(doc);\n\n if (tuiIsHTMLElement(activeElement)) {\n activeElement.blur();\n }\n}\n","import type {Signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {fromEvent, map, merge} from 'rxjs';\n\nexport function tuiFocusedIn(node: Node): Signal<boolean> {\n return toSignal(\n merge(\n fromEvent(node, 'focusin').pipe(map(TUI_TRUE_HANDLER)),\n fromEvent(node, 'focusout').pipe(map(TUI_FALSE_HANDLER)),\n ),\n {initialValue: false},\n );\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\n/**\n * Checks for signs that element can be focused with keyboard. tabIndex above 0 is ignored to\n * only target natural focus order. Not checking the possibility of an element to\n * be focused, for example element can have display: none applied to it or any other\n * circumstances could prevent actual focus.\n */\nexport function tuiIsNativeKeyboardFocusable(element: Element): boolean {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n\n if (\n (tuiIsHTMLElement(element) && element.isContentEditable) ||\n element.getAttribute('tabIndex') === '0'\n ) {\n return true;\n }\n\n switch (element.tagName) {\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'VIDEO':\n case 'AUDIO':\n return element.hasAttribute('controls');\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n default:\n return false;\n }\n}\n","import {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\n\nexport function tuiIsNativeMouseFocusable(element: Element): boolean {\n return (\n !element.hasAttribute('disabled') &&\n (element.getAttribute('tabIndex') === '-1' ||\n tuiIsNativeKeyboardFocusable(element))\n );\n}\n","import {svgNodeFilter} from '@taiga-ui/cdk/constants';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\nimport {tuiIsNativeMouseFocusable} from './is-native-mouse-focusable';\n\nexport interface TuiGetClosestFocusableOptions {\n /**\n * @description:\n * current HTML element\n */\n initial: Element;\n\n /**\n * @description:\n * determine if only keyboard focus is of interest\n */\n keyboard?: boolean;\n\n /**\n * @description:\n * should it look backwards instead (find item that will be focused with Shift + Tab)\n */\n previous?: boolean;\n\n /**\n * @description:\n * top Node limiting the search area\n */\n root: Node;\n}\n\n/**\n * @description:\n * Finds the closest element that can be focused with a keyboard or mouse in theory\n */\nexport function tuiGetClosestFocusable({\n initial,\n root,\n previous = false,\n keyboard = true,\n}: TuiGetClosestFocusableOptions): HTMLElement | null {\n if (!root.ownerDocument) {\n return null;\n }\n\n const check = keyboard ? tuiIsNativeKeyboardFocusable : tuiIsNativeMouseFocusable;\n const treeWalker = root.ownerDocument.createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n svgNodeFilter,\n );\n\n treeWalker.currentNode = initial;\n\n while (previous ? treeWalker.previousNode() : treeWalker.nextNode()) {\n if (tuiIsHTMLElement(treeWalker.currentNode)) {\n initial = treeWalker.currentNode;\n }\n\n if (tuiIsHTMLElement(initial) && check(initial)) {\n return initial;\n }\n }\n\n return null;\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if element is focused.\n *\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\n *\n * @param node or null (as a common return value of DOM nodes walking)\n * @return true if focused\n */\nexport function tuiIsNativeFocused(node?: Node | null): boolean {\n return (\n !!node?.ownerDocument &&\n tuiGetNativeFocused(node.ownerDocument) === node &&\n node.ownerDocument.hasFocus()\n );\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if focused element is within given element.\n *\n * @param node\n * @return true if focused node is contained within element\n */\nexport function tuiIsNativeFocusedIn(node?: Node | null): boolean {\n const focused = node?.ownerDocument && tuiGetNativeFocused(node.ownerDocument);\n\n return !!focused && node.contains(focused) && !!node.ownerDocument?.hasFocus();\n}\n","import {tuiIsNativeFocused} from './is-native-focused';\n\n/**\n * Utility method for moving focus in a list of elements\n *\n * @param currentIndex currently focused index\n * @param elements array of focusable elements\n * @param step a step to move focus by, typically -1 or 1\n */\nexport function tuiMoveFocus(\n currentIndex: number,\n elements: readonly HTMLElement[],\n step: number,\n): void {\n currentIndex += step;\n\n while (currentIndex >= 0 && currentIndex < elements.length) {\n elements[currentIndex]?.focus();\n\n if (tuiIsNativeFocused(elements[currentIndex])) {\n return;\n }\n\n currentIndex += step;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;;;AAIG;AACa,SAAA,mBAAmB,CAAC,EAAC,aAAa,EAAW,EAAA;AACzD,IAAA,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE;AAC5B,QAAA,OAAO,aAAa,CAAC;AACxB,KAAA;AAED,IAAA,IAAI,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC;IAErD,OAAO,OAAO,EAAE,UAAU,EAAE;AACxB,QAAA,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;AAC9C,KAAA;AAED,IAAA,OAAO,OAAO,CAAC;AACnB;;ACbA;;AAEG;AACG,SAAU,oBAAoB,CAAC,GAAa,EAAA;AAC9C,IAAA,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAE/C,IAAA,IAAI,gBAAgB,CAAC,aAAa,CAAC,EAAE;QACjC,aAAa,CAAC,IAAI,EAAE,CAAC;AACxB,KAAA;AACL;;ACRM,SAAU,YAAY,CAAC,IAAU,EAAA;AACnC,IAAA,OAAO,QAAQ,CACX,KAAK,CACD,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,EACtD,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAC3D,EACD,EAAC,YAAY,EAAE,KAAK,EAAC,CACxB,CAAC;AACN;;ACXA;;;;;AAKG;AACG,SAAU,4BAA4B,CAAC,OAAgB,EAAA;AACzD,IAAA,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;AAC/E,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;IAED,IACI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,iBAAiB;AACvD,QAAA,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,GAAG,EAC1C;AACE,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;IAED,QAAQ,OAAO,CAAC,OAAO;AACnB,QAAA,KAAK,QAAQ,CAAC;AACd,QAAA,KAAK,QAAQ,CAAC;AACd,QAAA,KAAK,UAAU;AACX,YAAA,OAAO,IAAI,CAAC;AAChB,QAAA,KAAK,OAAO,CAAC;AACb,QAAA,KAAK,OAAO;AACR,YAAA,OAAO,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC5C,QAAA,KAAK,OAAO;YACR,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC;AACrD,QAAA,KAAK,GAAG,CAAC;AACT,QAAA,KAAK,MAAM;AACP,YAAA,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACxC,QAAA;AACI,YAAA,OAAO,KAAK,CAAC;AACpB,KAAA;AACL;;AClCM,SAAU,yBAAyB,CAAC,OAAgB,EAAA;AACtD,IAAA,QACI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;AACjC,SAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI;AACtC,YAAA,4BAA4B,CAAC,OAAO,CAAC,CAAC,EAC5C;AACN;;ACwBA;;;AAGG;AACa,SAAA,sBAAsB,CAAC,EACnC,OAAO,EACP,IAAI,EACJ,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,IAAI,GACa,EAAA;AAC5B,IAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;IAED,MAAM,KAAK,GAAG,QAAQ,GAAG,4BAA4B,GAAG,yBAAyB,CAAC;AAClF,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAClD,IAAI,EACJ,UAAU,CAAC,YAAY,EACvB,aAAa,CAChB,CAAC;AAEF,IAAA,UAAU,CAAC,WAAW,GAAG,OAAO,CAAC;AAEjC,IAAA,OAAO,QAAQ,GAAG,UAAU,CAAC,YAAY,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,EAAE;AACjE,QAAA,IAAI,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AAC1C,YAAA,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC;AACpC,SAAA;QAED,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;AAC7C,YAAA,OAAO,OAAO,CAAC;AAClB,SAAA;AACJ,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AAChB;;AChEA;;;;;;;AAOG;AACG,SAAU,kBAAkB,CAAC,IAAkB,EAAA;AACjD,IAAA,QACI,CAAC,CAAC,IAAI,EAAE,aAAa;AACrB,QAAA,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI;AAChD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAC/B;AACN;;ACdA;;;;;AAKG;AACG,SAAU,oBAAoB,CAAC,IAAkB,EAAA;AACnD,IAAA,MAAM,OAAO,GAAG,IAAI,EAAE,aAAa,IAAI,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAE/E,IAAA,OAAO,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC;AACnF;;ACVA;;;;;;AAMG;SACa,YAAY,CACxB,YAAoB,EACpB,QAAgC,EAChC,IAAY,EAAA;IAEZ,YAAY,IAAI,IAAI,CAAC;IAErB,OAAO,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE;AACxD,QAAA,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;AAEhC,QAAA,IAAI,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE;YAC5C,OAAO;AACV,SAAA;QAED,YAAY,IAAI,IAAI,CAAC;AACxB,KAAA;AACL;;ACzBA;;AAEG;;;;"}
@@ -96,12 +96,12 @@ function tuiTrunc(value, precision = 0) {
96
96
 
97
97
  function tuiRoundWith({ value, precision, method, }) {
98
98
  switch (method) {
99
- case 'round':
100
- return tuiRound(value, precision);
101
99
  case 'ceil':
102
100
  return tuiCeil(value, precision);
103
101
  case 'floor':
104
102
  return tuiFloor(value, precision);
103
+ case 'round':
104
+ return tuiRound(value, precision);
105
105
  default:
106
106
  return tuiTrunc(value, precision);
107
107
  }