@taiga-ui/cdk 3.41.1 → 3.42.1-canary.290249b

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 (212) hide show
  1. package/bundles/taiga-ui-cdk-components-alert-host.umd.js +1 -1
  2. package/bundles/taiga-ui-cdk-components-alert-host.umd.js.map +1 -1
  3. package/bundles/taiga-ui-cdk-components-dialog-host.umd.js +6 -8
  4. package/bundles/taiga-ui-cdk-components-dialog-host.umd.js.map +1 -1
  5. package/bundles/taiga-ui-cdk-constants.umd.js +1 -1
  6. package/bundles/taiga-ui-cdk-constants.umd.js.map +1 -1
  7. package/bundles/taiga-ui-cdk-date-time.umd.js +17 -10
  8. package/bundles/taiga-ui-cdk-date-time.umd.js.map +1 -1
  9. package/bundles/taiga-ui-cdk-directives-active-zone.umd.js +3 -3
  10. package/bundles/taiga-ui-cdk-directives-active-zone.umd.js.map +1 -1
  11. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js +6 -6
  12. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js.map +1 -1
  13. package/bundles/taiga-ui-cdk-directives-focused.umd.js +2 -2
  14. package/bundles/taiga-ui-cdk-directives-focused.umd.js.map +1 -1
  15. package/bundles/taiga-ui-cdk-directives-hovered.umd.js +3 -3
  16. package/bundles/taiga-ui-cdk-directives-hovered.umd.js.map +1 -1
  17. package/bundles/taiga-ui-cdk-directives-overscroll.umd.js +3 -3
  18. package/bundles/taiga-ui-cdk-directives-overscroll.umd.js.map +1 -1
  19. package/bundles/taiga-ui-cdk-directives-platform.umd.js +89 -0
  20. package/bundles/taiga-ui-cdk-directives-platform.umd.js.map +1 -0
  21. package/bundles/taiga-ui-cdk-directives-prevent-default.umd.js +3 -3
  22. package/bundles/taiga-ui-cdk-directives-prevent-default.umd.js.map +1 -1
  23. package/bundles/taiga-ui-cdk-directives.umd.js +10 -4
  24. package/bundles/taiga-ui-cdk-directives.umd.js.map +1 -1
  25. package/bundles/taiga-ui-cdk-observables.umd.js +8 -8
  26. package/bundles/taiga-ui-cdk-observables.umd.js.map +1 -1
  27. package/bundles/taiga-ui-cdk-services.umd.js +6 -5
  28. package/bundles/taiga-ui-cdk-services.umd.js.map +1 -1
  29. package/bundles/taiga-ui-cdk-tokens.umd.js +42 -12
  30. package/bundles/taiga-ui-cdk-tokens.umd.js.map +1 -1
  31. package/bundles/taiga-ui-cdk-utils-color.umd.js +380 -0
  32. package/bundles/taiga-ui-cdk-utils-color.umd.js.map +1 -1
  33. package/bundles/taiga-ui-cdk-utils-dom.umd.js.map +1 -1
  34. package/bundles/taiga-ui-cdk-utils-focus.umd.js.map +1 -1
  35. package/bundles/taiga-ui-cdk-utils-math.umd.js.map +1 -1
  36. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.js +16 -10
  37. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.js.map +1 -1
  38. package/bundles/taiga-ui-cdk-utils.umd.js +4 -10
  39. package/bundles/taiga-ui-cdk-utils.umd.js.map +1 -1
  40. package/components/dialog-host/dialog-host.component.d.ts +2 -2
  41. package/constants/version.d.ts +1 -1
  42. package/constants/version.js +1 -1
  43. package/{utils/calendar → date-time}/date-clamp.d.ts +1 -1
  44. package/date-time/date-format.d.ts +1 -2
  45. package/date-time/date-separator.d.ts +1 -2
  46. package/date-time/index.d.ts +1 -0
  47. package/directives/active-zone/active-zone.directive.d.ts +2 -2
  48. package/directives/auto-focus/autofocus.options.d.ts +1 -1
  49. package/directives/auto-focus/handlers/ios.handler.d.ts +2 -2
  50. package/directives/focused/focused.directive.d.ts +1 -1
  51. package/directives/hovered/hovered.service.d.ts +2 -2
  52. package/directives/index.d.ts +1 -0
  53. package/directives/overscroll/overscroll.directive.d.ts +1 -1
  54. package/directives/platform/index.d.ts +2 -0
  55. package/directives/platform/package.json +10 -0
  56. package/directives/platform/platform.directive.d.ts +7 -0
  57. package/directives/platform/platform.module.d.ts +7 -0
  58. package/{utils/calendar/taiga-ui-cdk-utils-calendar.d.ts → directives/platform/taiga-ui-cdk-directives-platform.d.ts} +1 -1
  59. package/directives/prevent-default/prevent-default.directive.d.ts +2 -2
  60. package/esm2015/components/alert-host/alert-host.component.js +2 -2
  61. package/esm2015/components/dialog-host/dialog-host.component.js +5 -6
  62. package/esm2015/constants/version.js +2 -2
  63. package/esm2015/date-time/date-clamp.js +10 -0
  64. package/esm2015/date-time/date-format.js +3 -5
  65. package/esm2015/date-time/date-separator.js +3 -5
  66. package/esm2015/date-time/day-range.js +1 -1
  67. package/esm2015/date-time/day.js +1 -1
  68. package/esm2015/date-time/index.js +2 -1
  69. package/esm2015/date-time/month-range.js +1 -1
  70. package/esm2015/date-time/month.js +1 -1
  71. package/esm2015/directives/active-zone/active-zone.directive.js +4 -4
  72. package/esm2015/directives/auto-focus/autofocus.options.js +5 -5
  73. package/esm2015/directives/auto-focus/handlers/ios.handler.js +4 -4
  74. package/esm2015/directives/focused/focused.directive.js +3 -3
  75. package/esm2015/directives/hovered/hovered.service.js +4 -4
  76. package/esm2015/directives/index.js +2 -1
  77. package/esm2015/directives/overscroll/overscroll.directive.js +4 -4
  78. package/esm2015/directives/platform/index.js +3 -0
  79. package/esm2015/directives/platform/platform.directive.js +32 -0
  80. package/esm2015/directives/platform/platform.module.js +16 -0
  81. package/esm2015/directives/platform/taiga-ui-cdk-directives-platform.js +5 -0
  82. package/esm2015/directives/prevent-default/prevent-default.directive.js +4 -4
  83. package/esm2015/interfaces/aria-dialog-context.js +1 -1
  84. package/esm2015/interfaces/control-value-transformer.js +1 -1
  85. package/esm2015/interfaces/focusable-element-accessor.js +1 -1
  86. package/esm2015/interfaces/time-like.js +1 -1
  87. package/esm2015/observables/drag-and-drop-from.js +1 -1
  88. package/esm2015/observables/zone-free.js +9 -9
  89. package/esm2015/services/obscured.service.js +3 -3
  90. package/esm2015/services/resize.service.js +5 -4
  91. package/esm2015/tokens/alerts.js +3 -5
  92. package/esm2015/tokens/dialogs.js +3 -5
  93. package/esm2015/tokens/ensure-base-href.js +6 -1
  94. package/esm2015/tokens/index.js +4 -1
  95. package/esm2015/tokens/is-e2e.js +10 -0
  96. package/esm2015/tokens/is-playwright.js +9 -0
  97. package/esm2015/tokens/platform.js +16 -0
  98. package/esm2015/tokens/swipe-options.js +5 -4
  99. package/esm2015/tokens/zoom-options.js +4 -6
  100. package/esm2015/types/index.js +2 -1
  101. package/esm2015/types/platform.js +2 -0
  102. package/esm2015/utils/color/hex-to-rgba.js +31 -0
  103. package/esm2015/utils/color/index.js +3 -1
  104. package/esm2015/utils/color/rgba-to-hex.js +26 -0
  105. package/esm2015/utils/dom/get-element-offset.js +1 -1
  106. package/esm2015/utils/focus/get-closest-focusable.js +1 -1
  107. package/esm2015/utils/index.js +1 -2
  108. package/esm2015/utils/math/round-with.js +1 -1
  109. package/esm2015/utils/miscellaneous/create-options.js +2 -1
  110. package/esm2015/utils/miscellaneous/create-token.js +7 -0
  111. package/esm2015/utils/miscellaneous/default-sort.js +5 -8
  112. package/esm2015/utils/miscellaneous/index.js +2 -1
  113. package/fesm2015/taiga-ui-cdk-components-alert-host.js +1 -1
  114. package/fesm2015/taiga-ui-cdk-components-alert-host.js.map +1 -1
  115. package/fesm2015/taiga-ui-cdk-components-dialog-host.js +4 -5
  116. package/fesm2015/taiga-ui-cdk-components-dialog-host.js.map +1 -1
  117. package/fesm2015/taiga-ui-cdk-constants.js +1 -1
  118. package/fesm2015/taiga-ui-cdk-constants.js.map +1 -1
  119. package/fesm2015/taiga-ui-cdk-date-time.js +14 -8
  120. package/fesm2015/taiga-ui-cdk-date-time.js.map +1 -1
  121. package/fesm2015/taiga-ui-cdk-directives-active-zone.js +3 -3
  122. package/fesm2015/taiga-ui-cdk-directives-active-zone.js.map +1 -1
  123. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js +7 -7
  124. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
  125. package/fesm2015/taiga-ui-cdk-directives-focused.js +2 -2
  126. package/fesm2015/taiga-ui-cdk-directives-focused.js.map +1 -1
  127. package/fesm2015/taiga-ui-cdk-directives-hovered.js +3 -3
  128. package/fesm2015/taiga-ui-cdk-directives-hovered.js.map +1 -1
  129. package/fesm2015/taiga-ui-cdk-directives-overscroll.js +3 -3
  130. package/fesm2015/taiga-ui-cdk-directives-overscroll.js.map +1 -1
  131. package/fesm2015/taiga-ui-cdk-directives-platform.js +52 -0
  132. package/fesm2015/taiga-ui-cdk-directives-platform.js.map +1 -0
  133. package/fesm2015/taiga-ui-cdk-directives-prevent-default.js +3 -3
  134. package/fesm2015/taiga-ui-cdk-directives-prevent-default.js.map +1 -1
  135. package/fesm2015/taiga-ui-cdk-directives.js +1 -0
  136. package/fesm2015/taiga-ui-cdk-directives.js.map +1 -1
  137. package/fesm2015/taiga-ui-cdk-observables.js +8 -8
  138. package/fesm2015/taiga-ui-cdk-observables.js.map +1 -1
  139. package/fesm2015/taiga-ui-cdk-services.js +6 -5
  140. package/fesm2015/taiga-ui-cdk-services.js.map +1 -1
  141. package/fesm2015/taiga-ui-cdk-tokens.js +41 -15
  142. package/fesm2015/taiga-ui-cdk-tokens.js.map +1 -1
  143. package/fesm2015/taiga-ui-cdk-utils-color.js +58 -1
  144. package/fesm2015/taiga-ui-cdk-utils-color.js.map +1 -1
  145. package/fesm2015/taiga-ui-cdk-utils-dom.js.map +1 -1
  146. package/fesm2015/taiga-ui-cdk-utils-focus.js.map +1 -1
  147. package/fesm2015/taiga-ui-cdk-utils-math.js.map +1 -1
  148. package/fesm2015/taiga-ui-cdk-utils-miscellaneous.js +12 -8
  149. package/fesm2015/taiga-ui-cdk-utils-miscellaneous.js.map +1 -1
  150. package/fesm2015/taiga-ui-cdk-utils.js +0 -1
  151. package/fesm2015/taiga-ui-cdk-utils.js.map +1 -1
  152. package/interfaces/aria-dialog-context.d.ts +1 -1
  153. package/interfaces/control-value-transformer.d.ts +1 -1
  154. package/interfaces/focusable-element-accessor.d.ts +1 -1
  155. package/interfaces/time-like.d.ts +1 -1
  156. package/observables/zone-free.d.ts +3 -3
  157. package/package.json +2 -2
  158. package/schematics/ng-add/schema.d.ts +3 -3
  159. package/schematics/ng-update/interfaces/asset.d.ts +1 -1
  160. package/schematics/ng-update/interfaces/migration-warning.d.ts +2 -2
  161. package/schematics/ng-update/interfaces/removed-module.d.ts +1 -1
  162. package/schematics/ng-update/interfaces/replaceable-attribute.d.ts +2 -2
  163. package/schematics/ng-update/interfaces/replacement-const.d.ts +2 -2
  164. package/schematics/ng-update/interfaces/replacement-enum.d.ts +1 -1
  165. package/schematics/ng-update/interfaces/template-resource.d.ts +2 -2
  166. package/schematics/ng-update/interfaces/type-to-rename.d.ts +1 -1
  167. package/schematics/ng-update/utils/templates/replace-attr-values.d.ts +2 -2
  168. package/schematics/ng-update/v3/index.js +3 -1
  169. package/schematics/ng-update/v3/interfaces/attribute-to-directive.d.ts +3 -3
  170. package/schematics/ng-update/v3/interfaces/replaceable-tag.d.ts +1 -1
  171. package/schematics/ng-update/v3/steps/migrate-polymorpheus.d.ts +2 -2
  172. package/schematics/ng-update/v3/steps/migrate-templates.js +2 -1
  173. package/schematics/ng-update/v3/steps/migrate-textfield-controller.d.ts +2 -2
  174. package/schematics/ng-update/v3/steps/replace-styles.js +1 -1
  175. package/schematics/ng-update/v3-35/constants/icons.js +26 -2
  176. package/schematics/ng-update/v4/index.js +16 -9
  177. package/schematics/ng-update/v4/steps/replace-thumbnail-card.d.ts +3 -0
  178. package/schematics/ng-update/v4/steps/replace-thumbnail-card.js +58 -0
  179. package/schematics/utils/progress.d.ts +1 -1
  180. package/schematics/utils/push-to-array-property.d.ts +1 -1
  181. package/schematics/utils/templates/ng-component-input-manipulations.d.ts +11 -11
  182. package/services/obscured.service.d.ts +1 -1
  183. package/services/resize.service.d.ts +1 -1
  184. package/tokens/alerts.d.ts +2 -2
  185. package/tokens/dialogs.d.ts +2 -2
  186. package/tokens/index.d.ts +3 -0
  187. package/tokens/is-e2e.d.ts +5 -0
  188. package/tokens/is-playwright.d.ts +5 -0
  189. package/tokens/platform.d.ts +3 -0
  190. package/tokens/swipe-options.d.ts +1 -2
  191. package/tokens/zoom-options.d.ts +1 -2
  192. package/types/index.d.ts +1 -0
  193. package/types/platform.d.ts +1 -0
  194. package/utils/color/hex-to-rgba.d.ts +3 -0
  195. package/utils/color/index.d.ts +2 -0
  196. package/utils/color/rgba-to-hex.d.ts +2 -0
  197. package/utils/dom/get-element-offset.d.ts +1 -1
  198. package/utils/focus/get-closest-focusable.d.ts +4 -4
  199. package/utils/index.d.ts +0 -1
  200. package/utils/math/round-with.d.ts +2 -2
  201. package/utils/miscellaneous/create-options.d.ts +1 -0
  202. package/utils/miscellaneous/create-token.d.ts +2 -0
  203. package/utils/miscellaneous/index.d.ts +1 -0
  204. package/bundles/taiga-ui-cdk-utils-calendar.umd.js +0 -26
  205. package/bundles/taiga-ui-cdk-utils-calendar.umd.js.map +0 -1
  206. package/esm2015/utils/calendar/date-clamp.js +0 -10
  207. package/esm2015/utils/calendar/index.js +0 -2
  208. package/esm2015/utils/calendar/taiga-ui-cdk-utils-calendar.js +0 -5
  209. package/fesm2015/taiga-ui-cdk-utils-calendar.js +0 -16
  210. package/fesm2015/taiga-ui-cdk-utils-calendar.js.map +0 -1
  211. package/utils/calendar/index.d.ts +0 -1
  212. package/utils/calendar/package.json +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-services.js","sources":["../../../projects/cdk/services/destroy.service.ts","../../../projects/cdk/services/directive-styles.service.ts","../../../projects/cdk/services/focus-visible.service.ts","../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/parents-scroll.service.ts","../../../projects/cdk/services/obscured.service.ts","../../../projects/cdk/services/pan.service.ts","../../../projects/cdk/services/resize.service.ts","../../../projects/cdk/services/scroll.service.ts","../../../projects/cdk/services/static-request.service.ts","../../../projects/cdk/services/swipe.service.ts","../../../projects/cdk/services/zoom.service.ts","../../../projects/cdk/services/taiga-ui-cdk-services.ts"],"sourcesContent":["import {Injectable, OnDestroy} from '@angular/core';\nimport {ReplaySubject} from 'rxjs';\n\n/**\n * @note:\n * Observable abstraction over ngOnDestroy to use with takeUntil\n *\n * Why we use `ReplaySubject` instead of `Subject`?\n * Well, we’ll use ReplaySubject to emit the last message in case\n * the subscription is ended after the component is destroyed.\n */\n@Injectable()\nexport class TuiDestroyService extends ReplaySubject<void> implements OnDestroy {\n constructor() {\n super(1);\n }\n\n ngOnDestroy(): void {\n this.next();\n this.complete();\n }\n}\n","import {\n ComponentFactoryResolver,\n Inject,\n Injectable,\n INJECTOR,\n Injector,\n Type,\n} from '@angular/core';\n\n/**\n * Service to use styles with directives\n */\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiDirectiveStylesService {\n private readonly map = new Map<Type<unknown>, unknown>();\n\n constructor(\n @Inject(ComponentFactoryResolver)\n private readonly resolver: ComponentFactoryResolver,\n @Inject(INJECTOR) private readonly injector: Injector,\n ) {}\n\n addComponent(component: Type<unknown>): void {\n if (!this.map.has(component)) {\n this.map.set(\n component,\n this.resolver.resolveComponentFactory(component).create(this.injector),\n );\n }\n }\n}\n","import {ChangeDetectorRef, ElementRef, Inject, Injectable, Self} from '@angular/core';\nimport {tuiFocusVisibleObservable, tuiWatch} from '@taiga-ui/cdk/observables';\nimport {Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiDestroyService} from './destroy.service';\n\n/**\n * Service to imitate :focus-visible\n * (https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible)\n * in browsers that do not support it\n */\n@Injectable()\nexport class TuiFocusVisibleService extends Observable<boolean> {\n private readonly focusVisible$: Observable<boolean>;\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<Element>,\n @Inject(ChangeDetectorRef) cdr: ChangeDetectorRef,\n @Self() @Inject(TuiDestroyService) destroy$: Observable<void>,\n ) {\n super(subscriber => this.focusVisible$.subscribe(subscriber));\n\n this.focusVisible$ = tuiFocusVisibleObservable(nativeElement).pipe(\n tuiWatch(cdr),\n takeUntil(destroy$),\n );\n }\n}\n","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 generate(): string {\n return `${TUI}${TuiIdService.autoId++}${Date.now()}`;\n }\n}\n","import {ElementRef, Inject, Injectable} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {defer, merge, Observable} from 'rxjs';\n\n/**\n * Service that subscribes to scroll events of all parent elements\n */\n@Injectable()\nexport class TuiParentsScrollService extends Observable<Event> {\n private readonly callback$: Observable<Event>;\n\n constructor(\n // Destructuring here causes memory leak\n @Inject(ElementRef) el: ElementRef<Element>,\n @Inject(WINDOW) win: Window,\n ) {\n super(subscriber => this.callback$.subscribe(subscriber));\n\n this.callback$ = defer(() => {\n let {nativeElement} = el;\n const eventTargets: Array<Element | Window> = [win, nativeElement];\n\n while (nativeElement.parentElement) {\n nativeElement = nativeElement.parentElement;\n eventTargets.push(nativeElement);\n }\n\n return merge(\n ...eventTargets.map<Observable<Event>>(element =>\n tuiTypedFromEvent(element, `scroll`),\n ),\n );\n });\n }\n}\n","import {ElementRef, Inject, Injectable, NgZone, Self} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {POLLING_TIME} from '@taiga-ui/cdk/constants';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiGetElementObscures} from '@taiga-ui/cdk/utils/dom';\nimport {fromEvent, merge, Observable} from 'rxjs';\nimport {\n delay,\n distinctUntilChanged,\n map,\n startWith,\n takeUntil,\n throttleTime,\n} from 'rxjs/operators';\n\nimport {TuiDestroyService} from './destroy.service';\nimport {TuiParentsScrollService} from './parents-scroll.service';\n\n// @bad TODO: Consider Intersection Observer with fallback to current implementation\n/**\n * Service that monitors element visibility by subscribing to scrolls\n * and polling with set interval, returns either null or an array\n * of elements that overlap given element edges\n */\n@Injectable()\nexport class TuiObscuredService extends Observable<readonly Element[] | null> {\n private readonly obscured$: Observable<readonly Element[] | null>;\n\n constructor(\n @Inject(TuiParentsScrollService)\n @Self()\n parentsScroll$: TuiParentsScrollService,\n @Inject(ElementRef) {nativeElement}: ElementRef<Element>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(WINDOW) win: Window,\n @Self() @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n ) {\n super(subscriber => this.obscured$.subscribe(subscriber));\n\n this.obscured$ = merge(\n // delay is added so it will not interfere with other listeners\n merge(parentsScroll$, fromEvent(win, `resize`)).pipe(delay(0)),\n animationFrame$.pipe(throttleTime(POLLING_TIME)),\n ).pipe(\n map(() => tuiGetElementObscures(nativeElement)),\n startWith(null),\n distinctUntilChanged(),\n tuiZoneOptimized(ngZone),\n takeUntil(destroy$),\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, Inject, Injectable} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {merge, Observable} from 'rxjs';\nimport {filter, map, pairwise, repeat, switchMap, takeUntil} from 'rxjs/operators';\n\n@Injectable()\nexport class TuiPanService extends Observable<readonly [number, number]> {\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<Element>,\n @Inject(DOCUMENT) doc: Document,\n ) {\n super(subscriber => {\n merge(\n tuiTypedFromEvent(nativeElement, `touchstart`, {passive: true}),\n tuiTypedFromEvent(nativeElement, `mousedown`),\n )\n .pipe(\n switchMap(() =>\n merge(\n tuiTypedFromEvent(doc, `touchmove`, {\n passive: true,\n }).pipe(\n filter(({touches}) => touches.length < 2),\n map(({touches}) => touches[0]),\n ),\n tuiTypedFromEvent(doc, `mousemove`),\n ),\n ),\n pairwise(),\n map(([first, second]) => {\n const deltaX = second.clientX - first.clientX;\n const deltaY = second.clientY - first.clientY;\n\n return [deltaX, deltaY] as [number, number];\n }),\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(\n merge(\n tuiTypedFromEvent(doc, `touchend`),\n tuiTypedFromEvent(doc, `mouseup`),\n ),\n ),\n repeat(),\n )\n .subscribe(subscriber);\n });\n }\n}\n","import {ElementRef, Inject, Injectable, NgZone, Self} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {\n RESIZE_OBSERVER_SUPPORT,\n RESIZE_OPTION_BOX,\n ResizeObserverService,\n} from '@ng-web-apis/resize-observer';\nimport {EMPTY_ARRAY, POLLING_TIME} from '@taiga-ui/cdk/constants';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {Observable} from 'rxjs';\nimport {\n catchError,\n debounceTime,\n distinctUntilChanged,\n map,\n share,\n takeUntil,\n throttleTime,\n} from 'rxjs/operators';\n\nimport {TuiDestroyService} from './destroy.service';\n\n@Injectable()\nexport class TuiResizeService extends ResizeObserverService {\n constructor(\n @Inject(ElementRef) el: ElementRef<HTMLElement>,\n @Inject(NgZone) ngZone: NgZone,\n @Self() @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(RESIZE_OBSERVER_SUPPORT) support: boolean,\n @Inject(RESIZE_OPTION_BOX) box: ResizeObserverBoxOptions,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n ) {\n super(el, ngZone, support, box);\n\n return this.pipe(\n catchError(() =>\n /**\n * @note: if not supported ResizeObserver\n * remove `catchError` after supports modern browsers\n */\n animationFrame$.pipe(\n throttleTime(POLLING_TIME),\n map(\n () =>\n `${el.nativeElement.clientWidth} ${el.nativeElement.clientHeight}`,\n ),\n distinctUntilChanged(),\n map(() => EMPTY_ARRAY),\n ),\n ),\n debounceTime(0),\n tuiZonefree(ngZone),\n share(),\n takeUntil(destroy$),\n );\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {ANIMATION_FRAME, PERFORMANCE} from '@ng-web-apis/common';\nimport {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiEaseInOutQuad} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {defer, Observable, of, timer} from 'rxjs';\nimport {endWith, map, switchMap, takeUntil, tap} from 'rxjs/operators';\n\nconst SCROLL_TIME = 300;\n\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiScrollService {\n constructor(\n @Inject(PERFORMANCE) private readonly performanceRef: Performance,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n ) {}\n\n scroll$(\n elementOrWindow: Element | Window,\n scrollTop: number,\n scrollLeft: number = getX(elementOrWindow),\n duration: number = SCROLL_TIME,\n ): Observable<[number, number]> {\n ngDevMode && tuiAssert.assert(duration >= 0, `Duration cannot be negative`);\n ngDevMode && tuiAssert.assert(scrollTop >= 0, `scrollTop cannot be negative`);\n ngDevMode && tuiAssert.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 => this.animationFrame$.pipe(map(now => now - start))),\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 endWith<[number, number]>([scrollTop, scrollLeft]),\n takeUntil(timer(duration)),\n );\n\n return observable.pipe(\n tap(([scrollTop, scrollLeft]) => {\n elementOrWindow.scrollTo?.(scrollLeft, scrollTop);\n }),\n );\n }\n}\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","import {isPlatformServer} from '@angular/common';\nimport {Inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {defer, from, Observable} from 'rxjs';\nimport {fromFetch} from 'rxjs/fetch';\nimport {shareReplay, switchMap} from 'rxjs/operators';\n\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiStaticRequestService {\n private readonly cache = new Map<string, Observable<string>>();\n\n constructor(\n @Inject(WINDOW) private readonly win: Window,\n @Inject(PLATFORM_ID) private readonly platformId: Record<string, unknown>,\n ) {}\n\n request(url: string): Observable<string> {\n const cache = this.cache.get(url);\n\n if (cache) {\n return cache;\n }\n\n const response$ =\n `AbortController` in this.win || isPlatformServer(this.platformId)\n ? fromFetch(url)\n : /**\n * Fallback for Firefox 55 and 56\n * TODO: drop after browser support bump\n */\n defer(() => from(fetch(url)));\n\n const piped = response$.pipe(\n switchMap(async response => {\n if (response.ok) {\n return response.text();\n }\n\n throw new Error(`Failed to load ${url} (${response.statusText})`);\n }),\n shareReplay({bufferSize: 1, refCount: false}),\n );\n\n this.cache.set(url, piped);\n\n return piped;\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, Inject, Injectable} from '@angular/core';\nimport {TuiSwipe, TuiSwipeOptions} from '@taiga-ui/cdk/interfaces';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TUI_SWIPE_OPTIONS} from '@taiga-ui/cdk/tokens';\nimport {tuiGetSwipeDirection, tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {merge, Observable} from 'rxjs';\nimport {filter, map, pairwise} from 'rxjs/operators';\n\n@Injectable()\nexport class TuiSwipeService extends Observable<TuiSwipe> {\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<Element>,\n @Inject(TUI_SWIPE_OPTIONS) {timeout, threshold}: TuiSwipeOptions,\n @Inject(DOCUMENT) doc: Document,\n ) {\n super(subscriber => {\n merge(\n tuiTypedFromEvent(nativeElement, `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","import {ElementRef, Inject, Injectable} from '@angular/core';\nimport {TuiZoom, TuiZoomOptions} from '@taiga-ui/cdk/interfaces';\nimport {tuiPreventDefault, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TUI_ZOOM_OPTIONS} from '@taiga-ui/cdk/tokens';\nimport {tuiDistanceBetweenTouches} from '@taiga-ui/cdk/utils';\nimport {merge, Observable} from 'rxjs';\nimport {filter, map, scan, switchMap, takeUntil} from 'rxjs/operators';\n\nconst TOUCH_SENSITIVITY = 0.01;\n\n@Injectable()\nexport class TuiZoomService extends Observable<TuiZoom> {\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<HTMLElement>,\n @Inject(TUI_ZOOM_OPTIONS) {wheelSensitivity}: TuiZoomOptions,\n ) {\n super(subscriber => {\n merge(\n tuiTypedFromEvent(nativeElement, `touchstart`, {passive: true}).pipe(\n filter(({touches}) => touches.length > 1),\n switchMap(startEvent =>\n tuiTypedFromEvent(nativeElement, `touchmove`, {\n passive: true,\n }).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(nativeElement, `touchend`)),\n ),\n ),\n ),\n tuiTypedFromEvent(nativeElement, `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","/**\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.js","sources":["../../../projects/cdk/services/destroy.service.ts","../../../projects/cdk/services/directive-styles.service.ts","../../../projects/cdk/services/focus-visible.service.ts","../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/parents-scroll.service.ts","../../../projects/cdk/services/obscured.service.ts","../../../projects/cdk/services/pan.service.ts","../../../projects/cdk/services/resize.service.ts","../../../projects/cdk/services/scroll.service.ts","../../../projects/cdk/services/static-request.service.ts","../../../projects/cdk/services/swipe.service.ts","../../../projects/cdk/services/zoom.service.ts","../../../projects/cdk/services/taiga-ui-cdk-services.ts"],"sourcesContent":["import {Injectable, OnDestroy} from '@angular/core';\nimport {ReplaySubject} from 'rxjs';\n\n/**\n * @note:\n * Observable abstraction over ngOnDestroy to use with takeUntil\n *\n * Why we use `ReplaySubject` instead of `Subject`?\n * Well, we’ll use ReplaySubject to emit the last message in case\n * the subscription is ended after the component is destroyed.\n */\n@Injectable()\nexport class TuiDestroyService extends ReplaySubject<void> implements OnDestroy {\n constructor() {\n super(1);\n }\n\n ngOnDestroy(): void {\n this.next();\n this.complete();\n }\n}\n","import {\n ComponentFactoryResolver,\n Inject,\n Injectable,\n INJECTOR,\n Injector,\n Type,\n} from '@angular/core';\n\n/**\n * Service to use styles with directives\n */\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiDirectiveStylesService {\n private readonly map = new Map<Type<unknown>, unknown>();\n\n constructor(\n @Inject(ComponentFactoryResolver)\n private readonly resolver: ComponentFactoryResolver,\n @Inject(INJECTOR) private readonly injector: Injector,\n ) {}\n\n addComponent(component: Type<unknown>): void {\n if (!this.map.has(component)) {\n this.map.set(\n component,\n this.resolver.resolveComponentFactory(component).create(this.injector),\n );\n }\n }\n}\n","import {ChangeDetectorRef, ElementRef, Inject, Injectable, Self} from '@angular/core';\nimport {tuiFocusVisibleObservable, tuiWatch} from '@taiga-ui/cdk/observables';\nimport {Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiDestroyService} from './destroy.service';\n\n/**\n * Service to imitate :focus-visible\n * (https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible)\n * in browsers that do not support it\n */\n@Injectable()\nexport class TuiFocusVisibleService extends Observable<boolean> {\n private readonly focusVisible$: Observable<boolean>;\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<Element>,\n @Inject(ChangeDetectorRef) cdr: ChangeDetectorRef,\n @Self() @Inject(TuiDestroyService) destroy$: Observable<void>,\n ) {\n super(subscriber => this.focusVisible$.subscribe(subscriber));\n\n this.focusVisible$ = tuiFocusVisibleObservable(nativeElement).pipe(\n tuiWatch(cdr),\n takeUntil(destroy$),\n );\n }\n}\n","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 generate(): string {\n return `${TUI}${TuiIdService.autoId++}${Date.now()}`;\n }\n}\n","import {ElementRef, Inject, Injectable} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {defer, merge, Observable} from 'rxjs';\n\n/**\n * Service that subscribes to scroll events of all parent elements\n */\n@Injectable()\nexport class TuiParentsScrollService extends Observable<Event> {\n private readonly callback$: Observable<Event>;\n\n constructor(\n // Destructuring here causes memory leak\n @Inject(ElementRef) el: ElementRef<Element>,\n @Inject(WINDOW) win: Window,\n ) {\n super(subscriber => this.callback$.subscribe(subscriber));\n\n this.callback$ = defer(() => {\n let {nativeElement} = el;\n const eventTargets: Array<Element | Window> = [win, nativeElement];\n\n while (nativeElement.parentElement) {\n nativeElement = nativeElement.parentElement;\n eventTargets.push(nativeElement);\n }\n\n return merge(\n ...eventTargets.map<Observable<Event>>(element =>\n tuiTypedFromEvent(element, `scroll`),\n ),\n );\n });\n }\n}\n","import {ElementRef, Inject, Injectable, NgZone, Self} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {POLLING_TIME} from '@taiga-ui/cdk/constants';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiGetElementObscures} from '@taiga-ui/cdk/utils/dom';\nimport {fromEvent, merge, Observable} from 'rxjs';\nimport {\n delay,\n distinctUntilChanged,\n map,\n startWith,\n takeUntil,\n throttleTime,\n} from 'rxjs/operators';\n\nimport {TuiDestroyService} from './destroy.service';\nimport {TuiParentsScrollService} from './parents-scroll.service';\n\n// @bad TODO: Consider Intersection Observer with fallback to current implementation\n/**\n * Service that monitors element visibility by subscribing to scrolls\n * and polling with set interval, returns either null or an array\n * of elements that overlap given element edges\n */\n@Injectable()\nexport class TuiObscuredService extends Observable<readonly Element[] | null> {\n private readonly obscured$: Observable<readonly Element[] | null>;\n\n constructor(\n @Inject(TuiParentsScrollService)\n @Self()\n parentsScroll$: TuiParentsScrollService,\n @Inject(ElementRef) {nativeElement}: ElementRef<Element>,\n @Inject(NgZone) zone: NgZone,\n @Inject(WINDOW) win: Window,\n @Self() @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n ) {\n super(subscriber => this.obscured$.subscribe(subscriber));\n\n this.obscured$ = merge(\n // delay is added so it will not interfere with other listeners\n merge(parentsScroll$, fromEvent(win, `resize`)).pipe(delay(0)),\n animationFrame$.pipe(throttleTime(POLLING_TIME)),\n ).pipe(\n map(() => tuiGetElementObscures(nativeElement)),\n startWith(null),\n distinctUntilChanged(),\n tuiZoneOptimized(zone),\n takeUntil(destroy$),\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, Inject, Injectable} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {merge, Observable} from 'rxjs';\nimport {filter, map, pairwise, repeat, switchMap, takeUntil} from 'rxjs/operators';\n\n@Injectable()\nexport class TuiPanService extends Observable<readonly [number, number]> {\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<Element>,\n @Inject(DOCUMENT) doc: Document,\n ) {\n super(subscriber => {\n merge(\n tuiTypedFromEvent(nativeElement, `touchstart`, {passive: true}),\n tuiTypedFromEvent(nativeElement, `mousedown`),\n )\n .pipe(\n switchMap(() =>\n merge(\n tuiTypedFromEvent(doc, `touchmove`, {\n passive: true,\n }).pipe(\n filter(({touches}) => touches.length < 2),\n map(({touches}) => touches[0]),\n ),\n tuiTypedFromEvent(doc, `mousemove`),\n ),\n ),\n pairwise(),\n map(([first, second]) => {\n const deltaX = second.clientX - first.clientX;\n const deltaY = second.clientY - first.clientY;\n\n return [deltaX, deltaY] as [number, number];\n }),\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(\n merge(\n tuiTypedFromEvent(doc, `touchend`),\n tuiTypedFromEvent(doc, `mouseup`),\n ),\n ),\n repeat(),\n )\n .subscribe(subscriber);\n });\n }\n}\n","import {ElementRef, Inject, Injectable, NgZone, Self} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {\n RESIZE_OBSERVER_SUPPORT,\n RESIZE_OPTION_BOX,\n ResizeObserverService,\n} from '@ng-web-apis/resize-observer';\nimport {EMPTY_ARRAY, POLLING_TIME} from '@taiga-ui/cdk/constants';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {Observable} from 'rxjs';\nimport {\n catchError,\n debounceTime,\n distinctUntilChanged,\n map,\n share,\n takeUntil,\n throttleTime,\n} from 'rxjs/operators';\n\nimport {TuiDestroyService} from './destroy.service';\n\n// TODO: Remove in 4.0 when Safari is bumped to 13\n@Injectable()\nexport class TuiResizeService extends ResizeObserverService {\n constructor(\n @Inject(ElementRef) el: ElementRef<HTMLElement>,\n @Inject(NgZone) zone: NgZone,\n @Self() @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(RESIZE_OBSERVER_SUPPORT) support: boolean,\n @Inject(RESIZE_OPTION_BOX) box: ResizeObserverBoxOptions,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n ) {\n super(el, zone, support, box);\n\n return this.pipe(\n catchError(() =>\n /**\n * @note: if not supported ResizeObserver\n * remove `catchError` after supports modern browsers\n */\n animationFrame$.pipe(\n throttleTime(POLLING_TIME),\n map(\n () =>\n `${el.nativeElement.clientWidth} ${el.nativeElement.clientHeight}`,\n ),\n distinctUntilChanged(),\n map(() => EMPTY_ARRAY),\n ),\n ),\n debounceTime(0),\n tuiZonefree(zone),\n share(),\n takeUntil(destroy$),\n );\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {ANIMATION_FRAME, PERFORMANCE} from '@ng-web-apis/common';\nimport {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiEaseInOutQuad} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {defer, Observable, of, timer} from 'rxjs';\nimport {endWith, map, switchMap, takeUntil, tap} from 'rxjs/operators';\n\nconst SCROLL_TIME = 300;\n\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiScrollService {\n constructor(\n @Inject(PERFORMANCE) private readonly performanceRef: Performance,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n ) {}\n\n scroll$(\n elementOrWindow: Element | Window,\n scrollTop: number,\n scrollLeft: number = getX(elementOrWindow),\n duration: number = SCROLL_TIME,\n ): Observable<[number, number]> {\n ngDevMode && tuiAssert.assert(duration >= 0, `Duration cannot be negative`);\n ngDevMode && tuiAssert.assert(scrollTop >= 0, `scrollTop cannot be negative`);\n ngDevMode && tuiAssert.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 => this.animationFrame$.pipe(map(now => now - start))),\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 endWith<[number, number]>([scrollTop, scrollLeft]),\n takeUntil(timer(duration)),\n );\n\n return observable.pipe(\n tap(([scrollTop, scrollLeft]) => {\n elementOrWindow.scrollTo?.(scrollLeft, scrollTop);\n }),\n );\n }\n}\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","import {isPlatformServer} from '@angular/common';\nimport {Inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {defer, from, Observable} from 'rxjs';\nimport {fromFetch} from 'rxjs/fetch';\nimport {shareReplay, switchMap} from 'rxjs/operators';\n\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiStaticRequestService {\n private readonly cache = new Map<string, Observable<string>>();\n\n constructor(\n @Inject(WINDOW) private readonly win: Window,\n @Inject(PLATFORM_ID) private readonly platformId: Record<string, unknown>,\n ) {}\n\n request(url: string): Observable<string> {\n const cache = this.cache.get(url);\n\n if (cache) {\n return cache;\n }\n\n const response$ =\n `AbortController` in this.win || isPlatformServer(this.platformId)\n ? fromFetch(url)\n : /**\n * Fallback for Firefox 55 and 56\n * TODO: drop after browser support bump\n */\n defer(() => from(fetch(url)));\n\n const piped = response$.pipe(\n switchMap(async response => {\n if (response.ok) {\n return response.text();\n }\n\n throw new Error(`Failed to load ${url} (${response.statusText})`);\n }),\n shareReplay({bufferSize: 1, refCount: false}),\n );\n\n this.cache.set(url, piped);\n\n return piped;\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, Inject, Injectable} from '@angular/core';\nimport {TuiSwipe, TuiSwipeOptions} from '@taiga-ui/cdk/interfaces';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TUI_SWIPE_OPTIONS} from '@taiga-ui/cdk/tokens';\nimport {tuiGetSwipeDirection, tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {merge, Observable} from 'rxjs';\nimport {filter, map, pairwise} from 'rxjs/operators';\n\n@Injectable()\nexport class TuiSwipeService extends Observable<TuiSwipe> {\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<Element>,\n @Inject(TUI_SWIPE_OPTIONS) {timeout, threshold}: TuiSwipeOptions,\n @Inject(DOCUMENT) doc: Document,\n ) {\n super(subscriber => {\n merge(\n tuiTypedFromEvent(nativeElement, `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","import {ElementRef, Inject, Injectable} from '@angular/core';\nimport {TuiZoom, TuiZoomOptions} from '@taiga-ui/cdk/interfaces';\nimport {tuiPreventDefault, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TUI_ZOOM_OPTIONS} from '@taiga-ui/cdk/tokens';\nimport {tuiDistanceBetweenTouches} from '@taiga-ui/cdk/utils';\nimport {merge, Observable} from 'rxjs';\nimport {filter, map, scan, switchMap, takeUntil} from 'rxjs/operators';\n\nconst TOUCH_SENSITIVITY = 0.01;\n\n@Injectable()\nexport class TuiZoomService extends Observable<TuiZoom> {\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<HTMLElement>,\n @Inject(TUI_ZOOM_OPTIONS) {wheelSensitivity}: TuiZoomOptions,\n ) {\n super(subscriber => {\n merge(\n tuiTypedFromEvent(nativeElement, `touchstart`, {passive: true}).pipe(\n filter(({touches}) => touches.length > 1),\n switchMap(startEvent =>\n tuiTypedFromEvent(nativeElement, `touchmove`, {\n passive: true,\n }).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(nativeElement, `touchend`)),\n ),\n ),\n ),\n tuiTypedFromEvent(nativeElement, `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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,11 +2,11 @@ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
2
2
  import { InjectionToken, inject, InjectFlags, RendererFactory2, PLATFORM_ID } from '@angular/core';
3
3
  import { WINDOW, NAVIGATOR, USER_AGENT } from '@ng-web-apis/common';
4
4
  import { tuiTypedFromEvent } from '@taiga-ui/cdk/observables';
5
- import { tuiGetActualTarget, tuiGetDocumentOrShadowRoot, tuiIsIos, tuiIsApple } from '@taiga-ui/cdk/utils';
5
+ import { tuiGetActualTarget, tuiGetDocumentOrShadowRoot, tuiCreateToken, tuiIsIos, tuiIsApple } from '@taiga-ui/cdk/utils';
6
6
  import { BehaviorSubject, timer, merge, of } from 'rxjs';
7
7
  import { switchMap, map, startWith, share, takeUntil, repeatWhen, withLatestFrom, filter, take, distinctUntilChanged, shareReplay } from 'rxjs/operators';
8
8
  import { ɵAnimationEngine } from '@angular/animations/browser';
9
- import { ALWAYS_TRUE_HANDLER } from '@taiga-ui/cdk/constants';
9
+ import { ALWAYS_FALSE_HANDLER, ALWAYS_TRUE_HANDLER } from '@taiga-ui/cdk/constants';
10
10
 
11
11
  /**
12
12
  * Element currently being removed by AnimationEngine
@@ -83,9 +83,7 @@ function shadowRootActiveElement(root) {
83
83
  /**
84
84
  * A stream of alerts
85
85
  */
86
- const TUI_ALERTS = new InjectionToken(`[TUI_ALERTS]`, {
87
- factory: () => [],
88
- });
86
+ const TUI_ALERTS = tuiCreateToken([]);
89
87
  function tuiAsAlerts(useExisting) {
90
88
  return {
91
89
  provide: TUI_ALERTS,
@@ -108,9 +106,7 @@ const TUI_DEFAULT_RENDERER = new InjectionToken(`[TUI_DEFAULT_RENDERER]`, {
108
106
  /**
109
107
  * A stream of dialogs
110
108
  */
111
- const TUI_DIALOGS = new InjectionToken(`[TUI_DIALOGS]`, {
112
- factory: () => [],
113
- });
109
+ const TUI_DIALOGS = tuiCreateToken([]);
114
110
  function tuiAsDialog(useExisting) {
115
111
  return {
116
112
  provide: TUI_DIALOGS,
@@ -121,6 +117,11 @@ function tuiAsDialog(useExisting) {
121
117
 
122
118
  const TUI_ENSURE_BASE_HREF = new InjectionToken(`[TUI_ENSURE_BASE_HREF]`, {
123
119
  factory: () => {
120
+ var _a;
121
+ const baseHref = (_a = inject(DOCUMENT).querySelector(`base`)) === null || _a === void 0 ? void 0 : _a.href;
122
+ if (baseHref) {
123
+ return baseHref;
124
+ }
124
125
  const link = inject(DOCUMENT).createElement(`a`);
125
126
  link.href = ``;
126
127
  return link.pathname;
@@ -185,6 +186,20 @@ const TUI_IS_CYPRESS = new InjectionToken(`[TUI_IS_CYPRESS]`, {
185
186
  factory: () => !!inject(WINDOW).Cypress,
186
187
  });
187
188
 
189
+ /**
190
+ * Detect if app is running under Playwright
191
+ */
192
+ const TUI_IS_PLAYWRIGHT = new InjectionToken(`[TUI_IS_PLAYWRIGHT]`, {
193
+ factory: ALWAYS_FALSE_HANDLER,
194
+ });
195
+
196
+ /**
197
+ * Detect if app is running under any of test frameworks
198
+ */
199
+ const TUI_IS_E2E = new InjectionToken(`[TUI_IS_E2E]`, {
200
+ factory: () => inject(TUI_IS_CYPRESS) || inject(TUI_IS_PLAYWRIGHT),
201
+ });
202
+
188
203
  /**
189
204
  * Firefox browser engine detection
190
205
  */
@@ -209,6 +224,18 @@ const TUI_IS_WEBKIT = new InjectionToken(`[TUI_IS_WEBKIT]`, {
209
224
  },
210
225
  });
211
226
 
227
+ // TODO: Switch to factory in 4.0
228
+ const TUI_PLATFORM = tuiCreateToken(`web`);
229
+ function tuiPlatformFactory() {
230
+ if (inject(TUI_IS_IOS)) {
231
+ return `ios`;
232
+ }
233
+ if (inject(TUI_IS_ANDROID)) {
234
+ return `android`;
235
+ }
236
+ return `web`;
237
+ }
238
+
212
239
  /**
213
240
  * SSR safe default empty Range
214
241
  */
@@ -219,8 +246,9 @@ const TUI_RANGE = new InjectionToken(`[TUI_RANGE]`, {
219
246
  /**
220
247
  * Swipe options
221
248
  */
222
- const TUI_SWIPE_OPTIONS = new InjectionToken(`[TUI_SWIPE_OPTIONS]`, {
223
- factory: () => ({ timeout: 500, threshold: 30 }),
249
+ const TUI_SWIPE_OPTIONS = tuiCreateToken({
250
+ timeout: 500,
251
+ threshold: 30,
224
252
  });
225
253
 
226
254
  /**
@@ -250,15 +278,13 @@ const TUI_WINDOW_HEIGHT = new InjectionToken(`[TUI_WINDOW_HEIGHT]`, {
250
278
  /**
251
279
  * Zoom options
252
280
  */
253
- const TUI_ZOOM_OPTIONS = new InjectionToken(`[TUI_ZOOM_OPTIONS]`, {
254
- factory: () => ({
255
- wheelSensitivity: 0.01,
256
- }),
281
+ const TUI_ZOOM_OPTIONS = tuiCreateToken({
282
+ wheelSensitivity: 0.01,
257
283
  });
258
284
 
259
285
  /**
260
286
  * Generated bundle index. Do not edit.
261
287
  */
262
288
 
263
- export { TUI_ACTIVE_ELEMENT, TUI_ALERTS, TUI_DEFAULT_RENDERER, TUI_DIALOGS, TUI_ENSURE_BASE_HREF, TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_ANDROID, TUI_IS_APPLE, TUI_IS_CHROMIUM, TUI_IS_CYPRESS, TUI_IS_FIREFOX, TUI_IS_IOS, TUI_IS_MOBILE, TUI_IS_STACKBLITZ, TUI_IS_WEBKIT, TUI_RANGE, TUI_REMOVED_ELEMENT, TUI_SWIPE_OPTIONS, TUI_TAKE_ONLY_TRUSTED_EVENTS, TUI_TOUCH_SUPPORTED, TUI_WINDOW_HEIGHT, TUI_ZOOM_OPTIONS, tuiAsAlerts, tuiAsDialog, tuiAsFocusableItemAccessor };
289
+ export { TUI_ACTIVE_ELEMENT, TUI_ALERTS, TUI_DEFAULT_RENDERER, TUI_DIALOGS, TUI_ENSURE_BASE_HREF, TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_ANDROID, TUI_IS_APPLE, TUI_IS_CHROMIUM, TUI_IS_CYPRESS, TUI_IS_E2E, TUI_IS_FIREFOX, TUI_IS_IOS, TUI_IS_MOBILE, TUI_IS_PLAYWRIGHT, TUI_IS_STACKBLITZ, TUI_IS_WEBKIT, TUI_PLATFORM, TUI_RANGE, TUI_REMOVED_ELEMENT, TUI_SWIPE_OPTIONS, TUI_TAKE_ONLY_TRUSTED_EVENTS, TUI_TOUCH_SUPPORTED, TUI_WINDOW_HEIGHT, TUI_ZOOM_OPTIONS, tuiAsAlerts, tuiAsDialog, tuiAsFocusableItemAccessor, tuiPlatformFactory };
264
290
  //# sourceMappingURL=taiga-ui-cdk-tokens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-tokens.js","sources":["../../../projects/cdk/tokens/removed-element.ts","../../../projects/cdk/tokens/active-element.ts","../../../projects/cdk/tokens/alerts.ts","../../../projects/cdk/tokens/default-renderer.ts","../../../projects/cdk/tokens/dialogs.ts","../../../projects/cdk/tokens/ensure-base-href.ts","../../../projects/cdk/tokens/focusable-item-accessor.ts","../../../projects/cdk/tokens/is-ios.ts","../../../projects/cdk/tokens/is-mobile.ts","../../../projects/cdk/tokens/is-android.ts","../../../projects/cdk/tokens/is-apple.ts","../../../projects/cdk/tokens/is-chromium.ts","../../../projects/cdk/tokens/is-cypress.ts","../../../projects/cdk/tokens/is-firefox.ts","../../../projects/cdk/tokens/is-stackblitz.ts","../../../projects/cdk/tokens/is-webkit.ts","../../../projects/cdk/tokens/range.ts","../../../projects/cdk/tokens/swipe-options.ts","../../../projects/cdk/tokens/take-only-trusted-events.ts","../../../projects/cdk/tokens/touch-supported.ts","../../../projects/cdk/tokens/window-height.ts","../../../projects/cdk/tokens/zoom-options.ts","../../../projects/cdk/tokens/taiga-ui-cdk-tokens.ts"],"sourcesContent":["import {ɵAnimationEngine as AnimationEngine} from '@angular/animations/browser';\nimport {inject, InjectFlags, InjectionToken} from '@angular/core';\nimport {BehaviorSubject, Observable, timer} from 'rxjs';\nimport {map, share, startWith, switchMap} from 'rxjs/operators';\n\n/**\n * Element currently being removed by AnimationEngine\n */\nexport const TUI_REMOVED_ELEMENT = new InjectionToken<Observable<Element | null>>(\n `[TUI_REMOVED_ELEMENT]`,\n {\n factory: () => {\n const stub = {onRemovalComplete: () => {}};\n const element$ = new BehaviorSubject<Element | null>(null);\n const engine = inject(AnimationEngine, InjectFlags.Optional) || stub;\n const {onRemovalComplete = stub.onRemovalComplete} = engine;\n\n engine.onRemovalComplete = (element, context) => {\n element$.next(element);\n onRemovalComplete.call(engine, element, context);\n };\n\n return element$.pipe(\n switchMap(element =>\n timer(0).pipe(\n map(() => null),\n startWith(element),\n ),\n ),\n share(),\n );\n },\n },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiGetActualTarget, tuiGetDocumentOrShadowRoot} from '@taiga-ui/cdk/utils';\nimport {merge, Observable, of, timer} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n repeatWhen,\n share,\n startWith,\n switchMap,\n take,\n takeUntil,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {TUI_REMOVED_ELEMENT} from './removed-element';\n\n/**\n * Active element on the document for ActiveZone\n */\nexport const TUI_ACTIVE_ELEMENT = new InjectionToken<Observable<EventTarget | null>>(\n `[TUI_ACTIVE_ELEMENT]`,\n {\n factory: () => {\n const removedElement$ = inject(TUI_REMOVED_ELEMENT);\n const win = inject(WINDOW);\n const doc = inject(DOCUMENT);\n const focusout$ = tuiTypedFromEvent(win, `focusout`);\n const focusin$ = tuiTypedFromEvent(win, `focusin`);\n const blur$ = tuiTypedFromEvent(win, `blur`);\n const mousedown$ = tuiTypedFromEvent(win, `mousedown`);\n const mouseup$ = tuiTypedFromEvent(win, `mouseup`);\n\n return merge(\n focusout$.pipe(\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(mousedown$),\n /**\n * TODO: replace to\n * repeat({delay: () => mouseup$})\n * in RxJS 7\n */\n // eslint-disable-next-line rxjs/no-ignored-notifier\n repeatWhen(() => mouseup$),\n withLatestFrom(removedElement$),\n filter(([event, removedElement]) =>\n isValidFocusout(tuiGetActualTarget(event), removedElement),\n ),\n map(([{relatedTarget}]) => relatedTarget),\n ),\n blur$.pipe(\n map(() => doc.activeElement),\n filter(element => !!element?.matches(`iframe`)),\n ),\n focusin$.pipe(\n switchMap(event => {\n const target = tuiGetActualTarget(event);\n const root = tuiGetDocumentOrShadowRoot(target) as Document;\n\n return root === doc\n ? of(target)\n : shadowRootActiveElement(root).pipe(startWith(target));\n }),\n ),\n mousedown$.pipe(\n switchMap(event => {\n const actualTargetInCurrentTime = tuiGetActualTarget(event);\n\n return !doc.activeElement || doc.activeElement === doc.body\n ? of(actualTargetInCurrentTime)\n : focusout$.pipe(\n take(1),\n map(\n /**\n * Do not use `map(() => tuiGetActualTarget(event))`\n * because we have different result in runtime\n */\n () => actualTargetInCurrentTime,\n ),\n takeUntil(timer(0)),\n );\n }),\n ),\n ).pipe(distinctUntilChanged(), share());\n },\n },\n);\n\n// Checks if focusout event should be considered leaving active zone\nfunction isValidFocusout(target: any, removedElement: Element | null = null): boolean {\n return (\n // Not due to switching tabs/going to DevTools\n tuiGetDocumentOrShadowRoot(target).activeElement !== target &&\n // Not due to button/input becoming disabled or under disabled fieldset\n !target.matches(`:disabled`) &&\n // Not due to element being removed from DOM\n !removedElement?.contains(target)\n );\n}\n\nfunction shadowRootActiveElement(root: Document): Observable<EventTarget | null> {\n return merge(\n tuiTypedFromEvent(root, `focusin`).pipe(map(({target}) => target)),\n tuiTypedFromEvent(root, `focusout`).pipe(\n filter(\n ({target, relatedTarget}) => !!relatedTarget && isValidFocusout(target),\n ),\n map(({relatedTarget}) => relatedTarget),\n ),\n );\n}\n","import {InjectionToken, Provider, Type} from '@angular/core';\nimport {TuiAriaDialogContext} from '@taiga-ui/cdk/interfaces';\nimport {Observable} from 'rxjs';\n\n/**\n * A stream of alerts\n */\nexport const TUI_ALERTS = new InjectionToken<\n ReadonlyArray<Observable<readonly TuiAriaDialogContext[]>>\n>(`[TUI_ALERTS]`, {\n factory: () => [],\n});\n\nexport function tuiAsAlerts(\n useExisting: Type<Observable<readonly TuiAriaDialogContext[]>>,\n): Provider {\n return {\n provide: TUI_ALERTS,\n multi: true,\n useExisting,\n };\n}\n","import {inject, InjectionToken, Renderer2, RendererFactory2} from '@angular/core';\n\n/**\n * A Renderer2 for global services\n * https://github.com/angular/angular/issues/17824#issuecomment-353239017\n * @deprecated unnecessary\n * TODO: remove in 4.0\n */\nexport const TUI_DEFAULT_RENDERER = new InjectionToken<Renderer2>(\n `[TUI_DEFAULT_RENDERER]`,\n {\n // @ts-ignore\n factory: () => inject(RendererFactory2).createRenderer(null, null),\n },\n);\n","import {InjectionToken, Provider, Type} from '@angular/core';\nimport {TuiAriaDialogContext} from '@taiga-ui/cdk/interfaces';\nimport {Observable} from 'rxjs';\n\n/**\n * A stream of dialogs\n */\nexport const TUI_DIALOGS = new InjectionToken<\n ReadonlyArray<Observable<readonly TuiAriaDialogContext[]>>\n>(`[TUI_DIALOGS]`, {\n factory: () => [],\n});\n\nexport function tuiAsDialog(\n useExisting: Type<Observable<readonly TuiAriaDialogContext[]>>,\n): Provider {\n return {\n provide: TUI_DIALOGS,\n multi: true,\n useExisting,\n };\n}\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\n\nexport const TUI_ENSURE_BASE_HREF: InjectionToken<string> = new InjectionToken<string>(\n `[TUI_ENSURE_BASE_HREF]`,\n {\n factory: () => {\n const link = inject(DOCUMENT).createElement(`a`);\n\n link.href = ``;\n\n return link.pathname;\n },\n },\n);\n","import {InjectionToken, Provider, Type} from '@angular/core';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\n\n/**\n * A component that can be focused\n */\nexport const TUI_FOCUSABLE_ITEM_ACCESSOR =\n new InjectionToken<TuiFocusableElementAccessor>(`[TUI_FOCUSABLE_ITEM_ACCESSOR]`);\n\nexport function tuiAsFocusableItemAccessor(\n useExisting: Type<TuiFocusableElementAccessor>,\n): Provider {\n return {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting,\n };\n}\n","import {inject, InjectionToken} from '@angular/core';\nimport {NAVIGATOR} from '@ng-web-apis/common';\nimport {tuiIsIos} from '@taiga-ui/cdk/utils';\n\n/**\n * iOS browser detection\n */\nexport const TUI_IS_IOS = new InjectionToken<boolean>(`[TUI_IS_IOS]`, {\n factory: () => tuiIsIos(inject(NAVIGATOR)),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {USER_AGENT} from '@ng-web-apis/common';\n\n// https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/\nconst firstRegex =\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/;\nconst secondRegex =\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/;\n\n/**\n * Mobile browser detection\n */\nexport const TUI_IS_MOBILE = new InjectionToken<boolean>(`[TUI_IS_MOBILE]`, {\n factory: () =>\n firstRegex.test(inject(USER_AGENT).toLowerCase()) ||\n secondRegex.test(inject(USER_AGENT).slice(0, 4).toLowerCase()),\n});\n","import {inject, InjectionToken} from '@angular/core';\n\nimport {TUI_IS_IOS} from './is-ios';\nimport {TUI_IS_MOBILE} from './is-mobile';\n\n/**\n * Mobile browser that is not iOS (technically includes Windows Phone, Blackberry etc.)\n */\nexport const TUI_IS_ANDROID = new InjectionToken<boolean>(`[TUI_IS_ANDROID]`, {\n factory: () => inject(TUI_IS_MOBILE) && !inject(TUI_IS_IOS),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {NAVIGATOR} from '@ng-web-apis/common';\nimport {tuiIsApple} from '@taiga-ui/cdk/utils';\n\n/**\n * Apple(safari/webkit) detection\n */\nexport const TUI_IS_APPLE = new InjectionToken<boolean>(`[TUI_IS_APPLE]`, {\n factory: () => tuiIsApple(inject(NAVIGATOR)),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\n/**\n * Chromium browser engine detection\n */\nexport const TUI_IS_CHROMIUM = new InjectionToken<boolean>(`[TUI_IS_CHROMIUM]`, {\n factory: () => !!(inject(WINDOW) as Window & {chrome: unknown}).chrome,\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\ninterface WindowWithCypress extends Window {\n Cypress?: unknown;\n}\n\n/**\n * Detect if app is running under Cypress\n * {@link https://docs.cypress.io/faq/questions/using-cypress-faq#Is-there-any-way-to-detect-if-my-app-is-running-under-Cypress Cypress docs}\n */\nexport const TUI_IS_CYPRESS = new InjectionToken<boolean>(`[TUI_IS_CYPRESS]`, {\n factory: () => !!inject<WindowWithCypress>(WINDOW).Cypress,\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\n/**\n * Firefox browser engine detection\n */\nexport const TUI_IS_FIREFOX = new InjectionToken<boolean>(`[TUI_IS_FIREFOX]`, {\n factory: () =>\n typeof (inject(WINDOW) as Window & {mozCancelFullScreen: unknown})\n ?.mozCancelFullScreen !== `undefined`,\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\nexport const TUI_IS_STACKBLITZ = new InjectionToken<boolean>(`[TUI_IS_STACKBLITZ]`, {\n factory: () => inject(WINDOW).location.host.endsWith(`stackblitz.io`),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\n/**\n * Webkit browser engine detection\n */\nexport const TUI_IS_WEBKIT = new InjectionToken<boolean>(`[TUI_IS_WEBKIT]`, {\n factory: () =>\n !!(inject(WINDOW) as unknown as {webkitConvertPointFromNodeToPage?: unknown})\n ?.webkitConvertPointFromNodeToPage,\n});\n","import {isPlatformBrowser} from '@angular/common';\nimport {inject, InjectionToken, PLATFORM_ID} from '@angular/core';\n\n/**\n * SSR safe default empty Range\n */\nexport const TUI_RANGE = new InjectionToken<Range>(`[TUI_RANGE]`, {\n factory: () =>\n isPlatformBrowser(inject(PLATFORM_ID)) ? new Range() : ({} as unknown as Range),\n});\n","import {InjectionToken} from '@angular/core';\nimport {TuiSwipeOptions} from '@taiga-ui/cdk/interfaces';\n\n/**\n * Swipe options\n */\nexport const TUI_SWIPE_OPTIONS = new InjectionToken<TuiSwipeOptions>(\n `[TUI_SWIPE_OPTIONS]`,\n {\n factory: () => ({timeout: 500, threshold: 30}),\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {ALWAYS_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\n\n/**\n * @description:\n * The isTrusted read-only property of the Event interface is a boolean value that is true\n * when the event was generated by a user action, and false when the event was created or\n * modified by a script or dispatched via EventTarget.dispatchEvent().\n */\nexport const TUI_TAKE_ONLY_TRUSTED_EVENTS: InjectionToken<boolean> =\n new InjectionToken<boolean>(`[TUI_TAKE_ONLY_TRUSTED_EVENTS]`, {\n factory: ALWAYS_TRUE_HANDLER,\n });\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\nexport const TUI_TOUCH_SUPPORTED = new InjectionToken(`[TUI_TOUCH_SUPPORTED]`, {\n factory: () => inject(WINDOW).matchMedia(`(any-pointer: coarse)`).matches,\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {Observable} from 'rxjs';\nimport {map, shareReplay, startWith} from 'rxjs/operators';\n\n/**\n * Window height accounting for disappearing address bar\n */\nexport const TUI_WINDOW_HEIGHT = new InjectionToken<Observable<number>>(\n `[TUI_WINDOW_HEIGHT]`,\n {\n factory: () => {\n const win = inject(WINDOW);\n\n return tuiTypedFromEvent(win, `resize`).pipe(\n startWith(null),\n map(() => win.innerHeight),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n },\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiZoomOptions} from '@taiga-ui/cdk/interfaces';\n\n/**\n * Zoom options\n */\nexport const TUI_ZOOM_OPTIONS = new InjectionToken<TuiZoomOptions>(`[TUI_ZOOM_OPTIONS]`, {\n factory: () => ({\n wheelSensitivity: 0.01,\n }),\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["AnimationEngine"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-tokens.js","sources":["../../../projects/cdk/tokens/removed-element.ts","../../../projects/cdk/tokens/active-element.ts","../../../projects/cdk/tokens/alerts.ts","../../../projects/cdk/tokens/default-renderer.ts","../../../projects/cdk/tokens/dialogs.ts","../../../projects/cdk/tokens/ensure-base-href.ts","../../../projects/cdk/tokens/focusable-item-accessor.ts","../../../projects/cdk/tokens/is-ios.ts","../../../projects/cdk/tokens/is-mobile.ts","../../../projects/cdk/tokens/is-android.ts","../../../projects/cdk/tokens/is-apple.ts","../../../projects/cdk/tokens/is-chromium.ts","../../../projects/cdk/tokens/is-cypress.ts","../../../projects/cdk/tokens/is-playwright.ts","../../../projects/cdk/tokens/is-e2e.ts","../../../projects/cdk/tokens/is-firefox.ts","../../../projects/cdk/tokens/is-stackblitz.ts","../../../projects/cdk/tokens/is-webkit.ts","../../../projects/cdk/tokens/platform.ts","../../../projects/cdk/tokens/range.ts","../../../projects/cdk/tokens/swipe-options.ts","../../../projects/cdk/tokens/take-only-trusted-events.ts","../../../projects/cdk/tokens/touch-supported.ts","../../../projects/cdk/tokens/window-height.ts","../../../projects/cdk/tokens/zoom-options.ts","../../../projects/cdk/tokens/taiga-ui-cdk-tokens.ts"],"sourcesContent":["import {ɵAnimationEngine as AnimationEngine} from '@angular/animations/browser';\nimport {inject, InjectFlags, InjectionToken} from '@angular/core';\nimport {BehaviorSubject, Observable, timer} from 'rxjs';\nimport {map, share, startWith, switchMap} from 'rxjs/operators';\n\n/**\n * Element currently being removed by AnimationEngine\n */\nexport const TUI_REMOVED_ELEMENT = new InjectionToken<Observable<Element | null>>(\n `[TUI_REMOVED_ELEMENT]`,\n {\n factory: () => {\n const stub = {onRemovalComplete: () => {}};\n const element$ = new BehaviorSubject<Element | null>(null);\n const engine = inject(AnimationEngine, InjectFlags.Optional) || stub;\n const {onRemovalComplete = stub.onRemovalComplete} = engine;\n\n engine.onRemovalComplete = (element, context) => {\n element$.next(element);\n onRemovalComplete.call(engine, element, context);\n };\n\n return element$.pipe(\n switchMap(element =>\n timer(0).pipe(\n map(() => null),\n startWith(element),\n ),\n ),\n share(),\n );\n },\n },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiGetActualTarget, tuiGetDocumentOrShadowRoot} from '@taiga-ui/cdk/utils';\nimport {merge, Observable, of, timer} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n repeatWhen,\n share,\n startWith,\n switchMap,\n take,\n takeUntil,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {TUI_REMOVED_ELEMENT} from './removed-element';\n\n/**\n * Active element on the document for ActiveZone\n */\nexport const TUI_ACTIVE_ELEMENT = new InjectionToken<Observable<EventTarget | null>>(\n `[TUI_ACTIVE_ELEMENT]`,\n {\n factory: () => {\n const removedElement$ = inject(TUI_REMOVED_ELEMENT);\n const win = inject(WINDOW);\n const doc = inject(DOCUMENT);\n const focusout$ = tuiTypedFromEvent(win, `focusout`);\n const focusin$ = tuiTypedFromEvent(win, `focusin`);\n const blur$ = tuiTypedFromEvent(win, `blur`);\n const mousedown$ = tuiTypedFromEvent(win, `mousedown`);\n const mouseup$ = tuiTypedFromEvent(win, `mouseup`);\n\n return merge(\n focusout$.pipe(\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(mousedown$),\n /**\n * TODO: replace to\n * repeat({delay: () => mouseup$})\n * in RxJS 7\n */\n // eslint-disable-next-line rxjs/no-ignored-notifier\n repeatWhen(() => mouseup$),\n withLatestFrom(removedElement$),\n filter(([event, removedElement]) =>\n isValidFocusout(tuiGetActualTarget(event), removedElement),\n ),\n map(([{relatedTarget}]) => relatedTarget),\n ),\n blur$.pipe(\n map(() => doc.activeElement),\n filter(element => !!element?.matches(`iframe`)),\n ),\n focusin$.pipe(\n switchMap(event => {\n const target = tuiGetActualTarget(event);\n const root = tuiGetDocumentOrShadowRoot(target) as Document;\n\n return root === doc\n ? of(target)\n : shadowRootActiveElement(root).pipe(startWith(target));\n }),\n ),\n mousedown$.pipe(\n switchMap(event => {\n const actualTargetInCurrentTime = tuiGetActualTarget(event);\n\n return !doc.activeElement || doc.activeElement === doc.body\n ? of(actualTargetInCurrentTime)\n : focusout$.pipe(\n take(1),\n map(\n /**\n * Do not use `map(() => tuiGetActualTarget(event))`\n * because we have different result in runtime\n */\n () => actualTargetInCurrentTime,\n ),\n takeUntil(timer(0)),\n );\n }),\n ),\n ).pipe(distinctUntilChanged(), share());\n },\n },\n);\n\n// Checks if focusout event should be considered leaving active zone\nfunction isValidFocusout(target: any, removedElement: Element | null = null): boolean {\n return (\n // Not due to switching tabs/going to DevTools\n tuiGetDocumentOrShadowRoot(target).activeElement !== target &&\n // Not due to button/input becoming disabled or under disabled fieldset\n !target.matches(`:disabled`) &&\n // Not due to element being removed from DOM\n !removedElement?.contains(target)\n );\n}\n\nfunction shadowRootActiveElement(root: Document): Observable<EventTarget | null> {\n return merge(\n tuiTypedFromEvent(root, `focusin`).pipe(map(({target}) => target)),\n tuiTypedFromEvent(root, `focusout`).pipe(\n filter(\n ({target, relatedTarget}) => !!relatedTarget && isValidFocusout(target),\n ),\n map(({relatedTarget}) => relatedTarget),\n ),\n );\n}\n","import {Provider, Type} from '@angular/core';\nimport {TuiAriaDialogContext} from '@taiga-ui/cdk/interfaces';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils';\nimport {Observable} from 'rxjs';\n\n/**\n * A stream of alerts\n */\nexport const TUI_ALERTS = tuiCreateToken<\n ReadonlyArray<Observable<readonly TuiAriaDialogContext[]>>\n>([]);\n\nexport function tuiAsAlerts(\n useExisting: Type<Observable<readonly TuiAriaDialogContext[]>>,\n): Provider {\n return {\n provide: TUI_ALERTS,\n multi: true,\n useExisting,\n };\n}\n","import {inject, InjectionToken, Renderer2, RendererFactory2} from '@angular/core';\n\n/**\n * A Renderer2 for global services\n * https://github.com/angular/angular/issues/17824#issuecomment-353239017\n * @deprecated unnecessary\n * TODO: remove in 4.0\n */\nexport const TUI_DEFAULT_RENDERER = new InjectionToken<Renderer2>(\n `[TUI_DEFAULT_RENDERER]`,\n {\n // @ts-ignore\n factory: () => inject(RendererFactory2).createRenderer(null, null),\n },\n);\n","import {Provider, Type} from '@angular/core';\nimport {TuiAriaDialogContext} from '@taiga-ui/cdk/interfaces';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils';\nimport {Observable} from 'rxjs';\n\n/**\n * A stream of dialogs\n */\nexport const TUI_DIALOGS = tuiCreateToken<\n ReadonlyArray<Observable<readonly TuiAriaDialogContext[]>>\n>([]);\n\nexport function tuiAsDialog(\n useExisting: Type<Observable<readonly TuiAriaDialogContext[]>>,\n): Provider {\n return {\n provide: TUI_DIALOGS,\n multi: true,\n useExisting,\n };\n}\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\n\nexport const TUI_ENSURE_BASE_HREF: InjectionToken<string> = new InjectionToken<string>(\n `[TUI_ENSURE_BASE_HREF]`,\n {\n factory: () => {\n const baseHref = inject(DOCUMENT).querySelector(`base`)?.href;\n\n if (baseHref) {\n return baseHref;\n }\n\n const link = inject(DOCUMENT).createElement(`a`);\n\n link.href = ``;\n\n return link.pathname;\n },\n },\n);\n","import {InjectionToken, Provider, Type} from '@angular/core';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\n\n/**\n * A component that can be focused\n */\nexport const TUI_FOCUSABLE_ITEM_ACCESSOR =\n new InjectionToken<TuiFocusableElementAccessor>(`[TUI_FOCUSABLE_ITEM_ACCESSOR]`);\n\nexport function tuiAsFocusableItemAccessor(\n useExisting: Type<TuiFocusableElementAccessor>,\n): Provider {\n return {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting,\n };\n}\n","import {inject, InjectionToken} from '@angular/core';\nimport {NAVIGATOR} from '@ng-web-apis/common';\nimport {tuiIsIos} from '@taiga-ui/cdk/utils';\n\n/**\n * iOS browser detection\n */\nexport const TUI_IS_IOS = new InjectionToken<boolean>(`[TUI_IS_IOS]`, {\n factory: () => tuiIsIos(inject(NAVIGATOR)),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {USER_AGENT} from '@ng-web-apis/common';\n\n// https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/\nconst firstRegex =\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/;\nconst secondRegex =\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/;\n\n/**\n * Mobile browser detection\n */\nexport const TUI_IS_MOBILE = new InjectionToken<boolean>(`[TUI_IS_MOBILE]`, {\n factory: () =>\n firstRegex.test(inject(USER_AGENT).toLowerCase()) ||\n secondRegex.test(inject(USER_AGENT).slice(0, 4).toLowerCase()),\n});\n","import {inject, InjectionToken} from '@angular/core';\n\nimport {TUI_IS_IOS} from './is-ios';\nimport {TUI_IS_MOBILE} from './is-mobile';\n\n/**\n * Mobile browser that is not iOS (technically includes Windows Phone, Blackberry etc.)\n */\nexport const TUI_IS_ANDROID = new InjectionToken<boolean>(`[TUI_IS_ANDROID]`, {\n factory: () => inject(TUI_IS_MOBILE) && !inject(TUI_IS_IOS),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {NAVIGATOR} from '@ng-web-apis/common';\nimport {tuiIsApple} from '@taiga-ui/cdk/utils';\n\n/**\n * Apple(safari/webkit) detection\n */\nexport const TUI_IS_APPLE = new InjectionToken<boolean>(`[TUI_IS_APPLE]`, {\n factory: () => tuiIsApple(inject(NAVIGATOR)),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\n/**\n * Chromium browser engine detection\n */\nexport const TUI_IS_CHROMIUM = new InjectionToken<boolean>(`[TUI_IS_CHROMIUM]`, {\n factory: () => !!(inject(WINDOW) as Window & {chrome: unknown}).chrome,\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\ninterface WindowWithCypress extends Window {\n Cypress?: unknown;\n}\n\n/**\n * Detect if app is running under Cypress\n * {@link https://docs.cypress.io/faq/questions/using-cypress-faq#Is-there-any-way-to-detect-if-my-app-is-running-under-Cypress Cypress docs}\n */\nexport const TUI_IS_CYPRESS = new InjectionToken<boolean>(`[TUI_IS_CYPRESS]`, {\n factory: () => !!inject<WindowWithCypress>(WINDOW).Cypress,\n});\n","import {InjectionToken} from '@angular/core';\nimport {ALWAYS_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\n\n/**\n * Detect if app is running under Playwright\n */\nexport const TUI_IS_PLAYWRIGHT = new InjectionToken<boolean>(`[TUI_IS_PLAYWRIGHT]`, {\n factory: ALWAYS_FALSE_HANDLER,\n});\n","import {inject, InjectionToken} from '@angular/core';\n\nimport {TUI_IS_CYPRESS} from './is-cypress';\nimport {TUI_IS_PLAYWRIGHT} from './is-playwright';\n\n/**\n * Detect if app is running under any of test frameworks\n */\nexport const TUI_IS_E2E = new InjectionToken<boolean>(`[TUI_IS_E2E]`, {\n factory: () => inject(TUI_IS_CYPRESS) || inject(TUI_IS_PLAYWRIGHT),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\n/**\n * Firefox browser engine detection\n */\nexport const TUI_IS_FIREFOX = new InjectionToken<boolean>(`[TUI_IS_FIREFOX]`, {\n factory: () =>\n typeof (inject(WINDOW) as Window & {mozCancelFullScreen: unknown})\n ?.mozCancelFullScreen !== `undefined`,\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\nexport const TUI_IS_STACKBLITZ = new InjectionToken<boolean>(`[TUI_IS_STACKBLITZ]`, {\n factory: () => inject(WINDOW).location.host.endsWith(`stackblitz.io`),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\n/**\n * Webkit browser engine detection\n */\nexport const TUI_IS_WEBKIT = new InjectionToken<boolean>(`[TUI_IS_WEBKIT]`, {\n factory: () =>\n !!(inject(WINDOW) as unknown as {webkitConvertPointFromNodeToPage?: unknown})\n ?.webkitConvertPointFromNodeToPage,\n});\n","import {inject} from '@angular/core';\nimport {TuiPlatform} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils';\n\nimport {TUI_IS_ANDROID} from './is-android';\nimport {TUI_IS_IOS} from './is-ios';\n\n// TODO: Switch to factory in 4.0\nexport const TUI_PLATFORM = tuiCreateToken<TuiPlatform>(`web`);\n\nexport function tuiPlatformFactory(): TuiPlatform {\n if (inject(TUI_IS_IOS)) {\n return `ios`;\n }\n\n if (inject(TUI_IS_ANDROID)) {\n return `android`;\n }\n\n return `web`;\n}\n","import {isPlatformBrowser} from '@angular/common';\nimport {inject, InjectionToken, PLATFORM_ID} from '@angular/core';\n\n/**\n * SSR safe default empty Range\n */\nexport const TUI_RANGE = new InjectionToken<Range>(`[TUI_RANGE]`, {\n factory: () =>\n isPlatformBrowser(inject(PLATFORM_ID)) ? new Range() : ({} as unknown as Range),\n});\n","import {TuiSwipeOptions} from '@taiga-ui/cdk/interfaces';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils';\n\n/**\n * Swipe options\n */\nexport const TUI_SWIPE_OPTIONS = tuiCreateToken<TuiSwipeOptions>({\n timeout: 500,\n threshold: 30,\n});\n","import {InjectionToken} from '@angular/core';\nimport {ALWAYS_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\n\n/**\n * @description:\n * The isTrusted read-only property of the Event interface is a boolean value that is true\n * when the event was generated by a user action, and false when the event was created or\n * modified by a script or dispatched via EventTarget.dispatchEvent().\n */\nexport const TUI_TAKE_ONLY_TRUSTED_EVENTS: InjectionToken<boolean> =\n new InjectionToken<boolean>(`[TUI_TAKE_ONLY_TRUSTED_EVENTS]`, {\n factory: ALWAYS_TRUE_HANDLER,\n });\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\n\nexport const TUI_TOUCH_SUPPORTED = new InjectionToken(`[TUI_TOUCH_SUPPORTED]`, {\n factory: () => inject(WINDOW).matchMedia(`(any-pointer: coarse)`).matches,\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {Observable} from 'rxjs';\nimport {map, shareReplay, startWith} from 'rxjs/operators';\n\n/**\n * Window height accounting for disappearing address bar\n */\nexport const TUI_WINDOW_HEIGHT = new InjectionToken<Observable<number>>(\n `[TUI_WINDOW_HEIGHT]`,\n {\n factory: () => {\n const win = inject(WINDOW);\n\n return tuiTypedFromEvent(win, `resize`).pipe(\n startWith(null),\n map(() => win.innerHeight),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n },\n },\n);\n","import {TuiZoomOptions} from '@taiga-ui/cdk/interfaces';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils';\n\n/**\n * Zoom options\n */\nexport const TUI_ZOOM_OPTIONS = tuiCreateToken<TuiZoomOptions>({\n wheelSensitivity: 0.01,\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["AnimationEngine"],"mappings":"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"}
@@ -10,6 +10,37 @@ function tuiHexToRgb(hex) {
10
10
  : [0, 0, 0];
11
11
  }
12
12
 
13
+ function tuiHexToRGBA(hex, alpha) {
14
+ const [r, g, b, a] = tuiParseHex(hex, alpha);
15
+ return a < 1 ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`;
16
+ }
17
+ function tuiIsValidHex(hex) {
18
+ // eslint-disable-next-line unicorn/no-unsafe-regex
19
+ return /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);
20
+ }
21
+ const getChunksFromString = (hex, chunkSize) => hex.match(new RegExp(`.{${chunkSize}}`, `g`));
22
+ const convertHexUnitTo256 = (hexStr) => parseInt(hexStr.repeat(2 / hexStr.length), 16);
23
+ const getAlphaFloat = (a, alpha) => {
24
+ if (typeof a !== `undefined`) {
25
+ return Number((a / 255).toFixed(2));
26
+ }
27
+ if (typeof alpha !== `number` || alpha < 0 || alpha > 1) {
28
+ return 1;
29
+ }
30
+ return alpha;
31
+ };
32
+ function tuiParseHex(hex, alpha) {
33
+ var _a;
34
+ if (!tuiIsValidHex(hex)) {
35
+ throw new Error(`Invalid HEX`);
36
+ }
37
+ const chunkSize = Math.floor((hex.length - 1) / 3);
38
+ const hexArr = getChunksFromString(hex.slice(1), chunkSize);
39
+ const [r, g, b, a] = (_a = hexArr === null || hexArr === void 0 ? void 0 : hexArr.map(convertHexUnitTo256)) !== null && _a !== void 0 ? _a : [];
40
+ const floatAlpha = getAlphaFloat(a, alpha);
41
+ return [r, g, b, floatAlpha];
42
+ }
43
+
13
44
  /**
14
45
  * https://stackoverflow.com/a/54024653/2706426
15
46
  */
@@ -60,9 +91,35 @@ function tuiRgbToHsv(r, g, b) {
60
91
  return [60 * (h < 0 ? h + 6 : h), v && n / v, v];
61
92
  }
62
93
 
94
+ function tuiRgbaToHex(color) {
95
+ var _a, _b;
96
+ if (!tuiIsValidRgba(color)) {
97
+ throw new Error(`Invalid RGBa`);
98
+ }
99
+ const rgb = (_a = color
100
+ .replace(/\s/g, ``)
101
+ // eslint-disable-next-line unicorn/no-unsafe-regex
102
+ .match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i)) !== null && _a !== void 0 ? _a : [];
103
+ let alpha = ((_b = rgb === null || rgb === void 0 ? void 0 : rgb[4]) !== null && _b !== void 0 ? _b : ``).toString().trim();
104
+ let hex = rgb
105
+ ? (rgb[1] | (1 << 8)).toString(16).slice(1) +
106
+ (rgb[2] | (1 << 8)).toString(16).slice(1) +
107
+ (rgb[3] | (1 << 8)).toString(16).slice(1)
108
+ : color;
109
+ alpha = alpha !== `` ? alpha : 0o1;
110
+ alpha = ((Number(alpha) * 255) | (1 << 8)).toString(16).slice(1);
111
+ hex += alpha;
112
+ return `#${hex.toUpperCase()}`;
113
+ }
114
+ function tuiIsValidRgba(rgba) {
115
+ const range = `(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|2[0-5]{2})`;
116
+ const alpha = `([01]|0?\\.\\d+)`;
117
+ 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);
118
+ }
119
+
63
120
  /**
64
121
  * Generated bundle index. Do not edit.
65
122
  */
66
123
 
67
- export { tuiHexToRgb, tuiHsvToRgb, tuiParseColor, tuiRgbToHex, tuiRgbToHsv };
124
+ export { tuiHexToRGBA, tuiHexToRgb, tuiHsvToRgb, tuiIsValidHex, tuiIsValidRgba, tuiParseColor, tuiParseHex, tuiRgbToHex, tuiRgbToHsv, tuiRgbaToHex };
68
125
  //# sourceMappingURL=taiga-ui-cdk-utils-color.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-color.js","sources":["../../../projects/cdk/utils/color/hex-to-rgb.ts","../../../projects/cdk/utils/color/hsv-to-rgb.ts","../../../projects/cdk/utils/color/parse-color.ts","../../../projects/cdk/utils/color/rgb-to-hex.ts","../../../projects/cdk/utils/color/rgb-to-hsv.ts","../../../projects/cdk/utils/color/taiga-ui-cdk-utils-color.ts"],"sourcesContent":["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","/**\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\nfunction 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","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","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","/**\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.js","sources":["../../../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/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 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","export 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 // eslint-disable-next-line unicorn/no-unsafe-regex\n return /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);\n}\n\nconst 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 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","/**\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\nfunction 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","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","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 .replace(/\\s/g, ``)\n // eslint-disable-next-line unicorn/no-unsafe-regex\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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"}