@taiga-ui/cdk 4.52.0-canary.38dfc57 → 4.52.0-canary.39c57da

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 (200) hide show
  1. package/classes/index.d.ts +0 -1
  2. package/constants/index.d.ts +0 -1
  3. package/constants/used-icons.d.ts +1 -1
  4. package/constants/version.d.ts +1 -1
  5. package/constants/version.js +1 -1
  6. package/date-time/day.d.ts +1 -1
  7. package/date-time/time.d.ts +2 -2
  8. package/date-time/types.d.ts +0 -5
  9. package/directives/active-zone/active-zone.directive.d.ts +4 -3
  10. package/directives/auto-focus/autofocus.options.d.ts +1 -1
  11. package/directives/index.d.ts +1 -1
  12. package/directives/repeat-times/repeat-times.directive.d.ts +2 -2
  13. package/directives/with-styles/index.d.ts +1 -0
  14. package/directives/with-styles/with-styles.directive.d.ts +10 -0
  15. package/fesm2022/taiga-ui-cdk-classes.mjs +2 -73
  16. package/fesm2022/taiga-ui-cdk-classes.mjs.map +1 -1
  17. package/fesm2022/taiga-ui-cdk-constants.mjs +14 -16
  18. package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
  19. package/fesm2022/taiga-ui-cdk-date-time.mjs +14 -2
  20. package/fesm2022/taiga-ui-cdk-date-time.mjs.map +1 -1
  21. package/fesm2022/taiga-ui-cdk-directives-active-zone.mjs +20 -25
  22. package/fesm2022/taiga-ui-cdk-directives-active-zone.mjs.map +1 -1
  23. package/fesm2022/taiga-ui-cdk-directives-animated.mjs +0 -2
  24. package/fesm2022/taiga-ui-cdk-directives-animated.mjs.map +1 -1
  25. package/fesm2022/taiga-ui-cdk-directives-auto-focus.mjs +0 -1
  26. package/fesm2022/taiga-ui-cdk-directives-auto-focus.mjs.map +1 -1
  27. package/fesm2022/taiga-ui-cdk-directives-click-outside.mjs +0 -1
  28. package/fesm2022/taiga-ui-cdk-directives-click-outside.mjs.map +1 -1
  29. package/fesm2022/taiga-ui-cdk-directives-control.mjs +0 -1
  30. package/fesm2022/taiga-ui-cdk-directives-control.mjs.map +1 -1
  31. package/fesm2022/taiga-ui-cdk-directives-copy-processor.mjs +0 -1
  32. package/fesm2022/taiga-ui-cdk-directives-copy-processor.mjs.map +1 -1
  33. package/fesm2022/taiga-ui-cdk-directives-droppable.mjs +0 -1
  34. package/fesm2022/taiga-ui-cdk-directives-droppable.mjs.map +1 -1
  35. package/fesm2022/taiga-ui-cdk-directives-element.mjs +0 -1
  36. package/fesm2022/taiga-ui-cdk-directives-element.mjs.map +1 -1
  37. package/fesm2022/taiga-ui-cdk-directives-focus-trap.mjs +7 -16
  38. package/fesm2022/taiga-ui-cdk-directives-focus-trap.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-cdk-directives-font-size.mjs +1 -4
  40. package/fesm2022/taiga-ui-cdk-directives-font-size.mjs.map +1 -1
  41. package/fesm2022/taiga-ui-cdk-directives-high-dpi.mjs +0 -1
  42. package/fesm2022/taiga-ui-cdk-directives-high-dpi.mjs.map +1 -1
  43. package/fesm2022/taiga-ui-cdk-directives-hovered.mjs +0 -1
  44. package/fesm2022/taiga-ui-cdk-directives-hovered.mjs.map +1 -1
  45. package/fesm2022/taiga-ui-cdk-directives-item.mjs +0 -1
  46. package/fesm2022/taiga-ui-cdk-directives-item.mjs.map +1 -1
  47. package/fesm2022/taiga-ui-cdk-directives-let.mjs +0 -1
  48. package/fesm2022/taiga-ui-cdk-directives-let.mjs.map +1 -1
  49. package/fesm2022/taiga-ui-cdk-directives-media.mjs +0 -1
  50. package/fesm2022/taiga-ui-cdk-directives-media.mjs.map +1 -1
  51. package/fesm2022/taiga-ui-cdk-directives-native-validator.mjs +0 -1
  52. package/fesm2022/taiga-ui-cdk-directives-native-validator.mjs.map +1 -1
  53. package/fesm2022/taiga-ui-cdk-directives-obscured.mjs +7 -2
  54. package/fesm2022/taiga-ui-cdk-directives-obscured.mjs.map +1 -1
  55. package/fesm2022/taiga-ui-cdk-directives-pan.mjs +0 -1
  56. package/fesm2022/taiga-ui-cdk-directives-pan.mjs.map +1 -1
  57. package/fesm2022/taiga-ui-cdk-directives-platform.mjs +0 -1
  58. package/fesm2022/taiga-ui-cdk-directives-platform.mjs.map +1 -1
  59. package/fesm2022/taiga-ui-cdk-directives-repeat-times.mjs +6 -7
  60. package/fesm2022/taiga-ui-cdk-directives-repeat-times.mjs.map +1 -1
  61. package/fesm2022/taiga-ui-cdk-directives-resizer.mjs +0 -2
  62. package/fesm2022/taiga-ui-cdk-directives-resizer.mjs.map +1 -1
  63. package/fesm2022/taiga-ui-cdk-directives-swipe.mjs +0 -1
  64. package/fesm2022/taiga-ui-cdk-directives-swipe.mjs.map +1 -1
  65. package/fesm2022/taiga-ui-cdk-directives-transitioned.mjs +0 -1
  66. package/fesm2022/taiga-ui-cdk-directives-transitioned.mjs.map +1 -1
  67. package/fesm2022/taiga-ui-cdk-directives-validator.mjs +0 -1
  68. package/fesm2022/taiga-ui-cdk-directives-validator.mjs.map +1 -1
  69. package/fesm2022/taiga-ui-cdk-directives-value-changes.mjs +0 -1
  70. package/fesm2022/taiga-ui-cdk-directives-value-changes.mjs.map +1 -1
  71. package/fesm2022/taiga-ui-cdk-directives-visual-viewport.mjs +0 -1
  72. package/fesm2022/taiga-ui-cdk-directives-visual-viewport.mjs.map +1 -1
  73. package/fesm2022/taiga-ui-cdk-directives-with-styles.mjs +29 -0
  74. package/fesm2022/taiga-ui-cdk-directives-with-styles.mjs.map +1 -0
  75. package/fesm2022/taiga-ui-cdk-directives-zoom.mjs +0 -1
  76. package/fesm2022/taiga-ui-cdk-directives-zoom.mjs.map +1 -1
  77. package/fesm2022/taiga-ui-cdk-directives.mjs +1 -1
  78. package/fesm2022/taiga-ui-cdk-observables.mjs +8 -4
  79. package/fesm2022/taiga-ui-cdk-observables.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-cdk-pipes-animation.mjs +0 -1
  81. package/fesm2022/taiga-ui-cdk-pipes-animation.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-cdk-pipes-filter.mjs +0 -1
  83. package/fesm2022/taiga-ui-cdk-pipes-filter.mjs.map +1 -1
  84. package/fesm2022/taiga-ui-cdk-pipes-is-present.mjs +0 -1
  85. package/fesm2022/taiga-ui-cdk-pipes-is-present.mjs.map +1 -1
  86. package/fesm2022/taiga-ui-cdk-pipes-keys.mjs +0 -1
  87. package/fesm2022/taiga-ui-cdk-pipes-keys.mjs.map +1 -1
  88. package/fesm2022/taiga-ui-cdk-pipes-mapper.mjs +0 -1
  89. package/fesm2022/taiga-ui-cdk-pipes-mapper.mjs.map +1 -1
  90. package/fesm2022/taiga-ui-cdk-pipes-obfuscate.mjs +0 -1
  91. package/fesm2022/taiga-ui-cdk-pipes-obfuscate.mjs.map +1 -1
  92. package/fesm2022/taiga-ui-cdk-pipes-repeat-times.mjs +0 -1
  93. package/fesm2022/taiga-ui-cdk-pipes-repeat-times.mjs.map +1 -1
  94. package/fesm2022/taiga-ui-cdk-pipes-replace.mjs +0 -1
  95. package/fesm2022/taiga-ui-cdk-pipes-replace.mjs.map +1 -1
  96. package/fesm2022/taiga-ui-cdk-pipes-to-array.mjs +0 -1
  97. package/fesm2022/taiga-ui-cdk-pipes-to-array.mjs.map +1 -1
  98. package/fesm2022/taiga-ui-cdk-portals.mjs +127 -0
  99. package/fesm2022/taiga-ui-cdk-portals.mjs.map +1 -0
  100. package/fesm2022/taiga-ui-cdk-services.mjs +3 -43
  101. package/fesm2022/taiga-ui-cdk-services.mjs.map +1 -1
  102. package/fesm2022/taiga-ui-cdk-tokens.mjs +9 -8
  103. package/fesm2022/taiga-ui-cdk-tokens.mjs.map +1 -1
  104. package/fesm2022/taiga-ui-cdk-utils-browser.mjs +1 -23
  105. package/fesm2022/taiga-ui-cdk-utils-browser.mjs.map +1 -1
  106. package/fesm2022/taiga-ui-cdk-utils-color.mjs +2 -1
  107. package/fesm2022/taiga-ui-cdk-utils-color.mjs.map +1 -1
  108. package/fesm2022/taiga-ui-cdk-utils-dom.mjs +16 -23
  109. package/fesm2022/taiga-ui-cdk-utils-dom.mjs.map +1 -1
  110. package/fesm2022/taiga-ui-cdk-utils-focus.mjs +13 -14
  111. package/fesm2022/taiga-ui-cdk-utils-focus.mjs.map +1 -1
  112. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs +11 -12
  113. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs.map +1 -1
  114. package/fesm2022/taiga-ui-cdk.mjs +1 -0
  115. package/fesm2022/taiga-ui-cdk.mjs.map +1 -1
  116. package/index.d.ts +1 -0
  117. package/package.json +31 -24
  118. package/pipes/obfuscate/obfuscate.options.d.ts +1 -1
  119. package/portals/directive.d.ts +11 -0
  120. package/portals/index.d.ts +4 -0
  121. package/portals/portal.d.ts +25 -0
  122. package/portals/portals.d.ts +12 -0
  123. package/portals/service.d.ts +15 -0
  124. package/schematics/collection.json +2 -1
  125. package/schematics/migrate-tui-let/index.js +4 -3
  126. package/schematics/migrate-tui-let/index.js.map +1 -1
  127. package/schematics/migrate-tui-let/schema.json +7 -0
  128. package/schematics/ng-add/constants/versions.d.ts +1 -1
  129. package/schematics/ng-update/interfaces/html-comment.d.ts +1 -1
  130. package/schematics/ng-update/interfaces/removable-input.d.ts +1 -1
  131. package/schematics/ng-update/interfaces/replacement-attribute-to-directive.d.ts +1 -1
  132. package/schematics/ng-update/interfaces/replacement-attribute-value.d.ts +1 -1
  133. package/schematics/ng-update/interfaces/replacement-attribute.d.ts +1 -1
  134. package/schematics/ng-update/interfaces/replacement-tag.d.ts +1 -1
  135. package/schematics/ng-update/{v4/steps → utils}/replace-functions.d.ts +1 -1
  136. package/schematics/ng-update/{v4/steps → utils}/replace-functions.js +1 -1
  137. package/schematics/ng-update/utils/replace-functions.js.map +1 -0
  138. package/schematics/ng-update/v4/index.js +1 -1
  139. package/schematics/ng-update/v4/index.js.map +1 -1
  140. package/schematics/ng-update/v4/migrate-css-vars/rename-css-vars.js +1 -1
  141. package/schematics/ng-update/v4/migrate-css-vars/rename-css-vars.js.map +1 -1
  142. package/schematics/ng-update/v4/steps/constants/migration-warnings.js +1 -1
  143. package/schematics/ng-update/v4/steps/constants/migration-warnings.js.map +1 -1
  144. package/schematics/ng-update/v4/steps/migrate-templates.d.ts +2 -2
  145. package/schematics/ng-update/v4/steps/restore-tui-mapper.js +1 -1
  146. package/schematics/ng-update/v4/steps/restore-tui-mapper.js.map +1 -1
  147. package/schematics/ng-update/v4/steps/restore-tui-matcher.js +1 -1
  148. package/schematics/ng-update/v4/steps/restore-tui-matcher.js.map +1 -1
  149. package/schematics/ng-update/v4/steps/styles/migrate-space-mixins.js +1 -1
  150. package/schematics/ng-update/v4/steps/styles/migrate-space-mixins.js.map +1 -1
  151. package/schematics/ng-update/v5/index.js +12 -0
  152. package/schematics/ng-update/v5/index.js.map +1 -1
  153. package/schematics/ng-update/v5/steps/constants/functions.d.ts +2 -0
  154. package/schematics/ng-update/v5/steps/constants/functions.js +72 -0
  155. package/schematics/ng-update/v5/steps/constants/functions.js.map +1 -0
  156. package/schematics/ng-update/v5/steps/constants/html-comments.d.ts +2 -0
  157. package/schematics/ng-update/v5/steps/constants/html-comments.js +11 -0
  158. package/schematics/ng-update/v5/steps/constants/html-comments.js.map +1 -0
  159. package/schematics/ng-update/v5/steps/constants/identifiers-to-replace.d.ts +2 -0
  160. package/schematics/ng-update/v5/steps/constants/identifiers-to-replace.js +22 -0
  161. package/schematics/ng-update/v5/steps/constants/identifiers-to-replace.js.map +1 -0
  162. package/schematics/ng-update/v5/steps/migrate-templates.d.ts +17 -0
  163. package/schematics/ng-update/v5/steps/migrate-templates.js +42 -0
  164. package/schematics/ng-update/v5/steps/migrate-templates.js.map +1 -0
  165. package/schematics/ng-update/v5/steps/templates/migrate-input-year.d.ts +8 -0
  166. package/schematics/ng-update/v5/steps/templates/migrate-input-year.js +52 -0
  167. package/schematics/ng-update/v5/steps/templates/migrate-input-year.js.map +1 -0
  168. package/schematics/utils/angular-json-manipulations.js +0 -2
  169. package/schematics/utils/angular-json-manipulations.js.map +1 -1
  170. package/schematics/utils/run-migration.d.ts +14 -0
  171. package/schematics/utils/run-migration.js +26 -0
  172. package/schematics/utils/run-migration.js.map +1 -0
  173. package/schematics/utils/templates/elements.js +4 -12
  174. package/schematics/utils/templates/elements.js.map +1 -1
  175. package/schematics/utils/templates/ng-component-input-manipulations.d.ts +3 -3
  176. package/schematics/utils/templates/ng-component-input-manipulations.js +1 -3
  177. package/schematics/utils/templates/ng-component-input-manipulations.js.map +1 -1
  178. package/services/index.d.ts +0 -1
  179. package/tokens/environment.d.ts +5 -0
  180. package/utils/browser/index.d.ts +0 -2
  181. package/utils/dom/get-element-obscurers.d.ts +1 -1
  182. package/utils/focus/blur-native-focused.d.ts +1 -1
  183. package/utils/focus/get-native-focused.d.ts +1 -1
  184. package/utils/focus/is-native-focused-in.d.ts +1 -1
  185. package/utils/focus/is-native-focused.d.ts +1 -1
  186. package/utils/focus/is-native-keyboard-focusable.d.ts +1 -1
  187. package/utils/focus/is-native-mouse-focusable.d.ts +1 -1
  188. package/utils/miscellaneous/index.d.ts +1 -1
  189. package/utils/miscellaneous/object-shallow-equals.d.ts +1 -0
  190. package/classes/portals.d.ts +0 -33
  191. package/constants/allow-signal-writes.d.ts +0 -2
  192. package/directives/popover/index.d.ts +0 -1
  193. package/directives/popover/popover.directive.d.ts +0 -14
  194. package/fesm2022/taiga-ui-cdk-directives-popover.mjs +0 -32
  195. package/fesm2022/taiga-ui-cdk-directives-popover.mjs.map +0 -1
  196. package/schematics/ng-update/v4/steps/replace-functions.js.map +0 -1
  197. package/services/popover.service.d.ts +0 -25
  198. package/utils/browser/is-apple.d.ts +0 -11
  199. package/utils/browser/is-ios.d.ts +0 -6
  200. package/utils/miscellaneous/directive-listener.d.ts +0 -9
