coer-elements 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. package/Signals/{index.d.ts → index.ts} +3 -3
  2. package/Signals/src/breakpoint.signal.ts +3 -0
  3. package/Signals/src/isLoading.signal.ts +2 -0
  4. package/Signals/src/isModalOpen.signal.ts +2 -0
  5. package/Tools/{index.d.ts → index.ts} +8 -8
  6. package/Tools/src/Breadcrumbs.class.ts +84 -0
  7. package/Tools/src/ControlValue.ts +63 -0
  8. package/Tools/src/DateTime.class.ts +27 -0
  9. package/Tools/src/Files.class.ts +119 -0
  10. package/Tools/src/Page.class.ts +195 -0
  11. package/Tools/src/Screen.class.ts +50 -0
  12. package/Tools/src/Source.class.ts +106 -0
  13. package/Tools/src/Tools.ts +217 -0
  14. package/components/index.ts +2 -0
  15. package/components/src/coer-alert/coer-alert.component.html +56 -0
  16. package/components/src/coer-alert/coer-alert.component.scss +100 -0
  17. package/components/src/coer-alert/coer-alert.component.ts +249 -0
  18. package/components/src/components.module.ts +97 -0
  19. package/esm2022/index.mjs +2 -4
  20. package/fesm2022/coer-elements.mjs +0 -1006
  21. package/fesm2022/coer-elements.mjs.map +1 -1
  22. package/index.d.ts +1 -3
  23. package/package.json +14 -1
  24. package/styles/index.css +249 -17
  25. package/styles/index.scss +98 -2
  26. package/README.md +0 -24
  27. package/Signals/src/breakpoint.signal.d.ts +0 -1
  28. package/Signals/src/isLoading.signal.d.ts +0 -1
  29. package/Signals/src/isModalOpen.signal.d.ts +0 -1
  30. package/Tools/src/Breadcrumbs.class.d.ts +0 -18
  31. package/Tools/src/ControlValue.d.ts +0 -23
  32. package/Tools/src/DateTime.class.d.ts +0 -11
  33. package/Tools/src/Files.class.d.ts +0 -16
  34. package/Tools/src/Page.class.d.ts +0 -66
  35. package/Tools/src/Screen.class.d.ts +0 -11
  36. package/Tools/src/Source.class.d.ts +0 -20
  37. package/Tools/src/Tools.d.ts +0 -33
  38. package/components/index.d.ts +0 -2
  39. package/components/src/coer-alert/coer-alert.component.d.ts +0 -23
  40. package/components/src/components.module.d.ts +0 -10
  41. package/esm2022/Signals/index.mjs +0 -4
  42. package/esm2022/Signals/src/breakpoint.signal.mjs +0 -4
  43. package/esm2022/Signals/src/isLoading.signal.mjs +0 -3
  44. package/esm2022/Signals/src/isModalOpen.signal.mjs +0 -3
  45. package/esm2022/Tools/index.mjs +0 -9
  46. package/esm2022/Tools/src/Breadcrumbs.class.mjs +0 -63
  47. package/esm2022/Tools/src/ControlValue.mjs +0 -44
  48. package/esm2022/Tools/src/DateTime.class.mjs +0 -22
  49. package/esm2022/Tools/src/Files.class.mjs +0 -93
  50. package/esm2022/Tools/src/Page.class.mjs +0 -160
  51. package/esm2022/Tools/src/Screen.class.mjs +0 -43
  52. package/esm2022/Tools/src/Source.class.mjs +0 -79
  53. package/esm2022/Tools/src/Tools.mjs +0 -200
  54. package/esm2022/components/index.mjs +0 -3
  55. package/esm2022/components/src/coer-alert/coer-alert.component.mjs +0 -227
  56. package/esm2022/components/src/components.module.mjs +0 -92
  57. package/esm2022/interfaces/index.mjs +0 -7
  58. package/esm2022/interfaces/src/IAppSource.interface.mjs +0 -2
  59. package/esm2022/interfaces/src/IBreadcrumb.interface.mjs +0 -2
  60. package/esm2022/interfaces/src/ICoerRef.interface.mjs +0 -2
  61. package/esm2022/interfaces/src/IGoBack.interface.mjs +0 -2
  62. package/esm2022/interfaces/src/IPatch.interface.mjs +0 -2
  63. package/esm2022/interfaces/src/IScreenSize.interface.mjs +0 -2
  64. package/interfaces/index.d.ts +0 -6
  65. package/interfaces/src/IAppSource.interface.d.ts +0 -4
  66. package/interfaces/src/IBreadcrumb.interface.d.ts +0 -6
  67. package/interfaces/src/ICoerRef.interface.d.ts +0 -10
  68. package/interfaces/src/IGoBack.interface.d.ts +0 -6
  69. package/interfaces/src/IPatch.interface.d.ts +0 -5
  70. package/interfaces/src/IScreenSize.interface.d.ts +0 -5
  71. package/styles/coer.scss +0 -96
