@ethlete/core 1.9.1 → 1.10.1

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 (155) hide show
  1. package/esm2022/lib/components/structured-data/structured-data.component.mjs +38 -0
  2. package/esm2022/lib/directives/animatable/animatable.directive.mjs +116 -0
  3. package/esm2022/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +116 -0
  4. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +38 -0
  5. package/esm2022/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +148 -0
  6. package/esm2022/lib/directives/delayable/delayable.directive.mjs +56 -0
  7. package/esm2022/lib/directives/let/let.directive.mjs +41 -0
  8. package/esm2022/lib/directives/observe-content/observe-content.directive.mjs +69 -0
  9. package/esm2022/lib/directives/observe-resize/observe-resize.directive.mjs +69 -0
  10. package/esm2022/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +177 -0
  11. package/esm2022/lib/directives/repeat/repeat.directive.mjs +37 -0
  12. package/esm2022/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +32 -0
  13. package/esm2022/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +19 -0
  14. package/esm2022/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +35 -0
  15. package/esm2022/lib/directives/seo/seo.directive.mjs +167 -0
  16. package/esm2022/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +16 -0
  17. package/esm2022/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +16 -0
  18. package/esm2022/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +16 -0
  19. package/esm2022/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +16 -0
  20. package/esm2022/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +16 -0
  21. package/esm2022/lib/pipes/to-array/to-array.pipe.mjs +16 -0
  22. package/esm2022/lib/services/click-observer.service.mjs +75 -0
  23. package/esm2022/lib/services/content-observer.service.mjs +81 -0
  24. package/esm2022/lib/services/destroy.service.mjs +24 -0
  25. package/esm2022/lib/services/focus-visible.service.mjs +35 -0
  26. package/esm2022/lib/services/resize-observer.service.mjs +77 -0
  27. package/esm2022/lib/services/router-state.service.mjs +116 -0
  28. package/esm2022/lib/services/viewport.service.mjs +169 -0
  29. package/esm2022/lib/types/angular.types.mjs +15 -0
  30. package/esm2022/lib/utils/scrollable.utils.mjs +85 -0
  31. package/{fesm2020 → fesm2022}/ethlete-core.mjs +119 -140
  32. package/{fesm2020 → fesm2022}/ethlete-core.mjs.map +1 -1
  33. package/lib/components/structured-data/structured-data.component.d.ts +1 -1
  34. package/lib/directives/animatable/animatable.directive.d.ts +1 -1
  35. package/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.d.ts +1 -1
  36. package/lib/directives/let/let.directive.d.ts +1 -1
  37. package/lib/directives/observe-content/observe-content.directive.d.ts +1 -1
  38. package/lib/directives/observe-resize/observe-resize.directive.d.ts +1 -1
  39. package/lib/directives/observe-scroll-state/observe-scroll-state.directive.d.ts +1 -1
  40. package/lib/directives/repeat/repeat.directive.d.ts +1 -1
  41. package/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.d.ts +1 -1
  42. package/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.d.ts +1 -1
  43. package/lib/types/angular.types.d.ts +6 -8
  44. package/package.json +13 -19
  45. package/esm2020/lib/components/structured-data/structured-data.component.mjs +0 -37
  46. package/esm2020/lib/directives/animatable/animatable.directive.mjs +0 -115
  47. package/esm2020/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +0 -115
  48. package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +0 -37
  49. package/esm2020/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +0 -147
  50. package/esm2020/lib/directives/delayable/delayable.directive.mjs +0 -55
  51. package/esm2020/lib/directives/let/let.directive.mjs +0 -40
  52. package/esm2020/lib/directives/observe-content/observe-content.directive.mjs +0 -68
  53. package/esm2020/lib/directives/observe-resize/observe-resize.directive.mjs +0 -68
  54. package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +0 -176
  55. package/esm2020/lib/directives/repeat/repeat.directive.mjs +0 -36
  56. package/esm2020/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +0 -31
  57. package/esm2020/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +0 -18
  58. package/esm2020/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +0 -34
  59. package/esm2020/lib/directives/seo/seo.directive.mjs +0 -166
  60. package/esm2020/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +0 -15
  61. package/esm2020/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +0 -15
  62. package/esm2020/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +0 -15
  63. package/esm2020/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +0 -15
  64. package/esm2020/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +0 -15
  65. package/esm2020/lib/pipes/to-array/to-array.pipe.mjs +0 -15
  66. package/esm2020/lib/services/click-observer.service.mjs +0 -73
  67. package/esm2020/lib/services/content-observer.service.mjs +0 -79
  68. package/esm2020/lib/services/destroy.service.mjs +0 -23
  69. package/esm2020/lib/services/focus-visible.service.mjs +0 -34
  70. package/esm2020/lib/services/resize-observer.service.mjs +0 -75
  71. package/esm2020/lib/services/router-state.service.mjs +0 -115
  72. package/esm2020/lib/services/viewport.service.mjs +0 -168
  73. package/esm2020/lib/types/angular.types.mjs +0 -36
  74. package/esm2020/lib/utils/scrollable.utils.mjs +0 -85
  75. package/fesm2015/ethlete-core.mjs +0 -2787
  76. package/fesm2015/ethlete-core.mjs.map +0 -1
  77. /package/{esm2020 → esm2022}/ethlete-core.mjs +0 -0
  78. /package/{esm2020 → esm2022}/index.mjs +0 -0
  79. /package/{esm2020 → esm2022}/lib/components/public-api.mjs +0 -0
  80. /package/{esm2020 → esm2022}/lib/components/structured-data/public-api.mjs +0 -0
  81. /package/{esm2020 → esm2022}/lib/constants/index.mjs +0 -0
  82. /package/{esm2020 → esm2022}/lib/constants/public-api.mjs +0 -0
  83. /package/{esm2020 → esm2022}/lib/constants/viewport.constants.mjs +0 -0
  84. /package/{esm2020 → esm2022}/lib/decorators/index.mjs +0 -0
  85. /package/{esm2020 → esm2022}/lib/decorators/memo/memo.decorator.mjs +0 -0
  86. /package/{esm2020 → esm2022}/lib/decorators/memo/public-api.mjs +0 -0
  87. /package/{esm2020 → esm2022}/lib/decorators/public-api.mjs +0 -0
  88. /package/{esm2020 → esm2022}/lib/directives/animatable/index.mjs +0 -0
  89. /package/{esm2020 → esm2022}/lib/directives/animatable/public-api.mjs +0 -0
  90. /package/{esm2020 → esm2022}/lib/directives/animated-lifecycle/public-api.mjs +0 -0
  91. /package/{esm2020 → esm2022}/lib/directives/click-outside/public-api.mjs +0 -0
  92. /package/{esm2020 → esm2022}/lib/directives/cursor-drag-scroll/cursor-drag-scroll.constants.mjs +0 -0
  93. /package/{esm2020 → esm2022}/lib/directives/cursor-drag-scroll/public-api.mjs +0 -0
  94. /package/{esm2020 → esm2022}/lib/directives/delayable/public-api.mjs +0 -0
  95. /package/{esm2020 → esm2022}/lib/directives/let/let.types.mjs +0 -0
  96. /package/{esm2020 → esm2022}/lib/directives/let/public-api.mjs +0 -0
  97. /package/{esm2020 → esm2022}/lib/directives/observe-content/public-api.mjs +0 -0
  98. /package/{esm2020 → esm2022}/lib/directives/observe-resize/public-api.mjs +0 -0
  99. /package/{esm2020 → esm2022}/lib/directives/observe-scroll-state/observe-scroll-state.constants.mjs +0 -0
  100. /package/{esm2020 → esm2022}/lib/directives/observe-scroll-state/observe-scroll-state.types.mjs +0 -0
  101. /package/{esm2020 → esm2022}/lib/directives/observe-scroll-state/public-api.mjs +0 -0
  102. /package/{esm2020 → esm2022}/lib/directives/public-api.mjs +0 -0
  103. /package/{esm2020 → esm2022}/lib/directives/repeat/public-api.mjs +0 -0
  104. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-first-element/index.mjs +0 -0
  105. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-first-element/public-api.mjs +0 -0
  106. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-ignore-target/index.mjs +0 -0
  107. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-ignore-target/public-api.mjs +0 -0
  108. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-last-element/index.mjs +0 -0
  109. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-last-element/public-api.mjs +0 -0
  110. /package/{esm2020 → esm2022}/lib/directives/seo/public-api.mjs +0 -0
  111. /package/{esm2020 → esm2022}/lib/directives/seo/seo.directive.constants.mjs +0 -0
  112. /package/{esm2020 → esm2022}/lib/directives/seo/seo.directive.types.mjs +0 -0
  113. /package/{esm2020 → esm2022}/lib/directives/seo/seo.directive.utils.mjs +0 -0
  114. /package/{esm2020 → esm2022}/lib/pipes/normalize-game-result-type/normalize-game-result-type.types.mjs +0 -0
  115. /package/{esm2020 → esm2022}/lib/pipes/normalize-game-result-type/normalize-game-result-type.util.mjs +0 -0
  116. /package/{esm2020 → esm2022}/lib/pipes/normalize-game-result-type/public-api.mjs +0 -0
  117. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-participants/normalize-match-participants.types.mjs +0 -0
  118. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-participants/normalize-match-participants.util.mjs +0 -0
  119. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-participants/public-api.mjs +0 -0
  120. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-score/normalize-match-score.types.mjs +0 -0
  121. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-score/normalize-match-score.util.mjs +0 -0
  122. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-score/public-api.mjs +0 -0
  123. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/index.mjs +0 -0
  124. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/normalize-match-state.constants.mjs +0 -0
  125. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/normalize-match-state.util.mjs +0 -0
  126. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/public-api.mjs +0 -0
  127. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-type/normalize-match-type.util.mjs +0 -0
  128. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-type/public-api.mjs +0 -0
  129. /package/{esm2020 → esm2022}/lib/pipes/public-api.mjs +0 -0
  130. /package/{esm2020 → esm2022}/lib/pipes/to-array/public-api.mjs +0 -0
  131. /package/{esm2020 → esm2022}/lib/pipes/to-array/to-array.util.mjs +0 -0
  132. /package/{esm2020 → esm2022}/lib/public-api.mjs +0 -0
  133. /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
  134. /package/{esm2020 → esm2022}/lib/services/public-api.mjs +0 -0
  135. /package/{esm2020 → esm2022}/lib/services/viewport.types.mjs +0 -0
  136. /package/{esm2020 → esm2022}/lib/types/i18n.types.mjs +0 -0
  137. /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
  138. /package/{esm2020 → esm2022}/lib/types/public-api.mjs +0 -0
  139. /package/{esm2020 → esm2022}/lib/types/viewport.types.mjs +0 -0
  140. /package/{esm2020 → esm2022}/lib/utils/animation.utils.mjs +0 -0
  141. /package/{esm2020 → esm2022}/lib/utils/clamp.util.mjs +0 -0
  142. /package/{esm2020 → esm2022}/lib/utils/clone.util.mjs +0 -0
  143. /package/{esm2020 → esm2022}/lib/utils/cookie.util.mjs +0 -0
  144. /package/{esm2020 → esm2022}/lib/utils/equal.util.mjs +0 -0
  145. /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
  146. /package/{esm2020 → esm2022}/lib/utils/media-query-observable.util.mjs +0 -0
  147. /package/{esm2020 → esm2022}/lib/utils/public-api.mjs +0 -0
  148. /package/{esm2020 → esm2022}/lib/utils/reactive-binding.util.mjs +0 -0
  149. /package/{esm2020 → esm2022}/lib/utils/rxjs.utils.mjs +0 -0
  150. /package/{esm2020 → esm2022}/lib/utils/smart-block-scroll-strategy.utils.mjs +0 -0
  151. /package/{esm2020 → esm2022}/lib/utils/viewport.util.mjs +0 -0
  152. /package/{esm2020 → esm2022}/lib/validators/is-array-not-empty.validator.mjs +0 -0
  153. /package/{esm2020 → esm2022}/lib/validators/is-email.validator.mjs +0 -0
  154. /package/{esm2020 → esm2022}/lib/validators/must-match.validator.mjs +0 -0
  155. /package/{esm2020 → esm2022}/lib/validators/public-api.mjs +0 -0