@@ -0,0 +1,127 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, INJECTOR, Injector, Injectable, input, Directive, viewChild, ViewContainerRef } from '@angular/core';
3
+ import { outputFromObservable, toObservable } from '@angular/core/rxjs-interop';
4
+ import { tuiIfMap } from '@taiga-ui/cdk/observables';
5
+ import { PolymorpheusComponent, POLYMORPHEUS_CONTEXT, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
6
+ import { Observable, ignoreElements, endWith, share } from 'rxjs';
7
+ import { TuiIdService } from '@taiga-ui/cdk/services';
8
+ import { tuiProvide } from '@taiga-ui/cdk/utils';
9
+
10
+ class TuiPortal {
11
+ // eslint-disable-next-line @angular-eslint/prefer-inject
12
+ constructor(service) {
13
+ this.service = service;
14
+ this.injector = inject(INJECTOR);
15
+ this.id = inject(TuiIdService);
16
+ }
17
+ open(content, options = {}) {
18
+ return new Observable(($implicit) => this.add(new PolymorpheusComponent(this.component, Injector.create({
19
+ parent: this.injector,
20
+ providers: [
21
+ {
22
+ provide: POLYMORPHEUS_CONTEXT,
23
+ useValue: {
24
+ ...this.options,
25
+ ...options,
26
+ content,
27
+ $implicit,
28
+ createdAt: Date.now(),
29
+ id: this.id.generate(),
30
+ completeWith: (v) => {
31
+ $implicit.next(v);
32
+ $implicit.complete();
33
+ },
34
+ },
35
+ },
36
+ ],
37
+ }))));
38
+ }
39
+ add(component) {
40
+ const ref = this.service.add(component);
41
+ return () => ref.destroy();
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPortal, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
44
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPortal }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPortal, decorators: [{
47
+ type: Injectable
48
+ }], ctorParameters: () => [{ type: undefined }] });
49
+ function tuiAsPortal(portal) {
50
+ return tuiProvide(TuiPortal, portal);
51
+ }
52
+
53
+ class TuiPortalDirective extends PolymorpheusTemplate {
54
+ constructor() {
55
+ super(...arguments);
56
+ this.service = inject((TuiPortal));
57
+ this.options = input({});
58
+ this.open = input(false);
59
+ this.openChange = outputFromObservable(toObservable(this.open).pipe(tuiIfMap(() => this.service
60
+ .open(this, this.options())
61
+ .pipe(ignoreElements(), endWith(false))), share()));
62
+ }
63
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
64
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: TuiPortalDirective, isStandalone: true, inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange" }, usesInheritance: true, ngImport: i0 }); }
65
+ }
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPortalDirective, decorators: [{
67
+ type: Directive
68
+ }] });
69
+
70
+ /// <reference types="@taiga-ui/tsconfig/ng-dev-mode" />
71
+ class TuiPortalService {
72
+ attach(host) {
73
+ this.host = host;
74
+ }
75
+ add(content, context) {
76
+ if (!this.host) {
77
+ throw new TuiNoHostException();
78
+ }
79
+ return content instanceof PolymorpheusComponent
80
+ ? this.host.addComponent(content)
81
+ : this.host.addTemplate(content, context);
82
+ }
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPortalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
84
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPortalService }); }
85
+ }
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPortalService, decorators: [{
87
+ type: Injectable
88
+ }] });
89
+ class TuiNoHostException extends Error {
90
+ constructor() {
91
+ super(ngDevMode
92
+ ? 'Portals cannot be used without TuiPortals component; perhaps you forgot to wrap your application with tui-root.'
93
+ : '');
94
+ }
95
+ }
96
+
97
+ /// <reference types="@taiga-ui/tsconfig/ng-dev-mode" />
98
+ class TuiPortals {
99
+ constructor() {
100
+ this.vcr = viewChild.required('vcr', { read: ViewContainerRef });
101
+ this.injector = inject(INJECTOR);
102
+ inject(TuiPortalService).attach(this);
103
+ }
104
+ addComponent(component) {
105
+ // TODO: Remove after updating to polymorpheus v5
106
+ const context = component['i'].get(POLYMORPHEUS_CONTEXT, { optional: true });
107
+ const injector = component.createInjector(this.injector, context || undefined);
108
+ const ref = this.vcr().createComponent(component.component, { injector });
109
+ ref.changeDetectorRef.detectChanges();
110
+ return ref;
111
+ }
112
+ addTemplate(templateRef, context) {
113
+ return this.vcr().createEmbeddedView(templateRef, context);
114
+ }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPortals, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
116
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.15", type: TuiPortals, isStandalone: true, viewQueries: [{ propertyName: "vcr", first: true, predicate: ["vcr"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0 }); }
117
+ }
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPortals, decorators: [{
119
+ type: Directive
120
+ }], ctorParameters: () => [] });
121
+
122
+ /**
123
+ * Generated bundle index. Do not edit.
124
+ */
125
+
126
+ export { TuiNoHostException, TuiPortal, TuiPortalDirective, TuiPortalService, TuiPortals, tuiAsPortal };
127
+ //# sourceMappingURL=taiga-ui-cdk-portals.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-cdk-portals.mjs","sources":["../../../projects/cdk/portals/portal.ts","../../../projects/cdk/portals/directive.ts","../../../projects/cdk/portals/service.ts","../../../projects/cdk/portals/portals.ts","../../../projects/cdk/portals/taiga-ui-cdk-portals.ts"],"sourcesContent":["import {\n inject,\n Injectable,\n INJECTOR,\n Injector,\n type Provider,\n type Type,\n} from '@angular/core';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils';\nimport {\n // eslint-disable-next-line no-restricted-imports\n POLYMORPHEUS_CONTEXT,\n PolymorpheusComponent,\n type PolymorpheusContent,\n} from '@taiga-ui/polymorpheus';\nimport {Observable, type Observer} from 'rxjs';\n\nimport {type TuiPortalService} from './service';\n\nexport type TuiPortalContext<T, O = void> = T &\n TuiContext<Observer<O>> & {\n readonly content: PolymorpheusContent<TuiPortalContext<T, O>>;\n readonly createdAt: number;\n readonly id: string;\n completeWith(value: O): void;\n };\n\n@Injectable()\nexport abstract class TuiPortal<T, K = void> {\n protected abstract readonly component: Type<any>;\n protected abstract readonly options: T;\n\n private readonly injector = inject(INJECTOR);\n private readonly id = inject(TuiIdService);\n\n // eslint-disable-next-line @angular-eslint/prefer-inject\n constructor(protected readonly service: TuiPortalService) {}\n\n public open<G = void>(\n content: PolymorpheusContent<TuiPortalContext<T, K extends void ? G : K>>,\n options: Partial<T> = {},\n ): Observable<K extends void ? G : K> {\n return new Observable(($implicit) =>\n this.add(\n new PolymorpheusComponent(\n this.component,\n Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: POLYMORPHEUS_CONTEXT,\n useValue: {\n ...this.options,\n ...options,\n content,\n $implicit,\n createdAt: Date.now(),\n id: this.id.generate(),\n completeWith: (v: K extends void ? G : K): void => {\n $implicit.next(v);\n $implicit.complete();\n },\n } satisfies TuiPortalContext<T, K extends void ? G : K>,\n },\n ],\n }),\n ),\n ),\n );\n }\n\n protected add(component: PolymorpheusComponent<unknown>): () => void {\n const ref = this.service.add(component);\n\n return () => ref.destroy();\n }\n}\n\nexport function tuiAsPortal(portal: typeof TuiPortal<any>): Provider {\n return tuiProvide(TuiPortal, portal);\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {outputFromObservable, toObservable} from '@angular/core/rxjs-interop';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\nimport {endWith, ignoreElements, share} from 'rxjs';\n\nimport {TuiPortal, type TuiPortalContext} from './portal';\n\n@Directive()\nexport class TuiPortalDirective<T> extends PolymorpheusTemplate<TuiPortalContext<T>> {\n private readonly service = inject(TuiPortal<T>);\n\n public readonly options = input<Partial<T>>({});\n public readonly open = input(false);\n public readonly openChange = outputFromObservable(\n toObservable(this.open).pipe(\n tuiIfMap(() =>\n this.service\n .open(this, this.options())\n .pipe(ignoreElements(), endWith(false)),\n ),\n share(),\n ),\n );\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {\n type ComponentRef,\n type EmbeddedViewRef,\n Injectable,\n type TemplateRef,\n} from '@angular/core';\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {type TuiPortals} from './portals';\n\n@Injectable()\nexport abstract class TuiPortalService {\n protected host?: TuiPortals;\n\n public attach(host: TuiPortals): void {\n this.host = host;\n }\n\n public add<C>(content: PolymorpheusComponent<C>): ComponentRef<C>;\n public add<C>(content: TemplateRef<C>, context?: C): EmbeddedViewRef<C>;\n public add<C>(\n content: PolymorpheusComponent<C> | TemplateRef<C>,\n context?: C,\n ): ComponentRef<C> | EmbeddedViewRef<C> {\n if (!this.host) {\n throw new TuiNoHostException();\n }\n\n return content instanceof PolymorpheusComponent\n ? this.host.addComponent(content)\n : this.host.addTemplate(content, context);\n }\n}\n\nexport class TuiNoHostException extends Error {\n constructor() {\n super(\n ngDevMode\n ? 'Portals cannot be used without TuiPortals component; perhaps you forgot to wrap your application with tui-root.'\n : '',\n );\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {\n type ComponentRef,\n Directive,\n type EmbeddedViewRef,\n inject,\n INJECTOR,\n type TemplateRef,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\n// eslint-disable-next-line no-restricted-imports\nimport {POLYMORPHEUS_CONTEXT, type PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiPortalService} from './service';\n\n@Directive()\nexport abstract class TuiPortals {\n private readonly vcr = viewChild.required('vcr', {read: ViewContainerRef});\n private readonly injector = inject(INJECTOR);\n\n constructor() {\n inject(TuiPortalService).attach(this);\n }\n\n public addComponent<C>(component: PolymorpheusComponent<C>): ComponentRef<C> {\n // TODO: Remove after updating to polymorpheus v5\n const context = component['i'].get(POLYMORPHEUS_CONTEXT, {optional: true});\n const injector = component.createInjector(this.injector, context || undefined);\n const ref = this.vcr().createComponent(component.component, {injector});\n\n ref.changeDetectorRef.detectChanges();\n\n return ref;\n }\n\n public addTemplate<C>(templateRef: TemplateRef<C>, context?: C): EmbeddedViewRef<C> {\n return this.vcr().createEmbeddedView(templateRef, context);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,12 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, INJECTOR, NgZone, InjectionToken } from '@angular/core';
3
- import { tuiProvide } from '@taiga-ui/cdk/utils';
4
- import { PolymorpheusComponent } from '@taiga-ui/polymorpheus';
5
- import { Observable, of, defer, switchMap, map, takeUntil, timer, endWith, tap } from 'rxjs';
2
+ import { Injectable, inject, NgZone, InjectionToken } from '@angular/core';
6
3
  import { WA_PERFORMANCE, WA_ANIMATION_FRAME } from '@ng-web-apis/common';
