@bitstack/ng-boundary 14.0.6-alpha.3 → 14.0.6-alpha.4
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 +209 -32
- package/esm2020/lib/model.mjs +1 -1
- package/fesm2015/bitstack-ng-boundary.mjs +208 -31
- package/fesm2015/bitstack-ng-boundary.mjs.map +1 -1
- package/fesm2020/bitstack-ng-boundary.mjs +208 -31
- package/fesm2020/bitstack-ng-boundary.mjs.map +1 -1
- package/lib/bs-boundary.d.ts +99 -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,23 +1,114 @@
|
|
|
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
|
}
|
|
@@ -29,101 +120,187 @@ export class BsBoundary {
|
|
|
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. 讀取基礎 CSS 變數(vw100, vh100, design-width, design-height)
|
|
201
|
+
* 2. 處理 lockRotation 模式的視口尺寸交換
|
|
202
|
+
* 3. 計算邊界最大值和實際邊界尺寸
|
|
203
|
+
* 4. 計算 px2vw 轉換比例
|
|
204
|
+
* 5. 設定 CSS 變數供樣式使用
|
|
205
|
+
*
|
|
206
|
+
* 設定的 CSS 變數:
|
|
207
|
+
* - --boundary-width: 實際邊界寬度(px)
|
|
208
|
+
* - --boundary-height: 實際邊界高度(px)
|
|
209
|
+
* - --px2vw-ratio: px 轉 vw 的比例係數
|
|
73
210
|
*/
|
|
74
211
|
updateBoundaryCalculations() {
|
|
75
212
|
const hostElement = this.elementRef.nativeElement;
|
|
76
213
|
const computedStyle = getComputedStyle(hostElement);
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
|
|
214
|
+
// ========================================
|
|
215
|
+
// Step 1: 讀取基礎 CSS 變數
|
|
216
|
+
// ========================================
|
|
217
|
+
let vw100 = parseFloat(computedStyle.getPropertyValue('--vw100')) || window.innerWidth;
|
|
218
|
+
let vh100 = parseFloat(computedStyle.getPropertyValue('--vh100')) || window.innerHeight;
|
|
80
219
|
const designWidth = parseFloat(computedStyle.getPropertyValue('--design-width'));
|
|
81
220
|
const designHeight = parseFloat(computedStyle.getPropertyValue('--design-height'));
|
|
82
|
-
console.log('designWidth', designWidth);
|
|
83
221
|
// 檢查基礎變數是否準備好
|
|
84
|
-
if (isNaN(designWidth)
|
|
85
|
-
|
|
222
|
+
if (isNaN(designWidth)) {
|
|
223
|
+
console.error('[BsBoundary][BS001] CSS variable --design-width is not set or invalid');
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (isNaN(designHeight)) {
|
|
227
|
+
console.error('[BsBoundary][BS002] CSS variable --design-height is not set or invalid');
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
if (designWidth === 0) {
|
|
231
|
+
console.error('[BsBoundary][BS003] CSS variable --design-width cannot be zero');
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
if (designHeight === 0) {
|
|
235
|
+
console.error('[BsBoundary][BS004] CSS variable --design-height cannot be zero');
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
// ========================================
|
|
239
|
+
// Step 2: 處理 lockRotation 模式的視口尺寸交換
|
|
240
|
+
// ========================================
|
|
241
|
+
// landscapeLockRotation + 實際直向:交換視口尺寸
|
|
242
|
+
// 原因:旋轉後,內容的寬度對應設備的高度,內容的高度對應設備的寬度
|
|
243
|
+
if (this.orientation === 'landscapeLockRotation' && this.actualIsPortrait) {
|
|
244
|
+
[vw100, vh100] = [vh100, vw100];
|
|
245
|
+
}
|
|
246
|
+
// portraitLockRotation + 實際橫向:交換視口尺寸
|
|
247
|
+
if (this.orientation === 'portraitLockRotation' && !this.actualIsPortrait) {
|
|
248
|
+
[vw100, vh100] = [vh100, vw100];
|
|
86
249
|
}
|
|
87
|
-
//
|
|
250
|
+
// ========================================
|
|
251
|
+
// Step 3: 計算比例和邊界最大值
|
|
252
|
+
// ========================================
|
|
88
253
|
const landscapeRatio = designWidth / designHeight;
|
|
89
254
|
const portraitRatio = designHeight / designWidth;
|
|
90
|
-
//
|
|
255
|
+
// 根據方向模式計算邊界最大值
|
|
91
256
|
const isLandscape = this.isLandscape;
|
|
92
257
|
const boundaryMaxWidth = isLandscape
|
|
93
|
-
? vh100 * portraitRatio
|
|
94
|
-
: vh100 * landscapeRatio;
|
|
258
|
+
? vh100 * portraitRatio // 橫向:高度 * 高寬比
|
|
259
|
+
: vh100 * landscapeRatio; // 直向:高度 * 寬高比
|
|
95
260
|
const boundaryMaxHeight = isLandscape
|
|
96
|
-
? vw100 * landscapeRatio
|
|
97
|
-
: vw100 * portraitRatio;
|
|
98
|
-
//
|
|
261
|
+
? vw100 * landscapeRatio // 橫向:寬度 * 寬高比
|
|
262
|
+
: vw100 * portraitRatio; // 直向:寬度 * 高寬比
|
|
263
|
+
// ========================================
|
|
264
|
+
// Step 4: 計算實際邊界尺寸(使用 Math.min 模擬 CSS min())
|
|
265
|
+
// ========================================
|
|
266
|
+
// Chrome 79 才支援 CSS min() 函數,所以在 JavaScript 中計算
|
|
99
267
|
const boundaryWidth = Math.min(vw100, boundaryMaxWidth);
|
|
100
268
|
const boundaryHeight = Math.min(vh100, boundaryMaxHeight);
|
|
101
|
-
//
|
|
269
|
+
// ========================================
|
|
270
|
+
// Step 5: 計算 px2vw 轉換比例
|
|
271
|
+
// ========================================
|
|
272
|
+
// 橫向模式使用 design-height 作為基準,直向模式使用 design-width 作為基準
|
|
102
273
|
const designBaseWidth = isLandscape ? designHeight : designWidth;
|
|
103
274
|
const px2vwRatio = boundaryWidth / designBaseWidth;
|
|
104
|
-
//
|
|
275
|
+
// ========================================
|
|
276
|
+
// Step 6: 設定 CSS 變數
|
|
277
|
+
// ========================================
|
|
105
278
|
hostElement.style.setProperty('--boundary-width', `${boundaryWidth}px`);
|
|
106
279
|
hostElement.style.setProperty('--boundary-height', `${boundaryHeight}px`);
|
|
107
280
|
hostElement.style.setProperty('--px2vw-ratio', `${px2vwRatio}`);
|
|
108
281
|
}
|
|
109
282
|
}
|
|
110
283
|
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",
|
|
284
|
+
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" }, outputs: { orientationChange: "orientationChange" }, host: { properties: { "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));--design-base-width: var(--design-width);--design-base-height: var(--design-height);--px2vw-ratio: calc(var(--vw100) / var(--design-base-width))}.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));--design-base-width: var(--design-width);--design-base-height: var(--design-height);--px2vw-ratio: calc(var(--vw100) / var(--design-base-width))}:host.landscape{--boundary-max-width: calc(var(--vh100) * var(--portrait-ratio));--boundary-max-height: calc(var(--vw100) * var(--landscape-ratio));--design-base-width: var(--design-height);--design-base-height: var(--design-width);--px2vw-ratio: calc(var(--vh100) * var(--portrait-ratio) / var(--design-base-width))}@media (orientation: landscape){:host:not(.landscape):not(.portrait):not(.landscape-lock-rotation):not(.portrait-lock-rotation){--boundary-max-width: calc(var(--vh100) * var(--portrait-ratio));--boundary-max-height: calc(var(--vw100) * var(--landscape-ratio));--design-base-width: var(--design-height);--design-base-height: var(--design-width);--px2vw-ratio: calc(var(--vh100) * var(--portrait-ratio) / var(--design-base-width))}}.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));--design-base-width: var(--design-height);--design-base-height: var(--design-width);--px2vw-ratio: calc(var(--vh100) * var(--portrait-ratio) / var(--design-base-width))}: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));--design-base-width: var(--design-width);--design-base-height: var(--design-height);--px2vw-ratio: calc(var(--vw100) / var(--design-base-width))}: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
285
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BsBoundary, decorators: [{
|
|
113
286
|
type: Component,
|
|
114
287
|
args: [{ selector: 'bs-boundary', standalone: true, providers: [BsBoundaryContextService], host: {
|
|
115
|
-
'[class.landscape]': 'isLandscape &&
|
|
116
|
-
'[class.portrait]': '!isLandscape &&
|
|
117
|
-
|
|
288
|
+
'[class.landscape]': 'isLandscape && orientation === "landscape"',
|
|
289
|
+
'[class.portrait]': '!isLandscape && orientation === "portrait"',
|
|
290
|
+
'[class.landscape-lock-rotation]': 'orientation === "landscapeLockRotation"',
|
|
291
|
+
'[class.portrait-lock-rotation]': 'orientation === "portraitLockRotation"',
|
|
292
|
+
'[class.actual-portrait]': 'actualIsPortrait',
|
|
293
|
+
'[class.actual-landscape]': '!actualIsPortrait'
|
|
294
|
+
}, 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));--design-base-width: var(--design-width);--design-base-height: var(--design-height);--px2vw-ratio: calc(var(--vw100) / var(--design-base-width))}.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));--design-base-width: var(--design-width);--design-base-height: var(--design-height);--px2vw-ratio: calc(var(--vw100) / var(--design-base-width))}:host.landscape{--boundary-max-width: calc(var(--vh100) * var(--portrait-ratio));--boundary-max-height: calc(var(--vw100) * var(--landscape-ratio));--design-base-width: var(--design-height);--design-base-height: var(--design-width);--px2vw-ratio: calc(var(--vh100) * var(--portrait-ratio) / var(--design-base-width))}@media (orientation: landscape){:host:not(.landscape):not(.portrait):not(.landscape-lock-rotation):not(.portrait-lock-rotation){--boundary-max-width: calc(var(--vh100) * var(--portrait-ratio));--boundary-max-height: calc(var(--vw100) * var(--landscape-ratio));--design-base-width: var(--design-height);--design-base-height: var(--design-width);--px2vw-ratio: calc(var(--vh100) * var(--portrait-ratio) / var(--design-base-width))}}.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));--design-base-width: var(--design-height);--design-base-height: var(--design-width);--px2vw-ratio: calc(var(--vh100) * var(--portrait-ratio) / var(--design-base-width))}: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));--design-base-width: var(--design-width);--design-base-height: var(--design-height);--px2vw-ratio: calc(var(--vw100) / var(--design-base-width))}: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
295
|
}], propDecorators: { isFixedCenter: [{
|
|
119
296
|
type: Input
|
|
120
297
|
}], pointerEventsNone: [{
|
|
121
298
|
type: Input
|
|
122
|
-
}],
|
|
299
|
+
}], orientation: [{
|
|
123
300
|
type: Input
|
|
124
301
|
}], forwardStyle: [{
|
|
125
302
|
type: Input
|
|
126
303
|
}], orientationChange: [{
|
|
127
304
|
type: Output
|
|
128
305
|
}] } });
|
|
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==
|
|
306
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtYm91bmRhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXRzdGFjay1uZy1ib3VuZGFyeS9zcmMvbGliL2JzLWJvdW5kYXJ5LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvYml0c3RhY2stbmctYm91bmRhcnkvc3JjL2xpYi90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFFSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sK0JBQStCLENBQUM7O0FBR3ZFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBZ0JILE1BQU0sT0FBTyxVQUFVO0lBZnZCO1FBaUJJLCtEQUErRDtRQUMvRCxtQkFBbUI7UUFDbkIsK0RBQStEO1FBRS9EOzs7V0FHRztRQUNNLGtCQUFhLEdBQWEsS0FBSyxDQUFDO1FBRXpDOzs7V0FHRztRQUNNLHNCQUFpQixHQUFhLEtBQUssQ0FBQztRQUU3Qzs7Ozs7Ozs7V0FRRztRQUNNLGdCQUFXLEdBQXNCLE1BQU0sQ0FBQztRQU9qRDs7OztXQUlHO1FBQ08sc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUUxRCwrREFBK0Q7UUFDL0QsdUJBQXVCO1FBQ3ZCLCtEQUErRDtRQUV2RCx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRCxvQkFBZSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ25ELGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxD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ZUFBZSxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDOzt1R0E5UlEsVUFBVTsyRkFBVixVQUFVLGtwQkFWUixDQUFDLHdCQUF3QixDQUFDLDBCQy9DekMseU1BUUE7MkZEaURhLFVBQVU7a0JBZnRCLFNBQVM7K0JBQ0ksYUFBYSxjQUVYLElBQUksYUFFTCxDQUFDLHdCQUF3QixDQUFDLFFBQy9CO3dCQUNGLG1CQUFtQixFQUFFLDRDQUE0Qzt3QkFDakUsa0JBQWtCLEVBQUUsNENBQTRDO3dCQUNoRSxpQ0FBaUMsRUFBRSx5Q0FBeUM7d0JBQzVFLGdDQUFnQyxFQUFFLHdDQUF3Qzt3QkFDMUUseUJBQXlCLEVBQUUsa0JBQWtCO3dCQUM3QywwQkFBMEIsRUFBRSxtQkFBbUI7cUJBQ2xEOzhCQVlRLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQVdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFPSSxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCwgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtCc0JvdW5kYXJ5Q29udGV4dFNlcnZpY2V9IGZyb20gJy4vYnMtYm91bmRhcnktY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7VE9yaWVudGF0aW9uTW9kZX0gZnJvbSAnLi9tb2RlbCc7XG5cbi8qKlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBCc0JvdW5kYXJ5IENvbXBvbmVudCAtIEFXRCDoh6rpganmh4npgornlYzlrrnlmahcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIOWKn+iDveiqquaYju+8mlxuICogMS4g5o+Q5L6b6Z+/5oeJ5byP6YKK55WM5a655Zmo77yM6Ieq5YuV6YGp5oeJ5LiN5ZCM6Kit5YKZ5bC65a+4XG4gKiAyLiDmlK/mj7QgNSDnqK7mlrnlkJHmqKHlvI/vvJphdXRvLCBwb3J0cmFpdCwgbGFuZHNjYXBlLCBwb3J0cmFpdExvY2tSb3RhdGlvbiwgbGFuZHNjYXBlTG9ja1JvdGF0aW9uXG4gKiAzLiDkvb/nlKggQ1NTIOiuiuaVuOWvpuePvuWLleaFi+ioiOeul++8jOaUr+aPtCBweDJ2dygpIOWHveaVuFxuICogNC4g55u45a65IENocm9tZSA3NCvvvIzkvb/nlKggSmF2YVNjcmlwdCDoqIjnrpfpgornlYzlsLrlr7hcbiAqXG4gKiDkvb/nlKjnr4TkvovvvJpcbiAqIGBgYGh0bWxcbiAqIDxicy1ib3VuZGFyeSBbb3JpZW50YXRpb25dPVwiJ2F1dG8nXCIgW2lzRml4ZWRDZW50ZXJdPVwidHJ1ZVwiPlxuICogICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPi4uLjwvZGl2PlxuICogPC9icy1ib3VuZGFyeT5cbiAqIGBgYFxuICpcbiAqIENTUyDorormlbjoqK3lrprvvJpcbiAqIGBgYHNjc3NcbiAqIGJzLWJvdW5kYXJ5IHtcbiAqICAgLS1kZXNpZ24td2lkdGg6IDM3NTsgICAvLyDoqK3oqIjnqL/lr6zluqZcbiAqICAgLS1kZXNpZ24taGVpZ2h0OiA2Njc7ICAvLyDoqK3oqIjnqL/pq5jluqZcbiAqIH1cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzLWJvdW5kYXJ5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0JzQm91bmRhcnlDb250ZXh0U2VydmljZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLmxhbmRzY2FwZV0nOiAnaXNMYW5kc2NhcGUgJiYgb3JpZW50YXRpb24gPT09IFwibGFuZHNjYXBlXCInLFxuICAgICAgICAnW2NsYXNzLnBvcnRyYWl0XSc6ICchaXNMYW5kc2NhcGUgJiYgb3JpZW50YXRpb24gPT09IFwicG9ydHJhaXRcIicsXG4gICAgICAgICdbY2xhc3MubGFuZHNjYXBlLWxvY2stcm90YXRpb25dJzogJ29yaWVudGF0aW9uID09PSBcImxhbmRzY2FwZUxvY2tSb3RhdGlvblwiJyxcbiAgICAgICAgJ1tjbGFzcy5wb3J0cmFpdC1sb2NrLXJvdGF0aW9uXSc6ICdvcmllbnRhdGlvbiA9PT0gXCJwb3J0cmFpdExvY2tSb3RhdGlvblwiJyxcbiAgICAgICAgJ1tjbGFzcy5hY3R1YWwtcG9ydHJhaXRdJzogJ2FjdHVhbElzUG9ydHJhaXQnLFxuICAgICAgICAnW2NsYXNzLmFjdHVhbC1sYW5kc2NhcGVdJzogJyFhY3R1YWxJc1BvcnRyYWl0J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQnNCb3VuZGFyeSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIElucHV0cyAmIE91dHB1dHNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWwh+WFp+WuueWbuuWumuWcqOimlueql+S4reWkrlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCkgaXNGaXhlZENlbnRlcj86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqOaMh+aomeS6i+S7tlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCkgcG9pbnRlckV2ZW50c05vbmU/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmlrnlkJHmqKHlvI9cbiAgICAgKiAtIGF1dG86IOiHquWLleaqoua4rOaWueWQkVxuICAgICAqIC0gcG9ydHJhaXQ6IOmOluWumuebtOWQkVxuICAgICAqIC0gbGFuZHNjYXBlOiDpjpblrprmqavlkJFcbiAgICAgKiAtIHBvcnRyYWl0TG9ja1JvdGF0aW9uOiDlvLfliLbnm7TlkJHvvIjmqavlkJHoqK3lgpnmmYLml4vovYkgLTkwwrDvvIlcbiAgICAgKiAtIGxhbmRzY2FwZUxvY2tSb3RhdGlvbjog5by35Yi25qmr5ZCR77yI55u05ZCR6Kit5YKZ5pmC5peL6L2JIDkwwrDvvIlcbiAgICAgKiBAZGVmYXVsdCAnYXV0bydcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbj86IFRPcmllbnRhdGlvbk1vZGUgPSAnYXV0byc7XG5cbiAgICAvKipcbiAgICAgKiDlkJHlhaflsaTlrrnlmajovYnnmbznmoToh6roqILmqKPlvI9cbiAgICAgKi9cbiAgICBASW5wdXQoKSBmb3J3YXJkU3R5bGU/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICog5pa55ZCR6K6K5YyW5LqL5Lu2XG4gICAgICogQGVtaXRzIHRydWU6IGxhbmRzY2FwZe+8iOapq+Wxj++8iVxuICAgICAqIEBlbWl0cyBmYWxzZTogcG9ydHJhaXTvvIjnm7TlsY/vvIlcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb3JpZW50YXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBQcml2YXRlIERlcGVuZGVuY2llc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcbiAgICBwcml2YXRlIGJvdW5kYXJ5Q29udGV4dCA9IGluamVjdChCc0JvdW5kYXJ5Q29udGV4dFNlcnZpY2UpO1xuICAgIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFB1YmxpYyBQcm9wZXJ0aWVzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAvKipcbiAgICAgKiDlr6bpmpvoqK3lgpnmlrnlkJHvvIjln7rmlrzoppblj6PlsLrlr7jvvIlcbiAgICAgKiB0cnVlOiDnm7TlkJEgKGhlaWdodCA+IHdpZHRoKVxuICAgICAqIGZhbHNlOiDmqavlkJEgKHdpZHRoID49IGhlaWdodClcbiAgICAgKi9cbiAgICBhY3R1YWxJc1BvcnRyYWl0ID0gZmFsc2U7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBHZXR0ZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAvKipcbiAgICAgKiDliKTmlrfnlbbliY3mmK/lkKbngrrmqavlkJHmqKHlvI9cbiAgICAgKiDmoLnmk5ogb3JpZW50YXRpb24g6Kit5a6a5ZKM5a+m6Zqb6Kit5YKZ5pa55ZCR5Yik5pa3XG4gICAgICovXG4gICAgZ2V0IGlzTGFuZHNjYXBlKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBsYW5kc2NhcGVMb2NrUm90YXRpb246IOW8t+WItuapq+Wxj+aooeW8j1xuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ2xhbmRzY2FwZUxvY2tSb3RhdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHBvcnRyYWl0TG9ja1JvdGF0aW9uOiDlvLfliLbnm7TlsY/mqKHlvI9cbiAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdwb3J0cmFpdExvY2tSb3RhdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBsYW5kc2NhcGU6IOmOluWumuapq+WQkVxuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ2xhbmRzY2FwZScpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHBvcnRyYWl0OiDpjpblrprnm7TlkJFcbiAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdwb3J0cmFpdCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBhdXRvOiDoh6rli5XmqqLmuKxcbiAgICAgICAgcmV0dXJuIHRoaXMuYm91bmRhcnlDb250ZXh0LmdldElzTGFuZHNjYXBlKCk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTGlmZWN5Y2xlIEhvb2tzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVBY3R1YWxPcmllbnRhdGlvbigpO1xuICAgICAgICB0aGlzLnNldHVwQnJlYWtwb2ludE9ic2VydmVyKCk7XG4gICAgICAgIHRoaXMuc2V0dXBSZXNpemVPYnNlcnZlcigpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8g5ZyoIHZpZXcg5Yid5aeL5YyW5b6M6KiI566X77yI56K65L+dIENTUyDlt7Llrozlhajmh4nnlKjvvIlcbiAgICAgICAgdGhpcy51cGRhdGVCb3VuZGFyeUNhbGN1bGF0aW9ucygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE9ic2VydmVycyBTZXR1cCAtIOebo+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+8mlxuICAgICAqIDEuIOiugOWPluWfuuekjiBDU1Mg6K6K5pW477yIdncxMDAsIHZoMTAwLCBkZXNpZ24td2lkdGgsIGRlc2lnbi1oZWlnaHTvvIlcbiAgICAgKiAyLiDomZXnkIYgbG9ja1JvdGF0aW9uIOaooeW8j+eahOimluWPo+WwuuWvuOS6pOaPm1xuICAgICAqIDMuIOioiOeul+mCiueVjOacgOWkp+WAvOWSjOWvpumam+mCiueVjOWwuuWvuFxuICAgICAqIDQuIOioiOeulyBweDJ2dyDovYnmj5vmr5TkvotcbiAgICAgKiA1LiDoqK3lrpogQ1NTIOiuiuaVuOS+m+aoo+W8j+S9v+eUqFxuICAgICAqXG4gICAgICog6Kit5a6a55qEIENTUyDorormlbjvvJpcbiAgICAgKiAtIC0tYm91bmRhcnktd2lkdGg6IOWvpumam+mCiueVjOWvrOW6pu+8iHB477yJXG4gICAgICogLSAtLWJvdW5kYXJ5LWhlaWdodDog5a+m6Zqb6YKK55WM6auY5bqm77yIcHjvvIlcbiAgICAgKiAtIC0tcHgydnctcmF0aW86IHB4IOi9iSB2dyDnmoTmr5Tkvovkv4LmlbhcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZUJvdW5kYXJ5Q2FsY3VsYXRpb25zKCkge1xuICAgICAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShob3N0RWxlbWVudCk7XG5cbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBTdGVwIDE6IOiugOWPluWfuuekjiBDU1Mg6K6K5pW4XG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgbGV0IHZ3MTAwID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tdncxMDAnKSkgfHwgd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGxldCB2aDEwMCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLXZoMTAwJykpIHx8IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgY29uc3QgZGVzaWduV2lkdGggPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1kZXNpZ24td2lkdGgnKSk7XG4gICAgICAgIGNvbnN0IGRlc2lnbkhlaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWRlc2lnbi1oZWlnaHQnKSk7XG5cbiAgICAgICAgLy8g5qqi5p+l5Z+656SO6K6K5pW45piv5ZCm5rqW5YKZ5aW9XG4gICAgICAgIGlmIChpc05hTihkZXNpZ25XaWR0aCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tCc0JvdW5kYXJ5XVtCUzAwMV0gQ1NTIHZhcmlhYmxlIC0tZGVzaWduLXdpZHRoIGlzIG5vdCBzZXQgb3IgaW52YWxpZCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc05hTihkZXNpZ25IZWlnaHQpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbQnNCb3VuZGFyeV1bQlMwMDJdIENTUyB2YXJpYWJsZSAtLWRlc2lnbi1oZWlnaHQgaXMgbm90IHNldCBvciBpbnZhbGlkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlc2lnbldpZHRoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbQnNCb3VuZGFyeV1bQlMwMDNdIENTUyB2YXJpYWJsZSAtLWRlc2lnbi13aWR0aCBjYW5ub3QgYmUgemVybycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZXNpZ25IZWlnaHQgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tCc0JvdW5kYXJ5XVtCUzAwNF0gQ1NTIHZhcmlhYmxlIC0tZGVzaWduLWhlaWdodCBjYW5ub3QgYmUgemVybycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBTdGVwIDI6IOiZleeQhiBsb2NrUm90YXRpb24g5qih5byP55qE6KaW5Y+j5bC65a+45Lqk5o+bXG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgLy8gbGFuZHNjYXBlTG9ja1JvdGF0aW9uICsg5a+m6Zqb55u05ZCR77ya5Lqk5o+b6KaW5Y+j5bC65a+4XG4gICAgICAgIC8vIOWOn+WboO+8muaXi+i9ieW+jO+8jOWFp+WuueeahOWvrOW6puWwjeaHieioreWCmeeahOmrmOW6pu+8jOWFp+WuueeahOmrmOW6puWwjeaHieioreWCmeeahOWvrOW6plxuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ2xhbmRzY2FwZUxvY2tSb3RhdGlvbicgJiYgdGhpcy5hY3R1YWxJc1BvcnRyYWl0KSB7XG4gICAgICAgICAgICBbdncxMDAsIHZoMTAwXSA9IFt2aDEwMCwgdncxMDBdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcG9ydHJhaXRMb2NrUm90YXRpb24gKyDlr6bpmpvmqavlkJHvvJrkuqTmj5voppblj6PlsLrlr7hcbiAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdwb3J0cmFpdExvY2tSb3RhdGlvbicgJiYgIXRoaXMuYWN0dWFsSXNQb3J0cmFpdCkge1xuICAgICAgICAgICAgW3Z3MTAwLCB2aDEwMF0gPSBbdmgxMDAsIHZ3MTAwXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgLy8gU3RlcCAzOiDoqIjnrpfmr5TkvovlkozpgornlYzmnIDlpKflgLxcbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICBjb25zdCBsYW5kc2NhcGVSYXRpbyA9IGRlc2lnbldpZHRoIC8gZGVzaWduSGVpZ2h0O1xuICAgICAgICBjb25zdCBwb3J0cmFpdFJhdGlvID0gZGVzaWduSGVpZ2h0IC8gZGVzaWduV2lkdGg7XG5cbiAgICAgICAgLy8g5qC55pOa5pa55ZCR5qih5byP6KiI566X6YKK55WM5pyA5aSn5YC8XG4gICAgICAgIGNvbnN0IGlzTGFuZHNjYXBlID0gdGhpcy5pc0xhbmRzY2FwZTtcbiAgICAgICAgY29uc3QgYm91bmRhcnlNYXhXaWR0aCA9IGlzTGFuZHNjYXBlXG4gICAgICAgICAgICA/IHZoMTAwICogcG9ydHJhaXRSYXRpbyAgLy8g5qmr5ZCR77ya6auY5bqmICog6auY5a+s5q+UXG4gICAgICAgICAgICA6IHZoMTAwICogbGFuZHNjYXBlUmF0aW87IC8vIOebtOWQke+8mumrmOW6piAqIOWvrOmrmOavlFxuICAgICAgICBjb25zdCBib3VuZGFyeU1heEhlaWdodCA9IGlzTGFuZHNjYXBlXG4gICAgICAgICAgICA/IHZ3MTAwICogbGFuZHNjYXBlUmF0aW8gIC8vIOapq+WQke+8muWvrOW6piAqIOWvrOmrmOavlFxuICAgICAgICAgICAgOiB2dzEwMCAqIHBvcnRyYWl0UmF0aW87ICAvLyDnm7TlkJHvvJrlr6zluqYgKiDpq5jlr6zmr5RcblxuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIFN0ZXAgNDog6KiI566X5a+m6Zqb6YKK55WM5bC65a+477yI5L2/55SoIE1hdGgubWluIOaooeaTrCBDU1MgbWluKCnvvIlcbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBDaHJvbWUgNzkg5omN5pSv5o+0IENTUyBtaW4oKSDlh73mlbjvvIzmiYDku6XlnKggSmF2YVNjcmlwdCDkuK3oqIjnrpdcbiAgICAgICAgY29uc3QgYm91bmRhcnlXaWR0aCA9IE1hdGgubWluKHZ3MTAwLCBib3VuZGFyeU1heFdpZHRoKTtcbiAgICAgICAgY29uc3QgYm91bmRhcnlIZWlnaHQgPSBNYXRoLm1pbih2aDEwMCwgYm91bmRhcnlNYXhIZWlnaHQpO1xuXG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgLy8gU3RlcCA1OiDoqIjnrpcgcHgydncg6L2J5o+b5q+U5L6LXG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgLy8g5qmr5ZCR5qih5byP5L2/55SoIGRlc2lnbi1oZWlnaHQg5L2c54K65Z+65rqW77yM55u05ZCR5qih5byP5L2/55SoIGRlc2lnbi13aWR0aCDkvZzngrrln7rmupZcbiAgICAgICAgY29uc3QgZGVzaWduQmFzZVdpZHRoID0gaXNMYW5kc2NhcGUgPyBkZXNpZ25IZWlnaHQgOiBkZXNpZ25XaWR0aDtcbiAgICAgICAgY29uc3QgcHgydndSYXRpbyA9IGJvdW5kYXJ5V2lkdGggLyBkZXNpZ25CYXNlV2lkdGg7XG5cbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBTdGVwIDY6IOioreWumiBDU1Mg6K6K5pW4XG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgaG9zdEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYm91bmRhcnktd2lkdGgnLCBgJHtib3VuZGFyeVdpZHRofXB4YCk7XG4gICAgICAgIGhvc3RFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWJvdW5kYXJ5LWhlaWdodCcsIGAke2JvdW5kYXJ5SGVpZ2h0fXB4YCk7XG4gICAgICAgIGhvc3RFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXB4MnZ3LXJhdGlvJywgYCR7cHgydndSYXRpb31gKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiYm91bmRhcnktd3JhcHBlclwiXG4gIFtjbGFzcy5maXhlZC1jZW50ZXJdPVwiaXNGaXhlZENlbnRlclwiXG4gIFtjbGFzcy5wb2ludGVyRXZlbnRzTm9uZV09XCJwb2ludGVyRXZlbnRzTm9uZVwiXG4gIFtzdHlsZV09XCJmb3J3YXJkU3R5bGVcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
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
|