coer-elements 0.0.21 → 0.0.23
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/coer-elements.mjs +2 -2
- package/esm2022/index.mjs +2 -0
- package/fesm2022/coer-elements.mjs +0 -4081
- package/fesm2022/coer-elements.mjs.map +1 -1
- package/index.d.ts +1 -5
- package/package.json +1 -1
- package/styles/angular-material.scss +8 -11
- package/styles/bootstrap.scss +3 -3
- package/components/index.d.ts +0 -16
- package/components/lib/coer-alert/coer-alert.component.d.ts +0 -23
- package/components/lib/coer-button/coer-button.component.d.ts +0 -44
- package/components/lib/coer-checkbox/coer-checkbox.component.d.ts +0 -28
- package/components/lib/coer-filebox/coer-filebox.component.d.ts +0 -33
- package/components/lib/coer-form/coer-form.component.d.ts +0 -33
- package/components/lib/coer-grid/coer-grid.component.d.ts +0 -53
- package/components/lib/coer-grid/coer-grid.extension.d.ts +0 -105
- package/components/lib/coer-grid/coer-grid.templates.d.ts +0 -9
- package/components/lib/coer-modal/coer-modal.component.d.ts +0 -38
- package/components/lib/coer-numberbox/coer-numberbox.component.d.ts +0 -56
- package/components/lib/coer-page-title/coer-page-title.component.d.ts +0 -12
- package/components/lib/coer-selectbox/coer-selectbox.component.d.ts +0 -75
- package/components/lib/coer-switch/coer-switch.component.d.ts +0 -31
- package/components/lib/coer-tab/coer-tab.component.d.ts +0 -35
- package/components/lib/coer-textarea/coer-textarea.component.d.ts +0 -51
- package/components/lib/coer-textbox/coer-textbox.component.d.ts +0 -57
- package/components/lib/components.module.d.ts +0 -31
- package/directives/index.d.ts +0 -3
- package/directives/lib/coer-ref.directive.d.ts +0 -14
- package/directives/lib/directives.module.d.ts +0 -8
- package/directives/lib/life-cycle.directive.d.ts +0 -16
- package/esm2022/components/index.mjs +0 -17
- package/esm2022/components/lib/coer-alert/coer-alert.component.mjs +0 -227
- package/esm2022/components/lib/coer-button/coer-button.component.mjs +0 -133
- package/esm2022/components/lib/coer-checkbox/coer-checkbox.component.mjs +0 -84
- package/esm2022/components/lib/coer-filebox/coer-filebox.component.mjs +0 -104
- package/esm2022/components/lib/coer-form/coer-form.component.mjs +0 -102
- package/esm2022/components/lib/coer-grid/coer-grid.component.mjs +0 -515
- package/esm2022/components/lib/coer-grid/coer-grid.extension.mjs +0 -412
- package/esm2022/components/lib/coer-grid/coer-grid.templates.mjs +0 -30
- package/esm2022/components/lib/coer-modal/coer-modal.component.mjs +0 -108
- package/esm2022/components/lib/coer-numberbox/coer-numberbox.component.mjs +0 -260
- package/esm2022/components/lib/coer-page-title/coer-page-title.component.mjs +0 -44
- package/esm2022/components/lib/coer-selectbox/coer-selectbox.component.mjs +0 -339
- package/esm2022/components/lib/coer-switch/coer-switch.component.mjs +0 -94
- package/esm2022/components/lib/coer-tab/coer-tab.component.mjs +0 -116
- package/esm2022/components/lib/coer-textarea/coer-textarea.component.mjs +0 -157
- package/esm2022/components/lib/coer-textbox/coer-textbox.component.mjs +0 -196
- package/esm2022/components/lib/components.module.mjs +0 -134
- package/esm2022/directives/index.mjs +0 -4
- package/esm2022/directives/lib/coer-ref.directive.mjs +0 -23
- package/esm2022/directives/lib/directives.module.mjs +0 -25
- package/esm2022/directives/lib/life-cycle.directive.mjs +0 -33
- package/esm2022/interfaces/index.mjs +0 -39
- package/esm2022/interfaces/lib/app-source.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-filebox/file-image.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-filebox/file.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-button-by-row.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-checkbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-coer-numberbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-coer-selectbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-coer-switch.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-coer-textbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-column.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-data-source.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-header-button.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-header-export-button.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-header.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-import.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-input-checkbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-input-switch-change.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-input-textbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-item.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-keyup-enter.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-length.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-search.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-sort.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-menu/menu-option-selected.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-menu/menu-selected.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-menu/menu.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-ref.interface.mjs +0 -2
- package/esm2022/interfaces/lib/page-title/breadcrumb.interface.mjs +0 -2
- package/esm2022/interfaces/lib/page-title/go-back.interface.mjs +0 -2
- package/esm2022/interfaces/lib/screen-size.interface.mjs +0 -2
- package/esm2022/interfaces/lib/service/http-request.interface.mjs +0 -2
- package/esm2022/interfaces/lib/service/http-response.interface.mjs +0 -2
- package/esm2022/interfaces/lib/service/patch.interface.mjs +0 -2
- package/esm2022/pipes/index.mjs +0 -5
- package/esm2022/pipes/lib/html.pipe.mjs +0 -18
- package/esm2022/pipes/lib/no-image.pipe.mjs +0 -23
- package/esm2022/pipes/lib/numeric-format.pipe.mjs +0 -15
- package/esm2022/pipes/lib/pipes.module.mjs +0 -31
- package/esm2022/public_api.mjs +0 -6
- package/esm2022/signals/index.mjs +0 -6
- package/esm2022/signals/lib/breakpoint.signal.mjs +0 -4
- package/esm2022/signals/lib/is-loading.signal.mjs +0 -3
- package/esm2022/signals/lib/is-menu-open.signal.mjs +0 -3
- package/esm2022/signals/lib/is-modal-open.signal.mjs +0 -3
- package/esm2022/signals/lib/menu.signal.mjs +0 -3
- package/esm2022/tools/index.mjs +0 -11
- package/esm2022/tools/lib/breadcrumbs.class.mjs +0 -63
- package/esm2022/tools/lib/control-value.class.mjs +0 -46
- package/esm2022/tools/lib/date-time.class.mjs +0 -29
- package/esm2022/tools/lib/files.class.mjs +0 -91
- package/esm2022/tools/lib/menu.class.mjs +0 -23
- package/esm2022/tools/lib/page.class.mjs +0 -156
- package/esm2022/tools/lib/screen.class.mjs +0 -51
- package/esm2022/tools/lib/service.class.mjs +0 -248
- package/esm2022/tools/lib/source.class.mjs +0 -80
- package/esm2022/tools/lib/tools.mjs +0 -220
- package/interfaces/index.d.ts +0 -33
- package/interfaces/lib/app-source.interface.d.ts +0 -4
- package/interfaces/lib/coer-filebox/file-image.interface.d.ts +0 -14
- package/interfaces/lib/coer-filebox/file.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-button-by-row.interface.d.ts +0 -6
- package/interfaces/lib/coer-grid/grid-checkbox.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-coer-numberbox.interface.d.ts +0 -12
- package/interfaces/lib/coer-grid/grid-coer-selectbox.interface.d.ts +0 -9
- package/interfaces/lib/coer-grid/grid-coer-switch.interface.d.ts +0 -6
- package/interfaces/lib/coer-grid/grid-coer-textbox.interface.d.ts +0 -11
- package/interfaces/lib/coer-grid/grid-column.interface.d.ts +0 -22
- package/interfaces/lib/coer-grid/grid-data-source.interface.d.ts +0 -6
- package/interfaces/lib/coer-grid/grid-header-button.interface.d.ts +0 -8
- package/interfaces/lib/coer-grid/grid-header-export-button.interface.d.ts +0 -10
- package/interfaces/lib/coer-grid/grid-header.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-import.interface.d.ts +0 -4
- package/interfaces/lib/coer-grid/grid-input-checkbox.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-input-switch-change.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-input-textbox.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-item.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-keyup-enter.interface.d.ts +0 -6
- package/interfaces/lib/coer-grid/grid-length.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-search.interface.d.ts +0 -4
- package/interfaces/lib/coer-grid/grid-sort.interface.d.ts +0 -5
- package/interfaces/lib/coer-menu/menu-option-selected.interface.d.ts +0 -9
- package/interfaces/lib/coer-menu/menu-selected.interface.d.ts +0 -10
- package/interfaces/lib/coer-menu/menu.interface.d.ts +0 -6
- package/interfaces/lib/coer-ref.interface.d.ts +0 -10
- package/interfaces/lib/page-title/breadcrumb.interface.d.ts +0 -6
- package/interfaces/lib/page-title/go-back.interface.d.ts +0 -6
- package/interfaces/lib/screen-size.interface.d.ts +0 -5
- package/interfaces/lib/service/http-request.interface.d.ts +0 -10
- package/interfaces/lib/service/http-response.interface.d.ts +0 -6
- package/interfaces/lib/service/patch.interface.d.ts +0 -5
- package/pipes/index.d.ts +0 -4
- package/pipes/lib/html.pipe.d.ts +0 -10
- package/pipes/lib/no-image.pipe.d.ts +0 -7
- package/pipes/lib/numeric-format.pipe.d.ts +0 -7
- package/pipes/lib/pipes.module.d.ts +0 -9
- package/public_api.d.ts +0 -1
- package/signals/index.d.ts +0 -5
- package/signals/lib/breakpoint.signal.d.ts +0 -1
- package/signals/lib/is-loading.signal.d.ts +0 -1
- package/signals/lib/is-menu-open.signal.d.ts +0 -1
- package/signals/lib/is-modal-open.signal.d.ts +0 -1
- package/signals/lib/menu.signal.d.ts +0 -2
- package/tools/index.d.ts +0 -10
- package/tools/lib/breadcrumbs.class.d.ts +0 -18
- package/tools/lib/control-value.class.d.ts +0 -25
- package/tools/lib/date-time.class.d.ts +0 -13
- package/tools/lib/files.class.d.ts +0 -16
- package/tools/lib/menu.class.d.ts +0 -8
- package/tools/lib/page.class.d.ts +0 -60
- package/tools/lib/screen.class.d.ts +0 -13
- package/tools/lib/service.class.d.ts +0 -39
- package/tools/lib/source.class.d.ts +0 -20
- package/tools/lib/tools.d.ts +0 -34
@@ -1,31 +0,0 @@
|
|
1
|
-
import { OnDestroy, OnInit } from '@angular/core';
|
2
|
-
import { MatSlideToggle } from '@angular/material/slide-toggle';
|
3
|
-
import { ControlValue } from '../../../tools/lib/control-value.class';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
export declare class CoerSwitch extends ControlValue implements OnInit, OnDestroy {
|
6
|
-
protected _value: boolean;
|
7
|
-
protected _id: string;
|
8
|
-
private _tooltip;
|
9
|
-
private _tooltipElement;
|
10
|
-
coerSwitch: MatSlideToggle;
|
11
|
-
set value(value: boolean | null | undefined);
|
12
|
-
id: string;
|
13
|
-
label: import("@angular/core").InputSignal<string>;
|
14
|
-
labelPosition: import("@angular/core").InputSignal<"before" | "after">;
|
15
|
-
isDisabled: import("@angular/core").InputSignal<boolean>;
|
16
|
-
isLoading: import("@angular/core").InputSignal<boolean>;
|
17
|
-
isInvisible: import("@angular/core").InputSignal<boolean>;
|
18
|
-
tooltipPosition: import("@angular/core").InputSignal<"left" | "right" | "top" | "bottom">;
|
19
|
-
set tooltip(value: string);
|
20
|
-
onChange: import("@angular/core").OutputEmitterRef<boolean>;
|
21
|
-
ngOnInit(): void;
|
22
|
-
ngOnDestroy(): void;
|
23
|
-
get value(): boolean | null | undefined;
|
24
|
-
protected _isEnable: import("@angular/core").Signal<boolean>;
|
25
|
-
/** */
|
26
|
-
Focus(): void;
|
27
|
-
/** */
|
28
|
-
protected Change(value: boolean): void;
|
29
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CoerSwitch, never>;
|
30
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CoerSwitch, "coer-switch", never, { "value": { "alias": "value"; "required": false; }; "id": { "alias": "id"; "required": false; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "isInvisible": { "alias": "isInvisible"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; }; }, { "onChange": "onChange"; }, never, never, false, never>;
|
31
|
-
}
|
@@ -1,35 +0,0 @@
|
|
1
|
-
import { OnInit, OnDestroy } from '@angular/core';
|
2
|
-
import { MatTabGroup } from '@angular/material/tabs';
|
3
|
-
import { ICoerRef } from '../../../interfaces';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
export declare class CoerTab implements OnInit, OnDestroy {
|
6
|
-
contentRef: any;
|
7
|
-
protected _id: string;
|
8
|
-
protected _selectedIndex: number;
|
9
|
-
private _matTabGroup;
|
10
|
-
protected matTabGroup: import("@angular/core").Signal<MatTabGroup>;
|
11
|
-
private _tooltipList;
|
12
|
-
height: import("@angular/core").InputSignal<string>;
|
13
|
-
minHeight: import("@angular/core").InputSignal<string>;
|
14
|
-
maxHeight: import("@angular/core").InputSignal<string>;
|
15
|
-
set selectedIndex(value: number);
|
16
|
-
set alignTabs(value: 'start' | 'center' | 'end');
|
17
|
-
protected contentList: import("@angular/core").Signal<ICoerRef[]>;
|
18
|
-
onSelectedTab: import("@angular/core").OutputEmitterRef<ICoerRef>;
|
19
|
-
ngOnInit(): void;
|
20
|
-
ngOnDestroy(): void;
|
21
|
-
/** */
|
22
|
-
protected SelectedIndexChange(selectedIndex: number): void;
|
23
|
-
/** */
|
24
|
-
protected GetTitle(tab: ICoerRef): string;
|
25
|
-
/** */
|
26
|
-
protected GetIcon(tab: ICoerRef): string;
|
27
|
-
/** */
|
28
|
-
SelectTabBy(callback: (tab: ICoerRef) => boolean): void;
|
29
|
-
/** */
|
30
|
-
protected SetToolTip(tab: ICoerRef): string;
|
31
|
-
/** */
|
32
|
-
protected RemoveTooltip(element: HTMLElement): void;
|
33
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CoerTab, never>;
|
34
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CoerTab, "coer-tab", never, { "height": { "alias": "height"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "selectedIndex": { "alias": "selectedIndex"; "required": false; }; "alignTabs": { "alias": "alignTabs"; "required": false; }; }, { "onSelectedTab": "onSelectedTab"; }, ["contentRef"], never, false, never>;
|
35
|
-
}
|
@@ -1,51 +0,0 @@
|
|
1
|
-
import { ElementRef, OnInit } from '@angular/core';
|
2
|
-
import { ControlValue } from '../../../tools/lib/control-value.class';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export declare class CoerTextarea extends ControlValue implements OnInit {
|
5
|
-
protected _value: string | number;
|
6
|
-
protected matFormField: import("@angular/core").Signal<ElementRef<any>>;
|
7
|
-
protected coerTextBox: import("@angular/core").Signal<ElementRef<any>>;
|
8
|
-
protected _id: string;
|
9
|
-
protected _isLoadingEvent: import("@angular/core").WritableSignal<boolean>;
|
10
|
-
private element;
|
11
|
-
set value(value: string | number | null | undefined);
|
12
|
-
id: string;
|
13
|
-
label: import("@angular/core").InputSignal<string>;
|
14
|
-
placeholder: import("@angular/core").InputSignal<string>;
|
15
|
-
minLength: import("@angular/core").InputSignal<string | number>;
|
16
|
-
maxLength: import("@angular/core").InputSignal<string | number>;
|
17
|
-
width: import("@angular/core").InputSignal<string>;
|
18
|
-
minWidth: import("@angular/core").InputSignal<string>;
|
19
|
-
maxWidth: import("@angular/core").InputSignal<string>;
|
20
|
-
marginTop: import("@angular/core").InputSignal<string>;
|
21
|
-
marginRight: import("@angular/core").InputSignal<string>;
|
22
|
-
marginBottom: import("@angular/core").InputSignal<string>;
|
23
|
-
marginLeft: import("@angular/core").InputSignal<string>;
|
24
|
-
isInvalid: import("@angular/core").InputSignal<boolean>;
|
25
|
-
isValid: import("@angular/core").InputSignal<boolean>;
|
26
|
-
isDisabled: import("@angular/core").InputSignal<boolean>;
|
27
|
-
isReadonly: import("@angular/core").InputSignal<boolean>;
|
28
|
-
isLoading: import("@angular/core").InputSignal<boolean>;
|
29
|
-
showFooter: import("@angular/core").InputSignal<boolean>;
|
30
|
-
resize: import("@angular/core").InputSignal<boolean>;
|
31
|
-
textPosition: import("@angular/core").InputSignal<"left" | "right" | "center">;
|
32
|
-
onInput: import("@angular/core").OutputEmitterRef<string | number>;
|
33
|
-
ngOnInit(): void;
|
34
|
-
get value(): string | number | null | undefined;
|
35
|
-
get footer(): string;
|
36
|
-
protected _isEnable: import("@angular/core").Signal<boolean>;
|
37
|
-
protected floatLabel: import("@angular/core").Signal<"auto" | "always">;
|
38
|
-
protected paddingRight: import("@angular/core").Signal<"0px" | "18px">;
|
39
|
-
/** */
|
40
|
-
private SetEvents;
|
41
|
-
/** */
|
42
|
-
Focus(timeout?: number): void;
|
43
|
-
/** */
|
44
|
-
Select(timeout?: number): void;
|
45
|
-
/** */
|
46
|
-
Blur(): void;
|
47
|
-
/** */
|
48
|
-
Clear(): void;
|
49
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CoerTextarea, never>;
|
50
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CoerTextarea, "coer-textarea", never, { "value": { "alias": "value"; "required": false; }; "id": { "alias": "id"; "required": false; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "marginTop": { "alias": "marginTop"; "required": false; "isSignal": true; }; "marginRight": { "alias": "marginRight"; "required": false; "isSignal": true; }; "marginBottom": { "alias": "marginBottom"; "required": false; "isSignal": true; }; "marginLeft": { "alias": "marginLeft"; "required": false; "isSignal": true; }; "isInvalid": { "alias": "isInvalid"; "required": false; "isSignal": true; }; "isValid": { "alias": "isValid"; "required": false; "isSignal": true; }; "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; "isReadonly": { "alias": "isReadonly"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "textPosition": { "alias": "textPosition"; "required": false; "isSignal": true; }; }, { "onInput": "onInput"; }, never, never, false, never>;
|
51
|
-
}
|
@@ -1,57 +0,0 @@
|
|
1
|
-
import { ElementRef, OnInit } from '@angular/core';
|
2
|
-
import { ControlValue } from '../../../tools/lib/control-value.class';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export declare class CoerTextBox extends ControlValue implements OnInit {
|
5
|
-
protected _value: string | number;
|
6
|
-
protected matFormField: import("@angular/core").Signal<ElementRef<any>>;
|
7
|
-
protected coerTextBox: import("@angular/core").Signal<ElementRef<any>>;
|
8
|
-
protected _id: string;
|
9
|
-
protected _isLoadingEvent: import("@angular/core").WritableSignal<boolean>;
|
10
|
-
private element;
|
11
|
-
set value(value: string | number | null | undefined);
|
12
|
-
id: string;
|
13
|
-
label: import("@angular/core").InputSignal<string>;
|
14
|
-
placeholder: import("@angular/core").InputSignal<string>;
|
15
|
-
minLength: import("@angular/core").InputSignal<string | number>;
|
16
|
-
maxLength: import("@angular/core").InputSignal<string | number>;
|
17
|
-
showSearchIcon: import("@angular/core").InputSignal<boolean>;
|
18
|
-
showClearIcon: import("@angular/core").InputSignal<boolean>;
|
19
|
-
width: import("@angular/core").InputSignal<string>;
|
20
|
-
minWidth: import("@angular/core").InputSignal<string>;
|
21
|
-
maxWidth: import("@angular/core").InputSignal<string>;
|
22
|
-
marginTop: import("@angular/core").InputSignal<string>;
|
23
|
-
marginRight: import("@angular/core").InputSignal<string>;
|
24
|
-
marginBottom: import("@angular/core").InputSignal<string>;
|
25
|
-
marginLeft: import("@angular/core").InputSignal<string>;
|
26
|
-
isInvalid: import("@angular/core").InputSignal<boolean>;
|
27
|
-
isValid: import("@angular/core").InputSignal<boolean>;
|
28
|
-
isDisabled: import("@angular/core").InputSignal<boolean>;
|
29
|
-
isReadonly: import("@angular/core").InputSignal<boolean>;
|
30
|
-
isLoading: import("@angular/core").InputSignal<boolean>;
|
31
|
-
selectOnFocus: import("@angular/core").InputSignal<boolean>;
|
32
|
-
textPosition: import("@angular/core").InputSignal<"left" | "right" | "center">;
|
33
|
-
onKeyupEnter: import("@angular/core").OutputEmitterRef<string | number>;
|
34
|
-
onInput: import("@angular/core").OutputEmitterRef<string | number>;
|
35
|
-
onClickClear: import("@angular/core").OutputEmitterRef<void>;
|
36
|
-
ngOnInit(): void;
|
37
|
-
protected get _showSearchIcon(): boolean;
|
38
|
-
protected get _showClearIcon(): boolean;
|
39
|
-
get value(): string | number | null | undefined;
|
40
|
-
protected _isEnable: import("@angular/core").Signal<boolean>;
|
41
|
-
protected floatLabel: import("@angular/core").Signal<"auto" | "always">;
|
42
|
-
protected paddingRight: import("@angular/core").Signal<"0px" | "18px">;
|
43
|
-
/** */
|
44
|
-
private SetEvents;
|
45
|
-
/** */
|
46
|
-
Focus(timeout?: number): void;
|
47
|
-
/** */
|
48
|
-
Select(timeout?: number): void;
|
49
|
-
/** */
|
50
|
-
Blur(): void;
|
51
|
-
/** */
|
52
|
-
Clear(): void;
|
53
|
-
/** */
|
54
|
-
protected ClickSearch(): void;
|
55
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CoerTextBox, never>;
|
56
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CoerTextBox, "coer-textbox", never, { "value": { "alias": "value"; "required": false; }; "id": { "alias": "id"; "required": false; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "showSearchIcon": { "alias": "showSearchIcon"; "required": false; "isSignal": true; }; "showClearIcon": { "alias": "showClearIcon"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "marginTop": { "alias": "marginTop"; "required": false; "isSignal": true; }; "marginRight": { "alias": "marginRight"; "required": false; "isSignal": true; }; "marginBottom": { "alias": "marginBottom"; "required": false; "isSignal": true; }; "marginLeft": { "alias": "marginLeft"; "required": false; "isSignal": true; }; "isInvalid": { "alias": "isInvalid"; "required": false; "isSignal": true; }; "isValid": { "alias": "isValid"; "required": false; "isSignal": true; }; "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; "isReadonly": { "alias": "isReadonly"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "selectOnFocus": { "alias": "selectOnFocus"; "required": false; "isSignal": true; }; "textPosition": { "alias": "textPosition"; "required": false; "isSignal": true; }; }, { "onKeyupEnter": "onKeyupEnter"; "onInput": "onInput"; "onClickClear": "onClickClear"; }, never, never, false, never>;
|
57
|
-
}
|
@@ -1,31 +0,0 @@
|
|
1
|
-
import * as i0 from "@angular/core";
|
2
|
-
import * as i1 from "./coer-alert/coer-alert.component";
|
3
|
-
import * as i2 from "./coer-button/coer-button.component";
|
4
|
-
import * as i3 from "./coer-checkbox/coer-checkbox.component";
|
5
|
-
import * as i4 from "./coer-filebox/coer-filebox.component";
|
6
|
-
import * as i5 from "./coer-form/coer-form.component";
|
7
|
-
import * as i6 from "./coer-grid/coer-grid.component";
|
8
|
-
import * as i7 from "./coer-modal/coer-modal.component";
|
9
|
-
import * as i8 from "./coer-numberbox/coer-numberbox.component";
|
10
|
-
import * as i9 from "./coer-page-title/coer-page-title.component";
|
11
|
-
import * as i10 from "./coer-selectbox/coer-selectbox.component";
|
12
|
-
import * as i11 from "./coer-switch/coer-switch.component";
|
13
|
-
import * as i12 from "./coer-tab/coer-tab.component";
|
14
|
-
import * as i13 from "./coer-textarea/coer-textarea.component";
|
15
|
-
import * as i14 from "./coer-textbox/coer-textbox.component";
|
16
|
-
import * as i15 from "@angular/common";
|
17
|
-
import * as i16 from "@angular/router";
|
18
|
-
import * as i17 from "@angular/forms";
|
19
|
-
import * as i18 from "../../pipes/lib/pipes.module";
|
20
|
-
import * as i19 from "@angular/material/button";
|
21
|
-
import * as i20 from "@angular/material/checkbox";
|
22
|
-
import * as i21 from "@angular/material/input";
|
23
|
-
import * as i22 from "@angular/material/form-field";
|
24
|
-
import * as i23 from "@angular/material/slide-toggle";
|
25
|
-
import * as i24 from "@angular/material/tabs";
|
26
|
-
import * as i25 from "../../directives/lib/directives.module";
|
27
|
-
export declare class ComponentsModule {
|
28
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ComponentsModule, never>;
|
29
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ComponentsModule, [typeof i1.CoerAlert, typeof i2.CoerButton, typeof i3.CoerCheckbox, typeof i4.CoerFilebox, typeof i5.CoerForm, typeof i6.CoerGrid, typeof i7.CoerModal, typeof i8.CoerNumberBox, typeof i9.CoerPageTitle, typeof i10.CoerSelectbox, typeof i11.CoerSwitch, typeof i12.CoerTab, typeof i13.CoerTextarea, typeof i14.CoerTextBox], [typeof i15.CommonModule, typeof i16.RouterModule, typeof i17.FormsModule, typeof i17.ReactiveFormsModule, typeof i18.PipesModule, typeof i19.MatButtonModule, typeof i20.MatCheckboxModule, typeof i21.MatInputModule, typeof i22.MatFormFieldModule, typeof i23.MatSlideToggleModule, typeof i24.MatTabsModule, typeof i25.DirectivesModule], [typeof i1.CoerAlert, typeof i2.CoerButton, typeof i3.CoerCheckbox, typeof i4.CoerFilebox, typeof i5.CoerForm, typeof i6.CoerGrid, typeof i7.CoerModal, typeof i8.CoerNumberBox, typeof i9.CoerPageTitle, typeof i10.CoerSelectbox, typeof i11.CoerSwitch, typeof i12.CoerTab, typeof i13.CoerTextarea, typeof i14.CoerTextBox]>;
|
30
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<ComponentsModule>;
|
31
|
-
}
|
package/directives/index.d.ts
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
import { TemplateRef } from "@angular/core";
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export declare class CoerRefDirective {
|
4
|
-
template: TemplateRef<any>;
|
5
|
-
coerRef: import("@angular/core").InputSignal<string>;
|
6
|
-
title: import("@angular/core").InputSignal<string>;
|
7
|
-
icon: import("@angular/core").InputSignal<string>;
|
8
|
-
isDisabled: import("@angular/core").InputSignal<boolean>;
|
9
|
-
show: import("@angular/core").InputSignal<boolean>;
|
10
|
-
tooltip: import("@angular/core").InputSignal<string>;
|
11
|
-
constructor(template: TemplateRef<any>);
|
12
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CoerRefDirective, never>;
|
13
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<CoerRefDirective, "[coerRef]", never, { "coerRef": { "alias": "coerRef"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; "show": { "alias": "show"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
|
14
|
-
}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import * as i0 from "@angular/core";
|
2
|
-
import * as i1 from "./coer-ref.directive";
|
3
|
-
import * as i2 from "./life-cycle.directive";
|
4
|
-
export declare class DirectivesModule {
|
5
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DirectivesModule, never>;
|
6
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<DirectivesModule, [typeof i1.CoerRefDirective, typeof i2.LifeCycleDirective], never, [typeof i1.CoerRefDirective, typeof i2.LifeCycleDirective]>;
|
7
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<DirectivesModule>;
|
8
|
-
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import { OnDestroy, OnInit, ElementRef, AfterViewInit, OnChanges, SimpleChanges } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export declare class LifeCycleDirective implements OnChanges, OnInit, AfterViewInit, OnDestroy {
|
4
|
-
private element;
|
5
|
-
OnChanges: import("@angular/core").OutputEmitterRef<SimpleChanges>;
|
6
|
-
onInit: import("@angular/core").OutputEmitterRef<HTMLElement>;
|
7
|
-
afterViewInit: import("@angular/core").OutputEmitterRef<HTMLElement>;
|
8
|
-
onDestroy: import("@angular/core").OutputEmitterRef<HTMLElement>;
|
9
|
-
constructor(element: ElementRef);
|
10
|
-
ngOnChanges(changes: SimpleChanges): void;
|
11
|
-
ngOnInit(): void;
|
12
|
-
ngAfterViewInit(): void;
|
13
|
-
ngOnDestroy(): void;
|
14
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LifeCycleDirective, never>;
|
15
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<LifeCycleDirective, "[lifecycle]", never, {}, { "OnChanges": "OnChanges"; "onInit": "onInit"; "afterViewInit": "afterViewInit"; "onDestroy": "onDestroy"; }, never, never, false, never>;
|
16
|
-
}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
export * from './lib/components.module';
|
2
|
-
export * from './lib/coer-alert/coer-alert.component';
|
3
|
-
export * from './lib/coer-button/coer-button.component';
|
4
|
-
export * from './lib/coer-checkbox/coer-checkbox.component';
|
5
|
-
export * from './lib/coer-filebox/coer-filebox.component';
|
6
|
-
export * from './lib/coer-form/coer-form.component';
|
7
|
-
export * from './lib/coer-grid/coer-grid.component';
|
8
|
-
export * from './lib/coer-grid/coer-grid.templates';
|
9
|
-
export * from './lib/coer-modal/coer-modal.component';
|
10
|
-
export * from './lib/coer-numberbox/coer-numberbox.component';
|
11
|
-
export * from './lib/coer-page-title/coer-page-title.component';
|
12
|
-
export * from './lib/coer-selectbox/coer-selectbox.component';
|
13
|
-
export * from './lib/coer-switch/coer-switch.component';
|
14
|
-
export * from './lib/coer-tab/coer-tab.component';
|
15
|
-
export * from './lib/coer-textarea/coer-textarea.component';
|
16
|
-
export * from './lib/coer-textbox/coer-textbox.component';
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsMkNBQTJDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItYWxlcnQvY29lci1hbGVydC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWJ1dHRvbi9jb2VyLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWNoZWNrYm94L2NvZXItY2hlY2tib3guY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1maWxlYm94L2NvZXItZmlsZWJveC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWZvcm0vY29lci1mb3JtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9jb2VyLWdyaWQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2NvZXItZ3JpZC50ZW1wbGF0ZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLW1vZGFsL2NvZXItbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1udW1iZXJib3gvY29lci1udW1iZXJib3guY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1wYWdlLXRpdGxlL2NvZXItcGFnZS10aXRsZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLXNlbGVjdGJveC9jb2VyLXNlbGVjdGJveC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLXN3aXRjaC9jb2VyLXN3aXRjaC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLXRhYi9jb2VyLXRhYi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLXRleHRhcmVhL2NvZXItdGV4dGFyZWEuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci10ZXh0Ym94L2NvZXItdGV4dGJveC5jb21wb25lbnQnOyJdfQ==
|
@@ -1,227 +0,0 @@
|
|
1
|
-
import { Component } from '@angular/core';
|
2
|
-
import * as bootstrap from 'bootstrap';
|
3
|
-
import Swal from 'sweetalert2';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
export class CoerAlert {
|
6
|
-
/** */
|
7
|
-
Success(message = null, title = null, icon = null, autohide = 3000) {
|
8
|
-
//Title
|
9
|
-
if (!title || title == '')
|
10
|
-
title = 'Success';
|
11
|
-
const alertSuccessTitle = document.getElementById('alert-success-title');
|
12
|
-
alertSuccessTitle.textContent = title;
|
13
|
-
//Icon
|
14
|
-
icon = this.GetIcon(title, icon, 'bi-check-circle fa-beat');
|
15
|
-
const alertSuccessIcon = document.getElementById('alert-success-icon');
|
16
|
-
this.SetIcon(alertSuccessIcon, icon);
|
17
|
-
//Message
|
18
|
-
if (!message)
|
19
|
-
message = '';
|
20
|
-
const alertSuccessMessage = document.getElementById('alert-success-message');
|
21
|
-
alertSuccessMessage.innerHTML = message;
|
22
|
-
//Toast
|
23
|
-
const alertSuccess = document.getElementById('alert-success');
|
24
|
-
this.SetAutoHide(alertSuccess, autohide);
|
25
|
-
const toast = bootstrap.Toast.getOrCreateInstance(alertSuccess);
|
26
|
-
toast.show();
|
27
|
-
}
|
28
|
-
/** */
|
29
|
-
Error(message = null, title = null, icon = null, autohide = 3000) {
|
30
|
-
//Title
|
31
|
-
if (!title || title == '')
|
32
|
-
title = 'Error';
|
33
|
-
const alertErrorTitle = document.getElementById('alert-error-title');
|
34
|
-
alertErrorTitle.textContent = title;
|
35
|
-
//Icon
|
36
|
-
icon = this.GetIcon(title, icon, 'bi-exclamation-octagon fa-beat');
|
37
|
-
const alertErrorIcon = document.getElementById('alert-error-icon');
|
38
|
-
this.SetIcon(alertErrorIcon, icon);
|
39
|
-
//Message
|
40
|
-
if (!message)
|
41
|
-
message = '';
|
42
|
-
const alertErrorBody = document.getElementById('alert-error-message');
|
43
|
-
alertErrorBody.innerHTML = message;
|
44
|
-
//Toast
|
45
|
-
const alertError = document.getElementById('alert-error');
|
46
|
-
this.SetAutoHide(alertError, autohide);
|
47
|
-
const toast = bootstrap.Toast.getOrCreateInstance(alertError);
|
48
|
-
toast.show();
|
49
|
-
}
|
50
|
-
/** */
|
51
|
-
Info(message = null, title = null, icon = null, autohide = 3000) {
|
52
|
-
//Title
|
53
|
-
if (!title || title == '')
|
54
|
-
title = 'Info';
|
55
|
-
const alertInfoTitle = document.getElementById('alert-info-title');
|
56
|
-
alertInfoTitle.textContent = title;
|
57
|
-
//Icon
|
58
|
-
icon = this.GetIcon(title, icon, 'bi-info-circle fa-beat');
|
59
|
-
const alertInfoIcon = document.getElementById('alert-info-icon');
|
60
|
-
this.SetIcon(alertInfoIcon, icon);
|
61
|
-
//Message
|
62
|
-
if (!message)
|
63
|
-
message = '';
|
64
|
-
const alertInfoBody = document.getElementById('alert-info-message');
|
65
|
-
alertInfoBody.innerHTML = message;
|
66
|
-
//Toast
|
67
|
-
const alertInfo = document.getElementById('alert-info');
|
68
|
-
this.SetAutoHide(alertInfo, autohide);
|
69
|
-
const toast = bootstrap.Toast.getOrCreateInstance(alertInfo);
|
70
|
-
toast.show();
|
71
|
-
}
|
72
|
-
/** */
|
73
|
-
Warning(message = null, title = null, icon = null, autohide = 3000) {
|
74
|
-
//Title
|
75
|
-
if (!title || title == '')
|
76
|
-
title = 'Warning';
|
77
|
-
const alertWarningTitle = document.getElementById('alert-warning-title');
|
78
|
-
alertWarningTitle.textContent = title;
|
79
|
-
//Icon
|
80
|
-
icon = this.GetIcon(title, icon, 'bi-exclamation-triangle-fill fa-beat');
|
81
|
-
const alertWarningIcon = document.getElementById('alert-warning-icon');
|
82
|
-
this.SetIcon(alertWarningIcon, icon);
|
83
|
-
//Message
|
84
|
-
if (!message)
|
85
|
-
message = '';
|
86
|
-
const alertWarningBody = document.getElementById('alert-warning-message');
|
87
|
-
alertWarningBody.innerHTML = message;
|
88
|
-
//Toast
|
89
|
-
const alertWarning = document.getElementById('alert-warning');
|
90
|
-
this.SetAutoHide(alertWarning, autohide);
|
91
|
-
const toast = bootstrap.Toast.getOrCreateInstance(alertWarning);
|
92
|
-
toast.show();
|
93
|
-
}
|
94
|
-
/** */
|
95
|
-
Close(alert) {
|
96
|
-
return new Promise(Resolve => {
|
97
|
-
const element = document.getElementById(alert);
|
98
|
-
const toast = bootstrap.Toast.getOrCreateInstance(element);
|
99
|
-
toast.hide();
|
100
|
-
setTimeout(() => { Resolve(); }, 200);
|
101
|
-
});
|
102
|
-
}
|
103
|
-
/** */
|
104
|
-
Confirm(message = 'Proceed?', alertType = 'warning', icon = null) {
|
105
|
-
return new Promise(Resolve => {
|
106
|
-
let color;
|
107
|
-
let iconType;
|
108
|
-
switch (alertType) {
|
109
|
-
case 'danger':
|
110
|
-
{
|
111
|
-
if (icon == null)
|
112
|
-
icon = 'bi-exclamation-octagon';
|
113
|
-
iconType = 'error';
|
114
|
-
color = '#dc3545'; //red
|
115
|
-
break;
|
116
|
-
}
|
117
|
-
;
|
118
|
-
case 'success':
|
119
|
-
{
|
120
|
-
if (icon == null)
|
121
|
-
icon = 'bi-check-circle';
|
122
|
-
iconType = 'info';
|
123
|
-
color = '#198754'; //green
|
124
|
-
break;
|
125
|
-
}
|
126
|
-
;
|
127
|
-
case 'info':
|
128
|
-
{
|
129
|
-
if (icon == null)
|
130
|
-
icon = 'bi-info-circle';
|
131
|
-
iconType = 'error';
|
132
|
-
color = '#0d6efd'; //blue
|
133
|
-
break;
|
134
|
-
}
|
135
|
-
;
|
136
|
-
default: {
|
137
|
-
if (icon == null)
|
138
|
-
icon = 'bi-exclamation-triangle-fill';
|
139
|
-
iconType = 'warning';
|
140
|
-
color = '#ffc107'; //yellow
|
141
|
-
break;
|
142
|
-
}
|
143
|
-
}
|
144
|
-
switch (icon) {
|
145
|
-
case 'delete':
|
146
|
-
icon = 'fa-regular fa-trash-can';
|
147
|
-
break;
|
148
|
-
}
|
149
|
-
Swal.fire({
|
150
|
-
icon: iconType,
|
151
|
-
iconColor: 'transparent',
|
152
|
-
iconHtml: `<i class="${icon}" style="color: ${color};"></i>`,
|
153
|
-
html: message,
|
154
|
-
showConfirmButton: true,
|
155
|
-
confirmButtonText: 'Yes',
|
156
|
-
confirmButtonColor: color,
|
157
|
-
focusConfirm: true,
|
158
|
-
showDenyButton: true,
|
159
|
-
denyButtonColor: color,
|
160
|
-
focusDeny: false,
|
161
|
-
reverseButtons: true,
|
162
|
-
allowOutsideClick: false,
|
163
|
-
allowEscapeKey: false,
|
164
|
-
allowEnterKey: true,
|
165
|
-
customClass: {
|
166
|
-
denyButton: 'sweet-alert-button',
|
167
|
-
confirmButton: 'sweet-alert-button'
|
168
|
-
}
|
169
|
-
}).then(({ value }) => setTimeout(() => Resolve(value)));
|
170
|
-
});
|
171
|
-
}
|
172
|
-
/** */
|
173
|
-
SetIcon(element, icon) {
|
174
|
-
for (const item of [...element.classList.value.split(' ')]) {
|
175
|
-
if (item.length > 0) {
|
176
|
-
element.classList.remove(item);
|
177
|
-
element.classList.remove('q');
|
178
|
-
}
|
179
|
-
}
|
180
|
-
icon = icon.trim();
|
181
|
-
const hasWhiteSpaces = / /;
|
182
|
-
if (hasWhiteSpaces.test(icon)) {
|
183
|
-
const classes = icon.split(' ');
|
184
|
-
for (const icon of classes)
|
185
|
-
element.classList.add(icon);
|
186
|
-
}
|
187
|
-
else
|
188
|
-
element.classList.add(icon);
|
189
|
-
}
|
190
|
-
/** */
|
191
|
-
SetAutoHide(element, autohide) {
|
192
|
-
element.removeAttribute('data-bs-autohide');
|
193
|
-
element.removeAttribute('data-bs-delay');
|
194
|
-
if (autohide && autohide > 0) {
|
195
|
-
if (autohide < 1000)
|
196
|
-
autohide = 1000;
|
197
|
-
element.setAttribute('data-bs-autohide', 'true');
|
198
|
-
element.setAttribute('data-bs-delay', String(autohide));
|
199
|
-
}
|
200
|
-
else
|
201
|
-
element.setAttribute('data-bs-autohide', 'false');
|
202
|
-
}
|
203
|
-
/** */
|
204
|
-
GetIcon(title, icon, iconDefault) {
|
205
|
-
if (icon == null || icon == '') {
|
206
|
-
title = title.replaceAll(' ', '').toUpperCase();
|
207
|
-
switch (title) {
|
208
|
-
case 'ENABLED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';
|
209
|
-
case 'ACTIVE': return 'fa-solid fa-thumbs-up fa-flip-horizontal';
|
210
|
-
case 'ACTIVED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';
|
211
|
-
case 'DISABLE': return 'fa-solid fa-thumbs-down fa-flip-horizontal';
|
212
|
-
case 'DISABLED': return 'fa-solid fa-thumbs-down fa-flip-horizontal';
|
213
|
-
case 'DELETE': return 'fa-regular fa-trash-can';
|
214
|
-
case 'DELETED': return 'fa-regular fa-trash-can';
|
215
|
-
default: return iconDefault;
|
216
|
-
}
|
217
|
-
}
|
218
|
-
return icon;
|
219
|
-
}
|
220
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerAlert, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
221
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CoerAlert, selector: "coer-alert", ngImport: i0, template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }); }
|
222
|
-
}
|
223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerAlert, decorators: [{
|
224
|
-
type: Component,
|
225
|
-
args: [{ selector: 'coer-alert', template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }]
|
226
|
-
}] });
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1hbGVydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL2xpYi9jb2VyLWFsZXJ0L2NvZXItYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9saWIvY29lci1hbGVydC9jb2VyLWFsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxLQUFLLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFBOztBQU85QixNQUFNLE9BQU8sU0FBUztJQUVsQixNQUFNO0lBQ0MsT0FBTyxDQUFDLFVBQXlCLElBQUksRUFBRSxRQUF1QixJQUFJLEVBQUUsT0FBc0IsSUFBSSxFQUFFLFdBQTBCLElBQUk7UUFDakksT0FBTztRQUNQLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxJQUFJLEVBQUU7WUFBRSxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQzdDLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBRSxDQUFDO1FBQzFFLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFFdEMsTUFBTTtRQUNOLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUM1RCxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUUsQ0FBQztRQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXJDLFNBQVM7UUFDVCxJQUFJLENB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QUNoRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8seUJBQXlCLENBQUM7Z0JBQ2pELE9BQU8sQ0FBQyxDQUFDLE9BQU8sV0FBVyxDQUFDO1lBQ2hDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzsrR0E5T1EsU0FBUzttR0FBVCxTQUFTLGtEQ1R0QiwrckVBdURROzs0RkQ5Q0ssU0FBUztrQkFMckIsU0FBUzsrQkFDSSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIGJvb3RzdHJhcCBmcm9tICdib290c3RyYXAnO1xyXG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0MidcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjb2VyLWFsZXJ0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2VyLWFsZXJ0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NvZXItYWxlcnQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29lckFsZXJ0IHtcclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsLCB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCA9IDMwMDApOiB2b2lkIHtcclxuICAgICAgICAvL1RpdGxlXHJcbiAgICAgICAgaWYgKCF0aXRsZSB8fCB0aXRsZSA9PSAnJykgdGl0bGUgPSAnU3VjY2Vzcyc7XHJcbiAgICAgICAgY29uc3QgYWxlcnRTdWNjZXNzVGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtc3VjY2Vzcy10aXRsZScpITtcclxuICAgICAgICBhbGVydFN1Y2Nlc3NUaXRsZS50ZXh0Q29udGVudCA9IHRpdGxlO1xyXG5cclxuICAgICAgICAvL0ljb25cclxuICAgICAgICBpY29uID0gdGhpcy5HZXRJY29uKHRpdGxlLCBpY29uLCAnYmktY2hlY2stY2lyY2xlIGZhLWJlYXQnKTtcclxuICAgICAgICBjb25zdCBhbGVydFN1Y2Nlc3NJY29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LXN1Y2Nlc3MtaWNvbicpITtcclxuICAgICAgICB0aGlzLlNldEljb24oYWxlcnRTdWNjZXNzSWNvbiwgaWNvbik7XHJcblxyXG4gICAgICAgIC8vTWVzc2FnZVxyXG4gICAgICAgIGlmICghbWVzc2FnZSkgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0U3VjY2Vzc01lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtc3VjY2Vzcy1tZXNzYWdlJykhO1xyXG4gICAgICAgIGFsZXJ0U3VjY2Vzc01lc3NhZ2UuaW5uZXJIVE1MID0gbWVzc2FnZTtcclxuXHJcbiAgICAgICAgLy9Ub2FzdFxyXG4gICAgICAgIGNvbnN0IGFsZXJ0U3VjY2VzcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1zdWNjZXNzJykhO1xyXG4gICAgICAgIHRoaXMuU2V0QXV0b0hpZGUoYWxlcnRTdWNjZXNzLCBhdXRvaGlkZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRvYXN0ID0gYm9vdHN0cmFwLlRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UoYWxlcnRTdWNjZXNzKTtcclxuICAgICAgICB0b2FzdC5zaG93KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIEVycm9yKG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsLCB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCA9IDMwMDApOiB2b2lkIHtcclxuICAgICAgICAvL1RpdGxlXHJcbiAgICAgICAgaWYgKCF0aXRsZSB8fCB0aXRsZSA9PSAnJykgdGl0bGUgPSAnRXJyb3InO1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0RXJyb3JUaXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1lcnJvci10aXRsZScpITtcclxuICAgICAgICBhbGVydEVycm9yVGl0bGUudGV4dENvbnRlbnQgPSB0aXRsZTtcclxuXHJcbiAgICAgICAgLy9JY29uXHJcbiAgICAgICAgaWNvbiA9IHRoaXMuR2V0SWNvbih0aXRsZSwgaWNvbiwgJ2JpLWV4Y2xhbWF0aW9uLW9jdGFnb24gZmEtYmVhdCcpO1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0RXJyb3JJY29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LWVycm9yLWljb24nKSE7XHJcbiAgICAgICAgdGhpcy5TZXRJY29uKGFsZXJ0RXJyb3JJY29uLCBpY29uKTtcclxuXHJcbiAgICAgICAgLy9NZXNzYWdlXHJcbiAgICAgICAgaWYgKCFtZXNzYWdlKSBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgY29uc3QgYWxlcnRFcnJvckJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtZXJyb3ItbWVzc2FnZScpITtcclxuICAgICAgICBhbGVydEVycm9yQm9keS5pbm5lckhUTUwgPSBtZXNzYWdlO1xyXG5cclxuICAgICAgICAvL1RvYXN0XHJcbiAgICAgICAgY29uc3QgYWxlcnRFcnJvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1lcnJvcicpITtcclxuICAgICAgICB0aGlzLlNldEF1dG9IaWRlKGFsZXJ0RXJyb3IsIGF1dG9oaWRlKTtcclxuXHJcbiAgICAgICAgY29uc3QgdG9hc3QgPSBib290c3RyYXAuVG9hc3QuZ2V0T3JDcmVhdGVJbnN0YW5jZShhbGVydEVycm9yKTtcclxuICAgICAgICB0b2FzdC5zaG93KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIEluZm8obWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIHRpdGxlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgaWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGF1dG9oaWRlOiBudW1iZXIgfCBudWxsID0gMzAwMCk6IHZvaWQge1xyXG4gICAgICAgIC8vVGl0bGVcclxuICAgICAgICBpZiAoIXRpdGxlIHx8IHRpdGxlID09ICcnKSB0aXRsZSA9ICdJbmZvJztcclxuICAgICAgICBjb25zdCBhbGVydEluZm9UaXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1pbmZvLXRpdGxlJykhO1xyXG4gICAgICAgIGFsZXJ0SW5mb1RpdGxlLnRleHRDb250ZW50ID0gdGl0bGU7XHJcblxyXG4gICAgICAgIC8vSWNvblxyXG4gICAgICAgIGljb24gPSB0aGlzLkdldEljb24odGl0bGUsIGljb24sICdiaS1pbmZvLWNpcmNsZSBmYS1iZWF0Jyk7XHJcbiAgICAgICAgY29uc3QgYWxlcnRJbmZvSWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1pbmZvLWljb24nKSE7XHJcbiAgICAgICAgdGhpcy5TZXRJY29uKGFsZXJ0SW5mb0ljb24sIGljb24pO1xyXG5cclxuICAgICAgICAvL01lc3NhZ2VcclxuICAgICAgICBpZiAoIW1lc3NhZ2UpIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICBjb25zdCBhbGVydEluZm9Cb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LWluZm8tbWVzc2FnZScpITtcclxuICAgICAgICBhbGVydEluZm9Cb2R5LmlubmVySFRNTCA9IG1lc3NhZ2U7XHJcblxyXG4gICAgICAgIC8vVG9hc3RcclxuICAgICAgICBjb25zdCBhbGVydEluZm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtaW5mbycpITtcclxuICAgICAgICB0aGlzLlNldEF1dG9IaWRlKGFsZXJ0SW5mbywgYXV0b2hpZGUpO1xyXG5cclxuICAgICAgICBjb25zdCB0b2FzdCA9IGJvb3RzdHJhcC5Ub2FzdC5nZXRPckNyZWF0ZUluc3RhbmNlKGFsZXJ0SW5mbyk7XHJcbiAgICAgICAgdG9hc3Quc2hvdygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBXYXJuaW5nKG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsLCB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCA9IDMwMDApOiB2b2lkIHtcclxuICAgICAgICAvL1RpdGxlXHJcbiAgICAgICAgaWYgKCF0aXRsZSB8fCB0aXRsZSA9PSAnJykgdGl0bGUgPSAnV2FybmluZyc7XHJcbiAgICAgICAgY29uc3QgYWxlcnRXYXJuaW5nVGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtd2FybmluZy10aXRsZScpITtcclxuICAgICAgICBhbGVydFdhcm5pbmdUaXRsZS50ZXh0Q29udGVudCA9IHRpdGxlO1xyXG5cclxuICAgICAgICAvL0ljb25cclxuICAgICAgICBpY29uID0gdGhpcy5HZXRJY29uKHRpdGxlLCBpY29uLCAnYmktZXhjbGFtYXRpb24tdHJpYW5nbGUtZmlsbCBmYS1iZWF0Jyk7XHJcbiAgICAgICAgY29uc3QgYWxlcnRXYXJuaW5nSWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC13YXJuaW5nLWljb24nKSE7XHJcbiAgICAgICAgdGhpcy5TZXRJY29uKGFsZXJ0V2FybmluZ0ljb24sIGljb24pO1xyXG5cclxuICAgICAgICAvL01lc3NhZ2VcclxuICAgICAgICBpZiAoIW1lc3NhZ2UpIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICBjb25zdCBhbGVydFdhcm5pbmdCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LXdhcm5pbmctbWVzc2FnZScpITtcclxuICAgICAgICBhbGVydFdhcm5pbmdCb2R5LmlubmVySFRNTCA9IG1lc3NhZ2U7XHJcblxyXG4gICAgICAgIC8vVG9hc3RcclxuICAgICAgICBjb25zdCBhbGVydFdhcm5pbmcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtd2FybmluZycpITtcclxuICAgICAgICB0aGlzLlNldEF1dG9IaWRlKGFsZXJ0V2FybmluZywgYXV0b2hpZGUpO1xyXG5cclxuICAgICAgICBjb25zdCB0b2FzdCA9IGJvb3RzdHJhcC5Ub2FzdC5nZXRPckNyZWF0ZUluc3RhbmNlKGFsZXJ0V2FybmluZyk7XHJcbiAgICAgICAgdG9hc3Quc2hvdygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBDbG9zZShhbGVydDogJ2FsZXJ0LXN1Y2Nlc3MnIHwgJ2FsZXJ0LWVycm9yJyB8ICdhbGVydC1pbmZvJyB8ICdhbGVydC13YXJuaW5nJykge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFsZXJ0KSE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvYXN0ID0gYm9vdHN0cmFwLlRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UoZWxlbWVudCk7XHJcbiAgICAgICAgICAgIHRvYXN0LmhpZGUoKTtcclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBSZXNvbHZlKCkgfSwgMjAwKTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBDb25maXJtKFxyXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyA9ICdQcm9jZWVkPycsXHJcbiAgICAgICAgYWxlcnRUeXBlOiAnd2FybmluZycgfCAnZGFuZ2VyJyB8ICdzdWNjZXNzJyB8ICdpbmZvJyA9ICd3YXJuaW5nJyxcclxuICAgICAgICBpY29uOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgbGV0IGNvbG9yOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGxldCBpY29uVHlwZTogJ3dhcm5pbmcnIHwgJ2Vycm9yJyB8ICdzdWNjZXNzJyB8ICdpbmZvJztcclxuICAgICAgICAgICAgc3dpdGNoKGFsZXJ0VHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnZGFuZ2VyJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpY29uID09IG51bGwpIGljb24gPSAnYmktZXhjbGFtYXRpb24tb2N0YWdvbic7XHJcbiAgICAgICAgICAgICAgICAgICAgaWNvblR5cGUgPSAnZXJyb3InO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yID0gJyNkYzM1NDUnOyAvL3JlZFxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdzdWNjZXNzJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpY29uID09IG51bGwpIGljb24gPSAnYmktY2hlY2stY2lyY2xlJztcclxuICAgICAgICAgICAgICAgICAgICBpY29uVHlwZSA9ICdpbmZvJztcclxuICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICcjMTk4NzU0JzsgLy9ncmVlblxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdpbmZvJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpY29uID09IG51bGwpIGljb24gPSAnYmktaW5mby1jaXJjbGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGljb25UeXBlID0gJ2Vycm9yJztcclxuICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICcjMGQ2ZWZkJzsgLy9ibHVlXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpY29uID09IG51bGwpIGljb24gPSAnYmktZXhjbGFtYXRpb24tdHJpYW5nbGUtZmlsbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWNvblR5cGUgPSAnd2FybmluZyc7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3IgPSAnI2ZmYzEwNyc7IC8veWVsbG93XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN3aXRjaChpY29uKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkZWxldGUnOiBpY29uID0gJ2ZhLXJlZ3VsYXIgZmEtdHJhc2gtY2FuJzsgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XHJcbiAgICAgICAgICAgICAgICBpY29uOiBpY29uVHlwZSxcclxuICAgICAgICAgICAgICAgIGljb25Db2xvcjogJ3RyYW5zcGFyZW50JyxcclxuICAgICAgICAgICAgICAgIGljb25IdG1sOiBgPGkgY2xhc3M9XCIke2ljb259XCIgc3R5bGU9XCJjb2xvcjogJHtjb2xvcn07XCI+PC9pPmAsXHJcbiAgICAgICAgICAgICAgICBodG1sOiBtZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ1llcycsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6IGNvbG9yLFxyXG4gICAgICAgICAgICAgICAgZm9jdXNDb25maXJtOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc2hvd0RlbnlCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBkZW55QnV0dG9uQ29sb3I6IGNvbG9yLFxyXG4gICAgICAgICAgICAgICAgZm9jdXNEZW55OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dPdXRzaWRlQ2xpY2s6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dFc2NhcGVLZXk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dFbnRlcktleTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVueUJ1dHRvbjogJ3N3ZWV0LWFsZXJ0LWJ1dHRvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogJ3N3ZWV0LWFsZXJ0LWJ1dHRvbidcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkudGhlbigoeyB2YWx1ZSB9KSA9PiBzZXRUaW1lb3V0KCgpID0+IFJlc29sdmUodmFsdWUpKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBTZXRJY29uKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBpY29uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgWy4uLmVsZW1lbnQuY2xhc3NMaXN0LnZhbHVlLnNwbGl0KCcgJyldKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShpdGVtKTtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgncScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpY29uID0gaWNvbi50cmltKCk7XHJcbiAgICAgICAgY29uc3QgaGFzV2hpdGVTcGFjZXM6IFJlZ0V4cCA9IC8gLztcclxuICAgICAgICBpZiAoaGFzV2hpdGVTcGFjZXMudGVzdChpY29uKSkge1xyXG4gICAgICAgICAgICBjb25zdCBjbGFzc2VzID0gaWNvbi5zcGxpdCgnICcpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGljb24gb2YgY2xhc3NlcykgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGljb24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSBlbGVtZW50LmNsYXNzTGlzdC5hZGQoaWNvbik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBTZXRBdXRvSGlkZShlbGVtZW50OiBIVE1MRWxlbWVudCwgYXV0b2hpZGU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1icy1hdXRvaGlkZScpO1xyXG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWJzLWRlbGF5Jyk7XHJcblxyXG4gICAgICAgIGlmIChhdXRvaGlkZSAmJiBhdXRvaGlkZSA+IDApIHtcclxuICAgICAgICAgICAgaWYgKGF1dG9oaWRlIDwgMTAwMCkgYXV0b2hpZGUgPSAxMDAwO1xyXG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1icy1hdXRvaGlkZScsICd0cnVlJyk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLWRlbGF5JywgU3RyaW5nKGF1dG9oaWRlKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLWF1dG9oaWRlJywgJ2ZhbHNlJyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBHZXRJY29uKHRpdGxlOiBzdHJpbmcsIGljb246IHN0cmluZyB8IG51bGwsIGljb25EZWZhdWx0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChpY29uID09IG51bGwgfHwgaWNvbiA9PSAnJykge1xyXG4gICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2VBbGwoJyAnLCAnJykudG9VcHBlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgIHN3aXRjaCh0aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnRU5BQkxFRCc6IHJldHVybiAnZmEtc29saWQgZmEtdGh1bWJzLXVwIGZhLWZsaXAtaG9yaXpvbnRhbCc7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdBQ1RJVkUnOiByZXR1cm4gJ2ZhLXNvbGlkIGZhLXRodW1icy11cCBmYS1mbGlwLWhvcml6b250YWwnO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnQUNUSVZFRCc6IHJldHVybiAnZmEtc29saWQgZmEtdGh1bWJzLXVwIGZhLWZsaXAtaG9yaXpvbnRhbCc7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdESVNBQkxFJzogcmV0dXJuICdmYS1zb2xpZCBmYS10aHVtYnMtZG93biBmYS1mbGlwLWhvcml6b250YWwnO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnRElTQUJMRUQnOiByZXR1cm4gJ2ZhLXNvbGlkIGZhLXRodW1icy1kb3duIGZhLWZsaXAtaG9yaXpvbnRhbCc7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdERUxFVEUnOiByZXR1cm4gJ2ZhLXJlZ3VsYXIgZmEtdHJhc2gtY2FuJztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0RFTEVURUQnOiByZXR1cm4gJ2ZhLXJlZ3VsYXIgZmEtdHJhc2gtY2FuJztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBpY29uRGVmYXVsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGljb247XHJcbiAgICB9XHJcbn0iLCI8YXNpZGUgY2xhc3M9XCJ0b2FzdC1jb250YWluZXIgY29lci1hbGVydFwiPlxyXG4gICAgPCEtLSBTdWNjZXNzIC0tPlxyXG4gICAgPGRpdiBpZD1cImFsZXJ0LXN1Y2Nlc3NcIiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBhcmlhLWF0b21pYz1cInRydWVcIiBjbGFzcz1cInRvYXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aSBpZD1cImFsZXJ0LXN1Y2Nlc3MtaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgPHN0cm9uZyBpZD1cImFsZXJ0LXN1Y2Nlc3MtdGl0bGVcIj48L3N0cm9uZz5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkNsb3NlKCdhbGVydC1zdWNjZXNzJylcIiBjbGFzcz1cImJ0bi1jbG9zZSBidG4tY2xvc2Utd2hpdGVcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWJvZHlcIj5cclxuICAgICAgICAgICAgPHByZSBpZD1cImFsZXJ0LXN1Y2Nlc3MtbWVzc2FnZVwiPjwvcHJlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwhLS0gRXJyb3IgLS0+XHJcbiAgICA8ZGl2IGlkPVwiYWxlcnQtZXJyb3JcIiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBhcmlhLWF0b21pYz1cInRydWVcIiBjbGFzcz1cInRvYXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aSBpZD1cImFsZXJ0LWVycm9yLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgaWQ9XCJhbGVydC1lcnJvci10aXRsZVwiPjwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiQ2xvc2UoJ2FsZXJ0LWVycm9yJylcIiBjbGFzcz1cImJ0bi1jbG9zZSBidG4tY2xvc2Utd2hpdGVcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWJvZHlcIj5cclxuICAgICAgICAgICAgPHByZSBpZD1cImFsZXJ0LWVycm9yLW1lc3NhZ2VcIj48L3ByZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8IS0tIEluZm8gLS0+XHJcbiAgICA8ZGl2IGlkPVwiYWxlcnQtaW5mb1wiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGNsYXNzPVwidG9hc3RcIj5cclxuICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGkgaWQ9XCJhbGVydC1pbmZvLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgaWQ9XCJhbGVydC1pbmZvLXRpdGxlXCI+PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJDbG9zZSgnYWxlcnQtaW5mbycpXCIgY2xhc3M9XCJidG4tY2xvc2UgYnRuLWNsb3NlLXdoaXRlXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxwcmUgaWQ9XCJhbGVydC1pbmZvLW1lc3NhZ2VcIj48L3ByZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8IS0tIFdhcm5pbmcgLS0+XHJcbiAgICA8ZGl2IGlkPVwiYWxlcnQtd2FybmluZ1wiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGNsYXNzPVwidG9hc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxpIGlkPVwiYWxlcnQtd2FybmluZy1pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGlkPVwiYWxlcnQtd2FybmluZy10aXRsZVwiPjwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiQ2xvc2UoJ2FsZXJ0LXdhcm5pbmcnKVwiIGNsYXNzPVwiYnRuLWNsb3NlXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxwcmUgaWQ9XCJhbGVydC13YXJuaW5nLW1lc3NhZ2VcIj48L3ByZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2FzaWRlPiJdfQ==
|