@ng-atomic/common 19.21.7 → 19.24.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 (50) hide show
  1. package/directives/active-control/index.d.ts +52 -0
  2. package/directives/active-control/index.d.ts.map +1 -0
  3. package/fesm2022/ng-atomic-common-directives-active-control.mjs +287 -0
  4. package/fesm2022/ng-atomic-common-directives-active-control.mjs.map +1 -0
  5. package/fesm2022/ng-atomic-common-services-auth.mjs +21 -1
  6. package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
  7. package/fesm2022/ng-atomic-common-services-editing.mjs.map +1 -1
  8. package/fesm2022/ng-atomic-common-services-router.mjs.map +1 -1
  9. package/fesm2022/ng-atomic-common-stores-selection.mjs.map +1 -1
  10. package/fesm2022/ng-atomic-common.mjs +146 -39
  11. package/fesm2022/ng-atomic-common.mjs.map +1 -1
  12. package/index.d.ts +35 -17
  13. package/index.d.ts.map +1 -1
  14. package/interceptors/authorization/index.d.ts.map +1 -1
  15. package/interceptors/token/index.d.ts.map +1 -1
  16. package/models/index.d.ts.map +1 -1
  17. package/package.json +43 -39
  18. package/pipes/data-accessor/index.d.ts.map +1 -1
  19. package/pipes/error/index.d.ts.map +1 -1
  20. package/pipes/pagination/index.d.ts.map +1 -1
  21. package/pipes/select-id/index.d.ts.map +1 -1
  22. package/pipes/signal/index.d.ts.map +1 -1
  23. package/pipes/smart-field/index.d.ts.map +1 -1
  24. package/pipes/style/index.d.ts.map +1 -1
  25. package/services/auth/index.d.ts +6 -7
  26. package/services/auth/index.d.ts.map +1 -1
  27. package/services/breakpoint/index.d.ts.map +1 -1
  28. package/services/editing/index.d.ts +2 -2
  29. package/services/editing/index.d.ts.map +1 -1
  30. package/services/form/columns/index.d.ts.map +1 -1
  31. package/services/form/index.d.ts.map +1 -1
  32. package/services/form/pagination/index.d.ts.map +1 -1
  33. package/services/form/sort/index.d.ts.map +1 -1
  34. package/services/initializer/index.d.ts.map +1 -1
  35. package/services/language/index.d.ts.map +1 -1
  36. package/services/loading/index.d.ts.map +1 -1
  37. package/services/query-resolver/index.d.ts.map +1 -1
  38. package/services/router/index.d.ts +3 -4
  39. package/services/router/index.d.ts.map +1 -1
  40. package/services/side-nav-mode/index.d.ts.map +1 -1
  41. package/services/spreadsheet/index.d.ts.map +1 -1
  42. package/services/ui/index.d.ts.map +1 -1
  43. package/stores/entities/index.d.ts.map +1 -1
  44. package/stores/entity/index.d.ts.map +1 -1
  45. package/stores/pagination/index.d.ts.map +1 -1
  46. package/stores/query/index.d.ts.map +1 -1
  47. package/stores/selection/index.d.ts +7 -7
  48. package/stores/selection/index.d.ts.map +1 -1
  49. package/stores/sort/index.d.ts.map +1 -1
  50. package/utils/index.d.ts.map +1 -1