7
4
  import { tuiZonefreeScheduler } from '@taiga-ui/cdk/observables';
8
5
  import { tuiClamp } from '@taiga-ui/cdk/utils/math';
9
6
  import { tuiEaseInOutQuad } from '@taiga-ui/cdk/utils/miscellaneous';
7
+ import { of, defer, switchMap, map, takeUntil, timer, endWith, tap } from 'rxjs';
10
8
  import { DOCUMENT } from '@angular/common';
11
9
  import { Meta } from '@angular/platform-browser';
12
10
 
@@ -28,44 +26,6 @@ function tuiInjectId() {
28
26
  return inject(TuiIdService).generate();
29
27
  }
30
28
 
31
- class TuiPopoverService {
32
- constructor(items, component, options = {}) {
33
- this.options = options;
34
- this.id = inject(TuiIdService);
35
- this.component = new PolymorpheusComponent(component, inject(INJECTOR));
36
- this.items$ = inject(items);
37
- }
38
- open(content, options = {}) {
39
- return new Observable((observer) => {
40
- const item = {
41
- ...this.options,
42
- ...options,
43
- content,
44
- $implicit: observer,
45
- component: this.component,
46
- createdAt: Date.now(),
47
- id: this.id.generate(),
48
- completeWith: (result) => {
49
- observer.next(result);
50
- observer.complete();
51
- },
52
- };
53
- this.items$.next([...this.items$.value, item]);
54
- return () => {
55
- this.items$.next(this.items$.value.filter((value) => value !== item));
56
- };
57
- });
58
- }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPopoverService, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
60
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPopoverService }); }
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPopoverService, decorators: [{
63
- type: Injectable
64
- }], ctorParameters: () => [{ type: undefined }, { type: undefined }, { type: undefined }] });
65
- function tuiAsPopover(popover) {
66
- return tuiProvide(TuiPopoverService, popover);
67
- }
68
-
69
29
  /// <reference types="@taiga-ui/tsconfig/ng-dev-mode" />
70
30
  const SCROLL_TIME = 300;