@@ -0,0 +1,167 @@
1
+ import { Directive, inject } from '@angular/core';
2
+ import { Meta, Title } from '@angular/platform-browser';
3
+ import { Observable, Subject, takeUntil } from 'rxjs';
4
+ import { SEO_DIRECTIVE_TOKEN } from './seo.directive.constants';
5
+ import { mergeSeoConfig } from './seo.directive.utils';
6
+ import * as i0 from "@angular/core";
7
+ class SeoDirective {
8
+ constructor() {
9
+ this._metaService = inject(Meta);
10
+ this._titleService = inject(Title);
11
+ this._onDeactivate$ = new Subject();
12
+ this._isDeactivated = false;
13
+ this.parent = inject(SEO_DIRECTIVE_TOKEN, { optional: true, skipSelf: true });
14
+ this._config = {};
15
+ }
16
+ get config() {
17
+ return this._config;
18
+ }
19
+ ngOnInit() {
20
+ this.parent?._deactivate();
21
+ }
22
+ ngOnDestroy() {
23
+ this._deactivate();
24
+ this._cleanUp();
25
+ this.parent?._activate();
26
+ }
27
+ // TODO(TRB): This should get split up into multiple methods to make it more readable
28
+ // - updateTitle
29
+ // - updateMeta
30
+ // - updateLink
31
+ updateConfig(config) {
32
+ this._config = mergeSeoConfig(config, this.parent?.config || {});
33
+ if (this._isDeactivated) {
34
+ return;
35
+ }
36
+ this._deactivate();
37
+ this._activate();
38
+ }
39
+ _activate() {
40
+ this._onDeactivate$.next(false);
41
+ this._isDeactivated = false;
42
+ for (const [key, value] of Object.entries(this._config)) {
43
+ if (value instanceof Observable) {
44
+ value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));
45
+ }
46
+ else if (Array.isArray(value)) {
47
+ value.forEach((value) => {
48
+ if (value instanceof Observable) {
49
+ value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));
50
+ }
51
+ else {
52
+ this._update(key, value);
53
+ }
54
+ });
55
+ }
56
+ else if (typeof value === 'object' && value !== null) {
57
+ for (const [subKey, subValue] of Object.entries(value)) {
58
+ if (subValue instanceof Observable) {
59
+ subValue.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(`${key}:${subKey}`, value));
60
+ }
61
+ else {
62
+ this._update(`${key}:${subKey}`, subValue);
63
+ }
64
+ }
65
+ }
66
+ else {
67
+ this._update(key, value);
68
+ }
69
+ }
70
+ }
71
+ _deactivate() {
72
+ this._onDeactivate$.next(true);
73
+ this._isDeactivated = true;
74
+ }
75
+ _update(key, value) {
76
+ switch (key) {
77
+ case 'title':
78
+ if (value && typeof value === 'string') {
79
+ this._titleService.setTitle(value);
80
+ }
81
+ break;
82
+ case 'canonical':
83
+ {
84
+ const link = document.querySelector(`link[rel="${key}"]`);
85
+ if (link) {
86
+ link.setAttribute('href', value);
87
+ }
88
+ else {
89
+ const newLink = document.createElement('link');
90
+ newLink.setAttribute('rel', key);
91
+ newLink.setAttribute('href', value);
92
+ document.head.appendChild(newLink);
93
+ }
94
+ }
95
+ break;
96
+ case 'alternate':
97
+ {
98
+ const link = document.querySelector(`link[rel="${key}"][hreflang="${value.hreflang}"]`);
99
+ if (link) {
100
+ link.setAttribute('href', value.href);
101
+ }
102
+ else {
103
+ const newLink = document.createElement('link');
104
+ newLink.setAttribute('rel', key);
105
+ newLink.setAttribute('hreflang', value.hreflang);
106
+ newLink.setAttribute('href', value.href);
107
+ document.head.appendChild(newLink);
108
+ }
109
+ }
110
+ break;
111
+ default:
112
+ if (value !== undefined && value !== null) {
113
+ const val = Array.isArray(value) ? value.join(', ') : value;
114
+ this._metaService.updateTag({ name: key, content: val });
115
+ }
116
+ else {
117
+ this._metaService.removeTag(`name="${key}"`);
118
+ }
119
+ break;
120
+ }
121
+ }
122
+ _cleanUp() {
123
+ for (const key in this._config) {
124
+ if (key === 'alternate') {
125
+ const links = document.querySelectorAll(`link[rel="${key}"]`);
126
+ links.forEach((link) => {
127
+ link.remove();
128
+ });
129
+ continue;
130
+ }
131
+ if (key === 'canonical') {
132
+ const link = document.querySelector(`link[rel="${key}"]`);
133
+ if (link) {
134
+ link.remove();
135
+ }
136
+ continue;
137
+ }
138
+ if (typeof this._config[key] === 'object' &&
139
+ this._config[key] !== null &&
140
+ !(this._config[key] instanceof Observable)) {
141
+ for (const subKey in this._config[key]) {
142
+ const parentValue = this.parent?.config?.[key]?.[subKey];
143
+ if (parentValue === undefined) {
144
+ this._update(`${key}:${subKey}`, undefined);
145
+ }
146
+ }
147
+ }
148
+ else {
149
+ const parentValue = this.parent?.config?.[key];
150
+ if (parentValue === undefined) {
151
+ this._update(key, null);
152
+ }
153
+ }
154
+ }
155
+ }
156
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SeoDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
157
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: SeoDirective, isStandalone: true, providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }], ngImport: i0 }); }
158
+ }
159
+ export { SeoDirective };
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SeoDirective, decorators: [{
161
+ type: Directive,
162
+ args: [{
163
+ standalone: true,
164
+ providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }],
165
+ }]
166
+ }] });
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvc2VvL3Nlby5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFdkQsTUFJYSxZQUFZO0lBSnpCO1FBS21CLGlCQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUVqRCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV0QixXQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUsxRSxZQUFPLEdBQWMsRUFBRSxDQUFDO0tBOEpqQztJQWpLQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxxRkFBcUY7SUFDckYsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixlQUFlO0lBQ2YsWUFBWSxDQUFDLE1BQWlCO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVqRSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBRTVCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2RCxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7Z0JBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMzRjtpQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQy9CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDdEIsSUFBSSxLQUFLLFlBQVksVUFBVSxFQUFFO3dCQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7cUJBQzNGO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO3FCQUMxQjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7Z0JBQ3RELEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN0RCxJQUFJLFFBQVEsWUFBWSxVQUFVLEVBQUU7d0JBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxNQUFNLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO3FCQUM3Rzt5QkFBTTt3QkFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLE1BQU0sRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO3FCQUM1QztpQkFDRjthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzFCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFTyxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQWM7UUFDekMsUUFBUSxHQUFHLEVBQUU7WUFDWCxLQUFLLE9BQU87Z0JBQ1YsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO29CQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDcEM7Z0JBQ0QsTUFBTTtZQUVSLEtBQUssV0FBVztnQkFDZDtvQkFDRSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQztvQkFFMUQsSUFBSSxJQUFJLEVBQUU7d0JBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBZSxDQUFDLENBQUM7cUJBQzVDO3lCQUFNO3dCQUNMLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQy9DLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUNqQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFlLENBQUMsQ0FBQzt3QkFDOUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3BDO2lCQUNGO2dCQUVELE1BQU07WUFFUixLQUFLLFdBQVc7Z0JBQ2Q7b0JBQ0UsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEdBQUcsZ0JBQWlCLEtBQXVCLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztvQkFFM0csSUFBSSxJQUFJLEVBQUU7d0JBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUcsS0FBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDMUQ7eUJBQU07d0JBQ0wsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDL0MsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ2pDLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFHLEtBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3BFLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFHLEtBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzVELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUNwQztpQkFDRjtnQkFFRCxNQUFNO1lBRVI7Z0JBQ0UsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7b0JBQ3pDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFFLEtBQWdCLENBQUM7b0JBRXhFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDMUQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2lCQUM5QztnQkFDRCxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRU8sUUFBUTtRQUNkLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUM5QixJQUFJLEdBQUcsS0FBSyxXQUFXLEVBQUU7Z0JBQ3ZCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBRTlELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDckIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQztnQkFFSCxTQUFTO2FBQ1Y7WUFFRCxJQUFJLEdBQUcsS0FBSyxXQUFXLEVBQUU7Z0JBQ3ZCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUUxRCxJQUFJLElBQUksRUFBRTtvQkFDUixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ2Y7Z0JBRUQsU0FBUzthQUNWO1lBRUQsSUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUTtnQkFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJO2dCQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxVQUFVLENBQUMsRUFDMUM7Z0JBQ0EsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBNEIsRUFBRTtvQkFDakUsTUFBTSxXQUFXLEdBQ2YsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFzQixDQUFDLEVBQUUsQ0FBQyxNQUEwQyxDQUFDLENBQUM7b0JBRTlGLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTt3QkFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxNQUFNLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztxQkFDN0M7aUJBQ0Y7YUFDRjtpQkFBTTtnQkFDTCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQXNCLENBQUMsQ0FBQztnQkFFbEUsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO29CQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDekI7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs4R0F6S1UsWUFBWTtrR0FBWixZQUFZLGlDQUZaLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDOztTQUU3RCxZQUFZOzJGQUFaLFlBQVk7a0JBSnhCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsY0FBYyxFQUFFLENBQUM7aUJBQ3pFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZXRhLCBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTRU9fRElSRUNUSVZFX1RPS0VOIH0gZnJvbSAnLi9zZW8uZGlyZWN0aXZlLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBBbHRlcm5hdGVMaW5rLCBTZW9Db25maWcgfSBmcm9tICcuL3Nlby5kaXJlY3RpdmUudHlwZXMnO1xuaW1wb3J0IHsgbWVyZ2VTZW9Db25maWcgfSBmcm9tICcuL3Nlby5kaXJlY3RpdmUudXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBTRU9fRElSRUNUSVZFX1RPS0VOLCB1c2VFeGlzdGluZzogU2VvRGlyZWN0aXZlIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBTZW9EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldGFTZXJ2aWNlID0gaW5qZWN0KE1ldGEpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aXRsZVNlcnZpY2UgPSBpbmplY3QoVGl0bGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlYWN0aXZhdGUkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIF9pc0RlYWN0aXZhdGVkID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgcGFyZW50ID0gaW5qZWN0KFNFT19ESVJFQ1RJVkVfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pO1xuXG4gIGdldCBjb25maWcoKTogU2VvQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICB9XG4gIHByaXZhdGUgX2NvbmZpZzogU2VvQ29uZmlnID0ge307XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wYXJlbnQ/Ll9kZWFjdGl2YXRlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZWFjdGl2YXRlKCk7XG4gICAgdGhpcy5fY2xlYW5VcCgpO1xuICAgIHRoaXMucGFyZW50Py5fYWN0aXZhdGUoKTtcbiAgfVxuXG4gIC8vIFRPRE8oVFJCKTogVGhpcyBzaG91bGQgZ2V0IHNwbGl0IHVwIGludG8gbXVsdGlwbGUgbWV0aG9kcyB0byBtYWtlIGl0IG1vcmUgcmVhZGFibGVcbiAgLy8gLSB1cGRhdGVUaXRsZVxuICAvLyAtIHVwZGF0ZU1ldGFcbiAgLy8gLSB1cGRhdGVMaW5rXG4gIHVwZGF0ZUNvbmZpZyhjb25maWc6IFNlb0NvbmZpZykge1xuICAgIHRoaXMuX2NvbmZpZyA9IG1lcmdlU2VvQ29uZmlnKGNvbmZpZywgdGhpcy5wYXJlbnQ/LmNvbmZpZyB8fCB7fSk7XG5cbiAgICBpZiAodGhpcy5faXNEZWFjdGl2YXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2RlYWN0aXZhdGUoKTtcbiAgICB0aGlzLl9hY3RpdmF0ZSgpO1xuICB9XG5cbiAgX2FjdGl2YXRlKCkge1xuICAgIHRoaXMuX29uRGVhY3RpdmF0ZSQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5faXNEZWFjdGl2YXRlZCA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fY29uZmlnKSkge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICB2YWx1ZS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlYWN0aXZhdGUkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5fdXBkYXRlKGtleSwgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgICAgICB2YWx1ZS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlYWN0aXZhdGUkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5fdXBkYXRlKGtleSwgdmFsdWUpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlKGtleSwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgZm9yIChjb25zdCBbc3ViS2V5LCBzdWJWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUpKSB7XG4gICAgICAgICAgaWYgKHN1YlZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgc3ViVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZWFjdGl2YXRlJCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHRoaXMuX3VwZGF0ZShgJHtrZXl9OiR7c3ViS2V5fWAsIHZhbHVlKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZShgJHtrZXl9OiR7c3ViS2V5fWAsIHN1YlZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZShrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfZGVhY3RpdmF0ZSgpIHtcbiAgICB0aGlzLl9vbkRlYWN0aXZhdGUkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5faXNEZWFjdGl2YXRlZCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGUoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgJ3RpdGxlJzpcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLl90aXRsZVNlcnZpY2Uuc2V0VGl0bGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjYW5vbmljYWwnOlxuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpbmtbcmVsPVwiJHtrZXl9XCJdYCk7XG5cbiAgICAgICAgICBpZiAobGluaykge1xuICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB2YWx1ZSBhcyBzdHJpbmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuZXdMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgICAgICAgbmV3TGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsIGtleSk7XG4gICAgICAgICAgICBuZXdMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHZhbHVlIGFzIHN0cmluZyk7XG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG5ld0xpbmspO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhbHRlcm5hdGUnOlxuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpbmtbcmVsPVwiJHtrZXl9XCJdW2hyZWZsYW5nPVwiJHsodmFsdWUgYXMgQWx0ZXJuYXRlTGluaykuaHJlZmxhbmd9XCJdYCk7XG5cbiAgICAgICAgICBpZiAobGluaykge1xuICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAodmFsdWUgYXMgQWx0ZXJuYXRlTGluaykuaHJlZik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0xpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICAgICAgICBuZXdMaW5rLnNldEF0dHJpYnV0ZSgncmVsJywga2V5KTtcbiAgICAgICAgICAgIG5ld0xpbmsuc2V0QXR0cmlidXRlKCdocmVmbGFuZycsICh2YWx1ZSBhcyBBbHRlcm5hdGVMaW5rKS5ocmVmbGFuZyk7XG4gICAgICAgICAgICBuZXdMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsICh2YWx1ZSBhcyBBbHRlcm5hdGVMaW5rKS5ocmVmKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobmV3TGluayk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgdmFsID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5qb2luKCcsICcpIDogKHZhbHVlIGFzIHN0cmluZyk7XG5cbiAgICAgICAgICB0aGlzLl9tZXRhU2VydmljZS51cGRhdGVUYWcoeyBuYW1lOiBrZXksIGNvbnRlbnQ6IHZhbCB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9tZXRhU2VydmljZS5yZW1vdmVUYWcoYG5hbWU9XCIke2tleX1cImApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFuVXAoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5fY29uZmlnKSB7XG4gICAgICBpZiAoa2V5ID09PSAnYWx0ZXJuYXRlJykge1xuICAgICAgICBjb25zdCBsaW5rcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYGxpbmtbcmVsPVwiJHtrZXl9XCJdYCk7XG5cbiAgICAgICAgbGlua3MuZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgICAgIGxpbmsucmVtb3ZlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2V5ID09PSAnY2Fub25pY2FsJykge1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlua1tyZWw9XCIke2tleX1cIl1gKTtcblxuICAgICAgICBpZiAobGluaykge1xuICAgICAgICAgIGxpbmsucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgdGhpcy5fY29uZmlnW2tleV0gPT09ICdvYmplY3QnICYmXG4gICAgICAgIHRoaXMuX2NvbmZpZ1trZXldICE9PSBudWxsICYmXG4gICAgICAgICEodGhpcy5fY29uZmlnW2tleV0gaW5zdGFuY2VvZiBPYnNlcnZhYmxlKVxuICAgICAgKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc3ViS2V5IGluIHRoaXMuX2NvbmZpZ1trZXldIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50VmFsdWUgPVxuICAgICAgICAgICAgdGhpcy5wYXJlbnQ/LmNvbmZpZz8uW2tleSBhcyBrZXlvZiBTZW9Db25maWddPy5bc3ViS2V5IGFzIGtleW9mIFNlb0NvbmZpZ1trZXlvZiBTZW9Db25maWddXTtcblxuICAgICAgICAgIGlmIChwYXJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGUoYCR7a2V5fToke3N1YktleX1gLCB1bmRlZmluZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLnBhcmVudD8uY29uZmlnPy5ba2V5IGFzIGtleW9mIFNlb0NvbmZpZ107XG5cbiAgICAgICAgaWYgKHBhcmVudFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLl91cGRhdGUoa2V5LCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { normalizeGameResultType } from './normalize-game-result-type.util';
3
+ import * as i0 from "@angular/core";
4
+ class NormalizeGameResultTypePipe {
5
+ constructor() {
6
+ this.transform = normalizeGameResultType;
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NormalizeGameResultTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: NormalizeGameResultTypePipe, isStandalone: true, name: "etNormalizeGameResultType" }); }
10
+ }
11
+ export { NormalizeGameResultTypePipe };
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NormalizeGameResultTypePipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{ name: 'etNormalizeGameResultType', standalone: true }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLWdhbWUtcmVzdWx0LXR5cGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3BpcGVzL25vcm1hbGl6ZS1nYW1lLXJlc3VsdC10eXBlL25vcm1hbGl6ZS1nYW1lLXJlc3VsdC10eXBlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBRTVFLE1BQ2EsMkJBQTJCO0lBRHhDO1FBRUUsY0FBUyxHQUFHLHVCQUF1QixDQUFDO0tBQ3JDOzhHQUZZLDJCQUEyQjs0R0FBM0IsMkJBQTJCOztTQUEzQiwyQkFBMkI7MkZBQTNCLDJCQUEyQjtrQkFEdkMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbm9ybWFsaXplR2FtZVJlc3VsdFR5cGUgfSBmcm9tICcuL25vcm1hbGl6ZS1nYW1lLXJlc3VsdC10eXBlLnV0aWwnO1xuXG5AUGlwZSh7IG5hbWU6ICdldE5vcm1hbGl6ZUdhbWVSZXN1bHRUeXBlJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5vcm1hbGl6ZUdhbWVSZXN1bHRUeXBlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0gPSBub3JtYWxpemVHYW1lUmVzdWx0VHlwZTtcbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { normalizeMatchParticipants } from './normalize-match-participants.util';
3
+ import * as i0 from "@angular/core";
4
+ class NormalizeMatchParticipantsPipe {
5
+ constructor() {
6
+ this.transform = normalizeMatchParticipants;
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchParticipantsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchParticipantsPipe, isStandalone: true, name: "etNormalizeMatchParticipants" }); }
10
+ }
11
+ export { NormalizeMatchParticipantsPipe };
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchParticipantsPipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{ name: 'etNormalizeMatchParticipants', standalone: true }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLW1hdGNoLXBhcnRpY2lwYW50cy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcGlwZXMvbm9ybWFsaXplLW1hdGNoLXBhcnRpY2lwYW50cy9ub3JtYWxpemUtbWF0Y2gtcGFydGljaXBhbnRzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBRWpGLE1BQ2EsOEJBQThCO0lBRDNDO1FBRUUsY0FBUyxHQUFHLDBCQUEwQixDQUFDO0tBQ3hDOzhHQUZZLDhCQUE4Qjs0R0FBOUIsOEJBQThCOztTQUE5Qiw4QkFBOEI7MkZBQTlCLDhCQUE4QjtrQkFEMUMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSw4QkFBOEIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbm9ybWFsaXplTWF0Y2hQYXJ0aWNpcGFudHMgfSBmcm9tICcuL25vcm1hbGl6ZS1tYXRjaC1wYXJ0aWNpcGFudHMudXRpbCc7XG5cbkBQaXBlKHsgbmFtZTogJ2V0Tm9ybWFsaXplTWF0Y2hQYXJ0aWNpcGFudHMnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTm9ybWFsaXplTWF0Y2hQYXJ0aWNpcGFudHNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSA9IG5vcm1hbGl6ZU1hdGNoUGFydGljaXBhbnRzO1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { normalizeMatchScore } from './normalize-match-score.util';
3
+ import * as i0 from "@angular/core";
4
+ class NormalizeMatchScorePipe {
5
+ constructor() {
6
+ this.transform = normalizeMatchScore;
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchScorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchScorePipe, isStandalone: true, name: "etNormalizeMatchScore" }); }
10
+ }
11
+ export { NormalizeMatchScorePipe };
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchScorePipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{ name: 'etNormalizeMatchScore', standalone: true }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLW1hdGNoLXNjb3JlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9waXBlcy9ub3JtYWxpemUtbWF0Y2gtc2NvcmUvbm9ybWFsaXplLW1hdGNoLXNjb3JlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRW5FLE1BQ2EsdUJBQXVCO0lBRHBDO1FBRUUsY0FBUyxHQUFHLG1CQUFtQixDQUFDO0tBQ2pDOzhHQUZZLHVCQUF1Qjs0R0FBdkIsdUJBQXVCOztTQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFEbkMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbm9ybWFsaXplTWF0Y2hTY29yZSB9IGZyb20gJy4vbm9ybWFsaXplLW1hdGNoLXNjb3JlLnV0aWwnO1xuXG5AUGlwZSh7IG5hbWU6ICdldE5vcm1hbGl6ZU1hdGNoU2NvcmUnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTm9ybWFsaXplTWF0Y2hTY29yZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtID0gbm9ybWFsaXplTWF0Y2hTY29yZTtcbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { normalizeMatchState } from './normalize-match-state.util';
3
+ import * as i0 from "@angular/core";
4
+ class NormalizeMatchStatePipe {
5
+ constructor() {
6
+ this.transform = normalizeMatchState;
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchStatePipe, isStandalone: true, name: "etNormalizeMatchState" }); }
10
+ }
11
+ export { NormalizeMatchStatePipe };
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchStatePipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{ name: 'etNormalizeMatchState', standalone: true }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLW1hdGNoLXN0YXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9waXBlcy9ub3JtYWxpemUtbWF0Y2gtc3RhdGUvbm9ybWFsaXplLW1hdGNoLXN0YXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRW5FLE1BQ2EsdUJBQXVCO0lBRHBDO1FBRUUsY0FBUyxHQUFHLG1CQUFtQixDQUFDO0tBQ2pDOzhHQUZZLHVCQUF1Qjs0R0FBdkIsdUJBQXVCOztTQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFEbkMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbm9ybWFsaXplTWF0Y2hTdGF0ZSB9IGZyb20gJy4vbm9ybWFsaXplLW1hdGNoLXN0YXRlLnV0aWwnO1xuXG5AUGlwZSh7IG5hbWU6ICdldE5vcm1hbGl6ZU1hdGNoU3RhdGUnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTm9ybWFsaXplTWF0Y2hTdGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtID0gbm9ybWFsaXplTWF0Y2hTdGF0ZTtcbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { normalizeMatchType } from './normalize-match-type.util';
3
+ import * as i0 from "@angular/core";
4
+ class NormalizeMatchTypePipe {
5
+ constructor() {
6
+ this.transform = normalizeMatchType;
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchTypePipe, isStandalone: true, name: "etNormalizeMatchType" }); }
10
+ }
11
+ export { NormalizeMatchTypePipe };
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NormalizeMatchTypePipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{ name: 'etNormalizeMatchType', standalone: true }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLW1hdGNoLXR5cGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3BpcGVzL25vcm1hbGl6ZS1tYXRjaC10eXBlL25vcm1hbGl6ZS1tYXRjaC10eXBlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRWpFLE1BQ2Esc0JBQXNCO0lBRG5DO1FBRUUsY0FBUyxHQUFHLGtCQUFrQixDQUFDO0tBQ2hDOzhHQUZZLHNCQUFzQjs0R0FBdEIsc0JBQXNCOztTQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFEbEMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbm9ybWFsaXplTWF0Y2hUeXBlIH0gZnJvbSAnLi9ub3JtYWxpemUtbWF0Y2gtdHlwZS51dGlsJztcblxuQFBpcGUoeyBuYW1lOiAnZXROb3JtYWxpemVNYXRjaFR5cGUnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTm9ybWFsaXplTWF0Y2hUeXBlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0gPSBub3JtYWxpemVNYXRjaFR5cGU7XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { toArray } from './to-array.util';
3
+ import * as i0 from "@angular/core";
4
+ class ToArrayPipe {
5
+ constructor() {
6
+ this.transform = toArray;
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" }); }
10
+ }
11
+ export { ToArrayPipe };
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ToArrayPipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{ name: 'toArray', standalone: true }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tYXJyYXkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3BpcGVzL3RvLWFycmF5L3RvLWFycmF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUxQyxNQUNhLFdBQVc7SUFEeEI7UUFFRSxjQUFTLEdBQUcsT0FBTyxDQUFDO0tBQ3JCOzhHQUZZLFdBQVc7NEdBQVgsV0FBVzs7U0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnLi90by1hcnJheS51dGlsJztcblxuQFBpcGUoeyBuYW1lOiAndG9BcnJheScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBUb0FycmF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0gPSB0b0FycmF5O1xufVxuIl19
@@ -0,0 +1,75 @@
1
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
+ import { coerceElement } from '@angular/cdk/coercion';
3
+ import { Injectable } from '@angular/core';
4
+ import { Subject, Observable, fromEvent } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ class ClickObserverFactory {
7
+ create() {
8
+ return fromEvent(document, 'click');
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ClickObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ClickObserverFactory, providedIn: 'root' }); }
12
+ }
13
+ export { ClickObserverFactory };
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ClickObserverFactory, decorators: [{
15
+ type: Injectable,
16
+ args: [{ providedIn: 'root' }]
17
+ }] });
18
+ class ClickObserverService {
19
+ constructor(_clickObserverFactory) {
20
+ this._clickObserverFactory = _clickObserverFactory;
21
+ this._observedElements = new Map();
22
+ }
23
+ ngOnDestroy() {
24
+ this._observedElements.forEach((_, element) => this._cleanupObserver(element));
25
+ }
26
+ observe(elementOrRef) {
27
+ const element = coerceElement(elementOrRef);
28
+ return new Observable((observer) => {
29
+ const stream = this._observeElement(element);
30
+ const subscription = stream.subscribe(observer);
31
+ return () => {
32
+ subscription.unsubscribe();
33
+ this._unobserveElement(element);
34
+ };
35
+ });
36
+ }
37
+ _observeElement(element) {
38
+ if (!this._observedElements.has(element)) {
39
+ const stream = new Subject();
40
+ const observer = this._clickObserverFactory.create();
41
+ const sub = observer.subscribe((event) => stream.next(event));
42
+ this._observedElements.set(element, { observer: sub, stream, count: 1 });
43
+ }
44
+ else {
45
+ this._observedElements.get(element).count++;
46
+ }
47
+ return this._observedElements.get(element).stream;
48
+ }
49
+ _unobserveElement(element) {
50
+ if (this._observedElements.has(element)) {
51
+ this._observedElements.get(element).count--;
52
+ if (!this._observedElements.get(element).count) {
53
+ this._cleanupObserver(element);
54
+ }
55
+ }
56
+ }
57
+ _cleanupObserver(element) {
58
+ if (this._observedElements.has(element)) {
59
+ const { observer, stream } = this._observedElements.get(element);
60
+ if (observer) {
61
+ observer.unsubscribe();
62
+ }
63
+ stream.complete();
64
+ this._observedElements.delete(element);
65
+ }
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ClickObserverService, deps: [{ token: ClickObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }
68
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ClickObserverService, providedIn: 'root' }); }
69
+ }
70
+ export { ClickObserverService };
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ClickObserverService, decorators: [{
72
+ type: Injectable,
73
+ args: [{ providedIn: 'root' }]
74
+ }], ctorParameters: function () { return [{ type: ClickObserverFactory }]; } });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb2JzZXJ2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2NsaWNrLW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBWSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDOztBQUU5RSxNQUNhLG9CQUFvQjtJQUMvQixNQUFNO1FBQ0osT0FBTyxTQUFTLENBQWEsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7OEdBSFUsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FEUCxNQUFNOztTQUNuQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBT2xDLE1BQ2Esb0JBQW9CO0lBVS9CLFlBQW9CLHFCQUEyQztRQUEzQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBVHZELHNCQUFpQixHQUFHLElBQUksR0FBRyxFQU9oQyxDQUFDO0lBRThELENBQUM7SUFFbkUsV0FBVztRQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBSUQsT0FBTyxDQUFDLFlBQTJDO1FBQ2pELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU1QyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsUUFBOEIsRUFBRSxFQUFFO1lBQ3ZELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVoRCxPQUFPLEdBQUcsRUFBRTtnQkFDVixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBZ0I7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztZQUN6QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFckQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRTlELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUU7YUFBTTtZQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDOUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3JELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxPQUFnQjtRQUN4QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxLQUFLLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNoQztTQUNGO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQWdCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFFLENBQUM7WUFDbEUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3hCO1lBQ0QsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDOzhHQWhFVSxvQkFBb0I7a0hBQXBCLG9CQUFvQixjQURQLE1BQU07O1NBQ25CLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cbmltcG9ydCB7IGNvZXJjZUVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBPYnNlcnZlciwgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDbGlja09ic2VydmVyRmFjdG9yeSB7XG4gIGNyZWF0ZSgpIHtcbiAgICByZXR1cm4gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnY2xpY2snKTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENsaWNrT2JzZXJ2ZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZWRFbGVtZW50cyA9IG5ldyBNYXA8XG4gICAgRWxlbWVudCxcbiAgICB7XG4gICAgICBvYnNlcnZlcjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcbiAgICAgIHJlYWRvbmx5IHN0cmVhbTogU3ViamVjdDxNb3VzZUV2ZW50PjtcbiAgICAgIGNvdW50OiBudW1iZXI7XG4gICAgfVxuICA+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2xpY2tPYnNlcnZlckZhY3Rvcnk6IENsaWNrT2JzZXJ2ZXJGYWN0b3J5KSB7fVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZm9yRWFjaCgoXywgZWxlbWVudCkgPT4gdGhpcy5fY2xlYW51cE9ic2VydmVyKGVsZW1lbnQpKTtcbiAgfVxuXG4gIG9ic2VydmUoZWxlbWVudDogRWxlbWVudCk6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIG9ic2VydmUoZWxlbWVudDogRWxlbWVudFJlZjxFbGVtZW50Pik6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIG9ic2VydmUoZWxlbWVudE9yUmVmOiBFbGVtZW50IHwgRWxlbWVudFJlZjxFbGVtZW50Pik6IE9ic2VydmFibGU8TW91c2VFdmVudD4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBjb2VyY2VFbGVtZW50KGVsZW1lbnRPclJlZik7XG5cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBPYnNlcnZlcjxNb3VzZUV2ZW50PikgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gdGhpcy5fb2JzZXJ2ZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBzdHJlYW0uc3Vic2NyaWJlKG9ic2VydmVyKTtcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3Vub2JzZXJ2ZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZUVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IFN1YmplY3Q8TW91c2VFdmVudD4ge1xuICAgIGlmICghdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5oYXMoZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBTdWJqZWN0PE1vdXNlRXZlbnQ+KCk7XG4gICAgICBjb25zdCBvYnNlcnZlciA9IHRoaXMuX2NsaWNrT2JzZXJ2ZXJGYWN0b3J5LmNyZWF0ZSgpO1xuXG4gICAgICBjb25zdCBzdWIgPSBvYnNlcnZlci5zdWJzY3JpYmUoKGV2ZW50KSA9PiBzdHJlYW0ubmV4dChldmVudCkpO1xuXG4gICAgICB0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLnNldChlbGVtZW50LCB7IG9ic2VydmVyOiBzdWIsIHN0cmVhbSwgY291bnQ6IDEgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KGVsZW1lbnQpIS5jb3VudCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQoZWxlbWVudCkhLnN0cmVhbTtcbiAgfVxuXG4gIHByaXZhdGUgX3Vub2JzZXJ2ZUVsZW1lbnQoZWxlbWVudDogRWxlbWVudCkge1xuICAgIGlmICh0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyhlbGVtZW50KSkge1xuICAgICAgdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQoZWxlbWVudCkhLmNvdW50LS07XG4gICAgICBpZiAoIXRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KGVsZW1lbnQpIS5jb3VudCkge1xuICAgICAgICB0aGlzLl9jbGVhbnVwT2JzZXJ2ZXIoZWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYW51cE9ic2VydmVyKGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5oYXMoZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IHsgb2JzZXJ2ZXIsIHN0cmVhbSB9ID0gdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQoZWxlbWVudCkhO1xuICAgICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgIG9ic2VydmVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICBzdHJlYW0uY29tcGxldGUoKTtcbiAgICAgIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZGVsZXRlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,81 @@
1
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
+ import { coerceElement } from '@angular/cdk/coercion';
3
+ import { Injectable } from '@angular/core';
4
+ import { Subject, Observable } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ class MutationObserverFactory {
7
+ create(callback) {
8
+ return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' }); }
12
+ }
13
+ export { MutationObserverFactory };
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MutationObserverFactory, decorators: [{
15
+ type: Injectable,
16
+ args: [{ providedIn: 'root' }]
17
+ }] });
18
+ class ContentObserverService {
19
+ constructor(_mutationObserverFactory) {
20
+ this._mutationObserverFactory = _mutationObserverFactory;
21
+ this._observedElements = new Map();
22
+ }
23
+ ngOnDestroy() {
24
+ this._observedElements.forEach((_, element) => this._cleanupObserver(element));
25
+ }
26
+ observe(elementOrRef) {
27
+ const element = coerceElement(elementOrRef);
28
+ return new Observable((observer) => {
29
+ const stream = this._observeElement(element);
30
+ const subscription = stream.subscribe(observer);
31
+ return () => {
32
+ subscription.unsubscribe();
33
+ this._unobserveElement(element);
34
+ };
35
+ });
36
+ }
37
+ _observeElement(element) {
38
+ if (!this._observedElements.has(element)) {
39
+ const stream = new Subject();
40
+ const observer = this._mutationObserverFactory.create((mutations) => stream.next(mutations));
41
+ if (observer) {
42
+ observer.observe(element, {
43
+ characterData: true,
44
+ childList: true,
45
+ subtree: true,
46
+ });
47
+ }
48
+ this._observedElements.set(element, { observer, stream, count: 1 });
49
+ }
50
+ else {
51
+ this._observedElements.get(element).count++;
52
+ }
53
+ return this._observedElements.get(element).stream;
54
+ }
55
+ _unobserveElement(element) {
56
+ if (this._observedElements.has(element)) {
57
+ this._observedElements.get(element).count--;
58
+ if (!this._observedElements.get(element).count) {
59
+ this._cleanupObserver(element);
60
+ }
61
+ }
62
+ }
63
+ _cleanupObserver(element) {
64
+ if (this._observedElements.has(element)) {
65
+ const { observer, stream } = this._observedElements.get(element);
66
+ if (observer) {
67
+ observer.disconnect();
68
+ }
69
+ stream.complete();
70
+ this._observedElements.delete(element);
71
+ }
72
+ }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentObserverService, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }
74
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentObserverService, providedIn: 'root' }); }
75
+ }
76
+ export { ContentObserverService };
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentObserverService, decorators: [{
78
+ type: Injectable,
79
+ args: [{ providedIn: 'root' }]
80
+ }], ctorParameters: function () { return [{ type: MutationObserverFactory }]; } });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1vYnNlcnZlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VydmljZXMvY29udGVudC1vYnNlcnZlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxNQUFNLENBQUM7O0FBRXJELE1BQ2EsdUJBQXVCO0lBQ2xDLE1BQU0sQ0FBQyxRQUEwQjtRQUMvQixPQUFPLE9BQU8sZ0JBQWdCLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekYsQ0FBQzs4R0FIVSx1QkFBdUI7a0hBQXZCLHVCQUF1QixjQURWLE1BQU07O1NBQ25CLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUFPbEMsTUFDYSxzQkFBc0I7SUFVakMsWUFBb0Isd0JBQWlEO1FBQWpELDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBeUI7UUFUN0Qsc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBT2hDLENBQUM7SUFFb0UsQ0FBQztJQUV6RSxXQUFXO1FBQ1QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFJRCxPQUFPLENBQUMsWUFBMkM7UUFDakQsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTVDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFvQyxFQUFFLEVBQUU7WUFDN0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWhELE9BQU8sR0FBRyxFQUFFO2dCQUNWLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxPQUFnQjtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztZQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDN0YsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7b0JBQ3hCLGFBQWEsRUFBRSxJQUFJO29CQUNuQixTQUFTLEVBQUUsSUFBSTtvQkFDZixPQUFPLEVBQUUsSUFBSTtpQkFDZCxDQUFDLENBQUM7YUFDSjtZQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNyRTthQUFNO1lBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUM5QztRQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxNQUFNLENBQUM7SUFDckQsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQWdCO1FBQ3hDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDLEtBQUssRUFBRTtnQkFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2hDO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBZ0I7UUFDdkMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQztZQUNsRSxJQUFJLFFBQVEsRUFBRTtnQkFDWixRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDdkI7WUFDRCxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7OEdBcEVVLHNCQUFzQjtrSEFBdEIsc0JBQXNCLGNBRFQsTUFBTTs7U0FDbkIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAqL1xuaW1wb3J0IHsgY29lcmNlRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIE9ic2VydmVyIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTXV0YXRpb25PYnNlcnZlckZhY3Rvcnkge1xuICBjcmVhdGUoY2FsbGJhY2s6IE11dGF0aW9uQ2FsbGJhY2spOiBNdXRhdGlvbk9ic2VydmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiBuZXcgTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDb250ZW50T2JzZXJ2ZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZWRFbGVtZW50cyA9IG5ldyBNYXA8XG4gICAgRWxlbWVudCxcbiAgICB7XG4gICAgICBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IG51bGw7XG4gICAgICByZWFkb25seSBzdHJlYW06IFN1YmplY3Q8TXV0YXRpb25SZWNvcmRbXT47XG4gICAgICBjb3VudDogbnVtYmVyO1xuICAgIH1cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX211dGF0aW9uT2JzZXJ2ZXJGYWN0b3J5OiBNdXRhdGlvbk9ic2VydmVyRmFjdG9yeSkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmZvckVhY2goKF8sIGVsZW1lbnQpID0+IHRoaXMuX2NsZWFudXBPYnNlcnZlcihlbGVtZW50KSk7XG4gIH1cblxuICBvYnNlcnZlKGVsZW1lbnQ6IEVsZW1lbnQpOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVjb3JkW10+O1xuICBvYnNlcnZlKGVsZW1lbnQ6IEVsZW1lbnRSZWY8RWxlbWVudD4pOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVjb3JkW10+O1xuICBvYnNlcnZlKGVsZW1lbnRPclJlZjogRWxlbWVudCB8IEVsZW1lbnRSZWY8RWxlbWVudD4pOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVjb3JkW10+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gY29lcmNlRWxlbWVudChlbGVtZW50T3JSZWYpO1xuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcjogT2JzZXJ2ZXI8TXV0YXRpb25SZWNvcmRbXT4pID0+IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuX29ic2VydmVFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gc3RyZWFtLnN1YnNjcmliZShvYnNlcnZlcik7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl91bm9ic2VydmVFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX29ic2VydmVFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpOiBTdWJqZWN0PE11dGF0aW9uUmVjb3JkW10+IHtcbiAgICBpZiAoIXRoaXMuX29ic2VydmVkRWxlbWVudHMuaGFzKGVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBuZXcgU3ViamVjdDxNdXRhdGlvblJlY29yZFtdPigpO1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSB0aGlzLl9tdXRhdGlvbk9ic2VydmVyRmFjdG9yeS5jcmVhdGUoKG11dGF0aW9ucykgPT4gc3RyZWFtLm5leHQobXV0YXRpb25zKSk7XG4gICAgICBpZiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCB7XG4gICAgICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcbiAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLnNldChlbGVtZW50LCB7IG9ic2VydmVyLCBzdHJlYW0sIGNvdW50OiAxIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmdldChlbGVtZW50KSEuY291bnQrKztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KGVsZW1lbnQpIS5zdHJlYW07XG4gIH1cblxuICBwcml2YXRlIF91bm9ic2VydmVFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5oYXMoZWxlbWVudCkpIHtcbiAgICAgIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KGVsZW1lbnQpIS5jb3VudC0tO1xuICAgICAgaWYgKCF0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmdldChlbGVtZW50KSEuY291bnQpIHtcbiAgICAgICAgdGhpcy5fY2xlYW51cE9ic2VydmVyKGVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFudXBPYnNlcnZlcihlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgaWYgKHRoaXMuX29ic2VydmVkRWxlbWVudHMuaGFzKGVsZW1lbnQpKSB7XG4gICAgICBjb25zdCB7IG9ic2VydmVyLCBzdHJlYW0gfSA9IHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KGVsZW1lbnQpITtcbiAgICAgIGlmIChvYnNlcnZlcikge1xuICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgICBzdHJlYW0uY29tcGxldGUoKTtcbiAgICAgIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZGVsZXRlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * @deprecated Will be replaced with the upcoming Angular 16 `DestroyRef` feature.
6
+ */
7
+ // TODO: Replace with Angular 16 `DestroyRef` feature when available.
8
+ class DestroyService {
9
+ constructor() {
10
+ this._destroy$ = new Subject();
11
+ this.destroy$ = this._destroy$.asObservable();
12
+ }
13
+ ngOnDestroy() {
14
+ this._destroy$.next(true);
15
+ this._destroy$.unsubscribe();
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DestroyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
18
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DestroyService }); }
19
+ }
20
+ export { DestroyService };
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DestroyService, decorators: [{
22
+ type: Injectable
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VydmljZXMvZGVzdHJveS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFL0I7O0dBRUc7QUFDSCxxRUFBcUU7QUFDckUsTUFDYSxjQUFjO0lBRDNCO1FBRW1CLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRTNDLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0tBTW5EO0lBSkMsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDL0IsQ0FBQzs4R0FSVSxjQUFjO2tIQUFkLGNBQWM7O1NBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSB1cGNvbWluZyBBbmd1bGFyIDE2IGBEZXN0cm95UmVmYCBmZWF0dXJlLlxuICovXG4vLyBUT0RPOiBSZXBsYWNlIHdpdGggQW5ndWxhciAxNiBgRGVzdHJveVJlZmAgZmVhdHVyZSB3aGVuIGF2YWlsYWJsZS5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZXN0cm95U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICByZWFkb25seSBkZXN0cm95JCA9IHRoaXMuX2Rlc3Ryb3kkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5fZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,35 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ class FocusVisibleService {
5
+ get isFocusVisible() {
6
+ return this._hadKeyboardEvent;
7
+ }
8
+ constructor() {
9
+ this._document = inject(DOCUMENT);
10
+ this._hadKeyboardEvent = false;
11
+ this._document.addEventListener('keydown', this.onKeyDown.bind(this), true);
12
+ this._document.addEventListener('mousedown', this.onPointerDown.bind(this), true);
13
+ this._document.addEventListener('pointerdown', this.onPointerDown.bind(this), true);
14
+ this._document.addEventListener('touchstart', this.onPointerDown.bind(this), true);
15
+ }
16
+ onKeyDown(e) {
17
+ if (e.metaKey || e.altKey || e.ctrlKey) {
18
+ return;
19
+ }
20
+ this._hadKeyboardEvent = true;
21
+ }
22
+ onPointerDown() {
23
+ this._hadKeyboardEvent = false;
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FocusVisibleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FocusVisibleService, providedIn: 'root' }); }
27
+ }
28
+ export { FocusVisibleService };
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FocusVisibleService, decorators: [{
30
+ type: Injectable,
31
+ args: [{
32
+ providedIn: 'root',
33
+ }]
34
+ }], ctorParameters: function () { return []; } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdmlzaWJsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VydmljZXMvZm9jdXMtdmlzaWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFbkQsTUFHYSxtQkFBbUI7SUFLOUIsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFRDtRQVJpQixjQUFTLEdBQUcsTUFBTSxDQUFXLFFBQVEsQ0FBQyxDQUFDO1FBRWhELHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQU9oQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsU0FBUyxDQUFDLENBQWdCO1FBQ3hCLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDdEMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQzs4R0ExQlUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7U0FFUCxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvY3VzVmlzaWJsZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdDxEb2N1bWVudD4oRE9DVU1FTlQpO1xuXG4gIHByaXZhdGUgX2hhZEtleWJvYXJkRXZlbnQgPSBmYWxzZTtcblxuICBnZXQgaXNGb2N1c1Zpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hhZEtleWJvYXJkRXZlbnQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5vbktleURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7XG4gICAgdGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5vblBvaW50ZXJEb3duLmJpbmQodGhpcyksIHRydWUpO1xuICAgIHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgdGhpcy5vblBvaW50ZXJEb3duLmJpbmQodGhpcyksIHRydWUpO1xuICAgIHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLm9uUG9pbnRlckRvd24uYmluZCh0aGlzKSwgdHJ1ZSk7XG4gIH1cblxuICBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChlLm1ldGFLZXkgfHwgZS5hbHRLZXkgfHwgZS5jdHJsS2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faGFkS2V5Ym9hcmRFdmVudCA9IHRydWU7XG4gIH1cblxuICBvblBvaW50ZXJEb3duKCkge1xuICAgIHRoaXMuX2hhZEtleWJvYXJkRXZlbnQgPSBmYWxzZTtcbiAgfVxufVxuIl19