@@ -0,0 +1,52 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnDestroy } from '@angular/core';
3
+
4
+ /**
5
+ * アクティブ状態を管理するディレクティブ
6
+ *
7
+ * クリックでアクティブ化、外部クリックで非アクティブ化し、
8
+ * スクロール位置の固定やイベント伝播の制御を行います。
9
+ *
10
+ * @example
11
+ * ```html
12
+ * <!-- 単一セレクタ -->
13
+ * <div appActiveControl
14
+ * [scrollSelector]="'.xterm-viewport'"
15
+ * (activeChange)="onActiveChange($event)">
16
+ * <!-- content -->
17
+ * </div>
18
+ *
19
+ * <!-- 複数セレクタ -->
20
+ * <div appActiveControl
21
+ * [scrollSelectors]="['.xterm-viewport', '.qtp-content']"
22
+ * (activeChange)="onActiveChange($event)">
23
+ * <!-- content -->
24
+ * </div>
25
+ * ```
26
+ */
27
+ declare class ActiveControlDirective implements OnDestroy {
28
+ private readonly el;
29
+ readonly scrollSelector: _angular_core.InputSignal<string>;
30
+ readonly scrollSelectors: _angular_core.InputSignal<string[]>;
31
+ /** mousedownでstopPropagationを呼ばない(React Flowなどのドラッグと共存するため) */
32
+ readonly disableStopPropagation: _angular_core.InputSignal<boolean>;
33
+ /** スクロール位置のロックを無効化する(常にスクロール可能にする) */
34
+ readonly disableScrollLock: _angular_core.InputSignal<boolean>;
35
+ /** nodragクラスを付与しない(React Flowのノードでドラッグを有効化するため) */
36
+ readonly disableNodrag: _angular_core.InputSignal<boolean>;
37
+ readonly activeChange: _angular_core.OutputEmitterRef<boolean>;
38
+ readonly isActive: _angular_core.WritableSignal<boolean>;
39
+ private eventCleanupFunctions;
40
+ private scrollCleanupFunctions;
41
+ private eventHandlersInitialized;
42
+ constructor();
43
+ ngOnDestroy(): void;
44
+ private initializeEventHandlers;
45
+ private setupScrollControls;
46
+ private getScrollSelectors;
47
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActiveControlDirective, never>;
48
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ActiveControlDirective, "[appActiveControl]", never, { "scrollSelector": { "alias": "scrollSelector"; "required": false; "isSignal": true; }; "scrollSelectors": { "alias": "scrollSelectors"; "required": false; "isSignal": true; }; "disableStopPropagation": { "alias": "disableStopPropagation"; "required": false; "isSignal": true; }; "disableScrollLock": { "alias": "disableScrollLock"; "required": false; "isSignal": true; }; "disableNodrag": { "alias": "disableNodrag"; "required": false; "isSignal": true; }; }, { "activeChange": "activeChange"; }, never, never, true, never>;
49
+ }
50
+
51
+ export { ActiveControlDirective };
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/active-control.directive.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACH,cAAA,sBAAA,YAAA,SAAA;AAUE;6BACuB,aAAA,CAAA,WAAA;8BACC,aAAA,CAAA,WAAA;;qCAEO,aAAA,CAAA,WAAA;;gCAEL,aAAA,CAAA,WAAA;;4BAEJ,aAAA,CAAA,WAAA;2BACD,aAAA,CAAA,gBAAA;uBACJ,aAAA,CAAA,cAAA;;;;;AAsBjB;AAKA;AAYA;AAiBA;;;AAQD;;;;"}
@@ -0,0 +1,287 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, ElementRef, input, output, signal, effect, Directive } from '@angular/core';
3
+
4
+ class ActiveControlEventHandlers {
5
+ constructor(hostElement, isActive, onActiveChange, options = {}) {
6
+ this.hostElement = hostElement;
7
+ this.isActive = isActive;
8
+ this.onActiveChange = onActiveChange;
9
+ this.options = options;
10
+ this.cleanupFunctions = [];
11
+ }
12
+ setupAll() {
13
+ this.setupClickHandlers();
14
+ this.setupPreventionHandlers();
15
+ return this.cleanupFunctions;
16
+ }
17
+ setupClickHandlers() {
18
+ // ホスト要素クリック
19
+ const mousedownHandler = (e) => {
20
+ this.toggleActive();
21
+ // React Flowなどのドラッグと共存するため、オプションでstopPropagationを無効化
22
+ if (!this.options.disableStopPropagation) {
23
+ e.stopPropagation();
24
+ }
25
+ };
26
+ this.addEventListener(this.hostElement, 'mousedown', mousedownHandler);
27
+ // 外部クリック
28
+ const documentClickListener = (e) => {
29
+ if (!this.hostElement.contains(e.target) && this.isActive()) {
30
+ this.setActive(false);
31
+ }
32
+ };
33
+ document.addEventListener('mousedown', documentClickListener, { capture: true });
34
+ this.cleanupFunctions.push(() => document.removeEventListener('mousedown', documentClickListener, { capture: true }));
35
+ }
36
+ setupPreventionHandlers() {
37
+ // ホイールイベント(スクロール対象要素以外でのみブロック)
38
+ // ただし、ctrlKey + wheel(トラックパッドのピンチズーム)は常にブロック
39
+ // 非アクティブ時はScrollControlがスクロール位置をリセットするため、ここでは処理しない
40
+ this.addEventListener(this.hostElement, 'wheel', (e) => {
41
+ if (this.isActive()) {
42
+ // ctrlKey + wheel = トラックパッドのピンチズーム → 常にブロック
43
+ if (e.ctrlKey) {
44
+ e.preventDefault();
45
+ e.stopPropagation();
46
+ return;
47
+ }
48
+ // 通常のホイールスクロール: スクロール対象要素からのイベントは許可
49
+ const target = e.target;
50
+ const isScrollableElement = this.options.scrollSelectors?.some(selector => target.closest(selector) !== null);
51
+ if (!isScrollableElement) {
52
+ e.preventDefault();
53
+ e.stopPropagation();
54
+ }
55
+ }
56
+ }, { passive: false });
57
+ // タッチイベント(ホスト要素レベル)
58
+ const touchHandler = (e) => {
59
+ if (!this.isActive())
60
+ return;
61
+ // スクロール対象要素からのイベントは許可
62
+ const target = e.target;
63
+ const isScrollableElement = this.options.scrollSelectors?.some(selector => target.closest(selector) !== null);
64
+ if (!isScrollableElement) {
65
+ if (e.touches.length > 1) {
66
+ // ピンチズームなどマルチタッチ操作をブロック
67
+ e.preventDefault();
68
+ e.stopPropagation();
69
+ }
70
+ // シングルタッチはデフォルト動作を許可(スクロールなど)
71
+ }
72
+ };
73
+ this.addEventListener(this.hostElement, 'touchstart', touchHandler, { passive: false });
74
+ this.addEventListener(this.hostElement, 'touchmove', touchHandler, { passive: false });
75
+ // ジェスチャーイベント(ホスト要素レベル)
76
+ const gestureHandler = (e) => {
77
+ if (this.isActive()) {
78
+ e.preventDefault();
79
+ e.stopPropagation();
80
+ }
81
+ };
82
+ ['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {
83
+ this.addEventListener(this.hostElement, eventName, gestureHandler, { passive: false });
84
+ });
85
+ // Document-level capture phaseハンドラ
86
+ // ブラウザのピンチズームがデフォルト動作を行う前にキャッチする
87
+ this.setupDocumentLevelPinchZoomPrevention();
88
+ }
89
+ /**
90
+ * Document-levelでcapture phaseを使ってピンチズームを防止
91
+ * ホスト要素内で発生したマルチタッチ/ジェスチャーイベントのみをブロック
92
+ */
93
+ setupDocumentLevelPinchZoomPrevention() {
94
+ // タッチイベント(capture phase)
95
+ const documentTouchHandler = (e) => {
96
+ if (!this.isActive())
97
+ return;
98
+ if (!this.hostElement.contains(e.target))
99
+ return;
100
+ if (e.touches.length > 1) {
101
+ e.preventDefault();
102
+ }
103
+ };
104
+ document.addEventListener('touchstart', documentTouchHandler, { capture: true, passive: false });
105
+ document.addEventListener('touchmove', documentTouchHandler, { capture: true, passive: false });
106
+ this.cleanupFunctions.push(() => {
107
+ document.removeEventListener('touchstart', documentTouchHandler, { capture: true });
108
+ document.removeEventListener('touchmove', documentTouchHandler, { capture: true });
109
+ });
110
+ // Safari gestureイベント(capture phase)
111
+ const documentGestureHandler = (e) => {
112
+ if (!this.isActive())
113
+ return;
114
+ if (!this.hostElement.contains(e.target))
115
+ return;
116
+ e.preventDefault();
117
+ };
118
+ ['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {
119
+ document.addEventListener(eventName, documentGestureHandler, { capture: true, passive: false });
120
+ this.cleanupFunctions.push(() => document.removeEventListener(eventName, documentGestureHandler, { capture: true }));
121
+ });
122
+ }
123
+ addEventListener(element, event, handler, options) {
124
+ element.addEventListener(event, handler, options);
125
+ this.cleanupFunctions.push(() => element.removeEventListener(event, handler, options));
126
+ }
127
+ toggleActive() {
128
+ this.setActive(!this.isActive());
129
+ }
130
+ setActive(active) {
131
+ this.isActive.set(active);
132
+ this.onActiveChange(active);
133
+ }
134
+ }
135
+
136
+ class ScrollControl {
137
+ constructor(scrollElement, isActive, options = {}) {
138
+ this.scrollElement = scrollElement;
139
+ this.isActive = isActive;
140
+ this.options = options;
141
+ this.lockedScrollTop = 0;
142
+ this.wasActive = false;
143
+ }
144
+ setup() {
145
+ const cleanups = [];
146
+ // アクティブ状態の監視
147
+ const checkActiveState = () => {
148
+ const isActiveNow = this.isActive();
149
+ if (!this.options.disableScrollLock) {
150
+ if (!isActiveNow && this.wasActive) {
151
+ // アクティブ → 非アクティブ: 現在位置をロック
152
+ this.lockedScrollTop = this.scrollElement.scrollTop;
153
+ }
154
+ else if (!isActiveNow) {
155
+ // 継続して非アクティブ: ロック位置を維持
156
+ this.scrollElement.scrollTop = this.lockedScrollTop;
157
+ }
158
+ }
159
+ // アクティブ時 or disableScrollLock時: 何もしない(自由スクロール)
160
+ this.wasActive = isActiveNow;
161
+ this.rafId = requestAnimationFrame(checkActiveState);
162
+ };
163
+ checkActiveState();
164
+ cleanups.push(() => {
165
+ if (this.rafId !== undefined) {
166
+ cancelAnimationFrame(this.rafId);
167
+ }
168
+ });
169
+ // スクロールイベント監視
170
+ const scrollHandler = () => {
171
+ if (!this.options.disableScrollLock && !this.isActive()) {
172
+ this.scrollElement.scrollTop = this.lockedScrollTop;
173
+ }
174
+ };
175
+ this.scrollElement.addEventListener('scroll', scrollHandler);
176
+ cleanups.push(() => this.scrollElement.removeEventListener('scroll', scrollHandler));
177
+ return cleanups;
178
+ }
179
+ }
180
+
181
+ /**
182
+ * アクティブ状態を管理するディレクティブ
183
+ *
184
+ * クリックでアクティブ化、外部クリックで非アクティブ化し、
185
+ * スクロール位置の固定やイベント伝播の制御を行います。
186
+ *
187
+ * @example
188
+ * ```html
189
+ * <!-- 単一セレクタ -->
190
+ * <div appActiveControl
191
+ * [scrollSelector]="'.xterm-viewport'"
192
+ * (activeChange)="onActiveChange($event)">
193
+ * <!-- content -->
194
+ * </div>
195
+ *
196
+ * <!-- 複数セレクタ -->
197
+ * <div appActiveControl
198
+ * [scrollSelectors]="['.xterm-viewport', '.qtp-content']"
199
+ * (activeChange)="onActiveChange($event)">
200
+ * <!-- content -->
201
+ * </div>
202
+ * ```
203
+ */
204
+ class ActiveControlDirective {
205
+ constructor() {
206
+ this.el = inject(ElementRef);
207
+ this.scrollSelector = input();
208
+ this.scrollSelectors = input();
209
+ /** mousedownでstopPropagationを呼ばない(React Flowなどのドラッグと共存するため) */
210
+ this.disableStopPropagation = input(false);
211
+ /** スクロール位置のロックを無効化する(常にスクロール可能にする) */
212
+ this.disableScrollLock = input(false);
213
+ /** nodragクラスを付与しない(React Flowのノードでドラッグを有効化するため) */
214
+ this.disableNodrag = input(false);
215
+ this.activeChange = output();
216
+ this.isActive = signal(false);
217
+ this.eventCleanupFunctions = [];
218
+ this.scrollCleanupFunctions = [];
219
+ this.eventHandlersInitialized = false;
220
+ // イベントハンドラーの初期化(一度だけ)
221
+ effect(() => {
222
+ if (!this.eventHandlersInitialized) {
223
+ setTimeout(() => this.initializeEventHandlers(), 100);
224
+ this.eventHandlersInitialized = true;
225
+ }
226
+ }, { allowSignalWrites: true });
227
+ // スクロール制御の初期化(セレクタが変わるたびに再設定)
228
+ effect(() => {
229
+ const selectors = this.getScrollSelectors();
230
+ setTimeout(() => this.setupScrollControls(selectors), 150);
231
+ });
232
+ }
233
+ ngOnDestroy() {
234
+ this.eventCleanupFunctions.forEach(cleanup => cleanup());
235
+ this.scrollCleanupFunctions.forEach(cleanup => cleanup());
236
+ }
237
+ initializeEventHandlers() {
238
+ const hostElement = this.el.nativeElement;
239
+ const scrollSelectors = this.getScrollSelectors();
240
+ const eventHandlers = new ActiveControlEventHandlers(hostElement, this.isActive, (active) => this.activeChange.emit(active), { disableStopPropagation: this.disableStopPropagation(), scrollSelectors });
241
+ this.eventCleanupFunctions.push(...eventHandlers.setupAll());
242
+ }
243
+ setupScrollControls(selectors) {
244
+ // 既存のスクロール制御をクリーンアップ
245
+ this.scrollCleanupFunctions.forEach(cleanup => cleanup());
246
+ this.scrollCleanupFunctions = [];
247
+ const hostElement = this.el.nativeElement;
248
+ const disableScrollLock = this.disableScrollLock();
249
+ for (const selector of selectors) {
250
+ // querySelectorAll を使用して全てのマッチする要素を取得
251
+ const scrollElements = hostElement.querySelectorAll(selector);
252
+ scrollElements.forEach(scrollElement => {
253
+ const scrollControl = new ScrollControl(scrollElement, this.isActive, { disableScrollLock });
254
+ this.scrollCleanupFunctions.push(...scrollControl.setup());
255
+ });
256
+ }
257
+ }
258
+ getScrollSelectors() {
259
+ const multiple = this.scrollSelectors();
260
+ if (multiple && multiple.length > 0) {
261
+ return multiple;
262
+ }
263
+ const single = this.scrollSelector();
264
+ return single ? [single] : [];
265
+ }
266
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: ActiveControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
267
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.5", type: ActiveControlDirective, isStandalone: true, selector: "[appActiveControl]", inputs: { scrollSelector: { classPropertyName: "scrollSelector", publicName: "scrollSelector", isSignal: true, isRequired: false, transformFunction: null }, scrollSelectors: { classPropertyName: "scrollSelectors", publicName: "scrollSelectors", isSignal: true, isRequired: false, transformFunction: null }, disableStopPropagation: { classPropertyName: "disableStopPropagation", publicName: "disableStopPropagation", isSignal: true, isRequired: false, transformFunction: null }, disableScrollLock: { classPropertyName: "disableScrollLock", publicName: "disableScrollLock", isSignal: true, isRequired: false, transformFunction: null }, disableNodrag: { classPropertyName: "disableNodrag", publicName: "disableNodrag", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeChange: "activeChange" }, host: { properties: { "class.active": "isActive()", "class.nodrag": "!disableNodrag()", "class.nowheel": "isActive()" } }, ngImport: i0 }); }
268
+ }
269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: ActiveControlDirective, decorators: [{
270
+ type: Directive,
271
+ args: [{
272
+ selector: '[appActiveControl]',
273
+ standalone: true,
274
+ host: {
275
+ '[class.active]': 'isActive()',
276
+ '[class.nodrag]': '!disableNodrag()',
277
+ '[class.nowheel]': 'isActive()',
278
+ }
279
+ }]
280
+ }], ctorParameters: () => [] });
281
+
282
+ /**
283
+ * Generated bundle index. Do not edit.
284
+ */
285
+
286
+ export { ActiveControlDirective };
287
+ //# sourceMappingURL=ng-atomic-common-directives-active-control.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-atomic-common-directives-active-control.mjs","sources":["../tmp-esm2022/directives/active-control/handlers/event-handlers.js","../tmp-esm2022/directives/active-control/handlers/scroll-control.js","../tmp-esm2022/directives/active-control/active-control.directive.js","../tmp-esm2022/directives/active-control/ng-atomic-common-directives-active-control.js"],"sourcesContent":["export class ActiveControlEventHandlers {\n constructor(hostElement, isActive, onActiveChange, options = {}) {\n this.hostElement = hostElement;\n this.isActive = isActive;\n this.onActiveChange = onActiveChange;\n this.options = options;\n this.cleanupFunctions = [];\n }\n setupAll() {\n this.setupClickHandlers();\n this.setupPreventionHandlers();\n return this.cleanupFunctions;\n }\n setupClickHandlers() {\n // ホスト要素クリック\n const mousedownHandler = (e) => {\n this.toggleActive();\n // React Flowなどのドラッグと共存するため、オプションでstopPropagationを無効化\n if (!this.options.disableStopPropagation) {\n e.stopPropagation();\n }\n };\n this.addEventListener(this.hostElement, 'mousedown', mousedownHandler);\n // 外部クリック\n const documentClickListener = (e) => {\n if (!this.hostElement.contains(e.target) && this.isActive()) {\n this.setActive(false);\n }\n };\n document.addEventListener('mousedown', documentClickListener, { capture: true });\n this.cleanupFunctions.push(() => document.removeEventListener('mousedown', documentClickListener, { capture: true }));\n }\n setupPreventionHandlers() {\n // ホイールイベント(スクロール対象要素以外でのみブロック)\n // ただし、ctrlKey + wheel(トラックパッドのピンチズーム)は常にブロック\n // 非アクティブ時はScrollControlがスクロール位置をリセットするため、ここでは処理しない\n this.addEventListener(this.hostElement, 'wheel', (e) => {\n if (this.isActive()) {\n // ctrlKey + wheel = トラックパッドのピンチズーム → 常にブロック\n if (e.ctrlKey) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n // 通常のホイールスクロール: スクロール対象要素からのイベントは許可\n const target = e.target;\n const isScrollableElement = this.options.scrollSelectors?.some(selector => target.closest(selector) !== null);\n if (!isScrollableElement) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }, { passive: false });\n // タッチイベント(ホスト要素レベル)\n const touchHandler = (e) => {\n if (!this.isActive())\n return;\n // スクロール対象要素からのイベントは許可\n const target = e.target;\n const isScrollableElement = this.options.scrollSelectors?.some(selector => target.closest(selector) !== null);\n if (!isScrollableElement) {\n if (e.touches.length > 1) {\n // ピンチズームなどマルチタッチ操作をブロック\n e.preventDefault();\n e.stopPropagation();\n }\n // シングルタッチはデフォルト動作を許可(スクロールなど)\n }\n };\n this.addEventListener(this.hostElement, 'touchstart', touchHandler, { passive: false });\n this.addEventListener(this.hostElement, 'touchmove', touchHandler, { passive: false });\n // ジェスチャーイベント(ホスト要素レベル)\n const gestureHandler = (e) => {\n if (this.isActive()) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n ['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {\n this.addEventListener(this.hostElement, eventName, gestureHandler, { passive: false });\n });\n // Document-level capture phaseハンドラ\n // ブラウザのピンチズームがデフォルト動作を行う前にキャッチする\n this.setupDocumentLevelPinchZoomPrevention();\n }\n /**\n * Document-levelでcapture phaseを使ってピンチズームを防止\n * ホスト要素内で発生したマルチタッチ/ジェスチャーイベントのみをブロック\n */\n setupDocumentLevelPinchZoomPrevention() {\n // タッチイベント(capture phase)\n const documentTouchHandler = (e) => {\n if (!this.isActive())\n return;\n if (!this.hostElement.contains(e.target))\n return;\n if (e.touches.length > 1) {\n e.preventDefault();\n }\n };\n document.addEventListener('touchstart', documentTouchHandler, { capture: true, passive: false });\n document.addEventListener('touchmove', documentTouchHandler, { capture: true, passive: false });\n this.cleanupFunctions.push(() => {\n document.removeEventListener('touchstart', documentTouchHandler, { capture: true });\n document.removeEventListener('touchmove', documentTouchHandler, { capture: true });\n });\n // Safari gestureイベント(capture phase)\n const documentGestureHandler = (e) => {\n if (!this.isActive())\n return;\n if (!this.hostElement.contains(e.target))\n return;\n e.preventDefault();\n };\n ['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {\n document.addEventListener(eventName, documentGestureHandler, { capture: true, passive: false });\n this.cleanupFunctions.push(() => document.removeEventListener(eventName, documentGestureHandler, { capture: true }));\n });\n }\n addEventListener(element, event, handler, options) {\n element.addEventListener(event, handler, options);\n this.cleanupFunctions.push(() => element.removeEventListener(event, handler, options));\n }\n toggleActive() {\n this.setActive(!this.isActive());\n }\n setActive(active) {\n this.isActive.set(active);\n this.onActiveChange(active);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtaGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL2RpcmVjdGl2ZXMvYWN0aXZlLWNvbnRyb2wvaGFuZGxlcnMvZXZlbnQtaGFuZGxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQyxZQUNVLFdBQXdCLEVBQ3hCLFFBQWlDLEVBQ2pDLGNBQXlDLEVBQ3pDLFVBQWdDLEVBQUU7UUFIbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBeUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQTJCO1FBQ3pDLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBTnBDLHFCQUFnQixHQUFzQixFQUFFLENBQUM7SUFPOUMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLFlBQVk7UUFDWixNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBYSxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLHFEQUFxRDtZQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUN6QyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXZFLFNBQVM7UUFDVCxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBYSxFQUFFLEVBQUU7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QWEsRUFDYixPQUFzQixFQUN0QixPQUFpQztRQUVqQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTyxTQUFTLENBQUMsTUFBZTtRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgQ2xlYW51cEZ1bmN0aW9uID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVDb250cm9sT3B0aW9ucyB7XG4gIC8qKiBtb3VzZWRvd27jgadzdG9wUHJvcGFnYXRpb27jgpLlkbzjgbDjgarjgYQgKi9cbiAgZGlzYWJsZVN0b3BQcm9wYWdhdGlvbj86IGJvb2xlYW47XG4gIC8qKiDjgrnjgq/jg63jg7zjg6vjgpLoqLHlj6/jgZnjgovopoHntKDjga7jgrvjg6zjgq/jgr8gKi9cbiAgc2Nyb2xsU2VsZWN0b3JzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBBY3RpdmVDb250cm9sRXZlbnRIYW5kbGVycyB7XG4gIHByaXZhdGUgY2xlYW51cEZ1bmN0aW9uczogQ2xlYW51cEZ1bmN0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBwcml2YXRlIGlzQWN0aXZlOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPixcbiAgICBwcml2YXRlIG9uQWN0aXZlQ2hhbmdlOiAoYWN0aXZlOiBib29sZWFuKSA9PiB2b2lkLFxuICAgIHByaXZhdGUgb3B0aW9uczogQWN0aXZlQ29udHJvbE9wdGlvbnMgPSB7fVxuICApIHt9XG5cbiAgc2V0dXBBbGwoKTogQ2xlYW51cEZ1bmN0aW9uW10ge1xuICAgIHRoaXMuc2V0dXBDbGlja0hhbmRsZXJzKCk7XG4gICAgdGhpcy5zZXR1cFByZXZlbnRpb25IYW5kbGVycygpO1xuICAgIHJldHVybiB0aGlzLmNsZWFudXBGdW5jdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ2xpY2tIYW5kbGVycygpOiB2b2lkIHtcbiAgICAvLyDjg5vjgrnjg4jopoHntKDjgq/jg6rjg4Pjgq9cbiAgICBjb25zdCBtb3VzZWRvd25IYW5kbGVyID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIHRoaXMudG9nZ2xlQWN0aXZlKCk7XG4gICAgICAvLyBSZWFjdCBGbG9344Gq44Gp44Gu44OJ44Op44OD44Kw44Go5YWx5a2Y44GZ44KL44Gf44KB44CB44Kq44OX44K344On44Oz44Gnc3RvcFByb3BhZ2F0aW9u44KS54Sh5Yq55YyWXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5kaXNhYmxlU3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5ob3N0RWxlbWVudCwgJ21vdXNlZG93bicsIG1vdXNlZG93bkhhbmRsZXIpO1xuXG4gICAgLy8g5aSW6YOo44Kv44Oq44OD44KvXG4gICAgY29uc3QgZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5ob3N0RWxlbWVudC5jb250YWlucyhlLnRhcmdldCBhcyBOb2RlKSAmJiB0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmUoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZG9jdW1lbnRDbGlja0xpc3RlbmVyLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgdGhpcy5jbGVhbnVwRnVuY3Rpb25zLnB1c2goKCkgPT5cbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGRvY3VtZW50Q2xpY2tMaXN0ZW5lciwgeyBjYXB0dXJlOiB0cnVlIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBQcmV2ZW50aW9uSGFuZGxlcnMoKTogdm9pZCB7XG4gICAgLy8g44Ob44Kk44O844Or44Kk44OZ44Oz44OI77yI44K544Kv44Ot44O844Or5a++6LGh6KaB57Sg5Lul5aSW44Gn44Gu44G/44OW44Ot44OD44Kv77yJXG4gICAgLy8g44Gf44Gg44GX44CBY3RybEtleSArIHdoZWVs77yI44OI44Op44OD44Kv44OR44OD44OJ44Gu44OU44Oz44OB44K644O844Og77yJ44Gv5bi444Gr44OW44Ot44OD44KvXG4gICAgLy8g6Z2e44Ki44Kv44OG44Kj44OW5pmC44GvU2Nyb2xsQ29udHJvbOOBjOOCueOCr+ODreODvOODq+S9jee9ruOCkuODquOCu+ODg+ODiOOBmeOCi+OBn+OCgeOAgeOBk+OBk+OBp+OBr+WHpueQhuOBl+OBquOBhFxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmhvc3RFbGVtZW50LCAnd2hlZWwnLCAoZTogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNBY3RpdmUoKSkge1xuICAgICAgICAvLyBjdHJsS2V5ICsgd2hlZWwgPSDjg4jjg6njg4Pjgq/jg5Hjg4Pjg4njga7jg5Tjg7Pjg4Hjgrrjg7zjg6Ag4oaSIOW4uOOBq+ODluODreODg+OCr1xuICAgICAgICBpZiAoZS5jdHJsS2V5KSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g6YCa5bi444Gu44Ob44Kk44O844Or44K544Kv44Ot44O844OrOiDjgrnjgq/jg63jg7zjg6vlr77osaHopoHntKDjgYvjgonjga7jgqTjg5njg7Pjg4jjga/oqLHlj69cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGlzU2Nyb2xsYWJsZUVsZW1lbnQgPSB0aGlzLm9wdGlvbnMuc2Nyb2xsU2VsZWN0b3JzPy5zb21lKHNlbGVjdG9yID0+XG4gICAgICAgICAgdGFyZ2V0LmNsb3Nlc3Qoc2VsZWN0b3IpICE9PSBudWxsXG4gICAgICAgICk7XG4gICAgICAgIGlmICghaXNTY3JvbGxhYmxlRWxlbWVudCkge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcblxuICAgIC8vIOOCv+ODg+ODgeOCpOODmeODs+ODiO+8iOODm+OCueODiOimgee0oOODrOODmeODq++8iVxuICAgIGNvbnN0IHRvdWNoSGFuZGxlciA9IChlOiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNBY3RpdmUoKSkgcmV0dXJuO1xuXG4gICAgICAvLyDjgrnjgq/jg63jg7zjg6vlr77osaHopoHntKDjgYvjgonjga7jgqTjg5njg7Pjg4jjga/oqLHlj69cbiAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgaXNTY3JvbGxhYmxlRWxlbWVudCA9IHRoaXMub3B0aW9ucy5zY3JvbGxTZWxlY3RvcnM/LnNvbWUoc2VsZWN0b3IgPT5cbiAgICAgICAgdGFyZ2V0LmNsb3Nlc3Qoc2VsZWN0b3IpICE9PSBudWxsXG4gICAgICApO1xuICAgICAgaWYgKCFpc1Njcm9sbGFibGVFbGVtZW50KSB7XG4gICAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIC8vIOODlOODs+ODgeOCuuODvOODoOOBquOBqeODnuODq+ODgeOCv+ODg+ODgeaTjeS9nOOCkuODluODreODg+OCr1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOOCt+ODs+OCsOODq+OCv+ODg+ODgeOBr+ODh+ODleOCqeODq+ODiOWLleS9nOOCkuioseWPr++8iOOCueOCr+ODreODvOODq+OBquOBqe+8iVxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHRoaXMuaG9zdEVsZW1lbnQsICd0b3VjaHN0YXJ0JywgdG91Y2hIYW5kbGVyLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmhvc3RFbGVtZW50LCAndG91Y2htb3ZlJywgdG91Y2hIYW5kbGVyLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuXG4gICAgLy8g44K444Kn44K544OB44Oj44O844Kk44OZ44Oz44OI77yI44Ob44K544OI6KaB57Sg44Os44OZ44Or77yJXG4gICAgY29uc3QgZ2VzdHVyZUhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH07XG4gICAgWydnZXN0dXJlc3RhcnQnLCAnZ2VzdHVyZWNoYW5nZScsICdnZXN0dXJlZW5kJ10uZm9yRWFjaChldmVudE5hbWUgPT4ge1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHRoaXMuaG9zdEVsZW1lbnQsIGV2ZW50TmFtZSwgZ2VzdHVyZUhhbmRsZXIsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBEb2N1bWVudC1sZXZlbCBjYXB0dXJlIHBoYXNl44OP44Oz44OJ44OpXG4gICAgLy8g44OW44Op44Km44K244Gu44OU44Oz44OB44K644O844Og44GM44OH44OV44Kp44Or44OI5YuV5L2c44KS6KGM44GG5YmN44Gr44Kt44Oj44OD44OB44GZ44KLXG4gICAgdGhpcy5zZXR1cERvY3VtZW50TGV2ZWxQaW5jaFpvb21QcmV2ZW50aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogRG9jdW1lbnQtbGV2ZWzjgadjYXB0dXJlIHBoYXNl44KS5L2/44Gj44Gm44OU44Oz44OB44K644O844Og44KS6Ziy5q2iXG4gICAqIOODm+OCueODiOimgee0oOWGheOBp+eZuueUn+OBl+OBn+ODnuODq+ODgeOCv+ODg+ODgS/jgrjjgqfjgrnjg4Hjg6Pjg7zjgqTjg5njg7Pjg4jjga7jgb/jgpLjg5bjg63jg4Pjgq9cbiAgICovXG4gIHByaXZhdGUgc2V0dXBEb2N1bWVudExldmVsUGluY2hab29tUHJldmVudGlvbigpOiB2b2lkIHtcbiAgICAvLyDjgr/jg4Pjg4HjgqTjg5njg7Pjg4jvvIhjYXB0dXJlIHBoYXNl77yJXG4gICAgY29uc3QgZG9jdW1lbnRUb3VjaEhhbmRsZXIgPSAoZTogVG91Y2hFdmVudCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKCkpIHJldHVybjtcbiAgICAgIGlmICghdGhpcy5ob3N0RWxlbWVudC5jb250YWlucyhlLnRhcmdldCBhcyBOb2RlKSkgcmV0dXJuO1xuXG4gICAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZG9jdW1lbnRUb3VjaEhhbmRsZXIsIHsgY2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgZG9jdW1lbnRUb3VjaEhhbmRsZXIsIHsgY2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2UgfSk7XG5cbiAgICB0aGlzLmNsZWFudXBGdW5jdGlvbnMucHVzaCgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZG9jdW1lbnRUb3VjaEhhbmRsZXIsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGRvY3VtZW50VG91Y2hIYW5kbGVyLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBTYWZhcmkgZ2VzdHVyZeOCpOODmeODs+ODiO+8iGNhcHR1cmUgcGhhc2XvvIlcbiAgICBjb25zdCBkb2N1bWVudEdlc3R1cmVIYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNBY3RpdmUoKSkgcmV0dXJuO1xuICAgICAgaWYgKCF0aGlzLmhvc3RFbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpKSByZXR1cm47XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcblxuICAgIFsnZ2VzdHVyZXN0YXJ0JywgJ2dlc3R1cmVjaGFuZ2UnLCAnZ2VzdHVyZWVuZCddLmZvckVhY2goZXZlbnROYW1lID0+IHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBkb2N1bWVudEdlc3R1cmVIYW5kbGVyLCB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5jbGVhbnVwRnVuY3Rpb25zLnB1c2goKCkgPT5cbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGRvY3VtZW50R2VzdHVyZUhhbmRsZXIsIHsgY2FwdHVyZTogdHJ1ZSB9KVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRXZlbnRMaXN0ZW5lcihcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IERvY3VtZW50LFxuICAgIGV2ZW50OiBzdHJpbmcsXG4gICAgaGFuZGxlcjogRXZlbnRMaXN0ZW5lcixcbiAgICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNcbiAgKTogdm9pZCB7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgICB0aGlzLmNsZWFudXBGdW5jdGlvbnMucHVzaCgoKSA9PiBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlQWN0aXZlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0QWN0aXZlKCF0aGlzLmlzQWN0aXZlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmUoYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0FjdGl2ZS5zZXQoYWN0aXZlKTtcbiAgICB0aGlzLm9uQWN0aXZlQ2hhbmdlKGFjdGl2ZSk7XG4gIH1cbn1cbiJdfQ==","export class ScrollControl {\n constructor(scrollElement, isActive, options = {}) {\n this.scrollElement = scrollElement;\n this.isActive = isActive;\n this.options = options;\n this.lockedScrollTop = 0;\n this.wasActive = false;\n }\n setup() {\n const cleanups = [];\n // アクティブ状態の監視\n const checkActiveState = () => {\n const isActiveNow = this.isActive();\n if (!this.options.disableScrollLock) {\n if (!isActiveNow && this.wasActive) {\n // アクティブ → 非アクティブ: 現在位置をロック\n this.lockedScrollTop = this.scrollElement.scrollTop;\n }\n else if (!isActiveNow) {\n // 継続して非アクティブ: ロック位置を維持\n this.scrollElement.scrollTop = this.lockedScrollTop;\n }\n }\n // アクティブ時 or disableScrollLock時: 何もしない(自由スクロール)\n this.wasActive = isActiveNow;\n this.rafId = requestAnimationFrame(checkActiveState);\n };\n checkActiveState();\n cleanups.push(() => {\n if (this.rafId !== undefined) {\n cancelAnimationFrame(this.rafId);\n }\n });\n // スクロールイベント監視\n const scrollHandler = () => {\n if (!this.options.disableScrollLock && !this.isActive()) {\n this.scrollElement.scrollTop = this.lockedScrollTop;\n }\n };\n this.scrollElement.addEventListener('scroll', scrollHandler);\n cleanups.push(() => this.scrollElement.removeEventListener('scroll', scrollHandler));\n return cleanups;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL2RpcmVjdGl2ZXMvYWN0aXZlLWNvbnRyb2wvaGFuZGxlcnMvc2Nyb2xsLWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxPQUFPLGFBQWE7SUFLeEIsWUFDVSxhQUEwQixFQUMxQixRQUF5QixFQUN6QixVQUFnQyxFQUFFO1FBRmxDLGtCQUFhLEdBQWIsYUFBYSxDQUFhO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBUHBDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFPdkIsQ0FBQztJQUVKLEtBQUs7UUFDSCxNQUFNLFFBQVEsR0FBc0IsRUFBRSxDQUFDO1FBRXZDLGFBQWE7UUFDYixNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRTtZQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ25DLDJCQUEyQjtvQkFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztnQkFDdEQsQ0FBQztxQkFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3hCLHVCQUF1QjtvQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDdEQsQ0FBQztZQUNILENBQUM7WUFDRCwrQ0FBK0M7WUFFL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7WUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQztRQUNGLGdCQUFnQixFQUFFLENBQUM7UUFDbkIsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM3QixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsY0FBYztRQUNkLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ3RELENBQUM7UUFDSCxDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM3RCxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFFckYsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbGVhbnVwRnVuY3Rpb24gfSBmcm9tICcuL2V2ZW50LWhhbmRsZXJzJztcblxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxDb250cm9sT3B0aW9ucyB7XG4gIC8qKiDjgrnjgq/jg63jg7zjg6vkvY3nva7jga7jg63jg4Pjgq/jgpLnhKHlirnljJbjgZnjgovvvIjluLjjgavjgrnjgq/jg63jg7zjg6vlj6/og73jgavjgZnjgovvvIkgKi9cbiAgZGlzYWJsZVNjcm9sbExvY2s/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgU2Nyb2xsQ29udHJvbCB7XG4gIHByaXZhdGUgbG9ja2VkU2Nyb2xsVG9wID0gMDtcbiAgcHJpdmF0ZSB3YXNBY3RpdmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSByYWZJZD86IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjcm9sbEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIHByaXZhdGUgaXNBY3RpdmU6IFNpZ25hbDxib29sZWFuPixcbiAgICBwcml2YXRlIG9wdGlvbnM6IFNjcm9sbENvbnRyb2xPcHRpb25zID0ge31cbiAgKSB7fVxuXG4gIHNldHVwKCk6IENsZWFudXBGdW5jdGlvbltdIHtcbiAgICBjb25zdCBjbGVhbnVwczogQ2xlYW51cEZ1bmN0aW9uW10gPSBbXTtcblxuICAgIC8vIOOCouOCr+ODhuOCo+ODlueKtuaFi+OBruebo+imllxuICAgIGNvbnN0IGNoZWNrQWN0aXZlU3RhdGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpc0FjdGl2ZU5vdyA9IHRoaXMuaXNBY3RpdmUoKTtcblxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZGlzYWJsZVNjcm9sbExvY2spIHtcbiAgICAgICAgaWYgKCFpc0FjdGl2ZU5vdyAmJiB0aGlzLndhc0FjdGl2ZSkge1xuICAgICAgICAgIC8vIOOCouOCr+ODhuOCo+ODliDihpIg6Z2e44Ki44Kv44OG44Kj44OWOiDnj77lnKjkvY3nva7jgpLjg63jg4Pjgq9cbiAgICAgICAgICB0aGlzLmxvY2tlZFNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzQWN0aXZlTm93KSB7XG4gICAgICAgICAgLy8g57aZ57aa44GX44Gm6Z2e44Ki44Kv44OG44Kj44OWOiDjg63jg4Pjgq/kvY3nva7jgpLntq3mjIFcbiAgICAgICAgICB0aGlzLnNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5sb2NrZWRTY3JvbGxUb3A7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIOOCouOCr+ODhuOCo+ODluaZgiBvciBkaXNhYmxlU2Nyb2xsTG9ja+aZgjog5L2V44KC44GX44Gq44GE77yI6Ieq55Sx44K544Kv44Ot44O844Or77yJXG5cbiAgICAgIHRoaXMud2FzQWN0aXZlID0gaXNBY3RpdmVOb3c7XG4gICAgICB0aGlzLnJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNoZWNrQWN0aXZlU3RhdGUpO1xuICAgIH07XG4gICAgY2hlY2tBY3RpdmVTdGF0ZSgpO1xuICAgIGNsZWFudXBzLnB1c2goKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucmFmSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnJhZklkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIOOCueOCr+ODreODvOODq+OCpOODmeODs+ODiOebo+imllxuICAgIGNvbnN0IHNjcm9sbEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5kaXNhYmxlU2Nyb2xsTG9jayAmJiAhdGhpcy5pc0FjdGl2ZSgpKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLmxvY2tlZFNjcm9sbFRvcDtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuc2Nyb2xsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxIYW5kbGVyKTtcbiAgICBjbGVhbnVwcy5wdXNoKCgpID0+IHRoaXMuc2Nyb2xsRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxIYW5kbGVyKSk7XG5cbiAgICByZXR1cm4gY2xlYW51cHM7XG4gIH1cbn1cbiJdfQ==","import { Directive, ElementRef, input, output, effect, signal, inject } from '@angular/core';\nimport { ActiveControlEventHandlers, ScrollControl } from './handlers';\nimport * as i0 from \"@angular/core\";\n/**\n * アクティブ状態を管理するディレクティブ\n *\n * クリックでアクティブ化、外部クリックで非アクティブ化し、\n * スクロール位置の固定やイベント伝播の制御を行います。\n *\n * @example\n * ```html\n * <!-- 単一セレクタ -->\n * <div appActiveControl\n * [scrollSelector]=\"'.xterm-viewport'\"\n * (activeChange)=\"onActiveChange($event)\">\n * <!-- content -->\n * </div>\n *\n * <!-- 複数セレクタ -->\n * <div appActiveControl\n * [scrollSelectors]=\"['.xterm-viewport', '.qtp-content']\"\n * (activeChange)=\"onActiveChange($event)\">\n * <!-- content -->\n * </div>\n * ```\n */\nexport class ActiveControlDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.scrollSelector = input();\n this.scrollSelectors = input();\n /** mousedownでstopPropagationを呼ばない(React Flowなどのドラッグと共存するため) */\n this.disableStopPropagation = input(false);\n /** スクロール位置のロックを無効化する(常にスクロール可能にする) */\n this.disableScrollLock = input(false);\n /** nodragクラスを付与しない(React Flowのノードでドラッグを有効化するため) */\n this.disableNodrag = input(false);\n this.activeChange = output();\n this.isActive = signal(false);\n this.eventCleanupFunctions = [];\n this.scrollCleanupFunctions = [];\n this.eventHandlersInitialized = false;\n // イベントハンドラーの初期化(一度だけ)\n effect(() => {\n if (!this.eventHandlersInitialized) {\n setTimeout(() => this.initializeEventHandlers(), 100);\n this.eventHandlersInitialized = true;\n }\n }, { allowSignalWrites: true });\n // スクロール制御の初期化(セレクタが変わるたびに再設定)\n effect(() => {\n const selectors = this.getScrollSelectors();\n setTimeout(() => this.setupScrollControls(selectors), 150);\n });\n }\n ngOnDestroy() {\n this.eventCleanupFunctions.forEach(cleanup => cleanup());\n this.scrollCleanupFunctions.forEach(cleanup => cleanup());\n }\n initializeEventHandlers() {\n const hostElement = this.el.nativeElement;\n const scrollSelectors = this.getScrollSelectors();\n const eventHandlers = new ActiveControlEventHandlers(hostElement, this.isActive, (active) => this.activeChange.emit(active), { disableStopPropagation: this.disableStopPropagation(), scrollSelectors });\n this.eventCleanupFunctions.push(...eventHandlers.setupAll());\n }\n setupScrollControls(selectors) {\n // 既存のスクロール制御をクリーンアップ\n this.scrollCleanupFunctions.forEach(cleanup => cleanup());\n this.scrollCleanupFunctions = [];\n const hostElement = this.el.nativeElement;\n const disableScrollLock = this.disableScrollLock();\n for (const selector of selectors) {\n // querySelectorAll を使用して全てのマッチする要素を取得\n const scrollElements = hostElement.querySelectorAll(selector);\n scrollElements.forEach(scrollElement => {\n const scrollControl = new ScrollControl(scrollElement, this.isActive, { disableScrollLock });\n this.scrollCleanupFunctions.push(...scrollControl.setup());\n });\n }\n }\n getScrollSelectors() {\n const multiple = this.scrollSelectors();\n if (multiple && multiple.length > 0) {\n return multiple;\n }\n const single = this.scrollSelector();\n return single ? [single] : [];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ActiveControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: ActiveControlDirective, isStandalone: true, selector: \"[appActiveControl]\", inputs: { scrollSelector: { classPropertyName: \"scrollSelector\", publicName: \"scrollSelector\", isSignal: true, isRequired: false, transformFunction: null }, scrollSelectors: { classPropertyName: \"scrollSelectors\", publicName: \"scrollSelectors\", isSignal: true, isRequired: false, transformFunction: null }, disableStopPropagation: { classPropertyName: \"disableStopPropagation\", publicName: \"disableStopPropagation\", isSignal: true, isRequired: false, transformFunction: null }, disableScrollLock: { classPropertyName: \"disableScrollLock\", publicName: \"disableScrollLock\", isSignal: true, isRequired: false, transformFunction: null }, disableNodrag: { classPropertyName: \"disableNodrag\", publicName: \"disableNodrag\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeChange: \"activeChange\" }, host: { properties: { \"class.active\": \"isActive()\", \"class.nodrag\": \"!disableNodrag()\", \"class.nowheel\": \"isActive()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ActiveControlDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[appActiveControl]',\n standalone: true,\n host: {\n '[class.active]': 'isActive()',\n '[class.nodrag]': '!disableNodrag()',\n '[class.nowheel]': 'isActive()',\n }\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWNvbnRyb2wuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2FjdGl2ZS1jb250cm9sL2FjdGl2ZS1jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7O0FBRXZFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBVUgsTUFBTSxPQUFPLHNCQUFzQjtJQWlCakM7UUFoQmlCLE9BQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNqQyxvQkFBZSxHQUFHLEtBQUssRUFBWSxDQUFDO1FBQzdDLCtEQUErRDtRQUN0RCwyQkFBc0IsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDeEQsc0NBQXNDO1FBQzdCLHNCQUFpQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNuRCxtREFBbUQ7UUFDMUMsa0JBQWEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdEMsaUJBQVksR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUNqQyxhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRW5DLDBCQUFxQixHQUFtQixFQUFFLENBQUM7UUFDM0MsMkJBQXNCLEdBQW1CLEVBQUUsQ0FBQztRQUM1Qyw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFHdkMsc0JBQXNCO1FBQ3RCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ25DLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVoQyw4QkFBOEI7UUFDOUIsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUE0QixDQUFDO1FBQ3pELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2xELE1BQU0sYUFBYSxHQUFHLElBQUksMEJBQTBCLENBQ2xELFdBQVcsRUFDWCxJQUFJLENBQUMsUUFBUSxFQUNiLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFDMUMsRUFBRSxzQkFBc0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FDM0UsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsU0FBbUI7UUFDN0MscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFFakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUE0QixDQUFDO1FBQ3pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDbkQsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNqQyxzQ0FBc0M7WUFDdEMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFjLFFBQVEsQ0FBQyxDQUFDO1lBQzNFLGNBQWMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEMsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEMsQ0FBQzs4R0ExRVUsc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBVGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixnQkFBZ0IsRUFBRSxZQUFZO3dCQUM5QixnQkFBZ0IsRUFBRSxrQkFBa0I7d0JBQ3BDLGlCQUFpQixFQUFFLFlBQVk7cUJBQ2hDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbnB1dCwgb3V0cHV0LCBlZmZlY3QsIHNpZ25hbCwgT25EZXN0cm95LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2ZUNvbnRyb2xFdmVudEhhbmRsZXJzLCBTY3JvbGxDb250cm9sIH0gZnJvbSAnLi9oYW5kbGVycyc7XG5cbi8qKlxuICog44Ki44Kv44OG44Kj44OW54q25oWL44KS566h55CG44GZ44KL44OH44Kj44Os44Kv44OG44Kj44OWXG4gKlxuICog44Kv44Oq44OD44Kv44Gn44Ki44Kv44OG44Kj44OW5YyW44CB5aSW6YOo44Kv44Oq44OD44Kv44Gn6Z2e44Ki44Kv44OG44Kj44OW5YyW44GX44CBXG4gKiDjgrnjgq/jg63jg7zjg6vkvY3nva7jga7lm7rlrprjgoTjgqTjg5njg7Pjg4jkvJ3mkq3jga7liLblvqHjgpLooYzjgYTjgb7jgZnjgIJcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPCEtLSDljZjkuIDjgrvjg6zjgq/jgr8gLS0+XG4gKiA8ZGl2IGFwcEFjdGl2ZUNvbnRyb2xcbiAqICAgICAgW3Njcm9sbFNlbGVjdG9yXT1cIicueHRlcm0tdmlld3BvcnQnXCJcbiAqICAgICAgKGFjdGl2ZUNoYW5nZSk9XCJvbkFjdGl2ZUNoYW5nZSgkZXZlbnQpXCI+XG4gKiAgIDwhLS0gY29udGVudCAtLT5cbiAqIDwvZGl2PlxuICpcbiAqIDwhLS0g6KSH5pWw44K744Os44Kv44K/IC0tPlxuICogPGRpdiBhcHBBY3RpdmVDb250cm9sXG4gKiAgICAgIFtzY3JvbGxTZWxlY3RvcnNdPVwiWycueHRlcm0tdmlld3BvcnQnLCAnLnF0cC1jb250ZW50J11cIlxuICogICAgICAoYWN0aXZlQ2hhbmdlKT1cIm9uQWN0aXZlQ2hhbmdlKCRldmVudClcIj5cbiAqICAgPCEtLSBjb250ZW50IC0tPlxuICogPC9kaXY+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcEFjdGl2ZUNvbnRyb2xdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYWN0aXZlXSc6ICdpc0FjdGl2ZSgpJyxcbiAgICAnW2NsYXNzLm5vZHJhZ10nOiAnIWRpc2FibGVOb2RyYWcoKScsXG4gICAgJ1tjbGFzcy5ub3doZWVsXSc6ICdpc0FjdGl2ZSgpJyxcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBBY3RpdmVDb250cm9sRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgc2Nyb2xsU2VsZWN0b3IgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHNjcm9sbFNlbGVjdG9ycyA9IGlucHV0PHN0cmluZ1tdPigpO1xuICAvKiogbW91c2Vkb3du44Gnc3RvcFByb3BhZ2F0aW9u44KS5ZG844Gw44Gq44GE77yIUmVhY3QgRmxvd+OBquOBqeOBruODieODqeODg+OCsOOBqOWFseWtmOOBmeOCi+OBn+OCge+8iSAqL1xuICByZWFkb25seSBkaXNhYmxlU3RvcFByb3BhZ2F0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiog44K544Kv44Ot44O844Or5L2N572u44Gu44Ot44OD44Kv44KS54Sh5Yq55YyW44GZ44KL77yI5bi444Gr44K544Kv44Ot44O844Or5Y+v6IO944Gr44GZ44KL77yJICovXG4gIHJlYWRvbmx5IGRpc2FibGVTY3JvbGxMb2NrID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogbm9kcmFn44Kv44Op44K544KS5LuY5LiO44GX44Gq44GE77yIUmVhY3QgRmxvd+OBruODjuODvOODieOBp+ODieODqeODg+OCsOOCkuacieWKueWMluOBmeOCi+OBn+OCge+8iSAqL1xuICByZWFkb25seSBkaXNhYmxlTm9kcmFnID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBhY3RpdmVDaGFuZ2UgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaXNBY3RpdmUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgZXZlbnRDbGVhbnVwRnVuY3Rpb25zOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuICBwcml2YXRlIHNjcm9sbENsZWFudXBGdW5jdGlvbnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG4gIHByaXZhdGUgZXZlbnRIYW5kbGVyc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8g44Kk44OZ44Oz44OI44OP44Oz44OJ44Op44O844Gu5Yid5pyf5YyW77yI5LiA5bqm44Gg44GR77yJXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5ldmVudEhhbmRsZXJzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmluaXRpYWxpemVFdmVudEhhbmRsZXJzKCksIDEwMCk7XG4gICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuXG4gICAgLy8g44K544Kv44Ot44O844Or5Yi25b6h44Gu5Yid5pyf5YyW77yI44K744Os44Kv44K/44GM5aSJ44KP44KL44Gf44Gz44Gr5YaN6Kit5a6a77yJXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdG9ycyA9IHRoaXMuZ2V0U2Nyb2xsU2VsZWN0b3JzKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0dXBTY3JvbGxDb250cm9scyhzZWxlY3RvcnMpLCAxNTApO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudENsZWFudXBGdW5jdGlvbnMuZm9yRWFjaChjbGVhbnVwID0+IGNsZWFudXAoKSk7XG4gICAgdGhpcy5zY3JvbGxDbGVhbnVwRnVuY3Rpb25zLmZvckVhY2goY2xlYW51cCA9PiBjbGVhbnVwKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRXZlbnRIYW5kbGVycygpOiB2b2lkIHtcbiAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBzY3JvbGxTZWxlY3RvcnMgPSB0aGlzLmdldFNjcm9sbFNlbGVjdG9ycygpO1xuICAgIGNvbnN0IGV2ZW50SGFuZGxlcnMgPSBuZXcgQWN0aXZlQ29udHJvbEV2ZW50SGFuZGxlcnMoXG4gICAgICBob3N0RWxlbWVudCxcbiAgICAgIHRoaXMuaXNBY3RpdmUsXG4gICAgICAoYWN0aXZlKSA9PiB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KGFjdGl2ZSksXG4gICAgICB7IGRpc2FibGVTdG9wUHJvcGFnYXRpb246IHRoaXMuZGlzYWJsZVN0b3BQcm9wYWdhdGlvbigpLCBzY3JvbGxTZWxlY3RvcnMgfVxuICAgICk7XG4gICAgdGhpcy5ldmVudENsZWFudXBGdW5jdGlvbnMucHVzaCguLi5ldmVudEhhbmRsZXJzLnNldHVwQWxsKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNjcm9sbENvbnRyb2xzKHNlbGVjdG9yczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAvLyDml6LlrZjjga7jgrnjgq/jg63jg7zjg6vliLblvqHjgpLjgq/jg6rjg7zjg7PjgqLjg4Pjg5dcbiAgICB0aGlzLnNjcm9sbENsZWFudXBGdW5jdGlvbnMuZm9yRWFjaChjbGVhbnVwID0+IGNsZWFudXAoKSk7XG4gICAgdGhpcy5zY3JvbGxDbGVhbnVwRnVuY3Rpb25zID0gW107XG5cbiAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBkaXNhYmxlU2Nyb2xsTG9jayA9IHRoaXMuZGlzYWJsZVNjcm9sbExvY2soKTtcbiAgICBmb3IgKGNvbnN0IHNlbGVjdG9yIG9mIHNlbGVjdG9ycykge1xuICAgICAgLy8gcXVlcnlTZWxlY3RvckFsbCDjgpLkvb/nlKjjgZfjgablhajjgabjga7jg57jg4Pjg4HjgZnjgovopoHntKDjgpLlj5blvpdcbiAgICAgIGNvbnN0IHNjcm9sbEVsZW1lbnRzID0gaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oc2VsZWN0b3IpO1xuICAgICAgc2Nyb2xsRWxlbWVudHMuZm9yRWFjaChzY3JvbGxFbGVtZW50ID0+IHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsQ29udHJvbCA9IG5ldyBTY3JvbGxDb250cm9sKHNjcm9sbEVsZW1lbnQsIHRoaXMuaXNBY3RpdmUsIHsgZGlzYWJsZVNjcm9sbExvY2sgfSk7XG4gICAgICAgIHRoaXMuc2Nyb2xsQ2xlYW51cEZ1bmN0aW9ucy5wdXNoKC4uLnNjcm9sbENvbnRyb2wuc2V0dXAoKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFNjcm9sbFNlbGVjdG9ycygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbXVsdGlwbGUgPSB0aGlzLnNjcm9sbFNlbGVjdG9ycygpO1xuICAgIGlmIChtdWx0aXBsZSAmJiBtdWx0aXBsZS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbXVsdGlwbGU7XG4gICAgfVxuICAgIGNvbnN0IHNpbmdsZSA9IHRoaXMuc2Nyb2xsU2VsZWN0b3IoKTtcbiAgICByZXR1cm4gc2luZ2xlID8gW3NpbmdsZV0gOiBbXTtcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1kaXJlY3RpdmVzLWFjdGl2ZS1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2FjdGl2ZS1jb250cm9sL25nLWF0b21pYy1jb21tb24tZGlyZWN0aXZlcy1hY3RpdmUtY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, Injectable } from '@angular/core';
3
3
  import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import { Auth, authState, TwitterAuthProvider, signInWithPopup, GoogleAuthProvider, signInWithEmailAndPassword, createUserWithEmailAndPassword, signInWithCustomToken, signOut } from '@angular/fire/auth';
