coer-elements 0.0.23 → 0.0.25
Sign up to get free protection for your applications and to get access to all the features.
- package/components/index.d.ts +5 -0
- package/components/lib/coer-button/coer-button.component.d.ts +44 -0
- package/components/lib/coer-checkbox/coer-checkbox.component.d.ts +28 -0
- package/components/lib/coer-filebox/coer-filebox.component.d.ts +33 -0
- package/components/lib/coer-form/coer-form.component.d.ts +33 -0
- package/components/lib/coer-grid/coer-grid.component.d.ts +53 -0
- package/components/lib/coer-grid/coer-grid.extension.d.ts +103 -0
- package/components/lib/coer-grid/coer-grid.templates.d.ts +9 -0
- package/components/lib/coer-modal/coer-modal.component.d.ts +38 -0
- package/components/lib/coer-numberbox/coer-numberbox.component.d.ts +55 -0
- package/components/lib/coer-page-title/coer-page-title.component.d.ts +12 -0
- package/components/lib/coer-selectbox/coer-selectbox.component.d.ts +75 -0
- package/components/lib/coer-switch/coer-switch.component.d.ts +31 -0
- package/components/lib/coer-tab/coer-tab.component.d.ts +35 -0
- package/components/lib/coer-textarea/coer-textarea.component.d.ts +51 -0
- package/components/lib/coer-textbox/coer-textbox.component.d.ts +57 -0
- package/components/lib/components.module.d.ts +30 -0
- package/components/public-api.d.ts +15 -0
- package/directives/index.d.ts +5 -0
- package/directives/lib/coer-ref.directive.d.ts +14 -0
- package/directives/lib/directives.module.d.ts +8 -0
- package/directives/lib/life-cycle.directive.d.ts +16 -0
- package/directives/public-api.d.ts +3 -0
- package/esm2022/components/coer-elements-components.mjs +5 -0
- package/esm2022/components/lib/coer-button/coer-button.component.mjs +133 -0
- package/esm2022/components/lib/coer-checkbox/coer-checkbox.component.mjs +83 -0
- package/esm2022/components/lib/coer-filebox/coer-filebox.component.mjs +102 -0
- package/esm2022/components/lib/coer-form/coer-form.component.mjs +101 -0
- package/esm2022/components/lib/coer-grid/coer-grid.component.mjs +512 -0
- package/esm2022/components/lib/coer-grid/coer-grid.extension.mjs +408 -0
- package/esm2022/components/lib/coer-grid/coer-grid.templates.mjs +30 -0
- package/esm2022/components/lib/coer-modal/coer-modal.component.mjs +107 -0
- package/esm2022/components/lib/coer-numberbox/coer-numberbox.component.mjs +258 -0
- package/esm2022/components/lib/coer-page-title/coer-page-title.component.mjs +44 -0
- package/esm2022/components/lib/coer-selectbox/coer-selectbox.component.mjs +338 -0
- package/esm2022/components/lib/coer-switch/coer-switch.component.mjs +93 -0
- package/esm2022/components/lib/coer-tab/coer-tab.component.mjs +116 -0
- package/esm2022/components/lib/coer-textarea/coer-textarea.component.mjs +156 -0
- package/esm2022/components/lib/coer-textbox/coer-textbox.component.mjs +195 -0
- package/esm2022/components/lib/components.module.mjs +129 -0
- package/esm2022/components/public-api.mjs +16 -0
- package/esm2022/directives/coer-elements-directives.mjs +5 -0
- package/esm2022/directives/lib/coer-ref.directive.mjs +23 -0
- package/esm2022/directives/lib/directives.module.mjs +25 -0
- package/esm2022/directives/lib/life-cycle.directive.mjs +33 -0
- package/esm2022/directives/public-api.mjs +4 -0
- package/esm2022/interfaces/coer-elements-interfaces.mjs +5 -0
- package/esm2022/interfaces/lib/app-source.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-filebox/file-image.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-filebox/file.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-button-by-row.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-checkbox.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-coer-numberbox.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-coer-selectbox.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-coer-switch.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-coer-textbox.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-column.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-data-source.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-header-button.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-header-export-button.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-header.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-import.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-input-checkbox.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-input-switch-change.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-input-textbox.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-item.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-keyup-enter.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-length.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-search.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-grid/grid-sort.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-menu/menu-option-selected.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-menu/menu-selected.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-menu/menu.interface.mjs +2 -0
- package/esm2022/interfaces/lib/coer-ref.interface.mjs +2 -0
- package/esm2022/interfaces/lib/page-title/breadcrumb.interface.mjs +2 -0
- package/esm2022/interfaces/lib/page-title/go-back.interface.mjs +2 -0
- package/esm2022/interfaces/lib/screen-size.interface.mjs +2 -0
- package/esm2022/interfaces/lib/service/http-request.interface.mjs +2 -0
- package/esm2022/interfaces/lib/service/http-response.interface.mjs +2 -0
- package/esm2022/interfaces/lib/service/patch.interface.mjs +2 -0
- package/esm2022/interfaces/public-api.mjs +39 -0
- package/esm2022/pipes/coer-elements-pipes.mjs +5 -0
- package/esm2022/pipes/lib/html.pipe.mjs +18 -0
- package/esm2022/pipes/lib/no-image.pipe.mjs +23 -0
- package/esm2022/pipes/lib/numeric-format.pipe.mjs +15 -0
- package/esm2022/pipes/lib/pipes.module.mjs +31 -0
- package/esm2022/pipes/public-api.mjs +5 -0
- package/esm2022/signals/coer-elements-signals.mjs +5 -0
- package/esm2022/signals/lib/breakpoint.signal.mjs +4 -0
- package/esm2022/signals/lib/is-loading.signal.mjs +3 -0
- package/esm2022/signals/lib/is-menu-open.signal.mjs +3 -0
- package/esm2022/signals/lib/is-modal-open.signal.mjs +3 -0
- package/esm2022/signals/lib/menu.signal.mjs +3 -0
- package/esm2022/signals/public-api.mjs +6 -0
- package/esm2022/tools/coer-elements-tools.mjs +5 -0
- package/esm2022/tools/lib/breadcrumbs.class.mjs +63 -0
- package/esm2022/tools/lib/coer-alert/coer-alert.component.mjs +228 -0
- package/esm2022/tools/lib/control-value.class.mjs +46 -0
- package/esm2022/tools/lib/date-time.class.mjs +29 -0
- package/esm2022/tools/lib/files.class.mjs +91 -0
- package/esm2022/tools/lib/menu.class.mjs +23 -0
- package/esm2022/tools/lib/page.class.mjs +156 -0
- package/esm2022/tools/lib/screen.class.mjs +51 -0
- package/esm2022/tools/lib/service.class.mjs +247 -0
- package/esm2022/tools/lib/source.class.mjs +80 -0
- package/esm2022/tools/lib/tools.mjs +220 -0
- package/esm2022/tools/public-api.mjs +12 -0
- package/fesm2022/coer-elements-components.mjs +2718 -0
- package/fesm2022/coer-elements-components.mjs.map +1 -0
- package/fesm2022/coer-elements-directives.mjs +82 -0
- package/fesm2022/coer-elements-directives.mjs.map +1 -0
- package/fesm2022/coer-elements-interfaces.mjs +6 -0
- package/fesm2022/coer-elements-interfaces.mjs.map +1 -0
- package/fesm2022/coer-elements-pipes.mjs +83 -0
- package/fesm2022/coer-elements-pipes.mjs.map +1 -0
- package/fesm2022/coer-elements-signals.mjs +19 -0
- package/fesm2022/coer-elements-signals.mjs.map +1 -0
- package/fesm2022/coer-elements-tools.mjs +1223 -0
- package/fesm2022/coer-elements-tools.mjs.map +1 -0
- package/interfaces/index.d.ts +5 -0
- package/interfaces/lib/app-source.interface.d.ts +4 -0
- package/interfaces/lib/coer-filebox/file-image.interface.d.ts +14 -0
- package/interfaces/lib/coer-filebox/file.interface.d.ts +5 -0
- package/interfaces/lib/coer-grid/grid-button-by-row.interface.d.ts +6 -0
- package/interfaces/lib/coer-grid/grid-checkbox.interface.d.ts +5 -0
- package/interfaces/lib/coer-grid/grid-coer-numberbox.interface.d.ts +12 -0
- package/interfaces/lib/coer-grid/grid-coer-selectbox.interface.d.ts +9 -0
- package/interfaces/lib/coer-grid/grid-coer-switch.interface.d.ts +6 -0
- package/interfaces/lib/coer-grid/grid-coer-textbox.interface.d.ts +11 -0
- package/interfaces/lib/coer-grid/grid-column.interface.d.ts +22 -0
- package/interfaces/lib/coer-grid/grid-data-source.interface.d.ts +6 -0
- package/interfaces/lib/coer-grid/grid-header-button.interface.d.ts +8 -0
- package/interfaces/lib/coer-grid/grid-header-export-button.interface.d.ts +10 -0
- package/interfaces/lib/coer-grid/grid-header.interface.d.ts +5 -0
- package/interfaces/lib/coer-grid/grid-import.interface.d.ts +4 -0
- package/interfaces/lib/coer-grid/grid-input-checkbox.interface.d.ts +5 -0
- package/interfaces/lib/coer-grid/grid-input-switch-change.interface.d.ts +5 -0
- package/interfaces/lib/coer-grid/grid-input-textbox.interface.d.ts +5 -0
- package/interfaces/lib/coer-grid/grid-item.interface.d.ts +5 -0
- package/interfaces/lib/coer-grid/grid-keyup-enter.interface.d.ts +6 -0
- package/interfaces/lib/coer-grid/grid-length.interface.d.ts +5 -0
- package/interfaces/lib/coer-grid/grid-search.interface.d.ts +4 -0
- package/interfaces/lib/coer-grid/grid-sort.interface.d.ts +5 -0
- package/interfaces/lib/coer-menu/menu-option-selected.interface.d.ts +9 -0
- package/interfaces/lib/coer-menu/menu-selected.interface.d.ts +10 -0
- package/interfaces/lib/coer-menu/menu.interface.d.ts +6 -0
- package/interfaces/lib/coer-ref.interface.d.ts +10 -0
- package/interfaces/lib/page-title/breadcrumb.interface.d.ts +6 -0
- package/interfaces/lib/page-title/go-back.interface.d.ts +6 -0
- package/interfaces/lib/screen-size.interface.d.ts +5 -0
- package/interfaces/lib/service/http-request.interface.d.ts +10 -0
- package/interfaces/lib/service/http-response.interface.d.ts +6 -0
- package/interfaces/lib/service/patch.interface.d.ts +5 -0
- package/interfaces/public-api.d.ts +33 -0
- package/package.json +37 -1
- package/pipes/index.d.ts +5 -0
- package/pipes/lib/html.pipe.d.ts +10 -0
- package/pipes/lib/no-image.pipe.d.ts +7 -0
- package/pipes/lib/numeric-format.pipe.d.ts +7 -0
- package/pipes/lib/pipes.module.d.ts +9 -0
- package/pipes/public-api.d.ts +4 -0
- package/signals/index.d.ts +5 -0
- package/signals/lib/breakpoint.signal.d.ts +1 -0
- package/signals/lib/is-loading.signal.d.ts +1 -0
- package/signals/lib/is-menu-open.signal.d.ts +1 -0
- package/signals/lib/is-modal-open.signal.d.ts +1 -0
- package/signals/lib/menu.signal.d.ts +2 -0
- package/signals/public-api.d.ts +5 -0
- package/tools/index.d.ts +5 -0
- package/tools/lib/breadcrumbs.class.d.ts +18 -0
- package/tools/lib/coer-alert/coer-alert.component.d.ts +23 -0
- package/tools/lib/control-value.class.d.ts +25 -0
- package/tools/lib/date-time.class.d.ts +13 -0
- package/tools/lib/files.class.d.ts +16 -0
- package/tools/lib/menu.class.d.ts +8 -0
- package/tools/lib/page.class.d.ts +60 -0
- package/tools/lib/screen.class.d.ts +13 -0
- package/tools/lib/service.class.d.ts +39 -0
- package/tools/lib/source.class.d.ts +20 -0
- package/tools/lib/tools.d.ts +34 -0
- package/tools/public-api.d.ts +11 -0
@@ -0,0 +1,156 @@
|
|
1
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
2
|
+
import { Component, Inject, inject } from '@angular/core';
|
3
|
+
import { CoerAlert } from './coer-alert/coer-alert.component';
|
4
|
+
import { Breadcrumbs } from './breadcrumbs.class';
|
5
|
+
import { Source } from './source.class';
|
6
|
+
import { Tools } from './tools';
|
7
|
+
import * as i0 from "@angular/core";
|
8
|
+
export class Page {
|
9
|
+
constructor(page) {
|
10
|
+
//Injection
|
11
|
+
this.alert = inject(CoerAlert);
|
12
|
+
this.router = inject(Router);
|
13
|
+
this.activatedRoute = inject(ActivatedRoute);
|
14
|
+
/** */
|
15
|
+
this.isUpdate = false;
|
16
|
+
/** */
|
17
|
+
this.isLoading = false;
|
18
|
+
/** */
|
19
|
+
this.isReadyPage = false;
|
20
|
+
/** */
|
21
|
+
this.enableAnimations = false;
|
22
|
+
/** */
|
23
|
+
this.breadcrumbs = [];
|
24
|
+
/** */
|
25
|
+
this.pageResponse = null;
|
26
|
+
/** */
|
27
|
+
this.goBack = { show: false };
|
28
|
+
//Private Variables
|
29
|
+
this._page = '';
|
30
|
+
this._source = null;
|
31
|
+
this._preventDestroy = false;
|
32
|
+
/** */
|
33
|
+
this.GoBack = (path) => (() => {
|
34
|
+
if (path)
|
35
|
+
Breadcrumbs.Remove(path);
|
36
|
+
else
|
37
|
+
Breadcrumbs.RemoveLast();
|
38
|
+
});
|
39
|
+
this.SetPageName(page);
|
40
|
+
this.SetSource();
|
41
|
+
this.GetSource();
|
42
|
+
this.GetNavigation();
|
43
|
+
this.SetGoBack();
|
44
|
+
this.GetPageResponse();
|
45
|
+
}
|
46
|
+
ngAfterViewInit() {
|
47
|
+
this.routeParams = this.activatedRoute.snapshot.params;
|
48
|
+
this.queryParams = this.activatedRoute.snapshot.queryParams;
|
49
|
+
setTimeout(() => {
|
50
|
+
this.isReadyPage = true;
|
51
|
+
this.RunPage();
|
52
|
+
setTimeout(() => { this.enableAnimations = true; }, 1000);
|
53
|
+
});
|
54
|
+
}
|
55
|
+
ngOnDestroy() {
|
56
|
+
if (!this._preventDestroy)
|
57
|
+
Source.ClearPageResponse();
|
58
|
+
}
|
59
|
+
/** Main method. Starts after ngAfterViewInit() */
|
60
|
+
RunPage() { }
|
61
|
+
;
|
62
|
+
/** Rename the last breadcrumb and update the url id */
|
63
|
+
SetPageName(name, id = null) {
|
64
|
+
this._page = name;
|
65
|
+
let path = this.router.url;
|
66
|
+
if (path.includes('?'))
|
67
|
+
path = path.split('?')[0];
|
68
|
+
if (id) {
|
69
|
+
const PATH_ARRAY = path.split('/');
|
70
|
+
const PATH_ID = Tools.BreakReference(PATH_ARRAY).pop();
|
71
|
+
if (PATH_ID) {
|
72
|
+
PATH_ARRAY[PATH_ARRAY.length - 1] = String(id);
|
73
|
+
path = PATH_ARRAY.join('/');
|
74
|
+
}
|
75
|
+
}
|
76
|
+
if (this.breadcrumbs.length > 0) {
|
77
|
+
this.breadcrumbs[this.breadcrumbs.length - 1].page = name;
|
78
|
+
this.breadcrumbs[this.breadcrumbs.length - 1].path = path;
|
79
|
+
Breadcrumbs.SetLast(name, path);
|
80
|
+
}
|
81
|
+
this.router.navigateByUrl(path);
|
82
|
+
}
|
83
|
+
/** */
|
84
|
+
SetSource() {
|
85
|
+
Source.Set(this._page);
|
86
|
+
}
|
87
|
+
/** */
|
88
|
+
GetSource() {
|
89
|
+
this._source = Source.Get();
|
90
|
+
}
|
91
|
+
/** */
|
92
|
+
GetPageResponse() {
|
93
|
+
this.pageResponse = Source.GetPageResponse();
|
94
|
+
}
|
95
|
+
/** */
|
96
|
+
GetNavigation() {
|
97
|
+
if (this._source) {
|
98
|
+
this.breadcrumbs = Breadcrumbs.Get().map(item => Object.assign({
|
99
|
+
page: item.page,
|
100
|
+
path: item.path,
|
101
|
+
click: this.GoBack(item.path)
|
102
|
+
}));
|
103
|
+
}
|
104
|
+
else
|
105
|
+
this.breadcrumbs = [{ page: this._page }];
|
106
|
+
}
|
107
|
+
/** */
|
108
|
+
SetGoBack() {
|
109
|
+
if (this._source) {
|
110
|
+
this.goBack = {
|
111
|
+
show: true,
|
112
|
+
path: this._source.path,
|
113
|
+
click: this.GoBack()
|
114
|
+
};
|
115
|
+
}
|
116
|
+
}
|
117
|
+
/** Navigate to previous page */
|
118
|
+
GoToSource(pageResponse = null) {
|
119
|
+
if (this._source) {
|
120
|
+
Breadcrumbs.RemoveLast();
|
121
|
+
this.SetPageResponse(pageResponse);
|
122
|
+
Tools.Sleep().then(_ => this.router.navigateByUrl(this._source.path));
|
123
|
+
}
|
124
|
+
}
|
125
|
+
;
|
126
|
+
/** */
|
127
|
+
SetPageResponse(pageResponse = null) {
|
128
|
+
if (Tools.IsNotNull(pageResponse)) {
|
129
|
+
this._preventDestroy = true;
|
130
|
+
Source.SetPageResponse(pageResponse);
|
131
|
+
}
|
132
|
+
}
|
133
|
+
;
|
134
|
+
/** */
|
135
|
+
ReloadPage() {
|
136
|
+
Breadcrumbs.RemoveLast();
|
137
|
+
setTimeout(() => window.location.reload());
|
138
|
+
}
|
139
|
+
/** */
|
140
|
+
Log(value, log = null) {
|
141
|
+
if (Tools.IsNotNull(log))
|
142
|
+
console.log({ log, value });
|
143
|
+
else
|
144
|
+
console.log(value);
|
145
|
+
}
|
146
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Page, deps: [{ token: String }], target: i0.ɵɵFactoryTarget.Component }); }
|
147
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: Page, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
|
148
|
+
}
|
149
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Page, decorators: [{
|
150
|
+
type: Component,
|
151
|
+
args: [{ template: '' }]
|
152
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
153
|
+
type: Inject,
|
154
|
+
args: [String]
|
155
|
+
}] }] });
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvdG9vbHMvbGliL3BhZ2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR2hDLE1BQU0sT0FBTyxJQUFJO0lBd0NiLFlBQTRCLElBQVk7UUF0Q3hDLFdBQVc7UUFDUSxVQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFekQsTUFBTTtRQUNJLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFcEMsTUFBTTtRQUNJLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFckMsTUFBTTtRQUNJLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRXZDLE1BQU07UUFDSSxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFRNUMsTUFBTTtRQUNJLGdCQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUUxQyxNQUFNO1FBQ0ksaUJBQVksR0FBUSxJQUFJLENBQUM7UUFFbkMsTUFBTTtRQUNJLFdBQU0sR0FBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUU1QyxtQkFBbUI7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TSxFQUFFOzs0RkFDWixJQUFJO2tCQURoQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTs7MEJBeUNWLE1BQU07MkJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdCwgaW5qZWN0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSUFwcFNvdXJjZSwgSUJyZWFkY3J1bWIsIElHb0JhY2sgfSBmcm9tICdjb2VyLWVsZW1lbnRzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDb2VyQWxlcnQgfSBmcm9tICcuL2NvZXItYWxlcnQvY29lci1hbGVydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1icyB9IGZyb20gJy4vYnJlYWRjcnVtYnMuY2xhc3MnO1xyXG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICcuL3NvdXJjZS5jbGFzcyc7XHJcbmltcG9ydCB7IFRvb2xzIH0gZnJvbSAnLi90b29scyc7XHJcblxyXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXHJcbmV4cG9ydCBjbGFzcyBQYWdlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICAvL0luamVjdGlvblxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsZXJ0ID0gaW5qZWN0KENvZXJBbGVydCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBpc1VwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIGlzUmVhZHlQYWdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgZW5hYmxlQW5pbWF0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIHJvdXRlUGFyYW1zOiBhbnk7XHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgcXVlcnlQYXJhbXM6IGFueTtcclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBicmVhZGNydW1iczogSUJyZWFkY3J1bWJbXSA9IFtdO1xyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIHBhZ2VSZXNwb25zZTogYW55ID0gbnVsbDtcclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBnb0JhY2s6IElHb0JhY2sgPSB7IHNob3c6IGZhbHNlIH07XHJcblxyXG4gICAgLy9Qcml2YXRlIFZhcmlhYmxlc1xyXG4gICAgcHJpdmF0ZSBfcGFnZTogc3RyaW5nID0gJyc7XHJcbiAgICBwcml2YXRlIF9zb3VyY2U6IElBcHBTb3VyY2UgfCBudWxsID0gbnVsbDtcclxuICAgIHByaXZhdGUgX3ByZXZlbnREZXN0cm95OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoU3RyaW5nKSBwYWdlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLlNldFBhZ2VOYW1lKHBhZ2UpO1xyXG4gICAgICAgIHRoaXMuU2V0U291cmNlKCk7XHJcbiAgICAgICAgdGhpcy5HZXRTb3VyY2UoKTtcclxuICAgICAgICB0aGlzLkdldE5hdmlnYXRpb24oKTtcclxuICAgICAgICB0aGlzLlNldEdvQmFjaygpO1xyXG4gICAgICAgIHRoaXMuR2V0UGFnZVJlc3BvbnNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMucm91dGVQYXJhbXMgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtcztcclxuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNSZWFkeVBhZ2UgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLlJ1blBhZ2UoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuZW5hYmxlQW5pbWF0aW9ucyA9IHRydWUgfSwgMTAwMCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fcHJldmVudERlc3Ryb3kpIFNvdXJjZS5DbGVhclBhZ2VSZXNwb25zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBNYWluIG1ldGhvZC4gU3RhcnRzIGFmdGVyIG5nQWZ0ZXJWaWV3SW5pdCgpICovXHJcbiAgICBwcm90ZWN0ZWQgUnVuUGFnZSgpOiB2b2lkIHt9O1xyXG5cclxuXHJcbiAgICAvKiogUmVuYW1lIHRoZSBsYXN0IGJyZWFkY3J1bWIgYW5kIHVwZGF0ZSB0aGUgdXJsIGlkICovXHJcbiAgICBwcm90ZWN0ZWQgU2V0UGFnZU5hbWUobmFtZTogc3RyaW5nLCBpZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9wYWdlID0gbmFtZTtcclxuXHJcbiAgICAgICAgbGV0IHBhdGggPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJz8nKSkgcGF0aCA9IHBhdGguc3BsaXQoJz8nKVswXTtcclxuXHJcbiAgICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFBBVEhfQVJSQVkgPSBwYXRoLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IFBBVEhfSUQgPSBUb29scy5CcmVha1JlZmVyZW5jZShQQVRIX0FSUkFZKS5wb3AoKTtcclxuICAgICAgICAgICAgaWYgKFBBVEhfSUQpIHtcclxuICAgICAgICAgICAgICAgIFBBVEhfQVJSQVlbUEFUSF9BUlJBWS5sZW5ndGggLSAxXSA9IFN0cmluZyhpZCk7XHJcbiAgICAgICAgICAgICAgICBwYXRoID0gUEFUSF9BUlJBWS5qb2luKCcvJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmJyZWFkY3J1bWJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1ic1t0aGlzLmJyZWFkY3J1bWJzLmxlbmd0aCAtIDFdLnBhZ2UgPSBuYW1lO1xyXG4gICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJzW3RoaXMuYnJlYWRjcnVtYnMubGVuZ3RoIC0gMV0ucGF0aCA9IHBhdGg7XHJcbiAgICAgICAgICAgIEJyZWFkY3J1bWJzLlNldExhc3QobmFtZSwgcGF0aCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHBhdGgpXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBTZXRTb3VyY2UoKTogdm9pZCB7XHJcbiAgICAgICAgU291cmNlLlNldCh0aGlzLl9wYWdlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIEdldFNvdXJjZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9zb3VyY2UgPSBTb3VyY2UuR2V0KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIEdldFBhZ2VSZXNwb25zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhZ2VSZXNwb25zZSA9IFNvdXJjZS5HZXRQYWdlUmVzcG9uc2UoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIEdldE5hdmlnYXRpb24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NvdXJjZSkge1xyXG4gICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJzID0gQnJlYWRjcnVtYnMuR2V0KCkubWFwKGl0ZW0gPT4gT2JqZWN0LmFzc2lnbih7XHJcbiAgICAgICAgICAgICAgICBwYWdlOiBpdGVtLnBhZ2UsXHJcbiAgICAgICAgICAgICAgICBwYXRoOiBpdGVtLnBhdGgsXHJcbiAgICAgICAgICAgICAgICBjbGljazogdGhpcy5Hb0JhY2soaXRlbS5wYXRoKVxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIHRoaXMuYnJlYWRjcnVtYnMgPSBbeyBwYWdlOiB0aGlzLl9wYWdlIH1dO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByaXZhdGUgU2V0R29CYWNrKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9zb3VyY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5nb0JhY2sgPSB7XHJcbiAgICAgICAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcGF0aDogdGhpcy5fc291cmNlLnBhdGgsXHJcbiAgICAgICAgICAgICAgICBjbGljazogdGhpcy5Hb0JhY2soKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIEdvQmFjayA9IChwYXRoPzogc3RyaW5nKSA9PiAoKCkgPT4ge1xyXG4gICAgICAgIGlmIChwYXRoKSBCcmVhZGNydW1icy5SZW1vdmUocGF0aCk7XHJcbiAgICAgICAgZWxzZSBCcmVhZGNydW1icy5SZW1vdmVMYXN0KCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLyoqIE5hdmlnYXRlIHRvIHByZXZpb3VzIHBhZ2UgKi9cclxuICAgIHByb3RlY3RlZCBHb1RvU291cmNlPFQ+KHBhZ2VSZXNwb25zZTogVCB8IG51bGwgPSBudWxsKTogdm9pZCB7XHJcbiAgICAgICAgaWYodGhpcy5fc291cmNlKSB7XHJcbiAgICAgICAgICAgIEJyZWFkY3J1bWJzLlJlbW92ZUxhc3QoKTtcclxuICAgICAgICAgICAgdGhpcy5TZXRQYWdlUmVzcG9uc2UocGFnZVJlc3BvbnNlKTtcclxuICAgICAgICAgICAgVG9vbHMuU2xlZXAoKS50aGVuKF8gPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLl9zb3VyY2UhLnBhdGgpKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBTZXRQYWdlUmVzcG9uc2U8VD4ocGFnZVJlc3BvbnNlOiBUIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBpZiAoVG9vbHMuSXNOb3ROdWxsKHBhZ2VSZXNwb25zZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5fcHJldmVudERlc3Ryb3kgPSB0cnVlO1xyXG4gICAgICAgICAgICBTb3VyY2UuU2V0UGFnZVJlc3BvbnNlKHBhZ2VSZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgUmVsb2FkUGFnZSgpOiB2b2lkIHtcclxuICAgICAgICBCcmVhZGNydW1icy5SZW1vdmVMYXN0KCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCkpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBMb2codmFsdWU6IGFueSwgbG9nOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChUb29scy5Jc05vdE51bGwobG9nKSkgY29uc29sZS5sb2coeyBsb2csIHZhbHVlIH0pO1xyXG4gICAgICAgIGVsc2UgY29uc29sZS5sb2codmFsdWUpO1xyXG4gICAgfVxyXG59Il19
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import { Observable } from "rxjs";
|
2
|
+
export class Screen {
|
3
|
+
static get WINDOW_WIDTH() {
|
4
|
+
return window.innerWidth;
|
5
|
+
}
|
6
|
+
static get WINDOW_HEIGHT() {
|
7
|
+
return window.innerHeight;
|
8
|
+
}
|
9
|
+
static get DEVICE_WIDTH() {
|
10
|
+
return window.screen.width;
|
11
|
+
}
|
12
|
+
static get DEVICE_HEIGHT() {
|
13
|
+
return window.screen.height;
|
14
|
+
}
|
15
|
+
static get BREAKPOINT() {
|
16
|
+
if (window.innerWidth < 576)
|
17
|
+
return 'xs';
|
18
|
+
else if (window.innerWidth >= 576 && window.innerWidth < 768)
|
19
|
+
return 'sm';
|
20
|
+
else if (window.innerWidth >= 768 && window.innerWidth < 992)
|
21
|
+
return 'md';
|
22
|
+
else if (window.innerWidth >= 992 && window.innerWidth < 1200)
|
23
|
+
return 'lg';
|
24
|
+
else if (window.innerWidth >= 1200 && window.innerWidth < 1400)
|
25
|
+
return 'xl';
|
26
|
+
else
|
27
|
+
return 'xxl';
|
28
|
+
}
|
29
|
+
/** */
|
30
|
+
static { this.Resize = new Observable(subscriber => {
|
31
|
+
window.addEventListener("load", () => {
|
32
|
+
window.dispatchEvent(new Event('resize'));
|
33
|
+
});
|
34
|
+
window.onresize = () => {
|
35
|
+
subscriber.next({
|
36
|
+
width: this.WINDOW_WIDTH,
|
37
|
+
height: this.WINDOW_HEIGHT,
|
38
|
+
breakpoin: this.BREAKPOINT
|
39
|
+
});
|
40
|
+
};
|
41
|
+
}); }
|
42
|
+
/** */
|
43
|
+
static { this.BackButtonBrowser = new Observable(subscriber => {
|
44
|
+
window.addEventListener('popstate', popStateEvent => {
|
45
|
+
if (popStateEvent.state && popStateEvent.target) {
|
46
|
+
subscriber.next(popStateEvent.target.location.href);
|
47
|
+
}
|
48
|
+
});
|
49
|
+
}); }
|
50
|
+
}
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy90b29scy9saWIvc2NyZWVuLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsTUFBTSxPQUFPLE1BQU07SUFFUixNQUFNLEtBQUssWUFBWTtRQUMxQixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUdNLE1BQU0sS0FBSyxhQUFhO1FBQzNCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUM5QixDQUFDO0lBR00sTUFBTSxLQUFLLFlBQVk7UUFDMUIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBR00sTUFBTSxLQUFLLGFBQWE7UUFDM0IsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBR00sTUFBTSxLQUFLLFVBQVU7UUFDeEIsSUFBSSxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQzthQUNwQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO2FBQ3JFLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7YUFDckUsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQzthQUN0RSxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDOztZQUN2RSxPQUFPLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBR0QsTUFBTTthQUNRLFdBQU0sR0FBRyxJQUFJLFVBQVUsQ0FBYyxVQUFVLENBQUMsRUFBRTtRQUM1RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUNqQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNuQixVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNaLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhO2dCQUMxQixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDN0IsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFBO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFHSCxNQUFNO2FBQ1Esc0JBQWlCLEdBQUcsSUFBSSxVQUFVLENBQVMsVUFBVSxDQUFDLEVBQUU7UUFDbEUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsRUFBRTtZQUNoRCxJQUFJLGFBQWEsQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM5QyxVQUFVLENBQUMsSUFBSSxDQUFFLGFBQWEsQ0FBQyxNQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pFLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IElTY3JlZW5TaXplIH0gZnJvbSBcImNvZXItZWxlbWVudHMvaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTY3JlZW4ge1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IFdJTkRPV19XSURUSCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXQgV0lORE9XX0hFSUdIVCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IERFVklDRV9XSURUSCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cuc2NyZWVuLndpZHRoO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldCBERVZJQ0VfSEVJR0hUKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5zY3JlZW4uaGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldCBCUkVBS1BPSU5UKCk6ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnIHwgJ3h4bCcge1xyXG4gICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDU3NikgcmV0dXJuICd4cyc7XHJcbiAgICAgICAgZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPj0gNTc2ICYmIHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSByZXR1cm4gJ3NtJztcclxuICAgICAgICBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA+PSA3NjggJiYgd2luZG93LmlubmVyV2lkdGggPCA5OTIpIHJldHVybiAnbWQnO1xyXG4gICAgICAgIGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoID49IDk5MiAmJiB3aW5kb3cuaW5uZXJXaWR0aCA8IDEyMDApIHJldHVybiAnbGcnO1xyXG4gICAgICAgIGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoID49IDEyMDAgJiYgd2luZG93LmlubmVyV2lkdGggPCAxNDAwKSByZXR1cm4gJ3hsJztcclxuICAgICAgICBlbHNlIHJldHVybiAneHhsJztcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgc3RhdGljIFJlc2l6ZSA9IG5ldyBPYnNlcnZhYmxlPElTY3JlZW5TaXplPihzdWJzY3JpYmVyID0+IHtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3Jlc2l6ZScpKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgd2luZG93Lm9ucmVzaXplID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuV0lORE9XX1dJRFRILFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLldJTkRPV19IRUlHSFQsXHJcbiAgICAgICAgICAgICAgICBicmVha3BvaW46IHRoaXMuQlJFQUtQT0lOVFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgc3RhdGljIEJhY2tCdXR0b25Ccm93c2VyID0gbmV3IE9ic2VydmFibGU8c3RyaW5nPihzdWJzY3JpYmVyID0+IHtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCBwb3BTdGF0ZUV2ZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKHBvcFN0YXRlRXZlbnQuc3RhdGUgJiYgcG9wU3RhdGVFdmVudC50YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCgocG9wU3RhdGVFdmVudC50YXJnZXQgYXMgYW55KS5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn0iXX0=
|
@@ -0,0 +1,247 @@
|
|
1
|
+
import { inject } from "@angular/core";
|
2
|
+
import { HttpClient, HttpRequest } from "@angular/common/http";
|
3
|
+
import { CoerAlert } from "./coer-alert/coer-alert.component";
|
4
|
+
import { Tools } from "./tools";
|
5
|
+
export class Service {
|
6
|
+
constructor() {
|
7
|
+
//Injections
|
8
|
+
this.alert = inject(CoerAlert);
|
9
|
+
this.http = inject(HttpClient);
|
10
|
+
this.httpCode = {
|
11
|
+
Ok: 200,
|
12
|
+
Created: 201,
|
13
|
+
NoContent: 204,
|
14
|
+
BadRequest: 400,
|
15
|
+
Unauthorize: 401,
|
16
|
+
NotFound: 404,
|
17
|
+
NotAllowed: 405,
|
18
|
+
NotAcceptable: 406,
|
19
|
+
Conflict: 409,
|
20
|
+
PayloadTooLarge: 413,
|
21
|
+
InnerError: 500
|
22
|
+
};
|
23
|
+
}
|
24
|
+
/** */
|
25
|
+
ReleaseSubscription(subscription) {
|
26
|
+
if (subscription && !subscription.closed)
|
27
|
+
subscription.unsubscribe();
|
28
|
+
}
|
29
|
+
/** HTTP GET */
|
30
|
+
HTTP_GET(request) {
|
31
|
+
return new Promise(Resolve => {
|
32
|
+
this.ReleaseSubscription(this._GET$);
|
33
|
+
this._GET$ = this.http.request(new HttpRequest("GET", request.url, { params: request.queryParams, headers: request.headers })).subscribe({
|
34
|
+
next: (response) => {
|
35
|
+
if (response.type > 0) {
|
36
|
+
Resolve({
|
37
|
+
body: Tools.BreakReference(response.body),
|
38
|
+
status: response.status,
|
39
|
+
message: response.statusText,
|
40
|
+
ok: true
|
41
|
+
});
|
42
|
+
}
|
43
|
+
},
|
44
|
+
error: (httpError) => {
|
45
|
+
this.ReleaseSubscription(this._GET$);
|
46
|
+
//this.AlertError(httpError, request.alertError);
|
47
|
+
Resolve({
|
48
|
+
body: {},
|
49
|
+
status: httpError.status,
|
50
|
+
message: httpError.error?.message || httpError.error,
|
51
|
+
ok: false
|
52
|
+
});
|
53
|
+
},
|
54
|
+
complete: () => {
|
55
|
+
this.ReleaseSubscription(this._GET$);
|
56
|
+
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
57
|
+
////this.alert.Success(request.alertSuccess);
|
58
|
+
}
|
59
|
+
}
|
60
|
+
});
|
61
|
+
});
|
62
|
+
}
|
63
|
+
/** HTTP POST */
|
64
|
+
HTTP_POST(request) {
|
65
|
+
return new Promise(Resolve => {
|
66
|
+
this.ReleaseSubscription(this._POST$);
|
67
|
+
this._POST$ = this.http.request(new HttpRequest("POST", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({
|
68
|
+
next: (response) => {
|
69
|
+
if (response.type > 0) {
|
70
|
+
Resolve({
|
71
|
+
body: Tools.BreakReference(response.body),
|
72
|
+
status: response.status,
|
73
|
+
message: response.statusText,
|
74
|
+
ok: true
|
75
|
+
});
|
76
|
+
}
|
77
|
+
},
|
78
|
+
error: (httpError) => {
|
79
|
+
this.ReleaseSubscription(this._POST$);
|
80
|
+
//this.AlertError(httpError, request.alertError);
|
81
|
+
Resolve({
|
82
|
+
body: {},
|
83
|
+
status: httpError.status,
|
84
|
+
message: httpError.error?.message || httpError.error,
|
85
|
+
ok: false
|
86
|
+
});
|
87
|
+
},
|
88
|
+
complete: () => {
|
89
|
+
this.ReleaseSubscription(this._POST$);
|
90
|
+
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
91
|
+
//this.alert.Success(request.alertSuccess);
|
92
|
+
}
|
93
|
+
}
|
94
|
+
});
|
95
|
+
});
|
96
|
+
}
|
97
|
+
/** HTTP PUT */
|
98
|
+
HTTP_PUT(request) {
|
99
|
+
return new Promise(Resolve => {
|
100
|
+
this.ReleaseSubscription(this._PUT$);
|
101
|
+
this._PUT$ = this.http.request(new HttpRequest("PUT", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({
|
102
|
+
next: (response) => {
|
103
|
+
if (response.type > 0) {
|
104
|
+
Resolve({
|
105
|
+
body: {},
|
106
|
+
status: response.status,
|
107
|
+
message: response.statusText,
|
108
|
+
ok: true
|
109
|
+
});
|
110
|
+
}
|
111
|
+
},
|
112
|
+
error: (httpError) => {
|
113
|
+
this.ReleaseSubscription(this._PUT$);
|
114
|
+
//this.AlertError(httpError, request.alertError);
|
115
|
+
Resolve({
|
116
|
+
body: {},
|
117
|
+
status: httpError.status,
|
118
|
+
message: httpError.error?.message || httpError.error,
|
119
|
+
ok: false
|
120
|
+
});
|
121
|
+
},
|
122
|
+
complete: () => {
|
123
|
+
this.ReleaseSubscription(this._PUT$);
|
124
|
+
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
125
|
+
//this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
|
126
|
+
}
|
127
|
+
}
|
128
|
+
});
|
129
|
+
});
|
130
|
+
}
|
131
|
+
/** HTTP PATCH */
|
132
|
+
HTTP_PATCH(request) {
|
133
|
+
return new Promise(Resolve => {
|
134
|
+
this.ReleaseSubscription(this._PATCH$);
|
135
|
+
this._PATCH$ = this.http.request(new HttpRequest("PATCH", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({
|
136
|
+
next: (response) => {
|
137
|
+
if (response.type > 0) {
|
138
|
+
Resolve({
|
139
|
+
body: {},
|
140
|
+
status: response.status,
|
141
|
+
message: response.statusText,
|
142
|
+
ok: true
|
143
|
+
});
|
144
|
+
}
|
145
|
+
},
|
146
|
+
error: (httpError) => {
|
147
|
+
this.ReleaseSubscription(this._PATCH$);
|
148
|
+
//this.AlertError(httpError, request.alertError);
|
149
|
+
Resolve({
|
150
|
+
body: {},
|
151
|
+
status: httpError.status,
|
152
|
+
message: httpError.error?.message || httpError.error,
|
153
|
+
ok: false
|
154
|
+
});
|
155
|
+
},
|
156
|
+
complete: () => {
|
157
|
+
this.ReleaseSubscription(this._PATCH$);
|
158
|
+
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
159
|
+
//this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
|
160
|
+
}
|
161
|
+
}
|
162
|
+
});
|
163
|
+
});
|
164
|
+
}
|
165
|
+
/** HTTP DELETE */
|
166
|
+
HTTP_DELETE(request) {
|
167
|
+
return new Promise(Resolve => {
|
168
|
+
this.ReleaseSubscription(this._DELETE$);
|
169
|
+
this._DELETE$ = this.http.request(new HttpRequest("DELETE", request.url, { params: request.queryParams, headers: request.headers })).subscribe({
|
170
|
+
next: (response) => {
|
171
|
+
if (response.type > 0) {
|
172
|
+
Resolve({
|
173
|
+
body: {},
|
174
|
+
status: response.status,
|
175
|
+
message: response.statusText,
|
176
|
+
ok: true
|
177
|
+
});
|
178
|
+
}
|
179
|
+
},
|
180
|
+
error: (httpError) => {
|
181
|
+
this.ReleaseSubscription(this._DELETE$);
|
182
|
+
//this.AlertError(httpError, request.alertError);
|
183
|
+
Resolve({
|
184
|
+
body: {},
|
185
|
+
status: httpError.status,
|
186
|
+
message: httpError.error?.message || httpError.error,
|
187
|
+
ok: false
|
188
|
+
});
|
189
|
+
},
|
190
|
+
complete: () => {
|
191
|
+
this.ReleaseSubscription(this._DELETE$);
|
192
|
+
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
193
|
+
//this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');
|
194
|
+
}
|
195
|
+
}
|
196
|
+
});
|
197
|
+
});
|
198
|
+
}
|
199
|
+
/** */
|
200
|
+
AlertError(httpError, message) {
|
201
|
+
if (httpError.status >= 500) {
|
202
|
+
if (Tools.IsNotOnlyWhiteSpace(message)) {
|
203
|
+
//this.alert.Error('', message, 'fa-solid fa-bug', null);
|
204
|
+
}
|
205
|
+
}
|
206
|
+
else if (httpError.status < 500) {
|
207
|
+
switch (httpError.status) {
|
208
|
+
case 400: {
|
209
|
+
//this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');
|
210
|
+
break;
|
211
|
+
}
|
212
|
+
case 401: {
|
213
|
+
//this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');
|
214
|
+
break;
|
215
|
+
}
|
216
|
+
case 404: {
|
217
|
+
//this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');
|
218
|
+
break;
|
219
|
+
}
|
220
|
+
case 405: {
|
221
|
+
//this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');
|
222
|
+
break;
|
223
|
+
}
|
224
|
+
case 406: {
|
225
|
+
//this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');
|
226
|
+
break;
|
227
|
+
}
|
228
|
+
case 409: {
|
229
|
+
//this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');
|
230
|
+
break;
|
231
|
+
}
|
232
|
+
case 413: {
|
233
|
+
//this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');
|
234
|
+
break;
|
235
|
+
}
|
236
|
+
default: {
|
237
|
+
if (httpError.status <= 0) {
|
238
|
+
//this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);
|
239
|
+
}
|
240
|
+
else //this.alert.Warning(httpError.error?.message || httpError.error);
|
241
|
+
break;
|
242
|
+
}
|
243
|
+
}
|
244
|
+
}
|
245
|
+
}
|
246
|
+
}
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvdG9vbHMvbGliL3NlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFnQyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdoQyxNQUFNLE9BQU8sT0FBTztJQUFwQjtRQUVJLFlBQVk7UUFDTyxVQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbkMsYUFBUSxHQUFHO1lBQ2pCLEVBQUUsRUFBRSxHQUFHO1lBQ1AsT0FBTyxFQUFFLEdBQUc7WUFDWixTQUFTLEVBQUUsR0FBRztZQUNkLFVBQVUsRUFBRSxHQUFHO1lBQ2YsV0FBVyxFQUFFLEdBQUc7WUFDaEIsUUFBUSxFQUFFLEdBQUc7WUFDYixVQUFVLEVBQUUsR0FBRztZQUNmLGFBQWEsRUFBRSxHQUFHO1lBQ2xCLFFBQVEsRUFBRSxHQUFHO1lBQ2IsZUFBZSxFQUFFLEdBQUc7WUFDcEIsVUFBVSxFQUFFLEdBQUc7U0FDbEIsQ0FBQTtJQXFSTCxDQUFDO0lBMVFHLE1BQU07SUFDRSxtQkFBbUIsQ0FBQyxZQUEwQjtRQUNsRCxJQUFJLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFHRCxlQUFlO0lBQ0wsUUFBUSxDQUFJLE9BQXdCO1FBQzFDLE9BQU8sSUFBSSxPQUFPLENBQW1CLE9BQU8sQ0FBQyxF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Q0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwUmVxdWVzdCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBDb2VyQWxlcnQgfSBmcm9tIFwiLi9jb2VyLWFsZXJ0L2NvZXItYWxlcnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IElIdHRwUmVxdWVzdCwgSUh0dHBSZXNwb25zZSB9IGZyb20gXCJjb2VyLWVsZW1lbnRzL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHsgVG9vbHMgfSBmcm9tIFwiLi90b29sc1wiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNlcnZpY2Uge1xyXG5cclxuICAgIC8vSW5qZWN0aW9uc1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsZXJ0ID0gaW5qZWN0KENvZXJBbGVydCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgaHR0cENvZGUgPSB7XHJcbiAgICAgICAgT2s6IDIwMCxcclxuICAgICAgICBDcmVhdGVkOiAyMDEsXHJcbiAgICAgICAgTm9Db250ZW50OiAyMDQsXHJcbiAgICAgICAgQmFkUmVxdWVzdDogNDAwLFxyXG4gICAgICAgIFVuYXV0aG9yaXplOiA0MDEsXHJcbiAgICAgICAgTm90Rm91bmQ6IDQwNCxcclxuICAgICAgICBOb3RBbGxvd2VkOiA0MDUsXHJcbiAgICAgICAgTm90QWNjZXB0YWJsZTogNDA2LFxyXG4gICAgICAgIENvbmZsaWN0OiA0MDksXHJcbiAgICAgICAgUGF5bG9hZFRvb0xhcmdlOiA0MTMsXHJcbiAgICAgICAgSW5uZXJFcnJvcjogNTAwXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vU3Vic2NyaXB0aW9uc1xyXG4gICAgcHJpdmF0ZSBfR0VUJCE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX1BPU1QkITogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBfUFVUJCE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX1BBVENIJCE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX0RFTEVURSQhOiBTdWJzY3JpcHRpb247XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBSZWxlYXNlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHN1YnNjcmlwdGlvbiAmJiAhc3Vic2NyaXB0aW9uLmNsb3NlZCkgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBIVFRQIEdFVCAqL1xyXG4gICAgcHJvdGVjdGVkIEhUVFBfR0VUPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPFQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0dFVCQpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fR0VUJCA9IHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KG5ldyBIdHRwUmVxdWVzdChcIkdFVFwiLCByZXF1ZXN0LnVybCwgeyBwYXJhbXM6IHJlcXVlc3QucXVlcnlQYXJhbXMsIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyB9KSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogSHR0cEV2ZW50PFQ+IHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogVG9vbHMuQnJlYWtSZWZlcmVuY2U8VD4ocmVzcG9uc2UuYm9keSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9HRVQkKTtcclxuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuQWxlcnRFcnJvcihodHRwRXJyb3IsIHJlcXVlc3QuYWxlcnRFcnJvcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogaHR0cEVycm9yLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0dFVCQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoVG9vbHMuSXNOb3RPbmx5V2hpdGVTcGFjZShyZXF1ZXN0LmFsZXJ0U3VjY2VzcykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8vL3RoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2Vzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgUE9TVCAqL1xyXG4gICAgcHJvdGVjdGVkIEhUVFBfUE9TVDxUPihyZXF1ZXN0OiBJSHR0cFJlcXVlc3Q8VD4pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8SUh0dHBSZXNwb25zZTxUPj4oUmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QT1NUJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9QT1NUJCA9IHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KG5ldyBIdHRwUmVxdWVzdChcIlBPU1RcIiwgcmVxdWVzdC51cmwsIHJlcXVlc3QuYm9keSwgeyBwYXJhbXM6IHJlcXVlc3QucXVlcnlQYXJhbXMsIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyB9KSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogSHR0cEV2ZW50PFQ+IHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogVG9vbHMuQnJlYWtSZWZlcmVuY2U8VD4ocmVzcG9uc2UuYm9keSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QT1NUJCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLkFsZXJ0RXJyb3IoaHR0cEVycm9yLCByZXF1ZXN0LmFsZXJ0RXJyb3IpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGh0dHBFcnJvci5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9rOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QT1NUJCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKHJlcXVlc3QuYWxlcnRTdWNjZXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2Vzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgUFVUICovXHJcbiAgICBwcm90ZWN0ZWQgSFRUUF9QVVQ8VD4ocmVxdWVzdDogSUh0dHBSZXF1ZXN0PFQ+KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElIdHRwUmVzcG9uc2U8dm9pZD4+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fUFVUJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9QVVQkID0gdGhpcy5odHRwLnJlcXVlc3Q8VD4obmV3IEh0dHBSZXF1ZXN0KFwiUFVUXCIsIHJlcXVlc3QudXJsLCByZXF1ZXN0LmJvZHksIHsgcGFyYW1zOiByZXF1ZXN0LnF1ZXJ5UGFyYW1zLCBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMgfSkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEh0dHBFdmVudDxUPiB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS50eXBlID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BVVCQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5BbGVydEVycm9yKGh0dHBFcnJvciwgcmVxdWVzdC5hbGVydEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBodHRwRXJyb3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fUFVUJCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKHJlcXVlc3QuYWxlcnRTdWNjZXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2VzcywgJ1VwZGF0ZWQnLCAnZmEtc29saWQgZmEtYXJyb3dzLXJvdGF0ZSBmYS1zcGluJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgUEFUQ0ggKi9cclxuICAgIHByb3RlY3RlZCBIVFRQX1BBVENIPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPHZvaWQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BBVENIJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9QQVRDSCQgPSB0aGlzLmh0dHAucmVxdWVzdDxUPihuZXcgSHR0cFJlcXVlc3QoXCJQQVRDSFwiLCByZXF1ZXN0LnVybCwgcmVxdWVzdC5ib2R5LCB7IHBhcmFtczogcmVxdWVzdC5xdWVyeVBhcmFtcywgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzIH0pKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIdHRwRXZlbnQ8VD4gfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QQVRDSCQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5BbGVydEVycm9yKGh0dHBFcnJvciwgcmVxdWVzdC5hbGVydEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBodHRwRXJyb3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fUEFUQ0gkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UocmVxdWVzdC5hbGVydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5TdWNjZXNzKHJlcXVlc3QuYWxlcnRTdWNjZXNzLCAnVXBkYXRlZCcsICdmYS1zb2xpZCBmYS1hcnJvd3Mtcm90YXRlIGZhLXNwaW4nKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogSFRUUCBERUxFVEUgKi9cclxuICAgIHByb3RlY3RlZCBIVFRQX0RFTEVURTxUPihyZXF1ZXN0OiBJSHR0cFJlcXVlc3Q8VD4pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8SUh0dHBSZXNwb25zZTx2b2lkPj4oUmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9ERUxFVEUkKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX0RFTEVURSQgPSB0aGlzLmh0dHAucmVxdWVzdDxUPihuZXcgSHR0cFJlcXVlc3QoXCJERUxFVEVcIiwgcmVxdWVzdC51cmwsIHsgcGFyYW1zOiByZXF1ZXN0LnF1ZXJ5UGFyYW1zLCBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMgfSkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEh0dHBFdmVudDxUPiB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS50eXBlID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0RFTEVURSQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5BbGVydEVycm9yKGh0dHBFcnJvciwgcmVxdWVzdC5hbGVydEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBodHRwRXJyb3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fREVMRVRFJCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UocmVxdWVzdC5hbGVydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5TdWNjZXNzKHJlcXVlc3QuYWxlcnRTdWNjZXNzLCAnRGVsZXRlZCcsICdmYS1yZWd1bGFyIGZhLXRyYXNoLWNhbicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBBbGVydEVycm9yKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIG1lc3NhZ2U/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaHR0cEVycm9yLnN0YXR1cyA+PSA1MDApIHtcclxuICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UobWVzc2FnZSkpIHtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5FcnJvcignJywgbWVzc2FnZSwgJ2ZhLXNvbGlkIGZhLWJ1ZycsIG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmIChodHRwRXJyb3Iuc3RhdHVzIDwgNTAwKSB7XHJcbiAgICAgICAgICAgIHN3aXRjaChodHRwRXJyb3Iuc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwMDoge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5XYXJuaW5nKGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsICdCYWQgUmVxdWVzdCcsICdmYS1yZWd1bGFyIGZhLWZhY2UtZ3Jpbi1iZWFtLXN3ZWF0IGZhLWxnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSA0MDE6IHtcclxuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnVW5hdXRob3JpemUnLCAnZmEtcmVndWxhciBmYS1mYWNlLXJvbGxpbmctZXllcyBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgNDA0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ05vdCBGb3VuZCcsICdmYS1yZWd1bGFyIGZhLWZhY2UtbWVoIGZhLWxnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSA0MDU6IHtcclxuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnTm90IEFsbG93ZWQnLCAnZmEtcmVndWxhciBmYS1mYWNlLWdyaW1hY2UgZmEtbGcnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwNjoge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5XYXJuaW5nKGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsICdOb3QgQWNjZXB0YWJsZScsICdmYS1yZWd1bGFyIGZhLWZhY2UtZnJvd24tb3BlbiBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgNDA5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ0NvbmZsaWN0JywgJ2ZhLXJlZ3VsYXIgZmEtZmFjZS1kaXp6eSBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgNDEzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ1RvbyBMYXJnZScsICdmYS1yZWd1bGFyIGZhLWZhY2UtZmx1c2hlZCBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cEVycm9yLnN0YXR1cyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5XYXJuaW5nKCdXaXRob3V0IENvbm5lY3Rpb24nLCAnV0VCIEFQSSBET1dOJywgJ2ZhLXNvbGlkIGZhLXBsdWctY2lyY2xlLXhtYXJrIGZhLWxnJywgbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIC8vdGhpcy5hbGVydC5XYXJuaW5nKGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|
@@ -0,0 +1,80 @@
|
|
1
|
+
import { inject } from "@angular/core";
|
2
|
+
import { Router } from '@angular/router';
|
3
|
+
import { Breadcrumbs } from "./breadcrumbs.class";
|
4
|
+
import { Tools } from "./tools";
|
5
|
+
export class Source {
|
6
|
+
static { this.storage = 'COER-System'; }
|
7
|
+
/** */
|
8
|
+
static Set(page) {
|
9
|
+
const ROUTER = inject(Router);
|
10
|
+
let path = ROUTER.url;
|
11
|
+
if (path.includes('?'))
|
12
|
+
path = path.split('?')[0];
|
13
|
+
Breadcrumbs.Add(page, path);
|
14
|
+
const breadcrumbs = Breadcrumbs.Get();
|
15
|
+
if (breadcrumbs.length >= 2) {
|
16
|
+
breadcrumbs.pop();
|
17
|
+
const breadcrumb = breadcrumbs.pop();
|
18
|
+
this.Save({ page: breadcrumb.page, path: breadcrumb.path });
|
19
|
+
}
|
20
|
+
else
|
21
|
+
this.Save(null);
|
22
|
+
}
|
23
|
+
/** */
|
24
|
+
static Save(source) {
|
25
|
+
let storage = sessionStorage.getItem(this.storage);
|
26
|
+
if (storage)
|
27
|
+
storage = JSON.parse(storage);
|
28
|
+
storage = Object.assign({}, storage, { source });
|
29
|
+
sessionStorage.setItem(this.storage, JSON.stringify(storage));
|
30
|
+
}
|
31
|
+
/** */
|
32
|
+
static Get() {
|
33
|
+
let storage = sessionStorage.getItem(this.storage);
|
34
|
+
if (storage) {
|
35
|
+
storage = JSON.parse(storage);
|
36
|
+
if (storage.hasOwnProperty('source')) {
|
37
|
+
return storage.source;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
return null;
|
41
|
+
}
|
42
|
+
/** */
|
43
|
+
static GetRoot() {
|
44
|
+
const breadcrumbs = Breadcrumbs.Get();
|
45
|
+
return (breadcrumbs.length > 0) ? breadcrumbs.shift() : null;
|
46
|
+
}
|
47
|
+
/** */
|
48
|
+
static SetPageResponse(pageResponse) {
|
49
|
+
let storage = sessionStorage.getItem(this.storage);
|
50
|
+
storage = JSON.parse(storage);
|
51
|
+
storage = Object.assign({}, storage, { pageResponse });
|
52
|
+
sessionStorage.setItem(this.storage, JSON.stringify(storage));
|
53
|
+
}
|
54
|
+
/** */
|
55
|
+
static GetPageResponse() {
|
56
|
+
let storage = sessionStorage.getItem(this.storage);
|
57
|
+
if (storage) {
|
58
|
+
storage = JSON.parse(storage);
|
59
|
+
if (storage.hasOwnProperty('pageResponse')) {
|
60
|
+
return Tools.BreakReference(storage.pageResponse);
|
61
|
+
}
|
62
|
+
}
|
63
|
+
return null;
|
64
|
+
}
|
65
|
+
/** */
|
66
|
+
static ClearPageResponse() {
|
67
|
+
let storage = sessionStorage.getItem(this.storage);
|
68
|
+
storage = JSON.parse(storage);
|
69
|
+
if (storage.hasOwnProperty('pageResponse')) {
|
70
|
+
delete storage.pageResponse;
|
71
|
+
}
|
72
|
+
storage = Object.assign({}, storage);
|
73
|
+
sessionStorage.setItem(this.storage, JSON.stringify(storage));
|
74
|
+
}
|
75
|
+
/** */
|
76
|
+
static Reset() {
|
77
|
+
sessionStorage.removeItem(this.storage);
|
78
|
+
}
|
79
|
+
}
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy90b29scy9saWIvc291cmNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhDLE1BQU0sT0FBTyxNQUFNO2FBRVMsWUFBTyxHQUFHLGFBQWEsQ0FBQztJQUVoRCxNQUFNO0lBQ0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzFCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QixJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsRCxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU1QixNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFdEMsSUFBRyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pCLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFHLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLENB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QUM7WUFDekMsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBR0QsTUFBTTtJQUNDLE1BQU0sQ0FBQyxLQUFLO1FBQ2YsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IElBcHBTb3VyY2UgfSBmcm9tIFwiY29lci1lbGVtZW50cy9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJzIH0gZnJvbSBcIi4vYnJlYWRjcnVtYnMuY2xhc3NcIjtcclxuaW1wb3J0IHsgVG9vbHMgfSBmcm9tIFwiLi90b29sc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNvdXJjZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgc3RvcmFnZSA9ICdDT0VSLVN5c3RlbSc7XHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgc3RhdGljIFNldChwYWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBST1VURVIgPSBpbmplY3QoUm91dGVyKTtcclxuXHJcbiAgICAgICAgbGV0IHBhdGggPSBST1VURVIudXJsO1xyXG4gICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCc/JykpIHBhdGggPSBwYXRoLnNwbGl0KCc/JylbMF07XHJcblxyXG4gICAgICAgIEJyZWFkY3J1bWJzLkFkZChwYWdlLCBwYXRoKTtcclxuXHJcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYnMgPSBCcmVhZGNydW1icy5HZXQoKTtcclxuXHJcbiAgICAgICAgaWYoYnJlYWRjcnVtYnMubGVuZ3RoID49IDIpIHtcclxuICAgICAgICAgICAgYnJlYWRjcnVtYnMucG9wKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSBicmVhZGNydW1icy5wb3AoKSE7XHJcbiAgICAgICAgICAgIHRoaXMuU2F2ZSh7IHBhZ2U6IGJyZWFkY3J1bWIucGFnZSwgcGF0aDogYnJlYWRjcnVtYi5wYXRoIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSB0aGlzLlNhdmUobnVsbCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgU2F2ZShzb3VyY2U6IElBcHBTb3VyY2UgfCBudWxsKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZSkgYXMgYW55O1xyXG4gICAgICAgIGlmIChzdG9yYWdlKSBzdG9yYWdlID0gSlNPTi5wYXJzZShzdG9yYWdlKTtcclxuICAgICAgICBzdG9yYWdlID0gT2JqZWN0LmFzc2lnbih7fSwgc3RvcmFnZSwgeyBzb3VyY2UgfSk7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2UsIEpTT04uc3RyaW5naWZ5KHN0b3JhZ2UpKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldCgpOiBJQXBwU291cmNlIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZSkgYXMgYW55O1xyXG5cclxuICAgICAgICBpZiAoc3RvcmFnZSkge1xyXG4gICAgICAgICAgICBzdG9yYWdlID0gSlNPTi5wYXJzZShzdG9yYWdlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzdG9yYWdlLmhhc093blByb3BlcnR5KCdzb3VyY2UnKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JhZ2Uuc291cmNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldFJvb3QoKTogSUFwcFNvdXJjZSB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzID0gQnJlYWRjcnVtYnMuR2V0KCk7XHJcbiAgICAgICAgcmV0dXJuIChicmVhZGNydW1icy5sZW5ndGggPiAwKSA/IGJyZWFkY3J1bWJzLnNoaWZ0KCkhIDogbnVsbDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgc3RhdGljIFNldFBhZ2VSZXNwb25zZTxUPihwYWdlUmVzcG9uc2U6IFQpOiB2b2lkIHtcclxuICAgICAgICBsZXQgc3RvcmFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlKSBhcyBhbnk7XHJcbiAgICAgICAgc3RvcmFnZSA9IEpTT04ucGFyc2Uoc3RvcmFnZSk7XHJcbiAgICAgICAgc3RvcmFnZSA9IE9iamVjdC5hc3NpZ24oe30sIHN0b3JhZ2UsIHsgcGFnZVJlc3BvbnNlIH0pO1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlLCBKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBHZXRQYWdlUmVzcG9uc2U8VD4oKTogVCB8IG51bGwge1xyXG4gICAgICAgIGxldCBzdG9yYWdlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2UpIGFzIGFueTtcclxuXHJcbiAgICAgICAgaWYgKHN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgc3RvcmFnZSA9IEpTT04ucGFyc2Uoc3RvcmFnZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoc3RvcmFnZS5oYXNPd25Qcm9wZXJ0eSgncGFnZVJlc3BvbnNlJykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBUb29scy5CcmVha1JlZmVyZW5jZShzdG9yYWdlLnBhZ2VSZXNwb25zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgQ2xlYXJQYWdlUmVzcG9uc2UoKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZSkgYXMgYW55O1xyXG4gICAgICAgIHN0b3JhZ2UgPSBKU09OLnBhcnNlKHN0b3JhZ2UpO1xyXG5cclxuICAgICAgICBpZiAoc3RvcmFnZS5oYXNPd25Qcm9wZXJ0eSgncGFnZVJlc3BvbnNlJykpIHtcclxuICAgICAgICAgICAgZGVsZXRlIHN0b3JhZ2UucGFnZVJlc3BvbnNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RvcmFnZSA9IE9iamVjdC5hc3NpZ24oe30sIHN0b3JhZ2UpO1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlLCBKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBSZXNldCgpOiB2b2lkIHtcclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuc3RvcmFnZSk7XHJcbiAgICB9XHJcbn0iXX0=
|