@ng-atomic/common 19.51.0 → 19.81.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ng-atomic-common-directives-active-control.mjs +51 -60
- package/fesm2022/ng-atomic-common-directives-active-control.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs +0 -3
- package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-prevent-browser-zoom.mjs +0 -3
- package/fesm2022/ng-atomic-common-directives-prevent-browser-zoom.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs +0 -1
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-columns.mjs +0 -1
- package/fesm2022/ng-atomic-common-pipes-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-domain.mjs +0 -9
- package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs +0 -3
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-app.mjs +1 -3
- package/fesm2022/ng-atomic-common-services-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-auth.mjs +14 -25
- package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-editing.mjs +0 -16
- package/fesm2022/ng-atomic-common-services-editing.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs +1 -25
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form.mjs +0 -5
- package/fesm2022/ng-atomic-common-services-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-query-resolver.mjs +0 -2
- package/fesm2022/ng-atomic-common-services-query-resolver.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-sheets-actions.mjs +0 -1
- package/fesm2022/ng-atomic-common-services-sheets-actions.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-side-app.mjs +0 -1
- package/fesm2022/ng-atomic-common-services-side-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs +0 -1
- package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-spreadsheet.mjs +2 -39
- package/fesm2022/ng-atomic-common-services-spreadsheet.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-ui.mjs +0 -2
- package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-entities.mjs +0 -18
- package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-utils.mjs +2 -34
- package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
- package/fesm2022/ng-atomic-common.mjs +56 -121
- package/fesm2022/ng-atomic-common.mjs.map +1 -1
- package/package.json +3 -3
- package/types/ng-atomic-common-directives-active-control.d.ts +2 -27
- package/types/ng-atomic-common-directives-active-control.d.ts.map +1 -1
- package/types/ng-atomic-common-directives-prevent-browser-zoom.d.ts +0 -3
- package/types/ng-atomic-common-directives-prevent-browser-zoom.d.ts.map +1 -1
- package/types/ng-atomic-common-interceptors-authorization.d.ts +0 -1
- package/types/ng-atomic-common-interceptors-authorization.d.ts.map +1 -1
- package/types/ng-atomic-common-pipes-columns.d.ts +0 -1
- package/types/ng-atomic-common-pipes-columns.d.ts.map +1 -1
- package/types/ng-atomic-common-pipes-domain.d.ts +0 -9
- package/types/ng-atomic-common-pipes-domain.d.ts.map +1 -1
- package/types/ng-atomic-common-pipes-smart-field.d.ts +0 -3
- package/types/ng-atomic-common-pipes-smart-field.d.ts.map +1 -1
- package/types/ng-atomic-common-services-auth.d.ts +4 -2
- package/types/ng-atomic-common-services-auth.d.ts.map +1 -1
- package/types/ng-atomic-common-services-editing.d.ts +0 -16
- package/types/ng-atomic-common-services-editing.d.ts.map +1 -1
- package/types/ng-atomic-common-services-form.d.ts +0 -5
- package/types/ng-atomic-common-services-form.d.ts.map +1 -1
- package/types/ng-atomic-common-services-side-nav-mode.d.ts +0 -1
- package/types/ng-atomic-common-services-side-nav-mode.d.ts.map +1 -1
- package/types/ng-atomic-common-services-spreadsheet.d.ts +0 -4
- package/types/ng-atomic-common-services-spreadsheet.d.ts.map +1 -1
- package/types/ng-atomic-common-stores-entities.d.ts +0 -3
- package/types/ng-atomic-common-stores-entities.d.ts.map +1 -1
- package/types/ng-atomic-common-utils.d.ts +0 -24
- package/types/ng-atomic-common-utils.d.ts.map +1 -1
- package/types/ng-atomic-common.d.ts +2 -77
- package/types/ng-atomic-common.d.ts.map +1 -1
|
@@ -15,16 +15,55 @@ class ActiveControlEventHandlers {
|
|
|
15
15
|
return this.cleanupFunctions;
|
|
16
16
|
}
|
|
17
17
|
setupClickHandlers() {
|
|
18
|
-
|
|
18
|
+
const CLICK_MOVE_THRESHOLD_PX = 5;
|
|
19
|
+
let justActivated = false;
|
|
20
|
+
let gestureStart = null;
|
|
21
|
+
const gestureStartHandler = (e) => {
|
|
22
|
+
justActivated = false;
|
|
23
|
+
gestureStart = this.hostElement.contains(e.target)
|
|
24
|
+
? { x: e.screenX, y: e.screenY }
|
|
25
|
+
: null;
|
|
26
|
+
};
|
|
27
|
+
this.addEventListener(window, 'mousedown', gestureStartHandler, { capture: true });
|
|
19
28
|
const mousedownHandler = (e) => {
|
|
20
|
-
this.
|
|
21
|
-
|
|
29
|
+
if (!this.isActive()) {
|
|
30
|
+
this.setActive(true);
|
|
31
|
+
justActivated = true;
|
|
32
|
+
if (this.options.focusTargetSelector) {
|
|
33
|
+
const target = this.hostElement.querySelector(this.options.focusTargetSelector);
|
|
34
|
+
if (target) {
|
|
35
|
+
e.preventDefault();
|
|
36
|
+
target.focus();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
22
40
|
if (!this.options.disableStopPropagation) {
|
|
23
41
|
e.stopPropagation();
|
|
24
42
|
}
|
|
25
43
|
};
|
|
26
44
|
this.addEventListener(this.hostElement, 'mousedown', mousedownHandler);
|
|
27
|
-
|
|
45
|
+
const mouseupHandler = (e) => {
|
|
46
|
+
const start = gestureStart;
|
|
47
|
+
gestureStart = null;
|
|
48
|
+
if (e.button !== 0) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (justActivated) {
|
|
52
|
+
justActivated = false;
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (!start) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const moved = Math.hypot(e.screenX - start.x, e.screenY - start.y) > CLICK_MOVE_THRESHOLD_PX;
|
|
59
|
+
if (moved) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (this.isActive()) {
|
|
63
|
+
this.setActive(false);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
this.addEventListener(window, 'mouseup', mouseupHandler, { capture: true });
|
|
28
67
|
const documentClickListener = (e) => {
|
|
29
68
|
if (!this.hostElement.contains(e.target) && this.isActive()) {
|
|
30
69
|
this.setActive(false);
|
|
@@ -34,18 +73,13 @@ class ActiveControlEventHandlers {
|
|
|
34
73
|
this.cleanupFunctions.push(() => document.removeEventListener('mousedown', documentClickListener, { capture: true }));
|
|
35
74
|
}
|
|
36
75
|
setupPreventionHandlers() {
|
|
37
|
-
// ホイールイベント(スクロール対象要素以外でのみブロック)
|
|
38
|
-
// ただし、ctrlKey + wheel(トラックパッドのピンチズーム)は常にブロック
|
|
39
|
-
// 非アクティブ時はScrollControlがスクロール位置をリセットするため、ここでは処理しない
|
|
40
76
|
this.addEventListener(this.hostElement, 'wheel', (e) => {
|
|
41
77
|
if (this.isActive()) {
|
|
42
|
-
// ctrlKey + wheel = トラックパッドのピンチズーム → 常にブロック
|
|
43
78
|
if (e.ctrlKey) {
|
|
44
79
|
e.preventDefault();
|
|
45
80
|
e.stopPropagation();
|
|
46
81
|
return;
|
|
47
82
|
}
|
|
48
|
-
// 通常のホイールスクロール: スクロール対象要素からのイベントは許可
|
|
49
83
|
const target = e.target;
|
|
50
84
|
const isScrollableElement = this.options.scrollSelectors?.some(selector => target.closest(selector) !== null);
|
|
51
85
|
if (!isScrollableElement) {
|
|
@@ -54,25 +88,20 @@ class ActiveControlEventHandlers {
|
|
|
54
88
|
}
|
|
55
89
|
}
|
|
56
90
|
}, { passive: false });
|
|
57
|
-
// タッチイベント(ホスト要素レベル)
|
|
58
91
|
const touchHandler = (e) => {
|
|
59
92
|
if (!this.isActive())
|
|
60
93
|
return;
|
|
61
|
-
// スクロール対象要素からのイベントは許可
|
|
62
94
|
const target = e.target;
|
|
63
95
|
const isScrollableElement = this.options.scrollSelectors?.some(selector => target.closest(selector) !== null);
|
|
64
96
|
if (!isScrollableElement) {
|
|
65
97
|
if (e.touches.length > 1) {
|
|
66
|
-
// ピンチズームなどマルチタッチ操作をブロック
|
|
67
98
|
e.preventDefault();
|
|
68
99
|
e.stopPropagation();
|
|
69
100
|
}
|
|
70
|
-
// シングルタッチはデフォルト動作を許可(スクロールなど)
|
|
71
101
|
}
|
|
72
102
|
};
|
|
73
103
|
this.addEventListener(this.hostElement, 'touchstart', touchHandler, { passive: false });
|
|
74
104
|
this.addEventListener(this.hostElement, 'touchmove', touchHandler, { passive: false });
|
|
75
|
-
// ジェスチャーイベント(ホスト要素レベル)
|
|
76
105
|
const gestureHandler = (e) => {
|
|
77
106
|
if (this.isActive()) {
|
|
78
107
|
e.preventDefault();
|
|
@@ -82,16 +111,9 @@ class ActiveControlEventHandlers {
|
|
|
82
111
|
['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {
|
|
83
112
|
this.addEventListener(this.hostElement, eventName, gestureHandler, { passive: false });
|
|
84
113
|
});
|
|
85
|
-
// Document-level capture phaseハンドラ
|
|
86
|
-
// ブラウザのピンチズームがデフォルト動作を行う前にキャッチする
|
|
87
114
|
this.setupDocumentLevelPinchZoomPrevention();
|
|
88
115
|
}
|
|
89
|
-
/**
|
|
90
|
-
* Document-levelでcapture phaseを使ってピンチズームを防止
|
|
91
|
-
* ホスト要素内で発生したマルチタッチ/ジェスチャーイベントのみをブロック
|
|
92
|
-
*/
|
|
93
116
|
setupDocumentLevelPinchZoomPrevention() {
|
|
94
|
-
// タッチイベント(capture phase)
|
|
95
117
|
const documentTouchHandler = (e) => {
|
|
96
118
|
if (!this.isActive())
|
|
97
119
|
return;
|
|
@@ -107,7 +129,6 @@ class ActiveControlEventHandlers {
|
|
|
107
129
|
document.removeEventListener('touchstart', documentTouchHandler, { capture: true });
|
|
108
130
|
document.removeEventListener('touchmove', documentTouchHandler, { capture: true });
|
|
109
131
|
});
|
|
110
|
-
// Safari gestureイベント(capture phase)
|
|
111
132
|
const documentGestureHandler = (e) => {
|
|
112
133
|
if (!this.isActive())
|
|
113
134
|
return;
|
|
@@ -143,20 +164,16 @@ class ScrollControl {
|
|
|
143
164
|
}
|
|
144
165
|
setup() {
|
|
145
166
|
const cleanups = [];
|
|
146
|
-
// アクティブ状態の監視
|
|
147
167
|
const checkActiveState = () => {
|
|
148
168
|
const isActiveNow = this.isActive();
|
|
149
169
|
if (!this.options.disableScrollLock) {
|
|
150
170
|
if (!isActiveNow && this.wasActive) {
|
|
151
|
-
// アクティブ → 非アクティブ: 現在位置をロック
|
|
152
171
|
this.lockedScrollTop = this.scrollElement.scrollTop;
|
|
153
172
|
}
|
|
154
173
|
else if (!isActiveNow) {
|
|
155
|
-
// 継続して非アクティブ: ロック位置を維持
|
|
156
174
|
this.scrollElement.scrollTop = this.lockedScrollTop;
|
|
157
175
|
}
|
|
158
176
|
}
|
|
159
|
-
// アクティブ時 or disableScrollLock時: 何もしない(自由スクロール)
|
|
160
177
|
this.wasActive = isActiveNow;
|
|
161
178
|
this.rafId = requestAnimationFrame(checkActiveState);
|
|
162
179
|
};
|
|
@@ -166,7 +183,6 @@ class ScrollControl {
|
|
|
166
183
|
cancelAnimationFrame(this.rafId);
|
|
167
184
|
}
|
|
168
185
|
});
|
|
169
|
-
// スクロールイベント監視
|
|
170
186
|
const scrollHandler = () => {
|
|
171
187
|
if (!this.options.disableScrollLock && !this.isActive()) {
|
|
172
188
|
this.scrollElement.scrollTop = this.lockedScrollTop;
|
|
@@ -178,53 +194,26 @@ class ScrollControl {
|
|
|
178
194
|
}
|
|
179
195
|
}
|
|
180
196
|
|
|
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
197
|
class ActiveControlDirective {
|
|
205
198
|
constructor() {
|
|
206
199
|
this.el = inject(ElementRef);
|
|
207
200
|
this.scrollSelector = input(...(ngDevMode ? [undefined, { debugName: "scrollSelector" }] : []));
|
|
208
201
|
this.scrollSelectors = input(...(ngDevMode ? [undefined, { debugName: "scrollSelectors" }] : []));
|
|
209
|
-
/** mousedownでstopPropagationを呼ばない(React Flowなどのドラッグと共存するため) */
|
|
210
202
|
this.disableStopPropagation = input(false, ...(ngDevMode ? [{ debugName: "disableStopPropagation" }] : []));
|
|
211
|
-
/** スクロール位置のロックを無効化する(常にスクロール可能にする) */
|
|
212
203
|
this.disableScrollLock = input(false, ...(ngDevMode ? [{ debugName: "disableScrollLock" }] : []));
|
|
213
|
-
/** nodragクラスを付与しない(React Flowのノードでドラッグを有効化するため) */
|
|
214
204
|
this.disableNodrag = input(false, ...(ngDevMode ? [{ debugName: "disableNodrag" }] : []));
|
|
205
|
+
this.focusTargetSelector = input(...(ngDevMode ? [undefined, { debugName: "focusTargetSelector" }] : []));
|
|
215
206
|
this.activeChange = output();
|
|
216
207
|
this.isActive = signal(false, ...(ngDevMode ? [{ debugName: "isActive" }] : []));
|
|
217
208
|
this.eventCleanupFunctions = [];
|
|
218
209
|
this.scrollCleanupFunctions = [];
|
|
219
210
|
this.eventHandlersInitialized = false;
|
|
220
|
-
// イベントハンドラーの初期化(一度だけ)
|
|
221
211
|
effect(() => {
|
|
222
212
|
if (!this.eventHandlersInitialized) {
|
|
223
213
|
setTimeout(() => this.initializeEventHandlers(), 100);
|
|
224
214
|
this.eventHandlersInitialized = true;
|
|
225
215
|
}
|
|
226
216
|
}, { allowSignalWrites: true });
|
|
227
|
-
// スクロール制御の初期化(セレクタが変わるたびに再設定)
|
|
228
217
|
effect(() => {
|
|
229
218
|
const selectors = this.getScrollSelectors();
|
|
230
219
|
setTimeout(() => this.setupScrollControls(selectors), 150);
|
|
@@ -237,17 +226,19 @@ class ActiveControlDirective {
|
|
|
237
226
|
initializeEventHandlers() {
|
|
238
227
|
const hostElement = this.el.nativeElement;
|
|
239
228
|
const scrollSelectors = this.getScrollSelectors();
|
|
240
|
-
const eventHandlers = new ActiveControlEventHandlers(hostElement, this.isActive, (active) => this.activeChange.emit(active), {
|
|
229
|
+
const eventHandlers = new ActiveControlEventHandlers(hostElement, this.isActive, (active) => this.activeChange.emit(active), {
|
|
230
|
+
disableStopPropagation: this.disableStopPropagation(),
|
|
231
|
+
scrollSelectors,
|
|
232
|
+
focusTargetSelector: this.focusTargetSelector(),
|
|
233
|
+
});
|
|
241
234
|
this.eventCleanupFunctions.push(...eventHandlers.setupAll());
|
|
242
235
|
}
|
|
243
236
|
setupScrollControls(selectors) {
|
|
244
|
-
// 既存のスクロール制御をクリーンアップ
|
|
245
237
|
this.scrollCleanupFunctions.forEach(cleanup => cleanup());
|
|
246
238
|
this.scrollCleanupFunctions = [];
|
|
247
239
|
const hostElement = this.el.nativeElement;
|
|
248
240
|
const disableScrollLock = this.disableScrollLock();
|
|
249
241
|
for (const selector of selectors) {
|
|
250
|
-
// querySelectorAll を使用して全てのマッチする要素を取得
|
|
251
242
|
const scrollElements = hostElement.querySelectorAll(selector);
|
|
252
243
|
scrollElements.forEach(scrollElement => {
|
|
253
244
|
const scrollControl = new ScrollControl(scrollElement, this.isActive, { disableScrollLock });
|
|
@@ -264,7 +255,7 @@ class ActiveControlDirective {
|
|
|
264
255
|
return single ? [single] : [];
|
|
265
256
|
}
|
|
266
257
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ActiveControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
267
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", 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 }); }
|
|
258
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", 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 }, focusTargetSelector: { classPropertyName: "focusTargetSelector", publicName: "focusTargetSelector", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeChange: "activeChange" }, host: { properties: { "class.active": "isActive()", "class.nodrag": "!disableNodrag()", "class.nowheel": "isActive()" } }, ngImport: i0 }); }
|
|
268
259
|
}
|
|
269
260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ActiveControlDirective, decorators: [{
|
|
270
261
|
type: Directive,
|
|
@@ -277,7 +268,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
277
268
|
'[class.nowheel]': 'isActive()',
|
|
278
269
|
}
|
|
279
270
|
}]
|
|
280
|
-
}], ctorParameters: () => [], propDecorators: { scrollSelector: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollSelector", required: false }] }], scrollSelectors: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollSelectors", required: false }] }], disableStopPropagation: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableStopPropagation", required: false }] }], disableScrollLock: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableScrollLock", required: false }] }], disableNodrag: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableNodrag", required: false }] }], activeChange: [{ type: i0.Output, args: ["activeChange"] }] } });
|
|
271
|
+
}], ctorParameters: () => [], propDecorators: { scrollSelector: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollSelector", required: false }] }], scrollSelectors: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollSelectors", required: false }] }], disableStopPropagation: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableStopPropagation", required: false }] }], disableScrollLock: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableScrollLock", required: false }] }], disableNodrag: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableNodrag", required: false }] }], focusTargetSelector: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusTargetSelector", required: false }] }], activeChange: [{ type: i0.Output, args: ["activeChange"] }] } });
|
|
281
272
|
|
|
282
273
|
/**
|
|
283
274
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-directives-active-control.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/handlers/event-handlers.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/handlers/scroll-control.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/active-control.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/ng-atomic-common-directives-active-control.ts"],"sourcesContent":["import { Signal, WritableSignal } from '@angular/core';\n\nexport type CleanupFunction = () => void;\n\nexport interface ActiveControlOptions {\n /** mousedownでstopPropagationを呼ばない */\n disableStopPropagation?: boolean;\n /** スクロールを許可する要素のセレクタ */\n scrollSelectors?: string[];\n}\n\nexport class ActiveControlEventHandlers {\n private cleanupFunctions: CleanupFunction[] = [];\n\n constructor(\n private hostElement: HTMLElement,\n private isActive: WritableSignal<boolean>,\n private onActiveChange: (active: boolean) => void,\n private options: ActiveControlOptions = {}\n ) {}\n\n setupAll(): CleanupFunction[] {\n this.setupClickHandlers();\n this.setupPreventionHandlers();\n return this.cleanupFunctions;\n }\n\n private setupClickHandlers(): void {\n // ホスト要素クリック\n const mousedownHandler = (e: MouseEvent) => {\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 // 外部クリック\n const documentClickListener = (e: MouseEvent) => {\n if (!this.hostElement.contains(e.target as Node) && this.isActive()) {\n this.setActive(false);\n }\n };\n document.addEventListener('mousedown', documentClickListener, { capture: true });\n this.cleanupFunctions.push(() =>\n document.removeEventListener('mousedown', documentClickListener, { capture: true })\n );\n }\n\n private setupPreventionHandlers(): void {\n // ホイールイベント(スクロール対象要素以外でのみブロック)\n // ただし、ctrlKey + wheel(トラックパッドのピンチズーム)は常にブロック\n // 非アクティブ時はScrollControlがスクロール位置をリセットするため、ここでは処理しない\n this.addEventListener(this.hostElement, 'wheel', (e: WheelEvent) => {\n if (this.isActive()) {\n // ctrlKey + wheel = トラックパッドのピンチズーム → 常にブロック\n if (e.ctrlKey) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n // 通常のホイールスクロール: スクロール対象要素からのイベントは許可\n const target = e.target as HTMLElement;\n const isScrollableElement = this.options.scrollSelectors?.some(selector =>\n target.closest(selector) !== null\n );\n if (!isScrollableElement) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }, { passive: false });\n\n // タッチイベント(ホスト要素レベル)\n const touchHandler = (e: TouchEvent) => {\n if (!this.isActive()) return;\n\n // スクロール対象要素からのイベントは許可\n const target = e.target as HTMLElement;\n const isScrollableElement = this.options.scrollSelectors?.some(selector =>\n target.closest(selector) !== null\n );\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 // ジェスチャーイベント(ホスト要素レベル)\n const gestureHandler = (e: Event) => {\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\n // Document-level capture phaseハンドラ\n // ブラウザのピンチズームがデフォルト動作を行う前にキャッチする\n this.setupDocumentLevelPinchZoomPrevention();\n }\n\n /**\n * Document-levelでcapture phaseを使ってピンチズームを防止\n * ホスト要素内で発生したマルチタッチ/ジェスチャーイベントのみをブロック\n */\n private setupDocumentLevelPinchZoomPrevention(): void {\n // タッチイベント(capture phase)\n const documentTouchHandler = (e: TouchEvent) => {\n if (!this.isActive()) return;\n if (!this.hostElement.contains(e.target as Node)) return;\n\n if (e.touches.length > 1) {\n e.preventDefault();\n }\n };\n\n document.addEventListener('touchstart', documentTouchHandler, { capture: true, passive: false });\n document.addEventListener('touchmove', documentTouchHandler, { capture: true, passive: false });\n\n this.cleanupFunctions.push(() => {\n document.removeEventListener('touchstart', documentTouchHandler, { capture: true });\n document.removeEventListener('touchmove', documentTouchHandler, { capture: true });\n });\n\n // Safari gestureイベント(capture phase)\n const documentGestureHandler = (e: Event) => {\n if (!this.isActive()) return;\n if (!this.hostElement.contains(e.target as Node)) return;\n e.preventDefault();\n };\n\n ['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {\n document.addEventListener(eventName, documentGestureHandler, { capture: true, passive: false });\n this.cleanupFunctions.push(() =>\n document.removeEventListener(eventName, documentGestureHandler, { capture: true })\n );\n });\n }\n\n private addEventListener(\n element: HTMLElement | Document,\n event: string,\n handler: (e: any) => void,\n options?: AddEventListenerOptions\n ): void {\n element.addEventListener(event, handler as EventListener, options);\n this.cleanupFunctions.push(() => element.removeEventListener(event, handler as EventListener, options));\n }\n\n private toggleActive(): void {\n this.setActive(!this.isActive());\n }\n\n private setActive(active: boolean): void {\n this.isActive.set(active);\n this.onActiveChange(active);\n }\n}\n","import { Signal } from '@angular/core';\nimport { CleanupFunction } from './event-handlers';\n\nexport interface ScrollControlOptions {\n /** スクロール位置のロックを無効化する(常にスクロール可能にする) */\n disableScrollLock?: boolean;\n}\n\nexport class ScrollControl {\n private lockedScrollTop = 0;\n private wasActive = false;\n private rafId?: number;\n\n constructor(\n private scrollElement: HTMLElement,\n private isActive: Signal<boolean>,\n private options: ScrollControlOptions = {}\n ) {}\n\n setup(): CleanupFunction[] {\n const cleanups: CleanupFunction[] = [];\n\n // アクティブ状態の監視\n const checkActiveState = () => {\n const isActiveNow = this.isActive();\n\n if (!this.options.disableScrollLock) {\n if (!isActiveNow && this.wasActive) {\n // アクティブ → 非アクティブ: 現在位置をロック\n this.lockedScrollTop = this.scrollElement.scrollTop;\n } else if (!isActiveNow) {\n // 継続して非アクティブ: ロック位置を維持\n this.scrollElement.scrollTop = this.lockedScrollTop;\n }\n }\n // アクティブ時 or disableScrollLock時: 何もしない(自由スクロール)\n\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 // スクロールイベント監視\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\n return cleanups;\n }\n}\n","import { Directive, ElementRef, input, output, effect, signal, OnDestroy, inject } from '@angular/core';\nimport { ActiveControlEventHandlers, ScrollControl } from './handlers';\n\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 */\n@Directive({\n selector: '[appActiveControl]',\n standalone: true,\n host: {\n '[class.active]': 'isActive()',\n '[class.nodrag]': '!disableNodrag()',\n '[class.nowheel]': 'isActive()',\n }\n})\nexport class ActiveControlDirective implements OnDestroy {\n private readonly el = inject(ElementRef);\n readonly scrollSelector = input<string>();\n readonly scrollSelectors = input<string[]>();\n /** mousedownでstopPropagationを呼ばない(React Flowなどのドラッグと共存するため) */\n readonly disableStopPropagation = input<boolean>(false);\n /** スクロール位置のロックを無効化する(常にスクロール可能にする) */\n readonly disableScrollLock = input<boolean>(false);\n /** nodragクラスを付与しない(React Flowのノードでドラッグを有効化するため) */\n readonly disableNodrag = input<boolean>(false);\n readonly activeChange = output<boolean>();\n readonly isActive = signal<boolean>(false);\n\n private eventCleanupFunctions: (() => void)[] = [];\n private scrollCleanupFunctions: (() => void)[] = [];\n private eventHandlersInitialized = false;\n\n constructor() {\n // イベントハンドラーの初期化(一度だけ)\n effect(() => {\n if (!this.eventHandlersInitialized) {\n setTimeout(() => this.initializeEventHandlers(), 100);\n this.eventHandlersInitialized = true;\n }\n }, { allowSignalWrites: true });\n\n // スクロール制御の初期化(セレクタが変わるたびに再設定)\n effect(() => {\n const selectors = this.getScrollSelectors();\n setTimeout(() => this.setupScrollControls(selectors), 150);\n });\n }\n\n ngOnDestroy(): void {\n this.eventCleanupFunctions.forEach(cleanup => cleanup());\n this.scrollCleanupFunctions.forEach(cleanup => cleanup());\n }\n\n private initializeEventHandlers(): void {\n const hostElement = this.el.nativeElement as HTMLElement;\n const scrollSelectors = this.getScrollSelectors();\n const eventHandlers = new ActiveControlEventHandlers(\n hostElement,\n this.isActive,\n (active) => this.activeChange.emit(active),\n { disableStopPropagation: this.disableStopPropagation(), scrollSelectors }\n );\n this.eventCleanupFunctions.push(...eventHandlers.setupAll());\n }\n\n private setupScrollControls(selectors: string[]): void {\n // 既存のスクロール制御をクリーンアップ\n this.scrollCleanupFunctions.forEach(cleanup => cleanup());\n this.scrollCleanupFunctions = [];\n\n const hostElement = this.el.nativeElement as HTMLElement;\n const disableScrollLock = this.disableScrollLock();\n for (const selector of selectors) {\n // querySelectorAll を使用して全てのマッチする要素を取得\n const scrollElements = hostElement.querySelectorAll<HTMLElement>(selector);\n scrollElements.forEach(scrollElement => {\n const scrollControl = new ScrollControl(scrollElement, this.isActive, { disableScrollLock });\n this.scrollCleanupFunctions.push(...scrollControl.setup());\n });\n }\n }\n\n private getScrollSelectors(): string[] {\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}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-directives-active-control.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/handlers/event-handlers.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/handlers/scroll-control.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/active-control.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/ng-atomic-common-directives-active-control.ts"],"sourcesContent":["import { Signal, WritableSignal } from '@angular/core';\n\nexport type CleanupFunction = () => void;\n\nexport interface ActiveControlOptions {\n \n disableStopPropagation?: boolean;\n \n scrollSelectors?: string[];\n \n focusTargetSelector?: string;\n}\n\nexport class ActiveControlEventHandlers {\n private cleanupFunctions: CleanupFunction[] = [];\n\n constructor(\n private hostElement: HTMLElement,\n private isActive: WritableSignal<boolean>,\n private onActiveChange: (active: boolean) => void,\n private options: ActiveControlOptions = {}\n ) {}\n\n setupAll(): CleanupFunction[] {\n this.setupClickHandlers();\n this.setupPreventionHandlers();\n return this.cleanupFunctions;\n }\n\n private setupClickHandlers(): void {\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n const CLICK_MOVE_THRESHOLD_PX = 5;\n let justActivated = false;\n let gestureStart: { x: number; y: number } | null = null;\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n const gestureStartHandler = (e: MouseEvent) => {\n justActivated = false;\n gestureStart = this.hostElement.contains(e.target as Node)\n ? { x: e.screenX, y: e.screenY }\n : null;\n };\n this.addEventListener(window, 'mousedown', gestureStartHandler, { capture: true });\n\n const mousedownHandler = (e: MouseEvent) => {\n if (!this.isActive()) {\n this.setActive(true);\n justActivated = true;\n \n \n \n \n \n \n if (this.options.focusTargetSelector) {\n const target = this.hostElement.querySelector<HTMLElement>(this.options.focusTargetSelector);\n if (target) {\n e.preventDefault();\n target.focus();\n }\n }\n }\n \n \n if (!this.options.disableStopPropagation) {\n e.stopPropagation();\n }\n };\n this.addEventListener(this.hostElement, 'mousedown', mousedownHandler);\n\n \n \n \n \n \n \n const mouseupHandler = (e: MouseEvent) => {\n const start = gestureStart;\n gestureStart = null;\n if (e.button !== 0) {\n return; \n }\n if (justActivated) {\n justActivated = false;\n return;\n }\n if (!start) {\n return; \n }\n const moved = Math.hypot(e.screenX - start.x, e.screenY - start.y) > CLICK_MOVE_THRESHOLD_PX;\n if (moved) {\n return; \n }\n if (this.isActive()) {\n this.setActive(false);\n }\n };\n this.addEventListener(window, 'mouseup', mouseupHandler, { capture: true });\n\n \n const documentClickListener = (e: MouseEvent) => {\n if (!this.hostElement.contains(e.target as Node) && this.isActive()) {\n this.setActive(false);\n }\n };\n document.addEventListener('mousedown', documentClickListener, { capture: true });\n this.cleanupFunctions.push(() =>\n document.removeEventListener('mousedown', documentClickListener, { capture: true })\n );\n }\n\n private setupPreventionHandlers(): void {\n \n \n \n this.addEventListener(this.hostElement, 'wheel', (e: WheelEvent) => {\n if (this.isActive()) {\n \n if (e.ctrlKey) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n \n const target = e.target as HTMLElement;\n const isScrollableElement = this.options.scrollSelectors?.some(selector =>\n target.closest(selector) !== null\n );\n if (!isScrollableElement) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }, { passive: false });\n\n \n const touchHandler = (e: TouchEvent) => {\n if (!this.isActive()) return;\n\n \n const target = e.target as HTMLElement;\n const isScrollableElement = this.options.scrollSelectors?.some(selector =>\n target.closest(selector) !== null\n );\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 \n const gestureHandler = (e: Event) => {\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\n \n \n this.setupDocumentLevelPinchZoomPrevention();\n }\n\n \n private setupDocumentLevelPinchZoomPrevention(): void {\n \n const documentTouchHandler = (e: TouchEvent) => {\n if (!this.isActive()) return;\n if (!this.hostElement.contains(e.target as Node)) return;\n\n if (e.touches.length > 1) {\n e.preventDefault();\n }\n };\n\n document.addEventListener('touchstart', documentTouchHandler, { capture: true, passive: false });\n document.addEventListener('touchmove', documentTouchHandler, { capture: true, passive: false });\n\n this.cleanupFunctions.push(() => {\n document.removeEventListener('touchstart', documentTouchHandler, { capture: true });\n document.removeEventListener('touchmove', documentTouchHandler, { capture: true });\n });\n\n \n const documentGestureHandler = (e: Event) => {\n if (!this.isActive()) return;\n if (!this.hostElement.contains(e.target as Node)) return;\n e.preventDefault();\n };\n\n ['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {\n document.addEventListener(eventName, documentGestureHandler, { capture: true, passive: false });\n this.cleanupFunctions.push(() =>\n document.removeEventListener(eventName, documentGestureHandler, { capture: true })\n );\n });\n }\n\n private addEventListener(\n element: HTMLElement | Document | Window,\n event: string,\n handler: (e: any) => void,\n options?: AddEventListenerOptions\n ): void {\n element.addEventListener(event, handler as EventListener, options);\n this.cleanupFunctions.push(() => element.removeEventListener(event, handler as EventListener, options));\n }\n\n private toggleActive(): void {\n this.setActive(!this.isActive());\n }\n\n private setActive(active: boolean): void {\n this.isActive.set(active);\n this.onActiveChange(active);\n }\n}\n","import { Signal } from '@angular/core';\nimport { CleanupFunction } from './event-handlers';\n\nexport interface ScrollControlOptions {\n \n disableScrollLock?: boolean;\n}\n\nexport class ScrollControl {\n private lockedScrollTop = 0;\n private wasActive = false;\n private rafId?: number;\n\n constructor(\n private scrollElement: HTMLElement,\n private isActive: Signal<boolean>,\n private options: ScrollControlOptions = {}\n ) {}\n\n setup(): CleanupFunction[] {\n const cleanups: CleanupFunction[] = [];\n\n \n const checkActiveState = () => {\n const isActiveNow = this.isActive();\n\n if (!this.options.disableScrollLock) {\n if (!isActiveNow && this.wasActive) {\n \n this.lockedScrollTop = this.scrollElement.scrollTop;\n } else if (!isActiveNow) {\n \n this.scrollElement.scrollTop = this.lockedScrollTop;\n }\n }\n \n\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 \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\n return cleanups;\n }\n}\n","import { Directive, ElementRef, input, output, effect, signal, OnDestroy, inject } from '@angular/core';\nimport { ActiveControlEventHandlers, ScrollControl } from './handlers';\n\n\n@Directive({\n selector: '[appActiveControl]',\n standalone: true,\n host: {\n '[class.active]': 'isActive()',\n '[class.nodrag]': '!disableNodrag()',\n '[class.nowheel]': 'isActive()',\n }\n})\nexport class ActiveControlDirective implements OnDestroy {\n private readonly el = inject(ElementRef);\n readonly scrollSelector = input<string>();\n readonly scrollSelectors = input<string[]>();\n \n readonly disableStopPropagation = input<boolean>(false);\n \n readonly disableScrollLock = input<boolean>(false);\n \n readonly disableNodrag = input<boolean>(false);\n \n readonly focusTargetSelector = input<string>();\n readonly activeChange = output<boolean>();\n readonly isActive = signal<boolean>(false);\n\n private eventCleanupFunctions: (() => void)[] = [];\n private scrollCleanupFunctions: (() => void)[] = [];\n private eventHandlersInitialized = false;\n\n constructor() {\n \n effect(() => {\n if (!this.eventHandlersInitialized) {\n setTimeout(() => this.initializeEventHandlers(), 100);\n this.eventHandlersInitialized = true;\n }\n }, { allowSignalWrites: true });\n\n \n effect(() => {\n const selectors = this.getScrollSelectors();\n setTimeout(() => this.setupScrollControls(selectors), 150);\n });\n }\n\n ngOnDestroy(): void {\n this.eventCleanupFunctions.forEach(cleanup => cleanup());\n this.scrollCleanupFunctions.forEach(cleanup => cleanup());\n }\n\n private initializeEventHandlers(): void {\n const hostElement = this.el.nativeElement as HTMLElement;\n const scrollSelectors = this.getScrollSelectors();\n const eventHandlers = new ActiveControlEventHandlers(\n hostElement,\n this.isActive,\n (active) => this.activeChange.emit(active),\n {\n disableStopPropagation: this.disableStopPropagation(),\n scrollSelectors,\n focusTargetSelector: this.focusTargetSelector(),\n }\n );\n this.eventCleanupFunctions.push(...eventHandlers.setupAll());\n }\n\n private setupScrollControls(selectors: string[]): void {\n \n this.scrollCleanupFunctions.forEach(cleanup => cleanup());\n this.scrollCleanupFunctions = [];\n\n const hostElement = this.el.nativeElement as HTMLElement;\n const disableScrollLock = this.disableScrollLock();\n for (const selector of selectors) {\n \n const scrollElements = hostElement.querySelectorAll<HTMLElement>(selector);\n scrollElements.forEach(scrollElement => {\n const scrollControl = new ScrollControl(scrollElement, this.isActive, { disableScrollLock });\n this.scrollCleanupFunctions.push(...scrollControl.setup());\n });\n }\n }\n\n private getScrollSelectors(): string[] {\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}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAaa,0BAA0B,CAAA;AAGrC,IAAA,WAAA,CACU,WAAwB,EACxB,QAAiC,EACjC,cAAyC,EACzC,UAAgC,EAAE,EAAA;QAHlC,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,OAAO,GAAP,OAAO;QANT,IAAA,CAAA,gBAAgB,GAAsB,EAAE;IAO7C;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,uBAAuB,EAAE;QAC9B,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEQ,kBAAkB,GAAA;QAkCxB,MAAM,uBAAuB,GAAG,CAAC;QACjC,IAAI,aAAa,GAAG,KAAK;QACzB,IAAI,YAAY,GAAoC,IAAI;AAexD,QAAA,MAAM,mBAAmB,GAAG,CAAC,CAAa,KAAI;YAC5C,aAAa,GAAG,KAAK;YACrB,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc;AACvD,kBAAE,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO;kBAC5B,IAAI;AACV,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAElF,QAAA,MAAM,gBAAgB,GAAG,CAAC,CAAa,KAAI;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBACpB,aAAa,GAAG,IAAI;AAOpB,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AACpC,oBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAc,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;oBAC5F,IAAI,MAAM,EAAE;wBACV,CAAC,CAAC,cAAc,EAAE;wBAClB,MAAM,CAAC,KAAK,EAAE;oBAChB;gBACF;YACF;AAGA,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE;gBACxC,CAAC,CAAC,eAAe,EAAE;YACrB;AACF,QAAA,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,CAAC;AAQtE,QAAA,MAAM,cAAc,GAAG,CAAC,CAAa,KAAI;YACvC,MAAM,KAAK,GAAG,YAAY;YAC1B,YAAY,GAAG,IAAI;AACnB,YAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClB;YACF;YACA,IAAI,aAAa,EAAE;gBACjB,aAAa,GAAG,KAAK;gBACrB;YACF;YACA,IAAI,CAAC,KAAK,EAAE;gBACV;YACF;YACA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,uBAAuB;YAC5F,IAAI,KAAK,EAAE;gBACT;YACF;AACA,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACvB;AACF,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAG3E,QAAA,MAAM,qBAAqB,GAAG,CAAC,CAAa,KAAI;AAC9C,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnE,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACvB;AACF,QAAA,CAAC;AACD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,qBAAqB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MACzB,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,qBAAqB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CACpF;IACH;IAEQ,uBAAuB,GAAA;AAI7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAa,KAAI;AACjE,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AAEnB,gBAAA,IAAI,CAAC,CAAC,OAAO,EAAE;oBACb,CAAC,CAAC,cAAc,EAAE;oBAClB,CAAC,CAAC,eAAe,EAAE;oBACnB;gBACF;AAGA,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB;gBACtC,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,IACrE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,CAClC;gBACD,IAAI,CAAC,mBAAmB,EAAE;oBACxB,CAAC,CAAC,cAAc,EAAE;oBAClB,CAAC,CAAC,eAAe,EAAE;gBACrB;YACF;AACF,QAAA,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAGtB,QAAA,MAAM,YAAY,GAAG,CAAC,CAAa,KAAI;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAAE;AAGtB,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB;YACtC,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,IACrE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,CAClC;YACD,IAAI,CAAC,mBAAmB,EAAE;gBACxB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBAExB,CAAC,CAAC,cAAc,EAAE;oBAClB,CAAC,CAAC,eAAe,EAAE;gBACrB;YAEF;AACF,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACvF,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAGtF,QAAA,MAAM,cAAc,GAAG,CAAC,CAAQ,KAAI;AAClC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnB,CAAC,CAAC,cAAc,EAAE;gBAClB,CAAC,CAAC,eAAe,EAAE;YACrB;AACF,QAAA,CAAC;QACD,CAAC,cAAc,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,IAAG;AAClE,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACxF,QAAA,CAAC,CAAC;QAIF,IAAI,CAAC,qCAAqC,EAAE;IAC9C;IAGQ,qCAAqC,GAAA;AAE3C,QAAA,MAAM,oBAAoB,GAAG,CAAC,CAAa,KAAI;AAC7C,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAAE;YACtB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;gBAAE;YAElD,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,CAAC,CAAC,cAAc,EAAE;YACpB;AACF,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChG,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAE/F,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAK;AAC9B,YAAA,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACnF,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACpF,QAAA,CAAC,CAAC;AAGF,QAAA,MAAM,sBAAsB,GAAG,CAAC,CAAQ,KAAI;AAC1C,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAAE;YACtB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;gBAAE;YAClD,CAAC,CAAC,cAAc,EAAE;AACpB,QAAA,CAAC;QAED,CAAC,cAAc,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,IAAG;AAClE,YAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,sBAAsB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC/F,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MACzB,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,sBAAsB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CACnF;AACH,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,gBAAgB,CACtB,OAAwC,EACxC,KAAa,EACb,OAAyB,EACzB,OAAiC,EAAA;QAEjC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAwB,EAAE,OAAO,CAAC;AAClE,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAwB,EAAE,OAAO,CAAC,CAAC;IACzG;IAEQ,YAAY,GAAA;QAClB,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClC;AAEQ,IAAA,SAAS,CAAC,MAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IAC7B;AACD;;MCtQY,aAAa,CAAA;AAKxB,IAAA,WAAA,CACU,aAA0B,EAC1B,QAAyB,EACzB,UAAgC,EAAE,EAAA;QAFlC,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,OAAO,GAAP,OAAO;QAPT,IAAA,CAAA,eAAe,GAAG,CAAC;QACnB,IAAA,CAAA,SAAS,GAAG,KAAK;IAOtB;IAEH,KAAK,GAAA;QACH,MAAM,QAAQ,GAAsB,EAAE;QAGtC,MAAM,gBAAgB,GAAG,MAAK;AAC5B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE;AAEnC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;AACnC,gBAAA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE;oBAElC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS;gBACrD;qBAAO,IAAI,CAAC,WAAW,EAAE;oBAEvB,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe;gBACrD;YACF;AAGA,YAAA,IAAI,CAAC,SAAS,GAAG,WAAW;AAC5B,YAAA,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,gBAAgB,CAAC;AACtD,QAAA,CAAC;AACD,QAAA,gBAAgB,EAAE;AAClB,QAAA,QAAQ,CAAC,IAAI,CAAC,MAAK;AACjB,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAC5B,gBAAA,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;YAClC;AACF,QAAA,CAAC,CAAC;QAGF,MAAM,aAAa,GAAG,MAAK;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACvD,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe;YACrD;AACF,QAAA,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC5D,QAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEpF,QAAA,OAAO,QAAQ;IACjB;AACD;;MC7CY,sBAAsB,CAAA;AAmBjC,IAAA,WAAA,GAAA;AAlBiB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,IAAA,CAAA,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAChC,IAAA,CAAA,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAY;AAEnC,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAU,KAAK,kEAAC;AAE9C,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,6DAAC;AAEzC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,KAAK,yDAAC;QAErC,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QACrC,IAAA,CAAA,YAAY,GAAG,MAAM,EAAW;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,oDAAC;QAElC,IAAA,CAAA,qBAAqB,GAAmB,EAAE;QAC1C,IAAA,CAAA,sBAAsB,GAAmB,EAAE;QAC3C,IAAA,CAAA,wBAAwB,GAAG,KAAK;QAItC,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBAClC,UAAU,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,EAAE,GAAG,CAAC;AACrD,gBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;YACtC;AACF,QAAA,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QAG/B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC3C,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC;AAC5D,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;IAC3D;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAA4B;AACxD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACjD,MAAM,aAAa,GAAG,IAAI,0BAA0B,CAClD,WAAW,EACX,IAAI,CAAC,QAAQ,EACb,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAC1C;AACE,YAAA,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EAAE;YACrD,eAAe;AACf,YAAA,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAChD,SAAA,CACF;QACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;IAC9D;AAEQ,IAAA,mBAAmB,CAAC,SAAmB,EAAA;AAE7C,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE;AAEhC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAA4B;AACxD,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAClD,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAEhC,MAAM,cAAc,GAAG,WAAW,CAAC,gBAAgB,CAAc,QAAQ,CAAC;AAC1E,YAAA,cAAc,CAAC,OAAO,CAAC,aAAa,IAAG;AACrC,gBAAA,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,iBAAiB,EAAE,CAAC;gBAC5F,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;AAC5D,YAAA,CAAC,CAAC;QACJ;IACF;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;QACvC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAA,OAAO,QAAQ;QACjB;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;QACpC,OAAO,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;IAC/B;8GAhFW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,gBAAgB,EAAE,YAAY;AAC9B,wBAAA,gBAAgB,EAAE,kBAAkB;AACpC,wBAAA,iBAAiB,EAAE,YAAY;AAChC;AACF,iBAAA;;;ACZD;;AAEG;;;;"}
|
|
@@ -4,9 +4,6 @@ import { CommonModule } from '@angular/common';
|
|
|
4
4
|
|
|
5
5
|
class IosSafariScrollBuggyfillDirective {
|
|
6
6
|
ngAfterViewInit() {
|
|
7
|
-
// this.el.nativeElement.addEventListener('touchmove', (e: Event) => {
|
|
8
|
-
// e.preventDefault();
|
|
9
|
-
// }, {passive: false});
|
|
10
7
|
}
|
|
11
8
|
onTouchmove(event) {
|
|
12
9
|
event.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.module.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/ios-safari-scroll-buggyfill/ng-atomic-common-directives-ios-safari-scroll-buggyfill.ts"],"sourcesContent":["import { AfterViewInit, Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[iosSafariScrollBuggyfill]',\n standalone: false\n})\nexport class IosSafariScrollBuggyfillDirective implements AfterViewInit {\n\n ngAfterViewInit(): void {\n
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.module.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/ios-safari-scroll-buggyfill/ng-atomic-common-directives-ios-safari-scroll-buggyfill.ts"],"sourcesContent":["import { AfterViewInit, Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[iosSafariScrollBuggyfill]',\n standalone: false\n})\nexport class IosSafariScrollBuggyfillDirective implements AfterViewInit {\n\n ngAfterViewInit(): void {\n \n \n \n }\n\n @HostListener('touchmove', ['$event'])\n onTouchmove(event: Event) {\n event.preventDefault();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IosSafariScrollBuggyfillDirective } from './ios-safari-scroll-buggyfill.directive';\n\n\n\n@NgModule({\n declarations: [\n IosSafariScrollBuggyfillDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n IosSafariScrollBuggyfillDirective,\n ]\n})\nexport class IosSafariScrollBuggyfillModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,iCAAiC,CAAA;IAE5C,eAAe,GAAA;IAIf;AAGA,IAAA,WAAW,CAAC,KAAY,EAAA;QACtB,KAAK,CAAC,cAAc,EAAE;IACxB;8GAXW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjC,iCAAiC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBASE,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;;MCG1B,8BAA8B,CAAA;8GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,CATvC,iCAAiC,CAAA,EAAA,OAAA,EAAA,CAGjC,YAAY,aAGZ,iCAAiC,CAAA,EAAA,CAAA,CAAA;AAGxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,YANvC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAMH,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAX1C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iCAAiC;AAClC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iCAAiC;AAClC;AACF,iBAAA;;;AChBD;;AAEG;;;;"}
|
|
@@ -15,7 +15,6 @@ class PreventBrowserZoomDirective {
|
|
|
15
15
|
this.preventKeyboardZoom();
|
|
16
16
|
this.preventGestureZoom();
|
|
17
17
|
}
|
|
18
|
-
/** Ctrl+wheel(トラックパッドのピンチズーム) */
|
|
19
18
|
preventCtrlWheel() {
|
|
20
19
|
const handler = (e) => {
|
|
21
20
|
if (e.ctrlKey) {
|
|
@@ -25,7 +24,6 @@ class PreventBrowserZoomDirective {
|
|
|
25
24
|
document.addEventListener('wheel', handler, { passive: false, capture: true });
|
|
26
25
|
this.cleanupFns.push(() => document.removeEventListener('wheel', handler, { capture: true }));
|
|
27
26
|
}
|
|
28
|
-
/** Ctrl/Cmd + Plus/Minus/0(キーボードズーム) */
|
|
29
27
|
preventKeyboardZoom() {
|
|
30
28
|
const handler = (e) => {
|
|
31
29
|
if ((e.ctrlKey || e.metaKey) && ['+', '-', '=', '0'].includes(e.key)) {
|
|
@@ -35,7 +33,6 @@ class PreventBrowserZoomDirective {
|
|
|
35
33
|
document.addEventListener('keydown', handler, { capture: true });
|
|
36
34
|
this.cleanupFns.push(() => document.removeEventListener('keydown', handler, { capture: true }));
|
|
37
35
|
}
|
|
38
|
-
/** Safari のジェスチャーイベント */
|
|
39
36
|
preventGestureZoom() {
|
|
40
37
|
const handler = (e) => {
|
|
41
38
|
e.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-directives-prevent-browser-zoom.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/prevent-browser-zoom/prevent-browser-zoom.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/prevent-browser-zoom/ng-atomic-common-directives-prevent-browser-zoom.ts"],"sourcesContent":["import { Directive, OnDestroy, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({ standalone: true, selector: '[preventBrowserZoom]' })\nexport class PreventBrowserZoomDirective implements OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private cleanupFns: (() => void)[] = [];\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this.setupPreventionHandlers();\n }\n }\n\n private setupPreventionHandlers(): void {\n this.preventCtrlWheel();\n this.preventKeyboardZoom();\n this.preventGestureZoom();\n }\n\n
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-directives-prevent-browser-zoom.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/prevent-browser-zoom/prevent-browser-zoom.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/prevent-browser-zoom/ng-atomic-common-directives-prevent-browser-zoom.ts"],"sourcesContent":["import { Directive, OnDestroy, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({ standalone: true, selector: '[preventBrowserZoom]' })\nexport class PreventBrowserZoomDirective implements OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private cleanupFns: (() => void)[] = [];\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this.setupPreventionHandlers();\n }\n }\n\n private setupPreventionHandlers(): void {\n this.preventCtrlWheel();\n this.preventKeyboardZoom();\n this.preventGestureZoom();\n }\n\n \n private preventCtrlWheel(): void {\n const handler = (e: WheelEvent) => {\n if (e.ctrlKey) {\n e.preventDefault();\n }\n };\n document.addEventListener('wheel', handler, { passive: false, capture: true });\n this.cleanupFns.push(() => document.removeEventListener('wheel', handler, { capture: true }));\n }\n\n \n private preventKeyboardZoom(): void {\n const handler = (e: KeyboardEvent) => {\n if ((e.ctrlKey || e.metaKey) && ['+', '-', '=', '0'].includes(e.key)) {\n e.preventDefault();\n }\n };\n document.addEventListener('keydown', handler, { capture: true });\n this.cleanupFns.push(() => document.removeEventListener('keydown', handler, { capture: true }));\n }\n\n \n private preventGestureZoom(): void {\n const handler = (e: Event) => {\n e.preventDefault();\n };\n for (const eventName of ['gesturestart', 'gesturechange', 'gestureend']) {\n document.addEventListener(eventName, handler, { passive: false, capture: true });\n this.cleanupFns.push(() => document.removeEventListener(eventName, handler, { capture: true }));\n }\n }\n\n ngOnDestroy(): void {\n this.cleanupFns.forEach(fn => fn());\n this.cleanupFns = [];\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAIa,2BAA2B,CAAA;AAItC,IAAA,WAAA,GAAA;AAHiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QACzC,IAAA,CAAA,UAAU,GAAmB,EAAE;AAGrC,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,uBAAuB,EAAE;QAChC;IACF;IAEQ,uBAAuB,GAAA;QAC7B,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAGQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,OAAO,GAAG,CAAC,CAAa,KAAI;AAChC,YAAA,IAAI,CAAC,CAAC,OAAO,EAAE;gBACb,CAAC,CAAC,cAAc,EAAE;YACpB;AACF,QAAA,CAAC;AACD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/F;IAGQ,mBAAmB,GAAA;AACzB,QAAA,MAAM,OAAO,GAAG,CAAC,CAAgB,KAAI;YACnC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACpE,CAAC,CAAC,cAAc,EAAE;YACpB;AACF,QAAA,CAAC;AACD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACjG;IAGQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,OAAO,GAAG,CAAC,CAAQ,KAAI;YAC3B,CAAC,CAAC,cAAc,EAAE;AACpB,QAAA,CAAC;QACD,KAAK,MAAM,SAAS,IAAI,CAAC,cAAc,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE;AACvE,YAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAChF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;8GApDW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,EAAE;;;ACHjE;;AAEG;;;;"}
|
|
@@ -4,7 +4,6 @@ import { from } from 'rxjs';
|
|
|
4
4
|
import { take, mergeMap } from 'rxjs/operators';
|
|
5
5
|
|
|
6
6
|
const AUTHORIZATION = new InjectionToken('[@ng-atomic/common] AUTHORIZATION');
|
|
7
|
-
/** @deprecated use `authorizationInterceptor` instead. */
|
|
8
7
|
class AuthorizationInterceptor {
|
|
9
8
|
constructor() {
|
|
10
9
|
this.getAuth = inject(AUTHORIZATION, { optional: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-interceptors-authorization.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/authorization.interceptor.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/ng-atomic-common-interceptors-authorization.ts"],"sourcesContent":["import { Injectable, InjectionToken, Provider, inject } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpInterceptorFn } from '@angular/common/http';\nimport { from, Observable } from 'rxjs';\nimport { mergeMap, take } from 'rxjs/operators';\n\nexport type GetAuthorization = () => Promise<string | null> | Observable<string | null>;\nexport const AUTHORIZATION = new InjectionToken<GetAuthorization>('[@ng-atomic/common] AUTHORIZATION');\n\n
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-interceptors-authorization.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/authorization.interceptor.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/ng-atomic-common-interceptors-authorization.ts"],"sourcesContent":["import { Injectable, InjectionToken, Provider, inject } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpInterceptorFn } from '@angular/common/http';\nimport { from, Observable } from 'rxjs';\nimport { mergeMap, take } from 'rxjs/operators';\n\nexport type GetAuthorization = () => Promise<string | null> | Observable<string | null>;\nexport const AUTHORIZATION = new InjectionToken<GetAuthorization>('[@ng-atomic/common] AUTHORIZATION');\n\n\n@Injectable()\nexport class AuthorizationInterceptor implements HttpInterceptor {\n\n private getAuth = inject(AUTHORIZATION, { optional: true });\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (!req.url.startsWith('/api') || !this.getAuth) return next.handle(req);\n\n return from(this.getAuth())\n .pipe(take(1))\n .pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));\n }\n\n private getRequestWithToken(req: HttpRequest<unknown>, token: string) {\n return req.clone({ setHeaders: {Authorization: token} });\n }\n}\n\nexport function authorizationInterceptor(\n isAuthorizedRequest: (req: HttpRequest<unknown>) => boolean = req => req.url.startsWith('/api')\n): HttpInterceptorFn {\n return (req, next) => {\n if (!isAuthorizedRequest(req)) return next(req);\n const getAuth = inject(AUTHORIZATION, { optional: true });\n if (!getAuth) return next(req);\n return from(getAuth()).pipe(\n take(1),\n mergeMap(token => next(token ? req.clone({ setHeaders: {Authorization: token} }) : req)),\n );\n };\n}\n\nexport function provideAuthorization(useFactory: () => GetAuthorization): Provider {\n return { provide: AUTHORIZATION, useFactory };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,aAAa,GAAG,IAAI,cAAc,CAAmB,mCAAmC;MAIxF,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;QAGU,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAa5D,IAAA;IAXC,SAAS,CAAC,GAAyB,EAAE,IAAiB,EAAA;AACpD,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAEzE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACnG;IAEQ,mBAAmB,CAAC,GAAyB,EAAE,KAAa,EAAA;AAClE,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,EAAE,CAAC;IAC1D;8GAdW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;AAkBK,SAAU,wBAAwB,CACtC,mBAAA,GAA8D,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAA;AAE/F,IAAA,OAAO,CAAC,GAAG,EAAE,IAAI,KAAI;AACnB,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAC/C,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACzB,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CACzF;AACH,IAAA,CAAC;AACH;AAEM,SAAU,oBAAoB,CAAC,UAAkC,EAAA;AACrE,IAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE;AAC/C;;AC3CA;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-pipes-columns.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/columns/columns.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/columns/ng-atomic-common-pipes-columns.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { Column } from '@ng-atomic/common/models';\n\n
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-pipes-columns.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/columns/columns.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/columns/ng-atomic-common-pipes-columns.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { Column } from '@ng-atomic/common/models';\n\n\n@Pipe({name: 'columns', standalone: true, pure: true})\nexport class ColumnsPipe implements PipeTransform {\n transform<T>(columns: Column[]): Column[] {\n return columns.filter(item => item.visible).map((column, i) => ({\n ...column,\n name: ['checkbox', 'actions'].includes(column.type) ? column.name : column.name,\n }));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAKa,WAAW,CAAA;AACtB,IAAA,SAAS,CAAI,OAAiB,EAAA;QAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM;AAC9D,YAAA,GAAG,MAAM;YACT,IAAI,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AAChF,SAAA,CAAC,CAAC;IACL;8GANW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,IAAI;mBAAC,EAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC;;;ACJrD;;AAEG;;;;"}
|
|
@@ -28,7 +28,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
28
28
|
function injectParentLangMap() {
|
|
29
29
|
return inject(DOMAIN_LANG_MAP, { skipSelf: true, optional: true }) ?? {};
|
|
30
30
|
}
|
|
31
|
-
/** @deprecated use `injectParentLangMap` instead */
|
|
32
31
|
const injectParentDomainLangMap = injectParentLangMap;
|
|
33
32
|
function provideLangMap(useFactory, { merge = true } = {}) {
|
|
34
33
|
return {
|
|
@@ -40,37 +39,29 @@ function provideLangMap(useFactory, { merge = true } = {}) {
|
|
|
40
39
|
}
|
|
41
40
|
};
|
|
42
41
|
}
|
|
43
|
-
/** @deprecated use `provideLangMap` instead */
|
|
44
42
|
function provideDomainLang(domain, mergeObj = {}) {
|
|
45
43
|
return provideLangMap(() => getLangMap(domain, mergeObj));
|
|
46
44
|
}
|
|
47
|
-
/** @deprecated */
|
|
48
45
|
function provideModel(useFactory) {
|
|
49
46
|
return { provide: DOMAIN_MODEL, useFactory };
|
|
50
47
|
}
|
|
51
|
-
/** @deprecated */
|
|
52
48
|
function injectModel() {
|
|
53
49
|
return inject(DOMAIN_MODEL, { optional: true }) ?? null;
|
|
54
50
|
}
|
|
55
|
-
/** @deprecated */
|
|
56
51
|
function provideProps(useFactory) {
|
|
57
52
|
return { provide: DOMAIN_PROPS, useFactory: wrapFactory(useFactory) };
|
|
58
53
|
}
|
|
59
|
-
/** @deprecated */
|
|
60
54
|
function provideModelName(useFactory) {
|
|
61
55
|
return { provide: DOMAIN_MODEL_NAME, useFactory: wrapFactory(useFactory) };
|
|
62
56
|
}
|
|
63
|
-
/** @deprecated */
|
|
64
57
|
function injectProps() {
|
|
65
58
|
return inject(DOMAIN_PROPS, { optional: true }) ?? signal([]);
|
|
66
59
|
}
|
|
67
|
-
/** @deprecated */
|
|
68
60
|
function injectModelName(injector) {
|
|
69
61
|
if (injector)
|
|
70
62
|
return (injector.get(DOMAIN_MODEL_NAME, null) ?? signal(null));
|
|
71
63
|
return (inject(DOMAIN_MODEL_NAME, { optional: true }) ?? signal(null));
|
|
72
64
|
}
|
|
73
|
-
/** @deprecated */
|
|
74
65
|
function provideDomain(useFactory) {
|
|
75
66
|
return [
|
|
76
67
|
provideModel(useFactory),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-pipes-domain.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/domain.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/ng-atomic-common-pipes-domain.ts"],"sourcesContent":["import { InjectionToken, Injector, Pipe, Signal, inject, signal, PipeTransform } from '@angular/core';\nimport { Entity, Type, getLangMap, getModelName, getProps } from '@nx-ddd/common/domain';\nimport { SignalOrValue, wrapFactory } from '@ng-atomic/common/pipes/signal';\nimport { DOMAIN_LANG_MAP, DomainLangMap, LanguageService } from '@ng-atomic/common/services/language';\n\nexport const DOMAIN_MODEL = new InjectionToken<Type<{id: string}>>('Domain Model');\nexport const DOMAIN_PROPS = new InjectionToken<Signal<string[]>>('Domain Props');\nexport const DOMAIN_MODEL_NAME = new InjectionToken<Signal<string>>('Domain Model Name');\n\n@Pipe({\n standalone: true,\n name: 'domain',\n pure: true,\n})\nexport class DomainPipe implements PipeTransform {\n readonly language = inject(LanguageService);\n\n transform(input: string, map?: DomainLangMap) {\n return this.language.transform(input, map);\n }\n}\n\nexport function injectParentLangMap(): DomainLangMap {\n return inject(DOMAIN_LANG_MAP, {skipSelf: true, optional: true}) ?? {};\n}\n\n
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-pipes-domain.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/domain.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/ng-atomic-common-pipes-domain.ts"],"sourcesContent":["import { InjectionToken, Injector, Pipe, Signal, inject, signal, PipeTransform } from '@angular/core';\nimport { Entity, Type, getLangMap, getModelName, getProps } from '@nx-ddd/common/domain';\nimport { SignalOrValue, wrapFactory } from '@ng-atomic/common/pipes/signal';\nimport { DOMAIN_LANG_MAP, DomainLangMap, LanguageService } from '@ng-atomic/common/services/language';\n\nexport const DOMAIN_MODEL = new InjectionToken<Type<{id: string}>>('Domain Model');\nexport const DOMAIN_PROPS = new InjectionToken<Signal<string[]>>('Domain Props');\nexport const DOMAIN_MODEL_NAME = new InjectionToken<Signal<string>>('Domain Model Name');\n\n@Pipe({\n standalone: true,\n name: 'domain',\n pure: true,\n})\nexport class DomainPipe implements PipeTransform {\n readonly language = inject(LanguageService);\n\n transform(input: string, map?: DomainLangMap) {\n return this.language.transform(input, map);\n }\n}\n\nexport function injectParentLangMap(): DomainLangMap {\n return inject(DOMAIN_LANG_MAP, {skipSelf: true, optional: true}) ?? {};\n}\n\n\nexport const injectParentDomainLangMap = injectParentLangMap;\n\nexport function provideLangMap(useFactory: () => DomainLangMap, {\n merge = true\n}: {\n merge?: boolean\n} = {}) {\n return {\n provide: DOMAIN_LANG_MAP,\n useFactory: () => {\n if (merge) return {...injectParentLangMap(), ...useFactory()};\n return useFactory();\n }\n };\n}\n\n\nexport function provideDomainLang<E>(domain: Type<E>, mergeObj: DomainLangMap = {}) {\n return provideLangMap(() => getLangMap(domain, mergeObj) as DomainLangMap);\n}\n\n\nexport function provideModel<E>(useFactory: () => Type<E>) {\n return { provide: DOMAIN_MODEL, useFactory};\n}\n\n\nexport function injectModel<E = Entity>(): Type<E> {\n return inject(DOMAIN_MODEL, {optional: true}) as Type<E> ?? null;\n}\n\n\nexport function provideProps(useFactory: () => SignalOrValue<string[]>) {\n return { provide: DOMAIN_PROPS, useFactory: wrapFactory(useFactory)}\n}\n\n\nexport function provideModelName(useFactory: () => SignalOrValue<string>) {\n return { provide: DOMAIN_MODEL_NAME, useFactory: wrapFactory(useFactory)}\n}\n\n\nexport function injectProps(): Signal<string[]> {\n return inject(DOMAIN_PROPS, {optional: true}) ?? signal([]);\n}\n\n\nexport function injectModelName(injector?: Injector): Signal<string> {\n if (injector) return (injector.get(DOMAIN_MODEL_NAME, null) ?? signal(null as unknown as string)) as Signal<string>;\n return (inject(DOMAIN_MODEL_NAME, {optional: true}) ?? signal(null as unknown as string)) as Signal<string>;\n}\n\n\nexport function provideDomain<E>(useFactory: () => Type<E>) {\n return [\n provideModel(useFactory),\n provideLangMap(() => getLangMap(useFactory()) as DomainLangMap),\n provideProps(() => getProps(useFactory())),\n provideModelName(() => getModelName(useFactory()))\n ]\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { InjectionToken, inject, Pipe } from '@angular/core';
|
|
3
3
|
import { get } from 'lodash-es';
|
|
4
4
|
|
|
5
|
-
/** @deprecated */
|
|
6
5
|
const FORM_FIELD_MAP = new InjectionToken('[@ng-atomic] Smart Form Field');
|
|
7
|
-
/** @deprecated use fieldMap input*/
|
|
8
6
|
function provideFormFieldMap(useFactory) {
|
|
9
7
|
return { provide: FORM_FIELD_MAP, useFactory };
|
|
10
8
|
}
|
|
@@ -17,7 +15,6 @@ function buildOptions(_enum) {
|
|
|
17
15
|
function buildEnumOptions(_enum) {
|
|
18
16
|
return Object.entries(_enum).map(([key, value]) => ({ value, name: key }));
|
|
19
17
|
}
|
|
20
|
-
/** @deprecated */
|
|
21
18
|
class SmartFieldPipe {
|
|
22
19
|
constructor() {
|
|
23
20
|
this.map = inject(FORM_FIELD_MAP, { optional: true }) ?? {
|