@ng-nest/ui 15.0.12 → 15.0.14
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/anchor/anchor-inner.component.d.ts +6 -0
- package/anchor/anchor.component.d.ts +5 -2
- package/anchor/anchor.module.d.ts +5 -4
- package/anchor/anchor.property.d.ts +13 -0
- package/anchor/public-api.d.ts +1 -0
- package/core/config/config.d.ts +2 -0
- package/core/functions/date.d.ts +3 -0
- package/core/functions/parent-path.d.ts +1 -0
- package/core/functions/public-api.d.ts +1 -0
- package/date-picker/date-picker-portal.component.d.ts +7 -2
- package/date-picker/date-picker.property.d.ts +87 -6
- package/date-picker/date-range-portal.component.d.ts +6 -2
- package/date-picker/picker-date.component.d.ts +6 -0
- package/date-picker/picker-month.component.d.ts +1 -0
- package/date-picker/picker-year.component.d.ts +1 -0
- package/esm2020/anchor/anchor-inner.component.mjs +17 -0
- package/esm2020/anchor/anchor.component.mjs +25 -11
- package/esm2020/anchor/anchor.module.mjs +6 -5
- package/esm2020/anchor/anchor.property.mjs +18 -1
- package/esm2020/anchor/public-api.mjs +2 -1
- package/esm2020/core/config/config.mjs +1 -1
- package/esm2020/core/functions/date.mjs +73 -1
- package/esm2020/core/functions/parent-path.mjs +10 -0
- package/esm2020/core/functions/public-api.mjs +2 -1
- package/esm2020/date-picker/date-picker-portal.component.mjs +34 -6
- package/esm2020/date-picker/date-picker.component.mjs +14 -4
- package/esm2020/date-picker/date-picker.property.mjs +20 -6
- package/esm2020/date-picker/date-range-portal.component.mjs +33 -18
- package/esm2020/date-picker/date-range.component.mjs +24 -7
- package/esm2020/date-picker/picker-date.component.mjs +54 -6
- package/esm2020/date-picker/picker-month.component.mjs +13 -4
- package/esm2020/date-picker/picker-year.component.mjs +15 -4
- package/esm2020/i18n/i18n.property.mjs +1 -1
- package/esm2020/i18n/languages/en_GB.mjs +6 -2
- package/esm2020/i18n/languages/en_US.mjs +6 -2
- package/esm2020/i18n/languages/zh_CN.mjs +6 -2
- package/esm2020/i18n/languages/zh_TW.mjs +6 -2
- package/esm2020/list/list-option.component.mjs +2 -2
- package/esm2020/list/list.component.mjs +2 -2
- package/esm2020/slider/slider.component.mjs +3 -3
- package/esm2020/slider/slider.property.mjs +8 -2
- package/esm2020/table/table-body.component.mjs +6 -6
- package/esm2020/table/table.component.mjs +4 -3
- package/esm2020/table/table.property.mjs +9 -2
- package/esm2020/time-picker/time-picker-frame.component.mjs +48 -14
- package/esm2020/time-picker/time-picker-portal.component.mjs +3 -3
- package/esm2020/time-picker/time-picker.component.mjs +2 -1
- package/esm2020/time-picker/time-picker.property.mjs +4 -2
- package/esm2020/transfer/transfer.component.mjs +2 -2
- package/esm2020/tree/tree-node.component.mjs +98 -15
- package/esm2020/tree/tree.component.mjs +126 -29
- package/esm2020/tree/tree.module.mjs +31 -4
- package/esm2020/tree/tree.property.mjs +37 -3
- package/esm2020/tree/tree.service.mjs +77 -0
- package/esm2020/tree-file/tree-file.component.mjs +14 -3
- package/fesm2015/ng-nest-ui-anchor.mjs +60 -15
- package/fesm2015/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-core.mjs +83 -1
- package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-date-picker.mjs +193 -42
- package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-i18n.mjs +20 -4
- package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-list.mjs +4 -4
- package/fesm2015/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-slider.mjs +9 -3
- package/fesm2015/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-table.mjs +16 -8
- package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-time-picker.mjs +53 -16
- package/fesm2015/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-transfer.mjs +1 -1
- package/fesm2015/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-tree-file.mjs +13 -2
- package/fesm2015/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-tree.mjs +359 -45
- package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-anchor.mjs +60 -15
- package/fesm2020/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-core.mjs +83 -1
- package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-date-picker.mjs +193 -42
- package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-i18n.mjs +20 -4
- package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-list.mjs +4 -4
- package/fesm2020/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-slider.mjs +9 -3
- package/fesm2020/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-table.mjs +16 -8
- package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-time-picker.mjs +53 -16
- package/fesm2020/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-transfer.mjs +1 -1
- package/fesm2020/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-tree-file.mjs +13 -2
- package/fesm2020/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-tree.mjs +356 -45
- package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
- package/i18n/i18n.property.d.ts +3 -0
- package/i18n/languages/en_GB.d.ts +4 -0
- package/i18n/languages/en_US.d.ts +4 -0
- package/i18n/languages/zh_CN.d.ts +4 -0
- package/i18n/languages/zh_TW.d.ts +4 -0
- package/package.json +1 -1
- package/slider/slider.property.d.ts +6 -1
- package/table/table.component.d.ts +1 -1
- package/table/table.property.d.ts +25 -4
- package/time-picker/time-picker-frame.component.d.ts +6 -2
- package/time-picker/time-picker-portal.component.d.ts +2 -1
- package/time-picker/time-picker.property.d.ts +32 -1
- package/transfer/transfer.component.d.ts +2 -4
- package/tree/tree-node.component.d.ts +35 -4
- package/tree/tree.component.d.ts +24 -3
- package/tree/tree.module.d.ts +8 -7
- package/tree/tree.property.d.ts +63 -1
- package/tree/tree.service.d.ts +10 -0
- package/tree-file/tree-file.component.d.ts +1 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { XAnchorInnerProperty } from './anchor.property';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class XAnchorInnerComponent extends XAnchorInnerProperty {
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<XAnchorInnerComponent, never>;
|
|
5
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<XAnchorInnerComponent, "x-anchor-inner", never, {}, {}, never, ["*"], false, never>;
|
|
6
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { OnInit, Renderer2, ElementRef, ChangeDetectorRef, AfterViewInit, OnDestroy } from '@angular/core';
|
|
1
|
+
import { OnInit, Renderer2, ElementRef, ChangeDetectorRef, AfterViewInit, OnDestroy, AfterContentChecked } from '@angular/core';
|
|
2
2
|
import { XAnchorProperty } from './anchor.property';
|
|
3
3
|
import { XConfigService } from '@ng-nest/ui/core';
|
|
4
4
|
import { XSliderNode } from '@ng-nest/ui/slider';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class XAnchorComponent extends XAnchorProperty implements OnInit, AfterViewInit, OnDestroy {
|
|
7
|
+
export declare class XAnchorComponent extends XAnchorProperty implements OnInit, AfterViewInit, OnDestroy, AfterContentChecked {
|
|
7
8
|
renderer: Renderer2;
|
|
8
9
|
elementRef: ElementRef<HTMLElement>;
|
|
9
10
|
cdr: ChangeDetectorRef;
|
|
@@ -15,10 +16,12 @@ export declare class XAnchorComponent extends XAnchorProperty implements OnInit,
|
|
|
15
16
|
activatedIndex: number;
|
|
16
17
|
sliderHeight?: number;
|
|
17
18
|
document: Document;
|
|
19
|
+
contentChange: Subject<unknown>;
|
|
18
20
|
private _scrolling;
|
|
19
21
|
private _fontSize;
|
|
20
22
|
private _unSubject;
|
|
21
23
|
constructor(renderer: Renderer2, elementRef: ElementRef<HTMLElement>, cdr: ChangeDetectorRef, doc: any, configService: XConfigService);
|
|
24
|
+
ngAfterContentChecked(): void;
|
|
22
25
|
ngOnInit(): void;
|
|
23
26
|
ngAfterViewInit(): void;
|
|
24
27
|
ngOnDestroy(): void;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
import * as i1 from "./anchor.component";
|
|
3
3
|
import * as i2 from "./anchor.property";
|
|
4
|
-
import * as i3 from "
|
|
5
|
-
import * as i4 from "@
|
|
6
|
-
import * as i5 from "@ng-nest/ui/
|
|
4
|
+
import * as i3 from "./anchor-inner.component";
|
|
5
|
+
import * as i4 from "@angular/common";
|
|
6
|
+
import * as i5 from "@ng-nest/ui/affix";
|
|
7
|
+
import * as i6 from "@ng-nest/ui/slider";
|
|
7
8
|
export declare class XAnchorModule {
|
|
8
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<XAnchorModule, never>;
|
|
9
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<XAnchorModule, [typeof i1.XAnchorComponent, typeof i2.XAnchorProperty], [typeof
|
|
10
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<XAnchorModule, [typeof i1.XAnchorComponent, typeof i2.XAnchorProperty, typeof i3.XAnchorInnerComponent, typeof i2.XAnchorInnerProperty], [typeof i4.CommonModule, typeof i5.XAffixModule, typeof i6.XSliderModule], [typeof i1.XAnchorComponent, typeof i3.XAnchorInnerComponent]>;
|
|
10
11
|
static ɵinj: i0.ɵɵInjectorDeclaration<XAnchorModule>;
|
|
11
12
|
}
|
|
@@ -33,6 +33,19 @@ export declare class XAnchorProperty extends XProperty {
|
|
|
33
33
|
static ɵfac: i0.ɵɵFactoryDeclaration<XAnchorProperty, never>;
|
|
34
34
|
static ɵcmp: i0.ɵɵComponentDeclaration<XAnchorProperty, "ng-component", never, { "scroll": "scroll"; "affixTop": "affixTop"; "layout": "layout"; "justify": "justify"; }, {}, never, never, false, never>;
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Anchor inner
|
|
38
|
+
* @selector x-anchor-inner
|
|
39
|
+
* @decorator component
|
|
40
|
+
*/
|
|
41
|
+
export declare const XAnchorInnerPrefix = "x-anchor-inner";
|
|
42
|
+
/**
|
|
43
|
+
* Anchor inner Property
|
|
44
|
+
*/
|
|
45
|
+
export declare class XAnchorInnerProperty {
|
|
46
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<XAnchorInnerProperty, never>;
|
|
47
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<XAnchorInnerProperty, "ng-component", never, {}, {}, never, never, false, never>;
|
|
48
|
+
}
|
|
36
49
|
/**
|
|
37
50
|
* Anchor Node
|
|
38
51
|
*/
|
package/anchor/public-api.d.ts
CHANGED
package/core/config/config.d.ts
CHANGED
|
@@ -425,6 +425,7 @@ export interface XSliderConfig {
|
|
|
425
425
|
animated?: XBoolean;
|
|
426
426
|
size?: XSize;
|
|
427
427
|
showExpand?: XBoolean;
|
|
428
|
+
autoShowArrow?: XBoolean;
|
|
428
429
|
}
|
|
429
430
|
export interface XSliderSelectConfig {
|
|
430
431
|
}
|
|
@@ -501,6 +502,7 @@ export interface XTreeConfig {
|
|
|
501
502
|
nodeAlignItems?: XAlign;
|
|
502
503
|
virtualScroll?: boolean;
|
|
503
504
|
onlyLeaf?: boolean;
|
|
505
|
+
showLine?: boolean;
|
|
504
506
|
}
|
|
505
507
|
export interface XTextareaConfig {
|
|
506
508
|
clearable?: XBoolean;
|
package/core/functions/date.d.ts
CHANGED
|
@@ -7,3 +7,6 @@ export declare function XAddHours(date: XDate, amount: number): Date;
|
|
|
7
7
|
export declare function XAddDays(date: XDate, amount: number): Date;
|
|
8
8
|
export declare function XAddMonths(date: XDate, amount: number): Date;
|
|
9
9
|
export declare function XAddYears(date: XDate, amount: number): Date;
|
|
10
|
+
export declare function XDateWeek(date: XDate): number | undefined;
|
|
11
|
+
export declare function XDateWeekYear(date: XDate): number | undefined;
|
|
12
|
+
export declare function XDateYearWeek(date: XDate): string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function XParentPath(ele: HTMLElement): string[];
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ChangeDetectorRef, OnInit, OnDestroy, AfterViewInit } from '@angular/core';
|
|
2
|
-
import { XDatePickerPreset, XDatePickerType } from './date-picker.property';
|
|
2
|
+
import { XDatePickerDisabledDate, XDatePickerDisabledTime, XDatePickerPreset, XDatePickerType } from './date-picker.property';
|
|
3
3
|
import { XPositionTopBottom, XTemplate } from '@ng-nest/ui/core';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
5
|
import { DatePipe, LowerCasePipe } from '@angular/common';
|
|
6
6
|
import { XI18nService, XI18nDatePicker } from '@ng-nest/ui/i18n';
|
|
7
7
|
import { XInputComponent } from '@ng-nest/ui/input';
|
|
8
|
+
import { XTimePickerFrameComponent } from '@ng-nest/ui/time-picker';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export declare class XDatePickerPortalComponent implements OnInit, OnDestroy, AfterViewInit {
|
|
10
11
|
datePipe: DatePipe;
|
|
@@ -16,6 +17,7 @@ export declare class XDatePickerPortalComponent implements OnInit, OnDestroy, Af
|
|
|
16
17
|
toState: any;
|
|
17
18
|
}): void;
|
|
18
19
|
start(): void;
|
|
20
|
+
timePickerFrame?: XTimePickerFrameComponent;
|
|
19
21
|
type: XDatePickerType;
|
|
20
22
|
display: Date;
|
|
21
23
|
model: Date;
|
|
@@ -27,13 +29,16 @@ export declare class XDatePickerPortalComponent implements OnInit, OnDestroy, Af
|
|
|
27
29
|
destroyPortal: Function;
|
|
28
30
|
nodeEmit: (date: Date, sure?: boolean) => void;
|
|
29
31
|
locale: XI18nDatePicker;
|
|
30
|
-
time: number;
|
|
32
|
+
time: number | null;
|
|
31
33
|
preset: XDatePickerPreset[];
|
|
32
34
|
extraFooter?: XTemplate;
|
|
33
35
|
inputCom: XInputComponent;
|
|
36
|
+
disabledDate: XDatePickerDisabledDate;
|
|
37
|
+
disabledTime: XDatePickerDisabledTime;
|
|
34
38
|
private _type;
|
|
35
39
|
private _unSubject;
|
|
36
40
|
get isDatePicker(): boolean;
|
|
41
|
+
get sureDisabled(): boolean;
|
|
37
42
|
constructor(datePipe: DatePipe, lowerCasePipe: LowerCasePipe, cdr: ChangeDetectorRef, i18n: XI18nService);
|
|
38
43
|
ngOnInit(): void;
|
|
39
44
|
ngAfterViewInit(): void;
|
|
@@ -52,13 +52,23 @@ export declare class XDatePickerProperty extends XControlValueAccessor<any> impl
|
|
|
52
52
|
* @en_US Footer
|
|
53
53
|
*/
|
|
54
54
|
extraFooter?: XTemplate;
|
|
55
|
+
/**
|
|
56
|
+
* @zh_CN 禁用的日期
|
|
57
|
+
* @en_US Disabled date
|
|
58
|
+
*/
|
|
59
|
+
disabledDate?: XDatePickerDisabledDate;
|
|
60
|
+
/**
|
|
61
|
+
* @zh_CN 禁用的时间
|
|
62
|
+
* @en_US Disabled time
|
|
63
|
+
*/
|
|
64
|
+
disabledTime?: XDatePickerDisabledTime;
|
|
55
65
|
/**
|
|
56
66
|
* @zh_CN 节点点击的事件
|
|
57
67
|
* @en_US Node click event
|
|
58
68
|
*/
|
|
59
69
|
nodeEmit: EventEmitter<number>;
|
|
60
70
|
static ɵfac: i0.ɵɵFactoryDeclaration<XDatePickerProperty, never>;
|
|
61
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<XDatePickerProperty, "ng-component", never, { "type": "type"; "format": "format"; "clearable": "clearable"; "placement": "placement"; "size": "size"; "bordered": "bordered"; "preset": "preset"; "extraFooter": "extraFooter"; }, { "nodeEmit": "nodeEmit"; }, never, never, false, never>;
|
|
71
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<XDatePickerProperty, "ng-component", never, { "type": "type"; "format": "format"; "clearable": "clearable"; "placement": "placement"; "size": "size"; "bordered": "bordered"; "preset": "preset"; "extraFooter": "extraFooter"; "disabledDate": "disabledDate"; "disabledTime": "disabledTime"; }, { "nodeEmit": "nodeEmit"; }, never, never, false, never>;
|
|
62
72
|
}
|
|
63
73
|
/**
|
|
64
74
|
* DatePicker Option
|
|
@@ -166,13 +176,23 @@ export declare class XDateRangeProperty extends XControlValueAccessor<any> imple
|
|
|
166
176
|
* @en_US Footer
|
|
167
177
|
*/
|
|
168
178
|
extraFooter?: XTemplate;
|
|
179
|
+
/**
|
|
180
|
+
* @zh_CN 禁用的日期
|
|
181
|
+
* @en_US Disabled date
|
|
182
|
+
*/
|
|
183
|
+
disabledDate?: XDatePickerDisabledDate;
|
|
184
|
+
/**
|
|
185
|
+
* @zh_CN 禁用的时间
|
|
186
|
+
* @en_US Disabled time
|
|
187
|
+
*/
|
|
188
|
+
disabledTime?: XDatePickerDisabledTime;
|
|
169
189
|
/**
|
|
170
190
|
* @zh_CN 节点点击的事件
|
|
171
191
|
* @en_US Node click event
|
|
172
192
|
*/
|
|
173
193
|
nodeEmit: EventEmitter<number[]>;
|
|
174
194
|
static ɵfac: i0.ɵɵFactoryDeclaration<XDateRangeProperty, never>;
|
|
175
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<XDateRangeProperty, "ng-component", never, { "type": "type"; "format": "format"; "clearable": "clearable"; "placement": "placement"; "size": "size"; "bordered": "bordered"; "preset": "preset"; "placeholder": "placeholder"; "extraFooter": "extraFooter"; }, { "nodeEmit": "nodeEmit"; }, never, never, false, never>;
|
|
195
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<XDateRangeProperty, "ng-component", never, { "type": "type"; "format": "format"; "clearable": "clearable"; "placement": "placement"; "size": "size"; "bordered": "bordered"; "preset": "preset"; "placeholder": "placeholder"; "extraFooter": "extraFooter"; "disabledDate": "disabledDate"; "disabledTime": "disabledTime"; }, { "nodeEmit": "nodeEmit"; }, never, never, false, never>;
|
|
176
196
|
}
|
|
177
197
|
/**
|
|
178
198
|
* DateRange Option
|
|
@@ -190,6 +210,37 @@ export interface XDateRangeOption extends XFormOption {
|
|
|
190
210
|
*/
|
|
191
211
|
placeholder?: string[];
|
|
192
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
* @zh_CN 禁用日期的自定义类型
|
|
215
|
+
* @en_US 禁用日期的自定义类型
|
|
216
|
+
*/
|
|
217
|
+
export declare type XDatePickerDisabledDate = (current: Date) => boolean;
|
|
218
|
+
/**
|
|
219
|
+
* @zh_CN 禁用时间的自定义类型
|
|
220
|
+
* @en_US 禁用时间的自定义类型
|
|
221
|
+
*/
|
|
222
|
+
export declare type XDatePickerDisabledTime = (type?: XDatePickerRangType) => XDatePickerDisabledTimeFn;
|
|
223
|
+
/**
|
|
224
|
+
* @zh_CN 禁用时间的自定义函数
|
|
225
|
+
* @en_US 禁用时间的自定义函数
|
|
226
|
+
*/
|
|
227
|
+
export declare type XDatePickerDisabledTimeFn = {
|
|
228
|
+
/**
|
|
229
|
+
* @zh_CN 禁用小时的自定义函数
|
|
230
|
+
* @en_US 禁用小时的自定义函数
|
|
231
|
+
*/
|
|
232
|
+
disabledHours?: () => number[];
|
|
233
|
+
/**
|
|
234
|
+
* @zh_CN 禁用分钟的自定义函数
|
|
235
|
+
* @en_US 禁用分钟的自定义函数
|
|
236
|
+
*/
|
|
237
|
+
disabledMinutes?: () => number[];
|
|
238
|
+
/**
|
|
239
|
+
* @zh_CN 禁用秒的自定义函数
|
|
240
|
+
* @en_US 禁用秒的自定义函数
|
|
241
|
+
*/
|
|
242
|
+
disabledSeconds?: () => number[];
|
|
243
|
+
};
|
|
193
244
|
/**
|
|
194
245
|
* @zh_CN 快捷选择按钮
|
|
195
246
|
* @en_US Quick selection button
|
|
@@ -216,7 +267,7 @@ export interface XDateRangePreset extends XIdentityProperty {
|
|
|
216
267
|
* @zh_CN 日期选择类型
|
|
217
268
|
* @en_US Date selection type
|
|
218
269
|
*/
|
|
219
|
-
export declare type XDatePickerType = 'date' | 'month' | 'year' | 'date-time' | 'date-hour' | 'date-minute';
|
|
270
|
+
export declare type XDatePickerType = 'date' | 'week' | 'month' | 'year' | 'date-time' | 'date-hour' | 'date-minute';
|
|
220
271
|
/**
|
|
221
272
|
* @zh_CN 日期数据类型
|
|
222
273
|
* @en_US Date data type
|
|
@@ -309,6 +360,11 @@ export declare class XPickerDateProperty extends XProperty {
|
|
|
309
360
|
* @en_US The current choice is the start / end date
|
|
310
361
|
*/
|
|
311
362
|
rangeType: XDatePickerRangType;
|
|
363
|
+
/**
|
|
364
|
+
* @zh_CN 禁用的日期
|
|
365
|
+
* @en_US Disabled date
|
|
366
|
+
*/
|
|
367
|
+
disabledDate?: XDatePickerDisabledDate;
|
|
312
368
|
/**
|
|
313
369
|
* @zh_CN 选择类型
|
|
314
370
|
* @en_US Select type
|
|
@@ -355,7 +411,7 @@ export declare class XPickerDateProperty extends XProperty {
|
|
|
355
411
|
*/
|
|
356
412
|
rangeDateClick: EventEmitter<XDateCell>;
|
|
357
413
|
static ɵfac: i0.ɵɵFactoryDeclaration<XPickerDateProperty, never>;
|
|
358
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<XPickerDateProperty, "ng-component", never, { "type": "type"; "display": "display"; "model": "model"; "dateTemp": "dateTemp"; "showHeader": "showHeader"; "rangePicker": "rangePicker"; "lastYearBtn": "lastYearBtn"; "lastMonthBtn": "lastMonthBtn"; "nextYearBtn": "nextYearBtn"; "nextMonthBtn": "nextMonthBtn"; "rangeHover": "rangeHover"; "rangeValue": "rangeValue"; "rangeType": "rangeType"; }, { "typeChange": "typeChange"; "modelChange": "modelChange"; "rangeChange": "rangeChange"; "yearChange": "yearChange"; "monthChange": "monthChange"; "displayChange": "displayChange"; "rangeTdMouseenter": "rangeTdMouseenter"; "rangeTdMouseleave": "rangeTdMouseleave"; "rangeDateClick": "rangeDateClick"; }, never, never, false, never>;
|
|
414
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<XPickerDateProperty, "ng-component", never, { "type": "type"; "display": "display"; "model": "model"; "dateTemp": "dateTemp"; "showHeader": "showHeader"; "rangePicker": "rangePicker"; "lastYearBtn": "lastYearBtn"; "lastMonthBtn": "lastMonthBtn"; "nextYearBtn": "nextYearBtn"; "nextMonthBtn": "nextMonthBtn"; "rangeHover": "rangeHover"; "rangeValue": "rangeValue"; "rangeType": "rangeType"; "disabledDate": "disabledDate"; }, { "typeChange": "typeChange"; "modelChange": "modelChange"; "rangeChange": "rangeChange"; "yearChange": "yearChange"; "monthChange": "monthChange"; "displayChange": "displayChange"; "rangeTdMouseenter": "rangeTdMouseenter"; "rangeTdMouseleave": "rangeTdMouseleave"; "rangeDateClick": "rangeDateClick"; }, never, never, false, never>;
|
|
359
415
|
}
|
|
360
416
|
/**
|
|
361
417
|
* @zh_CN 单个日期数据对象
|
|
@@ -467,6 +523,21 @@ export interface XDateCell {
|
|
|
467
523
|
* @en_US Current selected date
|
|
468
524
|
*/
|
|
469
525
|
isActive?: boolean;
|
|
526
|
+
/**
|
|
527
|
+
* @zh_CN 禁用日期
|
|
528
|
+
* @en_US Disabled date
|
|
529
|
+
*/
|
|
530
|
+
isDisabled?: boolean;
|
|
531
|
+
/**
|
|
532
|
+
* @zh_CN 类型
|
|
533
|
+
* @en_US Type
|
|
534
|
+
*/
|
|
535
|
+
type?: XDatePickerType;
|
|
536
|
+
/**
|
|
537
|
+
* @zh_CN 第几周
|
|
538
|
+
* @en_US Week
|
|
539
|
+
*/
|
|
540
|
+
week?: number;
|
|
470
541
|
}
|
|
471
542
|
/**
|
|
472
543
|
* @zh_CN 当前选择的是开始/结束日期
|
|
@@ -533,6 +604,11 @@ export declare class XPickerMonthProperty extends XProperty {
|
|
|
533
604
|
* @en_US The current choice is the start / end date
|
|
534
605
|
*/
|
|
535
606
|
rangeType: XDatePickerRangType;
|
|
607
|
+
/**
|
|
608
|
+
* @zh_CN 禁用的日期
|
|
609
|
+
* @en_US Disabled date
|
|
610
|
+
*/
|
|
611
|
+
disabledDate?: XDatePickerDisabledDate;
|
|
536
612
|
/**
|
|
537
613
|
* @zh_CN 选中的事件
|
|
538
614
|
* @en_US Selected event
|
|
@@ -579,7 +655,7 @@ export declare class XPickerMonthProperty extends XProperty {
|
|
|
579
655
|
*/
|
|
580
656
|
rangeDateClick: EventEmitter<XDateCell>;
|
|
581
657
|
static ɵfac: i0.ɵɵFactoryDeclaration<XPickerMonthProperty, never>;
|
|
582
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<XPickerMonthProperty, "ng-component", never, { "type": "type"; "display": "display"; "model": "model"; "monthTemp": "monthTemp"; "showHeader": "showHeader"; "rangePicker": "rangePicker"; "lastYearBtn": "lastYearBtn"; "nextYearBtn": "nextYearBtn"; "rangeValue": "rangeValue"; "rangeType": "rangeType"; }, { "modelChange": "modelChange"; "typeChange": "typeChange"; "rangeChange": "rangeChange"; "yearChange": "yearChange"; "monthChange": "monthChange"; "displayChange": "displayChange"; "rangeTdMouseenter": "rangeTdMouseenter"; "rangeTdMouseleave": "rangeTdMouseleave"; "rangeDateClick": "rangeDateClick"; }, never, never, false, never>;
|
|
658
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<XPickerMonthProperty, "ng-component", never, { "type": "type"; "display": "display"; "model": "model"; "monthTemp": "monthTemp"; "showHeader": "showHeader"; "rangePicker": "rangePicker"; "lastYearBtn": "lastYearBtn"; "nextYearBtn": "nextYearBtn"; "rangeValue": "rangeValue"; "rangeType": "rangeType"; "disabledDate": "disabledDate"; }, { "modelChange": "modelChange"; "typeChange": "typeChange"; "rangeChange": "rangeChange"; "yearChange": "yearChange"; "monthChange": "monthChange"; "displayChange": "displayChange"; "rangeTdMouseenter": "rangeTdMouseenter"; "rangeTdMouseleave": "rangeTdMouseleave"; "rangeDateClick": "rangeDateClick"; }, never, never, false, never>;
|
|
583
659
|
}
|
|
584
660
|
/**
|
|
585
661
|
* PickerYear
|
|
@@ -641,6 +717,11 @@ export declare class XPickerYearProperty extends XProperty {
|
|
|
641
717
|
* @en_US The current choice is the start / end date
|
|
642
718
|
*/
|
|
643
719
|
rangeType: XDatePickerRangType;
|
|
720
|
+
/**
|
|
721
|
+
* @zh_CN 禁用的日期
|
|
722
|
+
* @en_US Disabled date
|
|
723
|
+
*/
|
|
724
|
+
disabledDate?: XDatePickerDisabledDate;
|
|
644
725
|
/**
|
|
645
726
|
* @zh_CN 选中的事件
|
|
646
727
|
* @en_US Selected event
|
|
@@ -692,5 +773,5 @@ export declare class XPickerYearProperty extends XProperty {
|
|
|
692
773
|
*/
|
|
693
774
|
rangeDateClick: EventEmitter<XDateCell>;
|
|
694
775
|
static ɵfac: i0.ɵɵFactoryDeclaration<XPickerYearProperty, never>;
|
|
695
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<XPickerYearProperty, "ng-component", never, { "type": "type"; "display": "display"; "model": "model"; "yearTemp": "yearTemp"; "showHeader": "showHeader"; "rangePicker": "rangePicker"; "lastYearBtn": "lastYearBtn"; "nextYearBtn": "nextYearBtn"; "rangeValue": "rangeValue"; "rangeType": "rangeType"; }, { "modelChange": "modelChange"; "typeChange": "typeChange"; "startChange": "startChange"; "rangeChange": "rangeChange"; "yearChange": "yearChange"; "monthChange": "monthChange"; "displayChange": "displayChange"; "rangeTdMouseenter": "rangeTdMouseenter"; "rangeTdMouseleave": "rangeTdMouseleave"; "rangeDateClick": "rangeDateClick"; }, never, never, false, never>;
|
|
776
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<XPickerYearProperty, "ng-component", never, { "type": "type"; "display": "display"; "model": "model"; "yearTemp": "yearTemp"; "showHeader": "showHeader"; "rangePicker": "rangePicker"; "lastYearBtn": "lastYearBtn"; "nextYearBtn": "nextYearBtn"; "rangeValue": "rangeValue"; "rangeType": "rangeType"; "disabledDate": "disabledDate"; }, { "modelChange": "modelChange"; "typeChange": "typeChange"; "startChange": "startChange"; "rangeChange": "rangeChange"; "yearChange": "yearChange"; "monthChange": "monthChange"; "displayChange": "displayChange"; "rangeTdMouseenter": "rangeTdMouseenter"; "rangeTdMouseleave": "rangeTdMouseleave"; "rangeDateClick": "rangeDateClick"; }, never, never, false, never>;
|
|
696
777
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectorRef, OnInit, OnDestroy, AfterViewInit } from '@angular/core';
|
|
2
|
-
import { XDatePickerType, XDateCell, XDateRangePreset } from './date-picker.property';
|
|
2
|
+
import { XDatePickerType, XDateCell, XDateRangePreset, XDatePickerDisabledDate, XDatePickerDisabledTime } from './date-picker.property';
|
|
3
3
|
import { XPositionTopBottom, XTemplate } from '@ng-nest/ui/core';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
5
|
import { DatePipe, LowerCasePipe } from '@angular/common';
|
|
@@ -7,6 +7,7 @@ import { XI18nService, XI18nDatePicker } from '@ng-nest/ui/i18n';
|
|
|
7
7
|
import { XPickerMonthComponent } from './picker-month.component';
|
|
8
8
|
import { XPickerYearComponent } from './picker-year.component';
|
|
9
9
|
import { XPickerDateComponent } from './picker-date.component';
|
|
10
|
+
import { XTimePickerFrameComponent } from '@ng-nest/ui/time-picker';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
export declare class XDateRangePortalComponent implements OnInit, OnDestroy, AfterViewInit {
|
|
12
13
|
datePipe: DatePipe;
|
|
@@ -20,6 +21,7 @@ export declare class XDateRangePortalComponent implements OnInit, OnDestroy, Aft
|
|
|
20
21
|
start(): void;
|
|
21
22
|
startPicker: XPickerDateComponent | XPickerMonthComponent | XPickerYearComponent;
|
|
22
23
|
endPicker: XPickerDateComponent | XPickerMonthComponent | XPickerYearComponent;
|
|
24
|
+
timePickerFrame?: XTimePickerFrameComponent;
|
|
23
25
|
type: XDatePickerType;
|
|
24
26
|
display: Date;
|
|
25
27
|
model: Date;
|
|
@@ -36,6 +38,8 @@ export declare class XDateRangePortalComponent implements OnInit, OnDestroy, Aft
|
|
|
36
38
|
animating: Function;
|
|
37
39
|
closePortal: Function;
|
|
38
40
|
destroyPortal: Function;
|
|
41
|
+
disabledDate: XDatePickerDisabledDate;
|
|
42
|
+
disabledTime: XDatePickerDisabledTime;
|
|
39
43
|
nodeEmit: (date: Date[], close?: boolean) => void;
|
|
40
44
|
startNodeEmit: (date: Date | null, close?: boolean, isDatePicker?: boolean) => void;
|
|
41
45
|
endNodeEmit: (date: Date | null, close?: boolean, isDatePicker?: boolean) => void;
|
|
@@ -48,8 +52,8 @@ export declare class XDateRangePortalComponent implements OnInit, OnDestroy, Aft
|
|
|
48
52
|
preset: XDateRangePreset[];
|
|
49
53
|
extraFooter?: XTemplate;
|
|
50
54
|
private _unSubject;
|
|
51
|
-
get timeSureDisabled(): boolean;
|
|
52
55
|
get isDatePicker(): boolean;
|
|
56
|
+
get sureDisabled(): boolean;
|
|
53
57
|
constructor(datePipe: DatePipe, lowerCasePipe: LowerCasePipe, cdr: ChangeDetectorRef, i18n: XI18nService);
|
|
54
58
|
ngOnInit(): void;
|
|
55
59
|
ngAfterViewInit(): void;
|
|
@@ -20,14 +20,20 @@ export declare class XPickerDateComponent extends XPickerDateProperty implements
|
|
|
20
20
|
private _unSubject;
|
|
21
21
|
get rangeStart(): number | "" | null;
|
|
22
22
|
get rangeEnd(): number | "" | null;
|
|
23
|
+
isWeekRange(): import("@ng-nest/ui/core").XBoolean | undefined;
|
|
24
|
+
isDisabled(date: Date): boolean;
|
|
23
25
|
constructor(renderer: Renderer2, datePipe: DatePipe, lowerCasePipe: LowerCasePipe, cdr: ChangeDetectorRef, configService: XConfigService, i18n: XI18nService);
|
|
24
26
|
ngOnInit(): void;
|
|
25
27
|
ngOnChanges(simples: SimpleChanges): void;
|
|
26
28
|
ngOnDestroy(): void;
|
|
27
29
|
init(): void;
|
|
30
|
+
isWeekActive(week: XDateCell[]): boolean;
|
|
31
|
+
isStartWeek(week: XDateCell[]): boolean | undefined;
|
|
32
|
+
isEndWeek(week: XDateCell[]): boolean | undefined;
|
|
28
33
|
isStartDate(date: Date): boolean | undefined;
|
|
29
34
|
isEndDate(date: Date): boolean | undefined;
|
|
30
35
|
setDatesState(cell: XDateCell): void;
|
|
36
|
+
setTitles(): void;
|
|
31
37
|
onTdMouseenter(cell: XDateCell, isEmit?: boolean): void;
|
|
32
38
|
onTdMouseleave(cell: XDateCell, isEmit?: boolean): void;
|
|
33
39
|
clearState(...cells: XDateCell[]): void;
|
|
@@ -18,6 +18,7 @@ export declare class XPickerMonthComponent extends XPickerMonthProperty implemen
|
|
|
18
18
|
private _unSubject;
|
|
19
19
|
get rangeStart(): number | "" | null;
|
|
20
20
|
get rangeEnd(): number | "" | null;
|
|
21
|
+
isDisabled(date: Date): boolean;
|
|
21
22
|
constructor(renderer: Renderer2, datePipe: DatePipe, lowerCasePipe: LowerCasePipe, cdr: ChangeDetectorRef, configService: XConfigService, i18n: XI18nService);
|
|
22
23
|
ngOnInit(): void;
|
|
23
24
|
ngOnChanges(simples: SimpleChanges): void;
|
|
@@ -15,6 +15,7 @@ export declare class XPickerYearComponent extends XPickerYearProperty implements
|
|
|
15
15
|
end: number;
|
|
16
16
|
get rangeStart(): number | "" | null;
|
|
17
17
|
get rangeEnd(): number | "" | null;
|
|
18
|
+
isDisabled(date: Date): boolean;
|
|
18
19
|
constructor(renderer: Renderer2, cdr: ChangeDetectorRef, datePipe: DatePipe, configService: XConfigService);
|
|
19
20
|
ngOnChanges(simples: SimpleChanges): void;
|
|
20
21
|
init(): void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { XAnchorInnerPrefix, XAnchorInnerProperty } from './anchor.property';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class XAnchorInnerComponent extends XAnchorInnerProperty {
|
|
5
|
+
}
|
|
6
|
+
/** @nocollapse */ XAnchorInnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XAnchorInnerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
7
|
+
/** @nocollapse */ XAnchorInnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XAnchorInnerComponent, selector: "x-anchor-inner", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XAnchorInnerComponent, decorators: [{
|
|
9
|
+
type: Component,
|
|
10
|
+
args: [{
|
|
11
|
+
selector: `${XAnchorInnerPrefix}`,
|
|
12
|
+
template: '<ng-content></ng-content>',
|
|
13
|
+
encapsulation: ViewEncapsulation.None,
|
|
14
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
15
|
+
}]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yLWlubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2FuY2hvci9hbmNob3ItaW5uZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBUTdFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxvQkFBb0I7O3FJQUFsRCxxQkFBcUI7eUhBQXJCLHFCQUFxQiw2RUFKdEIsMkJBQTJCOzJGQUkxQixxQkFBcUI7a0JBTmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEdBQUcsa0JBQWtCLEVBQUU7b0JBQ2pDLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYQW5jaG9ySW5uZXJQcmVmaXgsIFhBbmNob3JJbm5lclByb3BlcnR5IH0gZnJvbSAnLi9hbmNob3IucHJvcGVydHknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hBbmNob3JJbm5lclByZWZpeH1gLFxyXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWEFuY2hvcklubmVyQ29tcG9uZW50IGV4dGVuZHMgWEFuY2hvcklubmVyUHJvcGVydHkge31cclxuIl19
|
|
@@ -3,7 +3,7 @@ import { XAnchorPrefix, XAnchorProperty } from './anchor.property';
|
|
|
3
3
|
import { computedStyle, XIsEmpty, reqAnimFrame, XIsNumber, XIsUndefined } from '@ng-nest/ui/core';
|
|
4
4
|
import { DOCUMENT } from '@angular/common';
|
|
5
5
|
import { fromEvent, Subject } from 'rxjs';
|
|
6
|
-
import { throttleTime, takeUntil } from 'rxjs/operators';
|
|
6
|
+
import { throttleTime, takeUntil, distinctUntilChanged } from 'rxjs/operators';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@ng-nest/ui/core";
|
|
9
9
|
import * as i2 from "@angular/common";
|
|
@@ -18,11 +18,15 @@ export class XAnchorComponent extends XAnchorProperty {
|
|
|
18
18
|
this.configService = configService;
|
|
19
19
|
this.sliderData = [];
|
|
20
20
|
this.activatedIndex = 0;
|
|
21
|
+
this.contentChange = new Subject();
|
|
21
22
|
this._scrolling = false;
|
|
22
23
|
this._unSubject = new Subject();
|
|
23
24
|
this.document = doc;
|
|
24
25
|
this._fontSize = parseFloat(computedStyle(this.document.documentElement, 'font-size'));
|
|
25
26
|
}
|
|
27
|
+
ngAfterContentChecked() {
|
|
28
|
+
this.contentChange.next(this.elementRef.nativeElement.innerHTML);
|
|
29
|
+
}
|
|
26
30
|
ngOnInit() {
|
|
27
31
|
this.setClassMap();
|
|
28
32
|
this.setSliderData();
|
|
@@ -30,6 +34,11 @@ export class XAnchorComponent extends XAnchorProperty {
|
|
|
30
34
|
}
|
|
31
35
|
ngAfterViewInit() {
|
|
32
36
|
this.setScroll();
|
|
37
|
+
this.contentChange.pipe(distinctUntilChanged(), takeUntil(this._unSubject)).subscribe(() => {
|
|
38
|
+
this.setSliderData();
|
|
39
|
+
this.setHeight();
|
|
40
|
+
this.cdr.detectChanges();
|
|
41
|
+
});
|
|
33
42
|
}
|
|
34
43
|
ngOnDestroy() {
|
|
35
44
|
this._unSubject.next();
|
|
@@ -74,7 +83,7 @@ export class XAnchorComponent extends XAnchorProperty {
|
|
|
74
83
|
this.cdr.detectChanges();
|
|
75
84
|
}
|
|
76
85
|
setSliderData() {
|
|
77
|
-
this.hElements = this.content.nativeElement.querySelectorAll(':scope> h1,:scope> h2,:scope> h3,:scope> h4,:scope> h5');
|
|
86
|
+
this.hElements = this.content.nativeElement.querySelectorAll(':scope> h1,:scope> h2,:scope> h3,:scope> h4,:scope> h5,:scope> x-anchor-inner> h1,:scope> x-anchor-inner>h2,:scope> x-anchor-inner>h3,:scope> x-anchor-inner>h4,:scope> x-anchor-inner>h5');
|
|
78
87
|
if (this.hElements.length > 0) {
|
|
79
88
|
let list = [];
|
|
80
89
|
this.hElements.forEach((x, i) => {
|
|
@@ -101,12 +110,17 @@ export class XAnchorComponent extends XAnchorProperty {
|
|
|
101
110
|
}
|
|
102
111
|
setHeight() {
|
|
103
112
|
if (this.scroll) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
113
|
+
if (XIsEmpty(this.sliderData)) {
|
|
114
|
+
this.sliderHeight = 0;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
let height = this.scroll.offsetHeight;
|
|
118
|
+
let top = parseFloat(computedStyle(this.scroll, 'padding-top'));
|
|
119
|
+
let borderTop = parseFloat(computedStyle(this.scroll, 'border-top'));
|
|
120
|
+
let bottom = parseFloat(computedStyle(this.scroll, 'padding-bottom'));
|
|
121
|
+
let borderBottom = parseFloat(computedStyle(this.scroll, 'border-bottom'));
|
|
122
|
+
this.sliderHeight = height - top - bottom - borderTop - borderBottom - this.getTop();
|
|
123
|
+
}
|
|
110
124
|
}
|
|
111
125
|
}
|
|
112
126
|
getTop() {
|
|
@@ -136,10 +150,10 @@ export class XAnchorComponent extends XAnchorProperty {
|
|
|
136
150
|
}
|
|
137
151
|
}
|
|
138
152
|
/** @nocollapse */ XAnchorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XAnchorComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
139
|
-
/** @nocollapse */ XAnchorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XAnchorComponent, selector: "x-anchor", viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, static: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div #anchor class=\"x-anchor\" [ngClass]=\"classMap\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight\">\r\n <x-slider\r\n [data]=\"sliderData\"\r\n layout=\"column\"\r\n [activatedIndex]=\"activatedIndex\"\r\n [nodeJustify]=\"justify\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".x-anchor{margin:0;padding:0;display:flex}.x-anchor-content{flex:1}.x-anchor-affix{display:block}.x-anchor-slider{float:left
|
|
153
|
+
/** @nocollapse */ XAnchorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XAnchorComponent, selector: "x-anchor", viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, static: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div #anchor class=\"x-anchor\" [ngClass]=\"classMap\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight\">\r\n <x-slider\r\n [data]=\"sliderData\"\r\n layout=\"column\"\r\n [activatedIndex]=\"activatedIndex\"\r\n [nodeJustify]=\"justify\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".x-anchor{margin:0;padding:0;display:flex}.x-anchor-content{flex:1}.x-anchor-affix{display:block}.x-anchor-slider{float:left}.x-anchor-slider:hover{overflow-y:auto}.x-anchor-slider .x-slider{overflow:hidden}.x-anchor-right{flex-direction:row}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-left:.125rem solid var(--x-border)}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-left-radius:0;border-bottom-left-radius:0;z-index:2;border-left:.125rem solid var(--x-primary)}.x-anchor-left{flex-direction:row-reverse}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-right:.125rem solid var(--x-border)}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-right-radius:0;border-bottom-right-radius:0;z-index:2;border-right:.125rem solid var(--x-primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.XAffixComponent, selector: "x-affix" }, { kind: "component", type: i4.XSliderComponent, selector: "x-slider" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
140
154
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XAnchorComponent, decorators: [{
|
|
141
155
|
type: Component,
|
|
142
|
-
args: [{ selector: `${XAnchorPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #anchor class=\"x-anchor\" [ngClass]=\"classMap\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight\">\r\n <x-slider\r\n [data]=\"sliderData\"\r\n layout=\"column\"\r\n [activatedIndex]=\"activatedIndex\"\r\n [nodeJustify]=\"justify\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".x-anchor{margin:0;padding:0;display:flex}.x-anchor-content{flex:1}.x-anchor-affix{display:block}.x-anchor-slider{float:left
|
|
156
|
+
args: [{ selector: `${XAnchorPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #anchor class=\"x-anchor\" [ngClass]=\"classMap\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight\">\r\n <x-slider\r\n [data]=\"sliderData\"\r\n layout=\"column\"\r\n [activatedIndex]=\"activatedIndex\"\r\n [nodeJustify]=\"justify\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".x-anchor{margin:0;padding:0;display:flex}.x-anchor-content{flex:1}.x-anchor-affix{display:block}.x-anchor-slider{float:left}.x-anchor-slider:hover{overflow-y:auto}.x-anchor-slider .x-slider{overflow:hidden}.x-anchor-right{flex-direction:row}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-left:.125rem solid var(--x-border)}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-left-radius:0;border-bottom-left-radius:0;z-index:2;border-left:.125rem solid var(--x-primary)}.x-anchor-left{flex-direction:row-reverse}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-right:.125rem solid var(--x-border)}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-right-radius:0;border-bottom-right-radius:0;z-index:2;border-right:.125rem solid var(--x-primary)}\n"] }]
|
|
143
157
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
144
158
|
type: Inject,
|
|
145
159
|
args: [DOCUMENT]
|
|
@@ -150,4 +164,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
|
|
|
150
164
|
type: ViewChild,
|
|
151
165
|
args: ['content', { static: true }]
|
|
152
166
|
}] } });
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2FuY2hvci9hbmNob3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvYW5jaG9yL2FuY2hvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULGlCQUFpQixFQUlqQix1QkFBdUIsRUFDdkIsU0FBUyxFQUVULE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFlLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBRWxILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFTekQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGVBQWU7SUFZbkQsWUFDUyxRQUFtQixFQUNuQixVQUFtQyxFQUNuQyxHQUFzQixFQUNYLEdBQVEsRUFDbkIsYUFBNkI7UUFFcEMsS0FBSyxFQUFFLENBQUM7UUFORCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRXRCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQWJ0QyxlQUFVLEdBQWtCLEVBQUUsQ0FBQztRQUMvQixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUduQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGVB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QixNQUFNO3NCQUE1QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0csT0FBTztzQkFBOUMsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEluamVjdCxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWEFuY2hvclByZWZpeCwgWEFuY2hvck5vZGUsIFhBbmNob3JQcm9wZXJ0eSB9IGZyb20gJy4vYW5jaG9yLnByb3BlcnR5JztcclxuaW1wb3J0IHsgY29tcHV0ZWRTdHlsZSwgWElzRW1wdHksIHJlcUFuaW1GcmFtZSwgWElzTnVtYmVyLCBYSXNVbmRlZmluZWQsIFhDb25maWdTZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFhTbGlkZXJOb2RlIH0gZnJvbSAnQG5nLW5lc3QvdWkvc2xpZGVyJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGhyb3R0bGVUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WEFuY2hvclByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmNob3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FuY2hvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhBbmNob3JDb21wb25lbnQgZXh0ZW5kcyBYQW5jaG9yUHJvcGVydHkgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnYW5jaG9yJywgeyBzdGF0aWM6IHRydWUgfSkgYW5jaG9yITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnY29udGVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRlbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBoRWxlbWVudHMhOiBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PjtcclxuICBzbGlkZXJEYXRhOiBYU2xpZGVyTm9kZVtdID0gW107XHJcbiAgYWN0aXZhdGVkSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgc2xpZGVySGVpZ2h0PzogbnVtYmVyO1xyXG4gIGRvY3VtZW50OiBEb2N1bWVudDtcclxuICBwcml2YXRlIF9zY3JvbGxpbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIF9mb250U2l6ZTogbnVtYmVyO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvYzogYW55LFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5kb2N1bWVudCA9IGRvYztcclxuICAgIHRoaXMuX2ZvbnRTaXplID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlKHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnZm9udC1zaXplJykpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgICB0aGlzLnNldFNsaWRlckRhdGEoKTtcclxuICAgIHRoaXMuc2V0SGVpZ2h0KCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnNldFNjcm9sbCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZWRDaGFuZ2UoaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMuaEVsZW1lbnRzKSB8fCBYSXNVbmRlZmluZWQodGhpcy5zY3JvbGwpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fc2Nyb2xsaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IGhFbGVtZW50ID0gdGhpcy5oRWxlbWVudHNbaW5kZXhdO1xyXG4gICAgbGV0IHNjcm9sbFRvcCA9IGhFbGVtZW50Lm9mZnNldFRvcCAtIHRoaXMuYW5jaG9yLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wIC0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlKGhFbGVtZW50LCAnbWFyZ2luLXRvcCcpKTtcclxuICAgIGxldCBtYXhTY3JvbGxUb3AgPSB0aGlzLnNjcm9sbC5zY3JvbGxIZWlnaHQgLSB0aGlzLnNjcm9sbC5jbGllbnRIZWlnaHQ7XHJcbiAgICBpZiAoc2Nyb2xsVG9wID4gbWF4U2Nyb2xsVG9wKSBzY3JvbGxUb3AgPSBtYXhTY3JvbGxUb3A7XHJcbiAgICB0aGlzLnNjcm9sbFRvKHRoaXMuc2Nyb2xsLCBwYXJzZUludChgJHtzY3JvbGxUb3B9YCksIDE1MCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENsYXNzTWFwKCkge1xyXG4gICAgdGhpcy5jbGFzc01hcFtgJHtYQW5jaG9yUHJlZml4fS0ke3RoaXMubGF5b3V0fWBdID0gIVhJc0VtcHR5KHRoaXMubGF5b3V0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U2Nyb2xsKCkge1xyXG4gICAgZnJvbUV2ZW50KHRoaXMuc2Nyb2xsID8gdGhpcy5zY3JvbGwgOiB3aW5kb3csICdzY3JvbGwnKVxyXG4gICAgICAucGlwZSh0aHJvdHRsZVRpbWUoMTApLCB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Njcm9sbGluZykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZhdGVkQnlTY3JvbGwoKTtcclxuICAgICAgfSk7XHJcbiAgICBpZiAoIXRoaXMuc2Nyb2xsKSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFjdGl2YXRlZEJ5U2Nyb2xsKCkge1xyXG4gICAgbGV0IG5vdyA9IDA7XHJcbiAgICB0aGlzLmhFbGVtZW50cy5mb3JFYWNoKChoLCBpbmRleCkgPT4ge1xyXG4gICAgICBsZXQgZGlzdGFuY2UgPSB0aGlzLnNjcm9sbC5zY3JvbGxUb3AgKyB0aGlzLmFuY2hvci5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgaWYgKGRpc3RhbmNlID49IGgub2Zmc2V0VG9wKSB7XHJcbiAgICAgICAgbm93ID0gaW5kZXg7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYWN0aXZhdGVkSW5kZXggPSBub3c7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFNsaWRlckRhdGEoKSB7XHJcbiAgICB0aGlzLmhFbGVtZW50cyA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJzpzY29wZT4gaDEsOnNjb3BlPiBoMiw6c2NvcGU+IGgzLDpzY29wZT4gaDQsOnNjb3BlPiBoNScpO1xyXG4gICAgaWYgKHRoaXMuaEVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGxpc3Q6IFhBbmNob3JOb2RlW10gPSBbXTtcclxuICAgICAgdGhpcy5oRWxlbWVudHMuZm9yRWFjaCgoeDogSFRNTEVsZW1lbnQsIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxpbmsgPSBgeC1hbmNob3ItJHtpfWA7XHJcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMuc2V0TGVmdCh4KTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh4LCAnaWQnLCBsaW5rKTtcclxuICAgICAgICBsaXN0ID0gW1xyXG4gICAgICAgICAgLi4ubGlzdCxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IGksXHJcbiAgICAgICAgICAgIGxhYmVsOiB4LmlubmVyVGV4dCxcclxuICAgICAgICAgICAgbGVmdDogbGVmdCxcclxuICAgICAgICAgICAgbGluazogbGlua1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF07XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNsaWRlckRhdGEgPSBsaXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRMZWZ0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGVsZXMgPSBbJ0gxJywgJ0gyJywgJ0gzJywgJ0g0JywgJ0g1J107XHJcbiAgICBjb25zdCBpbmRleCA9IGVsZXMuaW5kZXhPZihlbGVtZW50LnRhZ05hbWUpO1xyXG4gICAgcmV0dXJuIGluZGV4ICsgMTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SGVpZ2h0KCkge1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsKSB7XHJcbiAgICAgIGxldCBoZWlnaHQgPSB0aGlzLnNjcm9sbC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgIGxldCB0b3AgPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUodGhpcy5zY3JvbGwsICdwYWRkaW5nLXRvcCcpKTtcclxuICAgICAgbGV0IGJvcmRlclRvcCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZSh0aGlzLnNjcm9sbCwgJ2JvcmRlci10b3AnKSk7XHJcbiAgICAgIGxldCBib3R0b20gPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUodGhpcy5zY3JvbGwsICdwYWRkaW5nLWJvdHRvbScpKTtcclxuICAgICAgbGV0IGJvcmRlckJvdHRvbSA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZSh0aGlzLnNjcm9sbCwgJ2JvcmRlci1ib3R0b20nKSk7XHJcbiAgICAgIHRoaXMuc2xpZGVySGVpZ2h0ID0gaGVpZ2h0IC0gdG9wIC0gYm90dG9tIC0gYm9yZGVyVG9wIC0gYm9yZGVyQm90dG9tIC0gdGhpcy5nZXRUb3AoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VG9wKCkge1xyXG4gICAgaWYgKHRoaXMuYWZmaXhUb3AgPT09ICcwJykgcmV0dXJuIDA7XHJcbiAgICBpZiAoWElzTnVtYmVyKHRoaXMuYWZmaXhUb3ApKSByZXR1cm4gTnVtYmVyKHRoaXMuYWZmaXhUb3ApO1xyXG4gICAgZWxzZSBpZiAodGhpcy5hZmZpeFRvcC5pbmRleE9mKCdyZW0nKSAhPT0gLTEpIHJldHVybiBOdW1iZXIodGhpcy5hZmZpeFRvcC5yZXBsYWNlKC9yZW0vZywgJycpKSAqIHRoaXMuX2ZvbnRTaXplO1xyXG4gICAgZWxzZSBpZiAodGhpcy5hZmZpeFRvcC5pbmRleE9mKCdweCcpICE9PSAtMSkgcmV0dXJuIE51bWJlcih0aGlzLmFmZml4VG9wLnJlcGxhY2UoL3B4L2csICcnKSk7XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsVG8oZWxlbWVudDogSFRNTEVsZW1lbnQsIHRvOiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0byAtIGVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gICAgY29uc3QgcGVyVGljayA9IChkaWZmZXJlbmNlIC8gZHVyYXRpb24pICogMTA7XHJcbiAgICByZXFBbmltRnJhbWUoKCkgPT4ge1xyXG4gICAgICBlbGVtZW50LnNjcm9sbFRvcCA9IGVsZW1lbnQuc2Nyb2xsVG9wICsgcGVyVGljaztcclxuICAgICAgaWYgKGVsZW1lbnQuc2Nyb2xsVG9wID09PSB0byB8fCBkdXJhdGlvbiA8PSAwKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5fc2Nyb2xsaW5nID0gZmFsc2UpLCAyMCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsVG8oZWxlbWVudCwgdG8sIGR1cmF0aW9uIC0gMTApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjYW5jaG9yIGNsYXNzPVwieC1hbmNob3JcIiBbbmdDbGFzc109XCJjbGFzc01hcFwiPlxyXG4gIDxkaXYgI2NvbnRlbnQgY2xhc3M9XCJ4LWFuY2hvci1jb250ZW50XCI+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbiAgPHgtYWZmaXggY2xhc3M9XCJ4LWFuY2hvci1hZmZpeFwiIFt0b3BdPVwiYWZmaXhUb3BcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWFuY2hvci1zbGlkZXJcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cInNsaWRlckhlaWdodFwiPlxyXG4gICAgICA8eC1zbGlkZXJcclxuICAgICAgICBbZGF0YV09XCJzbGlkZXJEYXRhXCJcclxuICAgICAgICBsYXlvdXQ9XCJjb2x1bW5cIlxyXG4gICAgICAgIFthY3RpdmF0ZWRJbmRleF09XCJhY3RpdmF0ZWRJbmRleFwiXHJcbiAgICAgICAgW25vZGVKdXN0aWZ5XT1cImp1c3RpZnlcIlxyXG4gICAgICAgIFtub2RlVHBsXT1cInNsaWRlck5vZGVUcGxcIlxyXG4gICAgICAgIFtzaG93QW5jaG9yXT1cInRydWVcIlxyXG4gICAgICAgIChpbmRleENoYW5nZSk9XCJhY3RpdmF0ZWRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgID48L3gtc2xpZGVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC94LWFmZml4PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2xpZGVyTm9kZVRwbCBsZXQtbm9kZT1cIiRub2RlXCI+XHJcbiAgPHNwYW4gW3N0eWxlLnBhZGRpbmctbGVmdC5yZW1dPVwibm9kZS5sZWZ0IC0gMVwiPnt7IG5vZGUubGFiZWwgfX08L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2FuY2hvci9hbmNob3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvYW5jaG9yL2FuY2hvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULGlCQUFpQixFQUlqQix1QkFBdUIsRUFDdkIsU0FBUyxFQUVULE1BQU0sRUFHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFlLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBRWxILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFTL0UsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGVBQWU7SUFhbkQsWUFDUyxRQUFtQixFQUNuQixVQUFtQyxFQUNuQyxHQUFzQixFQUNYLEdBQVEsRUFDbkIsYUFBNkI7UUFFcEMsS0FBSyxFQUFFLENBQUM7UUFORCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRXRCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQWR0QyxlQUFVLEdBQWtCLEVBQUUsQ0FBQztRQUMvQixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUczQixrQkFBYSxHQUFHLElBQUks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LEdBQUcsT0FBTyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7WUFDaEQsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLEVBQUUsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO2dCQUM3QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxPQUFPO2FBQ1I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQzthQUMzQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0lBekpVLGdCQUFnQixzR0FpQmpCLFFBQVE7b0hBakJQLGdCQUFnQiwwUkM1QjdCLHF4QkFzQkE7MkZETWEsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLEdBQUcsYUFBYSxFQUFFLGlCQUdiLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQW1CNUMsTUFBTTsyQkFBQyxRQUFRO3lFQWhCcUIsTUFBTTtzQkFBNUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNHLE9BQU87c0JBQTlDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBSZW5kZXJlcjIsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBWaWV3Q2hpbGQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBJbmplY3QsXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyQ29udGVudENoZWNrZWRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWEFuY2hvclByZWZpeCwgWEFuY2hvck5vZGUsIFhBbmNob3JQcm9wZXJ0eSB9IGZyb20gJy4vYW5jaG9yLnByb3BlcnR5JztcclxuaW1wb3J0IHsgY29tcHV0ZWRTdHlsZSwgWElzRW1wdHksIHJlcUFuaW1GcmFtZSwgWElzTnVtYmVyLCBYSXNVbmRlZmluZWQsIFhDb25maWdTZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFhTbGlkZXJOb2RlIH0gZnJvbSAnQG5nLW5lc3QvdWkvc2xpZGVyJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGhyb3R0bGVUaW1lLCB0YWtlVW50aWwsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hBbmNob3JQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vYW5jaG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hbmNob3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYQW5jaG9yQ29tcG9uZW50IGV4dGVuZHMgWEFuY2hvclByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudENoZWNrZWQge1xyXG4gIEBWaWV3Q2hpbGQoJ2FuY2hvcicsIHsgc3RhdGljOiB0cnVlIH0pIGFuY2hvciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgaEVsZW1lbnRzITogTm9kZUxpc3RPZjxIVE1MRWxlbWVudD47XHJcbiAgc2xpZGVyRGF0YTogWFNsaWRlck5vZGVbXSA9IFtdO1xyXG4gIGFjdGl2YXRlZEluZGV4OiBudW1iZXIgPSAwO1xyXG4gIHNsaWRlckhlaWdodD86IG51bWJlcjtcclxuICBkb2N1bWVudDogRG9jdW1lbnQ7XHJcbiAgY29udGVudENoYW5nZSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSBfc2Nyb2xsaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZm9udFNpemU6IG51bWJlcjtcclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBkb2M6IGFueSxcclxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZG9jdW1lbnQgPSBkb2M7XHJcbiAgICB0aGlzLl9mb250U2l6ZSA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZSh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2ZvbnQtc2l6ZScpKTtcclxuICB9XHJcbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250ZW50Q2hhbmdlLm5leHQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gICAgdGhpcy5zZXRTbGlkZXJEYXRhKCk7XHJcbiAgICB0aGlzLnNldEhlaWdodCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5zZXRTY3JvbGwoKTtcclxuICAgIHRoaXMuY29udGVudENoYW5nZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldFNsaWRlckRhdGEoKTtcclxuICAgICAgdGhpcy5zZXRIZWlnaHQoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlZENoYW5nZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy5oRWxlbWVudHMpIHx8IFhJc1VuZGVmaW5lZCh0aGlzLnNjcm9sbCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9zY3JvbGxpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgaEVsZW1lbnQgPSB0aGlzLmhFbGVtZW50c1tpbmRleF07XHJcbiAgICBsZXQgc2Nyb2xsVG9wID0gaEVsZW1lbnQub2Zmc2V0VG9wIC0gdGhpcy5hbmNob3IubmF0aXZlRWxlbWVudC5vZmZzZXRUb3AgLSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUoaEVsZW1lbnQsICdtYXJnaW4tdG9wJykpO1xyXG4gICAgbGV0IG1heFNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsLnNjcm9sbEhlaWdodCAtIHRoaXMuc2Nyb2xsLmNsaWVudEhlaWdodDtcclxuICAgIGlmIChzY3JvbGxUb3AgPiBtYXhTY3JvbGxUb3ApIHNjcm9sbFRvcCA9IG1heFNjcm9sbFRvcDtcclxuICAgIHRoaXMuc2Nyb2xsVG8odGhpcy5zY3JvbGwsIHBhcnNlSW50KGAke3Njcm9sbFRvcH1gKSwgMTUwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q2xhc3NNYXAoKSB7XHJcbiAgICB0aGlzLmNsYXNzTWFwW2Ake1hBbmNob3JQcmVmaXh9LSR7dGhpcy5sYXlvdXR9YF0gPSAhWElzRW1wdHkodGhpcy5sYXlvdXQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTY3JvbGwoKSB7XHJcbiAgICBmcm9tRXZlbnQodGhpcy5zY3JvbGwgPyB0aGlzLnNjcm9sbCA6IHdpbmRvdywgJ3Njcm9sbCcpXHJcbiAgICAgIC5waXBlKHRocm90dGxlVGltZSgxMCksIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fc2Nyb2xsaW5nKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmF0ZWRCeVNjcm9sbCgpO1xyXG4gICAgICB9KTtcclxuICAgIGlmICghdGhpcy5zY3JvbGwpIHtcclxuICAgICAgdGhpcy5zY3JvbGwgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QWN0aXZhdGVkQnlTY3JvbGwoKSB7XHJcbiAgICBsZXQgbm93ID0gMDtcclxuICAgIHRoaXMuaEVsZW1lbnRzLmZvckVhY2goKGgsIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCBkaXN0YW5jZSA9IHRoaXMuc2Nyb2xsLnNjcm9sbFRvcCArIHRoaXMuYW5jaG9yLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgICBpZiAoZGlzdGFuY2UgPj0gaC5vZmZzZXRUb3ApIHtcclxuICAgICAgICBub3cgPSBpbmRleDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRJbmRleCA9IG5vdztcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U2xpZGVyRGF0YSgpIHtcclxuICAgIHRoaXMuaEVsZW1lbnRzID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcclxuICAgICAgJzpzY29wZT4gaDEsOnNjb3BlPiBoMiw6c2NvcGU+IGgzLDpzY29wZT4gaDQsOnNjb3BlPiBoNSw6c2NvcGU+IHgtYW5jaG9yLWlubmVyPiBoMSw6c2NvcGU+IHgtYW5jaG9yLWlubmVyPmgyLDpzY29wZT4geC1hbmNob3ItaW5uZXI+aDMsOnNjb3BlPiB4LWFuY2hvci1pbm5lcj5oNCw6c2NvcGU+IHgtYW5jaG9yLWlubmVyPmg1J1xyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLmhFbGVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBsaXN0OiBYQW5jaG9yTm9kZVtdID0gW107XHJcbiAgICAgIHRoaXMuaEVsZW1lbnRzLmZvckVhY2goKHg6IEhUTUxFbGVtZW50LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBsaW5rID0gYHgtYW5jaG9yLSR7aX1gO1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLnNldExlZnQoeCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoeCwgJ2lkJywgbGluayk7XHJcbiAgICAgICAgbGlzdCA9IFtcclxuICAgICAgICAgIC4uLmxpc3QsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiBpLFxyXG4gICAgICAgICAgICBsYWJlbDogeC5pbm5lclRleHQsXHJcbiAgICAgICAgICAgIGxlZnQ6IGxlZnQsXHJcbiAgICAgICAgICAgIGxpbms6IGxpbmtcclxuICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zbGlkZXJEYXRhID0gbGlzdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TGVmdChlbGVtZW50OiBIVE1MRWxlbWVudCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBlbGVzID0gWydIMScsICdIMicsICdIMycsICdINCcsICdINSddO1xyXG4gICAgY29uc3QgaW5kZXggPSBlbGVzLmluZGV4T2YoZWxlbWVudC50YWdOYW1lKTtcclxuICAgIHJldHVybiBpbmRleCArIDE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEhlaWdodCgpIHtcclxuICAgIGlmICh0aGlzLnNjcm9sbCkge1xyXG4gICAgICBpZiAoWElzRW1wdHkodGhpcy5zbGlkZXJEYXRhKSkge1xyXG4gICAgICAgIHRoaXMuc2xpZGVySGVpZ2h0ID0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5zY3JvbGwub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgIGxldCB0b3AgPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUodGhpcy5zY3JvbGwsICdwYWRkaW5nLXRvcCcpKTtcclxuICAgICAgICBsZXQgYm9yZGVyVG9wID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlKHRoaXMuc2Nyb2xsLCAnYm9yZGVyLXRvcCcpKTtcclxuICAgICAgICBsZXQgYm90dG9tID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlKHRoaXMuc2Nyb2xsLCAncGFkZGluZy1ib3R0b20nKSk7XHJcbiAgICAgICAgbGV0IGJvcmRlckJvdHRvbSA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZSh0aGlzLnNjcm9sbCwgJ2JvcmRlci1ib3R0b20nKSk7XHJcbiAgICAgICAgdGhpcy5zbGlkZXJIZWlnaHQgPSBoZWlnaHQgLSB0b3AgLSBib3R0b20gLSBib3JkZXJUb3AgLSBib3JkZXJCb3R0b20gLSB0aGlzLmdldFRvcCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFRvcCgpIHtcclxuICAgIGlmICh0aGlzLmFmZml4VG9wID09PSAnMCcpIHJldHVybiAwO1xyXG4gICAgaWYgKFhJc051bWJlcih0aGlzLmFmZml4VG9wKSkgcmV0dXJuIE51bWJlcih0aGlzLmFmZml4VG9wKTtcclxuICAgIGVsc2UgaWYgKHRoaXMuYWZmaXhUb3AuaW5kZXhPZigncmVtJykgIT09IC0xKSByZXR1cm4gTnVtYmVyKHRoaXMuYWZmaXhUb3AucmVwbGFjZSgvcmVtL2csICcnKSkgKiB0aGlzLl9mb250U2l6ZTtcclxuICAgIGVsc2UgaWYgKHRoaXMuYWZmaXhUb3AuaW5kZXhPZigncHgnKSAhPT0gLTEpIHJldHVybiBOdW1iZXIodGhpcy5hZmZpeFRvcC5yZXBsYWNlKC9weC9nLCAnJykpO1xyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNjcm9sbFRvKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB0bzogbnVtYmVyLCBkdXJhdGlvbjogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBkaWZmZXJlbmNlID0gdG8gLSBlbGVtZW50LnNjcm9sbFRvcDtcclxuICAgIGNvbnN0IHBlclRpY2sgPSAoZGlmZmVyZW5jZSAvIGR1cmF0aW9uKSAqIDEwO1xyXG4gICAgcmVxQW5pbUZyYW1lKCgpID0+IHtcclxuICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSBlbGVtZW50LnNjcm9sbFRvcCArIHBlclRpY2s7XHJcbiAgICAgIGlmIChlbGVtZW50LnNjcm9sbFRvcCA9PT0gdG8gfHwgZHVyYXRpb24gPD0gMCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuX3Njcm9sbGluZyA9IGZhbHNlKSwgMjApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvKGVsZW1lbnQsIHRvLCBkdXJhdGlvbiAtIDEwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2FuY2hvciBjbGFzcz1cIngtYW5jaG9yXCIgW25nQ2xhc3NdPVwiY2xhc3NNYXBcIj5cclxuICA8ZGl2ICNjb250ZW50IGNsYXNzPVwieC1hbmNob3ItY29udGVudFwiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG4gIDx4LWFmZml4IGNsYXNzPVwieC1hbmNob3ItYWZmaXhcIiBbdG9wXT1cImFmZml4VG9wXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1hbmNob3Itc2xpZGVyXCIgW3N0eWxlLmhlaWdodC5weF09XCJzbGlkZXJIZWlnaHRcIj5cclxuICAgICAgPHgtc2xpZGVyXHJcbiAgICAgICAgW2RhdGFdPVwic2xpZGVyRGF0YVwiXHJcbiAgICAgICAgbGF5b3V0PVwiY29sdW1uXCJcclxuICAgICAgICBbYWN0aXZhdGVkSW5kZXhdPVwiYWN0aXZhdGVkSW5kZXhcIlxyXG4gICAgICAgIFtub2RlSnVzdGlmeV09XCJqdXN0aWZ5XCJcclxuICAgICAgICBbbm9kZVRwbF09XCJzbGlkZXJOb2RlVHBsXCJcclxuICAgICAgICBbc2hvd0FuY2hvcl09XCJ0cnVlXCJcclxuICAgICAgICAoaW5kZXhDaGFuZ2UpPVwiYWN0aXZhdGVkQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICA+PC94LXNsaWRlcj5cclxuICAgIDwvZGl2PlxyXG4gIDwveC1hZmZpeD5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3NsaWRlck5vZGVUcGwgbGV0LW5vZGU9XCIkbm9kZVwiPlxyXG4gIDxzcGFuIFtzdHlsZS5wYWRkaW5nLWxlZnQucmVtXT1cIm5vZGUubGVmdCAtIDFcIj57eyBub2RlLmxhYmVsIH19PC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|