@bitstack/ng-boundary 14.0.6-alpha.3 → 14.0.6-alpha.5
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/esm2020/lib/bs-boundary-context.service.mjs +1 -1
- package/esm2020/lib/bs-boundary.mjs +210 -37
- package/esm2020/lib/model.mjs +1 -1
- package/fesm2015/bitstack-ng-boundary.mjs +209 -36
- package/fesm2015/bitstack-ng-boundary.mjs.map +1 -1
- package/fesm2020/bitstack-ng-boundary.mjs +209 -36
- package/fesm2020/bitstack-ng-boundary.mjs.map +1 -1
- package/lib/bs-boundary.d.ts +112 -9
- package/lib/model.d.ts +1 -1
- package/package.json +1 -1
|
@@ -18,4 +18,4 @@ BsBoundaryContextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0
|
|
|
18
18
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BsBoundaryContextService, decorators: [{
|
|
19
19
|
type: Injectable
|
|
20
20
|
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtYm91bmRhcnktY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYml0c3RhY2stbmctYm91bmRhcnkvc3JjL2xpYi9icy1ib3VuZGFyeS1jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUdyQyxNQUFNLE9BQU8sd0JBQXdCO0lBRHJDO1FBRVksaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVsRCxpQkFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7S0FTNUQ7SUFQRyxjQUFjLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQzs7cUhBWFEsd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCc0JvdW5kYXJ5Q29udGV4dFNlcnZpY2Uge1xuICAgIHByaXZhdGUgX2lzTGFuZHNjYXBlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICByZWFkb25seSBpc0xhbmRzY2FwZSQgPSB0aGlzLl9pc0xhbmRzY2FwZS5hc09ic2VydmFibGUoKTtcblxuICAgIHNldElzTGFuZHNjYXBlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzTGFuZHNjYXBlLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIGdldElzTGFuZHNjYXBlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMYW5kc2NhcGUudmFsdWU7XG4gICAgfVxufVxuIl19
|
|
@@ -1,129 +1,302 @@
|
|
|
1
|
-
import { Component, ElementRef, EventEmitter, inject, Input, Output, } from '@angular/core';
|
|
2
1
|
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
2
|
+
import { Component, ElementRef, EventEmitter, inject, Input, Output, } from '@angular/core';
|
|
3
3
|
import { fromEvent, Subject, takeUntil } from 'rxjs';
|
|
4
4
|
import { BsBoundaryContextService } from './bs-boundary-context.service';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* ============================================================
|
|
8
|
+
* BsBoundary Component - AWD 自適應邊界容器
|
|
9
|
+
* ============================================================
|
|
10
|
+
*
|
|
11
|
+
* 功能說明:
|
|
12
|
+
* 1. 提供響應式邊界容器,自動適應不同設備尺寸
|
|
13
|
+
* 2. 支援 5 種方向模式:auto, portrait, landscape, portraitLockRotation, landscapeLockRotation
|
|
14
|
+
* 3. 使用 CSS 變數實現動態計算,支援 px2vw() 函數
|
|
15
|
+
* 4. 相容 Chrome 74+,使用 JavaScript 計算邊界尺寸
|
|
16
|
+
*
|
|
17
|
+
* 使用範例:
|
|
18
|
+
* ```html
|
|
19
|
+
* <bs-boundary [orientation]="'auto'" [isFixedCenter]="true">
|
|
20
|
+
* <div class="content">...</div>
|
|
21
|
+
* </bs-boundary>
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* CSS 變數設定:
|
|
25
|
+
* ```scss
|
|
26
|
+
* bs-boundary {
|
|
27
|
+
* --design-width: 375; // 設計稿寬度
|
|
28
|
+
* --design-height: 667; // 設計稿高度
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
6
32
|
export class BsBoundary {
|
|
7
33
|
constructor() {
|
|
34
|
+
// ============================================================
|
|
35
|
+
// Inputs & Outputs
|
|
36
|
+
// ============================================================
|
|
37
|
+
/**
|
|
38
|
+
* 是否將內容固定在視窗中央
|
|
39
|
+
* @default false
|
|
40
|
+
*/
|
|
8
41
|
this.isFixedCenter = false;
|
|
42
|
+
/**
|
|
43
|
+
* 是否禁用指標事件
|
|
44
|
+
* @default false
|
|
45
|
+
*/
|
|
9
46
|
this.pointerEventsNone = false;
|
|
10
|
-
|
|
47
|
+
/**
|
|
48
|
+
* 方向模式
|
|
49
|
+
* - auto: 自動檢測方向
|
|
50
|
+
* - portrait: 鎖定直向
|
|
51
|
+
* - landscape: 鎖定橫向
|
|
52
|
+
* - portraitLockRotation: 強制直向(橫向設備時旋轉 -90°)
|
|
53
|
+
* - landscapeLockRotation: 強制橫向(直向設備時旋轉 90°)
|
|
54
|
+
* @default 'auto'
|
|
55
|
+
*/
|
|
56
|
+
this.orientation = 'auto';
|
|
57
|
+
/**
|
|
58
|
+
* 方向變化事件
|
|
59
|
+
* @emits true: landscape(橫屏)
|
|
60
|
+
* @emits false: portrait(直屏)
|
|
61
|
+
*/
|
|
11
62
|
this.orientationChange = new EventEmitter();
|
|
63
|
+
// ============================================================
|
|
64
|
+
// Private Dependencies
|
|
65
|
+
// ============================================================
|
|
12
66
|
this.breakpointObserver = inject(BreakpointObserver);
|
|
13
67
|
this.boundaryContext = inject(BsBoundaryContextService);
|
|
14
68
|
this.elementRef = inject(ElementRef);
|
|
15
69
|
this.destroy$ = new Subject();
|
|
70
|
+
// ============================================================
|
|
71
|
+
// Public Properties
|
|
72
|
+
// ============================================================
|
|
73
|
+
/**
|
|
74
|
+
* 實際設備方向(基於視口尺寸)
|
|
75
|
+
* true: 直向 (height > width)
|
|
76
|
+
* false: 橫向 (width >= height)
|
|
77
|
+
*/
|
|
78
|
+
this.actualIsPortrait = false;
|
|
16
79
|
}
|
|
80
|
+
// ============================================================
|
|
81
|
+
// Getters
|
|
82
|
+
// ============================================================
|
|
83
|
+
/**
|
|
84
|
+
* 判斷當前是否為橫向模式
|
|
85
|
+
* 根據 orientation 設定和實際設備方向判斷
|
|
86
|
+
*/
|
|
17
87
|
get isLandscape() {
|
|
88
|
+
// landscapeLockRotation: 強制橫屏模式
|
|
89
|
+
if (this.orientation === 'landscapeLockRotation') {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
// portraitLockRotation: 強制直屏模式
|
|
93
|
+
if (this.orientation === 'portraitLockRotation') {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
// landscape: 鎖定橫向
|
|
97
|
+
if (this.orientation === 'landscape') {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
// portrait: 鎖定直向
|
|
101
|
+
if (this.orientation === 'portrait') {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
// auto: 自動檢測
|
|
18
105
|
return this.boundaryContext.getIsLandscape();
|
|
19
106
|
}
|
|
107
|
+
// ============================================================
|
|
108
|
+
// Lifecycle Hooks
|
|
109
|
+
// ============================================================
|
|
20
110
|
ngOnInit() {
|
|
111
|
+
this.updateActualOrientation();
|
|
21
112
|
this.setupBreakpointObserver();
|
|
22
113
|
this.setupResizeObserver();
|
|
23
114
|
}
|
|
24
115
|
ngAfterViewInit() {
|
|
25
|
-
//
|
|
116
|
+
// 使用 @Input 參數,可以立即計算(無需等待 CSS)
|
|
26
117
|
this.updateBoundaryCalculations();
|
|
27
118
|
}
|
|
28
119
|
ngOnDestroy() {
|
|
29
120
|
this.destroy$.next();
|
|
30
121
|
this.destroy$.complete();
|
|
31
122
|
}
|
|
123
|
+
// ============================================================
|
|
124
|
+
// Observers Setup - 監聽器設定
|
|
125
|
+
// ============================================================
|
|
32
126
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
127
|
+
* 設定方向變化監控
|
|
128
|
+
*
|
|
129
|
+
* 工作原理:
|
|
130
|
+
* - lock 模式(portrait/landscape):直接設定固定方向,不監聽變化
|
|
131
|
+
* - lockRotation 模式:設定固定方向,但需監聽實際設備方向以觸發旋轉
|
|
132
|
+
* - auto 模式:使用 BreakpointObserver 監聽設備方向變化
|
|
35
133
|
*/
|
|
36
134
|
setupBreakpointObserver() {
|
|
37
|
-
|
|
135
|
+
// landscape 或 landscapeLockRotation: 鎖定為橫向
|
|
136
|
+
if (this.orientation === 'landscape' || this.orientation === 'landscapeLockRotation') {
|
|
38
137
|
this.boundaryContext.setIsLandscape(true);
|
|
39
138
|
this.orientationChange.emit(true);
|
|
40
139
|
return;
|
|
41
140
|
}
|
|
42
|
-
|
|
141
|
+
// portrait 或 portraitLockRotation: 鎖定為直向
|
|
142
|
+
if (this.orientation === 'portrait' || this.orientation === 'portraitLockRotation') {
|
|
43
143
|
this.boundaryContext.setIsLandscape(false);
|
|
44
144
|
this.orientationChange.emit(false);
|
|
45
145
|
return;
|
|
46
146
|
}
|
|
47
|
-
//
|
|
147
|
+
// auto 模式:監聽實際的設備方向(用於 orientationChange 事件)
|
|
48
148
|
this.breakpointObserver
|
|
49
149
|
.observe('(orientation: landscape)')
|
|
50
150
|
.pipe(takeUntil(this.destroy$))
|
|
51
151
|
.subscribe(result => {
|
|
52
152
|
this.boundaryContext.setIsLandscape(result.matches);
|
|
53
153
|
this.orientationChange.emit(result.matches);
|
|
54
|
-
//
|
|
154
|
+
// 方向變化時重新計算邊界
|
|
55
155
|
this.updateBoundaryCalculations();
|
|
56
156
|
});
|
|
57
157
|
}
|
|
58
158
|
/**
|
|
59
|
-
*
|
|
159
|
+
* 設定視窗大小變化監控
|
|
160
|
+
*
|
|
161
|
+
* 功能:
|
|
162
|
+
* - 監聽 window resize 事件
|
|
163
|
+
* - 更新實際設備方向
|
|
164
|
+
* - 重新計算邊界尺寸
|
|
60
165
|
*/
|
|
61
166
|
setupResizeObserver() {
|
|
62
167
|
fromEvent(window, 'resize')
|
|
63
168
|
.pipe(
|
|
64
|
-
// debounceTime(150),
|
|
169
|
+
// debounceTime(150), // 可選:防抖優化性能
|
|
65
170
|
takeUntil(this.destroy$))
|
|
66
171
|
.subscribe(() => {
|
|
172
|
+
this.updateActualOrientation();
|
|
67
173
|
this.updateBoundaryCalculations();
|
|
68
174
|
});
|
|
69
175
|
}
|
|
176
|
+
// ============================================================
|
|
177
|
+
// Calculation Methods - 計算方法
|
|
178
|
+
// ============================================================
|
|
179
|
+
/**
|
|
180
|
+
* 更新實際設備方向(基於視口尺寸)
|
|
181
|
+
*
|
|
182
|
+
* 工作原理:
|
|
183
|
+
* - 只在 lockRotation 模式下需要檢測實際方向
|
|
184
|
+
* - 通過比較 window.innerHeight 和 window.innerWidth 判斷
|
|
185
|
+
* - 結果用於觸發 CSS 旋轉變換
|
|
186
|
+
*/
|
|
187
|
+
updateActualOrientation() {
|
|
188
|
+
// 只有在 lockRotation 模式下才需要檢測實際方向
|
|
189
|
+
if (this.orientation !== 'landscapeLockRotation' && this.orientation !== 'portraitLockRotation') {
|
|
190
|
+
this.actualIsPortrait = false;
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
// 檢測實際視口方向:高度 > 寬度 = 直向
|
|
194
|
+
this.actualIsPortrait = window.innerHeight > window.innerWidth;
|
|
195
|
+
}
|
|
70
196
|
/**
|
|
71
197
|
* 更新邊界計算(支援 Chrome 74,使用 JavaScript 模擬 min 函數)
|
|
72
|
-
*
|
|
198
|
+
*
|
|
199
|
+
* 工作原理:
|
|
200
|
+
* 1. 從 @Input 參數讀取設計尺寸
|
|
201
|
+
* 2. 讀取視口尺寸(vw100, vh100)
|
|
202
|
+
* 3. 處理 lockRotation 模式的視口尺寸交換
|
|
203
|
+
* 4. 計算邊界最大值和實際邊界尺寸
|
|
204
|
+
* 5. 計算 px2vw 轉換比例
|
|
205
|
+
* 6. 設定 CSS 變數供樣式使用
|
|
206
|
+
*
|
|
207
|
+
* 設定的 CSS 變數:
|
|
208
|
+
* - --design-width: 設計稿寬度
|
|
209
|
+
* - --design-height: 設計稿高度
|
|
210
|
+
* - --boundary-width: 實際邊界寬度(px)
|
|
211
|
+
* - --boundary-height: 實際邊界高度(px)
|
|
212
|
+
* - --px2vw-ratio: px 轉 vw 的比例係數
|
|
73
213
|
*/
|
|
74
214
|
updateBoundaryCalculations() {
|
|
75
215
|
const hostElement = this.elementRef.nativeElement;
|
|
76
|
-
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
216
|
+
// ========================================
|
|
217
|
+
// Step 1: 讀取設計尺寸並設定 CSS 變數
|
|
218
|
+
// ========================================
|
|
219
|
+
const designWidth = this.designWidth;
|
|
220
|
+
const designHeight = this.designHeight;
|
|
221
|
+
// 設定 CSS 變數,供樣式使用(例如 px2vw() 函數)
|
|
222
|
+
hostElement.style.setProperty('--design-width', `${designWidth}`);
|
|
223
|
+
hostElement.style.setProperty('--design-height', `${designHeight}`);
|
|
224
|
+
// ========================================
|
|
225
|
+
// Step 2: 讀取視口尺寸(直接使用 window.inner* 確保一致性)
|
|
226
|
+
// ========================================
|
|
227
|
+
let vw100 = window.innerWidth;
|
|
228
|
+
let vh100 = window.innerHeight;
|
|
229
|
+
// ========================================
|
|
230
|
+
// Step 2: 處理 lockRotation 模式的視口尺寸交換
|
|
231
|
+
// ========================================
|
|
232
|
+
// landscapeLockRotation + 實際直向:交換視口尺寸
|
|
233
|
+
// 原因:旋轉後,內容的寬度對應設備的高度,內容的高度對應設備的寬度
|
|
234
|
+
if (this.orientation === 'landscapeLockRotation' && this.actualIsPortrait) {
|
|
235
|
+
[vw100, vh100] = [vh100, vw100];
|
|
236
|
+
}
|
|
237
|
+
// portraitLockRotation + 實際橫向:交換視口尺寸
|
|
238
|
+
if (this.orientation === 'portraitLockRotation' && !this.actualIsPortrait) {
|
|
239
|
+
[vw100, vh100] = [vh100, vw100];
|
|
86
240
|
}
|
|
87
|
-
//
|
|
241
|
+
// ========================================
|
|
242
|
+
// Step 3: 計算比例和邊界最大值
|
|
243
|
+
// ========================================
|
|
88
244
|
const landscapeRatio = designWidth / designHeight;
|
|
89
245
|
const portraitRatio = designHeight / designWidth;
|
|
90
|
-
//
|
|
246
|
+
// 根據方向模式計算邊界最大值
|
|
91
247
|
const isLandscape = this.isLandscape;
|
|
92
248
|
const boundaryMaxWidth = isLandscape
|
|
93
|
-
? vh100 * portraitRatio
|
|
94
|
-
: vh100 * landscapeRatio;
|
|
249
|
+
? vh100 * portraitRatio // 橫向:高度 * 高寬比
|
|
250
|
+
: vh100 * landscapeRatio; // 直向:高度 * 寬高比
|
|
95
251
|
const boundaryMaxHeight = isLandscape
|
|
96
|
-
? vw100 * landscapeRatio
|
|
97
|
-
: vw100 * portraitRatio;
|
|
98
|
-
//
|
|
252
|
+
? vw100 * landscapeRatio // 橫向:寬度 * 寬高比
|
|
253
|
+
: vw100 * portraitRatio; // 直向:寬度 * 高寬比
|
|
254
|
+
// ========================================
|
|
255
|
+
// Step 4: 計算實際邊界尺寸(使用 Math.min 模擬 CSS min())
|
|
256
|
+
// ========================================
|
|
257
|
+
// Chrome 79 才支援 CSS min() 函數,所以在 JavaScript 中計算
|
|
99
258
|
const boundaryWidth = Math.min(vw100, boundaryMaxWidth);
|
|
100
259
|
const boundaryHeight = Math.min(vh100, boundaryMaxHeight);
|
|
101
|
-
//
|
|
260
|
+
// ========================================
|
|
261
|
+
// Step 5: 計算 px2vw 轉換比例
|
|
262
|
+
// ========================================
|
|
263
|
+
// 橫向模式使用 design-height 作為基準,直向模式使用 design-width 作為基準
|
|
102
264
|
const designBaseWidth = isLandscape ? designHeight : designWidth;
|
|
103
265
|
const px2vwRatio = boundaryWidth / designBaseWidth;
|
|
104
|
-
//
|
|
266
|
+
// ========================================
|
|
267
|
+
// Step 6: 設定 CSS 變數
|
|
268
|
+
// ========================================
|
|
105
269
|
hostElement.style.setProperty('--boundary-width', `${boundaryWidth}px`);
|
|
106
270
|
hostElement.style.setProperty('--boundary-height', `${boundaryHeight}px`);
|
|
107
271
|
hostElement.style.setProperty('--px2vw-ratio', `${px2vwRatio}`);
|
|
108
272
|
}
|
|
109
273
|
}
|
|
110
274
|
BsBoundary.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BsBoundary, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
111
|
-
BsBoundary.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BsBoundary, isStandalone: true, selector: "bs-boundary", inputs: { isFixedCenter: "isFixedCenter", pointerEventsNone: "pointerEventsNone",
|
|
275
|
+
BsBoundary.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BsBoundary, isStandalone: true, selector: "bs-boundary", inputs: { isFixedCenter: "isFixedCenter", pointerEventsNone: "pointerEventsNone", orientation: "orientation", forwardStyle: "forwardStyle", designWidth: "designWidth", designHeight: "designHeight" }, outputs: { orientationChange: "orientationChange" }, host: { properties: { "class.auto": "orientation === \"auto\"", "class.landscape": "isLandscape && orientation === \"landscape\"", "class.portrait": "!isLandscape && orientation === \"portrait\"", "class.landscape-lock-rotation": "orientation === \"landscapeLockRotation\"", "class.portrait-lock-rotation": "orientation === \"portraitLockRotation\"", "class.actual-portrait": "actualIsPortrait", "class.actual-landscape": "!actualIsPortrait" } }, providers: [BsBoundaryContextService], ngImport: i0, template: "<div\n class=\"boundary-wrapper\"\n [class.fixed-center]=\"isFixedCenter\"\n [class.pointerEventsNone]=\"pointerEventsNone\"\n [style]=\"forwardStyle\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{--landscape-ratio: calc(var(--design-width) / var(--design-height));--portrait-ratio: calc(var(--design-height) / var(--design-width));--boundary-max-width: calc(var(--vh100) * var(--landscape-ratio));--boundary-max-height: calc(var(--vw100) * var(--portrait-ratio))}.boundary-wrapper{width:var(--vw100);height:var(--vh100);max-width:var(--boundary-max-width);max-height:var(--boundary-max-height)}.boundary-wrapper.pointerEventsNone{pointer-events:none}:host.portrait{--boundary-max-width: calc(var(--vh100) * var(--landscape-ratio));--boundary-max-height: calc(var(--vw100) * var(--portrait-ratio))}:host.landscape{--boundary-max-width: calc(var(--vh100) * var(--portrait-ratio));--boundary-max-height: calc(var(--vw100) * var(--landscape-ratio))}@media (orientation: landscape){:host.auto{--boundary-max-width: calc(var(--vh100) * var(--portrait-ratio));--boundary-max-height: calc(var(--vw100) * var(--landscape-ratio))}}.fixed-center{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;z-index:99}:host.landscape-lock-rotation{--boundary-max-width: calc(var(--vh100) * var(--portrait-ratio));--boundary-max-height: calc(var(--vw100) * var(--landscape-ratio))}:host.landscape-lock-rotation.actual-portrait .boundary-wrapper{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) rotate(90deg);transform-origin:center;width:var(--boundary-width);height:var(--boundary-height);max-width:none;max-height:none}:host.portrait-lock-rotation{--boundary-max-width: calc(var(--vh100) * var(--landscape-ratio));--boundary-max-height: calc(var(--vw100) * var(--portrait-ratio))}:host.portrait-lock-rotation.actual-landscape .boundary-wrapper{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-90deg);transform-origin:center;width:var(--boundary-width);height:var(--boundary-height);max-width:none;max-height:none}\n"] });
|
|
112
276
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BsBoundary, decorators: [{
|
|
113
277
|
type: Component,
|
|
114
278
|
args: [{ selector: 'bs-boundary', standalone: true, providers: [BsBoundaryContextService], host: {
|
|
115
|
-
'[class.
|
|
116
|
-
'[class.
|
|
117
|
-
|
|
279
|
+
'[class.auto]': 'orientation === "auto"',
|
|
280
|
+
'[class.landscape]': 'isLandscape && orientation === "landscape"',
|
|
281
|
+
'[class.portrait]': '!isLandscape && orientation === "portrait"',
|
|
282
|
+
'[class.landscape-lock-rotation]': 'orientation === "landscapeLockRotation"',
|
|
283
|
+
'[class.portrait-lock-rotation]': 'orientation === "portraitLockRotation"',
|
|
284
|
+
'[class.actual-portrait]': 'actualIsPortrait',
|
|
285
|
+
'[class.actual-landscape]': '!actualIsPortrait'
|
|
286
|
+
}, template: "<div\n class=\"boundary-wrapper\"\n [class.fixed-center]=\"isFixedCenter\"\n [class.pointerEventsNone]=\"pointerEventsNone\"\n [style]=\"forwardStyle\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{--landscape-ratio: calc(var(--design-width) / var(--design-height));--portrait-ratio: calc(var(--design-height) / var(--design-width));--boundary-max-width: calc(var(--vh100) * var(--landscape-ratio));--boundary-max-height: calc(var(--vw100) * var(--portrait-ratio))}.boundary-wrapper{width:var(--vw100);height:var(--vh100);max-width:var(--boundary-max-width);max-height:var(--boundary-max-height)}.boundary-wrapper.pointerEventsNone{pointer-events:none}:host.portrait{--boundary-max-width: calc(var(--vh100) * var(--landscape-ratio));--boundary-max-height: calc(var(--vw100) * var(--portrait-ratio))}:host.landscape{--boundary-max-width: calc(var(--vh100) * var(--portrait-ratio));--boundary-max-height: calc(var(--vw100) * var(--landscape-ratio))}@media (orientation: landscape){:host.auto{--boundary-max-width: calc(var(--vh100) * var(--portrait-ratio));--boundary-max-height: calc(var(--vw100) * var(--landscape-ratio))}}.fixed-center{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;z-index:99}:host.landscape-lock-rotation{--boundary-max-width: calc(var(--vh100) * var(--portrait-ratio));--boundary-max-height: calc(var(--vw100) * var(--landscape-ratio))}:host.landscape-lock-rotation.actual-portrait .boundary-wrapper{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) rotate(90deg);transform-origin:center;width:var(--boundary-width);height:var(--boundary-height);max-width:none;max-height:none}:host.portrait-lock-rotation{--boundary-max-width: calc(var(--vh100) * var(--landscape-ratio));--boundary-max-height: calc(var(--vw100) * var(--portrait-ratio))}:host.portrait-lock-rotation.actual-landscape .boundary-wrapper{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-90deg);transform-origin:center;width:var(--boundary-width);height:var(--boundary-height);max-width:none;max-height:none}\n"] }]
|
|
118
287
|
}], propDecorators: { isFixedCenter: [{
|
|
119
288
|
type: Input
|
|
120
289
|
}], pointerEventsNone: [{
|
|
121
290
|
type: Input
|
|
122
|
-
}],
|
|
291
|
+
}], orientation: [{
|
|
123
292
|
type: Input
|
|
124
293
|
}], forwardStyle: [{
|
|
125
294
|
type: Input
|
|
295
|
+
}], designWidth: [{
|
|
296
|
+
type: Input
|
|
297
|
+
}], designHeight: [{
|
|
298
|
+
type: Input
|
|
126
299
|
}], orientationChange: [{
|
|
127
300
|
type: Output
|
|
128
301
|
}] } });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtYm91bmRhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXRzdGFjay1uZy1ib3VuZGFyeS9zcmMvbGliL2JzLWJvdW5kYXJ5LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvYml0c3RhY2stbmctYm91bmRhcnkvc3JjL2xpYi90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQWUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sK0JBQStCLENBQUM7O0FBYXZFLE1BQU0sT0FBTyxVQUFVO0lBWHZCO1FBYWEsa0JBQWEsR0FBYSxLQUFLLENBQUM7UUFDaEMsc0JBQWlCLEdBQWEsS0FBSyxDQUFDO1FBQ3BDLG9CQUFlLEdBQXNCLE1BQU0sQ0FBQztRQUczQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRWxELHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hELG9CQUFlLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDbkQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztLQStHMUM7SUE3R0csSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFD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QixTQUFTOytCQUNJLGFBQWEsY0FFWCxJQUFJLGFBRUwsQ0FBQyx3QkFBd0IsQ0FBQyxRQUMvQjt3QkFDRixtQkFBbUIsRUFBRSwyQ0FBMkM7d0JBQ2hFLGtCQUFrQixFQUFFLDRDQUE0QztxQkFDbkU7OEJBSVEsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LCBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VE9yaWVudGF0aW9uTW9kZX0gZnJvbSAnLi9tb2RlbCc7XG5pbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZnJvbUV2ZW50LCBTdWJqZWN0LCB0YWtlVW50aWx9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtCc0JvdW5kYXJ5Q29udGV4dFNlcnZpY2V9IGZyb20gJy4vYnMtYm91bmRhcnktY29udGV4dC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdicy1ib3VuZGFyeScsXG4gICAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbQnNCb3VuZGFyeUNvbnRleHRTZXJ2aWNlXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MubGFuZHNjYXBlXSc6ICdpc0xhbmRzY2FwZSAmJiBsb2NrT3JpZW50YXRpb24gIT09IFwiYXV0b1wiJyxcbiAgICAgICAgJ1tjbGFzcy5wb3J0cmFpdF0nOiAnIWlzTGFuZHNjYXBlICYmIGxvY2tPcmllbnRhdGlvbiAhPT0gXCJhdXRvXCInXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBCc0JvdW5kYXJ5IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgaXNGaXhlZENlbnRlcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwb2ludGVyRXZlbnRzTm9uZT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBsb2NrT3JpZW50YXRpb24/OiBUT3JpZW50YXRpb25Nb2RlID0gJ2F1dG8nO1xuICAgIEBJbnB1dCgpIGZvcndhcmRTdHlsZT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBAT3V0cHV0KCkgb3JpZW50YXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xuICAgIHByaXZhdGUgYm91bmRhcnlDb250ZXh0ID0gaW5qZWN0KEJzQm91bmRhcnlDb250ZXh0U2VydmljZSk7XG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IGlzTGFuZHNjYXBlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ib3VuZGFyeUNvbnRleHQuZ2V0SXNMYW5kc2NhcGUoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXR1cEJyZWFrcG9pbnRPYnNlcnZlcigpO1xuICAgICAgICB0aGlzLnNldHVwUmVzaXplT2JzZXJ2ZXIoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIOWcqCB2aWV3IOWIneWni+WMluW+jOioiOeul++8iOeiuuS/nSBDU1Mg5bey5a6M5YWo5oeJ55So77yJXG4gICAgICAgIHRoaXMudXBkYXRlQm91bmRhcnlDYWxjdWxhdGlvbnMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDnm6PmjqfmlrnlkJHororljJZcbiAgICAgKiDlj6rlnKggbG9jayDmqKHlvI/mmYLpnIDopoHvvIxhdXRvIOaooeW8j+eUsSBDU1Mg5aqS6auU5p+l6Kmi6JmV55CGXG4gICAgICovXG4gICAgc2V0dXBCcmVha3BvaW50T2JzZXJ2ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmxvY2tPcmllbnRhdGlvbiA9PT0gJ2xhbmRzY2FwZScpIHtcbiAgICAgICAgICAgIHRoaXMuYm91bmRhcnlDb250ZXh0LnNldElzTGFuZHNjYXBlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5vcmllbnRhdGlvbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubG9ja09yaWVudGF0aW9uID09PSAncG9ydHJhaXQnKSB7XG4gICAgICAgICAgICB0aGlzLmJvdW5kYXJ5Q29udGV4dC5zZXRJc0xhbmRzY2FwZShmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXV0byDmqKHlvI/vvJrnm6Pogb3lr6bpmpvnmoToqK3lgpnmlrnlkJHvvIjnlKjmlrwgb3JpZW50YXRpb25DaGFuZ2Ug5LqL5Lu277yJXG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyXG4gICAgICAgICAgICAub2JzZXJ2ZSgnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvdW5kYXJ5Q29udGV4dC5zZXRJc0xhbmRzY2FwZShyZXN1bHQubWF0Y2hlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmllbnRhdGlvbkNoYW5nZS5lbWl0KHJlc3VsdC5tYXRjaGVzKTtcbiAgICAgICAgICAgICAgICAvLyDmlrnlkJHororljJbmmYLph43mlrDoqIjnrpdcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJvdW5kYXJ5Q2FsY3VsYXRpb25zKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDnm6Pmjqfoppblj6PlpKflsI/ororljJZcbiAgICAgKi9cbiAgICBzZXR1cFJlc2l6ZU9ic2VydmVyKCkge1xuICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIGRlYm91bmNlVGltZSgxNTApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVCb3VuZGFyeUNhbGN1bGF0aW9ucygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5pu05paw6YKK55WM6KiI566X77yI5pSv5o+0IENocm9tZSA3NO+8jOS9v+eUqCBKYXZhU2NyaXB0IOaooeaTrCBtaW4g5Ye95pW477yJXG4gICAgICog6Kit5a6aIC0tYm91bmRhcnktd2lkdGgsIC0tYm91bmRhcnktaGVpZ2h0LCAtLXB4MnZ3LXJhdGlvXG4gICAgICovXG4gICAgdXBkYXRlQm91bmRhcnlDYWxjdWxhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGhvc3RFbGVtZW50KTtcblxuICAgICAgICAvLyDoroDlj5bln7rnpI4gQ1NTIOiuiuaVuO+8iOmAmeS6m+aYr+e0lOaVuOWAvO+8jOS4jeaYryBjYWxjKCkg6KGo6YGU5byP77yJXG4gICAgICAgIGNvbnN0IHZ3MTAwID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tdncxMDAnKSkgfHwgd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGNvbnN0IHZoMTAwID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tdmgxMDAnKSkgfHwgd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICBjb25zdCBkZXNpZ25XaWR0aCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWRlc2lnbi13aWR0aCcpKTtcbiAgICAgICAgY29uc3QgZGVzaWduSGVpZ2h0ID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZGVzaWduLWhlaWdodCcpKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnZGVzaWduV2lkdGgnLCBkZXNpZ25XaWR0aCk7XG5cbiAgICAgICAgLy8g5qqi5p+l5Z+656SO6K6K5pW45piv5ZCm5rqW5YKZ5aW9XG4gICAgICAgIGlmIChpc05hTihkZXNpZ25XaWR0aCkgfHwgaXNOYU4oZGVzaWduSGVpZ2h0KSB8fCBkZXNpZ25XaWR0aCA9PT0gMCB8fCBkZXNpZ25IZWlnaHQgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gQ1NTIOiuiuaVuOmChOaykua6luWCmeWlve+8jOi3s+mBjlxuICAgICAgICB9XG5cbiAgICAgICAgLy8g5ZyoIEphdmFTY3JpcHQg5Lit6KiI566X5omA5pyJ5YC877yI6YG/5YWN6K6A5Y+WIGNhbGMoKSDooajpgZTlvI/vvIlcbiAgICAgICAgY29uc3QgbGFuZHNjYXBlUmF0aW8gPSBkZXNpZ25XaWR0aCAvIGRlc2lnbkhlaWdodDtcbiAgICAgICAgY29uc3QgcG9ydHJhaXRSYXRpbyA9IGRlc2lnbkhlaWdodCAvIGRlc2lnbldpZHRoO1xuXG4gICAgICAgIC8vIOagueaTmuaWueWQkeioiOeul+mCiueVjOacgOWkp+WAvFxuICAgICAgICBjb25zdCBpc0xhbmRzY2FwZSA9IHRoaXMuaXNMYW5kc2NhcGU7XG4gICAgICAgIGNvbnN0IGJvdW5kYXJ5TWF4V2lkdGggPSBpc0xhbmRzY2FwZVxuICAgICAgICAgICAgPyB2aDEwMCAqIHBvcnRyYWl0UmF0aW9cbiAgICAgICAgICAgIDogdmgxMDAgKiBsYW5kc2NhcGVSYXRpbztcbiAgICAgICAgY29uc3QgYm91bmRhcnlNYXhIZWlnaHQgPSBpc0xhbmRzY2FwZVxuICAgICAgICAgICAgPyB2dzEwMCAqIGxhbmRzY2FwZVJhdGlvXG4gICAgICAgICAgICA6IHZ3MTAwICogcG9ydHJhaXRSYXRpbztcblxuICAgICAgICAvLyDkvb/nlKggSmF2YVNjcmlwdCBNYXRoLm1pbiDmqKHmk6wgQ1NTIG1pbigpIOWHveaVuFxuICAgICAgICBjb25zdCBib3VuZGFyeVdpZHRoID0gTWF0aC5taW4odncxMDAsIGJvdW5kYXJ5TWF4V2lkdGgpO1xuICAgICAgICBjb25zdCBib3VuZGFyeUhlaWdodCA9IE1hdGgubWluKHZoMTAwLCBib3VuZGFyeU1heEhlaWdodCk7XG5cbiAgICAgICAgLy8g6KiI566X6Kit6KiI5Z+65rqW5ZKMIHB4MnZ3IOavlOS+i1xuICAgICAgICBjb25zdCBkZXNpZ25CYXNlV2lkdGggPSBpc0xhbmRzY2FwZSA/IGRlc2lnbkhlaWdodCA6IGRlc2lnbldpZHRoO1xuICAgICAgICBjb25zdCBweDJ2d1JhdGlvID0gYm91bmRhcnlXaWR0aCAvIGRlc2lnbkJhc2VXaWR0aDtcblxuICAgICAgICAvLyDoqK3lrpogQ1NTIOiuiuaVuO+8iOWQkeW+jOWFvOWuuSArIOeyvueiuueahCByYXRpb++8iVxuICAgICAgICBob3N0RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ib3VuZGFyeS13aWR0aCcsIGAke2JvdW5kYXJ5V2lkdGh9cHhgKTtcbiAgICAgICAgaG9zdEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYm91bmRhcnktaGVpZ2h0JywgYCR7Ym91bmRhcnlIZWlnaHR9cHhgKTtcbiAgICAgICAgaG9zdEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcHgydnctcmF0aW8nLCBgJHtweDJ2d1JhdGlvfWApO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJib3VuZGFyeS13cmFwcGVyXCJcbiAgW2NsYXNzLmZpeGVkLWNlbnRlcl09XCJpc0ZpeGVkQ2VudGVyXCJcbiAgW2NsYXNzLnBvaW50ZXJFdmVudHNOb25lXT1cInBvaW50ZXJFdmVudHNOb25lXCJcbiAgW3N0eWxlXT1cImZvcndhcmRTdHlsZVwiXG4+XG4gICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtYm91bmRhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXRzdGFjay1uZy1ib3VuZGFyeS9zcmMvbGliL2JzLWJvdW5kYXJ5LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvYml0c3RhY2stbmctYm91bmRhcnkvc3JjL2xpYi90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFFSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sK0JBQStCLENBQUM7O0FBR3ZFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBaUJILE1BQU0sT0FBTyxVQUFVO0lBaEJ2QjtRQWtCSSwrREFBK0Q7UUFDL0QsbUJBQW1CO1FBQ25CLCtEQUErRDtRQUUvRDs7O1dBR0c7UUFDTSxrQkFBYSxHQUFhLEtBQUssQ0FBQztRQUV6Qzs7O1dBR0c7UUFDTSxzQkFBaUIsR0FBYSxLQUFLLENBQUM7UUFFN0M7Ozs7Ozs7O1dBUUc7UUFDTSxnQkFBVyxHQUFzQixNQUFNLENBQUM7UUFtQmpEOzs7O1dBSUc7UUFDTyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTFELCtEQUErRDtRQUMvRCx1QkFBdUI7UUFDdkIsK0RBQStEO1FBRXZELHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hELG9CQUFlLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDbkQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFV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QkFNRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBV0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFPSSxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCwgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtCc0JvdW5kYXJ5Q29udGV4dFNlcnZpY2V9IGZyb20gJy4vYnMtYm91bmRhcnktY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7VE9yaWVudGF0aW9uTW9kZX0gZnJvbSAnLi9tb2RlbCc7XG5cbi8qKlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBCc0JvdW5kYXJ5IENvbXBvbmVudCAtIEFXRCDoh6rpganmh4npgornlYzlrrnlmahcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIOWKn+iDveiqquaYju+8mlxuICogMS4g5o+Q5L6b6Z+/5oeJ5byP6YKK55WM5a655Zmo77yM6Ieq5YuV6YGp5oeJ5LiN5ZCM6Kit5YKZ5bC65a+4XG4gKiAyLiDmlK/mj7QgNSDnqK7mlrnlkJHmqKHlvI/vvJphdXRvLCBwb3J0cmFpdCwgbGFuZHNjYXBlLCBwb3J0cmFpdExvY2tSb3RhdGlvbiwgbGFuZHNjYXBlTG9ja1JvdGF0aW9uXG4gKiAzLiDkvb/nlKggQ1NTIOiuiuaVuOWvpuePvuWLleaFi+ioiOeul++8jOaUr+aPtCBweDJ2dygpIOWHveaVuFxuICogNC4g55u45a65IENocm9tZSA3NCvvvIzkvb/nlKggSmF2YVNjcmlwdCDoqIjnrpfpgornlYzlsLrlr7hcbiAqXG4gKiDkvb/nlKjnr4TkvovvvJpcbiAqIGBgYGh0bWxcbiAqIDxicy1ib3VuZGFyeSBbb3JpZW50YXRpb25dPVwiJ2F1dG8nXCIgW2lzRml4ZWRDZW50ZXJdPVwidHJ1ZVwiPlxuICogICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPi4uLjwvZGl2PlxuICogPC9icy1ib3VuZGFyeT5cbiAqIGBgYFxuICpcbiAqIENTUyDorormlbjoqK3lrprvvJpcbiAqIGBgYHNjc3NcbiAqIGJzLWJvdW5kYXJ5IHtcbiAqICAgLS1kZXNpZ24td2lkdGg6IDM3NTsgICAvLyDoqK3oqIjnqL/lr6zluqZcbiAqICAgLS1kZXNpZ24taGVpZ2h0OiA2Njc7ICAvLyDoqK3oqIjnqL/pq5jluqZcbiAqIH1cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzLWJvdW5kYXJ5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0JzQm91bmRhcnlDb250ZXh0U2VydmljZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLmF1dG9dJzogJ29yaWVudGF0aW9uID09PSBcImF1dG9cIicsXG4gICAgICAgICdbY2xhc3MubGFuZHNjYXBlXSc6ICdpc0xhbmRzY2FwZSAmJiBvcmllbnRhdGlvbiA9PT0gXCJsYW5kc2NhcGVcIicsXG4gICAgICAgICdbY2xhc3MucG9ydHJhaXRdJzogJyFpc0xhbmRzY2FwZSAmJiBvcmllbnRhdGlvbiA9PT0gXCJwb3J0cmFpdFwiJyxcbiAgICAgICAgJ1tjbGFzcy5sYW5kc2NhcGUtbG9jay1yb3RhdGlvbl0nOiAnb3JpZW50YXRpb24gPT09IFwibGFuZHNjYXBlTG9ja1JvdGF0aW9uXCInLFxuICAgICAgICAnW2NsYXNzLnBvcnRyYWl0LWxvY2stcm90YXRpb25dJzogJ29yaWVudGF0aW9uID09PSBcInBvcnRyYWl0TG9ja1JvdGF0aW9uXCInLFxuICAgICAgICAnW2NsYXNzLmFjdHVhbC1wb3J0cmFpdF0nOiAnYWN0dWFsSXNQb3J0cmFpdCcsXG4gICAgICAgICdbY2xhc3MuYWN0dWFsLWxhbmRzY2FwZV0nOiAnIWFjdHVhbElzUG9ydHJhaXQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBCc0JvdW5kYXJ5IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gSW5wdXRzICYgT3V0cHV0c1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5bCH5YWn5a655Zu65a6a5Zyo6KaW56qX5Lit5aSuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpc0ZpeGVkQ2VudGVyPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm56aB55So5oyH5qiZ5LqL5Lu2XG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwb2ludGVyRXZlbnRzTm9uZT86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaWueWQkeaooeW8j1xuICAgICAqIC0gYXV0bzog6Ieq5YuV5qqi5ris5pa55ZCRXG4gICAgICogLSBwb3J0cmFpdDog6Y6W5a6a55u05ZCRXG4gICAgICogLSBsYW5kc2NhcGU6IOmOluWumuapq+WQkVxuICAgICAqIC0gcG9ydHJhaXRMb2NrUm90YXRpb246IOW8t+WItuebtOWQke+8iOapq+WQkeioreWCmeaZguaXi+i9iSAtOTDCsO+8iVxuICAgICAqIC0gbGFuZHNjYXBlTG9ja1JvdGF0aW9uOiDlvLfliLbmqavlkJHvvIjnm7TlkJHoqK3lgpnmmYLml4vovYkgOTDCsO+8iVxuICAgICAqIEBkZWZhdWx0ICdhdXRvJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9yaWVudGF0aW9uPzogVE9yaWVudGF0aW9uTW9kZSA9ICdhdXRvJztcblxuICAgIC8qKlxuICAgICAqIOWQkeWFp+WxpOWuueWZqOi9ieeZvOeahOiHquioguaoo+W8j1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZvcndhcmRTdHlsZT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiDoqK3oqIjnqL/lr6zluqbvvIjllq7kvY3vvJpweO+8iVxuICAgICAqIOW/heWhq+WPg+aVuFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGRlc2lnbldpZHRoITogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog6Kit6KiI56i/6auY5bqm77yI5Zau5L2N77yacHjvvIlcbiAgICAgKiDlv4Xloavlj4PmlbhcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkZXNpZ25IZWlnaHQhOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDmlrnlkJHororljJbkuovku7ZcbiAgICAgKiBAZW1pdHMgdHJ1ZTogbGFuZHNjYXBl77yI5qmr5bGP77yJXG4gICAgICogQGVtaXRzIGZhbHNlOiBwb3J0cmFpdO+8iOebtOWxj++8iVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvcmllbnRhdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFByaXZhdGUgRGVwZW5kZW5jaWVzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xuICAgIHByaXZhdGUgYm91bmRhcnlDb250ZXh0ID0gaW5qZWN0KEJzQm91bmRhcnlDb250ZXh0U2VydmljZSk7XG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gUHVibGljIFByb3BlcnRpZXNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC8qKlxuICAgICAqIOWvpumam+ioreWCmeaWueWQke+8iOWfuuaWvOimluWPo+WwuuWvuO+8iVxuICAgICAqIHRydWU6IOebtOWQkSAoaGVpZ2h0ID4gd2lkdGgpXG4gICAgICogZmFsc2U6IOapq+WQkSAod2lkdGggPj0gaGVpZ2h0KVxuICAgICAqL1xuICAgIGFjdHVhbElzUG9ydHJhaXQgPSBmYWxzZTtcblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIEdldHRlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC8qKlxuICAgICAqIOWIpOaWt+eVtuWJjeaYr+WQpueCuuapq+WQkeaooeW8j1xuICAgICAqIOagueaTmiBvcmllbnRhdGlvbiDoqK3lrprlkozlr6bpmpvoqK3lgpnmlrnlkJHliKTmlrdcbiAgICAgKi9cbiAgICBnZXQgaXNMYW5kc2NhcGUoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIGxhbmRzY2FwZUxvY2tSb3RhdGlvbjog5by35Yi25qmr5bGP5qih5byPXG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnbGFuZHNjYXBlTG9ja1JvdGF0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcG9ydHJhaXRMb2NrUm90YXRpb246IOW8t+WItuebtOWxj+aooeW8j1xuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ3BvcnRyYWl0TG9ja1JvdGF0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGxhbmRzY2FwZTog6Y6W5a6a5qmr5ZCRXG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnbGFuZHNjYXBlJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcG9ydHJhaXQ6IOmOluWumuebtOWQkVxuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ3BvcnRyYWl0Jykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGF1dG86IOiHquWLleaqoua4rFxuICAgICAgICByZXR1cm4gdGhpcy5ib3VuZGFyeUNvbnRleHQuZ2V0SXNMYW5kc2NhcGUoKTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBMaWZlY3ljbGUgSG9va3NcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdHVhbE9yaWVudGF0aW9uKCk7XG4gICAgICAgIHRoaXMuc2V0dXBCcmVha3BvaW50T2JzZXJ2ZXIoKTtcbiAgICAgICAgdGhpcy5zZXR1cFJlc2l6ZU9ic2VydmVyKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyDkvb/nlKggQElucHV0IOWPg+aVuO+8jOWPr+S7peeri+WNs+ioiOeul++8iOeEoemcgOetieW+hSBDU1PvvIlcbiAgICAgICAgdGhpcy51cGRhdGVCb3VuZGFyeUNhbGN1bGF0aW9ucygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE9ic2VydmVycyBTZXR1cCAtIOebo+iBveWZqOioreWumlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLyoqXG4gICAgICog6Kit5a6a5pa55ZCR6K6K5YyW55uj5o6nXG4gICAgICpcbiAgICAgKiDlt6XkvZzljp/nkIbvvJpcbiAgICAgKiAtIGxvY2sg5qih5byP77yIcG9ydHJhaXQvbGFuZHNjYXBl77yJ77ya55u05o6l6Kit5a6a5Zu65a6a5pa55ZCR77yM5LiN55uj6IG96K6K5YyWXG4gICAgICogLSBsb2NrUm90YXRpb24g5qih5byP77ya6Kit5a6a5Zu65a6a5pa55ZCR77yM5L2G6ZyA55uj6IG95a+m6Zqb6Kit5YKZ5pa55ZCR5Lul6Ke455m85peL6L2JXG4gICAgICogLSBhdXRvIOaooeW8j++8muS9v+eUqCBCcmVha3BvaW50T2JzZXJ2ZXIg55uj6IG96Kit5YKZ5pa55ZCR6K6K5YyWXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXR1cEJyZWFrcG9pbnRPYnNlcnZlcigpIHtcbiAgICAgICAgLy8gbGFuZHNjYXBlIOaIliBsYW5kc2NhcGVMb2NrUm90YXRpb246IOmOluWumueCuuapq+WQkVxuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ2xhbmRzY2FwZScgfHwgdGhpcy5vcmllbnRhdGlvbiA9PT0gJ2xhbmRzY2FwZUxvY2tSb3RhdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuYm91bmRhcnlDb250ZXh0LnNldElzTGFuZHNjYXBlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5vcmllbnRhdGlvbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcG9ydHJhaXQg5oiWIHBvcnRyYWl0TG9ja1JvdGF0aW9uOiDpjpblrprngrrnm7TlkJFcbiAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdwb3J0cmFpdCcgfHwgdGhpcy5vcmllbnRhdGlvbiA9PT0gJ3BvcnRyYWl0TG9ja1JvdGF0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5ib3VuZGFyeUNvbnRleHQuc2V0SXNMYW5kc2NhcGUoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5vcmllbnRhdGlvbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGF1dG8g5qih5byP77ya55uj6IG95a+m6Zqb55qE6Kit5YKZ5pa55ZCR77yI55So5pa8IG9yaWVudGF0aW9uQ2hhbmdlIOS6i+S7tu+8iVxuICAgICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgICAgICAgLm9ic2VydmUoJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib3VuZGFyeUNvbnRleHQuc2V0SXNMYW5kc2NhcGUocmVzdWx0Lm1hdGNoZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMub3JpZW50YXRpb25DaGFuZ2UuZW1pdChyZXN1bHQubWF0Y2hlcyk7XG4gICAgICAgICAgICAgICAgLy8g5pa55ZCR6K6K5YyW5pmC6YeN5paw6KiI566X6YKK55WMXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVCb3VuZGFyeUNhbGN1bGF0aW9ucygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6Kit5a6a6KaW56qX5aSn5bCP6K6K5YyW55uj5o6nXG4gICAgICpcbiAgICAgKiDlip/og73vvJpcbiAgICAgKiAtIOebo+iBvSB3aW5kb3cgcmVzaXplIOS6i+S7tlxuICAgICAqIC0g5pu05paw5a+m6Zqb6Kit5YKZ5pa55ZCRXG4gICAgICogLSDph43mlrDoqIjnrpfpgornlYzlsLrlr7hcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldHVwUmVzaXplT2JzZXJ2ZXIoKSB7XG4gICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gZGVib3VuY2VUaW1lKDE1MCksIC8vIOWPr+mBuO+8mumYsuaKluWEquWMluaAp+iDvVxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBY3R1YWxPcmllbnRhdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQm91bmRhcnlDYWxjdWxhdGlvbnMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENhbGN1bGF0aW9uIE1ldGhvZHMgLSDoqIjnrpfmlrnms5VcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC8qKlxuICAgICAqIOabtOaWsOWvpumam+ioreWCmeaWueWQke+8iOWfuuaWvOimluWPo+WwuuWvuO+8iVxuICAgICAqXG4gICAgICog5bel5L2c5Y6f55CG77yaXG4gICAgICogLSDlj6rlnKggbG9ja1JvdGF0aW9uIOaooeW8j+S4i+mcgOimgeaqoua4rOWvpumam+aWueWQkVxuICAgICAqIC0g6YCa6YGO5q+U6LyDIHdpbmRvdy5pbm5lckhlaWdodCDlkowgd2luZG93LmlubmVyV2lkdGgg5Yik5pa3XG4gICAgICogLSDntZDmnpznlKjmlrzop7jnmbwgQ1NTIOaXi+i9ieiuiuaPm1xuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlQWN0dWFsT3JpZW50YXRpb24oKSB7XG4gICAgICAgIC8vIOWPquacieWcqCBsb2NrUm90YXRpb24g5qih5byP5LiL5omN6ZyA6KaB5qqi5ris5a+m6Zqb5pa55ZCRXG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uICE9PSAnbGFuZHNjYXBlTG9ja1JvdGF0aW9uJyAmJiB0aGlzLm9yaWVudGF0aW9uICE9PSAncG9ydHJhaXRMb2NrUm90YXRpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmFjdHVhbElzUG9ydHJhaXQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOaqoua4rOWvpumam+imluWPo+aWueWQke+8mumrmOW6piA+IOWvrOW6piA9IOebtOWQkVxuICAgICAgICB0aGlzLmFjdHVhbElzUG9ydHJhaXQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgPiB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmm7TmlrDpgornlYzoqIjnrpfvvIjmlK/mj7QgQ2hyb21lIDc077yM5L2/55SoIEphdmFTY3JpcHQg5qih5pOsIG1pbiDlh73mlbjvvIlcbiAgICAgKlxuICAgICAqIOW3peS9nOWOn+eQhu+8mlxuICAgICAqIDEuIOW+niBASW5wdXQg5Y+D5pW46K6A5Y+W6Kit6KiI5bC65a+4XG4gICAgICogMi4g6K6A5Y+W6KaW5Y+j5bC65a+477yIdncxMDAsIHZoMTAw77yJXG4gICAgICogMy4g6JmV55CGIGxvY2tSb3RhdGlvbiDmqKHlvI/nmoToppblj6PlsLrlr7jkuqTmj5tcbiAgICAgKiA0LiDoqIjnrpfpgornlYzmnIDlpKflgLzlkozlr6bpmpvpgornlYzlsLrlr7hcbiAgICAgKiA1LiDoqIjnrpcgcHgydncg6L2J5o+b5q+U5L6LXG4gICAgICogNi4g6Kit5a6aIENTUyDorormlbjkvpvmqKPlvI/kvb/nlKhcbiAgICAgKlxuICAgICAqIOioreWumueahCBDU1Mg6K6K5pW477yaXG4gICAgICogLSAtLWRlc2lnbi13aWR0aDog6Kit6KiI56i/5a+s5bqmXG4gICAgICogLSAtLWRlc2lnbi1oZWlnaHQ6IOioreioiOeov+mrmOW6plxuICAgICAqIC0gLS1ib3VuZGFyeS13aWR0aDog5a+m6Zqb6YKK55WM5a+s5bqm77yIcHjvvIlcbiAgICAgKiAtIC0tYm91bmRhcnktaGVpZ2h0OiDlr6bpmpvpgornlYzpq5jluqbvvIhweO+8iVxuICAgICAqIC0gLS1weDJ2dy1yYXRpbzogcHgg6L2JIHZ3IOeahOavlOS+i+S/guaVuFxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlQm91bmRhcnlDYWxjdWxhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBTdGVwIDE6IOiugOWPluioreioiOWwuuWvuOS4puioreWumiBDU1Mg6K6K5pW4XG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgY29uc3QgZGVzaWduV2lkdGggPSB0aGlzLmRlc2lnbldpZHRoO1xuICAgICAgICBjb25zdCBkZXNpZ25IZWlnaHQgPSB0aGlzLmRlc2lnbkhlaWdodDtcblxuICAgICAgICAvLyDoqK3lrpogQ1NTIOiuiuaVuO+8jOS+m+aoo+W8j+S9v+eUqO+8iOS+i+WmgiBweDJ2dygpIOWHveaVuO+8iVxuICAgICAgICBob3N0RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1kZXNpZ24td2lkdGgnLCBgJHtkZXNpZ25XaWR0aH1gKTtcbiAgICAgICAgaG9zdEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tZGVzaWduLWhlaWdodCcsIGAke2Rlc2lnbkhlaWdodH1gKTtcblxuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIFN0ZXAgMjog6K6A5Y+W6KaW5Y+j5bC65a+477yI55u05o6l5L2/55SoIHdpbmRvdy5pbm5lciog56K65L+d5LiA6Ie05oCn77yJXG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgbGV0IHZ3MTAwID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGxldCB2aDEwMCA9IHdpbmRvdy5pbm5lckhlaWdodDtcblxuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIFN0ZXAgMjog6JmV55CGIGxvY2tSb3RhdGlvbiDmqKHlvI/nmoToppblj6PlsLrlr7jkuqTmj5tcbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBsYW5kc2NhcGVMb2NrUm90YXRpb24gKyDlr6bpmpvnm7TlkJHvvJrkuqTmj5voppblj6PlsLrlr7hcbiAgICAgICAgLy8g5Y6f5Zug77ya5peL6L2J5b6M77yM5YWn5a6555qE5a+s5bqm5bCN5oeJ6Kit5YKZ55qE6auY5bqm77yM5YWn5a6555qE6auY5bqm5bCN5oeJ6Kit5YKZ55qE5a+s5bqmXG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnbGFuZHNjYXBlTG9ja1JvdGF0aW9uJyAmJiB0aGlzLmFjdHVhbElzUG9ydHJhaXQpIHtcbiAgICAgICAgICAgIFt2dzEwMCwgdmgxMDBdID0gW3ZoMTAwLCB2dzEwMF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBwb3J0cmFpdExvY2tSb3RhdGlvbiArIOWvpumam+apq+WQke+8muS6pOaPm+imluWPo+WwuuWvuFxuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ3BvcnRyYWl0TG9ja1JvdGF0aW9uJyAmJiAhdGhpcy5hY3R1YWxJc1BvcnRyYWl0KSB7XG4gICAgICAgICAgICBbdncxMDAsIHZoMTAwXSA9IFt2aDEwMCwgdncxMDBdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBTdGVwIDM6IOioiOeul+avlOS+i+WSjOmCiueVjOacgOWkp+WAvFxuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIGNvbnN0IGxhbmRzY2FwZVJhdGlvID0gZGVzaWduV2lkdGggLyBkZXNpZ25IZWlnaHQ7XG4gICAgICAgIGNvbnN0IHBvcnRyYWl0UmF0aW8gPSBkZXNpZ25IZWlnaHQgLyBkZXNpZ25XaWR0aDtcblxuICAgICAgICAvLyDmoLnmk5rmlrnlkJHmqKHlvI/oqIjnrpfpgornlYzmnIDlpKflgLxcbiAgICAgICAgY29uc3QgaXNMYW5kc2NhcGUgPSB0aGlzLmlzTGFuZHNjYXBlO1xuICAgICAgICBjb25zdCBib3VuZGFyeU1heFdpZHRoID0gaXNMYW5kc2NhcGVcbiAgICAgICAgICAgID8gdmgxMDAgKiBwb3J0cmFpdFJhdGlvICAvLyDmqavlkJHvvJrpq5jluqYgKiDpq5jlr6zmr5RcbiAgICAgICAgICAgIDogdmgxMDAgKiBsYW5kc2NhcGVSYXRpbzsgLy8g55u05ZCR77ya6auY5bqmICog5a+s6auY5q+UXG4gICAgICAgIGNvbnN0IGJvdW5kYXJ5TWF4SGVpZ2h0ID0gaXNMYW5kc2NhcGVcbiAgICAgICAgICAgID8gdncxMDAgKiBsYW5kc2NhcGVSYXRpbyAgLy8g5qmr5ZCR77ya5a+s5bqmICog5a+s6auY5q+UXG4gICAgICAgICAgICA6IHZ3MTAwICogcG9ydHJhaXRSYXRpbzsgIC8vIOebtOWQke+8muWvrOW6piAqIOmrmOWvrOavlFxuXG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgLy8gU3RlcCA0OiDoqIjnrpflr6bpmpvpgornlYzlsLrlr7jvvIjkvb/nlKggTWF0aC5taW4g5qih5pOsIENTUyBtaW4oKe+8iVxuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIENocm9tZSA3OSDmiY3mlK/mj7QgQ1NTIG1pbigpIOWHveaVuO+8jOaJgOS7peWcqCBKYXZhU2NyaXB0IOS4reioiOeul1xuICAgICAgICBjb25zdCBib3VuZGFyeVdpZHRoID0gTWF0aC5taW4odncxMDAsIGJvdW5kYXJ5TWF4V2lkdGgpO1xuICAgICAgICBjb25zdCBib3VuZGFyeUhlaWdodCA9IE1hdGgubWluKHZoMTAwLCBib3VuZGFyeU1heEhlaWdodCk7XG5cbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBTdGVwIDU6IOioiOeulyBweDJ2dyDovYnmj5vmr5TkvotcbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyDmqavlkJHmqKHlvI/kvb/nlKggZGVzaWduLWhlaWdodCDkvZzngrrln7rmupbvvIznm7TlkJHmqKHlvI/kvb/nlKggZGVzaWduLXdpZHRoIOS9nOeCuuWfuua6llxuICAgICAgICBjb25zdCBkZXNpZ25CYXNlV2lkdGggPSBpc0xhbmRzY2FwZSA/IGRlc2lnbkhlaWdodCA6IGRlc2lnbldpZHRoO1xuICAgICAgICBjb25zdCBweDJ2d1JhdGlvID0gYm91bmRhcnlXaWR0aCAvIGRlc2lnbkJhc2VXaWR0aDtcblxuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIFN0ZXAgNjog6Kit5a6aIENTUyDorormlbhcbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICBob3N0RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ib3VuZGFyeS13aWR0aCcsIGAke2JvdW5kYXJ5V2lkdGh9cHhgKTtcbiAgICAgICAgaG9zdEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYm91bmRhcnktaGVpZ2h0JywgYCR7Ym91bmRhcnlIZWlnaHR9cHhgKTtcbiAgICAgICAgaG9zdEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcHgydnctcmF0aW8nLCBgJHtweDJ2d1JhdGlvfWApO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJib3VuZGFyeS13cmFwcGVyXCJcbiAgW2NsYXNzLmZpeGVkLWNlbnRlcl09XCJpc0ZpeGVkQ2VudGVyXCJcbiAgW2NsYXNzLnBvaW50ZXJFdmVudHNOb25lXT1cInBvaW50ZXJFdmVudHNOb25lXCJcbiAgW3N0eWxlXT1cImZvcndhcmRTdHlsZVwiXG4+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|
package/esm2020/lib/model.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXRzdGFjay1uZy1ib3VuZGFyeS9zcmMvbGliL21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBUT3JpZW50YXRpb25Nb2RlID0gJ2F1dG8nIHwgJ3BvcnRyYWl0JyB8ICdsYW5kc2NhcGUnIHwgJ2xhbmRzY2FwZUxvY2tSb3RhdGlvbicgfCAncG9ydHJhaXRMb2NrUm90YXRpb24nO1xuIl19
|