@taiga-ui/cdk 2.20.0 → 2.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +7 -3
  2. package/abstract/taiga-ui-cdk-abstract.metadata.json +1 -1
  3. package/abstract/theme-switcher.d.ts +2 -1
  4. package/bundles/taiga-ui-cdk-abstract.umd.js +29 -15
  5. package/bundles/taiga-ui-cdk-abstract.umd.js.map +1 -1
  6. package/bundles/taiga-ui-cdk-abstract.umd.min.js +2 -2
  7. package/bundles/taiga-ui-cdk-abstract.umd.min.js.map +1 -1
  8. package/bundles/taiga-ui-cdk-components-dialog-host.umd.js +1 -1
  9. package/bundles/taiga-ui-cdk-components-dialog-host.umd.min.js +1 -1
  10. package/bundles/taiga-ui-cdk-components-portal-host.umd.js +1 -1
  11. package/bundles/taiga-ui-cdk-components-portal-host.umd.min.js +1 -1
  12. package/bundles/taiga-ui-cdk-directives-autofilled.umd.js +13 -31
  13. package/bundles/taiga-ui-cdk-directives-autofilled.umd.js.map +1 -1
  14. package/bundles/taiga-ui-cdk-directives-autofilled.umd.min.js +2 -2
  15. package/bundles/taiga-ui-cdk-directives-autofilled.umd.min.js.map +1 -1
  16. package/bundles/taiga-ui-cdk-directives-pan.umd.js +266 -0
  17. package/bundles/taiga-ui-cdk-directives-pan.umd.js.map +1 -0
  18. package/bundles/taiga-ui-cdk-directives-pan.umd.min.js +16 -0
  19. package/bundles/taiga-ui-cdk-directives-pan.umd.min.js.map +1 -0
  20. package/bundles/taiga-ui-cdk-directives-swipe.umd.js +266 -0
  21. package/bundles/taiga-ui-cdk-directives-swipe.umd.js.map +1 -0
  22. package/bundles/taiga-ui-cdk-directives-swipe.umd.min.js +16 -0
  23. package/bundles/taiga-ui-cdk-directives-swipe.umd.min.js.map +1 -0
  24. package/bundles/taiga-ui-cdk-directives-zoom.umd.js +269 -0
  25. package/bundles/taiga-ui-cdk-directives-zoom.umd.js.map +1 -0
  26. package/bundles/taiga-ui-cdk-directives-zoom.umd.min.js +16 -0
  27. package/bundles/taiga-ui-cdk-directives-zoom.umd.min.js.map +1 -0
  28. package/bundles/taiga-ui-cdk-directives.umd.js +28 -4
  29. package/bundles/taiga-ui-cdk-directives.umd.js.map +1 -1
  30. package/bundles/taiga-ui-cdk-directives.umd.min.js +1 -1
  31. package/bundles/taiga-ui-cdk-services.umd.js +154 -5
  32. package/bundles/taiga-ui-cdk-services.umd.js.map +1 -1
  33. package/bundles/taiga-ui-cdk-services.umd.min.js +2 -2
  34. package/bundles/taiga-ui-cdk-services.umd.min.js.map +1 -1
  35. package/bundles/taiga-ui-cdk-tokens.umd.js +16 -4
  36. package/bundles/taiga-ui-cdk-tokens.umd.js.map +1 -1
  37. package/bundles/taiga-ui-cdk-tokens.umd.min.js +1 -1
  38. package/bundles/taiga-ui-cdk-tokens.umd.min.js.map +1 -1
  39. package/bundles/taiga-ui-cdk-utils-dom.umd.js +1 -3
  40. package/bundles/taiga-ui-cdk-utils-dom.umd.js.map +1 -1
  41. package/bundles/taiga-ui-cdk-utils-dom.umd.min.js.map +1 -1
  42. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.js +17 -0
  43. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.js.map +1 -1
  44. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.min.js +1 -1
  45. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.min.js.map +1 -1
  46. package/components/dialog-host/taiga-ui-cdk-components-dialog-host.metadata.json +1 -1
  47. package/components/portal-host/taiga-ui-cdk-components-portal-host.metadata.json +1 -1
  48. package/directives/autofilled/autofilled.directive.d.ts +4 -5
  49. package/directives/autofilled/taiga-ui-cdk-directives-autofilled.metadata.json +1 -1
  50. package/directives/index.d.ts +3 -0
  51. package/directives/pan/index.d.ts +2 -0
  52. package/directives/pan/package.json +13 -0
  53. package/directives/pan/pan.directive.d.ts +5 -0
  54. package/directives/pan/pan.module.d.ts +5 -0
  55. package/directives/pan/taiga-ui-cdk-directives-pan.d.ts +4 -0
  56. package/directives/pan/taiga-ui-cdk-directives-pan.metadata.json +1 -0
  57. package/directives/swipe/index.d.ts +2 -0
  58. package/directives/swipe/package.json +13 -0
  59. package/directives/swipe/swipe.directive.d.ts +5 -0
  60. package/directives/swipe/swipe.module.d.ts +5 -0
  61. package/directives/swipe/taiga-ui-cdk-directives-swipe.d.ts +4 -0
  62. package/directives/swipe/taiga-ui-cdk-directives-swipe.metadata.json +1 -0
  63. package/directives/taiga-ui-cdk-directives.metadata.json +1 -1
  64. package/directives/zoom/index.d.ts +2 -0
  65. package/directives/zoom/package.json +13 -0
  66. package/directives/zoom/taiga-ui-cdk-directives-zoom.d.ts +4 -0
  67. package/directives/zoom/taiga-ui-cdk-directives-zoom.metadata.json +1 -0
  68. package/directives/zoom/zoom.directive.d.ts +5 -0
  69. package/directives/zoom/zoom.module.d.ts +5 -0
  70. package/esm2015/abstract/control.js +7 -5
  71. package/esm2015/abstract/interactive.js +9 -6
  72. package/esm2015/abstract/theme-switcher.js +17 -7
  73. package/esm2015/components/dialog-host/dialog-host.component.js +1 -1
  74. package/esm2015/components/portal-host/portal-host.component.js +1 -1
  75. package/esm2015/directives/autofilled/autofilled.directive.js +11 -31
  76. package/esm2015/directives/index.js +4 -1
  77. package/esm2015/directives/pan/index.js +3 -0
  78. package/esm2015/directives/pan/pan.directive.js +22 -0
  79. package/esm2015/directives/pan/pan.module.js +16 -0
  80. package/esm2015/directives/pan/taiga-ui-cdk-directives-pan.js +5 -0
  81. package/esm2015/directives/swipe/index.js +3 -0
  82. package/esm2015/directives/swipe/swipe.directive.js +22 -0
  83. package/esm2015/directives/swipe/swipe.module.js +16 -0
  84. package/esm2015/directives/swipe/taiga-ui-cdk-directives-swipe.js +5 -0
  85. package/esm2015/directives/zoom/index.js +3 -0
  86. package/esm2015/directives/zoom/taiga-ui-cdk-directives-zoom.js +5 -0
  87. package/esm2015/directives/zoom/zoom.directive.js +25 -0
  88. package/esm2015/directives/zoom/zoom.module.js +16 -0
  89. package/esm2015/interfaces/index.js +1 -1
  90. package/esm2015/interfaces/swipe.js +1 -0
  91. package/esm2015/interfaces/zoom.js +1 -0
  92. package/esm2015/services/hovered.service.js +2 -2
  93. package/esm2015/services/index.js +4 -1
  94. package/esm2015/services/pan.service.js +35 -0
  95. package/esm2015/services/swipe.service.js +52 -0
  96. package/esm2015/services/zoom.service.js +55 -0
  97. package/esm2015/tokens/active-element.js +4 -5
  98. package/esm2015/tokens/index.js +3 -1
  99. package/esm2015/tokens/swipe-options.js +5 -0
  100. package/esm2015/tokens/zoom-options.js +7 -0
  101. package/esm2015/utils/dom/contains-or-after.js +2 -4
  102. package/esm2015/utils/miscellaneous/distance-between-touches.js +4 -0
  103. package/esm2015/utils/miscellaneous/fallback-value.js +2 -1
  104. package/esm2015/utils/miscellaneous/get-swipe-direction.js +9 -0
  105. package/esm2015/utils/miscellaneous/index.js +3 -1
  106. package/esm5/abstract/control.js +7 -5
  107. package/esm5/abstract/interactive.js +9 -6
  108. package/esm5/abstract/theme-switcher.js +15 -5
  109. package/esm5/components/dialog-host/dialog-host.component.js +1 -1
  110. package/esm5/components/portal-host/portal-host.component.js +1 -1
  111. package/esm5/directives/autofilled/autofilled.directive.js +14 -33
  112. package/esm5/directives/index.js +4 -1
  113. package/esm5/directives/pan/index.js +3 -0
  114. package/esm5/directives/pan/pan.directive.js +23 -0
  115. package/esm5/directives/pan/pan.module.js +19 -0
  116. package/esm5/directives/pan/taiga-ui-cdk-directives-pan.js +5 -0
  117. package/esm5/directives/swipe/index.js +3 -0
  118. package/esm5/directives/swipe/swipe.directive.js +23 -0
  119. package/esm5/directives/swipe/swipe.module.js +19 -0
  120. package/esm5/directives/swipe/taiga-ui-cdk-directives-swipe.js +5 -0
  121. package/esm5/directives/zoom/index.js +3 -0
  122. package/esm5/directives/zoom/taiga-ui-cdk-directives-zoom.js +5 -0
  123. package/esm5/directives/zoom/zoom.directive.js +26 -0
  124. package/esm5/directives/zoom/zoom.module.js +19 -0
  125. package/esm5/interfaces/index.js +1 -1
  126. package/esm5/interfaces/swipe.js +1 -0
  127. package/esm5/interfaces/zoom.js +1 -0
  128. package/esm5/services/hovered.service.js +2 -2
  129. package/esm5/services/index.js +4 -1
  130. package/esm5/services/pan.service.js +45 -0
  131. package/esm5/services/swipe.service.js +60 -0
  132. package/esm5/services/zoom.service.js +65 -0
  133. package/esm5/tokens/active-element.js +5 -5
  134. package/esm5/tokens/index.js +3 -1
  135. package/esm5/tokens/swipe-options.js +5 -0
  136. package/esm5/tokens/zoom-options.js +7 -0
  137. package/esm5/utils/dom/contains-or-after.js +2 -4
  138. package/esm5/utils/miscellaneous/distance-between-touches.js +5 -0
  139. package/esm5/utils/miscellaneous/fallback-value.js +2 -1
  140. package/esm5/utils/miscellaneous/get-swipe-direction.js +9 -0
  141. package/esm5/utils/miscellaneous/index.js +3 -1
  142. package/fesm2015/taiga-ui-cdk-abstract.js +27 -14
  143. package/fesm2015/taiga-ui-cdk-abstract.js.map +1 -1
  144. package/fesm2015/taiga-ui-cdk-components-dialog-host.js +1 -1
  145. package/fesm2015/taiga-ui-cdk-components-portal-host.js +1 -1
  146. package/fesm2015/taiga-ui-cdk-directives-autofilled.js +10 -30
  147. package/fesm2015/taiga-ui-cdk-directives-autofilled.js.map +1 -1
  148. package/fesm2015/taiga-ui-cdk-directives-pan.js +40 -0
  149. package/fesm2015/taiga-ui-cdk-directives-pan.js.map +1 -0
  150. package/fesm2015/taiga-ui-cdk-directives-swipe.js +40 -0
  151. package/fesm2015/taiga-ui-cdk-directives-swipe.js.map +1 -0
  152. package/fesm2015/taiga-ui-cdk-directives-zoom.js +43 -0
  153. package/fesm2015/taiga-ui-cdk-directives-zoom.js.map +1 -0
  154. package/fesm2015/taiga-ui-cdk-directives.js +3 -0
  155. package/fesm2015/taiga-ui-cdk-directives.js.map +1 -1
  156. package/fesm2015/taiga-ui-cdk-services.js +125 -6
  157. package/fesm2015/taiga-ui-cdk-services.js.map +1 -1
  158. package/fesm2015/taiga-ui-cdk-tokens.js +14 -5
  159. package/fesm2015/taiga-ui-cdk-tokens.js.map +1 -1
  160. package/fesm2015/taiga-ui-cdk-utils-dom.js +1 -3
  161. package/fesm2015/taiga-ui-cdk-utils-dom.js.map +1 -1
  162. package/fesm2015/taiga-ui-cdk-utils-miscellaneous.js +15 -1
  163. package/fesm2015/taiga-ui-cdk-utils-miscellaneous.js.map +1 -1
  164. package/fesm5/taiga-ui-cdk-abstract.js +26 -12
  165. package/fesm5/taiga-ui-cdk-abstract.js.map +1 -1
  166. package/fesm5/taiga-ui-cdk-components-dialog-host.js +1 -1
  167. package/fesm5/taiga-ui-cdk-components-portal-host.js +1 -1
  168. package/fesm5/taiga-ui-cdk-directives-autofilled.js +13 -32
  169. package/fesm5/taiga-ui-cdk-directives-autofilled.js.map +1 -1
  170. package/fesm5/taiga-ui-cdk-directives-pan.js +44 -0
  171. package/fesm5/taiga-ui-cdk-directives-pan.js.map +1 -0
  172. package/fesm5/taiga-ui-cdk-directives-swipe.js +44 -0
  173. package/fesm5/taiga-ui-cdk-directives-swipe.js.map +1 -0
  174. package/fesm5/taiga-ui-cdk-directives-zoom.js +47 -0
  175. package/fesm5/taiga-ui-cdk-directives-zoom.js.map +1 -0
  176. package/fesm5/taiga-ui-cdk-directives.js +3 -0
  177. package/fesm5/taiga-ui-cdk-directives.js.map +1 -1
  178. package/fesm5/taiga-ui-cdk-services.js +153 -6
  179. package/fesm5/taiga-ui-cdk-services.js.map +1 -1
  180. package/fesm5/taiga-ui-cdk-tokens.js +15 -5
  181. package/fesm5/taiga-ui-cdk-tokens.js.map +1 -1
  182. package/fesm5/taiga-ui-cdk-utils-dom.js +1 -3
  183. package/fesm5/taiga-ui-cdk-utils-dom.js.map +1 -1
  184. package/fesm5/taiga-ui-cdk-utils-miscellaneous.js +16 -1
  185. package/fesm5/taiga-ui-cdk-utils-miscellaneous.js.map +1 -1
  186. package/interfaces/index.d.ts +2 -0
  187. package/interfaces/swipe.d.ts +9 -0
  188. package/interfaces/taiga-ui-cdk-interfaces.metadata.json +1 -1
  189. package/interfaces/zoom.d.ts +9 -0
  190. package/package.json +3 -3
  191. package/services/index.d.ts +3 -0
  192. package/services/pan.service.d.ts +8 -0
  193. package/services/swipe.service.d.ts +9 -0
  194. package/services/taiga-ui-cdk-services.metadata.json +1 -1
  195. package/services/zoom.service.d.ts +6 -0
  196. package/tokens/index.d.ts +2 -0
  197. package/tokens/swipe-options.d.ts +3 -0
  198. package/tokens/taiga-ui-cdk-tokens.metadata.json +1 -1
  199. package/tokens/zoom-options.d.ts +3 -0
  200. package/utils/miscellaneous/distance-between-touches.d.ts +1 -0
  201. package/utils/miscellaneous/fallback-value.d.ts +1 -0
  202. package/utils/miscellaneous/get-swipe-direction.d.ts +2 -0
  203. package/utils/miscellaneous/index.d.ts +2 -0
  204. package/utils/miscellaneous/taiga-ui-cdk-utils-miscellaneous.metadata.json +1 -1