4
+ import { Auth, authState, TwitterAuthProvider, signInWithPopup, GoogleAuthProvider, onAuthStateChanged, signInWithEmailAndPassword, createUserWithEmailAndPassword, signInWithCustomToken, signOut } from '@angular/fire/auth';
5
5
  import { get } from 'lodash-es';
6
6
  import { switchMap, of, distinctUntilChanged, shareReplay, map } from 'rxjs';
7
7
 
@@ -29,12 +29,32 @@ class AuthService {
29
29
  for (const scope of scopes)
30
30
  provider.addScope(scope);
31
31
  return signInWithPopup(this.#auth, provider).catch(async (error) => {
32
+ if (error.code === 'auth/popup-closed-by-user') {
33
+ const user = await this.#waitForAuthState();
34
+ if (user)
35
+ return { user };
36
+ }
32
37
  if (error.code === 'auth/account-exists-with-different-credential') {
33
38
  this.onFailedForAccountExistsWithDifferentCredential(error);
34
39
  }
35
40
  throw error;
36
41
  });
37
42
  }
43
+ #waitForAuthState(timeoutMs = 3000) {
44
+ return new Promise(resolve => {
45
+ let skip = true;
46
+ const timer = setTimeout(() => { unsub(); resolve(null); }, timeoutMs);
47
+ const unsub = onAuthStateChanged(this.#auth, user => {
48
+ if (skip) {
49
+ skip = false;
50
+ return;
51
+ }
52
+ clearTimeout(timer);
53
+ unsub();
54
+ resolve(user);
55
+ });
56
+ });
57
+ }
38
58
  signInWithEmailAndPassword(email, password) {
39
59
  return signInWithEmailAndPassword(this.#auth, email, password);
40
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-services-auth.mjs","sources":["../tmp-esm2022/services/auth/auth.service.js","../tmp-esm2022/services/auth/ng-atomic-common-services-auth.js"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Auth, authState, signInWithCustomToken, GoogleAuthProvider, TwitterAuthProvider, signInWithPopup, signOut, signInWithEmailAndPassword, createUserWithEmailAndPassword } from '@angular/fire/auth';\nimport { get } from 'lodash-es';\nimport { distinctUntilChanged, map, of, shareReplay, switchMap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AuthService {\n constructor() {\n this.#auth = inject(Auth);\n this.auth$ = authState(this.#auth);\n this.auth = toSignal(this.auth$);\n this.accessToken$ = this.auth$.pipe(switchMap(auth => auth ? auth.getIdToken() : of(null)), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n this.accessToken = toSignal(this.accessToken$);\n this.userId$ = this.auth$.pipe(map(auth => auth?.uid ?? null), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n this.customClaims$ = this.auth$.pipe(switchMap(auth => auth ? auth.getIdTokenResult() : of(null)), map(token => token?.claims ?? {}), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n }\n #auth;\n signInWithTwitter() {\n const provider = new TwitterAuthProvider();\n return signInWithPopup(this.#auth, provider);\n }\n // signInWithGoogle() {\n // const provider = new GoogleAuthProvider();\n // return signInWithPopup(this.#auth, provider);\n // }\n async signInWithGoogle(scopes = []) {\n const provider = new GoogleAuthProvider();\n for (const scope of scopes)\n provider.addScope(scope);\n return signInWithPopup(this.#auth, provider).catch(async (error) => {\n if (error.code === 'auth/account-exists-with-different-credential') {\n this.onFailedForAccountExistsWithDifferentCredential(error);\n }\n throw error;\n });\n }\n signInWithEmailAndPassword(email, password) {\n return signInWithEmailAndPassword(this.#auth, email, password);\n }\n createUserWithEmailAndPassword(email, password) {\n return createUserWithEmailAndPassword(this.#auth, email, password);\n }\n signInWithCustomToken(customToken) {\n return signInWithCustomToken(this.#auth, customToken);\n }\n signOut() {\n return signOut(this.#auth);\n }\n onFailedForAccountExistsWithDifferentCredential(error) {\n const credential = error.customData._tokenResponse;\n // const pending = FacebookAuthProvider.credential(credential.oauthAccessToken);\n const providerId = error.customData._tokenResponse.providerId;\n // this.pends.update(pends => [...pends, {\n // credential: pending,\n // providerId: providerId,\n // email: credential.email,\n // }]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AuthService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AuthService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\nexport function injectAuthState$() {\n return inject(AuthService).auth$;\n}\nexport function injectAuthState() {\n return toSignal(injectAuthState$());\n}\nexport function injectUserId$() {\n return inject(AuthService).userId$.pipe(distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n}\nexport function injectUserId() {\n return toSignal(injectUserId$());\n}\nexport function injectTwitterId$() {\n return inject(AuthService).auth$.pipe(map(auth => auth?.providerData?.[0]?.uid ?? null), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n}\nexport function injectClaim$(claim) {\n return inject(AuthService).customClaims$.pipe(map(token => claim ? get(token, claim) : token), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n}\nexport function injectClaim(claim) {\n return toSignal(injectClaim$(claim));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBa0IsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzTixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBMkJ6RixNQUFNLE9BQU8sV0FBVztJQUh4QjtRQUlXLFVBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsVUFBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsU0FBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsaUJBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDckMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUN0RCxvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENB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LFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxrQkFBa0IsRUFBRSxDQUNkLENBQUM7QUFDWCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBYSxLQUFhO0lBQ25ELE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBTaWduYWwsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwsIHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEF1dGgsIGF1dGhTdGF0ZSwgc2lnbkluV2l0aEN1c3RvbVRva2VuLCBHb29nbGVBdXRoUHJvdmlkZXIsIFR3aXR0ZXJBdXRoUHJvdmlkZXIsIHNpZ25JbldpdGhQb3B1cCwgc2lnbk91dCwgVXNlckNyZWRlbnRpYWwsIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkLCBjcmVhdGVVc2VyV2l0aEVtYWlsQW5kUGFzc3dvcmQgfSBmcm9tICdAYW5ndWxhci9maXJlL2F1dGgnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIG9mLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHdpdHRlckNyZWRlbnRpYWwge1xuICBjb250ZXh0OiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGVtYWlsVmVyaWZpZWQ6IGJvb2xlYW47XG4gIGV4cGlyZXNJbjogc3RyaW5nO1xuICBmZWRlcmF0ZWRJZDogc3RyaW5nO1xuICBmdWxsTmFtZTogc3RyaW5nO1xuICBpZFRva2VuOiBzdHJpbmc7XG4gIGtpbmQ6ICdpZGVudGl0eXRvb2xraXQjVmVyaWZ5QXNzZXJ0aW9uUmVzcG9uc2UnO1xuICBsb2NhbElkOiBzdHJpbmc7XG4gIG9hdXRoQWNjZXNzVG9rZW46IHN0cmluZztcbiAgb2F1dGhUb2tlblNlY3JldDogc3RyaW5nO1xuICBwaG90b1VybDogc3RyaW5nO1xuICBwcm92aWRlcklkOiAndHdpdHRlci5jb20nO1xuICByYXdVc2VySW5mbzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgc2NyZWVuTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBSZXN1bHQgPSBVc2VyQ3JlZGVudGlhbCAmIHtfdG9rZW5SZXNwb25zZTogVHdpdHRlckNyZWRlbnRpYWx9O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIHJlYWRvbmx5ICNhdXRoID0gaW5qZWN0KEF1dGgpO1xuICByZWFkb25seSBhdXRoJCA9IGF1dGhTdGF0ZSh0aGlzLiNhdXRoKTtcbiAgcmVhZG9ubHkgYXV0aCA9IHRvU2lnbmFsKHRoaXMuYXV0aCQpO1xuICByZWFkb25seSBhY2Nlc3NUb2tlbiQgPSB0aGlzLmF1dGgkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGF1dGggPT4gYXV0aCA/IGF1dGguZ2V0SWRUb2tlbigpIDogb2YobnVsbCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG4gIHJlYWRvbmx5IGFjY2Vzc1Rva2VuID0gdG9TaWduYWwodGhpcy5hY2Nlc3NUb2tlbiQpO1xuXG4gIHVzZXJJZCQgPSB0aGlzLmF1dGgkLnBpcGUoXG4gICAgbWFwKGF1dGggPT4gYXV0aD8udWlkID8/IG51bGwpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VzdG9tQ2xhaW1zJCA9IHRoaXMuYXV0aCQucGlwZShcbiAgICBzd2l0Y2hNYXAoYXV0aCA9PiBhdXRoID8gYXV0aC5nZXRJZFRva2VuUmVzdWx0KCkgOiBvZihudWxsKSksXG4gICAgbWFwKHRva2VuID0+IHRva2VuPy5jbGFpbXMgPz8ge30pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG5cbiAgc2lnbkluV2l0aFR3aXR0ZXIoKTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBUd2l0dGVyQXV0aFByb3ZpZGVyKCk7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhQb3B1cCh0aGlzLiNhdXRoLCBwcm92aWRlcikgYXMgUHJvbWlzZTxSZXN1bHQ+XG4gIH1cblxuICAvLyBzaWduSW5XaXRoR29vZ2xlKCkge1xuICAvLyAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IEdvb2dsZUF1dGhQcm92aWRlcigpO1xuICAvLyAgIHJldHVybiBzaWduSW5XaXRoUG9wdXAodGhpcy4jYXV0aCwgcHJvdmlkZXIpO1xuICAvLyB9XG5cbiAgYXN5bmMgc2lnbkluV2l0aEdvb2dsZShzY29wZXM6IHN0cmluZ1tdID0gW10pIHtcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBHb29nbGVBdXRoUHJvdmlkZXIoKTtcbiAgICBmb3IgKGNvbnN0IHNjb3BlIG9mIHNjb3BlcykgcHJvdmlkZXIuYWRkU2NvcGUoc2NvcGUpO1xuICAgIHJldHVybiBzaWduSW5XaXRoUG9wdXAodGhpcy4jYXV0aCwgcHJvdmlkZXIpLmNhdGNoKGFzeW5jIGVycm9yID0+IHtcbiAgICAgIGlmIChlcnJvci5jb2RlID09PSAnYXV0aC9hY2NvdW50LWV4aXN0cy13aXRoLWRpZmZlcmVudC1jcmVkZW50aWFsJykge1xuICAgICAgICB0aGlzLm9uRmFpbGVkRm9yQWNjb3VudEV4aXN0c1dpdGhEaWZmZXJlbnRDcmVkZW50aWFsKGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xuICB9XG5cbiAgc2lnbkluV2l0aEVtYWlsQW5kUGFzc3dvcmQoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xuICAgIHJldHVybiBzaWduSW5XaXRoRW1haWxBbmRQYXNzd29yZCh0aGlzLiNhdXRoLCBlbWFpbCwgcGFzc3dvcmQpO1xuICB9XG5cbiAgY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkKHRoaXMuI2F1dGgsIGVtYWlsLCBwYXNzd29yZCk7XG4gIH1cblxuICBzaWduSW5XaXRoQ3VzdG9tVG9rZW4oY3VzdG9tVG9rZW46IHN0cmluZyk6IFByb21pc2U8UmVzdWx0PiB7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhDdXN0b21Ub2tlbih0aGlzLiNhdXRoLCBjdXN0b21Ub2tlbikgYXMgUHJvbWlzZTxSZXN1bHQ+O1xuICB9XG5cbiAgc2lnbk91dCgpIHtcbiAgICByZXR1cm4gc2lnbk91dCh0aGlzLiNhdXRoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GYWlsZWRGb3JBY2NvdW50RXhpc3RzV2l0aERpZmZlcmVudENyZWRlbnRpYWwoZXJyb3I6IGFueSkge1xuICAgIGNvbnN0IGNyZWRlbnRpYWwgPSBlcnJvci5jdXN0b21EYXRhLl90b2tlblJlc3BvbnNlO1xuICAgIC8vIGNvbnN0IHBlbmRpbmcgPSBGYWNlYm9va0F1dGhQcm92aWRlci5jcmVkZW50aWFsKGNyZWRlbnRpYWwub2F1dGhBY2Nlc3NUb2tlbik7XG4gICAgY29uc3QgcHJvdmlkZXJJZCA9IGVycm9yLmN1c3RvbURhdGEuX3Rva2VuUmVzcG9uc2UucHJvdmlkZXJJZDtcbiAgICAvLyB0aGlzLnBlbmRzLnVwZGF0ZShwZW5kcyA9PiBbLi4ucGVuZHMsIHtcbiAgICAvLyAgIGNyZWRlbnRpYWw6IHBlbmRpbmcsXG4gICAgLy8gICBwcm92aWRlcklkOiBwcm92aWRlcklkLFxuICAgIC8vICAgZW1haWw6IGNyZWRlbnRpYWwuZW1haWwsXG4gICAgLy8gfV0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBdXRoU3RhdGUkKCkge1xuICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5hdXRoJDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEF1dGhTdGF0ZSgpIHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdEF1dGhTdGF0ZSQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVc2VySWQkKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKS51c2VySWQkLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVzZXJJZCgpOiBTaWduYWw8c3RyaW5nIHwgbnVsbD4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0VXNlcklkJCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFR3aXR0ZXJJZCQoKSB7XG4gIHJldHVybiBpbmplY3QoQXV0aFNlcnZpY2UpLmF1dGgkLnBpcGUoXG4gICAgbWFwKGF1dGggPT4gYXV0aD8ucHJvdmlkZXJEYXRhPy5bMF0/LnVpZCA/PyBudWxsKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2xhaW0kPFQgPSBzdHJpbmc+KGNsYWltOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIGluamVjdChBdXRoU2VydmljZSkuY3VzdG9tQ2xhaW1zJC5waXBlKFxuICAgIG1hcCh0b2tlbiA9PiBjbGFpbSA/IGdldCh0b2tlbiwgY2xhaW0pIDogdG9rZW4pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICkgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2xhaW08VCA9IHN0cmluZz4oY2xhaW06IHN0cmluZyk6IFNpZ25hbDxUPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RDbGFpbSQ8VD4oY2xhaW0pKTtcbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL25nLWF0b21pYy1jb21tb24tc2VydmljZXMtYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-services-auth.mjs","sources":["../tmp-esm2022/services/auth/auth.service.js","../tmp-esm2022/services/auth/ng-atomic-common-services-auth.js"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Auth, authState, signInWithCustomToken, GoogleAuthProvider, TwitterAuthProvider, signInWithPopup, signOut, signInWithEmailAndPassword, createUserWithEmailAndPassword, onAuthStateChanged } from '@angular/fire/auth';\nimport { get } from 'lodash-es';\nimport { distinctUntilChanged, map, of, shareReplay, switchMap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AuthService {\n constructor() {\n this.#auth = inject(Auth);\n this.auth$ = authState(this.#auth);\n this.auth = toSignal(this.auth$);\n this.accessToken$ = this.auth$.pipe(switchMap(auth => auth ? auth.getIdToken() : of(null)), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n this.accessToken = toSignal(this.accessToken$);\n this.userId$ = this.auth$.pipe(map(auth => auth?.uid ?? null), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n this.customClaims$ = this.auth$.pipe(switchMap(auth => auth ? auth.getIdTokenResult() : of(null)), map(token => token?.claims ?? {}), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n }\n #auth;\n signInWithTwitter() {\n const provider = new TwitterAuthProvider();\n return signInWithPopup(this.#auth, provider);\n }\n // signInWithGoogle() {\n // const provider = new GoogleAuthProvider();\n // return signInWithPopup(this.#auth, provider);\n // }\n async signInWithGoogle(scopes = []) {\n const provider = new GoogleAuthProvider();\n for (const scope of scopes)\n provider.addScope(scope);\n return signInWithPopup(this.#auth, provider).catch(async (error) => {\n if (error.code === 'auth/popup-closed-by-user') {\n const user = await this.#waitForAuthState();\n if (user)\n return { user };\n }\n if (error.code === 'auth/account-exists-with-different-credential') {\n this.onFailedForAccountExistsWithDifferentCredential(error);\n }\n throw error;\n });\n }\n #waitForAuthState(timeoutMs = 3000) {\n return new Promise(resolve => {\n let skip = true;\n const timer = setTimeout(() => { unsub(); resolve(null); }, timeoutMs);\n const unsub = onAuthStateChanged(this.#auth, user => {\n if (skip) {\n skip = false;\n return;\n }\n clearTimeout(timer);\n unsub();\n resolve(user);\n });\n });\n }\n signInWithEmailAndPassword(email, password) {\n return signInWithEmailAndPassword(this.#auth, email, password);\n }\n createUserWithEmailAndPassword(email, password) {\n return createUserWithEmailAndPassword(this.#auth, email, password);\n }\n signInWithCustomToken(customToken) {\n return signInWithCustomToken(this.#auth, customToken);\n }\n signOut() {\n return signOut(this.#auth);\n }\n onFailedForAccountExistsWithDifferentCredential(error) {\n const credential = error.customData._tokenResponse;\n // const pending = FacebookAuthProvider.credential(credential.oauthAccessToken);\n const providerId = error.customData._tokenResponse.providerId;\n // this.pends.update(pends => [...pends, {\n // credential: pending,\n // providerId: providerId,\n // email: credential.email,\n // }]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AuthService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AuthService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\nexport function injectAuthState$() {\n return inject(AuthService).auth$;\n}\nexport function injectAuthState() {\n return toSignal(injectAuthState$());\n}\nexport function injectUserId$() {\n return inject(AuthService).userId$.pipe(distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n}\nexport function injectUserId() {\n return toSignal(injectUserId$());\n}\nexport function injectTwitterId$() {\n return inject(AuthService).auth$.pipe(map(auth => auth?.providerData?.[0]?.uid ?? null), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n}\nexport function injectClaim$(claim) {\n return inject(AuthService).customClaims$.pipe(map(token => claim ? get(token, claim) : token), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());\n}\nexport function injectClaim(claim) {\n return toSignal(injectClaim$(claim));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBa0IsMEJBQTBCLEVBQUUsOEJBQThCLEVBQVEsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyUCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBMkJ6RixNQUFNLE9BQU8sV0FBVztJQUh4QjtRQUlXLFVBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsVUFBSyxHQUE0QixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELFNBQUksR0FBb0MsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNyQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ3RELG9CQUFvQixFQUFF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QVUsYUFBYTtJQUMzQixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNyQyxvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2Qsa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ25DLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLEVBQ2pELG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxrQkFBa0IsRUFBRSxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQWEsS0FBYTtJQUNwRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUMzQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUMvQyxvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2Qsa0JBQWtCLEVBQUUsQ0FDZCxDQUFDO0FBQ1gsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQWEsS0FBYTtJQUNuRCxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgU2lnbmFsLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsLCB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBdXRoLCBhdXRoU3RhdGUsIHNpZ25JbldpdGhDdXN0b21Ub2tlbiwgR29vZ2xlQXV0aFByb3ZpZGVyLCBUd2l0dGVyQXV0aFByb3ZpZGVyLCBzaWduSW5XaXRoUG9wdXAsIHNpZ25PdXQsIFVzZXJDcmVkZW50aWFsLCBzaWduSW5XaXRoRW1haWxBbmRQYXNzd29yZCwgY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkLCBVc2VyLCBvbkF1dGhTdGF0ZUNoYW5nZWQgfSBmcm9tICdAYW5ndWxhci9maXJlL2F1dGgnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIG9mLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHdpdHRlckNyZWRlbnRpYWwge1xuICBjb250ZXh0OiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGVtYWlsVmVyaWZpZWQ6IGJvb2xlYW47XG4gIGV4cGlyZXNJbjogc3RyaW5nO1xuICBmZWRlcmF0ZWRJZDogc3RyaW5nO1xuICBmdWxsTmFtZTogc3RyaW5nO1xuICBpZFRva2VuOiBzdHJpbmc7XG4gIGtpbmQ6ICdpZGVudGl0eXRvb2xraXQjVmVyaWZ5QXNzZXJ0aW9uUmVzcG9uc2UnO1xuICBsb2NhbElkOiBzdHJpbmc7XG4gIG9hdXRoQWNjZXNzVG9rZW46IHN0cmluZztcbiAgb2F1dGhUb2tlblNlY3JldDogc3RyaW5nO1xuICBwaG90b1VybDogc3RyaW5nO1xuICBwcm92aWRlcklkOiAndHdpdHRlci5jb20nO1xuICByYXdVc2VySW5mbzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgc2NyZWVuTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBSZXN1bHQgPSBVc2VyQ3JlZGVudGlhbCAmIHtfdG9rZW5SZXNwb25zZTogVHdpdHRlckNyZWRlbnRpYWx9O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIHJlYWRvbmx5ICNhdXRoID0gaW5qZWN0KEF1dGgpO1xuICByZWFkb25seSBhdXRoJDogT2JzZXJ2YWJsZTxVc2VyIHwgbnVsbD4gPSBhdXRoU3RhdGUodGhpcy4jYXV0aCk7XG4gIHJlYWRvbmx5IGF1dGg6IFNpZ25hbDxVc2VyIHwgbnVsbCB8IHVuZGVmaW5lZD4gPSB0b1NpZ25hbCh0aGlzLmF1dGgkKTtcbiAgcmVhZG9ubHkgYWNjZXNzVG9rZW4kID0gdGhpcy5hdXRoJC5waXBlKFxuICAgIHN3aXRjaE1hcChhdXRoID0+IGF1dGggPyBhdXRoLmdldElkVG9rZW4oKSA6IG9mKG51bGwpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xuICByZWFkb25seSBhY2Nlc3NUb2tlbiA9IHRvU2lnbmFsKHRoaXMuYWNjZXNzVG9rZW4kKTtcblxuICB1c2VySWQkID0gdGhpcy5hdXRoJC5waXBlKFxuICAgIG1hcChhdXRoID0+IGF1dGg/LnVpZCA/PyBudWxsKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xuXG4gIHJlYWRvbmx5IGN1c3RvbUNsYWltcyQ6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0gdGhpcy5hdXRoJC5waXBlKFxuICAgIHN3aXRjaE1hcChhdXRoID0+IGF1dGggPyBhdXRoLmdldElkVG9rZW5SZXN1bHQoKSA6IG9mKG51bGwpKSxcbiAgICBtYXAodG9rZW4gPT4gdG9rZW4/LmNsYWltcyA/PyB7fSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcblxuICBzaWduSW5XaXRoVHdpdHRlcigpOiBQcm9taXNlPFJlc3VsdD4ge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFR3aXR0ZXJBdXRoUHJvdmlkZXIoKTtcbiAgICByZXR1cm4gc2lnbkluV2l0aFBvcHVwKHRoaXMuI2F1dGgsIHByb3ZpZGVyKSBhcyBQcm9taXNlPFJlc3VsdD5cbiAgfVxuXG4gIC8vIHNpZ25JbldpdGhHb29nbGUoKSB7XG4gIC8vICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgR29vZ2xlQXV0aFByb3ZpZGVyKCk7XG4gIC8vICAgcmV0dXJuIHNpZ25JbldpdGhQb3B1cCh0aGlzLiNhdXRoLCBwcm92aWRlcik7XG4gIC8vIH1cblxuICBhc3luYyBzaWduSW5XaXRoR29vZ2xlKHNjb3Blczogc3RyaW5nW10gPSBbXSkge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IEdvb2dsZUF1dGhQcm92aWRlcigpO1xuICAgIGZvciAoY29uc3Qgc2NvcGUgb2Ygc2NvcGVzKSBwcm92aWRlci5hZGRTY29wZShzY29wZSk7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhQb3B1cCh0aGlzLiNhdXRoLCBwcm92aWRlcikuY2F0Y2goYXN5bmMgZXJyb3IgPT4ge1xuICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdhdXRoL3BvcHVwLWNsb3NlZC1ieS11c2VyJykge1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy4jd2FpdEZvckF1dGhTdGF0ZSgpO1xuICAgICAgICBpZiAodXNlcikgcmV0dXJuIHsgdXNlciB9IGFzIFVzZXJDcmVkZW50aWFsO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdhdXRoL2FjY291bnQtZXhpc3RzLXdpdGgtZGlmZmVyZW50LWNyZWRlbnRpYWwnKSB7XG4gICAgICAgIHRoaXMub25GYWlsZWRGb3JBY2NvdW50RXhpc3RzV2l0aERpZmZlcmVudENyZWRlbnRpYWwoZXJyb3IpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG4gIH1cblxuICAjd2FpdEZvckF1dGhTdGF0ZSh0aW1lb3V0TXMgPSAzMDAwKTogUHJvbWlzZTxVc2VyIHwgbnVsbD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGxldCBza2lwID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7IHVuc3ViKCk7IHJlc29sdmUobnVsbCk7IH0sIHRpbWVvdXRNcyk7XG4gICAgICBjb25zdCB1bnN1YiA9IG9uQXV0aFN0YXRlQ2hhbmdlZCh0aGlzLiNhdXRoLCB1c2VyID0+IHtcbiAgICAgICAgaWYgKHNraXApIHsgc2tpcCA9IGZhbHNlOyByZXR1cm47IH1cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsgdW5zdWIoKTsgcmVzb2x2ZSh1c2VyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc2lnbkluV2l0aEVtYWlsQW5kUGFzc3dvcmQoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xuICAgIHJldHVybiBzaWduSW5XaXRoRW1haWxBbmRQYXNzd29yZCh0aGlzLiNhdXRoLCBlbWFpbCwgcGFzc3dvcmQpO1xuICB9XG5cbiAgY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkKHRoaXMuI2F1dGgsIGVtYWlsLCBwYXNzd29yZCk7XG4gIH1cblxuICBzaWduSW5XaXRoQ3VzdG9tVG9rZW4oY3VzdG9tVG9rZW46IHN0cmluZyk6IFByb21pc2U8UmVzdWx0PiB7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhDdXN0b21Ub2tlbih0aGlzLiNhdXRoLCBjdXN0b21Ub2tlbikgYXMgUHJvbWlzZTxSZXN1bHQ+O1xuICB9XG5cbiAgc2lnbk91dCgpIHtcbiAgICByZXR1cm4gc2lnbk91dCh0aGlzLiNhdXRoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GYWlsZWRGb3JBY2NvdW50RXhpc3RzV2l0aERpZmZlcmVudENyZWRlbnRpYWwoZXJyb3I6IGFueSkge1xuICAgIGNvbnN0IGNyZWRlbnRpYWwgPSBlcnJvci5jdXN0b21EYXRhLl90b2tlblJlc3BvbnNlO1xuICAgIC8vIGNvbnN0IHBlbmRpbmcgPSBGYWNlYm9va0F1dGhQcm92aWRlci5jcmVkZW50aWFsKGNyZWRlbnRpYWwub2F1dGhBY2Nlc3NUb2tlbik7XG4gICAgY29uc3QgcHJvdmlkZXJJZCA9IGVycm9yLmN1c3RvbURhdGEuX3Rva2VuUmVzcG9uc2UucHJvdmlkZXJJZDtcbiAgICAvLyB0aGlzLnBlbmRzLnVwZGF0ZShwZW5kcyA9PiBbLi4ucGVuZHMsIHtcbiAgICAvLyAgIGNyZWRlbnRpYWw6IHBlbmRpbmcsXG4gICAgLy8gICBwcm92aWRlcklkOiBwcm92aWRlcklkLFxuICAgIC8vICAgZW1haWw6IGNyZWRlbnRpYWwuZW1haWwsXG4gICAgLy8gfV0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBdXRoU3RhdGUkKCk6IE9ic2VydmFibGU8VXNlciB8IG51bGw+IHtcbiAgcmV0dXJuIGluamVjdChBdXRoU2VydmljZSkuYXV0aCQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBdXRoU3RhdGUoKTogU2lnbmFsPFVzZXIgfCBudWxsIHwgdW5kZWZpbmVkPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RBdXRoU3RhdGUkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VXNlcklkJCgpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgcmV0dXJuIGluamVjdChBdXRoU2VydmljZSkudXNlcklkJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVc2VySWQoKTogU2lnbmFsPHN0cmluZyB8IG51bGw+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFVzZXJJZCQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RUd2l0dGVySWQkKCkge1xuICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5hdXRoJC5waXBlKFxuICAgIG1hcChhdXRoID0+IGF1dGg/LnByb3ZpZGVyRGF0YT8uWzBdPy51aWQgPz8gbnVsbCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENsYWltJDxUID0gc3RyaW5nPihjbGFpbTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBpbmplY3QoQXV0aFNlcnZpY2UpLmN1c3RvbUNsYWltcyQucGlwZShcbiAgICBtYXAodG9rZW4gPT4gY2xhaW0gPyBnZXQodG9rZW4sIGNsYWltKSA6IHRva2VuKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApIGFzIGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENsYWltPFQgPSBzdHJpbmc+KGNsYWltOiBzdHJpbmcpOiBTaWduYWw8VD4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Q2xhaW0kPFQ+KGNsYWltKSk7XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL25nLWF0b21pYy1jb21tb24tc2VydmljZXMtYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}