@eui/core 15.4.0 → 15.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +296 -296
- package/README.md +26 -26
- package/assets/i18n-eui/bg.json +114 -114
- package/assets/i18n-eui/cs.json +114 -114
- package/assets/i18n-eui/da.json +114 -114
- package/assets/i18n-eui/de.json +114 -114
- package/assets/i18n-eui/el.json +114 -114
- package/assets/i18n-eui/en.json +113 -113
- package/assets/i18n-eui/es.json +114 -114
- package/assets/i18n-eui/et.json +114 -114
- package/assets/i18n-eui/fi.json +114 -114
- package/assets/i18n-eui/fr.json +114 -114
- package/assets/i18n-eui/ga.json +114 -114
- package/assets/i18n-eui/hr.json +114 -114
- package/assets/i18n-eui/hu.json +114 -114
- package/assets/i18n-eui/it.json +114 -114
- package/assets/i18n-eui/lt.json +114 -114
- package/assets/i18n-eui/lv.json +114 -114
- package/assets/i18n-eui/mt.json +114 -114
- package/assets/i18n-eui/nl.json +114 -114
- package/assets/i18n-eui/pl.json +114 -114
- package/assets/i18n-eui/pt.json +114 -114
- package/assets/i18n-eui/ro.json +114 -114
- package/assets/i18n-eui/sk.json +114 -114
- package/assets/i18n-eui/sl.json +114 -114
- package/assets/i18n-eui/sv.json +114 -114
- package/docs/classes/RouterMock.html +5 -5
- package/docs/dependencies.html +95 -7
- package/docs/index.html +36 -59
- package/docs/injectables/CoreAppEffects.html +51 -51
- package/docs/js/menu-wc.js +12 -7
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +1211 -1211
- package/docs/overview.html +171 -0
- package/esm2020/eui-core.mjs +4 -4
- package/esm2020/index.mjs +13 -13
- package/esm2020/lib/eui-core.module.mjs +78 -78
- package/esm2020/lib/helpers/date-helpers.mjs +3 -3
- package/esm2020/lib/helpers/dom-helpers.mjs +87 -87
- package/esm2020/lib/helpers/event-helpers.mjs +9 -9
- package/esm2020/lib/helpers/form-helpers.mjs +42 -42
- package/esm2020/lib/helpers/format-helpers.mjs +66 -66
- package/esm2020/lib/helpers/http-helpers.mjs +7 -7
- package/esm2020/lib/helpers/index.mjs +8 -8
- package/esm2020/lib/helpers/utils.mjs +7 -7
- package/esm2020/lib/interceptors/add-lang-param.interceptor.mjs +35 -35
- package/esm2020/lib/interceptors/cache-prevention.interceptor.mjs +21 -21
- package/esm2020/lib/interceptors/cors-security.interceptor.mjs +15 -15
- package/esm2020/lib/interceptors/csrf-prevention.interceptor.mjs +15 -15
- package/esm2020/lib/interceptors/eu-login-session-timeout-handling.interceptor.mjs +72 -72
- package/esm2020/lib/interceptors/index.mjs +8 -8
- package/esm2020/lib/interceptors/openid/index.mjs +4 -4
- package/esm2020/lib/interceptors/openid/openid-connect.interceptor.mjs +149 -149
- package/esm2020/lib/interceptors/openid/openid-connect.service.mjs +56 -56
- package/esm2020/lib/interceptors/openid/openid-connect.service.mock.mjs +8 -8
- package/esm2020/lib/interceptors/ux-request-error-model.interceptor.mjs +31 -31
- package/esm2020/lib/services/app/eui-init-app.mjs +29 -29
- package/esm2020/lib/services/app/eui-pre-init-app.mjs +43 -43
- package/esm2020/lib/services/app/eui-startup.mjs +40 -40
- package/esm2020/lib/services/app/factories/log.mjs +55 -55
- package/esm2020/lib/services/app/index.mjs +2 -2
- package/esm2020/lib/services/config/defaults.mjs +68 -68
- package/esm2020/lib/services/config/tokens.mjs +74 -74
- package/esm2020/lib/services/errors/eui.error.mjs +38 -38
- package/esm2020/lib/services/errors/global-error-handler.mjs +24 -24
- package/esm2020/lib/services/errors/http-error-handler-callback-functions.mjs +17 -17
- package/esm2020/lib/services/errors/http-error-handler.interceptor.mjs +55 -55
- package/esm2020/lib/services/errors/index.mjs +5 -5
- package/esm2020/lib/services/i18n/i18n.loader.mjs +198 -198
- package/esm2020/lib/services/i18n/i18n.resource.mjs +43 -43
- package/esm2020/lib/services/i18n/i18n.service.mjs +228 -228
- package/esm2020/lib/services/i18n/i18n.service.mock.mjs +38 -38
- package/esm2020/lib/services/i18n/index.mjs +6 -6
- package/esm2020/lib/services/index.mjs +19 -19
- package/esm2020/lib/services/locale/index.mjs +3 -3
- package/esm2020/lib/services/locale/locale.service.mjs +232 -232
- package/esm2020/lib/services/locale/locale.service.mock.mjs +43 -43
- package/esm2020/lib/services/log/index.mjs +4 -4
- package/esm2020/lib/services/log/log.module.mjs +38 -38
- package/esm2020/lib/services/log/log.service.mjs +51 -51
- package/esm2020/lib/services/log/log.service.mock.mjs +7 -7
- package/esm2020/lib/services/permission/permission.service.mjs +110 -110
- package/esm2020/lib/services/queue/api-queue.service.mjs +137 -137
- package/esm2020/lib/services/queue/api-queue.service.mock.mjs +23 -23
- package/esm2020/lib/services/queue/index.mjs +3 -3
- package/esm2020/lib/services/storage/async-storage.service.mjs +17 -17
- package/esm2020/lib/services/storage/async-storage.service.mock.mjs +22 -22
- package/esm2020/lib/services/storage/index.mjs +8 -8
- package/esm2020/lib/services/storage/local-forage.service.mjs +93 -93
- package/esm2020/lib/services/storage/local-storage.service.mjs +75 -75
- package/esm2020/lib/services/storage/session-storage.service.mjs +75 -75
- package/esm2020/lib/services/storage/storage.service.mjs +6 -6
- package/esm2020/lib/services/storage/storage.service.mock.mjs +12 -12
- package/esm2020/lib/services/store/actions/app.actions.mjs +74 -74
- package/esm2020/lib/services/store/actions/i18n.actions.mjs +11 -11
- package/esm2020/lib/services/store/actions/index.mjs +6 -6
- package/esm2020/lib/services/store/actions/locale.actions.mjs +11 -11
- package/esm2020/lib/services/store/actions/notifications.actions.mjs +11 -11
- package/esm2020/lib/services/store/actions/user.actions.mjs +39 -39
- package/esm2020/lib/services/store/effects/app.effects.mjs +55 -55
- package/esm2020/lib/services/store/effects/index.mjs +4 -4
- package/esm2020/lib/services/store/index.mjs +6 -6
- package/esm2020/lib/services/store/reducers/app.reducers.mjs +56 -56
- package/esm2020/lib/services/store/reducers/core.reducers.mjs +13 -13
- package/esm2020/lib/services/store/reducers/i18n.reducers.mjs +16 -16
- package/esm2020/lib/services/store/reducers/index.mjs +8 -8
- package/esm2020/lib/services/store/reducers/locale.reducers.mjs +16 -16
- package/esm2020/lib/services/store/reducers/meta.reducers.mjs +89 -89
- package/esm2020/lib/services/store/reducers/notifications.reducers.mjs +13 -13
- package/esm2020/lib/services/store/reducers/user.reducers.mjs +43 -43
- package/esm2020/lib/services/store/store.service.mjs +112 -112
- package/esm2020/lib/services/store/store.service.mock.mjs +22 -22
- package/esm2020/lib/services/user/index.mjs +3 -3
- package/esm2020/lib/services/user/user.service.mjs +64 -64
- package/esm2020/lib/services/user/user.service.mock.mjs +32 -32
- package/esm2020/lib/services/ux-app-shell.service.mjs +690 -690
- package/esm2020/lib/services/ux-dynamic-component/ux-dynamic-component.service.mjs +63 -63
- package/esm2020/lib/services/ux-dynamic-menu/ux-dynamic-menu.service.mjs +66 -66
- package/esm2020/lib/services/ux-error-feedback/ux-error-feedback.service.mjs +99 -99
- package/esm2020/lib/services/ux-error-feedback/ux-error-handler.operator.mjs +16 -16
- package/esm2020/lib/services/ux-timezone.service.mjs +716 -716
- package/fesm2015/eui-core.mjs +4484 -4484
- package/fesm2015/eui-core.mjs.map +1 -1
- package/fesm2020/eui-core.mjs +4538 -4538
- package/fesm2020/eui-core.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/eui-core.module.d.ts +20 -20
- package/lib/helpers/date-helpers.d.ts +2 -2
- package/lib/helpers/dom-helpers.d.ts +26 -26
- package/lib/helpers/event-helpers.d.ts +1 -1
- package/lib/helpers/form-helpers.d.ts +10 -10
- package/lib/helpers/format-helpers.d.ts +12 -12
- package/lib/helpers/http-helpers.d.ts +2 -2
- package/lib/helpers/index.d.ts +7 -7
- package/lib/helpers/utils.d.ts +6 -6
- package/lib/interceptors/add-lang-param.interceptor.d.ts +16 -16
- package/lib/interceptors/cache-prevention.interceptor.d.ts +8 -8
- package/lib/interceptors/cors-security.interceptor.d.ts +8 -8
- package/lib/interceptors/csrf-prevention.interceptor.d.ts +8 -8
- package/lib/interceptors/eu-login-session-timeout-handling.interceptor.d.ts +12 -12
- package/lib/interceptors/index.d.ts +7 -7
- package/lib/interceptors/openid/index.d.ts +3 -3
- package/lib/interceptors/openid/openid-connect.interceptor.d.ts +14 -14
- package/lib/interceptors/openid/openid-connect.service.d.ts +17 -17
- package/lib/interceptors/openid/openid-connect.service.mock.d.ts +5 -5
- package/lib/interceptors/ux-request-error-model.interceptor.d.ts +13 -13
- package/lib/services/app/eui-init-app.d.ts +2 -2
- package/lib/services/app/eui-pre-init-app.d.ts +16 -16
- package/lib/services/app/eui-startup.d.ts +4 -4
- package/lib/services/app/factories/log.d.ts +25 -25
- package/lib/services/app/index.d.ts +1 -1
- package/lib/services/config/defaults.d.ts +11 -11
- package/lib/services/config/tokens.d.ts +19 -19
- package/lib/services/errors/eui.error.d.ts +15 -15
- package/lib/services/errors/global-error-handler.d.ts +10 -10
- package/lib/services/errors/http-error-handler-callback-functions.d.ts +6 -6
- package/lib/services/errors/http-error-handler.interceptor.d.ts +22 -22
- package/lib/services/errors/index.d.ts +4 -4
- package/lib/services/i18n/i18n.loader.d.ts +79 -79
- package/lib/services/i18n/i18n.resource.d.ts +35 -35
- package/lib/services/i18n/i18n.service.d.ts +73 -73
- package/lib/services/i18n/i18n.service.mock.d.ts +19 -19
- package/lib/services/i18n/index.d.ts +4 -4
- package/lib/services/index.d.ts +18 -18
- package/lib/services/locale/index.d.ts +2 -2
- package/lib/services/locale/locale.service.d.ts +68 -68
- package/lib/services/locale/locale.service.mock.d.ts +15 -15
- package/lib/services/log/index.d.ts +3 -3
- package/lib/services/log/log.module.d.ts +15 -15
- package/lib/services/log/log.service.d.ts +27 -27
- package/lib/services/log/log.service.mock.d.ts +4 -4
- package/lib/services/permission/permission.service.d.ts +52 -52
- package/lib/services/queue/api-queue.service.d.ts +76 -76
- package/lib/services/queue/api-queue.service.mock.d.ts +13 -13
- package/lib/services/queue/index.d.ts +2 -2
- package/lib/services/storage/async-storage.service.d.ts +44 -44
- package/lib/services/storage/async-storage.service.mock.d.ts +11 -11
- package/lib/services/storage/index.d.ts +7 -7
- package/lib/services/storage/local-forage.service.d.ts +48 -48
- package/lib/services/storage/local-storage.service.d.ts +34 -34
- package/lib/services/storage/session-storage.service.d.ts +34 -34
- package/lib/services/storage/storage.service.d.ts +28 -28
- package/lib/services/storage/storage.service.mock.d.ts +7 -7
- package/lib/services/store/actions/app.actions.d.ts +82 -82
- package/lib/services/store/actions/i18n.actions.d.ts +11 -11
- package/lib/services/store/actions/index.d.ts +5 -5
- package/lib/services/store/actions/locale.actions.d.ts +11 -11
- package/lib/services/store/actions/notifications.actions.d.ts +10 -10
- package/lib/services/store/actions/user.actions.d.ts +35 -35
- package/lib/services/store/effects/app.effects.d.ts +19 -19
- package/lib/services/store/effects/index.d.ts +3 -3
- package/lib/services/store/index.d.ts +5 -5
- package/lib/services/store/reducers/app.reducers.d.ts +3 -3
- package/lib/services/store/reducers/core.reducers.d.ts +3 -3
- package/lib/services/store/reducers/i18n.reducers.d.ts +3 -3
- package/lib/services/store/reducers/index.d.ts +7 -7
- package/lib/services/store/reducers/locale.reducers.d.ts +3 -3
- package/lib/services/store/reducers/meta.reducers.d.ts +17 -17
- package/lib/services/store/reducers/notifications.reducers.d.ts +3 -3
- package/lib/services/store/reducers/user.reducers.d.ts +3 -3
- package/lib/services/store/store.service.d.ts +43 -43
- package/lib/services/store/store.service.mock.d.ts +12 -12
- package/lib/services/user/index.d.ts +2 -2
- package/lib/services/user/user.service.d.ts +15 -15
- package/lib/services/user/user.service.mock.d.ts +16 -16
- package/lib/services/ux-app-shell.service.d.ts +155 -155
- package/lib/services/ux-dynamic-component/ux-dynamic-component.service.d.ts +36 -36
- package/lib/services/ux-dynamic-menu/ux-dynamic-menu.service.d.ts +14 -14
- package/lib/services/ux-error-feedback/ux-error-feedback.service.d.ts +35 -35
- package/lib/services/ux-error-feedback/ux-error-handler.operator.d.ts +3 -3
- package/lib/services/ux-timezone.service.d.ts +269 -269
- package/package.json +2 -2
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import { Injectable, InjectionToken } from '@angular/core';
|
|
2
|
-
import { ComponentPortal, DomPortalOutlet, PortalInjector } from '@angular/cdk/portal';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export const DYNAMIC_COMPONENT_CONFIG = new InjectionToken('DYNAMIC_COMPONENT_CONFIG');
|
|
5
|
-
export class UxDynamicComponentService {
|
|
6
|
-
constructor(componentFactoryResolver, injector, appRef) {
|
|
7
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
|
8
|
-
this.injector = injector;
|
|
9
|
-
this.appRef = appRef;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Adds a component to portal host dynamically
|
|
13
|
-
* @param component The component to be injected
|
|
14
|
-
* @param el The element reference for the component to be injected
|
|
15
|
-
* @param config The data to be passed (config) for the DYNAMIC_COMPONENT_CONFIG token
|
|
16
|
-
*/
|
|
17
|
-
add(component, el, config) {
|
|
18
|
-
// TODO: take a look and replace deprecated componentFactoryResolver https://github.com/angular/components/issues/24334
|
|
19
|
-
// Create a portalHost from a DOM element
|
|
20
|
-
this.portalHost = new DomPortalOutlet(el ? el.nativeElement : document.body, this.componentFactoryResolver, this.appRef, this.injector);
|
|
21
|
-
// Locate the component factory for the ComponentToIncludeDynamicallyComponent
|
|
22
|
-
this.portal = new ComponentPortal(component, null, config ? this.createInjector(config) : null);
|
|
23
|
-
// Attach portal to host
|
|
24
|
-
this.portalComponentInstance = this.portalHost.attach(this.portal);
|
|
25
|
-
if (config) {
|
|
26
|
-
Object.assign(config, {
|
|
27
|
-
portalHostRef: this.portalHost,
|
|
28
|
-
portalRef: this.portal,
|
|
29
|
-
portalComponentInstanceRef: this.portalComponentInstance,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
return {
|
|
33
|
-
portalHost: this.portalHost,
|
|
34
|
-
portal: this.portal,
|
|
35
|
-
portalComponentInstance: this.portalComponentInstance,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* detaches a portalHost
|
|
40
|
-
* @param portalHostRef reference of portal host to be detached
|
|
41
|
-
*/
|
|
42
|
-
remove(portalHostRef) {
|
|
43
|
-
portalHostRef.detach();
|
|
44
|
-
this.portalHost = null;
|
|
45
|
-
this.portal = null;
|
|
46
|
-
this.portalComponentInstance = null;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* creates a custom injector to be used when providing custom injection tokens to components inside a portal
|
|
50
|
-
* @param data to be used by DYNAMIC_COMPONENT_CONFIG token
|
|
51
|
-
*/
|
|
52
|
-
createInjector(data) {
|
|
53
|
-
const injectorTokens = new WeakMap();
|
|
54
|
-
injectorTokens.set(DYNAMIC_COMPONENT_CONFIG, data);
|
|
55
|
-
return new PortalInjector(this.injector, injectorTokens);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/** @nocollapse */ UxDynamicComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicComponentService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
59
|
-
/** @nocollapse */ UxDynamicComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicComponentService });
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicComponentService, decorators: [{
|
|
61
|
-
type: Injectable
|
|
62
|
-
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ApplicationRef }]; } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable, InjectionToken } from '@angular/core';
|
|
2
|
+
import { ComponentPortal, DomPortalOutlet, PortalInjector } from '@angular/cdk/portal';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export const DYNAMIC_COMPONENT_CONFIG = new InjectionToken('DYNAMIC_COMPONENT_CONFIG');
|
|
5
|
+
export class UxDynamicComponentService {
|
|
6
|
+
constructor(componentFactoryResolver, injector, appRef) {
|
|
7
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
8
|
+
this.injector = injector;
|
|
9
|
+
this.appRef = appRef;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Adds a component to portal host dynamically
|
|
13
|
+
* @param component The component to be injected
|
|
14
|
+
* @param el The element reference for the component to be injected
|
|
15
|
+
* @param config The data to be passed (config) for the DYNAMIC_COMPONENT_CONFIG token
|
|
16
|
+
*/
|
|
17
|
+
add(component, el, config) {
|
|
18
|
+
// TODO: take a look and replace deprecated componentFactoryResolver https://github.com/angular/components/issues/24334
|
|
19
|
+
// Create a portalHost from a DOM element
|
|
20
|
+
this.portalHost = new DomPortalOutlet(el ? el.nativeElement : document.body, this.componentFactoryResolver, this.appRef, this.injector);
|
|
21
|
+
// Locate the component factory for the ComponentToIncludeDynamicallyComponent
|
|
22
|
+
this.portal = new ComponentPortal(component, null, config ? this.createInjector(config) : null);
|
|
23
|
+
// Attach portal to host
|
|
24
|
+
this.portalComponentInstance = this.portalHost.attach(this.portal);
|
|
25
|
+
if (config) {
|
|
26
|
+
Object.assign(config, {
|
|
27
|
+
portalHostRef: this.portalHost,
|
|
28
|
+
portalRef: this.portal,
|
|
29
|
+
portalComponentInstanceRef: this.portalComponentInstance,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
portalHost: this.portalHost,
|
|
34
|
+
portal: this.portal,
|
|
35
|
+
portalComponentInstance: this.portalComponentInstance,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* detaches a portalHost
|
|
40
|
+
* @param portalHostRef reference of portal host to be detached
|
|
41
|
+
*/
|
|
42
|
+
remove(portalHostRef) {
|
|
43
|
+
portalHostRef.detach();
|
|
44
|
+
this.portalHost = null;
|
|
45
|
+
this.portal = null;
|
|
46
|
+
this.portalComponentInstance = null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* creates a custom injector to be used when providing custom injection tokens to components inside a portal
|
|
50
|
+
* @param data to be used by DYNAMIC_COMPONENT_CONFIG token
|
|
51
|
+
*/
|
|
52
|
+
createInjector(data) {
|
|
53
|
+
const injectorTokens = new WeakMap();
|
|
54
|
+
injectorTokens.set(DYNAMIC_COMPONENT_CONFIG, data);
|
|
55
|
+
return new PortalInjector(this.injector, injectorTokens);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** @nocollapse */ UxDynamicComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicComponentService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
59
|
+
/** @nocollapse */ UxDynamicComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicComponentService });
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicComponentService, decorators: [{
|
|
61
|
+
type: Injectable
|
|
62
|
+
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ApplicationRef }]; } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvdXgtZHluYW1pYy1jb21wb25lbnQvdXgtZHluYW1pYy1jb21wb25lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNFLFVBQVUsRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekksT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFpQixNQUFNLHFCQUFxQixDQUFDOztBQUV0RyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBUywwQkFBMEIsQ0FBQyxDQUFDO0FBRy9GLE1BQU0sT0FBTyx5QkFBeUI7SUFLbEMsWUFBb0Isd0JBQWtELEVBQVUsUUFBa0IsRUFBVSxNQUFzQjtRQUE5Ryw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWdCO0lBQUcsQ0FBQztJQUV0STs7Ozs7T0FLRztJQUNJLEdBQUcsQ0FBSSxTQUEyQixFQUFFLEVBQWUsRUFBRSxNQUFZO1FBQ3BFLHVIQUF1SDtRQUN2SCx5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FDakMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUNyQyxJQUFJLENBQUMsd0JBQXdCLEVBQzdCLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FDaEIsQ0FBQztRQUVGLDhFQUE4RTtRQUM5RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFJLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRyx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRSxJQUFJLE1BQU0sRUFBRTtZQUNSLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUNsQixhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzlCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDdEIsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjthQUMzRCxDQUFDLENBQUM7U0FDTjtRQUVELE9BQU87WUFDSCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLHVCQUF1QixFQUFFLElBQUksQ0FBQyx1QkFBdUI7U0FDeEQsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsYUFBOEI7UUFDeEMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxJQUFTO1FBQzVCLE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDckMsY0FBYyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7eUlBaEVRLHlCQUF5Qjs2SUFBekIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBDb21wb25lbnRSZWYsIEVsZW1lbnRSZWYsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIERvbVBvcnRhbE91dGxldCwgUG9ydGFsSW5qZWN0b3IsIENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuXHJcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48b2JqZWN0PignRFlOQU1JQ19DT01QT05FTlRfQ09ORklHJyk7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBVeER5bmFtaWNDb21wb25lbnRTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgcG9ydGFsSG9zdDogRG9tUG9ydGFsT3V0bGV0O1xyXG4gICAgcHJpdmF0ZSBwb3J0YWw6IENvbXBvbmVudFBvcnRhbDxhbnk+O1xyXG4gICAgcHJpdmF0ZSBwb3J0YWxDb21wb25lbnRJbnN0YW5jZTogQ29tcG9uZW50UmVmPGFueT47XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZikge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBjb21wb25lbnQgdG8gcG9ydGFsIGhvc3QgZHluYW1pY2FsbHlcclxuICAgICAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGNvbXBvbmVudCB0byBiZSBpbmplY3RlZFxyXG4gICAgICogQHBhcmFtIGVsIFRoZSBlbGVtZW50IHJlZmVyZW5jZSBmb3IgdGhlIGNvbXBvbmVudCB0byBiZSBpbmplY3RlZFxyXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgZGF0YSB0byBiZSBwYXNzZWQgKGNvbmZpZykgZm9yIHRoZSBEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcgdG9rZW5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZDxUPihjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8VD4sIGVsPzogRWxlbWVudFJlZiwgY29uZmlnPzogYW55KSB7XHJcbiAgICAgICAgLy8gVE9ETzogdGFrZSBhIGxvb2sgYW5kIHJlcGxhY2UgZGVwcmVjYXRlZCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9pc3N1ZXMvMjQzMzRcclxuICAgICAgICAvLyBDcmVhdGUgYSBwb3J0YWxIb3N0IGZyb20gYSBET00gZWxlbWVudFxyXG4gICAgICAgIHRoaXMucG9ydGFsSG9zdCA9IG5ldyBEb21Qb3J0YWxPdXRsZXQoXHJcbiAgICAgICAgICAgIGVsID8gZWwubmF0aXZlRWxlbWVudCA6IGRvY3VtZW50LmJvZHksXHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgICAgICAgICB0aGlzLmFwcFJlZixcclxuICAgICAgICAgICAgdGhpcy5pbmplY3RvclxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIExvY2F0ZSB0aGUgY29tcG9uZW50IGZhY3RvcnkgZm9yIHRoZSBDb21wb25lbnRUb0luY2x1ZGVEeW5hbWljYWxseUNvbXBvbmVudFxyXG4gICAgICAgIHRoaXMucG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbDxUPihjb21wb25lbnQsIG51bGwsIGNvbmZpZyA/IHRoaXMuY3JlYXRlSW5qZWN0b3IoY29uZmlnKSA6IG51bGwpO1xyXG5cclxuICAgICAgICAvLyBBdHRhY2ggcG9ydGFsIHRvIGhvc3RcclxuICAgICAgICB0aGlzLnBvcnRhbENvbXBvbmVudEluc3RhbmNlID0gdGhpcy5wb3J0YWxIb3N0LmF0dGFjaCh0aGlzLnBvcnRhbCk7XHJcblxyXG4gICAgICAgIGlmIChjb25maWcpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihjb25maWcsIHtcclxuICAgICAgICAgICAgICAgIHBvcnRhbEhvc3RSZWY6IHRoaXMucG9ydGFsSG9zdCxcclxuICAgICAgICAgICAgICAgIHBvcnRhbFJlZjogdGhpcy5wb3J0YWwsXHJcbiAgICAgICAgICAgICAgICBwb3J0YWxDb21wb25lbnRJbnN0YW5jZVJlZjogdGhpcy5wb3J0YWxDb21wb25lbnRJbnN0YW5jZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwb3J0YWxIb3N0OiB0aGlzLnBvcnRhbEhvc3QsXHJcbiAgICAgICAgICAgIHBvcnRhbDogdGhpcy5wb3J0YWwsXHJcbiAgICAgICAgICAgIHBvcnRhbENvbXBvbmVudEluc3RhbmNlOiB0aGlzLnBvcnRhbENvbXBvbmVudEluc3RhbmNlLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZXRhY2hlcyBhIHBvcnRhbEhvc3RcclxuICAgICAqIEBwYXJhbSBwb3J0YWxIb3N0UmVmIHJlZmVyZW5jZSBvZiBwb3J0YWwgaG9zdCB0byBiZSBkZXRhY2hlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlKHBvcnRhbEhvc3RSZWY6IERvbVBvcnRhbE91dGxldCkge1xyXG4gICAgICAgIHBvcnRhbEhvc3RSZWYuZGV0YWNoKCk7XHJcblxyXG4gICAgICAgIHRoaXMucG9ydGFsSG9zdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5wb3J0YWwgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucG9ydGFsQ29tcG9uZW50SW5zdGFuY2UgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY3JlYXRlcyBhIGN1c3RvbSBpbmplY3RvciB0byBiZSB1c2VkIHdoZW4gcHJvdmlkaW5nIGN1c3RvbSBpbmplY3Rpb24gdG9rZW5zIHRvIGNvbXBvbmVudHMgaW5zaWRlIGEgcG9ydGFsXHJcbiAgICAgKiBAcGFyYW0gZGF0YSB0byBiZSB1c2VkIGJ5IERZTkFNSUNfQ09NUE9ORU5UX0NPTkZJRyB0b2tlblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZUluamVjdG9yKGRhdGE6IGFueSk6IEluamVjdG9yIHtcclxuICAgICAgICBjb25zdCBpbmplY3RvclRva2VucyA9IG5ldyBXZWFrTWFwKCk7XHJcbiAgICAgICAgaW5qZWN0b3JUb2tlbnMuc2V0KERZTkFNSUNfQ09NUE9ORU5UX0NPTkZJRywgZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQb3J0YWxJbmplY3Rvcih0aGlzLmluamVjdG9yLCBpbmplY3RvclRva2Vucyk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { getUserState } from '@eui/base';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../permission/permission.service";
|
|
5
|
-
import * as i2 from "../store/store.service";
|
|
6
|
-
export class UxDynamicMenuService {
|
|
7
|
-
// TODO: it should be moved euiservice, or it should be static
|
|
8
|
-
// TODO: can we moved that service inside the module of the component that's using it?
|
|
9
|
-
constructor(uxPermission, store) {
|
|
10
|
-
this.uxPermission = uxPermission;
|
|
11
|
-
this.store = store;
|
|
12
|
-
this.menuLinks = [];
|
|
13
|
-
this.store.select(getUserState).subscribe((user) => {
|
|
14
|
-
if (user.menuLinks) {
|
|
15
|
-
this.menuLinks = user.menuLinks;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
getMenuLinks() {
|
|
20
|
-
return this.menuLinks;
|
|
21
|
-
}
|
|
22
|
-
filterUxLinksWithRights(links) {
|
|
23
|
-
return links.filter((link) => {
|
|
24
|
-
if (link.hasChildren) {
|
|
25
|
-
link.children = this.filterUxLinksWithRights(link.children);
|
|
26
|
-
}
|
|
27
|
-
// First check if the user is denied access:
|
|
28
|
-
if (link.deniedRightId) {
|
|
29
|
-
if (this.uxPermission.checkRight(link.deniedRightId)) {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
if (link.deniedRightIds) {
|
|
34
|
-
for (const deniedRightId of link.deniedRightIds) {
|
|
35
|
-
if (this.uxPermission.checkRight(deniedRightId)) {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
// Then check if the user needs to be allowed access explicitly:
|
|
41
|
-
if (link.allowedRightId) {
|
|
42
|
-
return this.uxPermission.checkRight(link.allowedRightId);
|
|
43
|
-
}
|
|
44
|
-
if (link.allowedRightIds) {
|
|
45
|
-
for (const allowedRightId of link.allowedRightIds) {
|
|
46
|
-
if (this.uxPermission.checkRight(allowedRightId)) {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
// User doesn't have one of the allowed rights. Deny access:
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
// Access to the menu item is not denied, therefore allow it:
|
|
54
|
-
return true;
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/** @nocollapse */ UxDynamicMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicMenuService, deps: [{ token: i1.EuiPermissionService }, { token: i2.StoreService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
59
|
-
/** @nocollapse */ UxDynamicMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicMenuService, providedIn: 'root' });
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicMenuService, decorators: [{
|
|
61
|
-
type: Injectable,
|
|
62
|
-
args: [{
|
|
63
|
-
providedIn: 'root',
|
|
64
|
-
}]
|
|
65
|
-
}], ctorParameters: function () { return [{ type: i1.EuiPermissionService }, { type: i2.StoreService }]; } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { getUserState } from '@eui/base';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../permission/permission.service";
|
|
5
|
+
import * as i2 from "../store/store.service";
|
|
6
|
+
export class UxDynamicMenuService {
|
|
7
|
+
// TODO: it should be moved euiservice, or it should be static
|
|
8
|
+
// TODO: can we moved that service inside the module of the component that's using it?
|
|
9
|
+
constructor(uxPermission, store) {
|
|
10
|
+
this.uxPermission = uxPermission;
|
|
11
|
+
this.store = store;
|
|
12
|
+
this.menuLinks = [];
|
|
13
|
+
this.store.select(getUserState).subscribe((user) => {
|
|
14
|
+
if (user.menuLinks) {
|
|
15
|
+
this.menuLinks = user.menuLinks;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
getMenuLinks() {
|
|
20
|
+
return this.menuLinks;
|
|
21
|
+
}
|
|
22
|
+
filterUxLinksWithRights(links) {
|
|
23
|
+
return links.filter((link) => {
|
|
24
|
+
if (link.hasChildren) {
|
|
25
|
+
link.children = this.filterUxLinksWithRights(link.children);
|
|
26
|
+
}
|
|
27
|
+
// First check if the user is denied access:
|
|
28
|
+
if (link.deniedRightId) {
|
|
29
|
+
if (this.uxPermission.checkRight(link.deniedRightId)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (link.deniedRightIds) {
|
|
34
|
+
for (const deniedRightId of link.deniedRightIds) {
|
|
35
|
+
if (this.uxPermission.checkRight(deniedRightId)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Then check if the user needs to be allowed access explicitly:
|
|
41
|
+
if (link.allowedRightId) {
|
|
42
|
+
return this.uxPermission.checkRight(link.allowedRightId);
|
|
43
|
+
}
|
|
44
|
+
if (link.allowedRightIds) {
|
|
45
|
+
for (const allowedRightId of link.allowedRightIds) {
|
|
46
|
+
if (this.uxPermission.checkRight(allowedRightId)) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// User doesn't have one of the allowed rights. Deny access:
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
// Access to the menu item is not denied, therefore allow it:
|
|
54
|
+
return true;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** @nocollapse */ UxDynamicMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicMenuService, deps: [{ token: i1.EuiPermissionService }, { token: i2.StoreService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
59
|
+
/** @nocollapse */ UxDynamicMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicMenuService, providedIn: 'root' });
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxDynamicMenuService, decorators: [{
|
|
61
|
+
type: Injectable,
|
|
62
|
+
args: [{
|
|
63
|
+
providedIn: 'root',
|
|
64
|
+
}]
|
|
65
|
+
}], ctorParameters: function () { return [{ type: i1.EuiPermissionService }, { type: i2.StoreService }]; } });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZHluYW1pYy1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3V4LWR5bmFtaWMtbWVudS91eC1keW5hbWljLW1lbnUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxXQUFXLENBQUM7Ozs7QUFPakQsTUFBTSxPQUFPLG9CQUFvQjtJQUc3Qiw4REFBOEQ7SUFDOUQsc0ZBQXNGO0lBQ3RGLFlBQW9CLFlBQWtDLEVBQVUsS0FBbUI7UUFBL0QsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUpuRixjQUFTLEdBQWUsRUFBRSxDQUFDO1FBS3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9DLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ25DO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsdUJBQXVCLENBQUMsS0FBb0I7UUFDeEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDL0Q7WUFFRCw0Q0FBNEM7WUFDNUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDbEQsT0FBTyxLQUFLLENBQUM7aUJBQ2hCO2FBQ0o7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3JCLEtBQUssTUFBTSxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDN0MsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRTt3QkFDN0MsT0FBTyxLQUFLLENBQUM7cUJBQ2hCO2lCQUNKO2FBQ0o7WUFFRCxnRUFBZ0U7WUFDaEUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUM1RDtZQUNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDdEIsS0FBSyxNQUFNLGNBQWMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUMvQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFO3dCQUM5QyxPQUFPLElBQUksQ0FBQztxQkFDZjtpQkFDSjtnQkFDRCw0REFBNEQ7Z0JBQzVELE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBRUQsNkRBQTZEO1lBQzdELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7b0lBdERRLG9CQUFvQjt3SUFBcEIsb0JBQW9CLGNBRmpCLE1BQU07MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZ2V0VXNlclN0YXRlLCBVeExpbmsgfSBmcm9tICdAZXVpL2Jhc2UnO1xyXG5pbXBvcnQgeyBFdWlQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Blcm1pc3Npb24vcGVybWlzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmUvc3RvcmUuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVeER5bmFtaWNNZW51U2VydmljZSB7XHJcbiAgICBtZW51TGlua3M6IEFycmF5PGFueT4gPSBbXTtcclxuXHJcbiAgICAvLyBUT0RPOiBpdCBzaG91bGQgYmUgbW92ZWQgZXVpc2VydmljZSwgb3IgaXQgc2hvdWxkIGJlIHN0YXRpY1xyXG4gICAgLy8gVE9ETzogY2FuIHdlIG1vdmVkIHRoYXQgc2VydmljZSBpbnNpZGUgdGhlIG1vZHVsZSBvZiB0aGUgY29tcG9uZW50IHRoYXQncyB1c2luZyBpdD9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdXhQZXJtaXNzaW9uOiBFdWlQZXJtaXNzaW9uU2VydmljZSwgcHJpdmF0ZSBzdG9yZTogU3RvcmVTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoZ2V0VXNlclN0YXRlKS5zdWJzY3JpYmUoKHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKHVzZXIubWVudUxpbmtzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVMaW5rcyA9IHVzZXIubWVudUxpbmtzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TWVudUxpbmtzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1lbnVMaW5rcztcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJVeExpbmtzV2l0aFJpZ2h0cyhsaW5rczogQXJyYXk8VXhMaW5rPik6IEFycmF5PFV4TGluaz4ge1xyXG4gICAgICAgIHJldHVybiBsaW5rcy5maWx0ZXIoKGxpbmspID0+IHtcclxuICAgICAgICAgICAgaWYgKGxpbmsuaGFzQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2hpbGRyZW4gPSB0aGlzLmZpbHRlclV4TGlua3NXaXRoUmlnaHRzKGxpbmsuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGUgdXNlciBpcyBkZW5pZWQgYWNjZXNzOlxyXG4gICAgICAgICAgICBpZiAobGluay5kZW5pZWRSaWdodElkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy51eFBlcm1pc3Npb24uY2hlY2tSaWdodChsaW5rLmRlbmllZFJpZ2h0SWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChsaW5rLmRlbmllZFJpZ2h0SWRzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlbmllZFJpZ2h0SWQgb2YgbGluay5kZW5pZWRSaWdodElkcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnV4UGVybWlzc2lvbi5jaGVja1JpZ2h0KGRlbmllZFJpZ2h0SWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFRoZW4gY2hlY2sgaWYgdGhlIHVzZXIgbmVlZHMgdG8gYmUgYWxsb3dlZCBhY2Nlc3MgZXhwbGljaXRseTpcclxuICAgICAgICAgICAgaWYgKGxpbmsuYWxsb3dlZFJpZ2h0SWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnV4UGVybWlzc2lvbi5jaGVja1JpZ2h0KGxpbmsuYWxsb3dlZFJpZ2h0SWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChsaW5rLmFsbG93ZWRSaWdodElkcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhbGxvd2VkUmlnaHRJZCBvZiBsaW5rLmFsbG93ZWRSaWdodElkcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnV4UGVybWlzc2lvbi5jaGVja1JpZ2h0KGFsbG93ZWRSaWdodElkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBVc2VyIGRvZXNuJ3QgaGF2ZSBvbmUgb2YgdGhlIGFsbG93ZWQgcmlnaHRzLiBEZW55IGFjY2VzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gQWNjZXNzIHRvIHRoZSBtZW51IGl0ZW0gaXMgbm90IGRlbmllZCwgdGhlcmVmb3JlIGFsbG93IGl0OlxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
import { UxClearErrorFeedbackEvent, UxPublishErrorFeedbackEvent, } from '@eui/base';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { filter, take } from 'rxjs/operators';
|
|
4
|
-
import { withUxErrorManager } from './ux-error-handler.operator';
|
|
5
|
-
import { Injectable } from '@angular/core';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../ux-app-shell.service";
|
|
8
|
-
import * as i2 from "@ngx-translate/core";
|
|
9
|
-
export class UxErrorFeedbackService {
|
|
10
|
-
constructor(asService, translateService) {
|
|
11
|
-
this.asService = asService;
|
|
12
|
-
this.translateService = translateService;
|
|
13
|
-
this.errors = new Subject();
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Publishes errors to targeted components
|
|
17
|
-
*/
|
|
18
|
-
publishError(err, instanceId, groupId, accumulate) {
|
|
19
|
-
if (instanceId) {
|
|
20
|
-
this.errors.next(new UxPublishErrorFeedbackEvent(err.uxHttpErrorOutput, instanceId, groupId, accumulate));
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
this.errors.next(new UxPublishErrorFeedbackEvent(err.uxHttpErrorOutput, undefined, groupId, accumulate));
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Growl errors
|
|
28
|
-
*/
|
|
29
|
-
growlError(err) {
|
|
30
|
-
const feedBacks = err.uxHttpErrorOutput.getFeedBacks();
|
|
31
|
-
const isGrowlSticky = false;
|
|
32
|
-
const isGrowlMultiple = true;
|
|
33
|
-
const growlLife = 10000;
|
|
34
|
-
const position = 'bottom-right';
|
|
35
|
-
feedBacks.forEach((feedback) => this.translateService
|
|
36
|
-
.get(feedback.msgId)
|
|
37
|
-
.pipe(take(1))
|
|
38
|
-
.subscribe((translate) => {
|
|
39
|
-
this.asService.growl({
|
|
40
|
-
severity: feedback.severity || 'danger',
|
|
41
|
-
summary: 'ERROR',
|
|
42
|
-
detail: translate,
|
|
43
|
-
}, isGrowlSticky, isGrowlMultiple, growlLife, position);
|
|
44
|
-
}));
|
|
45
|
-
}
|
|
46
|
-
clearError(id, groupId) {
|
|
47
|
-
this.errors.next(new UxClearErrorFeedbackEvent(id, groupId));
|
|
48
|
-
}
|
|
49
|
-
createLocalErrorManager() {
|
|
50
|
-
return new UxErrorManager(this);
|
|
51
|
-
}
|
|
52
|
-
createGlobalErrorManager() {
|
|
53
|
-
return new UxErrorManager(this, true);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/** @nocollapse */ UxErrorFeedbackService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxErrorFeedbackService, deps: [{ token: i1.UxAppShellService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
57
|
-
/** @nocollapse */ UxErrorFeedbackService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxErrorFeedbackService, providedIn: 'root' });
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxErrorFeedbackService, decorators: [{
|
|
59
|
-
type: Injectable,
|
|
60
|
-
args: [{
|
|
61
|
-
providedIn: 'root',
|
|
62
|
-
}]
|
|
63
|
-
}], ctorParameters: function () { return [{ type: i1.UxAppShellService }, { type: i2.TranslateService }]; } });
|
|
64
|
-
export class UxErrorManager {
|
|
65
|
-
constructor(uxErrorFeedbackService, isGlobal) {
|
|
66
|
-
this.uxErrorFeedbackService = uxErrorFeedbackService;
|
|
67
|
-
this.isGlobal = isGlobal;
|
|
68
|
-
this.httpErrorOperator = withUxErrorManager(this);
|
|
69
|
-
this.id = Math.random().toString();
|
|
70
|
-
}
|
|
71
|
-
publishError(err, groupId, accumulate) {
|
|
72
|
-
if (!this.isGlobal) {
|
|
73
|
-
this.uxErrorFeedbackService.publishError(err, this.id, groupId, accumulate);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
this.uxErrorFeedbackService.publishError(err, undefined, groupId, accumulate);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
clearError(groupId) {
|
|
80
|
-
if (!this.isGlobal) {
|
|
81
|
-
this.uxErrorFeedbackService.clearError(this.id, groupId);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
this.uxErrorFeedbackService.clearError(undefined, groupId);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
growlError(err) {
|
|
88
|
-
this.uxErrorFeedbackService.growlError(err);
|
|
89
|
-
}
|
|
90
|
-
errors() {
|
|
91
|
-
if (!this.isGlobal) {
|
|
92
|
-
return this.uxErrorFeedbackService.errors.pipe(filter((evt) => evt.id === this.id));
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
return this.uxErrorFeedbackService.errors.pipe(filter((evt) => !evt.id));
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { UxClearErrorFeedbackEvent, UxPublishErrorFeedbackEvent, } from '@eui/base';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { filter, take } from 'rxjs/operators';
|
|
4
|
+
import { withUxErrorManager } from './ux-error-handler.operator';
|
|
5
|
+
import { Injectable } from '@angular/core';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../ux-app-shell.service";
|
|
8
|
+
import * as i2 from "@ngx-translate/core";
|
|
9
|
+
export class UxErrorFeedbackService {
|
|
10
|
+
constructor(asService, translateService) {
|
|
11
|
+
this.asService = asService;
|
|
12
|
+
this.translateService = translateService;
|
|
13
|
+
this.errors = new Subject();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Publishes errors to targeted components
|
|
17
|
+
*/
|
|
18
|
+
publishError(err, instanceId, groupId, accumulate) {
|
|
19
|
+
if (instanceId) {
|
|
20
|
+
this.errors.next(new UxPublishErrorFeedbackEvent(err.uxHttpErrorOutput, instanceId, groupId, accumulate));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.errors.next(new UxPublishErrorFeedbackEvent(err.uxHttpErrorOutput, undefined, groupId, accumulate));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Growl errors
|
|
28
|
+
*/
|
|
29
|
+
growlError(err) {
|
|
30
|
+
const feedBacks = err.uxHttpErrorOutput.getFeedBacks();
|
|
31
|
+
const isGrowlSticky = false;
|
|
32
|
+
const isGrowlMultiple = true;
|
|
33
|
+
const growlLife = 10000;
|
|
34
|
+
const position = 'bottom-right';
|
|
35
|
+
feedBacks.forEach((feedback) => this.translateService
|
|
36
|
+
.get(feedback.msgId)
|
|
37
|
+
.pipe(take(1))
|
|
38
|
+
.subscribe((translate) => {
|
|
39
|
+
this.asService.growl({
|
|
40
|
+
severity: feedback.severity || 'danger',
|
|
41
|
+
summary: 'ERROR',
|
|
42
|
+
detail: translate,
|
|
43
|
+
}, isGrowlSticky, isGrowlMultiple, growlLife, position);
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
clearError(id, groupId) {
|
|
47
|
+
this.errors.next(new UxClearErrorFeedbackEvent(id, groupId));
|
|
48
|
+
}
|
|
49
|
+
createLocalErrorManager() {
|
|
50
|
+
return new UxErrorManager(this);
|
|
51
|
+
}
|
|
52
|
+
createGlobalErrorManager() {
|
|
53
|
+
return new UxErrorManager(this, true);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** @nocollapse */ UxErrorFeedbackService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxErrorFeedbackService, deps: [{ token: i1.UxAppShellService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
57
|
+
/** @nocollapse */ UxErrorFeedbackService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxErrorFeedbackService, providedIn: 'root' });
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UxErrorFeedbackService, decorators: [{
|
|
59
|
+
type: Injectable,
|
|
60
|
+
args: [{
|
|
61
|
+
providedIn: 'root',
|
|
62
|
+
}]
|
|
63
|
+
}], ctorParameters: function () { return [{ type: i1.UxAppShellService }, { type: i2.TranslateService }]; } });
|
|
64
|
+
export class UxErrorManager {
|
|
65
|
+
constructor(uxErrorFeedbackService, isGlobal) {
|
|
66
|
+
this.uxErrorFeedbackService = uxErrorFeedbackService;
|
|
67
|
+
this.isGlobal = isGlobal;
|
|
68
|
+
this.httpErrorOperator = withUxErrorManager(this);
|
|
69
|
+
this.id = Math.random().toString();
|
|
70
|
+
}
|
|
71
|
+
publishError(err, groupId, accumulate) {
|
|
72
|
+
if (!this.isGlobal) {
|
|
73
|
+
this.uxErrorFeedbackService.publishError(err, this.id, groupId, accumulate);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.uxErrorFeedbackService.publishError(err, undefined, groupId, accumulate);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
clearError(groupId) {
|
|
80
|
+
if (!this.isGlobal) {
|
|
81
|
+
this.uxErrorFeedbackService.clearError(this.id, groupId);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.uxErrorFeedbackService.clearError(undefined, groupId);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
growlError(err) {
|
|
88
|
+
this.uxErrorFeedbackService.growlError(err);
|
|
89
|
+
}
|
|
90
|
+
errors() {
|
|
91
|
+
if (!this.isGlobal) {
|
|
92
|
+
return this.uxErrorFeedbackService.errors.pipe(filter((evt) => evt.id === this.id));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
return this.uxErrorFeedbackService.errors.pipe(filter((evt) => !evt.id));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZXJyb3ItZmVlZGJhY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvdXgtZXJyb3ItZmVlZGJhY2svdXgtZXJyb3ItZmVlZGJhY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gseUJBQXlCLEVBSXpCLDJCQUEyQixHQUM5QixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUszQyxNQUFNLE9BQU8sc0JBQXNCO0lBRy9CLFlBQW9CLFNBQTRCLEVBQVUsZ0JBQWtDO1FBQXhFLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUY1RixXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7SUFFOEMsQ0FBQztJQUVoRzs7T0FFRztJQUNILFlBQVksQ0FBQyxHQUF3QixFQUFFLFVBQW1CLEVBQUUsT0FBZ0IsRUFBRSxVQUFvQjtRQUM5RixJQUFJLFVBQVUsRUFBRTtZQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksMkJBQTJCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUM3RzthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSwyQkFBMkIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FB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O0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBNkIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqSDthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUE2QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3RHO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIFV4Q2xlYXJFcnJvckZlZWRiYWNrRXZlbnQsXHJcbiAgICBVeEVycm9yRmVlZGJhY2ssXHJcbiAgICBVeEVycm9yRmVlZGJhY2tFdmVudFR5cGUsXHJcbiAgICBVeEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgVXhQdWJsaXNoRXJyb3JGZWVkYmFja0V2ZW50LFxyXG59IGZyb20gJ0BldWkvYmFzZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyB3aXRoVXhFcnJvck1hbmFnZXIgfSBmcm9tICcuL3V4LWVycm9yLWhhbmRsZXIub3BlcmF0b3InO1xyXG5pbXBvcnQgeyBVeEFwcFNoZWxsU2VydmljZSB9IGZyb20gJy4uL3V4LWFwcC1zaGVsbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVeEVycm9yRmVlZGJhY2tTZXJ2aWNlIHtcclxuICAgIGVycm9ycyA9IG5ldyBTdWJqZWN0PFV4RXJyb3JGZWVkYmFja0V2ZW50VHlwZT4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFzU2VydmljZTogVXhBcHBTaGVsbFNlcnZpY2UsIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge31cclxuXHJcbiAgICAvKipcclxuICAgICAqICBQdWJsaXNoZXMgZXJyb3JzIHRvIHRhcmdldGVkIGNvbXBvbmVudHNcclxuICAgICAqL1xyXG4gICAgcHVibGlzaEVycm9yKGVycjogVXhIdHRwRXJyb3JSZXNwb25zZSwgaW5zdGFuY2VJZD86IHN0cmluZywgZ3JvdXBJZD86IHN0cmluZywgYWNjdW11bGF0ZT86IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoaW5zdGFuY2VJZCkge1xyXG4gICAgICAgICAgICB0aGlzLmVycm9ycy5uZXh0KG5ldyBVeFB1Ymxpc2hFcnJvckZlZWRiYWNrRXZlbnQoZXJyLnV4SHR0cEVycm9yT3V0cHV0LCBpbnN0YW5jZUlkLCBncm91cElkLCBhY2N1bXVsYXRlKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvcnMubmV4dChuZXcgVXhQdWJsaXNoRXJyb3JGZWVkYmFja0V2ZW50KGVyci51eEh0dHBFcnJvck91dHB1dCwgdW5kZWZpbmVkLCBncm91cElkLCBhY2N1bXVsYXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIEdyb3dsIGVycm9yc1xyXG4gICAgICovXHJcbiAgICBncm93bEVycm9yKGVycjogVXhIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgIGNvbnN0IGZlZWRCYWNrcyA9IGVyci51eEh0dHBFcnJvck91dHB1dC5nZXRGZWVkQmFja3MoKTtcclxuICAgICAgICBjb25zdCBpc0dyb3dsU3RpY2t5ID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgaXNHcm93bE11bHRpcGxlID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBncm93bExpZmUgPSAxMDAwMDtcclxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9ICdib3R0b20tcmlnaHQnO1xyXG4gICAgICAgIGZlZWRCYWNrcy5mb3JFYWNoKChmZWVkYmFjazogVXhFcnJvckZlZWRiYWNrKSA9PlxyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5nZXQoZmVlZGJhY2subXNnSWQpXHJcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodHJhbnNsYXRlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hc1NlcnZpY2UuZ3Jvd2woXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyaXR5OiBmZWVkYmFjay5zZXZlcml0eSB8fCAnZGFuZ2VyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6ICdFUlJPUicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHRyYW5zbGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNHcm93bFN0aWNreSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNHcm93bE11bHRpcGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm93bExpZmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckVycm9yKGlkPzogc3RyaW5nLCBncm91cElkPzogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5lcnJvcnMubmV4dChuZXcgVXhDbGVhckVycm9yRmVlZGJhY2tFdmVudChpZCwgZ3JvdXBJZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUxvY2FsRXJyb3JNYW5hZ2VyKCk6IFV4RXJyb3JNYW5hZ2VyIHtcclxuICAgICAgICByZXR1cm4gbmV3IFV4RXJyb3JNYW5hZ2VyKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUdsb2JhbEVycm9yTWFuYWdlcigpOiBVeEVycm9yTWFuYWdlciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBVeEVycm9yTWFuYWdlcih0aGlzLCB0cnVlKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFV4RXJyb3JNYW5hZ2VyIHtcclxuICAgIHJlYWRvbmx5IGh0dHBFcnJvck9wZXJhdG9yID0gd2l0aFV4RXJyb3JNYW5hZ2VyKHRoaXMpO1xyXG4gICAgcHJpdmF0ZSBpZCA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHV4RXJyb3JGZWVkYmFja1NlcnZpY2U6IFV4RXJyb3JGZWVkYmFja1NlcnZpY2UsIHByaXZhdGUgaXNHbG9iYWw/OiBib29sZWFuKSB7fVxyXG5cclxuICAgIHB1Ymxpc2hFcnJvcihlcnI6IFV4SHR0cEVycm9yUmVzcG9uc2UsIGdyb3VwSWQ/OiBzdHJpbmcsIGFjY3VtdWxhdGU/OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzR2xvYmFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXhFcnJvckZlZWRiYWNrU2VydmljZS5wdWJsaXNoRXJyb3IoZXJyLCB0aGlzLmlkLCBncm91cElkLCBhY2N1bXVsYXRlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnV4RXJyb3JGZWVkYmFja1NlcnZpY2UucHVibGlzaEVycm9yKGVyciwgdW5kZWZpbmVkLCBncm91cElkLCBhY2N1bXVsYXRlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJFcnJvcihncm91cElkPzogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzR2xvYmFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXhFcnJvckZlZWRiYWNrU2VydmljZS5jbGVhckVycm9yKHRoaXMuaWQsIGdyb3VwSWQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXhFcnJvckZlZWRiYWNrU2VydmljZS5jbGVhckVycm9yKHVuZGVmaW5lZCwgZ3JvdXBJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdyb3dsRXJyb3IoZXJyOiBVeEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgICAgdGhpcy51eEVycm9yRmVlZGJhY2tTZXJ2aWNlLmdyb3dsRXJyb3IoZXJyKTtcclxuICAgIH1cclxuXHJcbiAgICBlcnJvcnMoKTogT2JzZXJ2YWJsZTxVeEVycm9yRmVlZGJhY2tFdmVudFR5cGU+IHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNHbG9iYWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXhFcnJvckZlZWRiYWNrU2VydmljZS5lcnJvcnMucGlwZShmaWx0ZXIoKGV2dDogVXhFcnJvckZlZWRiYWNrRXZlbnRUeXBlKSA9PiBldnQuaWQgPT09IHRoaXMuaWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy51eEVycm9yRmVlZGJhY2tTZXJ2aWNlLmVycm9ycy5waXBlKGZpbHRlcigoZXZ0OiBVeEVycm9yRmVlZGJhY2tFdmVudFR5cGUpID0+ICFldnQuaWQpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
export function withUxErrorManager(errorManager) {
|
|
3
|
-
return (source$) => new Observable((observer) => {
|
|
4
|
-
const wrapper = {
|
|
5
|
-
next: (value) => {
|
|
6
|
-
errorManager.clearError();
|
|
7
|
-
observer.next(value);
|
|
8
|
-
},
|
|
9
|
-
error: (err) => {
|
|
10
|
-
errorManager.publishError(err);
|
|
11
|
-
},
|
|
12
|
-
};
|
|
13
|
-
return source$.subscribe(wrapper);
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
export function withUxErrorManager(errorManager) {
|
|
3
|
+
return (source$) => new Observable((observer) => {
|
|
4
|
+
const wrapper = {
|
|
5
|
+
next: (value) => {
|
|
6
|
+
errorManager.clearError();
|
|
7
|
+
observer.next(value);
|
|
8
|
+
},
|
|
9
|
+
error: (err) => {
|
|
10
|
+
errorManager.publishError(err);
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
return source$.subscribe(wrapper);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZXJyb3ItaGFuZGxlci5vcGVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvdXgtZXJyb3ItZmVlZGJhY2svdXgtZXJyb3ItaGFuZGxlci5vcGVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFvQixNQUFNLE1BQU0sQ0FBQztBQUlwRCxNQUFNLFVBQVUsa0JBQWtCLENBQUksWUFBNkI7SUFDL0QsT0FBTyxDQUFDLE9BQXNCLEVBQWlCLEVBQUUsQ0FDN0MsSUFBSSxVQUFVLENBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUMzQixNQUFNLE9BQU8sR0FBRztZQUNaLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNaLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDMUIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBd0IsRUFBRSxFQUFFO2dCQUNoQyxZQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLENBQUM7U0FDSixDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXhFcnJvck1hbmFnZXIgfSBmcm9tICcuL3V4LWVycm9yLWZlZWRiYWNrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVeEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGV1aS9iYXNlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB3aXRoVXhFcnJvck1hbmFnZXI8VD4oZXJyb3JNYW5hZ2VyPzogVXhFcnJvck1hbmFnZXIpOiBPcGVyYXRvckZ1bmN0aW9uPFQsIFQ+IHtcclxuICAgIHJldHVybiAoc291cmNlJDogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4gPT5cclxuICAgICAgICBuZXcgT2JzZXJ2YWJsZTxUPigob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgd3JhcHBlciA9IHtcclxuICAgICAgICAgICAgICAgIG5leHQ6ICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWFuYWdlci5jbGVhckVycm9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnI6IFV4SHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvck1hbmFnZXIucHVibGlzaEVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZXR1cm4gc291cmNlJC5zdWJzY3JpYmUod3JhcHBlcik7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuIl19
|