@apipass/inputs 1.0.7 → 1.0.8
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/ace-editor/component.d.ts +52 -52
- package/ace-editor/directive.d.ts +39 -39
- package/custom-select/custom-select-item.d.ts +5 -5
- package/custom-select/custom-select.component.d.ts +51 -51
- package/debounce-model-directive/debouceInput.directive.d.ts +14 -14
- package/esm2022/ace-editor/component.mjs +200 -0
- package/esm2022/ace-editor/directive.mjs +153 -0
- package/{esm2020 → esm2022}/apipass-inputs.mjs +4 -4
- package/esm2022/custom-select/custom-select-item.mjs +9 -0
- package/esm2022/custom-select/custom-select.component.mjs +213 -0
- package/esm2022/debounce-model-directive/debouceInput.directive.mjs +34 -0
- package/esm2022/field/field.component.mjs +56 -0
- package/esm2022/input-avatar/input-avatar.component.mjs +91 -0
- package/esm2022/input-boolean/input-boolean.component.mjs +54 -0
- package/esm2022/input-file/input-file.component.mjs +82 -0
- package/esm2022/input-number/input-number.component.mjs +60 -0
- package/esm2022/input-password/input-password.component.mjs +94 -0
- package/esm2022/input-text/input-text.component.mjs +60 -0
- package/esm2022/inputs.module.mjs +150 -0
- package/{esm2020 → esm2022}/public-api.mjs +16 -16
- package/{esm2020 → esm2022}/select-box/mat-select-infinite-scroll.directive.mjs +91 -86
- package/esm2022/select-box/select-box.component.mjs +226 -0
- package/esm2022/select-enum/select-enum.component.mjs +47 -0
- package/esm2022/select-interpolation/select-interpolation.component.mjs +177 -0
- package/esm2022/value-acessor-base.mjs +30 -0
- package/fesm2022/apipass-inputs.mjs +1711 -0
- package/fesm2022/apipass-inputs.mjs.map +1 -0
- package/field/field.component.d.ts +15 -15
- package/index.d.ts +5 -5
- package/input-avatar/input-avatar.component.d.ts +29 -29
- package/input-boolean/input-boolean.component.d.ts +15 -15
- package/input-file/input-file.component.d.ts +31 -31
- package/input-number/input-number.component.d.ts +17 -17
- package/input-password/input-password.component.d.ts +28 -28
- package/input-text/input-text.component.d.ts +17 -17
- package/inputs.module.d.ts +36 -36
- package/package.json +18 -24
- package/public-api.d.ts +16 -16
- package/select-box/mat-select-infinite-scroll.directive.d.ts +26 -26
- package/select-box/select-box.component.d.ts +57 -57
- package/select-enum/select-enum.component.d.ts +12 -12
- package/select-interpolation/select-interpolation.component.d.ts +44 -44
- package/value-acessor-base.d.ts +13 -13
- package/esm2020/ace-editor/component.mjs +0 -195
- package/esm2020/ace-editor/directive.mjs +0 -148
- package/esm2020/custom-select/custom-select-item.mjs +0 -7
- package/esm2020/custom-select/custom-select.component.mjs +0 -204
- package/esm2020/debounce-model-directive/debouceInput.directive.mjs +0 -31
- package/esm2020/field/field.component.mjs +0 -51
- package/esm2020/input-avatar/input-avatar.component.mjs +0 -92
- package/esm2020/input-boolean/input-boolean.component.mjs +0 -56
- package/esm2020/input-file/input-file.component.mjs +0 -82
- package/esm2020/input-number/input-number.component.mjs +0 -62
- package/esm2020/input-password/input-password.component.mjs +0 -96
- package/esm2020/input-text/input-text.component.mjs +0 -62
- package/esm2020/inputs.module.mjs +0 -149
- package/esm2020/select-box/select-box.component.mjs +0 -225
- package/esm2020/select-enum/select-enum.component.mjs +0 -48
- package/esm2020/select-interpolation/select-interpolation.component.mjs +0 -169
- package/esm2020/value-acessor-base.mjs +0 -31
- package/fesm2015/apipass-inputs.mjs +0 -1706
- package/fesm2015/apipass-inputs.mjs.map +0 -1
- package/fesm2020/apipass-inputs.mjs +0 -1696
- package/fesm2020/apipass-inputs.mjs.map +0 -1
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import { ElementRef, EventEmitter, NgZone, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
-
import 'brace';
|
|
4
|
-
import 'brace/theme/monokai';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class AceEditorComponent implements ControlValueAccessor, OnInit, OnDestroy {
|
|
7
|
-
private readonly zone;
|
|
8
|
-
textChanged: EventEmitter<any>;
|
|
9
|
-
textChange: EventEmitter<any>;
|
|
10
|
-
style: any;
|
|
11
|
-
_options: any;
|
|
12
|
-
_readOnly: false;
|
|
13
|
-
_theme: string;
|
|
14
|
-
_mode: string;
|
|
15
|
-
_autoUpdateContent: boolean;
|
|
16
|
-
_editor: any;
|
|
17
|
-
_durationBeforeCallback: number;
|
|
18
|
-
_text: string;
|
|
19
|
-
oldText: any;
|
|
20
|
-
timeoutSaving: any;
|
|
21
|
-
constructor(elementRef: ElementRef, zone: NgZone);
|
|
22
|
-
ngOnInit(): void;
|
|
23
|
-
ngOnDestroy(): void;
|
|
24
|
-
init(): void;
|
|
25
|
-
initEvents(): void;
|
|
26
|
-
updateText(): void;
|
|
27
|
-
set options(options: any);
|
|
28
|
-
setOptions(options: any): void;
|
|
29
|
-
set readOnly(readOnly: any);
|
|
30
|
-
setReadOnly(readOnly: any): void;
|
|
31
|
-
set theme(theme: any);
|
|
32
|
-
setTheme(theme: any): void;
|
|
33
|
-
set mode(mode: any);
|
|
34
|
-
setMode(mode: any): void;
|
|
35
|
-
get value(): string;
|
|
36
|
-
set value(value: string);
|
|
37
|
-
writeValue(value: any): void;
|
|
38
|
-
private _onChange;
|
|
39
|
-
registerOnChange(fn: any): void;
|
|
40
|
-
private _onTouched;
|
|
41
|
-
registerOnTouched(fn: any): void;
|
|
42
|
-
get text(): string;
|
|
43
|
-
set text(text: string);
|
|
44
|
-
setText(text: any): void;
|
|
45
|
-
set autoUpdateContent(status: any);
|
|
46
|
-
setAutoUpdateContent(status: any): void;
|
|
47
|
-
set durationBeforeCallback(num: number);
|
|
48
|
-
setDurationBeforeCallback(num: number): void;
|
|
49
|
-
getEditor(): any;
|
|
50
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AceEditorComponent, never>;
|
|
51
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AceEditorComponent, "ace-editor", never, { "style": "style"; "options": "options"; "readOnly": "readOnly"; "theme": "theme"; "mode": "mode"; "value": "value"; "text": "text"; "autoUpdateContent": "autoUpdateContent"; "durationBeforeCallback": "durationBeforeCallback"; }, { "textChanged": "textChanged"; "textChange": "textChange"; }, never, never, false, never>;
|
|
52
|
-
}
|
|
1
|
+
import { ElementRef, EventEmitter, NgZone, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
+
import 'brace';
|
|
4
|
+
import 'brace/theme/monokai';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class AceEditorComponent implements ControlValueAccessor, OnInit, OnDestroy {
|
|
7
|
+
private readonly zone;
|
|
8
|
+
textChanged: EventEmitter<any>;
|
|
9
|
+
textChange: EventEmitter<any>;
|
|
10
|
+
style: any;
|
|
11
|
+
_options: any;
|
|
12
|
+
_readOnly: false;
|
|
13
|
+
_theme: string;
|
|
14
|
+
_mode: string;
|
|
15
|
+
_autoUpdateContent: boolean;
|
|
16
|
+
_editor: any;
|
|
17
|
+
_durationBeforeCallback: number;
|
|
18
|
+
_text: string;
|
|
19
|
+
oldText: any;
|
|
20
|
+
timeoutSaving: any;
|
|
21
|
+
constructor(elementRef: ElementRef, zone: NgZone);
|
|
22
|
+
ngOnInit(): void;
|
|
23
|
+
ngOnDestroy(): void;
|
|
24
|
+
init(): void;
|
|
25
|
+
initEvents(): void;
|
|
26
|
+
updateText(): void;
|
|
27
|
+
set options(options: any);
|
|
28
|
+
setOptions(options: any): void;
|
|
29
|
+
set readOnly(readOnly: any);
|
|
30
|
+
setReadOnly(readOnly: any): void;
|
|
31
|
+
set theme(theme: any);
|
|
32
|
+
setTheme(theme: any): void;
|
|
33
|
+
set mode(mode: any);
|
|
34
|
+
setMode(mode: any): void;
|
|
35
|
+
get value(): string;
|
|
36
|
+
set value(value: string);
|
|
37
|
+
writeValue(value: any): void;
|
|
38
|
+
private _onChange;
|
|
39
|
+
registerOnChange(fn: any): void;
|
|
40
|
+
private _onTouched;
|
|
41
|
+
registerOnTouched(fn: any): void;
|
|
42
|
+
get text(): string;
|
|
43
|
+
set text(text: string);
|
|
44
|
+
setText(text: any): void;
|
|
45
|
+
set autoUpdateContent(status: any);
|
|
46
|
+
setAutoUpdateContent(status: any): void;
|
|
47
|
+
set durationBeforeCallback(num: number);
|
|
48
|
+
setDurationBeforeCallback(num: number): void;
|
|
49
|
+
getEditor(): any;
|
|
50
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AceEditorComponent, never>;
|
|
51
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AceEditorComponent, "ace-editor", never, { "style": { "alias": "style"; "required": false; }; "options": { "alias": "options"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "value": { "alias": "value"; "required": false; }; "text": { "alias": "text"; "required": false; }; "autoUpdateContent": { "alias": "autoUpdateContent"; "required": false; }; "durationBeforeCallback": { "alias": "durationBeforeCallback"; "required": false; }; }, { "textChanged": "textChanged"; "textChange": "textChange"; }, never, never, false, never>;
|
|
52
|
+
}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { ElementRef, EventEmitter, NgZone, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import 'brace';
|
|
3
|
-
import 'brace/theme/monokai';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class AceEditorDirective implements OnInit, OnDestroy {
|
|
6
|
-
private readonly zone;
|
|
7
|
-
textChanged: EventEmitter<any>;
|
|
8
|
-
textChange: EventEmitter<any>;
|
|
9
|
-
_options: any;
|
|
10
|
-
_readOnly: boolean;
|
|
11
|
-
_theme: string;
|
|
12
|
-
_mode: string;
|
|
13
|
-
_autoUpdateContent: boolean;
|
|
14
|
-
_durationBeforeCallback: number;
|
|
15
|
-
_text: string;
|
|
16
|
-
editor: any;
|
|
17
|
-
oldText: any;
|
|
18
|
-
timeoutSaving: any;
|
|
19
|
-
constructor(elementRef: ElementRef, zone: NgZone);
|
|
20
|
-
ngOnInit(): void;
|
|
21
|
-
ngOnDestroy(): void;
|
|
22
|
-
init(): void;
|
|
23
|
-
initEvents(): void;
|
|
24
|
-
updateText(): void;
|
|
25
|
-
set options(options: any);
|
|
26
|
-
set readOnly(readOnly: any);
|
|
27
|
-
set theme(theme: any);
|
|
28
|
-
set mode(mode: any);
|
|
29
|
-
setMode(mode: any): void;
|
|
30
|
-
get text(): string;
|
|
31
|
-
set text(text: string);
|
|
32
|
-
setText(text: any): void;
|
|
33
|
-
set autoUpdateContent(status: any);
|
|
34
|
-
set durationBeforeCallback(num: number);
|
|
35
|
-
setDurationBeforeCallback(num: number): void;
|
|
36
|
-
get aceEditor(): any;
|
|
37
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AceEditorDirective, never>;
|
|
38
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<AceEditorDirective, "[ace-editor]", never, { "options": "options"; "readOnly": "readOnly"; "theme": "theme"; "mode": "mode"; "text": "text"; "autoUpdateContent": "autoUpdateContent"; "durationBeforeCallback": "durationBeforeCallback"; }, { "textChanged": "textChanged"; "textChange": "textChange"; }, never, never, false, never>;
|
|
39
|
-
}
|
|
1
|
+
import { ElementRef, EventEmitter, NgZone, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import 'brace';
|
|
3
|
+
import 'brace/theme/monokai';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class AceEditorDirective implements OnInit, OnDestroy {
|
|
6
|
+
private readonly zone;
|
|
7
|
+
textChanged: EventEmitter<any>;
|
|
8
|
+
textChange: EventEmitter<any>;
|
|
9
|
+
_options: any;
|
|
10
|
+
_readOnly: boolean;
|
|
11
|
+
_theme: string;
|
|
12
|
+
_mode: string;
|
|
13
|
+
_autoUpdateContent: boolean;
|
|
14
|
+
_durationBeforeCallback: number;
|
|
15
|
+
_text: string;
|
|
16
|
+
editor: any;
|
|
17
|
+
oldText: any;
|
|
18
|
+
timeoutSaving: any;
|
|
19
|
+
constructor(elementRef: ElementRef, zone: NgZone);
|
|
20
|
+
ngOnInit(): void;
|
|
21
|
+
ngOnDestroy(): void;
|
|
22
|
+
init(): void;
|
|
23
|
+
initEvents(): void;
|
|
24
|
+
updateText(): void;
|
|
25
|
+
set options(options: any);
|
|
26
|
+
set readOnly(readOnly: any);
|
|
27
|
+
set theme(theme: any);
|
|
28
|
+
set mode(mode: any);
|
|
29
|
+
setMode(mode: any): void;
|
|
30
|
+
get text(): string;
|
|
31
|
+
set text(text: string);
|
|
32
|
+
setText(text: any): void;
|
|
33
|
+
set autoUpdateContent(status: any);
|
|
34
|
+
set durationBeforeCallback(num: number);
|
|
35
|
+
setDurationBeforeCallback(num: number): void;
|
|
36
|
+
get aceEditor(): any;
|
|
37
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AceEditorDirective, never>;
|
|
38
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<AceEditorDirective, "[ace-editor]", never, { "options": { "alias": "options"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "text": { "alias": "text"; "required": false; }; "autoUpdateContent": { "alias": "autoUpdateContent"; "required": false; }; "durationBeforeCallback": { "alias": "durationBeforeCallback"; "required": false; }; }, { "textChanged": "textChanged"; "textChange": "textChange"; }, never, never, false, never>;
|
|
39
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare class CustomSelectItem {
|
|
2
|
-
id: string | undefined | null;
|
|
3
|
-
text: string;
|
|
4
|
-
constructor(id: string | undefined | null, text: string);
|
|
5
|
-
}
|
|
1
|
+
export declare class CustomSelectItem {
|
|
2
|
+
id: string | undefined | null;
|
|
3
|
+
text: string;
|
|
4
|
+
constructor(id: string | undefined | null, text: string);
|
|
5
|
+
}
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
|
|
2
|
-
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
-
import { CustomSelectItem } from './custom-select-item';
|
|
4
|
-
import { ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class CustomSelectComponent implements ControlValueAccessor, AfterViewInit {
|
|
7
|
-
private readonly sso;
|
|
8
|
-
scrollStrategy: ScrollStrategy;
|
|
9
|
-
_triggerRect: ClientRect | undefined;
|
|
10
|
-
disabled: boolean;
|
|
11
|
-
items: CustomSelectItem[];
|
|
12
|
-
allowTyping: boolean;
|
|
13
|
-
allowRemove: boolean;
|
|
14
|
-
allowAddItem: boolean;
|
|
15
|
-
addItemLabel: string;
|
|
16
|
-
placeHolder: string;
|
|
17
|
-
findPlaceHolder: string;
|
|
18
|
-
searchText: string;
|
|
19
|
-
onSelect: EventEmitter<CustomSelectItem>;
|
|
20
|
-
onUnSelect: EventEmitter<any>;
|
|
21
|
-
onAddItem: EventEmitter<any>;
|
|
22
|
-
trigger: ElementRef | undefined;
|
|
23
|
-
input: ElementRef | undefined;
|
|
24
|
-
opened: boolean;
|
|
25
|
-
selectedItem: CustomSelectItem | undefined;
|
|
26
|
-
private innerValue;
|
|
27
|
-
private selectedModelValue;
|
|
28
|
-
private edited;
|
|
29
|
-
tabindex: string;
|
|
30
|
-
onBlur(target: any): void;
|
|
31
|
-
constructor(sso: ScrollStrategyOptions);
|
|
32
|
-
ngAfterViewInit(): void;
|
|
33
|
-
private setTriggerRect;
|
|
34
|
-
selectItem(item: CustomSelectItem): void;
|
|
35
|
-
addItem(): void;
|
|
36
|
-
keyPress(): any;
|
|
37
|
-
clicked(): void;
|
|
38
|
-
private onTouchedCallback;
|
|
39
|
-
private onChangeCallback;
|
|
40
|
-
get value(): any;
|
|
41
|
-
set value(value: any);
|
|
42
|
-
writeValue(value: any): void;
|
|
43
|
-
registerOnChange(fn: any): void;
|
|
44
|
-
registerOnTouched(fn: any): void;
|
|
45
|
-
setDisabledState(isDisabled: boolean): void;
|
|
46
|
-
arrowClick(event: any): void;
|
|
47
|
-
removeClick(event: any): void;
|
|
48
|
-
onDrop($event: any): void;
|
|
49
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CustomSelectComponent, never>;
|
|
50
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CustomSelectComponent, "custom-select", never, { "disabled": "disabled"; "items": "items"; "allowTyping": "allowTyping"; "allowRemove": "allowRemove"; "allowAddItem": "allowAddItem"; "addItemLabel": "addItemLabel"; "placeHolder": "placeHolder"; "findPlaceHolder": "findPlaceHolder"; "searchText": "searchText"; }, { "onSelect": "onSelect"; "onUnSelect": "onUnSelect"; "onAddItem": "onAddItem"; }, never, never, false, never>;
|
|
51
|
-
}
|
|
1
|
+
import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
|
|
2
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
+
import { CustomSelectItem } from './custom-select-item';
|
|
4
|
+
import { ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class CustomSelectComponent implements ControlValueAccessor, AfterViewInit {
|
|
7
|
+
private readonly sso;
|
|
8
|
+
scrollStrategy: ScrollStrategy;
|
|
9
|
+
_triggerRect: ClientRect | undefined;
|
|
10
|
+
disabled: boolean;
|
|
11
|
+
items: CustomSelectItem[];
|
|
12
|
+
allowTyping: boolean;
|
|
13
|
+
allowRemove: boolean;
|
|
14
|
+
allowAddItem: boolean;
|
|
15
|
+
addItemLabel: string;
|
|
16
|
+
placeHolder: string;
|
|
17
|
+
findPlaceHolder: string;
|
|
18
|
+
searchText: string;
|
|
19
|
+
onSelect: EventEmitter<CustomSelectItem>;
|
|
20
|
+
onUnSelect: EventEmitter<any>;
|
|
21
|
+
onAddItem: EventEmitter<any>;
|
|
22
|
+
trigger: ElementRef | undefined;
|
|
23
|
+
input: ElementRef | undefined;
|
|
24
|
+
opened: boolean;
|
|
25
|
+
selectedItem: CustomSelectItem | undefined;
|
|
26
|
+
private innerValue;
|
|
27
|
+
private selectedModelValue;
|
|
28
|
+
private edited;
|
|
29
|
+
tabindex: string;
|
|
30
|
+
onBlur(target: any): void;
|
|
31
|
+
constructor(sso: ScrollStrategyOptions);
|
|
32
|
+
ngAfterViewInit(): void;
|
|
33
|
+
private setTriggerRect;
|
|
34
|
+
selectItem(item: CustomSelectItem): void;
|
|
35
|
+
addItem(): void;
|
|
36
|
+
keyPress(): any;
|
|
37
|
+
clicked(): void;
|
|
38
|
+
private onTouchedCallback;
|
|
39
|
+
private onChangeCallback;
|
|
40
|
+
get value(): any;
|
|
41
|
+
set value(value: any);
|
|
42
|
+
writeValue(value: any): void;
|
|
43
|
+
registerOnChange(fn: any): void;
|
|
44
|
+
registerOnTouched(fn: any): void;
|
|
45
|
+
setDisabledState(isDisabled: boolean): void;
|
|
46
|
+
arrowClick(event: any): void;
|
|
47
|
+
removeClick(event: any): void;
|
|
48
|
+
onDrop($event: any): void;
|
|
49
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomSelectComponent, never>;
|
|
50
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CustomSelectComponent, "custom-select", never, { "disabled": { "alias": "disabled"; "required": false; }; "items": { "alias": "items"; "required": false; }; "allowTyping": { "alias": "allowTyping"; "required": false; }; "allowRemove": { "alias": "allowRemove"; "required": false; }; "allowAddItem": { "alias": "allowAddItem"; "required": false; }; "addItemLabel": { "alias": "addItemLabel"; "required": false; }; "placeHolder": { "alias": "placeHolder"; "required": false; }; "findPlaceHolder": { "alias": "findPlaceHolder"; "required": false; }; "searchText": { "alias": "searchText"; "required": false; }; }, { "onSelect": "onSelect"; "onUnSelect": "onUnSelect"; "onAddItem": "onAddItem"; }, never, never, false, never>;
|
|
51
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { EventEmitter, OnDestroy } from '@angular/core';
|
|
2
|
-
import { NgModel } from '@angular/forms';
|
|
3
|
-
import { Subscription } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class DebouceInputDirective implements OnDestroy {
|
|
6
|
-
private readonly ngModel;
|
|
7
|
-
debounceTime: number;
|
|
8
|
-
onDebounceTriggered: EventEmitter<any>;
|
|
9
|
-
subscription: Subscription;
|
|
10
|
-
constructor(ngModel: NgModel);
|
|
11
|
-
ngOnDestroy(): void;
|
|
12
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DebouceInputDirective, never>;
|
|
13
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<DebouceInputDirective, "[debounceInput]", never, { "debounceTime": "debounceTime"; }, { "onDebounceTriggered": "onDebounceTriggered"; }, never, never, false, never>;
|
|
14
|
-
}
|
|
1
|
+
import { EventEmitter, OnDestroy } from '@angular/core';
|
|
2
|
+
import { NgModel } from '@angular/forms';
|
|
3
|
+
import { Subscription } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class DebouceInputDirective implements OnDestroy {
|
|
6
|
+
private readonly ngModel;
|
|
7
|
+
debounceTime: number;
|
|
8
|
+
onDebounceTriggered: EventEmitter<any>;
|
|
9
|
+
subscription: Subscription;
|
|
10
|
+
constructor(ngModel: NgModel);
|
|
11
|
+
ngOnDestroy(): void;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DebouceInputDirective, never>;
|
|
13
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DebouceInputDirective, "[debounceInput]", never, { "debounceTime": { "alias": "debounceTime"; "required": false; }; }, { "onDebounceTriggered": "onDebounceTriggered"; }, never, never, false, never>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { Component, ElementRef, EventEmitter, forwardRef, Input, NgZone, Output } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import 'brace';
|
|
4
|
+
import 'brace/theme/monokai';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
class AceEditorComponent {
|
|
7
|
+
zone;
|
|
8
|
+
textChanged = new EventEmitter();
|
|
9
|
+
textChange = new EventEmitter();
|
|
10
|
+
style = {};
|
|
11
|
+
_options = {};
|
|
12
|
+
_readOnly = false;
|
|
13
|
+
_theme = 'monokai';
|
|
14
|
+
_mode = 'html';
|
|
15
|
+
_autoUpdateContent = true;
|
|
16
|
+
_editor;
|
|
17
|
+
_durationBeforeCallback = 0;
|
|
18
|
+
_text = '';
|
|
19
|
+
oldText;
|
|
20
|
+
timeoutSaving;
|
|
21
|
+
constructor(elementRef, zone) {
|
|
22
|
+
this.zone = zone;
|
|
23
|
+
const el = elementRef.nativeElement;
|
|
24
|
+
this.zone.runOutsideAngular(() => {
|
|
25
|
+
this._editor = ace.edit(el);
|
|
26
|
+
});
|
|
27
|
+
this._editor.$blockScrolling = Infinity;
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.init();
|
|
31
|
+
this.initEvents();
|
|
32
|
+
}
|
|
33
|
+
ngOnDestroy() {
|
|
34
|
+
this._editor.destroy();
|
|
35
|
+
}
|
|
36
|
+
init() {
|
|
37
|
+
this.setOptions(this._options || {});
|
|
38
|
+
this.setTheme(this._theme);
|
|
39
|
+
this.setMode(this._mode);
|
|
40
|
+
this.setReadOnly(this._readOnly);
|
|
41
|
+
}
|
|
42
|
+
initEvents() {
|
|
43
|
+
this._editor.on('change', () => {
|
|
44
|
+
this.updateText();
|
|
45
|
+
});
|
|
46
|
+
this._editor.on('paste', () => {
|
|
47
|
+
this.updateText();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
updateText() {
|
|
51
|
+
const newVal = this._editor.getValue();
|
|
52
|
+
if (newVal === this.oldText) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (!this._durationBeforeCallback) {
|
|
56
|
+
this._text = newVal;
|
|
57
|
+
this.zone.run(() => {
|
|
58
|
+
this.textChange.emit(newVal);
|
|
59
|
+
this.textChanged.emit(newVal);
|
|
60
|
+
});
|
|
61
|
+
this._onChange(newVal);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
if (this.timeoutSaving) {
|
|
65
|
+
clearTimeout(this.timeoutSaving);
|
|
66
|
+
}
|
|
67
|
+
this.timeoutSaving = setTimeout(() => {
|
|
68
|
+
this._text = newVal;
|
|
69
|
+
this.zone.run(() => {
|
|
70
|
+
this.textChange.emit(newVal);
|
|
71
|
+
this.textChanged.emit(newVal);
|
|
72
|
+
});
|
|
73
|
+
this.timeoutSaving = null;
|
|
74
|
+
}, this._durationBeforeCallback);
|
|
75
|
+
}
|
|
76
|
+
this.oldText = newVal;
|
|
77
|
+
}
|
|
78
|
+
set options(options) {
|
|
79
|
+
this.setOptions(options);
|
|
80
|
+
}
|
|
81
|
+
setOptions(options) {
|
|
82
|
+
this._options = options;
|
|
83
|
+
this._editor.setOptions(options || {});
|
|
84
|
+
}
|
|
85
|
+
set readOnly(readOnly) {
|
|
86
|
+
this.setReadOnly(readOnly);
|
|
87
|
+
}
|
|
88
|
+
setReadOnly(readOnly) {
|
|
89
|
+
this._readOnly = readOnly;
|
|
90
|
+
this._editor.setReadOnly(readOnly);
|
|
91
|
+
}
|
|
92
|
+
set theme(theme) {
|
|
93
|
+
this.setTheme(theme);
|
|
94
|
+
}
|
|
95
|
+
setTheme(theme) {
|
|
96
|
+
this._theme = theme;
|
|
97
|
+
this._editor.setTheme(`ace/theme/${theme}`);
|
|
98
|
+
}
|
|
99
|
+
set mode(mode) {
|
|
100
|
+
this.setMode(mode);
|
|
101
|
+
}
|
|
102
|
+
setMode(mode) {
|
|
103
|
+
this._mode = mode;
|
|
104
|
+
if (typeof this._mode === 'object') {
|
|
105
|
+
this._editor.getSession().setMode(this._mode);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
this._editor.getSession().setMode(`ace/mode/${this._mode}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
get value() {
|
|
112
|
+
return this.text;
|
|
113
|
+
}
|
|
114
|
+
set value(value) {
|
|
115
|
+
this.setText(value);
|
|
116
|
+
}
|
|
117
|
+
writeValue(value) {
|
|
118
|
+
this.setText(value);
|
|
119
|
+
}
|
|
120
|
+
_onChange = (_) => {
|
|
121
|
+
};
|
|
122
|
+
registerOnChange(fn) {
|
|
123
|
+
this._onChange = fn;
|
|
124
|
+
}
|
|
125
|
+
_onTouched = () => {
|
|
126
|
+
};
|
|
127
|
+
registerOnTouched(fn) {
|
|
128
|
+
this._onTouched = fn;
|
|
129
|
+
}
|
|
130
|
+
get text() {
|
|
131
|
+
return this._text;
|
|
132
|
+
}
|
|
133
|
+
set text(text) {
|
|
134
|
+
this.setText(text);
|
|
135
|
+
}
|
|
136
|
+
setText(text) {
|
|
137
|
+
if (text === null || text === undefined) {
|
|
138
|
+
text = '';
|
|
139
|
+
}
|
|
140
|
+
if (this._text !== text && this._autoUpdateContent) {
|
|
141
|
+
this._text = text;
|
|
142
|
+
this._editor.setValue(text);
|
|
143
|
+
this._onChange(text);
|
|
144
|
+
this._editor.clearSelection();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
set autoUpdateContent(status) {
|
|
148
|
+
this.setAutoUpdateContent(status);
|
|
149
|
+
}
|
|
150
|
+
setAutoUpdateContent(status) {
|
|
151
|
+
this._autoUpdateContent = status;
|
|
152
|
+
}
|
|
153
|
+
set durationBeforeCallback(num) {
|
|
154
|
+
this.setDurationBeforeCallback(num);
|
|
155
|
+
}
|
|
156
|
+
setDurationBeforeCallback(num) {
|
|
157
|
+
this._durationBeforeCallback = num;
|
|
158
|
+
}
|
|
159
|
+
getEditor() {
|
|
160
|
+
return this._editor;
|
|
161
|
+
}
|
|
162
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: AceEditorComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
163
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: AceEditorComponent, selector: "ace-editor", inputs: { style: "style", options: "options", readOnly: "readOnly", theme: "theme", mode: "mode", value: "value", text: "text", autoUpdateContent: "autoUpdateContent", durationBeforeCallback: "durationBeforeCallback" }, outputs: { textChanged: "textChanged", textChange: "textChange" }, providers: [{
|
|
164
|
+
provide: NG_VALUE_ACCESSOR,
|
|
165
|
+
useExisting: forwardRef(() => AceEditorComponent),
|
|
166
|
+
multi: true
|
|
167
|
+
}], ngImport: i0, template: '', isInline: true, styles: [":host{display:block;width:100%}\n"] });
|
|
168
|
+
}
|
|
169
|
+
export { AceEditorComponent };
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: AceEditorComponent, decorators: [{
|
|
171
|
+
type: Component,
|
|
172
|
+
args: [{ selector: 'ace-editor', template: '', providers: [{
|
|
173
|
+
provide: NG_VALUE_ACCESSOR,
|
|
174
|
+
useExisting: forwardRef(() => AceEditorComponent),
|
|
175
|
+
multi: true
|
|
176
|
+
}], styles: [":host{display:block;width:100%}\n"] }]
|
|
177
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { textChanged: [{
|
|
178
|
+
type: Output
|
|
179
|
+
}], textChange: [{
|
|
180
|
+
type: Output
|
|
181
|
+
}], style: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}], options: [{
|
|
184
|
+
type: Input
|
|
185
|
+
}], readOnly: [{
|
|
186
|
+
type: Input
|
|
187
|
+
}], theme: [{
|
|
188
|
+
type: Input
|
|
189
|
+
}], mode: [{
|
|
190
|
+
type: Input
|
|
191
|
+
}], value: [{
|
|
192
|
+
type: Input
|
|
193
|
+
}], text: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], autoUpdateContent: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}], durationBeforeCallback: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}] } });
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9hY2UtZWRpdG9yL2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4RSxPQUFPLE9BQU8sQ0FBQTtBQUNkLE9BQU8scUJBQXFCLENBQUE7O0FBSTVCLE1BVWEsa0JBQWtCO0lBaUJ5QjtJQWhCNUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFDaEMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFDaEMsS0FBSyxHQUFRLEVBQUUsQ0FBQTtJQUV4QixRQUFRLEdBQVEsRUFBRSxDQUFBO0lBQ2xCLFNBQVMsR0FBVSxLQUFLLENBQUE7SUFDeEIsTUFBTSxHQUFHLFNBQVMsQ0FBQTtJQUNsQixLQUFLLEdBQUcsTUFBTSxDQUFBO0lBQ2Qsa0JBQWtCLEdBQUcsSUFBSSxDQUFBO0lBQ3pCLE9BQU8sQ0FBSztJQUNaLHVCQUF1QixHQUFHLENBQUMsQ0FBQTtJQUMzQixLQUFLLEdBQUcsRUFBRSxDQUFBO0lBRVYsT0FBTyxDQUFLO0lBQ1osYUFBYSxDQUFLO0lBRWxCLFlBQWEsVUFBc0IsRUFBbUIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFDaEUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQTtRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDN0IsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUE7SUFDekMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDWCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDbkIsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQzVCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNuQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUN0QyxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzNCLE9BQU07U0FDUDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUE7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDL0IsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQ3ZCO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7YUFDakM7WUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFBO2dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7WUFDM0IsQ0FBQyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUE7SUFDdkIsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFFLE9BQVk7UUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRUQsVUFBVSxDQUFFLE9BQVk7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFFRCxJQUFhLFFBQVEsQ0FBRSxRQUFhO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBRSxRQUFhO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxJQUFhLEtBQUssQ0FBRSxLQUFVO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdEIsQ0FBQztJQUVELFFBQVEsQ0FBRSxLQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsSUFBYSxJQUFJLENBQUUsSUFBUztRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxPQUFPLENBQUUsSUFBUztRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtRQUNqQixJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQzlDO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1NBQzVEO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQsSUFDSSxLQUFLLENBQUUsS0FBYTtRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3JCLENBQUM7SUFFRCxVQUFVLENBQUUsS0FBVTtRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3JCLENBQUM7SUFFTyxTQUFTLEdBQUcsQ0FBQyxDQUFNLEVBQVEsRUFBRTtJQUNyQyxDQUFDLENBQUE7SUFFRCxnQkFBZ0IsQ0FBRSxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFBO0lBQ3JCLENBQUM7SUFFTyxVQUFVLEdBQUcsR0FBUyxFQUFFO0lBQ2hDLENBQUMsQ0FBQTtJQUVELGlCQUFpQixDQUFFLEVBQU87UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQTtJQUNuQixDQUFDO0lBRUQsSUFDSSxJQUFJLENBQUUsSUFBWTtRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxPQUFPLENBQUUsSUFBUztRQUNoQixJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN2QyxJQUFJLEdBQUcsRUFBRSxDQUFBO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUE7U0FDOUI7SUFDSCxDQUFDO0lBRUQsSUFBYSxpQkFBaUIsQ0FBRSxNQUFXO1FBQ3pDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsb0JBQW9CLENBQUUsTUFBVztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxJQUFhLHNCQUFzQixDQUFFLEdBQVc7UUFDOUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRCx5QkFBeUIsQ0FBRSxHQUFXO1FBQ3BDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxHQUFHLENBQUE7SUFDcEMsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQzt1R0F6TFUsa0JBQWtCOzJGQUFsQixrQkFBa0Isb1VBTmxCLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDakQsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLDBCQU5RLEVBQUU7O1NBUUQsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBVjlCLFNBQVM7K0JBQ0UsWUFBWSxZQUNaLEVBQUUsYUFFRCxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDOzRCQUNqRCxLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDO3NIQUdRLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRSxLQUFLO3NCQUFiLEtBQUs7Z0JBNEVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBU08sUUFBUTtzQkFBcEIsS0FBSztnQkFTTyxLQUFLO3NCQUFqQixLQUFLO2dCQVNPLElBQUk7c0JBQWhCLEtBQUs7Z0JBa0JGLEtBQUs7c0JBRFIsS0FBSztnQkE0QkYsSUFBSTtzQkFEUCxLQUFLO2dCQWlCTyxpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBUU8sc0JBQXNCO3NCQUFsQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBOZ1pvbmUsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcclxuaW1wb3J0ICdicmFjZSdcclxuaW1wb3J0ICdicmFjZS90aGVtZS9tb25va2FpJ1xyXG5cclxuZGVjbGFyZSBsZXQgYWNlOiBhbnlcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWNlLWVkaXRvcicsXHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTsgfSddLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQWNlRWRpdG9yQ29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFjZUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQE91dHB1dCgpIHRleHRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpXHJcbiAgQE91dHB1dCgpIHRleHRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKClcclxuICBASW5wdXQoKSBzdHlsZTogYW55ID0ge31cclxuXHJcbiAgX29wdGlvbnM6IGFueSA9IHt9XHJcbiAgX3JlYWRPbmx5OiBmYWxzZSA9IGZhbHNlXHJcbiAgX3RoZW1lID0gJ21vbm9rYWknXHJcbiAgX21vZGUgPSAnaHRtbCdcclxuICBfYXV0b1VwZGF0ZUNvbnRlbnQgPSB0cnVlXHJcbiAgX2VkaXRvcjogYW55XHJcbiAgX2R1cmF0aW9uQmVmb3JlQ2FsbGJhY2sgPSAwXHJcbiAgX3RleHQgPSAnJ1xyXG5cclxuICBvbGRUZXh0OiBhbnlcclxuICB0aW1lb3V0U2F2aW5nOiBhbnlcclxuXHJcbiAgY29uc3RydWN0b3IgKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVhZG9ubHkgem9uZTogTmdab25lKSB7XHJcbiAgICBjb25zdCBlbCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxyXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgdGhpcy5fZWRpdG9yID0gYWNlLmVkaXQoZWwpXHJcbiAgICB9KVxyXG4gICAgdGhpcy5fZWRpdG9yLiRibG9ja1Njcm9sbGluZyA9IEluZmluaXR5XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXQoKVxyXG4gICAgdGhpcy5pbml0RXZlbnRzKClcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95ICgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2VkaXRvci5kZXN0cm95KClcclxuICB9XHJcblxyXG4gIGluaXQgKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRPcHRpb25zKHRoaXMuX29wdGlvbnMgfHwge30pXHJcbiAgICB0aGlzLnNldFRoZW1lKHRoaXMuX3RoZW1lKVxyXG4gICAgdGhpcy5zZXRNb2RlKHRoaXMuX21vZGUpXHJcbiAgICB0aGlzLnNldFJlYWRPbmx5KHRoaXMuX3JlYWRPbmx5KVxyXG4gIH1cclxuXHJcbiAgaW5pdEV2ZW50cyAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lZGl0b3Iub24oJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVUZXh0KClcclxuICAgIH0pXHJcbiAgICB0aGlzLl9lZGl0b3Iub24oJ3Bhc3RlJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZVRleHQoKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZVRleHQgKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3VmFsID0gdGhpcy5fZWRpdG9yLmdldFZhbHVlKClcclxuICAgIGlmIChuZXdWYWwgPT09IHRoaXMub2xkVGV4dCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fZHVyYXRpb25CZWZvcmVDYWxsYmFjaykge1xyXG4gICAgICB0aGlzLl90ZXh0ID0gbmV3VmFsXHJcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudGV4dENoYW5nZS5lbWl0KG5ld1ZhbClcclxuICAgICAgICB0aGlzLnRleHRDaGFuZ2VkLmVtaXQobmV3VmFsKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9vbkNoYW5nZShuZXdWYWwpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy50aW1lb3V0U2F2aW5nKSB7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFNhdmluZylcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy50aW1lb3V0U2F2aW5nID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fdGV4dCA9IG5ld1ZhbFxyXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50ZXh0Q2hhbmdlLmVtaXQobmV3VmFsKVxyXG4gICAgICAgICAgdGhpcy50ZXh0Q2hhbmdlZC5lbWl0KG5ld1ZhbClcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMudGltZW91dFNhdmluZyA9IG51bGxcclxuICAgICAgfSwgdGhpcy5fZHVyYXRpb25CZWZvcmVDYWxsYmFjaylcclxuICAgIH1cclxuICAgIHRoaXMub2xkVGV4dCA9IG5ld1ZhbFxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IG9wdGlvbnMgKG9wdGlvbnM6IGFueSkge1xyXG4gICAgdGhpcy5zZXRPcHRpb25zKG9wdGlvbnMpXHJcbiAgfVxyXG5cclxuICBzZXRPcHRpb25zIChvcHRpb25zOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zXHJcbiAgICB0aGlzLl9lZGl0b3Iuc2V0T3B0aW9ucyhvcHRpb25zIHx8IHt9KVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHJlYWRPbmx5IChyZWFkT25seTogYW55KSB7XHJcbiAgICB0aGlzLnNldFJlYWRPbmx5KHJlYWRPbmx5KVxyXG4gIH1cclxuXHJcbiAgc2V0UmVhZE9ubHkgKHJlYWRPbmx5OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlYWRPbmx5ID0gcmVhZE9ubHlcclxuICAgIHRoaXMuX2VkaXRvci5zZXRSZWFkT25seShyZWFkT25seSlcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCB0aGVtZSAodGhlbWU6IGFueSkge1xyXG4gICAgdGhpcy5zZXRUaGVtZSh0aGVtZSlcclxuICB9XHJcblxyXG4gIHNldFRoZW1lICh0aGVtZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl90aGVtZSA9IHRoZW1lXHJcbiAgICB0aGlzLl9lZGl0b3Iuc2V0VGhlbWUoYGFjZS90aGVtZS8ke3RoZW1lfWApXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgbW9kZSAobW9kZTogYW55KSB7XHJcbiAgICB0aGlzLnNldE1vZGUobW9kZSlcclxuICB9XHJcblxyXG4gIHNldE1vZGUgKG1vZGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fbW9kZSA9IG1vZGVcclxuICAgIGlmICh0eXBlb2YgdGhpcy5fbW9kZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgdGhpcy5fZWRpdG9yLmdldFNlc3Npb24oKS5zZXRNb2RlKHRoaXMuX21vZGUpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9lZGl0b3IuZ2V0U2Vzc2lvbigpLnNldE1vZGUoYGFjZS9tb2RlLyR7dGhpcy5fbW9kZX1gKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbHVlICgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGV4dFxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUgKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0VGV4dCh2YWx1ZSlcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUgKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0VGV4dCh2YWx1ZSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29uQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZSAoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQgKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuXHJcbiAgfVxyXG5cclxuICBnZXQgdGV4dCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90ZXh0XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB0ZXh0ICh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0VGV4dCh0ZXh0KVxyXG4gIH1cclxuXHJcbiAgc2V0VGV4dCAodGV4dDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGV4dCA9PT0gbnVsbCB8fCB0ZXh0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGV4dCA9ICcnXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fdGV4dCAhPT0gdGV4dCAmJiB0aGlzLl9hdXRvVXBkYXRlQ29udGVudCkge1xyXG4gICAgICB0aGlzLl90ZXh0ID0gdGV4dFxyXG4gICAgICB0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGV4dClcclxuICAgICAgdGhpcy5fb25DaGFuZ2UodGV4dClcclxuICAgICAgdGhpcy5fZWRpdG9yLmNsZWFyU2VsZWN0aW9uKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBhdXRvVXBkYXRlQ29udGVudCAoc3RhdHVzOiBhbnkpIHtcclxuICAgIHRoaXMuc2V0QXV0b1VwZGF0ZUNvbnRlbnQoc3RhdHVzKVxyXG4gIH1cclxuXHJcbiAgc2V0QXV0b1VwZGF0ZUNvbnRlbnQgKHN0YXR1czogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9hdXRvVXBkYXRlQ29udGVudCA9IHN0YXR1c1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGR1cmF0aW9uQmVmb3JlQ2FsbGJhY2sgKG51bTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNldER1cmF0aW9uQmVmb3JlQ2FsbGJhY2sobnVtKVxyXG4gIH1cclxuXHJcbiAgc2V0RHVyYXRpb25CZWZvcmVDYWxsYmFjayAobnVtOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2R1cmF0aW9uQmVmb3JlQ2FsbGJhY2sgPSBudW1cclxuICB9XHJcblxyXG4gIGdldEVkaXRvciAoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl9lZGl0b3JcclxuICB9XHJcbn1cclxuIl19
|