@@ -1,11 +0,0 @@
1
- import moment from "moment";
2
- export declare class DateTime {
3
- /** Get UTC Offset */
4
- static GetUTCOffset(): number;
5
- /** Convert UTC Date to Local Zone */
6
- static ToLocalZone(utcDate: string | Date | moment.Moment): string;
7
- /** Convert Local Zone Date to UTC */
8
- static ToUTC(utcDate: string | Date | moment.Moment): string;
9
- /** DD MMM YYYY */
10
- static GetDateFormat(date: string | Date | moment.Moment): string;
11
- }
@@ -1,16 +0,0 @@
1
- export declare class Files {
2
- static readonly EXCEL_EXTENSIONS: string[];
3
- /** Get Extension File */
4
- static GetExtension(file: File): string | null;
5
- /** Is Excel File */
6
- static IsExcel(file: File): boolean;
7
- /** Read excel file */
8
- static ReadExcel<T>(file: File): Promise<{
9
- columns: string[];
10
- rows: T[];
11
- }>;
12
- /** Export to excel file */
13
- static ExportExcel<T>(data: T[], fileName?: string, sheetName?: string): void;
14
- /** Convert file to string base64 */
15
- static ConvertToBase64(file: File): Promise<string>;
16
- }
@@ -1,66 +0,0 @@
1
- import { Router } from '@angular/router';
2
- import { AfterViewInit, OnDestroy } from '@angular/core';
3
- import { IBreadcrumb, IGoBack } from '../../interfaces';
4
- import { CoerAlert } from '../../components';
5
- import * as i0 from "@angular/core";
6
- export declare class Page implements AfterViewInit, OnDestroy {
7
- protected readonly alert: CoerAlert;
8
- protected readonly router: Router;
9
- private readonly activatedRoute;
10
- /** */
11
- protected isUpdate: boolean;
12
- /** */
13
- protected isLoading: boolean;
14
- /** */
15
- protected isReady: boolean;
16
- /** */
17
- protected enableAnimations: boolean;
18
- /** */
19
- protected routeParams: any;
20
- /** */
21
- protected queryParams: any;
22
- /** */
23
- protected breadcrumbs: IBreadcrumb[];
24
- /** */
25
- protected pageResponse: any;
26
- /** */
27
- protected goBack: IGoBack;
28
- private _page;
29
- private _source;
30
- private _preventDestroy;
31
- constructor(page: string);
32
- ngAfterViewInit(): void;
33
- ngOnDestroy(): void;
34
- /** Main method. Starts after ngAfterViewInit() */
35
- protected RunPage(): void;
36
- /** Rename the last breadcrumb and update the url id */
37
- protected SetPageName(name: string, id?: string | number | null): void;
38
- /** */
39
- private SetSource;
40
- /** */
41
- private GetSource;
42
- /** */
43
- protected GetPageResponse(): void;
44
- /** */
45
- private GetNavigation;
46
- /** */
47
- private SetGoBack;
48
- /** */
49
- private GoBack;
50
- /** Navigate to previous page */
51
- protected GoToSource<T>(pageResponse?: T | null): void;
52
- /** */
53
- protected SetPageResponse<T>(pageResponse?: T | null): void;
54
- /** */
55
- protected ReloadPage(): void;
56
- /** */
57
- protected Log(value: any, log?: string | null): void;
58
- /** Returns true if the value is null or undefined, false otherwise */
59
- protected IsNotNull: <T>(value: T | null | undefined) => boolean;
60
- /** Returns true if the value is null or undefined, false otherwise */
61
- protected IsNull: <T>(value: T | null | undefined) => boolean;
62
- /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */
63
- protected IsOnlyWhiteSpace: <T>(value: T | null | undefined) => boolean;
64
- static ɵfac: i0.ɵɵFactoryDeclaration<Page, never>;
65
- static ɵcmp: i0.ɵɵComponentDeclaration<Page, "ng-component", never, {}, {}, never, never, false, never>;
66
- }
@@ -1,11 +0,0 @@
1
- import { IScreenSize } from "../../interfaces";
2
- import { Observable } from "rxjs";
3
- export declare class Screen {
4
- static get WINDOW_WIDTH(): number;
5
- static get WINDOW_HEIGHT(): number;
6
- static get DEVICE_WIDTH(): number;
7
- static get DEVICE_HEIGHT(): number;
8
- static get BREAKPOINT(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
9
- /** */
10
- static Resize: Observable<IScreenSize>;
11
- }
@@ -1,20 +0,0 @@
1
- import { IAppSource } from '../../interfaces';
2
- export declare class Source {
3
- private static readonly storage;
4
- /** */
5
- static Set(page: string): void;
6
- /** */
7
- private static Save;
8
- /** */
9
- static Get(): IAppSource | null;
10
- /** */
11
- static GetRoot(): IAppSource | null;
12
- /** */
13
- static SetPageResponse<T>(pageResponse: T): void;
14
- /** */
15
- static GetPageResponse<T>(): T | null;
16
- /** */
17
- static ClearPageResponse(): void;
18
- /** Clear Source */
19
- static Reset(): void;
20
- }
@@ -1,33 +0,0 @@
1
- export declare const Tools: {
2
- /** Generate a Guid */
3
- GetGuid: (seed?: string) => string;
4
- /** Returns true if the value is null or undefined, false otherwise */
5
- IsNull: <T>(value: T | null | undefined) => boolean;
6
- /** Returns true if the value is not null or undefined, false otherwise */
7
- IsNotNull: <T_1>(value: T_1 | null | undefined) => boolean;
8
- /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */
9
- IsOnlyWhiteSpace: <T_2>(value: T_2 | null | undefined) => boolean;
10
- /** Break reference of a object or array */
11
- BreakReference: <T_3>(object: T_3) => T_3;
12
- /** Clean extra whitespaces */
13
- CleanUpBlanks: (text: string | number) => string;
14
- /** Get properties of an object */
15
- GetObjectProperties: <T_4>(obj: T_4 | null | undefined) => string[];
16
- /**
17
- * Set an index and merge more arrays of the same type
18
- * @returns A new array
19
- * */
20
- SetIndex: <T_5>(array: T_5[], ...args: T_5[][]) => T_5[];
21
- /** Set First Char To Lower */
22
- FirstCharToLower: (text: string | null | undefined) => string;
23
- /** Set First Char To Upper */
24
- FirstCharToUpper: (text: string | null | undefined) => string;
25
- /** Sort an array in ascending order by property */
26
- SortBy: <T_6>(array: T_6[], property: string, propertyType?: 'string' | 'number') => T_6[];
27
- /** Sort an array in descending order by property */
28
- SortByDesc: <T_7>(array: T_7[], property: string, propertyType?: 'string' | 'number') => T_7[];
29
- /** Return a string with forman numeric */
30
- GetNumericFormat: (value: string | number | null | undefined, decimals?: number) => string;
31
- /** Wait the time indicated */
32
- Sleep: (milliseconds?: number, reference?: string | null) => Promise<unknown>;
33
- };
@@ -1,2 +0,0 @@
1
- export * from './src/components.module';
2
- export * from './src/coer-alert/coer-alert.component';
@@ -1,23 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class CoerAlert {
3
- /** */
4
- Success(message?: string | null, title?: string | null, icon?: string | null, autohide?: number | null): void;
5
- /** */
6
- Error(message?: string | null, title?: string | null, icon?: string | null, autohide?: number | null): void;
7
- /** */
8
- Info(message?: string | null, title?: string | null, icon?: string | null, autohide?: number | null): void;
9
- /** */
10
- Warning(message?: string | null, title?: string | null, icon?: string | null, autohide?: number | null): void;
11
- /** */
12
- protected Close(alert: 'alert-success' | 'alert-error' | 'alert-info' | 'alert-warning'): Promise<void>;
13
- /** */
14
- Confirm(message?: string, alertType?: 'warning' | 'danger' | 'success' | 'info', icon?: string | null): Promise<boolean>;
15
- /** */
16
- private SetIcon;
17
- /** */
18
- private SetAutoHide;
19
- /** */
20
- private GetIcon;
21
- static ɵfac: i0.ɵɵFactoryDeclaration<CoerAlert, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<CoerAlert, "coer-alert", never, {}, {}, never, never, false, never>;
23
- }
@@ -1,10 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "./coer-alert/coer-alert.component";
3
- import * as i2 from "@angular/common";
4
- import * as i3 from "@angular/router";
5
- import * as i4 from "@angular/forms";
6
- export declare class ComponentsModule {
7
- static ɵfac: i0.ɵɵFactoryDeclaration<ComponentsModule, never>;
8
- static ɵmod: i0.ɵɵNgModuleDeclaration<ComponentsModule, [typeof i1.CoerAlert], [typeof i2.CommonModule, typeof i3.RouterModule, typeof i4.FormsModule, typeof i4.ReactiveFormsModule], [typeof i1.CoerAlert]>;
9
- static ɵinj: i0.ɵɵInjectorDeclaration<ComponentsModule>;
10
- }
@@ -1,4 +0,0 @@
1
- export * from './src/breakpoint.signal';
2
- export * from './src/isLoading.signal';
3
- export * from './src/isModalOpen.signal';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL1NpZ25hbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9icmVha3BvaW50LnNpZ25hbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2lzTG9hZGluZy5zaWduYWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9pc01vZGFsT3Blbi5zaWduYWwnOyAiXX0=
@@ -1,4 +0,0 @@
1
- import { Screen } from '../../Tools';
2
- import { signal } from '@angular/core';
3
- export const breakpointSIG = signal(Screen?.BREAKPOINT || 'xs');
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWtwb2ludC5zaWduYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL1NpZ25hbHMvc3JjL2JyZWFrcG9pbnQuc2lnbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUEyQyxNQUFNLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NyZWVuIH0gZnJvbSAnLi4vLi4vVG9vbHMnO1xyXG5pbXBvcnQgeyBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuZXhwb3J0IGNvbnN0IGJyZWFrcG9pbnRTSUcgPSBzaWduYWw8J3hzJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgfCAneHhsJz4oU2NyZWVuPy5CUkVBS1BPSU5UIHx8ICd4cycpOyJdfQ==
@@ -1,3 +0,0 @@
1
- import { signal } from "@angular/core";
2
- export const isLoadingSIG = signal(false);
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNMb2FkaW5nLnNpZ25hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvU2lnbmFscy9zcmMvaXNMb2FkaW5nLnNpZ25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5leHBvcnQgY29uc3QgaXNMb2FkaW5nU0lHID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTsiXX0=
@@ -1,3 +0,0 @@
1
- import { signal } from "@angular/core";
2
- export const isModalOpenSIG = signal(false);
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNNb2RhbE9wZW4uc2lnbmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy9TaWduYWxzL3NyYy9pc01vZGFsT3Blbi5zaWduYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuZXhwb3J0IGNvbnN0IGlzTW9kYWxPcGVuU0lHID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTsiXX0=
@@ -1,9 +0,0 @@
1
- export * from './src/Breadcrumbs.class';
2
- export * from './src/ControlValue';
3
- export * from './src/DateTime.class';
4
- export * from './src/Files.class';
5
- export * from './src/Page.class';
6
- export * from './src/Screen.class';
7
- export * from './src/Source.class';
8
- export * from './src/Tools';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL1Rvb2xzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9CcmVhZGNydW1icy5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL0NvbnRyb2xWYWx1ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL0RhdGVUaW1lLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvRmlsZXMuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9QYWdlLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvU2NyZWVuLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvU291cmNlLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvVG9vbHMnOyJdfQ==
@@ -1,63 +0,0 @@
1
- import { Tools } from '../';
2
- export class Breadcrumbs {
3
- static { this.storage = 'COER-System'; }
4
- /** */
5
- static Add(page, path) {
6
- const breadcrumbs = this.Get();
7
- const paths = breadcrumbs.map(item => item.path);
8
- if (!paths.includes(path)) {
9
- breadcrumbs.push({ page, path });
10
- this.Save(breadcrumbs);
11
- }
12
- }
13
- /** */
14
- static Get() {
15
- let storage = sessionStorage.getItem(this.storage);
16
- if (storage) {
17
- storage = JSON.parse(storage);
18
- if (storage.hasOwnProperty('breadcrumbs')) {
19
- return Tools.BreakReference(storage.breadcrumbs);
20
- }
21
- }
22
- return [];
23
- }
24
- /** Source */
25
- static GetFirst() {
26
- const breadcrumbs = this.Get();
27
- return (breadcrumbs.length > 0) ? breadcrumbs.shift() : null;
28
- }
29
- /** */
30
- static Save(breadcrumbs) {
31
- let storage = sessionStorage.getItem(this.storage);
32
- if (storage)
33
- storage = JSON.parse(storage);
34
- storage = Object.assign({}, storage, { breadcrumbs });
35
- sessionStorage.setItem(this.storage, JSON.stringify(storage));
36
- }
37
- /** */
38
- static Remove(path) {
39
- let breadcrumbs = this.Get();
40
- const index = breadcrumbs.findIndex(x => x.path.toLowerCase().trim() === path.toLowerCase().trim());
41
- if (index >= 0) {
42
- breadcrumbs = Tools.BreakReference(breadcrumbs).splice(0, index + 1);
43
- this.Save(breadcrumbs);
44
- }
45
- }
46
- /** */
47
- static SetLast(page, path) {
48
- const breadcrumbs = this.Get();
49
- if (breadcrumbs.length > 0) {
50
- breadcrumbs[breadcrumbs.length - 1] = { page, path };
51
- this.Save(breadcrumbs);
52
- }
53
- }
54
- /** */
55
- static RemoveLast() {
56
- const breadcrumbs = this.Get();
57
- if (breadcrumbs.length > 0) {
58
- breadcrumbs.pop();
59
- this.Save(breadcrumbs);
60
- }
61
- }
62
- }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJlYWRjcnVtYnMuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL1Rvb2xzL3NyYy9CcmVhZGNydW1icy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTVCLE1BQU0sT0FBTyxXQUFXO2FBRUksWUFBTyxHQUFHLGFBQWEsQ0FBQztJQUVoRCxNQUFNO0lBQ0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUN4QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hCLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBR0QsTUFBTTtJQUNDLE1BQU0sQ0FBQyxHQUFHO1FBQ2IsSUFBSSxPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFRLENBQUM7UUFFMUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTlCLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBR0QsYUFBYTtJQUNOLE1BQU0sQ0FBQyxRQUFRO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMvQixPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEUsQ0FBQztJQUdELE1BQU07SUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQXlCO1FBQ3hDLElBQUksT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBUSxDQUFDO1FBQzFELElBQUksT0FBTztZQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUdELE1BQU07SUFDQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQVk7UUFDN0IsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXBHLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2IsV0FBVyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQztJQUdELE1BQU07SUFDQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQVksRUFBRSxJQUFZO1FBQzVDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUUvQixJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQztJQUdELE1BQU07SUFDQyxNQUFNLENBQUMsVUFBVTtRQUNwQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFL0IsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUFwcFNvdXJjZSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IFRvb2xzIH0gZnJvbSAnLi4vJztcclxuXHJcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1icyB7XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgc3RvcmFnZSA9ICdDT0VSLVN5c3RlbSc7XHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgc3RhdGljIEFkZChwYWdlOiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzID0gdGhpcy5HZXQoKTtcclxuICAgICAgICBjb25zdCBwYXRocyA9IGJyZWFkY3J1bWJzLm1hcChpdGVtID0+IGl0ZW0ucGF0aCk7XHJcblxyXG4gICAgICAgIGlmICghcGF0aHMuaW5jbHVkZXMocGF0aCkpIHtcclxuICAgICAgICAgICAgYnJlYWRjcnVtYnMucHVzaCh7IHBhZ2UsIHBhdGggfSk7XHJcbiAgICAgICAgICAgIHRoaXMuU2F2ZShicmVhZGNydW1icyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0KCk6IElBcHBTb3VyY2VbXSB7XHJcbiAgICAgICAgbGV0IHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZSkgYXMgYW55O1xyXG5cclxuICAgICAgICBpZiAoc3RvcmFnZSkge1xyXG4gICAgICAgICAgICBzdG9yYWdlID0gSlNPTi5wYXJzZShzdG9yYWdlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzdG9yYWdlLmhhc093blByb3BlcnR5KCdicmVhZGNydW1icycpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9vbHMuQnJlYWtSZWZlcmVuY2Uoc3RvcmFnZS5icmVhZGNydW1icyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIFNvdXJjZSAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBHZXRGaXJzdCgpOiBJQXBwU291cmNlIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYnMgPSB0aGlzLkdldCgpO1xyXG4gICAgICAgIHJldHVybiAoYnJlYWRjcnVtYnMubGVuZ3RoID4gMCkgPyBicmVhZGNydW1icy5zaGlmdCgpISA6IG51bGw7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBTYXZlKGJyZWFkY3J1bWJzOiBJQXBwU291cmNlW10pOiB2b2lkIHtcclxuICAgICAgICBsZXQgc3RvcmFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlKSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKHN0b3JhZ2UpIHN0b3JhZ2UgPSBKU09OLnBhcnNlKHN0b3JhZ2UpO1xyXG4gICAgICAgIHN0b3JhZ2UgPSBPYmplY3QuYXNzaWduKHt9LCBzdG9yYWdlLCB7IGJyZWFkY3J1bWJzIH0pO1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlLCBKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBSZW1vdmUocGF0aDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGJyZWFkY3J1bWJzID0gdGhpcy5HZXQoKTtcclxuICAgICAgICBjb25zdCBpbmRleCA9IGJyZWFkY3J1bWJzLmZpbmRJbmRleCh4ID0+IHgucGF0aC50b0xvd2VyQ2FzZSgpLnRyaW0oKSA9PT0gcGF0aC50b0xvd2VyQ2FzZSgpLnRyaW0oKSk7XHJcblxyXG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWJzID0gVG9vbHMuQnJlYWtSZWZlcmVuY2UoYnJlYWRjcnVtYnMpLnNwbGljZSgwLCBpbmRleCArIDEpO1xyXG4gICAgICAgICAgICB0aGlzLlNhdmUoYnJlYWRjcnVtYnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgc3RhdGljIFNldExhc3QocGFnZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBicmVhZGNydW1icyA9IHRoaXMuR2V0KCk7XHJcblxyXG4gICAgICAgIGlmIChicmVhZGNydW1icy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWJzW2JyZWFkY3J1bWJzLmxlbmd0aCAtIDFdID0geyBwYWdlLCBwYXRoIH07XHJcbiAgICAgICAgICAgIHRoaXMuU2F2ZShicmVhZGNydW1icyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgUmVtb3ZlTGFzdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBicmVhZGNydW1icyA9IHRoaXMuR2V0KCk7XHJcblxyXG4gICAgICAgIGlmIChicmVhZGNydW1icy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWJzLnBvcCgpO1xyXG4gICAgICAgICAgICB0aGlzLlNhdmUoYnJlYWRjcnVtYnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
@@ -1,44 +0,0 @@
1
- import { NG_VALUE_ACCESSOR } from "@angular/forms";
2
- import { forwardRef } from "@angular/core";
3
- export const CONTROL_VALUE = (component) => {
4
- return {
5
- provide: NG_VALUE_ACCESSOR,
6
- useExisting: forwardRef(() => component),
7
- multi: true
8
- };
9
- };
10
- export class ControlValue {
11
- constructor() {
12
- this._isTouched = false;
13
- }
14
- get isTouched() {
15
- return this._isTouched;
16
- }
17
- /** */
18
- SetValue(value) {
19
- if (typeof this._UpdateValue === 'function') {
20
- this._UpdateValue(value);
21
- }
22
- this._value = value;
23
- }
24
- /** */
25
- SetTouched(isTouched) {
26
- if (typeof this._IsTouched === 'function') {
27
- this._IsTouched(isTouched);
28
- }
29
- this._isTouched = isTouched;
30
- }
31
- /** */
32
- writeValue(value) {
33
- this._value = value;
34
- }
35
- /** */
36
- registerOnChange(callback) {
37
- this._UpdateValue = callback;
38
- }
39
- /** */
40
- registerOnTouched(callback) {
41
- this._IsTouched = callback;
42
- }
43
- }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbFZhbHVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy9Ub29scy9zcmMvQ29udHJvbFZhbHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFJLFNBQVksRUFBRSxFQUFFO0lBQzdDLE9BQU87UUFDSCxPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3hDLEtBQUssRUFBRSxJQUFJO0tBQ2QsQ0FBQTtBQUNMLENBQUMsQ0FBQTtBQUdELE1BQU0sT0FBTyxZQUFZO0lBQXpCO1FBSVksZUFBVSxHQUFZLEtBQUssQ0FBQztJQThDeEMsQ0FBQztJQXpDRyxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFHRCxNQUFNO0lBQ0ksUUFBUSxDQUFDLEtBQVU7UUFDekIsSUFBRyxPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUdELE1BQU07SUFDQyxVQUFVLENBQUMsU0FBa0I7UUFDaEMsSUFBRyxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUdELE1BQU07SUFDQyxVQUFVLENBQUMsS0FBVTtRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBR0QsTUFBTTtJQUNDLGdCQUFnQixDQUFDLFFBQWtCO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFHRCxNQUFNO0lBQ0MsaUJBQWlCLENBQUMsUUFBa0I7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7SUFDL0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IENPTlRST0xfVkFMVUUgPSA8VD4oY29tcG9uZW50OiBUKSA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IGNvbXBvbmVudCksXHJcbiAgICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sVmFsdWUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgLy9WYXJpYWJsZXNcclxuICAgIHByb3RlY3RlZCBfdmFsdWU6IGFueTtcclxuICAgIHByaXZhdGUgX2lzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIF9VcGRhdGVWYWx1ZSE6IEZ1bmN0aW9uO1xyXG4gICAgcHJpdmF0ZSBfSXNUb3VjaGVkITogRnVuY3Rpb247XHJcblxyXG5cclxuICAgIHB1YmxpYyBnZXQgaXNUb3VjaGVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1RvdWNoZWQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIFNldFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZih0eXBlb2YgdGhpcy5fVXBkYXRlVmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy5fVXBkYXRlVmFsdWUodmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgU2V0VG91Y2hlZChpc1RvdWNoZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZih0eXBlb2YgdGhpcy5fSXNUb3VjaGVkID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX0lzVG91Y2hlZChpc1RvdWNoZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5faXNUb3VjaGVkID0gaXNUb3VjaGVkO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX1VwZGF0ZVZhbHVlID0gY2FsbGJhY2s7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX0lzVG91Y2hlZCA9IGNhbGxiYWNrO1xyXG4gICAgfVxyXG59Il19
@@ -1,22 +0,0 @@
1
- import moment from "moment";
2
- export class DateTime {
3
- /** Get UTC Offset */
4
- static GetUTCOffset() {
5
- return moment().utcOffset();
6
- }
7
- /** Convert UTC Date to Local Zone */
8
- static ToLocalZone(utcDate) {
9
- return moment(utcDate).add(DateTime.GetUTCOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');
10
- }
11
- /** Convert Local Zone Date to UTC */
12
- static ToUTC(utcDate) {
13
- return moment(utcDate).subtract(DateTime.GetUTCOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');
14
- }
15
- /** DD MMM YYYY */
16
- static GetDateFormat(date) {
17
- if ((typeof date === 'string'))
18
- date = date.replaceAll('/', '-');
19
- return moment(date).parseZone().local(true).format('DD MMM YYYY');
20
- }
21
- }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVRpbWUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL1Rvb2xzL3NyYy9EYXRlVGltZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxPQUFPLFFBQVE7SUFDakIscUJBQXFCO0lBQ2QsTUFBTSxDQUFDLFlBQVk7UUFDdEIsT0FBTyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBR0QscUNBQXFDO0lBQzlCLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBc0M7UUFDNUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBR0QscUNBQXFDO0lBQzlCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBc0M7UUFDdEQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBR0Qsa0JBQWtCO0lBQ1gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFtQztRQUMzRCxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDO1lBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWUge1xyXG4gICAgLyoqIEdldCBVVEMgT2Zmc2V0ICovXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldFVUQ09mZnNldCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQoKS51dGNPZmZzZXQoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIENvbnZlcnQgVVRDIERhdGUgdG8gTG9jYWwgWm9uZSAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBUb0xvY2FsWm9uZSh1dGNEYXRlOiBzdHJpbmcgfCBEYXRlIHwgbW9tZW50Lk1vbWVudCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudCh1dGNEYXRlKS5hZGQoRGF0ZVRpbWUuR2V0VVRDT2Zmc2V0KCksICdtaW51dGVzJykuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBDb252ZXJ0IExvY2FsIFpvbmUgRGF0ZSB0byBVVEMgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgVG9VVEModXRjRGF0ZTogc3RyaW5nIHwgRGF0ZSB8IG1vbWVudC5Nb21lbnQpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQodXRjRGF0ZSkuc3VidHJhY3QoRGF0ZVRpbWUuR2V0VVRDT2Zmc2V0KCksICdtaW51dGVzJykuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBERCBNTU0gWVlZWSAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBHZXREYXRlRm9ybWF0KGRhdGU6IHN0cmluZyB8IERhdGUgfCBtb21lbnQuTW9tZW50KTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykpIGRhdGUgPSBkYXRlLnJlcGxhY2VBbGwoJy8nLCAnLScpO1xyXG4gICAgICAgIHJldHVybiBtb21lbnQoZGF0ZSkucGFyc2Vab25lKCkubG9jYWwodHJ1ZSkuZm9ybWF0KCdERCBNTU0gWVlZWScpO1xyXG4gICAgfVxyXG59Il19
@@ -1,93 +0,0 @@
1
- import { Tools } from "../";
2
- import * as XLSX from 'xlsx';
3
- export class Files {
4
- static { this.EXCEL_EXTENSIONS = ['xls', 'xlsx', 'csv']; }
5
- /** Get Extension File */
6
- static GetExtension(file) {
7
- const fileName = file.name;
8
- if (fileName.includes('.')) {
9
- let worlds = fileName.split('.');
10
- if (worlds.length > 0) {
11
- let extension = worlds.pop();
12
- extension = extension.trim().toLowerCase();
13
- if (extension.length > 0)
14
- return extension;
15
- }
16
- }
17
- return null;
18
- }
19
- /** Is Excel File */
20
- static IsExcel(file) {
21
- const EXTENSION = Files.GetExtension(file);
22
- return Tools.IsNotNull(EXTENSION)
23
- ? this.EXCEL_EXTENSIONS.includes(EXTENSION)
24
- : false;
25
- }
26
- /** Read excel file */
27
- static ReadExcel(file) {
28
- return new Promise(Resolve => {
29
- let columns = [];
30
- let rows = [];
31
- const reader = new FileReader();
32
- reader.readAsArrayBuffer(file);
33
- reader.onload = () => {
34
- const dataBytes = new Uint8Array(reader.result);
35
- if (dataBytes) {
36
- const workbook = XLSX.read(dataBytes, {});
37
- const sheet = workbook.Sheets[workbook.SheetNames[0]];
38
- let dataSheet = XLSX.utils.sheet_to_json(sheet, {
39
- header: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
40
- });
41
- //Get Headers
42
- for (const column in dataSheet[0]) {
43
- columns.push(Tools.FirstCharToLower(String(dataSheet[0][column]).replaceAll(' ', '')));
44
- }
45
- //Get Rows
46
- rows = XLSX.utils.sheet_to_json(sheet, { header: columns });
47
- rows.shift();
48
- rows = rows.map(row => {
49
- const item = Tools.BreakReference(row);
50
- delete item['__rowNum__'];
51
- return item;
52
- });
53
- }
54
- Resolve({ columns, rows });
55
- };
56
- reader.onerror = () => { Resolve({ columns, rows }); };
57
- });
58
- }
59
- /** Export to excel file */
60
- static ExportExcel(data, fileName = 'coer_report', sheetName = 'Sheet1') {
61
- sheetName = Tools.CleanUpBlanks(sheetName);
62
- fileName = Tools.CleanUpBlanks(fileName);
63
- if (fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {
64
- if (fileName.includes('.xls')) {
65
- fileName = fileName.replaceAll('.xls', '.xlsx');
66
- }
67
- if (fileName.includes('.csv')) {
68
- fileName = fileName.replaceAll('.csv', '.xlsx');
69
- }
70
- }
71
- else {
72
- fileName += '.xlsx';
73
- }
74
- const WORK_SHEET = XLSX.utils.json_to_sheet(data);
75
- const WORK_BOOK = XLSX.utils.book_new();
76
- XLSX.utils.book_append_sheet(WORK_BOOK, WORK_SHEET, 'Sheet1');
77
- XLSX.writeFile(WORK_BOOK, fileName);
78
- }
79
- /** Convert file to string base64 */
80
- static ConvertToBase64(file) {
81
- return new Promise(Resolve => {
82
- const reader = new FileReader();
83
- reader.readAsDataURL(file);
84
- reader.onload = () => {
85
- Resolve(reader.result?.toString() || '');
86
- };
87
- reader.onerror = () => {
88
- Resolve('');
89
- };
90
- });
91
- }
92
- }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZXMuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL1Rvb2xzL3NyYy9GaWxlcy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQzVCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE1BQU0sT0FBTyxLQUFLO2FBQ1MscUJBQWdCLEdBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTNFLHlCQUF5QjtJQUNsQixNQUFNLENBQUMsWUFBWSxDQUFDLElBQVU7UUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUUzQixJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBYSxDQUFDO1lBRTdDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRyxDQUFDO2dCQUM5QixTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUMvQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFHRCxvQkFBb0I7SUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLElBQVU7UUFDNUIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFNBQVUsQ0FBQztZQUM1QyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2hCLENBQUM7SUFHRCxzQkFBc0I7SUFDZixNQUFNLENBQUMsU0FBUyxDQUFJLElBQVU7UUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBb0MsT0FBTyxDQUFDLEVBQUU7WUFDNUQsSUFBSSxPQUFPLEdBQWEsRUFBRSxDQUFDO1lBQzNCLElBQUksSUFBSSxHQUFRLEVBQUUsQ0FBQztZQUVuQixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUvQixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQWEsQ0FBQyxDQUFDO2dCQUV2RCxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNaLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMxQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdEQsSUFBSSxTQUFTLEdBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO3dCQUNuRCxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO3FCQUM3SSxDQUFDLENBQUM7b0JBRUgsYUFBYTtvQkFDYixLQUFJLE1BQU0sTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNGLENBQUM7b0JBRUQsVUFBVTtvQkFDVixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7b0JBQzVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFFYixJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDbEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBTSxHQUFHLENBQUMsQ0FBQzt3QkFDNUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQzFCLE9BQU8sSUFBSSxDQUFDO29CQUNoQixDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO2dCQUVELE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQTtZQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUE7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBR0QsMkJBQTJCO0lBQ3BCLE1BQU0sQ0FBQyxXQUFXLENBQUksSUFBUyxFQUFFLFdBQW1CLGFBQWEsRUFBRSxZQUFvQixRQUFRO1FBQ2xHLFNBQVMsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLFFBQVEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpDLElBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN0RixJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFFRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDTCxDQUFDO2FBRUksQ0FBQztZQUNGLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFDeEIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFHRCxvQ0FBb0M7SUFDN0IsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFVO1FBQ3BDLE9BQU8sSUFBSSxPQUFPLENBQVMsT0FBTyxDQUFDLEVBQUU7WUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUNqQixPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUE7WUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtnQkFDbEIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvb2xzIH0gZnJvbSBcIi4uL1wiO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpbGVzIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRVhDRUxfRVhURU5TSU9OUzogc3RyaW5nW10gPSBbJ3hscycsICd4bHN4JywgJ2NzdiddO1xyXG5cclxuICAgIC8qKiBHZXQgRXh0ZW5zaW9uIEZpbGUgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0RXh0ZW5zaW9uKGZpbGU6IEZpbGUpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGZpbGUubmFtZTtcclxuXHJcbiAgICAgICAgaWYgKGZpbGVOYW1lLmluY2x1ZGVzKCcuJykpIHtcclxuICAgICAgICAgICAgbGV0IHdvcmxkcyA9IGZpbGVOYW1lLnNwbGl0KCcuJykgYXMgc3RyaW5nW107XHJcblxyXG4gICAgICAgICAgICBpZiAod29ybGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb24gPSB3b3JsZHMucG9wKCkhO1xyXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4dGVuc2lvbi5sZW5ndGggPiAwKSByZXR1cm4gZXh0ZW5zaW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIElzIEV4Y2VsIEZpbGUgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgSXNFeGNlbChmaWxlOiBGaWxlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgRVhURU5TSU9OID0gRmlsZXMuR2V0RXh0ZW5zaW9uKGZpbGUpO1xyXG5cclxuICAgICAgICByZXR1cm4gVG9vbHMuSXNOb3ROdWxsKEVYVEVOU0lPTilcclxuICAgICAgICAgICAgPyB0aGlzLkVYQ0VMX0VYVEVOU0lPTlMuaW5jbHVkZXMoRVhURU5TSU9OISlcclxuICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIFJlYWQgZXhjZWwgZmlsZSAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBSZWFkRXhjZWw8VD4oZmlsZTogRmlsZSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx7IGNvbHVtbnM6IHN0cmluZ1tdOyByb3dzOiBUW107IH0+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBsZXQgY29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAgICAgbGV0IHJvd3M6IFRbXSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xyXG5cclxuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFCeXRlcyA9IG5ldyBVaW50OEFycmF5KHJlYWRlci5yZXN1bHQgYXMgYW55KTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YUJ5dGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29ya2Jvb2sgPSBYTFNYLnJlYWQoZGF0YUJ5dGVzLCB7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hlZXQgPSB3b3JrYm9vay5TaGVldHNbd29ya2Jvb2suU2hlZXROYW1lc1swXV07XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFTaGVldDogYW55W10gPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24oc2hlZXQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywgJ0cnLCAnSCcsICdJJywgJ0onLCAnSycsICdMJywgJ00nLCAnTicsICdPJywgJ1AnLCAnUScsICdSJywgJ1MnLCAnVCcsICdVJywgJ1YnLCAnVycsICdYJywgJ1knLCAnWiddXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vR2V0IEhlYWRlcnNcclxuICAgICAgICAgICAgICAgICAgICBmb3IoY29uc3QgY29sdW1uIGluIGRhdGFTaGVldFswXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLnB1c2goVG9vbHMuRmlyc3RDaGFyVG9Mb3dlcihTdHJpbmcoZGF0YVNoZWV0WzBdW2NvbHVtbl0pLnJlcGxhY2VBbGwoJyAnLCAnJykpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vR2V0IFJvd3NcclxuICAgICAgICAgICAgICAgICAgICByb3dzID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHNoZWV0LCB7IGhlYWRlcjogY29sdW1ucyB9KTtcclxuICAgICAgICAgICAgICAgICAgICByb3dzLnNoaWZ0KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJvd3MgPSByb3dzLm1hcChyb3cgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gVG9vbHMuQnJlYWtSZWZlcmVuY2U8YW55Pihyb3cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgaXRlbVsnX19yb3dOdW1fXyddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBSZXNvbHZlKHsgY29sdW1ucywgcm93cyB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoKSA9PiB7IFJlc29sdmUoeyBjb2x1bW5zLCByb3dzIH0pIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEV4cG9ydCB0byBleGNlbCBmaWxlICovXHJcbiAgICBwdWJsaWMgc3RhdGljIEV4cG9ydEV4Y2VsPFQ+KGRhdGE6IFRbXSwgZmlsZU5hbWU6IHN0cmluZyA9ICdjb2VyX3JlcG9ydCcsIHNoZWV0TmFtZTogc3RyaW5nID0gJ1NoZWV0MScpIHtcclxuICAgICAgICBzaGVldE5hbWUgPSBUb29scy5DbGVhblVwQmxhbmtzKHNoZWV0TmFtZSk7XHJcbiAgICAgICAgZmlsZU5hbWUgPSBUb29scy5DbGVhblVwQmxhbmtzKGZpbGVOYW1lKTtcclxuXHJcbiAgICAgICAgaWYoZmlsZU5hbWUuZW5kc1dpdGgoJy54bHMnKSB8fCBmaWxlTmFtZS5lbmRzV2l0aCgnLnhsc3gnKSB8fCBmaWxlTmFtZS5lbmRzV2l0aCgnLmNzdicpKSB7XHJcbiAgICAgICAgICAgIGlmIChmaWxlTmFtZS5pbmNsdWRlcygnLnhscycpKSB7XHJcbiAgICAgICAgICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnJlcGxhY2VBbGwoJy54bHMnLCAnLnhsc3gnKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGZpbGVOYW1lLmluY2x1ZGVzKCcuY3N2JykpIHtcclxuICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUucmVwbGFjZUFsbCgnLmNzdicsICcueGxzeCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZmlsZU5hbWUgKz0gJy54bHN4JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IFdPUktfU0hFRVQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoZGF0YSk7XHJcbiAgICAgICAgY29uc3QgV09SS19CT09LID0gWExTWC51dGlscy5ib29rX25ldygpO1xyXG4gICAgICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQoV09SS19CT09LLCBXT1JLX1NIRUVULCAnU2hlZXQxJyk7XHJcbiAgICAgICAgWExTWC53cml0ZUZpbGUoV09SS19CT09LLCBmaWxlTmFtZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBDb252ZXJ0IGZpbGUgdG8gc3RyaW5nIGJhc2U2NCAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBDb252ZXJ0VG9CYXNlNjQoZmlsZTogRmlsZSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuXHJcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBSZXNvbHZlKHJlYWRlci5yZXN1bHQ/LnRvU3RyaW5nKCkgfHwgJycpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIFJlc29sdmUoJycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXX0=