@@ -1,9 +1,8 @@
1
1
  import { __decorate, __param } from 'tslib';
2
- import { EventEmitter, Inject, ElementRef, ChangeDetectorRef, Output, HostListener, Directive, NgModule } from '@angular/core';
3
- import { typedFromEvent, watch } from '@taiga-ui/cdk/observables';
4
- import { TuiDirectiveStylesService, TuiDestroyService } from '@taiga-ui/cdk/services';
5
- import { Observable } from 'rxjs';
6
- import { take, takeUntil } from 'rxjs/operators';
2
+ import { ElementRef, Inject, Output, Directive, NgModule } from '@angular/core';
3
+ import { typedFromEvent } from '@taiga-ui/cdk/observables';
4
+ import { TuiDirectiveStylesService } from '@taiga-ui/cdk/services';
5
+ import { map, skip } from 'rxjs/operators';
7
6
 
8
7
  const ON = 'tuiAutofillOn';
9
8
  const OFF = 'tuiAutofillOff';
@@ -29,47 +28,28 @@ const STYLE = `
29
28
  }`;
30
29
  // @dynamic
31
30
  let TuiAutofilledDirective = class TuiAutofilledDirective {
32
- constructor(directiveStyles, { nativeElement }, changeDetectorRef, destroy$) {
33
- this.tuiAutofilledChange = new EventEmitter();
31
+ constructor(elementRef, directiveStyles) {
32
+ this.elementRef = elementRef;
33
+ this.tuiAutofilledChange = typedFromEvent(this.elementRef.nativeElement, 'animationstart').pipe(map(({ animationName }) => animationName === ON), skip(1));
34
34
  directiveStyles.addStyle(STYLE, 'TuiAutofilledDirective');
35
- // Subscribing to synthetic keydown event on page reload autofill in Chrome
36
- typedFromEvent(nativeElement, 'keydown')
37
- .pipe(take(1), takeUntil(destroy$), watch(changeDetectorRef))
38
- .subscribe();
39
- }
40
- onAnimationStart({ animationName }) {
41
- if (animationName === ON) {
42
- this.tuiAutofilledChange.emit(true);
43
- }
44
- else if (animationName === OFF) {
45
- this.tuiAutofilledChange.emit(false);
46
- }
47
35
  }
48
36
  };
49
37
  TuiAutofilledDirective.ctorParameters = () => [
50
- { type: TuiDirectiveStylesService, decorators: [{ type: Inject, args: [TuiDirectiveStylesService,] }] },
51
38
  { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
52
- { type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
53
- { type: Observable, decorators: [{ type: Inject, args: [TuiDestroyService,] }] }
39
+ { type: TuiDirectiveStylesService, decorators: [{ type: Inject, args: [TuiDirectiveStylesService,] }] }
54
40
  ];
55
41
  __decorate([
56
42
  Output()
57
43
  ], TuiAutofilledDirective.prototype, "tuiAutofilledChange", void 0);
58
- __decorate([
59
- HostListener('animationstart', ['$event'])
60
- ], TuiAutofilledDirective.prototype, "onAnimationStart", null);
61
44
  TuiAutofilledDirective = __decorate([
62
45
  Directive({
63
46
  selector: 'input[tuiAutofilledChange]',
64
47
  host: {
65
48
  class: 'tui-autofill',
66
49
  },
67
- providers: [TuiDestroyService],
68
50
  }),
69
- __param(0, Inject(TuiDirectiveStylesService)),
70
- __param(1, Inject(ElementRef)),
71
- __param(2, Inject(ChangeDetectorRef)),
72
- __param(3, Inject(TuiDestroyService))
51
+ __param(0, Inject(ElementRef)),
52
+ __param(1, Inject(TuiDirectiveStylesService))
73
53
  ], TuiAutofilledDirective);
74
54
 
75
55
  let TuiAutofilledModule = class TuiAutofilledModule {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-autofilled.js","sources":["ng://@taiga-ui/cdk/directives/autofilled/autofilled.directive.ts","ng://@taiga-ui/cdk/directives/autofilled/autofilled.module.ts","ng://@taiga-ui/cdk/directives/autofilled/taiga-ui-cdk-directives-autofilled.ts"],"sourcesContent":["import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Output,\n} from '@angular/core';\nimport {typedFromEvent, watch} from '@taiga-ui/cdk/observables';\nimport {TuiDestroyService, TuiDirectiveStylesService} from '@taiga-ui/cdk/services';\nimport {Observable} from 'rxjs';\nimport {take, takeUntil} from 'rxjs/operators';\n\nconst ON = 'tuiAutofillOn';\nconst OFF = 'tuiAutofillOff';\nconst STYLE = `\n@keyframes ${ON} {\n from {\n content: '1';\n }\n\n to {\n content: '2';\n }\n}\n\n@keyframes ${OFF} {\n from {\n content: '2';\n }\n\n to {\n content: '1';\n }\n}`;\n\n// @dynamic\n@Directive({\n selector: 'input[tuiAutofilledChange]',\n host: {\n class: 'tui-autofill',\n },\n providers: [TuiDestroyService],\n})\nexport class TuiAutofilledDirective {\n @Output()\n readonly tuiAutofilledChange = new EventEmitter<boolean>();\n\n @HostListener('animationstart', ['$event'])\n onAnimationStart({animationName}: AnimationEvent) {\n if (animationName === ON) {\n this.tuiAutofilledChange.emit(true);\n } else if (animationName === OFF) {\n this.tuiAutofilledChange.emit(false);\n }\n }\n\n constructor(\n @Inject(TuiDirectiveStylesService)\n directiveStyles: TuiDirectiveStylesService,\n @Inject(ElementRef) {nativeElement}: ElementRef<HTMLInputElement>,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n ) {\n directiveStyles.addStyle(STYLE, 'TuiAutofilledDirective');\n\n // Subscribing to synthetic keydown event on page reload autofill in Chrome\n typedFromEvent(nativeElement, 'keydown')\n .pipe(take(1), takeUntil(destroy$), watch(changeDetectorRef))\n .subscribe();\n }\n}\n","import {NgModule} from '@angular/core';\nimport {TuiAutofilledDirective} from './autofilled.directive';\n\n@NgModule({\n declarations: [TuiAutofilledDirective],\n exports: [TuiAutofilledDirective],\n})\nexport class TuiAutofilledModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAcA,MAAM,EAAE,GAAG,eAAe,CAAC;AAC3B,MAAM,GAAG,GAAG,gBAAgB,CAAC;AAC7B,MAAM,KAAK,GAAG;aACD,EAAE;;;;;;;;;;aAUF,GAAG;;;;;;;;EAQd,CAAC;AAEH;IAQa,sBAAsB,GAAnC,MAAa,sBAAsB;IAa/B,YAEI,eAA0C,EACtB,EAAC,aAAa,EAA+B,EACtC,iBAAoC,EACpC,QAA0B;QAhBhD,wBAAmB,GAAG,IAAI,YAAY,EAAW,CAAC;QAkBvD,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;;QAG1D,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC;aACnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;aAC5D,SAAS,EAAE,CAAC;KACpB;IArBD,gBAAgB,CAAC,EAAC,aAAa,EAAiB;QAC5C,IAAI,aAAa,KAAK,EAAE,EAAE;YACtB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACvC;aAAM,IAAI,aAAa,KAAK,GAAG,EAAE;YAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACxC;KACJ;EAgBJ;;YAZwB,yBAAyB,uBADzC,MAAM,SAAC,yBAAyB;YAEI,UAAU,uBAA9C,MAAM,SAAC,UAAU;YAC4B,iBAAiB,uBAA9D,MAAM,SAAC,iBAAiB;YACY,UAAU,uBAA9C,MAAM,SAAC,iBAAiB;;AAhB7B;IADC,MAAM,EAAE;mEACkD;AAG3D;IADC,YAAY,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAC;8DAO1C;AAXQ,sBAAsB;IAPlC,SAAS,CAAC;QACP,QAAQ,EAAE,4BAA4B;QACtC,IAAI,EAAE;YACF,KAAK,EAAE,cAAc;SACxB;QACD,SAAS,EAAE,CAAC,iBAAiB,CAAC;KACjC,CAAC;IAeO,WAAA,MAAM,CAAC,yBAAyB,CAAC,CAAA;IAEjC,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;IAClB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACzB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;GAlBrB,sBAAsB,CA2BlC;;ICjEY,mBAAmB,GAAhC,MAAa,mBAAmB;EAAG;AAAtB,mBAAmB;IAJ/B,QAAQ,CAAC;QACN,YAAY,EAAE,CAAC,sBAAsB,CAAC;QACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;KACpC,CAAC;GACW,mBAAmB,CAAG;;ACPnC;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-directives-autofilled.js","sources":["ng://@taiga-ui/cdk/directives/autofilled/autofilled.directive.ts","ng://@taiga-ui/cdk/directives/autofilled/autofilled.module.ts","ng://@taiga-ui/cdk/directives/autofilled/taiga-ui-cdk-directives-autofilled.ts"],"sourcesContent":["import {Directive, ElementRef, Inject, Output} from '@angular/core';\nimport {typedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TuiDirectiveStylesService} from '@taiga-ui/cdk/services';\nimport {map, skip} from 'rxjs/operators';\n\nconst ON = 'tuiAutofillOn';\nconst OFF = 'tuiAutofillOff';\nconst STYLE = `\n@keyframes ${ON} {\n from {\n content: '1';\n }\n\n to {\n content: '2';\n }\n}\n\n@keyframes ${OFF} {\n from {\n content: '2';\n }\n\n to {\n content: '1';\n }\n}`;\n\n// @dynamic\n@Directive({\n selector: 'input[tuiAutofilledChange]',\n host: {\n class: 'tui-autofill',\n },\n})\nexport class TuiAutofilledDirective {\n @Output()\n readonly tuiAutofilledChange = typedFromEvent(\n this.elementRef.nativeElement,\n 'animationstart',\n ).pipe(\n map(({animationName}) => animationName === ON),\n skip(1),\n );\n\n constructor(\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(TuiDirectiveStylesService)\n directiveStyles: TuiDirectiveStylesService,\n ) {\n directiveStyles.addStyle(STYLE, 'TuiAutofilledDirective');\n }\n}\n","import {NgModule} from '@angular/core';\nimport {TuiAutofilledDirective} from './autofilled.directive';\n\n@NgModule({\n declarations: [TuiAutofilledDirective],\n exports: [TuiAutofilledDirective],\n})\nexport class TuiAutofilledModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAKA,MAAM,EAAE,GAAG,eAAe,CAAC;AAC3B,MAAM,GAAG,GAAG,gBAAgB,CAAC;AAC7B,MAAM,KAAK,GAAG;aACD,EAAE;;;;;;;;;;aAUF,GAAG;;;;;;;;EAQd,CAAC;AAEH;IAOa,sBAAsB,GAAnC,MAAa,sBAAsB;IAU/B,YACyC,UAAwC,EAE7E,eAA0C;QAFL,eAAU,GAAV,UAAU,CAA8B;QATxE,wBAAmB,GAAG,cAAc,CACzC,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,gBAAgB,CACnB,CAAC,IAAI,CACF,GAAG,CAAC,CAAC,EAAC,aAAa,EAAC,KAAK,aAAa,KAAK,EAAE,CAAC,EAC9C,IAAI,CAAC,CAAC,CAAC,CACV,CAAC;QAOE,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;KAC7D;EACJ;;YANwD,UAAU,uBAA1D,MAAM,SAAC,UAAU;YAED,yBAAyB,uBADzC,MAAM,SAAC,yBAAyB;;AAVrC;IADC,MAAM,EAAE;mEAOP;AARO,sBAAsB;IANlC,SAAS,CAAC;QACP,QAAQ,EAAE,4BAA4B;QACtC,IAAI,EAAE;YACF,KAAK,EAAE,cAAc;SACxB;KACJ,CAAC;IAYO,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;IAClB,WAAA,MAAM,CAAC,yBAAyB,CAAC,CAAA;GAZ7B,sBAAsB,CAiBlC;;IC7CY,mBAAmB,GAAhC,MAAa,mBAAmB;EAAG;AAAtB,mBAAmB;IAJ/B,QAAQ,CAAC;QACN,YAAY,EAAE,CAAC,sBAAsB,CAAC;QACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;KACpC,CAAC;GACW,mBAAmB,CAAG;;ACPnC;;;;;;"}
@@ -0,0 +1,40 @@
1
+ import { __decorate, __param } from 'tslib';
2
+ import { Inject, Directive, NgModule } from '@angular/core';
3
+ import { TuiPanService } from '@taiga-ui/cdk/services';
4
+
5
+ // @dynamic
6
+ let TuiPanDirective = class TuiPanDirective {
7
+ constructor(tuiPan) {
8
+ this.tuiPan = tuiPan;
9
+ }
10
+ };
11
+ TuiPanDirective.ctorParameters = () => [
12
+ { type: TuiPanService, decorators: [{ type: Inject, args: [TuiPanService,] }] }
13
+ ];
14
+ TuiPanDirective = __decorate([
15
+ Directive({
16
+ selector: '[tuiPan]',
17
+ outputs: ['tuiPan'],
18
+ providers: [TuiPanService],
19
+ }),
20
+ __param(0, Inject(TuiPanService))
21
+ ], TuiPanDirective);
22
+
23
+ /**
24
+ * @experimental
25
+ */
26
+ let TuiPanModule = class TuiPanModule {
27
+ };
28
+ TuiPanModule = __decorate([
29
+ NgModule({
30
+ declarations: [TuiPanDirective],
31
+ exports: [TuiPanDirective],
32
+ })
33
+ ], TuiPanModule);
34
+
35
+ /**
36
+ * Generated bundle index. Do not edit.
37
+ */
38
+
39
+ export { TuiPanDirective, TuiPanModule };
40
+ //# sourceMappingURL=taiga-ui-cdk-directives-pan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-cdk-directives-pan.js","sources":["ng://@taiga-ui/cdk/directives/pan/pan.directive.ts","ng://@taiga-ui/cdk/directives/pan/pan.module.ts","ng://@taiga-ui/cdk/directives/pan/taiga-ui-cdk-directives-pan.ts"],"sourcesContent":["import {Directive, Inject} from '@angular/core';\nimport {TuiPanService} from '@taiga-ui/cdk/services';\n\n// @dynamic\n@Directive({\n selector: '[tuiPan]',\n outputs: ['tuiPan'],\n providers: [TuiPanService],\n})\nexport class TuiPanDirective {\n constructor(@Inject(TuiPanService) readonly tuiPan: TuiPanService) {}\n}\n","import {NgModule} from '@angular/core';\nimport {TuiPanDirective} from './pan.directive';\n\n/**\n * @experimental\n */\n@NgModule({\n declarations: [TuiPanDirective],\n exports: [TuiPanDirective],\n})\nexport class TuiPanModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA;IAMa,eAAe,GAA5B,MAAa,eAAe;IACxB,YAA4C,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;KAAI;EACxE;;YADuD,aAAa,uBAApD,MAAM,SAAC,aAAa;;AADxB,eAAe;IAL3B,SAAS,CAAC;QACP,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,SAAS,EAAE,CAAC,aAAa,CAAC;KAC7B,CAAC;IAEe,WAAA,MAAM,CAAC,aAAa,CAAC,CAAA;GADzB,eAAe,CAE3B;;ACRD;;;IAOa,YAAY,GAAzB,MAAa,YAAY;EAAG;AAAf,YAAY;IAJxB,QAAQ,CAAC;QACN,YAAY,EAAE,CAAC,eAAe,CAAC;QAC/B,OAAO,EAAE,CAAC,eAAe,CAAC;KAC7B,CAAC;GACW,YAAY,CAAG;;ACV5B;;;;;;"}
@@ -0,0 +1,40 @@
1
+ import { __decorate, __param } from 'tslib';
2
+ import { Inject, Directive, NgModule } from '@angular/core';
3
+ import { TuiSwipeService } from '@taiga-ui/cdk/services';
4
+
5
+ // @dynamic
6
+ let TuiSwipeDirective = class TuiSwipeDirective {
7
+ constructor(tuiSwipe) {
8
+ this.tuiSwipe = tuiSwipe;
9
+ }
10
+ };
11
+ TuiSwipeDirective.ctorParameters = () => [
12
+ { type: TuiSwipeService, decorators: [{ type: Inject, args: [TuiSwipeService,] }] }
13
+ ];
14
+ TuiSwipeDirective = __decorate([
15
+ Directive({
16
+ selector: '[tuiSwipe]',
17
+ outputs: ['tuiSwipe'],
18
+ providers: [TuiSwipeService],
19
+ }),
20
+ __param(0, Inject(TuiSwipeService))
21
+ ], TuiSwipeDirective);
22
+
23
+ /**
24
+ * @experimental
25
+ */
26
+ let TuiSwipeModule = class TuiSwipeModule {
27
+ };
28
+ TuiSwipeModule = __decorate([
29
+ NgModule({
30
+ declarations: [TuiSwipeDirective],
31
+ exports: [TuiSwipeDirective],
32
+ })
33
+ ], TuiSwipeModule);
34
+
35
+ /**
36
+ * Generated bundle index. Do not edit.
37
+ */
38
+
39
+ export { TuiSwipeDirective, TuiSwipeModule };
40
+ //# sourceMappingURL=taiga-ui-cdk-directives-swipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-cdk-directives-swipe.js","sources":["ng://@taiga-ui/cdk/directives/swipe/swipe.directive.ts","ng://@taiga-ui/cdk/directives/swipe/swipe.module.ts","ng://@taiga-ui/cdk/directives/swipe/taiga-ui-cdk-directives-swipe.ts"],"sourcesContent":["import {Directive, Inject} from '@angular/core';\nimport {TuiSwipeService} from '@taiga-ui/cdk/services';\n\n// @dynamic\n@Directive({\n selector: '[tuiSwipe]',\n outputs: ['tuiSwipe'],\n providers: [TuiSwipeService],\n})\nexport class TuiSwipeDirective {\n constructor(@Inject(TuiSwipeService) readonly tuiSwipe: TuiSwipeService) {}\n}\n","import {NgModule} from '@angular/core';\nimport {TuiSwipeDirective} from './swipe.directive';\n\n/**\n * @experimental\n */\n@NgModule({\n declarations: [TuiSwipeDirective],\n exports: [TuiSwipeDirective],\n})\nexport class TuiSwipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA;IAMa,iBAAiB,GAA9B,MAAa,iBAAiB;IAC1B,YAA8C,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;KAAI;EAC9E;;YAD2D,eAAe,uBAA1D,MAAM,SAAC,eAAe;;AAD1B,iBAAiB;IAL7B,SAAS,CAAC;QACP,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,SAAS,EAAE,CAAC,eAAe,CAAC;KAC/B,CAAC;IAEe,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;GAD3B,iBAAiB,CAE7B;;ACRD;;;IAOa,cAAc,GAA3B,MAAa,cAAc;EAAG;AAAjB,cAAc;IAJ1B,QAAQ,CAAC;QACN,YAAY,EAAE,CAAC,iBAAiB,CAAC;QACjC,OAAO,EAAE,CAAC,iBAAiB,CAAC;KAC/B,CAAC;GACW,cAAc,CAAG;;ACV9B;;;;;;"}
@@ -0,0 +1,43 @@
1
+ import { __decorate, __param } from 'tslib';
2
+ import { Inject, Directive, NgModule } from '@angular/core';
3
+ import { TuiZoomService } from '@taiga-ui/cdk/services';
4
+
5
+ // @dynamic
6
+ let TuiZoomDirective = class TuiZoomDirective {
7
+ constructor(tuiZoom) {
8
+ this.tuiZoom = tuiZoom;
9
+ }
10
+ };
11
+ TuiZoomDirective.ctorParameters = () => [
12
+ { type: TuiZoomService, decorators: [{ type: Inject, args: [TuiZoomService,] }] }
13
+ ];
14
+ TuiZoomDirective = __decorate([
15
+ Directive({
16
+ selector: '[tuiZoom]',
17
+ outputs: ['tuiZoom'],
18
+ providers: [TuiZoomService],
19
+ host: {
20
+ '[style.touch-actions]': '"none"',
21
+ },
22
+ }),
23
+ __param(0, Inject(TuiZoomService))
24
+ ], TuiZoomDirective);
25
+
26
+ /**
27
+ * @experimental
28
+ */
29
+ let TuiZoomModule = class TuiZoomModule {
30
+ };
31
+ TuiZoomModule = __decorate([
32
+ NgModule({
33
+ declarations: [TuiZoomDirective],
34
+ exports: [TuiZoomDirective],
35
+ })
36
+ ], TuiZoomModule);
37
+
38
+ /**
39
+ * Generated bundle index. Do not edit.
40
+ */
41
+
42
+ export { TuiZoomDirective, TuiZoomModule };
43
+ //# sourceMappingURL=taiga-ui-cdk-directives-zoom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-cdk-directives-zoom.js","sources":["ng://@taiga-ui/cdk/directives/zoom/zoom.directive.ts","ng://@taiga-ui/cdk/directives/zoom/zoom.module.ts","ng://@taiga-ui/cdk/directives/zoom/taiga-ui-cdk-directives-zoom.ts"],"sourcesContent":["import {Directive, Inject} from '@angular/core';\nimport {TuiZoomService} from '@taiga-ui/cdk/services';\n\n// @dynamic\n@Directive({\n selector: '[tuiZoom]',\n outputs: ['tuiZoom'],\n providers: [TuiZoomService],\n host: {\n '[style.touch-actions]': '\"none\"',\n },\n})\nexport class TuiZoomDirective {\n constructor(@Inject(TuiZoomService) readonly tuiZoom: TuiZoomService) {}\n}\n","import {NgModule} from '@angular/core';\nimport {TuiZoomDirective} from './zoom.directive';\n\n/**\n * @experimental\n */\n@NgModule({\n declarations: [TuiZoomDirective],\n exports: [TuiZoomDirective],\n})\nexport class TuiZoomModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA;IASa,gBAAgB,GAA7B,MAAa,gBAAgB;IACzB,YAA6C,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;KAAI;EAC3E;;YADyD,cAAc,uBAAvD,MAAM,SAAC,cAAc;;AADzB,gBAAgB;IAR5B,SAAS,CAAC;QACP,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,CAAC,SAAS,CAAC;QACpB,SAAS,EAAE,CAAC,cAAc,CAAC;QAC3B,IAAI,EAAE;YACF,uBAAuB,EAAE,QAAQ;SACpC;KACJ,CAAC;IAEe,WAAA,MAAM,CAAC,cAAc,CAAC,CAAA;GAD1B,gBAAgB,CAE5B;;ACXD;;;IAOa,aAAa,GAA1B,MAAa,aAAa;EAAG;AAAhB,aAAa;IAJzB,QAAQ,CAAC;QACN,YAAY,EAAE,CAAC,gBAAgB,CAAC;QAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;KAC9B,CAAC;GACW,aAAa,CAAG;;ACV7B;;;;;;"}
@@ -22,6 +22,9 @@ export * from '@taiga-ui/cdk/directives/resize';
22
22
  export * from '@taiga-ui/cdk/directives/prevent-default';
23
23
  export * from '@taiga-ui/cdk/directives/repeat-times';
24
24
  export * from '@taiga-ui/cdk/directives/validator';
25
+ export * from '@taiga-ui/cdk/directives/pan';
26
+ export * from '@taiga-ui/cdk/directives/swipe';
27
+ export * from '@taiga-ui/cdk/directives/zoom';
25
28
 
26
29
  /**
27
30
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives.js","sources":["ng://@taiga-ui/cdk/directives/taiga-ui-cdk-directives.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-directives.js","sources":["ng://@taiga-ui/cdk/directives/taiga-ui-cdk-directives.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;"}
@@ -2,16 +2,17 @@ import { __decorate, __param } from 'tslib';
2
2
  import { Injectable, Inject, Renderer2, ɵɵdefineInjectable, ɵɵinject, ElementRef, ChangeDetectorRef, NgZone, Self } from '@angular/core';
3
3
  import { Subject, Observable, merge, defer, fromEvent, of, timer } from 'rxjs';
4
4
  import { DOCUMENT } from '@angular/common';
5
- import { TUI_DEFAULT_RENDERER } from '@taiga-ui/cdk/tokens';
6
- import { focusVisibleObservable, watch, typedFromEvent, tuiZoneOptimized, tuiZonefree } from '@taiga-ui/cdk/observables';
7
- import { takeUntil, switchMap, filter, take, mapTo, startWith, distinctUntilChanged, delay, throttleTime, map, catchError, debounceTime, tap, shareReplay } from 'rxjs/operators';
5
+ import { TUI_DEFAULT_RENDERER, TUI_SWIPE_OPTIONS, TUI_ZOOM_OPTIONS } from '@taiga-ui/cdk/tokens';
6
+ import { focusVisibleObservable, watch, typedFromEvent, tuiZoneOptimized, tuiZonefree, preventDefault } from '@taiga-ui/cdk/observables';
7
+ import { takeUntil, switchMap, filter, take, mapTo, startWith, distinctUntilChanged, delay, throttleTime, map, catchError, debounceTime, tap, shareReplay, switchMapTo, pairwise, repeat, scan } from 'rxjs/operators';
8
8
  import { getActualTarget, getElementObscurers } from '@taiga-ui/cdk/utils/dom';
9
9
  import { WINDOW, ANIMATION_FRAME, PERFORMANCE } from '@ng-web-apis/common';
10
10
  import { POLLING_TIME, EMPTY_ARRAY } from '@taiga-ui/cdk/constants';
11
11
  import { ResizeObserverService, RESIZE_OBSERVER_SUPPORT, RESIZE_OPTION_BOX } from '@ng-web-apis/resize-observer';
12
12
  import { tuiAssert } from '@taiga-ui/cdk/classes';
13
13
  import { clamp } from '@taiga-ui/cdk/utils/math';
14
- import { easeInOutQuad } from '@taiga-ui/cdk/utils/miscellaneous';
14
+ import { easeInOutQuad, getSwipeDirection, isPresent } from '@taiga-ui/cdk/utils/miscellaneous';
15
+ import { distanceBetweenTouches } from '@taiga-ui/cdk/utils';
15
16
 
16
17
  /**
17
18
  * Observable abstraction over ngOnDestroy to use with takeUntil
@@ -86,7 +87,7 @@ TuiFocusVisibleService = __decorate([
86
87
  let TuiHoveredService = class TuiHoveredService {
87
88
  constructor(documentRef, ngZone) {
88
89
  this.ngZone = ngZone;
89
- this.documentEvents$ = merge(typedFromEvent(documentRef, 'mousemove'), typedFromEvent(documentRef, 'touchend'));
90
+ this.documentEvents$ = merge(typedFromEvent(documentRef, 'mousemove'), typedFromEvent(documentRef, 'touchstart', { capture: true }));
90
91
  }
91
92
  createHovered$(target, options = { passive: true }) {
92
93
  return merge(typedFromEvent(target, 'mouseenter', options), typedFromEvent(target, 'touchstart', options)).pipe(switchMap(() => merge(typedFromEvent(target, 'mouseleave', options), this.documentEvents$.pipe(filter(event => !target.contains(getActualTarget(event))), tuiZoneOptimized(this.ngZone), take(1))).pipe(mapTo(false), startWith(true))), distinctUntilChanged());
@@ -292,9 +293,127 @@ TuiStaticRequestService = __decorate([
292
293
  })
293
294
  ], TuiStaticRequestService);
294
295
 
296
+ /**
297
+ * @dynamic
298
+ */
299
+ let TuiPanService = class TuiPanService extends Observable {
300
+ constructor({ nativeElement }, documentRef) {
301
+ super(subscriber => {
302
+ merge(typedFromEvent(nativeElement, 'touchstart', { passive: true }), typedFromEvent(nativeElement, 'mousedown'))
303
+ .pipe(switchMapTo(merge(typedFromEvent(nativeElement, 'touchmove', {
304
+ passive: true,
305
+ }).pipe(filter(({ touches }) => touches.length < 2), map(({ touches }) => touches[0])), typedFromEvent(nativeElement, 'mousemove'))), pairwise(), map(([first, second]) => {
306
+ const deltaX = second.clientX - first.clientX;
307
+ const deltaY = second.clientY - first.clientY;
308
+ return [deltaX, deltaY];
309
+ }), takeUntil(merge(typedFromEvent(documentRef, 'touchend'), typedFromEvent(documentRef, 'mouseup'))), repeat())
310
+ .subscribe(subscriber);
311
+ });
312
+ }
313
+ };
314
+ TuiPanService.ctorParameters = () => [
315
+ { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
316
+ { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
317
+ ];
318
+ TuiPanService = __decorate([
319
+ Injectable(),
320
+ __param(0, Inject(ElementRef)),
321
+ __param(1, Inject(DOCUMENT))
322
+ ], TuiPanService);
323
+
324
+ /**
325
+ * @dynamic
326
+ */
327
+ let TuiSwipeService = class TuiSwipeService extends Observable {
328
+ constructor({ nativeElement }, { timeout, threshold }, documentRef) {
329
+ super(subscriber => {
330
+ merge(typedFromEvent(nativeElement, 'touchstart', { passive: true }), typedFromEvent(documentRef, 'touchend'))
331
+ .pipe(pairwise(), filter(([first, second]) => !!first.touches.length &&
332
+ first.touches[0].identifier ===
333
+ second.changedTouches[0].identifier), map(([start, end]) => {
334
+ const startX = start.touches[0].clientX;
335
+ const startY = start.touches[0].clientY;
336
+ const endX = end.changedTouches[0].clientX;
337
+ const endY = end.changedTouches[0].clientY;
338
+ const distanceX = startX - endX;
339
+ const distanceY = startY - endY;
340
+ const duration = end.timeStamp - start.timeStamp;
341
+ if ((Math.abs(distanceX) > threshold ||
342
+ Math.abs(distanceY) > threshold) &&
343
+ duration < timeout) {
344
+ return {
345
+ direction: getSwipeDirection(distanceX, distanceY),
346
+ events: [start, end],
347
+ };
348
+ }
349
+ return null;
350
+ }), filter(isPresent))
351
+ .subscribe(subscriber);
352
+ });
353
+ }
354
+ };
355
+ TuiSwipeService.ctorParameters = () => [
356
+ { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
357
+ { type: undefined, decorators: [{ type: Inject, args: [TUI_SWIPE_OPTIONS,] }] },
358
+ { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
359
+ ];
360
+ TuiSwipeService = __decorate([
361
+ Injectable(),
362
+ __param(0, Inject(ElementRef)),
363
+ __param(1, Inject(TUI_SWIPE_OPTIONS)),
364
+ __param(2, Inject(DOCUMENT))
365
+ ], TuiSwipeService);
366
+
367
+ const TOUCH_SENSITIVITY = 0.01;
368
+ // @dynamic
369
+ let TuiZoomService = class TuiZoomService extends Observable {
370
+ constructor({ nativeElement }, { wheelSensitivity }) {
371
+ super(subscriber => {
372
+ merge(typedFromEvent(nativeElement, 'touchstart', { passive: true }).pipe(filter(({ touches }) => touches.length > 1), switchMap(startEvent => typedFromEvent(nativeElement, 'touchmove', {
373
+ passive: true,
374
+ }).pipe(takeUntil(typedFromEvent(nativeElement, 'touchend')), scan((prev, event) => {
375
+ const distance = distanceBetweenTouches(event);
376
+ return {
377
+ event,
378
+ distance,
379
+ delta: (distance - prev.distance) *
380
+ TOUCH_SENSITIVITY,
381
+ };
382
+ }, {
383
+ event: startEvent,
384
+ distance: distanceBetweenTouches(startEvent),
385
+ delta: 0,
386
+ }), map(({ event, delta }) => {
387
+ event.preventDefault();
388
+ const clientX = (event.touches[0].clientX +
389
+ event.touches[1].clientX) /
390
+ 2;
391
+ const clientY = (event.touches[0].clientY +
392
+ event.touches[1].clientY) /
393
+ 2;
394
+ return { clientX, clientY, delta, event };
395
+ })))), typedFromEvent(nativeElement, 'wheel', { passive: false }).pipe(preventDefault(), map(wheel => ({
396
+ clientX: wheel.clientX,
397
+ clientY: wheel.clientY,
398
+ delta: -wheel.deltaY * wheelSensitivity,
399
+ event: wheel,
400
+ })))).subscribe(subscriber);
401
+ });
402
+ }
403
+ };
404
+ TuiZoomService.ctorParameters = () => [
405
+ { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
406
+ { type: undefined, decorators: [{ type: Inject, args: [TUI_ZOOM_OPTIONS,] }] }
407
+ ];
408
+ TuiZoomService = __decorate([
409
+ Injectable(),
410
+ __param(0, Inject(ElementRef)),
411
+ __param(1, Inject(TUI_ZOOM_OPTIONS))
412
+ ], TuiZoomService);
413
+
295
414
  /**
296
415
  * Generated bundle index. Do not edit.
297
416
  */
298
417
 
299
- export { TuiDestroyService, TuiDirectiveStylesService, TuiFocusVisibleService, TuiHoveredService, TuiIdService, TuiObscuredService, TuiParentsScrollService, TuiResizeService, TuiScrollService, TuiStaticRequestService };
418
+ export { TuiDestroyService, TuiDirectiveStylesService, TuiFocusVisibleService, TuiHoveredService, TuiIdService, TuiObscuredService, TuiPanService, TuiParentsScrollService, TuiResizeService, TuiScrollService, TuiStaticRequestService, TuiSwipeService, TuiZoomService };
300
419
  //# sourceMappingURL=taiga-ui-cdk-services.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-services.js","sources":["ng://@taiga-ui/cdk/services/destroy.service.ts","ng://@taiga-ui/cdk/services/directive-styles.service.ts","ng://@taiga-ui/cdk/services/focus-visible.service.ts","ng://@taiga-ui/cdk/services/hovered.service.ts","ng://@taiga-ui/cdk/services/id.service.ts","ng://@taiga-ui/cdk/services/parents-scroll.service.ts","ng://@taiga-ui/cdk/services/obscured.service.ts","ng://@taiga-ui/cdk/services/resize.service.ts","ng://@taiga-ui/cdk/services/scroll.service.ts","ng://@taiga-ui/cdk/services/static-request.service.ts","ng://@taiga-ui/cdk/services/taiga-ui-cdk-services.ts"],"sourcesContent":["import {Injectable, OnDestroy} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * Observable abstraction over ngOnDestroy to use with takeUntil\n */\n@Injectable()\nexport class TuiDestroyService extends Subject<void> implements OnDestroy {\n ngOnDestroy() {\n this.next();\n this.complete();\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, Renderer2} from '@angular/core';\nimport {TUI_DEFAULT_RENDERER} from '@taiga-ui/cdk/tokens';\n\n/**\n * Service to use styles with directives\n * @dynamic\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiDirectiveStylesService {\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(TUI_DEFAULT_RENDERER) private readonly renderer: Renderer2,\n ) {}\n\n addStyle(styles: string, attribute: string) {\n if (this.documentRef.head.querySelector(`style[${attribute}]`)) {\n return;\n }\n\n const style = this.renderer.createElement('style');\n\n this.renderer.setProperty(style, 'textContent', styles);\n this.renderer.setAttribute(style, attribute, '');\n this.documentRef.head.appendChild(style);\n }\n}\n","import {ChangeDetectorRef, ElementRef, Inject, Injectable} from '@angular/core';\nimport {focusVisibleObservable, watch} from '@taiga-ui/cdk/observables';\nimport {Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\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 * @dynamic\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) changeDetectorRef: ChangeDetectorRef,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n ) {\n super(subscriber => this.focusVisible$.subscribe(subscriber));\n\n this.focusVisible$ = focusVisibleObservable(nativeElement).pipe(\n watch(changeDetectorRef),\n takeUntil(destroy$),\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone} from '@angular/core';\nimport {tuiZoneOptimized, typedFromEvent} from '@taiga-ui/cdk/observables';\nimport {getActualTarget} from '@taiga-ui/cdk/utils/dom';\nimport {merge, Observable} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n mapTo,\n startWith,\n switchMap,\n take,\n} from 'rxjs/operators';\n\n// @dynamic\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiHoveredService {\n private readonly documentEvents$: Observable<Event>;\n\n constructor(\n @Inject(DOCUMENT) documentRef: Document,\n @Inject(NgZone) private readonly ngZone: NgZone,\n ) {\n this.documentEvents$ = merge(\n typedFromEvent(documentRef, 'mousemove'),\n typedFromEvent(documentRef, 'touchend'),\n );\n }\n\n createHovered$(\n target: Element,\n options: AddEventListenerOptions = {passive: true},\n ): Observable<boolean> {\n return merge(\n typedFromEvent(target, 'mouseenter', options),\n typedFromEvent(target, 'touchstart', options),\n ).pipe(\n switchMap(() =>\n merge(\n typedFromEvent(target, 'mouseleave', options),\n this.documentEvents$.pipe(\n filter(event => !target.contains(getActualTarget(event))),\n tuiZoneOptimized(this.ngZone),\n take(1),\n ),\n ).pipe(mapTo(false), startWith(true)),\n ),\n distinctUntilChanged(),\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 {typedFromEvent} 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// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Injectable()\nexport class TuiParentsScrollService extends Observable<Event> {\n private readonly callback$: Observable<Event>;\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<Element>,\n @Inject(WINDOW) windowRef: Window,\n ) {\n super(subscriber => this.callback$.subscribe(subscriber));\n\n this.callback$ = defer(() => {\n const eventTargets: Array<Element | Window> = [windowRef, nativeElement];\n\n while (nativeElement.parentElement) {\n nativeElement = nativeElement.parentElement;\n eventTargets.push(nativeElement);\n }\n\n return merge<Event>(\n ...eventTargets.map<Observable<Event>>(element =>\n typedFromEvent(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 {getElementObscurers} 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';\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// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Injectable()\nexport class TuiObscuredService extends Observable<null | ReadonlyArray<Element>> {\n private obscured$: Observable<null | ReadonlyArray<Element>>;\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) windowRef: Window,\n @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(windowRef, 'resize')).pipe(delay(0)),\n animationFrame$.pipe(throttleTime(POLLING_TIME)),\n ).pipe(\n map(() => getElementObscurers(nativeElement)),\n startWith(null),\n distinctUntilChanged(),\n tuiZoneOptimized(ngZone),\n takeUntil(destroy$),\n );\n }\n}\n","import {ElementRef, Inject, Injectable, NgZone} 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 mapTo,\n takeUntil,\n throttleTime,\n} from 'rxjs/operators';\nimport {TuiDestroyService} from './destroy.service';\n\n// @dynamic\n@Injectable()\nexport class TuiResizeService extends ResizeObserverService {\n constructor(\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(RESIZE_OBSERVER_SUPPORT) support: boolean,\n @Inject(RESIZE_OPTION_BOX) box: ResizeObserverOptions['box'],\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n ) {\n super(elementRef, ngZone, support, box);\n\n return this.pipe(\n catchError(() =>\n animationFrame$.pipe(\n throttleTime(POLLING_TIME),\n map(\n () =>\n `${elementRef.nativeElement.clientWidth} ${elementRef.nativeElement.clientHeight}`,\n ),\n distinctUntilChanged(),\n mapTo(EMPTY_ARRAY),\n ),\n ),\n takeUntil(destroy$),\n debounceTime(0),\n tuiZonefree(ngZone),\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 {clamp} from '@taiga-ui/cdk/utils/math';\nimport {easeInOutQuad} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {defer, Observable, of, timer} from 'rxjs';\nimport {map, switchMap, takeUntil, tap} from 'rxjs/operators';\n\nconst SCROLL_TIME = 300;\n\n// @dynamic\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 element: Element,\n scrollTop: number,\n scrollLeft: number = element.scrollLeft,\n duration: number = SCROLL_TIME,\n ): Observable<[number, number]> {\n tuiAssert.assert(duration >= 0, 'Duration cannot be negative');\n tuiAssert.assert(scrollTop >= 0, 'scrollTop cannot be negative');\n tuiAssert.assert(scrollLeft >= 0, 'scrollLeft cannot be negative');\n\n const initialTop = element.scrollTop;\n const initialLeft = element.scrollLeft;\n const deltaTop = scrollTop - initialTop;\n const deltaLeft = scrollLeft - initialLeft;\n const observable = !duration\n ? of([scrollTop, scrollLeft] as [number, number])\n : defer(() => of(this.performanceRef.now())).pipe(\n switchMap(start => this.animationFrame$.pipe(map(now => now - start))),\n takeUntil(timer(duration)),\n map(elapsed => easeInOutQuad(clamp(elapsed / duration, 0, 1))),\n map(\n percent =>\n [\n initialTop + deltaTop * percent,\n initialLeft + deltaLeft * percent,\n ] as [number, number],\n ),\n );\n\n return observable.pipe(\n tap(([scrollTop, scrollLeft]) => {\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }),\n );\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, Observer} from 'rxjs';\nimport {shareReplay} from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiStaticRequestService {\n private cache = new Map<string, Observable<string>>();\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 observable = new Observable((observer: Observer<string>) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n const response = xhr.responseType ? xhr.response : xhr.responseText;\n\n if (xhr.status === 200) {\n observer.next(response);\n observer.complete();\n } else {\n observer.error(response);\n }\n }\n };\n xhr.open('GET', url);\n xhr.send();\n\n return () => {\n xhr.abort();\n };\n });\n const piped = observable.pipe(shareReplay(1));\n\n this.cache.set(url, piped);\n\n return piped;\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":["ng://@taiga-ui/cdk/services/destroy.service.ts","ng://@taiga-ui/cdk/services/directive-styles.service.ts","ng://@taiga-ui/cdk/services/focus-visible.service.ts","ng://@taiga-ui/cdk/services/hovered.service.ts","ng://@taiga-ui/cdk/services/id.service.ts","ng://@taiga-ui/cdk/services/parents-scroll.service.ts","ng://@taiga-ui/cdk/services/obscured.service.ts","ng://@taiga-ui/cdk/services/resize.service.ts","ng://@taiga-ui/cdk/services/scroll.service.ts","ng://@taiga-ui/cdk/services/static-request.service.ts","ng://@taiga-ui/cdk/services/pan.service.ts","ng://@taiga-ui/cdk/services/swipe.service.ts","ng://@taiga-ui/cdk/services/zoom.service.ts","ng://@taiga-ui/cdk/services/taiga-ui-cdk-services.ts"],"sourcesContent":["import {Injectable, OnDestroy} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * Observable abstraction over ngOnDestroy to use with takeUntil\n */\n@Injectable()\nexport class TuiDestroyService extends Subject<void> implements OnDestroy {\n ngOnDestroy() {\n this.next();\n this.complete();\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, Renderer2} from '@angular/core';\nimport {TUI_DEFAULT_RENDERER} from '@taiga-ui/cdk/tokens';\n\n/**\n * Service to use styles with directives\n * @dynamic\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiDirectiveStylesService {\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(TUI_DEFAULT_RENDERER) private readonly renderer: Renderer2,\n ) {}\n\n addStyle(styles: string, attribute: string) {\n if (this.documentRef.head.querySelector(`style[${attribute}]`)) {\n return;\n }\n\n const style = this.renderer.createElement('style');\n\n this.renderer.setProperty(style, 'textContent', styles);\n this.renderer.setAttribute(style, attribute, '');\n this.documentRef.head.appendChild(style);\n }\n}\n","import {ChangeDetectorRef, ElementRef, Inject, Injectable} from '@angular/core';\nimport {focusVisibleObservable, watch} from '@taiga-ui/cdk/observables';\nimport {Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\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 * @dynamic\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) changeDetectorRef: ChangeDetectorRef,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n ) {\n super(subscriber => this.focusVisible$.subscribe(subscriber));\n\n this.focusVisible$ = focusVisibleObservable(nativeElement).pipe(\n watch(changeDetectorRef),\n takeUntil(destroy$),\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone} from '@angular/core';\nimport {tuiZoneOptimized, typedFromEvent} from '@taiga-ui/cdk/observables';\nimport {getActualTarget} from '@taiga-ui/cdk/utils/dom';\nimport {merge, Observable} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n mapTo,\n startWith,\n switchMap,\n take,\n} from 'rxjs/operators';\n\n// @dynamic\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiHoveredService {\n private readonly documentEvents$: Observable<Event>;\n\n constructor(\n @Inject(DOCUMENT) documentRef: Document,\n @Inject(NgZone) private readonly ngZone: NgZone,\n ) {\n this.documentEvents$ = merge(\n typedFromEvent(documentRef, 'mousemove'),\n typedFromEvent(documentRef, 'touchstart', {capture: true}),\n );\n }\n\n createHovered$(\n target: Element,\n options: AddEventListenerOptions = {passive: true},\n ): Observable<boolean> {\n return merge(\n typedFromEvent(target, 'mouseenter', options),\n typedFromEvent(target, 'touchstart', options),\n ).pipe(\n switchMap(() =>\n merge(\n typedFromEvent(target, 'mouseleave', options),\n this.documentEvents$.pipe(\n filter(event => !target.contains(getActualTarget(event))),\n tuiZoneOptimized(this.ngZone),\n take(1),\n ),\n ).pipe(mapTo(false), startWith(true)),\n ),\n distinctUntilChanged(),\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 {typedFromEvent} 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// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Injectable()\nexport class TuiParentsScrollService extends Observable<Event> {\n private readonly callback$: Observable<Event>;\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<Element>,\n @Inject(WINDOW) windowRef: Window,\n ) {\n super(subscriber => this.callback$.subscribe(subscriber));\n\n this.callback$ = defer(() => {\n const eventTargets: Array<Element | Window> = [windowRef, nativeElement];\n\n while (nativeElement.parentElement) {\n nativeElement = nativeElement.parentElement;\n eventTargets.push(nativeElement);\n }\n\n return merge<Event>(\n ...eventTargets.map<Observable<Event>>(element =>\n typedFromEvent(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 {getElementObscurers} 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';\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// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Injectable()\nexport class TuiObscuredService extends Observable<null | ReadonlyArray<Element>> {\n private obscured$: Observable<null | ReadonlyArray<Element>>;\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) windowRef: Window,\n @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(windowRef, 'resize')).pipe(delay(0)),\n animationFrame$.pipe(throttleTime(POLLING_TIME)),\n ).pipe(\n map(() => getElementObscurers(nativeElement)),\n startWith(null),\n distinctUntilChanged(),\n tuiZoneOptimized(ngZone),\n takeUntil(destroy$),\n );\n }\n}\n","import {ElementRef, Inject, Injectable, NgZone} 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 mapTo,\n takeUntil,\n throttleTime,\n} from 'rxjs/operators';\nimport {TuiDestroyService} from './destroy.service';\n\n// @dynamic\n@Injectable()\nexport class TuiResizeService extends ResizeObserverService {\n constructor(\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(RESIZE_OBSERVER_SUPPORT) support: boolean,\n @Inject(RESIZE_OPTION_BOX) box: ResizeObserverOptions['box'],\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n ) {\n super(elementRef, ngZone, support, box);\n\n return this.pipe(\n catchError(() =>\n animationFrame$.pipe(\n throttleTime(POLLING_TIME),\n map(\n () =>\n `${elementRef.nativeElement.clientWidth} ${elementRef.nativeElement.clientHeight}`,\n ),\n distinctUntilChanged(),\n mapTo(EMPTY_ARRAY),\n ),\n ),\n takeUntil(destroy$),\n debounceTime(0),\n tuiZonefree(ngZone),\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 {clamp} from '@taiga-ui/cdk/utils/math';\nimport {easeInOutQuad} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {defer, Observable, of, timer} from 'rxjs';\nimport {map, switchMap, takeUntil, tap} from 'rxjs/operators';\n\nconst SCROLL_TIME = 300;\n\n// @dynamic\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 element: Element,\n scrollTop: number,\n scrollLeft: number = element.scrollLeft,\n duration: number = SCROLL_TIME,\n ): Observable<[number, number]> {\n tuiAssert.assert(duration >= 0, 'Duration cannot be negative');\n tuiAssert.assert(scrollTop >= 0, 'scrollTop cannot be negative');\n tuiAssert.assert(scrollLeft >= 0, 'scrollLeft cannot be negative');\n\n const initialTop = element.scrollTop;\n const initialLeft = element.scrollLeft;\n const deltaTop = scrollTop - initialTop;\n const deltaLeft = scrollLeft - initialLeft;\n const observable = !duration\n ? of([scrollTop, scrollLeft] as [number, number])\n : defer(() => of(this.performanceRef.now())).pipe(\n switchMap(start => this.animationFrame$.pipe(map(now => now - start))),\n takeUntil(timer(duration)),\n map(elapsed => easeInOutQuad(clamp(elapsed / duration, 0, 1))),\n map(\n percent =>\n [\n initialTop + deltaTop * percent,\n initialLeft + deltaLeft * percent,\n ] as [number, number],\n ),\n );\n\n return observable.pipe(\n tap(([scrollTop, scrollLeft]) => {\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }),\n );\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, Observer} from 'rxjs';\nimport {shareReplay} from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiStaticRequestService {\n private cache = new Map<string, Observable<string>>();\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 observable = new Observable((observer: Observer<string>) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n const response = xhr.responseType ? xhr.response : xhr.responseText;\n\n if (xhr.status === 200) {\n observer.next(response);\n observer.complete();\n } else {\n observer.error(response);\n }\n }\n };\n xhr.open('GET', url);\n xhr.send();\n\n return () => {\n xhr.abort();\n };\n });\n const piped = observable.pipe(shareReplay(1));\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 {typedFromEvent} from '@taiga-ui/cdk/observables';\nimport {merge, Observable} from 'rxjs';\nimport {filter, map, pairwise, repeat, switchMapTo, takeUntil} from 'rxjs/operators';\n\n/**\n * @dynamic\n */\n@Injectable()\nexport class TuiPanService extends Observable<readonly [number, number]> {\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<Element>,\n @Inject(DOCUMENT) documentRef: Document,\n ) {\n super(subscriber => {\n merge(\n typedFromEvent(nativeElement, 'touchstart', {passive: true}),\n typedFromEvent(nativeElement, 'mousedown'),\n )\n .pipe(\n switchMapTo(\n merge(\n typedFromEvent(nativeElement, 'touchmove', {\n passive: true,\n }).pipe(\n filter(({touches}) => touches.length < 2),\n map(({touches}) => touches[0]),\n ),\n typedFromEvent(nativeElement, '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 takeUntil(\n merge(\n typedFromEvent(documentRef, 'touchend'),\n typedFromEvent(documentRef, 'mouseup'),\n ),\n ),\n repeat(),\n )\n .subscribe(subscriber);\n });\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, Inject, Injectable} from '@angular/core';\nimport {TuiSwipe, TuiSwipeOptions} from '@taiga-ui/cdk/interfaces';\nimport {typedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TUI_SWIPE_OPTIONS} from '@taiga-ui/cdk/tokens';\nimport {getSwipeDirection, isPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {merge, Observable} from 'rxjs';\nimport {filter, map, pairwise} from 'rxjs/operators';\n\n/**\n * @dynamic\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) documentRef: Document,\n ) {\n super(subscriber => {\n merge(\n typedFromEvent(nativeElement, 'touchstart', {passive: true}),\n typedFromEvent(documentRef, '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: getSwipeDirection(distanceX, distanceY),\n events: [start, end] as [TouchEvent, TouchEvent],\n };\n }\n\n return null;\n }),\n filter(isPresent),\n )\n .subscribe(subscriber);\n });\n }\n}\n","import {ElementRef, Inject, Injectable} from '@angular/core';\nimport {TuiZoom, TuiZoomOptions} from '@taiga-ui/cdk/interfaces';\nimport {preventDefault, typedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TUI_ZOOM_OPTIONS} from '@taiga-ui/cdk/tokens';\nimport {distanceBetweenTouches} 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// @dynamic\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 typedFromEvent(nativeElement, 'touchstart', {passive: true}).pipe(\n filter(({touches}) => touches.length > 1),\n switchMap(startEvent =>\n typedFromEvent(nativeElement, 'touchmove', {\n passive: true,\n }).pipe(\n takeUntil(typedFromEvent(nativeElement, 'touchend')),\n scan(\n (prev, event) => {\n const distance = distanceBetweenTouches(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: distanceBetweenTouches(startEvent),\n delta: 0,\n },\n ),\n map(({event, delta}) => {\n event.preventDefault();\n\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 ),\n ),\n ),\n typedFromEvent(nativeElement, 'wheel', {passive: false}).pipe(\n preventDefault(),\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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"}
@@ -45,18 +45,17 @@ const TUI_ACTIVE_ELEMENT = new InjectionToken('Active element on the document fo
45
45
  },
46
46
  });
47
47
  // Checks if focusout event should be considered leaving active zone
48
- function isValidFocusout(target, removedElement) {
49
- var _a;
48
+ function isValidFocusout(target, removedElement = null) {
50
49
  return (
51
50
  // Not due to switching tabs/going to DevTools
52
- ((_a = target.ownerDocument) === null || _a === void 0 ? void 0 : _a.activeElement) !== target &&
51
+ getDocumentOrShadowRoot(target).activeElement !== target &&
53
52
  // Not due to button/input becoming disabled
54
53
  !target.disabled &&
55
54
  // Not due to element being removed from DOM
56
55
  (!removedElement || !removedElement.contains(target)));
57
56
  }
58
57
  function shadowRootActiveElement(root) {
59
- return merge(typedFromEvent(root, 'focusin').pipe(map(({ target }) => target)), typedFromEvent(root, 'focusout').pipe(filter(({ target }) => isValidFocusout(target, null)), map(({ relatedTarget }) => relatedTarget)));
58
+ return merge(typedFromEvent(root, 'focusin').pipe(map(({ target }) => target)), typedFromEvent(root, 'focusout').pipe(filter(({ target, relatedTarget }) => !!relatedTarget && isValidFocusout(target)), map(({ relatedTarget }) => relatedTarget)));
60
59
  }
61
60
 
62
61
  // https://github.com/angular/angular/issues/17824#issuecomment-353239017
@@ -113,9 +112,19 @@ const TUI_WINDOW_HEIGHT = new InjectionToken('Window height accounting for disap
113
112
  },
114
113
  });
115
114
 
115
+ const TUI_SWIPE_OPTIONS = new InjectionToken('Swipe options', {
116
+ factory: () => ({ timeout: 500, threshold: 30 }),
117
+ });
118
+
119
+ const TUI_ZOOM_OPTIONS = new InjectionToken('Zoom options', {
120
+ factory: () => ({
121
+ wheelSensitivity: 0.01,
122
+ }),
123
+ });
124
+
116
125
  /**
117
126
  * Generated bundle index. Do not edit.
118
127
  */
119
128
 
120
- export { TUI_ACTIVE_ELEMENT, TUI_DEFAULT_RENDERER, TUI_DIALOGS, TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_ANDROID, TUI_IS_CYPRESS, TUI_IS_IOS, TUI_IS_MOBILE, TUI_REMOVED_ELEMENT, TUI_SANITIZER, TUI_TAKE_ONLY_TRUSTED_EVENTS, TUI_WINDOW_HEIGHT };
129
+ export { TUI_ACTIVE_ELEMENT, TUI_DEFAULT_RENDERER, TUI_DIALOGS, TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_ANDROID, TUI_IS_CYPRESS, TUI_IS_IOS, TUI_IS_MOBILE, TUI_REMOVED_ELEMENT, TUI_SANITIZER, TUI_SWIPE_OPTIONS, TUI_TAKE_ONLY_TRUSTED_EVENTS, TUI_WINDOW_HEIGHT, TUI_ZOOM_OPTIONS };
121
130
  //# sourceMappingURL=taiga-ui-cdk-tokens.js.map