71
31
  function getX(elementOrWindow) {
@@ -147,5 +107,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
147
107
  * Generated bundle index. Do not edit.
148
108
  */
149
109
 
150
- export { TUI_THEME_COLOR, TuiIdService, TuiPopoverService, TuiScrollService, TuiThemeColorService, tuiAsPopover, tuiInjectId };
110
+ export { TUI_THEME_COLOR, TuiIdService, TuiScrollService, TuiThemeColorService, tuiInjectId };
151
111
  //# sourceMappingURL=taiga-ui-cdk-services.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-services.mjs","sources":["../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/popover.service.ts","../../../projects/cdk/services/scroll.service.ts","../../../projects/cdk/services/theme-color.service.ts","../../../projects/cdk/services/taiga-ui-cdk-services.ts"],"sourcesContent":["import {inject, Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiIdService {\n private static autoId = 0;\n\n public generate(): string {\n return `tui_${TuiIdService.autoId++}${Date.now()}`;\n }\n}\n\nexport function tuiInjectId(): string {\n return inject(TuiIdService).generate();\n}\n","import {\n inject,\n Injectable,\n INJECTOR,\n type Provider,\n type ProviderToken,\n type Type,\n} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils';\nimport {PolymorpheusComponent, type PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {type BehaviorSubject, Observable, type Observer} from 'rxjs';\n\nimport {TuiIdService} from './id.service';\n\nexport interface TuiPopoverContext<O> extends TuiContext<Observer<O>> {\n readonly component: PolymorpheusComponent<any>;\n readonly createdAt: number;\n readonly id: string;\n readonly completeWith: (value: O) => void;\n}\n\nexport type TuiPopover<T, O> = T &\n TuiPopoverContext<O> & {\n content: PolymorpheusContent<T & TuiPopoverContext<O>>;\n };\n\n@Injectable()\nexport abstract class TuiPopoverService<T, K = void> {\n private readonly component: PolymorpheusComponent<any>;\n private readonly id = inject(TuiIdService);\n\n protected readonly items$: BehaviorSubject<ReadonlyArray<TuiPopover<T, any>>>;\n\n constructor(\n items: ProviderToken<BehaviorSubject<ReadonlyArray<TuiPopover<T, any>>>>,\n component: Type<any>,\n protected readonly options: T = {} as T,\n ) {\n this.component = new PolymorpheusComponent(component, inject(INJECTOR));\n this.items$ = inject(items);\n }\n\n public open<G = void>(\n content: PolymorpheusContent<T & TuiPopoverContext<K extends void ? G : K>>,\n options: Partial<T> = {},\n ): Observable<K extends void ? G : K> {\n return new Observable((observer) => {\n const item = {\n ...this.options,\n ...options,\n content,\n $implicit: observer,\n component: this.component,\n createdAt: Date.now(),\n id: this.id.generate(),\n completeWith: (result: K extends void ? G : K): void => {\n observer.next(result);\n observer.complete();\n },\n };\n\n this.items$.next([...this.items$.value, item]);\n\n return () => {\n this.items$.next(this.items$.value.filter((value) => value !== item));\n };\n });\n }\n}\n\nexport function tuiAsPopover(popover: Type<TuiPopoverService<any>>): Provider {\n return tuiProvide(TuiPopoverService, popover);\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {inject, Injectable, NgZone} from '@angular/core';\nimport {WA_ANIMATION_FRAME, WA_PERFORMANCE} from '@ng-web-apis/common';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiEaseInOutQuad} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n defer,\n endWith,\n map,\n type Observable,\n of,\n switchMap,\n takeUntil,\n tap,\n timer,\n} from 'rxjs';\n\nconst SCROLL_TIME = 300;\n\nfunction getX(elementOrWindow: Element | Window): number {\n return 'scrollX' in elementOrWindow\n ? elementOrWindow.scrollX\n : elementOrWindow.scrollLeft;\n}\n\nfunction getY(elementOrWindow: Element | Window): number {\n return 'scrollY' in elementOrWindow\n ? elementOrWindow.scrollY\n : elementOrWindow.scrollTop;\n}\n\n/**\n * @deprecated: use native scroll\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiScrollService {\n private readonly performanceRef = inject(WA_PERFORMANCE);\n private readonly animationFrame$ = inject(WA_ANIMATION_FRAME);\n private readonly zone = inject(NgZone);\n\n public scroll$(\n elementOrWindow: Element | Window,\n scrollTop: number,\n scrollLeft: number = getX(elementOrWindow),\n duration: number = SCROLL_TIME,\n ): Observable<[number, number]> {\n ngDevMode && console.assert(duration >= 0, 'duration cannot be negative');\n ngDevMode && console.assert(scrollTop >= 0, 'scrollTop cannot be negative');\n ngDevMode && console.assert(scrollLeft >= 0, 'scrollLeft cannot be negative');\n\n const initialTop = getY(elementOrWindow);\n const initialLeft = getX(elementOrWindow);\n const deltaTop = scrollTop - initialTop;\n const deltaLeft = scrollLeft - initialLeft;\n const observable = !duration\n ? of<[number, number]>([scrollTop, scrollLeft])\n : defer(() => of(this.performanceRef.now())).pipe(\n switchMap((start) =>\n this.animationFrame$.pipe(map((now) => now - start)),\n ),\n map((elapsed) => tuiEaseInOutQuad(tuiClamp(elapsed / duration, 0, 1))),\n map<number, [number, number]>((percent) => [\n initialTop + deltaTop * percent,\n initialLeft + deltaLeft * percent,\n ]),\n takeUntil(timer(duration, tuiZonefreeScheduler(this.zone))),\n endWith<[number, number]>([scrollTop, scrollLeft]),\n );\n\n return observable.pipe(\n tap(([scrollTop, scrollLeft]) => {\n elementOrWindow.scrollTo?.(scrollLeft, scrollTop);\n }),\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable, InjectionToken} from '@angular/core';\nimport {Meta} from '@angular/platform-browser';\n\nexport const TUI_THEME_COLOR = new InjectionToken<string>(\n ngDevMode ? 'TUI_THEME_COLOR' : '',\n {\n factory: () => inject(Meta).getTag('name=\"theme-color\"')?.content ?? '',\n },\n);\n\ninterface TuiThemeColor {\n get color(): string;\n set color(value: string);\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiThemeColorService implements TuiThemeColor {\n private current = inject(TUI_THEME_COLOR);\n private readonly doc = inject(DOCUMENT);\n private readonly meta = inject(Meta);\n\n constructor() {\n this.color = this.current;\n }\n\n public get color(): string {\n return this.current;\n }\n\n public set color(content: string) {\n this.current = content;\n this.meta.updateTag({name: 'theme-color', content});\n this.doc.documentElement.style.setProperty('--tui-theme-color', content);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-services.mjs","sources":["../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/scroll.service.ts","../../../projects/cdk/services/theme-color.service.ts","../../../projects/cdk/services/taiga-ui-cdk-services.ts"],"sourcesContent":["import {inject, Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiIdService {\n private static autoId = 0;\n\n public generate(): string {\n return `tui_${TuiIdService.autoId++}${Date.now()}`;\n }\n}\n\nexport function tuiInjectId(): string {\n return inject(TuiIdService).generate();\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {inject, Injectable, NgZone} from '@angular/core';\nimport {WA_ANIMATION_FRAME, WA_PERFORMANCE} from '@ng-web-apis/common';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiEaseInOutQuad} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n defer,\n endWith,\n map,\n type Observable,\n of,\n switchMap,\n takeUntil,\n tap,\n timer,\n} from 'rxjs';\n\nconst SCROLL_TIME = 300;\n\nfunction getX(elementOrWindow: Element | Window): number {\n return 'scrollX' in elementOrWindow\n ? elementOrWindow.scrollX\n : elementOrWindow.scrollLeft;\n}\n\nfunction getY(elementOrWindow: Element | Window): number {\n return 'scrollY' in elementOrWindow\n ? elementOrWindow.scrollY\n : elementOrWindow.scrollTop;\n}\n\n/**\n * @deprecated: use native scroll\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiScrollService {\n private readonly performanceRef = inject(WA_PERFORMANCE);\n private readonly animationFrame$ = inject(WA_ANIMATION_FRAME);\n private readonly zone = inject(NgZone);\n\n public scroll$(\n elementOrWindow: Element | Window,\n scrollTop: number,\n scrollLeft: number = getX(elementOrWindow),\n duration: number = SCROLL_TIME,\n ): Observable<[number, number]> {\n ngDevMode && console.assert(duration >= 0, 'duration cannot be negative');\n ngDevMode && console.assert(scrollTop >= 0, 'scrollTop cannot be negative');\n ngDevMode && console.assert(scrollLeft >= 0, 'scrollLeft cannot be negative');\n\n const initialTop = getY(elementOrWindow);\n const initialLeft = getX(elementOrWindow);\n const deltaTop = scrollTop - initialTop;\n const deltaLeft = scrollLeft - initialLeft;\n const observable = !duration\n ? of<[number, number]>([scrollTop, scrollLeft])\n : defer(() => of(this.performanceRef.now())).pipe(\n switchMap((start) =>\n this.animationFrame$.pipe(map((now) => now - start)),\n ),\n map((elapsed) => tuiEaseInOutQuad(tuiClamp(elapsed / duration, 0, 1))),\n map<number, [number, number]>((percent) => [\n initialTop + deltaTop * percent,\n initialLeft + deltaLeft * percent,\n ]),\n takeUntil(timer(duration, tuiZonefreeScheduler(this.zone))),\n endWith<[number, number]>([scrollTop, scrollLeft]),\n );\n\n return observable.pipe(\n tap(([scrollTop, scrollLeft]) => {\n elementOrWindow.scrollTo?.(scrollLeft, scrollTop);\n }),\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable, InjectionToken} from '@angular/core';\nimport {Meta} from '@angular/platform-browser';\n\nexport const TUI_THEME_COLOR = new InjectionToken<string>(\n ngDevMode ? 'TUI_THEME_COLOR' : '',\n {\n factory: () => inject(Meta).getTag('name=\"theme-color\"')?.content ?? '',\n },\n);\n\ninterface TuiThemeColor {\n get color(): string;\n set color(value: string);\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiThemeColorService implements TuiThemeColor {\n private current = inject(TUI_THEME_COLOR);\n private readonly doc = inject(DOCUMENT);\n private readonly meta = inject(Meta);\n\n constructor() {\n this.color = this.current;\n }\n\n public get color(): string {\n return this.current;\n }\n\n public set color(content: string) {\n this.current = content;\n this.meta.updateTag({name: 'theme-color', content});\n this.doc.documentElement.style.setProperty('--tui-theme-color', content);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
2
2
  import { InjectionToken, inject, NgZone, PLATFORM_ID } from '@angular/core';
3
3
  import { WA_WINDOW, WA_USER_AGENT, WA_NAVIGATOR } from '@ng-web-apis/common';
4
4
  import { tuiTypedFromEvent, tuiZonefreeScheduler } from '@taiga-ui/cdk/observables';
5
- import { tuiIsNativeMouseFocusable, tuiGetDocumentOrShadowRoot, tuiGetActualTarget } from '@taiga-ui/cdk/utils';
5
+ import { tuiIsMouseFocusable, tuiGetDocumentOrShadowRoot, tuiGetActualTarget } from '@taiga-ui/cdk/utils';
6
6
  import { Subject, startWith, switchMap, timer, map, share, merge, filter, takeUntil, repeat, withLatestFrom, of, take, distinctUntilChanged, fromEvent, shareReplay } from 'rxjs';
7
7
  import { ɵAnimationEngine as _AnimationEngine } from '@angular/animations/browser';
8
8
  import { toSignal } from '@angular/core/rxjs-interop';
@@ -36,7 +36,7 @@ function isValidFocusout(target, removedElement = null) {
36
36
  // Not due to element being removed from DOM
37
37
  !removedElement?.contains(target) &&
38
38
  // Not due to scrollable element became non-scrollable
39
- tuiIsNativeMouseFocusable(target));
39
+ tuiIsMouseFocusable(target));
40
40
  }
41
41
  function shadowRootActiveElement(root) {
42
42
  return merge(tuiTypedFromEvent(root, 'focusin').pipe(map(({ target }) => target)), tuiTypedFromEvent(root, 'focusout').pipe(filter(({ target, relatedTarget }) => !!relatedTarget && isValidFocusout(target)), map(({ relatedTarget }) => relatedTarget)));
@@ -79,12 +79,13 @@ const TUI_BASE_HREF = new InjectionToken(ngDevMode ? 'TUI_BASE_HREF' : '', {
79
79
  factory: () => inject(DOCUMENT).querySelector('base')?.href ?? '',
80
80
  });
81
81
 
82
- // https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/
83
- const firstRegex = /(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([46])0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/;
84
- const secondRegex = /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([ev])w|bumb|bw-([nu])|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do([cp])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-([mpt])|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c([- _agpst])|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac([ \-/])|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja([tv])a|jbro|jemu|jigs|kddi|keji|kgt([ /])|klon|kpt |kwc-|kyo([ck])|le(no|xi)|lg( g|\/([klu])|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([- ov])|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30([02])|n50([025])|n7(0([01])|10)|ne(([cm])-|on|tf|wf|wg|wt)|nok([6i])|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan([adt])|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([-01])|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([im])|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-/;
82
+ /**
83
+ * Unified mobile detection regex.
84
+ * https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/
85
+ */
86
+ const TUI_MOBILE_REGEXP = /(?: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([46])0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|^(?: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([ev])w|bumb|bw-([nu])|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do([cp])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-([mpt])|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c([- _agpst])|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac([ \-/])|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja([tv])a|jbro|jemu|jigs|kddi|keji|kgt([ /])|klon|kpt |kwc-|kyo([ck])|le(no|xi)|lg( g|\/([klu])|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([- ov])|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30([02])|n50([025])|n7(0([01])|10)|ne(([cm])-|on|tf|wf|wg|wt)|nok([6i])|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan([adt])|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([-01])|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([im])|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-)/i;
85
87
  const TUI_IS_MOBILE = new InjectionToken(ngDevMode ? 'TUI_IS_MOBILE' : '', {
86
- factory: () => firstRegex.test(inject(WA_USER_AGENT).toLowerCase()) ||
87
- secondRegex.test(inject(WA_USER_AGENT).slice(0, 4).toLowerCase()),
88
+ factory: () => TUI_MOBILE_REGEXP.test(inject(WA_USER_AGENT)),
88
89
  });
89
90
  const TUI_IS_IOS = new InjectionToken(ngDevMode ? 'TUI_IS_IOS' : '', {
90
91
  factory: () => isIos(inject(WA_NAVIGATOR)),
@@ -182,5 +183,5 @@ const TUI_WINDOW_SIZE = new InjectionToken(ngDevMode ? 'TUI_WINDOW_SIZE' : '', {
182
183
  * Generated bundle index. Do not edit.
183
184
  */
184
185
 
185
- export { TUI_ACTIVE_ELEMENT, TUI_BASE_HREF, TUI_FALLBACK_VALUE, TUI_IS_ANDROID, TUI_IS_CYPRESS, TUI_IS_E2E, TUI_IS_IOS, TUI_IS_MOBILE, TUI_IS_PLAYWRIGHT, TUI_IS_TOUCH, TUI_IS_WEBKIT, TUI_PLATFORM, TUI_RANGE, TUI_REMOVED_ELEMENT, TUI_WINDOW_SIZE, tuiFallbackValueProvider };
186
+ export { TUI_ACTIVE_ELEMENT, TUI_BASE_HREF, TUI_FALLBACK_VALUE, TUI_IS_ANDROID, TUI_IS_CYPRESS, TUI_IS_E2E, TUI_IS_IOS, TUI_IS_MOBILE, TUI_IS_PLAYWRIGHT, TUI_IS_TOUCH, TUI_IS_WEBKIT, TUI_MOBILE_REGEXP, TUI_PLATFORM, TUI_RANGE, TUI_REMOVED_ELEMENT, TUI_WINDOW_SIZE, tuiFallbackValueProvider };
186
187
  //# sourceMappingURL=taiga-ui-cdk-tokens.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-tokens.mjs","sources":["../../../projects/cdk/tokens/removed-element.ts","../../../projects/cdk/tokens/active-element.ts","../../../projects/cdk/tokens/base-href.ts","../../../projects/cdk/tokens/environment.ts","../../../projects/cdk/tokens/fallback-value.ts","../../../projects/cdk/tokens/range.ts","../../../projects/cdk/tokens/window-size.ts","../../../projects/cdk/tokens/taiga-ui-cdk-tokens.ts"],"sourcesContent":["import {ɵAnimationEngine as AnimationEngine} from '@angular/animations/browser';\nimport {inject, InjectionToken} from '@angular/core';\nimport {map, share, startWith, Subject, switchMap, timer} from 'rxjs';\n\n/**\n * Element currently being removed by AnimationEngine\n */\nexport const TUI_REMOVED_ELEMENT = new InjectionToken(\n ngDevMode ? 'TUI_REMOVED_ELEMENT' : '',\n {\n factory: () => {\n const stub = {onRemovalComplete: () => {}};\n const element$ = new Subject<Element | null>();\n const engine = inject(AnimationEngine, {optional: true}) || 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 startWith(null),\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, NgZone} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {\n tuiGetActualTarget,\n tuiGetDocumentOrShadowRoot,\n tuiIsNativeMouseFocusable,\n} from '@taiga-ui/cdk/utils';\nimport {\n distinctUntilChanged,\n filter,\n map,\n merge,\n type Observable,\n of,\n repeat,\n share,\n startWith,\n switchMap,\n take,\n takeUntil,\n timer,\n withLatestFrom,\n} from 'rxjs';\n\nimport {TUI_REMOVED_ELEMENT} from './removed-element';\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 // Not due to scrollable element became non-scrollable\n tuiIsNativeMouseFocusable(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\n/**\n * Active element on the document for ActiveZone\n */\nexport const TUI_ACTIVE_ELEMENT = new InjectionToken<Observable<EventTarget | null>>(\n ngDevMode ? 'TUI_ACTIVE_ELEMENT' : '',\n {\n factory: () => {\n const removedElement$ = inject(TUI_REMOVED_ELEMENT);\n const win = inject(WA_WINDOW);\n const doc = inject(DOCUMENT);\n const zone = inject(NgZone);\n const focusout$ = tuiTypedFromEvent(win, 'focusout', {capture: true});\n const focusin$ = tuiTypedFromEvent(win, 'focusin', {capture: true});\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 takeUntil(mousedown$),\n repeat({delay: () => 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) || doc;\n\n return root === doc\n ? of(target)\n : shadowRootActiveElement(root as Document).pipe(\n startWith(target),\n );\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, tuiZonefreeScheduler(zone))),\n );\n }),\n ),\n ).pipe(distinctUntilChanged(), share());\n },\n },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\n\nexport const TUI_BASE_HREF = new InjectionToken(ngDevMode ? 'TUI_BASE_HREF' : '', {\n factory: () => inject(DOCUMENT).querySelector('base')?.href ?? '',\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {WA_NAVIGATOR, WA_USER_AGENT, WA_WINDOW} from '@ng-web-apis/common';\nimport {isIos} from '@ng-web-apis/platform';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {fromEvent, map} from 'rxjs';\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([46])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([ev])w|bumb|bw-([nu])|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do([cp])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-([mpt])|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c([- _agpst])|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac([ \\-/])|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja([tv])a|jbro|jemu|jigs|kddi|keji|kgt([ /])|klon|kpt |kwc-|kyo([ck])|le(no|xi)|lg( g|\\/([klu])|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([- ov])|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30([02])|n50([025])|n7(0([01])|10)|ne(([cm])-|on|tf|wf|wg|wt)|nok([6i])|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan([adt])|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([-01])|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([im])|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\nexport const TUI_IS_MOBILE = new InjectionToken(ngDevMode ? 'TUI_IS_MOBILE' : '', {\n factory: () =>\n firstRegex.test(inject(WA_USER_AGENT).toLowerCase()) ||\n secondRegex.test(inject(WA_USER_AGENT).slice(0, 4).toLowerCase()),\n});\n\nexport const TUI_IS_IOS = new InjectionToken(ngDevMode ? 'TUI_IS_IOS' : '', {\n factory: () => isIos(inject(WA_NAVIGATOR)),\n});\n\nexport const TUI_IS_ANDROID = new InjectionToken(ngDevMode ? 'TUI_IS_ANDROID' : '', {\n factory: () => inject(TUI_IS_MOBILE) && !inject(TUI_IS_IOS),\n});\n\nexport const TUI_IS_WEBKIT = new InjectionToken(ngDevMode ? 'TUI_IS_WEBKIT' : '', {\n factory: () => !!inject<any>(WA_WINDOW)?.webkitConvertPointFromNodeToPage,\n});\n\nexport const TUI_PLATFORM = new InjectionToken<'android' | 'ios' | 'web'>(\n ngDevMode ? 'TUI_PLATFORM' : '',\n {\n factory: () => {\n if (inject(TUI_IS_IOS)) {\n return 'ios';\n }\n\n return inject(TUI_IS_ANDROID) ? 'android' : 'web';\n },\n },\n);\n\nexport const TUI_IS_TOUCH = new InjectionToken(ngDevMode ? 'TUI_IS_TOUCH' : '', {\n factory: () => {\n const media = inject(WA_WINDOW).matchMedia('(pointer: coarse)');\n\n return toSignal(fromEvent(media, 'change').pipe(map(() => media.matches)), {\n initialValue: media.matches,\n });\n },\n});\n\n/**\n * @deprecated: use only {@link TUI_IS_E2E}\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 * TODO: remove in v5\n */\nexport const TUI_IS_CYPRESS = new InjectionToken(ngDevMode ? 'TUI_IS_CYPRESS' : '', {\n factory: () => !!inject<any>(WA_WINDOW).Cypress,\n});\n\n/**\n * @deprecated: use only {@link TUI_IS_E2E}\n * Manually provide `true` when running tests in Playwright\n * TODO: remove in v5\n */\nexport const TUI_IS_PLAYWRIGHT = new InjectionToken<boolean>(\n ngDevMode ? 'TUI_IS_PLAYWRIGHT' : '',\n {\n factory: TUI_FALSE_HANDLER,\n },\n);\n\n/**\n * Detect if app is running under any of test frameworks\n */\nexport const TUI_IS_E2E = new InjectionToken(ngDevMode ? 'TUI_IS_E2E' : '', {\n factory: () =>\n inject(TUI_IS_CYPRESS) ||\n inject(TUI_IS_PLAYWRIGHT) ||\n inject(WA_NAVIGATOR).webdriver,\n});\n","import {InjectionToken, type ValueProvider} from '@angular/core';\n\nexport const TUI_FALLBACK_VALUE = new InjectionToken<any>(\n ngDevMode ? 'TUI_FALLBACK_VALUE' : '',\n {\n factory: () => null,\n },\n);\n\nexport function tuiFallbackValueProvider<T>(useValue: T): ValueProvider {\n return {\n provide: TUI_FALLBACK_VALUE,\n useValue,\n };\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(ngDevMode ? 'TUI_RANGE' : '', {\n factory: () =>\n isPlatformBrowser(inject(PLATFORM_ID)) ? new Range() : ({} as unknown as Range),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {map, type Observable, shareReplay, startWith} from 'rxjs';\n\nexport const TUI_WINDOW_SIZE = new InjectionToken<Observable<DOMRect>>(\n ngDevMode ? 'TUI_WINDOW_SIZE' : '',\n {\n factory: () => {\n const w = inject(WA_WINDOW);\n\n return tuiTypedFromEvent(w, 'resize').pipe(\n startWith(null),\n map(() => {\n const width = Math.max(\n w.document.documentElement.clientWidth || 0,\n w.innerWidth || 0,\n w.visualViewport?.width || 0,\n );\n const height = Math.max(\n w.document.documentElement.clientHeight || 0,\n w.innerHeight || 0,\n w.visualViewport?.height || 0,\n );\n const rect = {\n width,\n height,\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n x: 0,\n y: 0,\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect),\n };\n }),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n },\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.mjs","sources":["../../../projects/cdk/tokens/removed-element.ts","../../../projects/cdk/tokens/active-element.ts","../../../projects/cdk/tokens/base-href.ts","../../../projects/cdk/tokens/environment.ts","../../../projects/cdk/tokens/fallback-value.ts","../../../projects/cdk/tokens/range.ts","../../../projects/cdk/tokens/window-size.ts","../../../projects/cdk/tokens/taiga-ui-cdk-tokens.ts"],"sourcesContent":["import {ɵAnimationEngine as AnimationEngine} from '@angular/animations/browser';\nimport {inject, InjectionToken} from '@angular/core';\nimport {map, share, startWith, Subject, switchMap, timer} from 'rxjs';\n\n/**\n * Element currently being removed by AnimationEngine\n */\nexport const TUI_REMOVED_ELEMENT = new InjectionToken(\n ngDevMode ? 'TUI_REMOVED_ELEMENT' : '',\n {\n factory: () => {\n const stub = {onRemovalComplete: () => {}};\n const element$ = new Subject<Element | null>();\n const engine = inject(AnimationEngine, {optional: true}) || 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 startWith(null),\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, NgZone} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {\n tuiGetActualTarget,\n tuiGetDocumentOrShadowRoot,\n tuiIsMouseFocusable,\n} from '@taiga-ui/cdk/utils';\nimport {\n distinctUntilChanged,\n filter,\n map,\n merge,\n type Observable,\n of,\n repeat,\n share,\n startWith,\n switchMap,\n take,\n takeUntil,\n timer,\n withLatestFrom,\n} from 'rxjs';\n\nimport {TUI_REMOVED_ELEMENT} from './removed-element';\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 // Not due to scrollable element became non-scrollable\n tuiIsMouseFocusable(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\n/**\n * Active element on the document for ActiveZone\n */\nexport const TUI_ACTIVE_ELEMENT = new InjectionToken<Observable<EventTarget | null>>(\n ngDevMode ? 'TUI_ACTIVE_ELEMENT' : '',\n {\n factory: () => {\n const removedElement$ = inject(TUI_REMOVED_ELEMENT);\n const win = inject(WA_WINDOW);\n const doc = inject(DOCUMENT);\n const zone = inject(NgZone);\n const focusout$ = tuiTypedFromEvent(win, 'focusout', {capture: true});\n const focusin$ = tuiTypedFromEvent(win, 'focusin', {capture: true});\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 takeUntil(mousedown$),\n repeat({delay: () => 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) || doc;\n\n return root === doc\n ? of(target)\n : shadowRootActiveElement(root as Document).pipe(\n startWith(target),\n );\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, tuiZonefreeScheduler(zone))),\n );\n }),\n ),\n ).pipe(distinctUntilChanged(), share());\n },\n },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\n\nexport const TUI_BASE_HREF = new InjectionToken(ngDevMode ? 'TUI_BASE_HREF' : '', {\n factory: () => inject(DOCUMENT).querySelector('base')?.href ?? '',\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {WA_NAVIGATOR, WA_USER_AGENT, WA_WINDOW} from '@ng-web-apis/common';\nimport {isIos} from '@ng-web-apis/platform';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {fromEvent, map} from 'rxjs';\n\n/**\n * Unified mobile detection regex.\n * https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/\n */\nexport const TUI_MOBILE_REGEXP =\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([46])0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|^(?: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([ev])w|bumb|bw-([nu])|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do([cp])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-([mpt])|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c([- _agpst])|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac([ \\-/])|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja([tv])a|jbro|jemu|jigs|kddi|keji|kgt([ /])|klon|kpt |kwc-|kyo([ck])|le(no|xi)|lg( g|\\/([klu])|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([- ov])|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30([02])|n50([025])|n7(0([01])|10)|ne(([cm])-|on|tf|wf|wg|wt)|nok([6i])|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan([adt])|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([-01])|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([im])|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-)/i;\n\nexport const TUI_IS_MOBILE = new InjectionToken(ngDevMode ? 'TUI_IS_MOBILE' : '', {\n factory: () => TUI_MOBILE_REGEXP.test(inject(WA_USER_AGENT)),\n});\n\nexport const TUI_IS_IOS = new InjectionToken(ngDevMode ? 'TUI_IS_IOS' : '', {\n factory: () => isIos(inject(WA_NAVIGATOR)),\n});\n\nexport const TUI_IS_ANDROID = new InjectionToken(ngDevMode ? 'TUI_IS_ANDROID' : '', {\n factory: () => inject(TUI_IS_MOBILE) && !inject(TUI_IS_IOS),\n});\n\nexport const TUI_IS_WEBKIT = new InjectionToken(ngDevMode ? 'TUI_IS_WEBKIT' : '', {\n factory: () => !!inject<any>(WA_WINDOW)?.webkitConvertPointFromNodeToPage,\n});\n\nexport const TUI_PLATFORM = new InjectionToken<'android' | 'ios' | 'web'>(\n ngDevMode ? 'TUI_PLATFORM' : '',\n {\n factory: () => {\n if (inject(TUI_IS_IOS)) {\n return 'ios';\n }\n\n return inject(TUI_IS_ANDROID) ? 'android' : 'web';\n },\n },\n);\n\nexport const TUI_IS_TOUCH = new InjectionToken(ngDevMode ? 'TUI_IS_TOUCH' : '', {\n factory: () => {\n const media = inject(WA_WINDOW).matchMedia('(pointer: coarse)');\n\n return toSignal(fromEvent(media, 'change').pipe(map(() => media.matches)), {\n initialValue: media.matches,\n });\n },\n});\n\n/**\n * @deprecated: use only {@link TUI_IS_E2E}\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 * TODO: remove in v5\n */\nexport const TUI_IS_CYPRESS = new InjectionToken(ngDevMode ? 'TUI_IS_CYPRESS' : '', {\n factory: () => !!inject<any>(WA_WINDOW).Cypress,\n});\n\n/**\n * @deprecated: use only {@link TUI_IS_E2E}\n * Manually provide `true` when running tests in Playwright\n * TODO: remove in v5\n */\nexport const TUI_IS_PLAYWRIGHT = new InjectionToken<boolean>(\n ngDevMode ? 'TUI_IS_PLAYWRIGHT' : '',\n {\n factory: TUI_FALSE_HANDLER,\n },\n);\n\n/**\n * Detect if app is running under any of test frameworks\n */\nexport const TUI_IS_E2E = new InjectionToken(ngDevMode ? 'TUI_IS_E2E' : '', {\n factory: () =>\n inject(TUI_IS_CYPRESS) ||\n inject(TUI_IS_PLAYWRIGHT) ||\n inject(WA_NAVIGATOR).webdriver,\n});\n","import {InjectionToken, type ValueProvider} from '@angular/core';\n\nexport const TUI_FALLBACK_VALUE = new InjectionToken<any>(\n ngDevMode ? 'TUI_FALLBACK_VALUE' : '',\n {\n factory: () => null,\n },\n);\n\nexport function tuiFallbackValueProvider<T>(useValue: T): ValueProvider {\n return {\n provide: TUI_FALLBACK_VALUE,\n useValue,\n };\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(ngDevMode ? 'TUI_RANGE' : '', {\n factory: () =>\n isPlatformBrowser(inject(PLATFORM_ID)) ? new Range() : ({} as unknown as Range),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {map, type Observable, shareReplay, startWith} from 'rxjs';\n\nexport const TUI_WINDOW_SIZE = new InjectionToken<Observable<DOMRect>>(\n ngDevMode ? 'TUI_WINDOW_SIZE' : '',\n {\n factory: () => {\n const w = inject(WA_WINDOW);\n\n return tuiTypedFromEvent(w, 'resize').pipe(\n startWith(null),\n map(() => {\n const width = Math.max(\n w.document.documentElement.clientWidth || 0,\n w.innerWidth || 0,\n w.visualViewport?.width || 0,\n );\n const height = Math.max(\n w.document.documentElement.clientHeight || 0,\n w.innerHeight || 0,\n w.visualViewport?.height || 0,\n );\n const rect = {\n width,\n height,\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n x: 0,\n y: 0,\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect),\n };\n }),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n },\n },\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["AnimationEngine"],"mappings":"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"}
@@ -1,19 +1,3 @@
1
- import { isIos } from '@ng-web-apis/platform';
2
-
3
- /**
4
- * @description:
5
- * All Chrome / Chromium-based browsers will return MacIntel on macOS,
6
- * no matter what the hardware architecture is. See the source code here:
7
- * https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/frame/navigator_id.cc;l=64;drc=703d3c472cf27470dad21a3f2c8972aca3732cd6
8
- * But maybe in future years, it will be changed to MacM1
9
- *
10
- * Documentation:
11
- * https://developer.mozilla.org/en-US/docs/Web/API/Navigator/platform
12
- */
13
- function tuiIsApple(navigator) {
14
- return navigator.platform.startsWith('Mac') || navigator.platform === 'iPhone';
15
- }
16
-
17
1
  function tuiIsEdge(userAgent) {
18
2
  return userAgent.toLowerCase().includes('edge');
19
3
  }
@@ -22,12 +6,6 @@ function tuiIsFirefox(userAgent) {
22
6
  return userAgent.toLowerCase().includes('firefox');
23
7
  }
24
8
 
25
- /**
26
- * @deprecated: drop in v5, use import {isApple} from '@ng-web-apis/platform';
27
- * @param navigator
28
- */
29
- const tuiIsIos = isIos;
30
-
31
9
  // TODO: Drop change to Document in v5
32
10
  function tuiIsSafari({ ownerDocument: doc }) {
33
11
  const win = doc?.defaultView;
@@ -44,5 +22,5 @@ function tuiIsSafari({ ownerDocument: doc }) {
44
22
  * Generated bundle index. Do not edit.
45
23
  */
46
24
 
47
- export { tuiIsApple, tuiIsEdge, tuiIsFirefox, tuiIsIos, tuiIsSafari };
25
+ export { tuiIsEdge, tuiIsFirefox, tuiIsSafari };
48
26
  //# sourceMappingURL=taiga-ui-cdk-utils-browser.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-browser.mjs","sources":["../../../projects/cdk/utils/browser/is-apple.ts","../../../projects/cdk/utils/browser/is-edge.ts","../../../projects/cdk/utils/browser/is-firefox.ts","../../../projects/cdk/utils/browser/is-ios.ts","../../../projects/cdk/utils/browser/is-safari.ts","../../../projects/cdk/utils/browser/taiga-ui-cdk-utils-browser.ts"],"sourcesContent":["/**\n * @description:\n * All Chrome / Chromium-based browsers will return MacIntel on macOS,\n * no matter what the hardware architecture is. See the source code here:\n * https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/frame/navigator_id.cc;l=64;drc=703d3c472cf27470dad21a3f2c8972aca3732cd6\n * But maybe in future years, it will be changed to MacM1\n *\n * Documentation:\n * https://developer.mozilla.org/en-US/docs/Web/API/Navigator/platform\n */\nexport function tuiIsApple(navigator: Navigator): boolean {\n return navigator.platform.startsWith('Mac') || navigator.platform === 'iPhone';\n}\n","export function tuiIsEdge(userAgent: string): boolean {\n return userAgent.toLowerCase().includes('edge');\n}\n","export function tuiIsFirefox(userAgent: string): boolean {\n return userAgent.toLowerCase().includes('firefox');\n}\n","import {isIos} from '@ng-web-apis/platform';\n\n/**\n * @deprecated: drop in v5, use import {isApple} from '@ng-web-apis/platform';\n * @param navigator\n */\nexport const tuiIsIos = isIos;\n","// TODO: Drop change to Document in v5\nexport function tuiIsSafari({ownerDocument: doc}: Element): boolean {\n const win = doc?.defaultView as unknown as Window & {safari?: any};\n\n const isMacOsSafari =\n win.safari !== undefined &&\n win.safari?.pushNotification?.toString() === '[object SafariRemoteNotification]';\n\n const isIosSafari =\n (win.navigator?.vendor?.includes('Apple') &&\n !win.navigator?.userAgent?.includes('CriOS') &&\n !win.navigator?.userAgent?.includes('FxiOS')) ??\n false;\n\n return isMacOsSafari || isIosSafari;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;;;;;;;;;AASG;AACG,SAAU,UAAU,CAAC,SAAoB,EAAA;AAC3C,IAAA,OAAO,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ;AAClF;;ACZM,SAAU,SAAS,CAAC,SAAiB,EAAA;IACvC,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnD;;ACFM,SAAU,YAAY,CAAC,SAAiB,EAAA;IAC1C,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtD;;ACAA;;;AAGG;AACI,MAAM,QAAQ,GAAG;;ACNxB;SACgB,WAAW,CAAC,EAAC,aAAa,EAAE,GAAG,EAAU,EAAA;AACrD,IAAA,MAAM,GAAG,GAAG,GAAG,EAAE,WAAiD;AAElE,IAAA,MAAM,aAAa,GACf,GAAG,CAAC,MAAM,KAAK,SAAS;QACxB,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,mCAAmC;AAEpF,IAAA,MAAM,WAAW,GACb,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC;QACrC,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;QAC5C,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;AAChD,QAAA,KAAK;IAET,OAAO,aAAa,IAAI,WAAW;AACvC;;ACfA;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-utils-browser.mjs","sources":["../../../projects/cdk/utils/browser/is-edge.ts","../../../projects/cdk/utils/browser/is-firefox.ts","../../../projects/cdk/utils/browser/is-safari.ts","../../../projects/cdk/utils/browser/taiga-ui-cdk-utils-browser.ts"],"sourcesContent":["export function tuiIsEdge(userAgent: string): boolean {\n return userAgent.toLowerCase().includes('edge');\n}\n","export function tuiIsFirefox(userAgent: string): boolean {\n return userAgent.toLowerCase().includes('firefox');\n}\n","// TODO: Drop change to Document in v5\nexport function tuiIsSafari({ownerDocument: doc}: Element): boolean {\n const win = doc?.defaultView as unknown as Window & {safari?: any};\n\n const isMacOsSafari =\n win.safari !== undefined &&\n win.safari?.pushNotification?.toString() === '[object SafariRemoteNotification]';\n\n const isIosSafari =\n (win.navigator?.vendor?.includes('Apple') &&\n !win.navigator?.userAgent?.includes('CriOS') &&\n !win.navigator?.userAgent?.includes('FxiOS')) ??\n false;\n\n return isMacOsSafari || isIosSafari;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAM,SAAU,SAAS,CAAC,SAAiB,EAAA;IACvC,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnD;;ACFM,SAAU,YAAY,CAAC,SAAiB,EAAA;IAC1C,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtD;;ACFA;SACgB,WAAW,CAAC,EAAC,aAAa,EAAE,GAAG,EAAU,EAAA;AACrD,IAAA,MAAM,GAAG,GAAG,GAAG,EAAE,WAAiD;AAElE,IAAA,MAAM,aAAa,GACf,GAAG,CAAC,MAAM,KAAK,SAAS;QACxB,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,mCAAmC;AAEpF,IAAA,MAAM,WAAW,GACb,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC;QACrC,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;QAC5C,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;AAChD,QAAA,KAAK;IAET,OAAO,aAAa,IAAI,WAAW;AACvC;;ACfA;;AAEG;;;;"}
@@ -164,6 +164,7 @@ function tuiRgbToHsv(r, g, b) {
164
164
  return [60 * (h < 0 ? h + 6 : h), v && n / v, v];
165
165
  }
166
166
 
167
+ /* eslint-disable no-bitwise */
167
168
  function tuiRgbaToHex(color) {
168
169
  if (!tuiIsValidRgba(color)) {
169
170
  throw new Error('Invalid RGBa');
@@ -184,7 +185,7 @@ function tuiRgbaToHex(color) {
184
185
  function tuiIsValidRgba(rgba) {
185
186
  const range = String.raw `(\d|[1-9]\d|1\d{2}|2[0-4]\d|2[0-5]{2})`;
186
187
  const alpha = String.raw `([01]|0?\.\d+)`;
187
- return new RegExp(`^(?:rgb\\(\\s*${range}\\s*,\\s*${range}\\s*,\\s*${range}\\s*\\)|rgba\\(\\s*${range}\\s*,\\s*${range}\\s*,\\s*${range}\\s*,\\s*${alpha}\\s*\\))$`).test(rgba);
188
+ return new RegExp(String.raw `^(?: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);
188
189
  }
189
190
 
190
191
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-color.mjs","sources":["../../../projects/cdk/utils/color/get-gradient-data.ts","../../../projects/cdk/utils/color/hex-to-rgb.ts","../../../projects/cdk/utils/color/hex-to-rgba.ts","../../../projects/cdk/utils/color/hsv-to-rgb.ts","../../../projects/cdk/utils/color/parse-color.ts","../../../projects/cdk/utils/color/parse-gradient.ts","../../../projects/cdk/utils/color/rgb-to-hex.ts","../../../projects/cdk/utils/color/rgb-to-hsv.ts","../../../projects/cdk/utils/color/rgba-to-hex.ts","../../../projects/cdk/utils/color/taiga-ui-cdk-utils-color.ts"],"sourcesContent":["export function tuiGetGradientData(gradient: string): string {\n return gradient\n .slice(0, Math.max(0, gradient.length - 1))\n .replace('linear-gradient(', '');\n}\n","export function tuiHexToRgb(hex: string): [number, number, number] {\n const matches = hex\n .replace('#', '')\n .split('')\n .map((char, _, array) => (array.length === 3 ? char + char : char))\n .join('')\n .match(/.{2}/g);\n\n return matches\n ? (matches.map((x) => Number.parseInt(x, 16)) as [number, number, number])\n : [0, 0, 0];\n}\n","const getChunksFromString = (hex: string, chunkSize: number): RegExpMatchArray | null =>\n hex.match(new RegExp(`.{${chunkSize}}`, 'g'));\n\nconst convertHexUnitTo256 = (hexStr: string): number =>\n parseInt(hexStr.repeat(2 / hexStr.length), 16);\n\nconst getAlphaFloat = (a?: number, alpha?: number): number => {\n if (a !== undefined) {\n return Number((a / 255).toFixed(2));\n }\n\n if (typeof alpha !== 'number' || alpha < 0 || alpha > 1) {\n return 1;\n }\n\n return alpha;\n};\n\nexport function tuiHexToRGBA(hex: string, alpha?: number): string {\n const [r, g, b, a] = tuiParseHex(hex, alpha);\n\n return a < 1 ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`;\n}\n\nexport function tuiIsValidHex(hex: string): boolean {\n return /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);\n}\n\nexport function tuiParseHex(\n hex: string,\n alpha?: number,\n): [number, number, number, number] {\n if (!tuiIsValidHex(hex)) {\n throw new Error('Invalid HEX');\n }\n\n const chunkSize = Math.floor((hex.length - 1) / 3);\n const hexArr = getChunksFromString(hex.slice(1), chunkSize);\n const [r = NaN, g = NaN, b = NaN, a] = hexArr?.map(convertHexUnitTo256) ?? [];\n const floatAlpha = getAlphaFloat(a, alpha);\n\n return [r, g, b, floatAlpha];\n}\n","function hsvToColor(h: number, s: number, v: number, n: number): number {\n const k = (n + h / 60) % 6;\n\n return Math.round(v - v * s * Math.max(Math.min(k, 4 - k, 1), 0));\n}\n\n/**\n * https://stackoverflow.com/a/54024653/2706426\n */\nexport function tuiHsvToRgb(h: number, s: number, v: number): [number, number, number] {\n return [hsvToColor(h, s, v, 5), hsvToColor(h, s, v, 3), hsvToColor(h, s, v, 1)];\n}\n","const DEFAULT: [number, number, number, number] = [0, 0, 0, 1];\n\nexport function tuiParseColor(color: string): [number, number, number, number] {\n const stripped = color\n .replace('#', '')\n .replace('rgba(', '')\n .replace('rgb(', '')\n .replace(')', '');\n const array = stripped.split(',').map((item) => parseFloat(item));\n\n if (array.length === 4) {\n return array as [number, number, number, number];\n }\n\n if (array.length === 3) {\n return array.concat(1) as [number, number, number, number];\n }\n\n const matches = stripped.match(new RegExp(`(.{${stripped.length / 3}})`, 'g'));\n\n if (!matches) {\n return DEFAULT;\n }\n\n const parsed = matches.map((char) =>\n parseInt(stripped.length % 2 ? char + char : char, 16),\n );\n\n return [\n parsed[0] ?? DEFAULT[0],\n parsed[1] ?? DEFAULT[1],\n parsed[2] ?? DEFAULT[2],\n parsed[3] ?? DEFAULT[3],\n ];\n}\n","import {tuiParseColor} from './parse-color';\n\nexport interface TuiParsedGradient {\n readonly side: TuiGradientDirection;\n readonly stops: ReadonlyArray<{\n readonly color: string;\n readonly position: string;\n }>;\n}\n\nexport type TuiGradientDirection =\n | 'to bottom left'\n | 'to bottom right'\n | 'to bottom'\n | 'to left'\n | 'to right'\n | 'to top left'\n | 'to top right'\n | 'to top';\n\n//\n// TypeScript parser based on Dean Taylor's answer:\n// https://stackoverflow.com/a/20238168/2706426\n//\n// SETUP CODE\nconst COMMA = String.raw`\\s*,\\s*`; // Allow space around comma.\nconst HEX = '#(?:[a-f0-9]{6}|[a-f0-9]{3})'; // 3 or 6 character form\nconst RGB = String.raw`\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*\\)`; // \"(1, 2, 3)\"\nconst RGBA = String.raw`\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*,\\s*\\d*\\.?\\d+\\)`; // \"(1, 2, 3, 4)\"\nconst VALUE = String.raw`(?:[+-]?\\d*\\.?\\d+)(?:%|[a-z]+)?`; // \".9\", \"-5px\", \"100%\".\nconst KEYWORD = '[_a-z-][_a-z0-9-]*'; // \"red\", \"transparent\", \"border-collapse\".\nconst COLOR = [\n '(?:',\n HEX,\n '|',\n '(?:rgb|hsl)',\n RGB,\n '|',\n '(?:rgba|hsla)',\n RGBA,\n '|',\n KEYWORD,\n ')',\n];\nconst REGEXP_ARRAY = [\n String.raw`\\s*(`,\n ...COLOR,\n ')',\n String.raw`(?:\\s+`,\n '(',\n VALUE,\n '))?',\n '(?:',\n COMMA,\n String.raw`\\s*)?`,\n];\n\nfunction getPosition(match: string, stops: number): string {\n const fallback = stops === 1 ? '100%' : `${stops}%`;\n\n return match?.includes('%') ? match : fallback;\n}\n\nexport function tuiParseGradient(input: string): TuiParsedGradient {\n const stopsRegexp = new RegExp(REGEXP_ARRAY.join(''), 'gi');\n const stopsString =\n input.startsWith('to') || /^\\d/.exec(input)\n ? input.slice(Math.max(0, input.indexOf(',') + 1)).trim()\n : input;\n\n const side = input.startsWith('to')\n ? (input.split(',')[0] as TuiGradientDirection)\n : 'to bottom';\n let stops: TuiParsedGradient['stops'] = [];\n\n let matchColorStop = stopsRegexp.exec(stopsString);\n\n while (matchColorStop !== null) {\n stops = stops.concat({\n color: matchColorStop[1] || '',\n position: getPosition(matchColorStop[2] || '', stops.length),\n });\n\n matchColorStop = stopsRegexp.exec(stopsString);\n }\n\n stops = stops.filter(({color}) => color.startsWith('#') || color.startsWith('rgb'));\n\n return {\n stops,\n side,\n };\n}\n\nexport function tuiToGradient({stops, side}: TuiParsedGradient): string {\n return `linear-gradient(${side}, ${stops\n .map(\n ({color, position}) => `rgba(${tuiParseColor(color).join(', ')}) ${position}`,\n )\n .join(', ')})`;\n}\n","export function tuiRgbToHex(r: number, g: number, b: number): string {\n return `#${[r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n}\n","export function tuiRgbToHsv(r: number, g: number, b: number): [number, number, number] {\n const v = Math.max(r, g, b);\n const n = v - Math.min(r, g, b);\n\n // eslint-disable-next-line no-nested-ternary\n const h = n && (v === r ? (g - b) / n : v === g ? 2 + (b - r) / n : 4 + (r - g) / n);\n\n return [60 * (h < 0 ? h + 6 : h), v && n / v, v];\n}\n","export function tuiRgbaToHex(color: string): string {\n if (!tuiIsValidRgba(color)) {\n throw new Error('Invalid RGBa');\n }\n\n const rgb =\n /^rgba?\\((\\d+),(\\d+),(\\d+),?([^,\\s)]+)?/i.exec(color.replaceAll(/\\s/g, '')) ??\n null;\n\n let alpha: number | string = ((rgb?.[4] ?? '') satisfies string).trim();\n\n let hex = rgb\n ? ((parseInt(rgb?.[1] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +\n ((parseInt(rgb?.[2] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +\n ((parseInt(rgb?.[3] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1)\n : color;\n\n alpha = alpha !== '' ? alpha : 0o1;\n alpha = ((Number(alpha) * 255) | (1 << 8)).toString(16).slice(1);\n hex += alpha;\n\n return `#${hex.toUpperCase()}`;\n}\n\nexport function tuiIsValidRgba(rgba: string): boolean {\n const range = String.raw`(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|2[0-5]{2})`;\n const alpha = String.raw`([01]|0?\\.\\d+)`;\n\n return new RegExp(\n `^(?:rgb\\\\(\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*\\\\)|rgba\\\\(\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${alpha}\\\\s*\\\\))$`,\n ).test(rgba);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-utils-color.mjs","sources":["../../../projects/cdk/utils/color/get-gradient-data.ts","../../../projects/cdk/utils/color/hex-to-rgb.ts","../../../projects/cdk/utils/color/hex-to-rgba.ts","../../../projects/cdk/utils/color/hsv-to-rgb.ts","../../../projects/cdk/utils/color/parse-color.ts","../../../projects/cdk/utils/color/parse-gradient.ts","../../../projects/cdk/utils/color/rgb-to-hex.ts","../../../projects/cdk/utils/color/rgb-to-hsv.ts","../../../projects/cdk/utils/color/rgba-to-hex.ts","../../../projects/cdk/utils/color/taiga-ui-cdk-utils-color.ts"],"sourcesContent":["export function tuiGetGradientData(gradient: string): string {\n return gradient\n .slice(0, Math.max(0, gradient.length - 1))\n .replace('linear-gradient(', '');\n}\n","export function tuiHexToRgb(hex: string): [number, number, number] {\n const matches = hex\n .replace('#', '')\n .split('')\n .map((char, _, array) => (array.length === 3 ? char + char : char))\n .join('')\n .match(/.{2}/g);\n\n return matches\n ? (matches.map((x) => Number.parseInt(x, 16)) as [number, number, number])\n : [0, 0, 0];\n}\n","const getChunksFromString = (hex: string, chunkSize: number): RegExpMatchArray | null =>\n hex.match(new RegExp(`.{${chunkSize}}`, 'g'));\n\nconst convertHexUnitTo256 = (hexStr: string): number =>\n parseInt(hexStr.repeat(2 / hexStr.length), 16);\n\nconst getAlphaFloat = (a?: number, alpha?: number): number => {\n if (a !== undefined) {\n return Number((a / 255).toFixed(2));\n }\n\n if (typeof alpha !== 'number' || alpha < 0 || alpha > 1) {\n return 1;\n }\n\n return alpha;\n};\n\nexport function tuiHexToRGBA(hex: string, alpha?: number): string {\n const [r, g, b, a] = tuiParseHex(hex, alpha);\n\n return a < 1 ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`;\n}\n\nexport function tuiIsValidHex(hex: string): boolean {\n return /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);\n}\n\nexport function tuiParseHex(\n hex: string,\n alpha?: number,\n): [number, number, number, number] {\n if (!tuiIsValidHex(hex)) {\n throw new Error('Invalid HEX');\n }\n\n const chunkSize = Math.floor((hex.length - 1) / 3);\n const hexArr = getChunksFromString(hex.slice(1), chunkSize);\n const [r = NaN, g = NaN, b = NaN, a] = hexArr?.map(convertHexUnitTo256) ?? [];\n const floatAlpha = getAlphaFloat(a, alpha);\n\n return [r, g, b, floatAlpha];\n}\n","function hsvToColor(h: number, s: number, v: number, n: number): number {\n const k = (n + h / 60) % 6;\n\n return Math.round(v - v * s * Math.max(Math.min(k, 4 - k, 1), 0));\n}\n\n/**\n * https://stackoverflow.com/a/54024653/2706426\n */\nexport function tuiHsvToRgb(h: number, s: number, v: number): [number, number, number] {\n return [hsvToColor(h, s, v, 5), hsvToColor(h, s, v, 3), hsvToColor(h, s, v, 1)];\n}\n","const DEFAULT: [number, number, number, number] = [0, 0, 0, 1];\n\nexport function tuiParseColor(color: string): [number, number, number, number] {\n const stripped = color\n .replace('#', '')\n .replace('rgba(', '')\n .replace('rgb(', '')\n .replace(')', '');\n const array = stripped.split(',').map((item) => parseFloat(item));\n\n if (array.length === 4) {\n return array as [number, number, number, number];\n }\n\n if (array.length === 3) {\n return array.concat(1) as [number, number, number, number];\n }\n\n const matches = stripped.match(new RegExp(`(.{${stripped.length / 3}})`, 'g'));\n\n if (!matches) {\n return DEFAULT;\n }\n\n const parsed = matches.map((char) =>\n parseInt(stripped.length % 2 ? char + char : char, 16),\n );\n\n return [\n parsed[0] ?? DEFAULT[0],\n parsed[1] ?? DEFAULT[1],\n parsed[2] ?? DEFAULT[2],\n parsed[3] ?? DEFAULT[3],\n ];\n}\n","import {tuiParseColor} from './parse-color';\n\nexport interface TuiParsedGradient {\n readonly side: TuiGradientDirection;\n readonly stops: ReadonlyArray<{\n readonly color: string;\n readonly position: string;\n }>;\n}\n\nexport type TuiGradientDirection =\n | 'to bottom left'\n | 'to bottom right'\n | 'to bottom'\n | 'to left'\n | 'to right'\n | 'to top left'\n | 'to top right'\n | 'to top';\n\n//\n// TypeScript parser based on Dean Taylor's answer:\n// https://stackoverflow.com/a/20238168/2706426\n//\n// SETUP CODE\nconst COMMA = String.raw`\\s*,\\s*`; // Allow space around comma.\nconst HEX = '#(?:[a-f0-9]{6}|[a-f0-9]{3})'; // 3 or 6 character form\nconst RGB = String.raw`\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*\\)`; // \"(1, 2, 3)\"\nconst RGBA = String.raw`\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*,\\s*\\d*\\.?\\d+\\)`; // \"(1, 2, 3, 4)\"\nconst VALUE = String.raw`(?:[+-]?\\d*\\.?\\d+)(?:%|[a-z]+)?`; // \".9\", \"-5px\", \"100%\".\nconst KEYWORD = '[_a-z-][_a-z0-9-]*'; // \"red\", \"transparent\", \"border-collapse\".\nconst COLOR = [\n '(?:',\n HEX,\n '|',\n '(?:rgb|hsl)',\n RGB,\n '|',\n '(?:rgba|hsla)',\n RGBA,\n '|',\n KEYWORD,\n ')',\n];\nconst REGEXP_ARRAY = [\n String.raw`\\s*(`,\n ...COLOR,\n ')',\n String.raw`(?:\\s+`,\n '(',\n VALUE,\n '))?',\n '(?:',\n COMMA,\n String.raw`\\s*)?`,\n];\n\nfunction getPosition(match: string, stops: number): string {\n const fallback = stops === 1 ? '100%' : `${stops}%`;\n\n return match?.includes('%') ? match : fallback;\n}\n\nexport function tuiParseGradient(input: string): TuiParsedGradient {\n const stopsRegexp = new RegExp(REGEXP_ARRAY.join(''), 'gi');\n const stopsString =\n input.startsWith('to') || /^\\d/.exec(input)\n ? input.slice(Math.max(0, input.indexOf(',') + 1)).trim()\n : input;\n\n const side = input.startsWith('to')\n ? (input.split(',')[0] as TuiGradientDirection)\n : 'to bottom';\n let stops: TuiParsedGradient['stops'] = [];\n\n let matchColorStop = stopsRegexp.exec(stopsString);\n\n while (matchColorStop !== null) {\n stops = stops.concat({\n color: matchColorStop[1] || '',\n position: getPosition(matchColorStop[2] || '', stops.length),\n });\n\n matchColorStop = stopsRegexp.exec(stopsString);\n }\n\n stops = stops.filter(({color}) => color.startsWith('#') || color.startsWith('rgb'));\n\n return {\n stops,\n side,\n };\n}\n\nexport function tuiToGradient({stops, side}: TuiParsedGradient): string {\n return `linear-gradient(${side}, ${stops\n .map(\n ({color, position}) => `rgba(${tuiParseColor(color).join(', ')}) ${position}`,\n )\n .join(', ')})`;\n}\n","export function tuiRgbToHex(r: number, g: number, b: number): string {\n return `#${[r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n}\n","export function tuiRgbToHsv(r: number, g: number, b: number): [number, number, number] {\n const v = Math.max(r, g, b);\n const n = v - Math.min(r, g, b);\n\n // eslint-disable-next-line no-nested-ternary\n const h = n && (v === r ? (g - b) / n : v === g ? 2 + (b - r) / n : 4 + (r - g) / n);\n\n return [60 * (h < 0 ? h + 6 : h), v && n / v, v];\n}\n","/* eslint-disable no-bitwise */\nexport function tuiRgbaToHex(color: string): string {\n if (!tuiIsValidRgba(color)) {\n throw new Error('Invalid RGBa');\n }\n\n const rgb =\n /^rgba?\\((\\d+),(\\d+),(\\d+),?([^,\\s)]+)?/i.exec(color.replaceAll(/\\s/g, '')) ??\n null;\n\n let alpha: number | string = ((rgb?.[4] ?? '') satisfies string).trim();\n\n let hex = rgb\n ? ((parseInt(rgb?.[1] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +\n ((parseInt(rgb?.[2] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +\n ((parseInt(rgb?.[3] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1)\n : color;\n\n alpha = alpha !== '' ? alpha : 0o1;\n alpha = ((Number(alpha) * 255) | (1 << 8)).toString(16).slice(1);\n hex += alpha;\n\n return `#${hex.toUpperCase()}`;\n}\n\nexport function tuiIsValidRgba(rgba: string): boolean {\n const range = String.raw`(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|2[0-5]{2})`;\n const alpha = String.raw`([01]|0?\\.\\d+)`;\n\n return new RegExp(\n String.raw`^(?: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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"}