@onecx/angular-accelerator 4.43.1 → 5.0.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/{esm2020 → esm2022}/lib/angular-accelerator-primeng.module.mjs +53 -53
- package/esm2022/lib/angular-accelerator.module.mjs +168 -0
- package/esm2022/lib/components/column-group-selection/column-group-selection.component.mjs +72 -0
- package/esm2022/lib/components/custom-group-column-selector/custom-group-column-selector.component.mjs +109 -0
- package/esm2022/lib/components/data-layout-selection/data-layout-selection.component.mjs +46 -0
- package/esm2022/lib/components/data-list-grid/data-list-grid.component.mjs +399 -0
- package/esm2022/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.mjs +92 -0
- package/esm2022/lib/components/data-sort-base/data-sort-base.mjs +110 -0
- package/esm2022/lib/components/data-table/data-table.component.mjs +401 -0
- package/esm2022/lib/components/data-view/data-view.component.mjs +407 -0
- package/esm2022/lib/components/diagram/diagram.component.mjs +137 -0
- package/esm2022/lib/components/group-by-count-diagram/group-by-count-diagram.component.mjs +109 -0
- package/esm2022/lib/components/interactive-data-view/interactive-data-view.component.mjs +375 -0
- package/esm2022/lib/components/page-header/page-header.component.mjs +232 -0
- package/{esm2020 → esm2022}/lib/components/search-config/search-config.component.mjs +4 -4
- package/esm2022/lib/components/search-header/search-header.component.mjs +136 -0
- package/esm2022/lib/directives/advanced.directive.mjs +36 -0
- package/esm2022/lib/directives/if-breakpoint.directive.mjs +39 -0
- package/esm2022/lib/directives/if-permission.directive.mjs +80 -0
- package/esm2022/lib/directives/src.directive.mjs +59 -0
- package/esm2022/lib/functions/flatten-object.mjs +20 -0
- package/{esm2020 → esm2022}/lib/model/breadcrumb-menu-item.model.mjs +1 -1
- package/esm2022/lib/pipes/dynamic.pipe.mjs +58 -0
- package/esm2022/lib/pipes/ocxtimeago.pipe.mjs +107 -0
- package/esm2022/lib/services/app-config-service.mjs +43 -0
- package/esm2022/lib/services/breadcrumb.service.mjs +113 -0
- package/esm2022/lib/services/translation-cache.service.mjs +41 -0
- package/esm2022/lib/utils/async-translate-loader.utils.mjs +12 -0
- package/esm2022/lib/utils/caching-translate-loader.utils.mjs +15 -0
- package/{esm2020 → esm2022}/lib/utils/colorutils.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/dateutils.mjs +6 -6
- package/esm2022/lib/utils/objectutils.mjs +30 -0
- package/{esm2020 → esm2022}/lib/utils/translate.combined.loader.mjs +1 -1
- package/{esm2020 → esm2022}/testing/column-group-selection.harness.mjs +2 -2
- package/esm2022/testing/custom-group-column-selector.harness.mjs +31 -0
- package/esm2022/testing/data-layout-selection.harness.mjs +33 -0
- package/esm2022/testing/data-list-grid.harness.mjs +47 -0
- package/esm2022/testing/data-table.harness.mjs +63 -0
- package/{esm2020 → esm2022}/testing/data-view.harness.mjs +2 -2
- package/esm2022/testing/default-grid-item.harness.mjs +24 -0
- package/esm2022/testing/default-list-item.harness.mjs +24 -0
- package/esm2022/testing/diagram.harness.mjs +22 -0
- package/{esm2020 → esm2022}/testing/group-by-count-diagram.harness.mjs +2 -2
- package/{esm2020 → esm2022}/testing/interactive-data-view.harness.mjs +2 -2
- package/esm2022/testing/more-actions-menu-button.harness.mjs +35 -0
- package/esm2022/testing/page-header.harness.mjs +78 -0
- package/{esm2020 → esm2022}/testing/search-config.harness.mjs +2 -2
- package/{esm2020 → esm2022}/testing/search-header.harness.mjs +2 -2
- package/{fesm2020 → fesm2022}/onecx-angular-accelerator-testing.mjs +34 -28
- package/fesm2022/onecx-angular-accelerator-testing.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/onecx-angular-accelerator.mjs +220 -220
- package/fesm2022/onecx-angular-accelerator.mjs.map +1 -0
- package/lib/components/column-group-selection/column-group-selection.component.d.ts +1 -1
- package/lib/components/custom-group-column-selector/custom-group-column-selector.component.d.ts +1 -1
- package/lib/components/data-layout-selection/data-layout-selection.component.d.ts +1 -1
- package/lib/components/data-list-grid/data-list-grid.component.d.ts +1 -1
- package/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.d.ts +1 -1
- package/lib/components/data-table/data-table.component.d.ts +1 -1
- package/lib/components/data-view/data-view.component.d.ts +1 -1
- package/lib/components/diagram/diagram.component.d.ts +2 -2
- package/lib/components/group-by-count-diagram/group-by-count-diagram.component.d.ts +1 -1
- package/lib/components/interactive-data-view/interactive-data-view.component.d.ts +1 -1
- package/lib/components/page-header/page-header.component.d.ts +1 -1
- package/lib/components/search-config/search-config.component.d.ts +1 -1
- package/lib/components/search-header/search-header.component.d.ts +1 -1
- package/lib/directives/if-breakpoint.directive.d.ts +1 -1
- package/lib/directives/if-permission.directive.d.ts +1 -1
- package/lib/directives/src.directive.d.ts +1 -1
- package/lib/model/breadcrumb-menu-item.model.d.ts +2 -2
- package/package.json +22 -30
- package/testing/data-list-grid.harness.d.ts +1 -1
- package/esm2020/lib/angular-accelerator.module.mjs +0 -168
- package/esm2020/lib/components/column-group-selection/column-group-selection.component.mjs +0 -72
- package/esm2020/lib/components/custom-group-column-selector/custom-group-column-selector.component.mjs +0 -109
- package/esm2020/lib/components/data-layout-selection/data-layout-selection.component.mjs +0 -45
- package/esm2020/lib/components/data-list-grid/data-list-grid.component.mjs +0 -399
- package/esm2020/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.mjs +0 -92
- package/esm2020/lib/components/data-sort-base/data-sort-base.mjs +0 -110
- package/esm2020/lib/components/data-table/data-table.component.mjs +0 -401
- package/esm2020/lib/components/data-view/data-view.component.mjs +0 -407
- package/esm2020/lib/components/diagram/diagram.component.mjs +0 -137
- package/esm2020/lib/components/group-by-count-diagram/group-by-count-diagram.component.mjs +0 -109
- package/esm2020/lib/components/interactive-data-view/interactive-data-view.component.mjs +0 -375
- package/esm2020/lib/components/page-header/page-header.component.mjs +0 -232
- package/esm2020/lib/components/search-header/search-header.component.mjs +0 -136
- package/esm2020/lib/directives/advanced.directive.mjs +0 -36
- package/esm2020/lib/directives/if-breakpoint.directive.mjs +0 -39
- package/esm2020/lib/directives/if-permission.directive.mjs +0 -80
- package/esm2020/lib/directives/src.directive.mjs +0 -59
- package/esm2020/lib/functions/flatten-object.mjs +0 -20
- package/esm2020/lib/pipes/dynamic.pipe.mjs +0 -58
- package/esm2020/lib/pipes/ocxtimeago.pipe.mjs +0 -107
- package/esm2020/lib/services/app-config-service.mjs +0 -43
- package/esm2020/lib/services/breadcrumb.service.mjs +0 -113
- package/esm2020/lib/services/translation-cache.service.mjs +0 -41
- package/esm2020/lib/utils/async-translate-loader.utils.mjs +0 -12
- package/esm2020/lib/utils/caching-translate-loader.utils.mjs +0 -15
- package/esm2020/lib/utils/objectutils.mjs +0 -30
- package/esm2020/testing/custom-group-column-selector.harness.mjs +0 -31
- package/esm2020/testing/data-layout-selection.harness.mjs +0 -33
- package/esm2020/testing/data-list-grid.harness.mjs +0 -47
- package/esm2020/testing/data-table.harness.mjs +0 -57
- package/esm2020/testing/default-grid-item.harness.mjs +0 -24
- package/esm2020/testing/default-list-item.harness.mjs +0 -24
- package/esm2020/testing/diagram.harness.mjs +0 -22
- package/esm2020/testing/more-actions-menu-button.harness.mjs +0 -35
- package/esm2020/testing/page-header.harness.mjs +0 -78
- package/fesm2015/onecx-angular-accelerator-testing.mjs +0 -541
- package/fesm2015/onecx-angular-accelerator-testing.mjs.map +0 -1
- package/fesm2015/onecx-angular-accelerator.mjs +0 -3583
- package/fesm2015/onecx-angular-accelerator.mjs.map +0 -1
- package/fesm2020/onecx-angular-accelerator-testing.mjs.map +0 -1
- package/fesm2020/onecx-angular-accelerator.mjs.map +0 -1
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/column-type.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/data-action.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/data-column-name-id.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/data-sort-direction.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/data-table-column.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/diagram-column.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/diagram-data.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/diagram-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/search-config-info.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/create-remote-component-translate-loader.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/create-translate-loader.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/enum-to-dropdown-options.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/primeicon.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/onecx-angular-accelerator.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/onecx-angular-accelerator-testing.mjs +0 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Directive, HostListener, Input, Optional, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class IfBreakpointDirective {
|
|
4
|
+
constructor(viewContainer, templateRef) {
|
|
5
|
+
this.viewContainer = viewContainer;
|
|
6
|
+
this.templateRef = templateRef;
|
|
7
|
+
}
|
|
8
|
+
ngOnInit() {
|
|
9
|
+
this.onResize();
|
|
10
|
+
}
|
|
11
|
+
onResize() {
|
|
12
|
+
const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point');
|
|
13
|
+
const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches;
|
|
14
|
+
const isDesktop = !isMobile;
|
|
15
|
+
if ((this.breakpoint === 'mobile' && isMobile) || (this.breakpoint === 'desktop' && isDesktop)) {
|
|
16
|
+
if (this.templateRef && !this.viewContainer.length) {
|
|
17
|
+
this.viewContainer.createEmbeddedView(this.templateRef);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.viewContainer.clear();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: IfBreakpointDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: IfBreakpointDirective, selector: "[ocxIfBreakpoint]", inputs: { breakpoint: ["ocxIfBreakpoint", "breakpoint"] }, host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0 }); }
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: IfBreakpointDirective, decorators: [{
|
|
28
|
+
type: Directive,
|
|
29
|
+
args: [{ selector: '[ocxIfBreakpoint]' }]
|
|
30
|
+
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef, decorators: [{
|
|
31
|
+
type: Optional
|
|
32
|
+
}] }], propDecorators: { breakpoint: [{
|
|
33
|
+
type: Input,
|
|
34
|
+
args: ['ocxIfBreakpoint']
|
|
35
|
+
}], onResize: [{
|
|
36
|
+
type: HostListener,
|
|
37
|
+
args: ['window:resize']
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtYnJlYWtwb2ludC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9kaXJlY3RpdmVzL2lmLWJyZWFrcG9pbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBOztBQUcvRyxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQW9CLGFBQStCLEVBQXNCLFdBQWtDO1FBQXZGLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUFzQixnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7SUFBRyxDQUFDO0lBRS9HLFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDakIsQ0FBQztJQUdELFFBQVE7UUFDTixNQUFNLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1FBQy9HLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBZSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFBO1FBQ2pGLE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBUSxDQUFBO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDL0YsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDekQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUM1QixDQUFDO0lBQ0gsQ0FBQzs4R0FyQlUscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUU7OzBCQUlZLFFBQVE7eUNBRnBDLFVBQVU7c0JBQW5DLEtBQUs7dUJBQUMsaUJBQWlCO2dCQVN4QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbb2N4SWZCcmVha3BvaW50XScgfSlcbmV4cG9ydCBjbGFzcyBJZkJyZWFrcG9pbnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoJ29jeElmQnJlYWtwb2ludCcpIGJyZWFrcG9pbnQ6ICdtb2JpbGUnIHwgJ2Rlc2t0b3AnIHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBAT3B0aW9uYWwoKSBwcml2YXRlIHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8dW5rbm93bj4pIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vblJlc2l6ZSgpXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25SZXNpemUoKSB7XG4gICAgY29uc3QgbW9iaWxlQnJlYWtwb2ludFZhciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLW1vYmlsZS1icmVhay1wb2ludCcpXG4gICAgY29uc3QgaXNNb2JpbGUgPSB3aW5kb3cubWF0Y2hNZWRpYShgKG1heC13aWR0aDogJHttb2JpbGVCcmVha3BvaW50VmFyfSlgKS5tYXRjaGVzXG4gICAgY29uc3QgaXNEZXNrdG9wID0gIWlzTW9iaWxlXG4gICAgaWYgKCh0aGlzLmJyZWFrcG9pbnQgPT09ICdtb2JpbGUnICYmIGlzTW9iaWxlKSB8fCAodGhpcy5icmVha3BvaW50ID09PSAnZGVza3RvcCcgJiYgaXNEZXNrdG9wKSkge1xuICAgICAgaWYgKHRoaXMudGVtcGxhdGVSZWYgJiYgIXRoaXMudmlld0NvbnRhaW5lci5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Directive, ElementRef, Inject, InjectionToken, Input, Optional, Renderer2, TemplateRef, ViewContainerRef, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* This checker always returns true, basically disabling the permission system on the UI side
|
|
5
|
+
*/
|
|
6
|
+
export class AlwaysGrantPermissionChecker {
|
|
7
|
+
hasPermission(_permissionKey) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export const HAS_PERMISSION_CHECKER = new InjectionToken('hasPermission');
|
|
12
|
+
export class IfPermissionDirective {
|
|
13
|
+
set notPermission(value) {
|
|
14
|
+
this.permission = value;
|
|
15
|
+
this.negate = true;
|
|
16
|
+
}
|
|
17
|
+
set ocxIfNotPermissionPermissions(value) {
|
|
18
|
+
this.ocxIfPermissionPermissions = value;
|
|
19
|
+
}
|
|
20
|
+
constructor(renderer, el, viewContainer, permissionChecker, templateRef) {
|
|
21
|
+
this.renderer = renderer;
|
|
22
|
+
this.el = el;
|
|
23
|
+
this.viewContainer = viewContainer;
|
|
24
|
+
this.permissionChecker = permissionChecker;
|
|
25
|
+
this.templateRef = templateRef;
|
|
26
|
+
this.onMissingPermission = 'hide';
|
|
27
|
+
this.negate = false;
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
if (this.permission) {
|
|
31
|
+
if (this.negate === this.hasPermission(this.permission)) {
|
|
32
|
+
if (this.onMissingPermission === 'disable') {
|
|
33
|
+
this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'disabled');
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.viewContainer.clear();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
if (this.templateRef) {
|
|
41
|
+
this.viewContainer.createEmbeddedView(this.templateRef);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
hasPermission(permission) {
|
|
47
|
+
if (this.ocxIfPermissionPermissions) {
|
|
48
|
+
const result = this.ocxIfPermissionPermissions.includes(permission);
|
|
49
|
+
if (!result) {
|
|
50
|
+
console.log('👮♀️ No permission in overwrites for: `', permission);
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
return this.permissionChecker.hasPermission(permission);
|
|
55
|
+
}
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: IfPermissionDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: HAS_PERMISSION_CHECKER }, { token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
57
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: IfPermissionDirective, selector: "[ocxIfPermission], [ocxIfNotPermission]", inputs: { permission: ["ocxIfPermission", "permission"], notPermission: ["ocxIfNotPermission", "notPermission"], onMissingPermission: "onMissingPermission", ocxIfPermissionPermissions: "ocxIfPermissionPermissions", ocxIfNotPermissionPermissions: "ocxIfNotPermissionPermissions" }, ngImport: i0 }); }
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: IfPermissionDirective, decorators: [{
|
|
60
|
+
type: Directive,
|
|
61
|
+
args: [{ selector: '[ocxIfPermission], [ocxIfNotPermission]' }]
|
|
62
|
+
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
|
63
|
+
type: Inject,
|
|
64
|
+
args: [HAS_PERMISSION_CHECKER]
|
|
65
|
+
}] }, { type: i0.TemplateRef, decorators: [{
|
|
66
|
+
type: Optional
|
|
67
|
+
}] }], propDecorators: { permission: [{
|
|
68
|
+
type: Input,
|
|
69
|
+
args: ['ocxIfPermission']
|
|
70
|
+
}], notPermission: [{
|
|
71
|
+
type: Input,
|
|
72
|
+
args: ['ocxIfNotPermission']
|
|
73
|
+
}], onMissingPermission: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], ocxIfPermissionPermissions: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], ocxIfNotPermissionPermissions: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}] } });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtcGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9kaXJlY3RpdmVzL2lmLXBlcm1pc3Npb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQTs7QUFNdEI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLGFBQWEsQ0FBQyxjQUFzQjtRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUF1QixlQUFlLENBQUMsQ0FBQTtBQUcvRixNQUFNLE9BQU8scUJBQXFCO0lBRWhDLElBQWlDLGFBQWEsQ0FBQyxLQUF5QjtRQUN0RSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtJQUNwQixDQUFDO0lBS0QsSUFDSSw2QkFBNkIsQ0FBQyxLQUEyQjtRQUMzRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFBO0lBQ3pDLENBQUM7SUFJRCxZQUNVLFFBQW1CLEVBQ25CLEVBQWMsRUFDZCxhQUErQixFQUUvQixpQkFBdUMsRUFDM0IsV0FBOEI7UUFMMUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2Qsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBRS9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBaEIzQyx3QkFBbUIsR0FBdUIsTUFBTSxDQUFBO1FBUXpELFdBQU0sR0FBRyxLQUFLLENBQUE7SUFTWCxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFBO2dCQUMzRSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtnQkFDNUIsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7Z0JBQ3pELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsVUFBa0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ25FLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQ3JFLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDekQsQ0FBQzs4R0FuRFUscUJBQXFCLHFHQXFCdEIsc0JBQXNCO2tHQXJCckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHlDQUF5QyxFQUFFOzswQkFzQjdELE1BQU07MkJBQUMsc0JBQXNCOzswQkFFN0IsUUFBUTt5Q0F0QmUsVUFBVTtzQkFBbkMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ1MsYUFBYTtzQkFBN0MsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBS2xCLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBRUYsNkJBQTZCO3NCQURoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuZXhwb3J0IGludGVyZmFjZSBIYXNQZXJtaXNzaW9uQ2hlY2tlciB7XG4gIGhhc1Blcm1pc3Npb24ocGVybWlzc2lvbktleTogc3RyaW5nKTogYm9vbGVhblxufVxuXG4vKipcbiAqIFRoaXMgY2hlY2tlciBhbHdheXMgcmV0dXJucyB0cnVlLCBiYXNpY2FsbHkgZGlzYWJsaW5nIHRoZSBwZXJtaXNzaW9uIHN5c3RlbSBvbiB0aGUgVUkgc2lkZVxuICovXG5leHBvcnQgY2xhc3MgQWx3YXlzR3JhbnRQZXJtaXNzaW9uQ2hlY2tlciBpbXBsZW1lbnRzIEhhc1Blcm1pc3Npb25DaGVja2VyIHtcbiAgaGFzUGVybWlzc2lvbihfcGVybWlzc2lvbktleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEhBU19QRVJNSVNTSU9OX0NIRUNLRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48SGFzUGVybWlzc2lvbkNoZWNrZXI+KCdoYXNQZXJtaXNzaW9uJylcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW29jeElmUGVybWlzc2lvbl0sIFtvY3hJZk5vdFBlcm1pc3Npb25dJyB9KVxuZXhwb3J0IGNsYXNzIElmUGVybWlzc2lvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgnb2N4SWZQZXJtaXNzaW9uJykgcGVybWlzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgnb2N4SWZOb3RQZXJtaXNzaW9uJykgc2V0IG5vdFBlcm1pc3Npb24odmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGVybWlzc2lvbiA9IHZhbHVlXG4gICAgdGhpcy5uZWdhdGUgPSB0cnVlXG4gIH1cblxuICBASW5wdXQoKSBvbk1pc3NpbmdQZXJtaXNzaW9uOiAnaGlkZScgfCAnZGlzYWJsZScgPSAnaGlkZSdcblxuICBASW5wdXQoKSBvY3hJZlBlcm1pc3Npb25QZXJtaXNzaW9uczogc3RyaW5nW10gfCB1bmRlZmluZWRcbiAgQElucHV0KClcbiAgc2V0IG9jeElmTm90UGVybWlzc2lvblBlcm1pc3Npb25zKHZhbHVlOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMub2N4SWZQZXJtaXNzaW9uUGVybWlzc2lvbnMgPSB2YWx1ZVxuICB9XG5cbiAgbmVnYXRlID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgQEluamVjdChIQVNfUEVSTUlTU0lPTl9DSEVDS0VSKVxuICAgIHByaXZhdGUgcGVybWlzc2lvbkNoZWNrZXI6IEhhc1Blcm1pc3Npb25DaGVja2VyLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGVtcGxhdGVSZWY/OiBUZW1wbGF0ZVJlZjxhbnk+XG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5wZXJtaXNzaW9uKSB7XG4gICAgICBpZiAodGhpcy5uZWdhdGUgPT09IHRoaXMuaGFzUGVybWlzc2lvbih0aGlzLnBlcm1pc3Npb24pKSB7XG4gICAgICAgIGlmICh0aGlzLm9uTWlzc2luZ1Blcm1pc3Npb24gPT09ICdkaXNhYmxlJykge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZVJlZikge1xuICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhc1Blcm1pc3Npb24ocGVybWlzc2lvbjogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMub2N4SWZQZXJtaXNzaW9uUGVybWlzc2lvbnMpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMub2N4SWZQZXJtaXNzaW9uUGVybWlzc2lvbnMuaW5jbHVkZXMocGVybWlzc2lvbilcbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCfwn5Gu4oCN4pmA77iPIE5vIHBlcm1pc3Npb24gaW4gb3ZlcndyaXRlcyBmb3I6IGAnLCBwZXJtaXNzaW9uKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uQ2hlY2tlci5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common/http";
|
|
5
|
+
export class SrcDirective {
|
|
6
|
+
get ocxSrc() {
|
|
7
|
+
return this._src;
|
|
8
|
+
}
|
|
9
|
+
set ocxSrc(value) {
|
|
10
|
+
if (value && this._src !== value) {
|
|
11
|
+
try {
|
|
12
|
+
if (new URL(value, window.location.origin).hostname === window.location.hostname) {
|
|
13
|
+
this.httpClient.get(value, { responseType: 'blob' }).subscribe({
|
|
14
|
+
next: (blob) => {
|
|
15
|
+
const url = URL.createObjectURL(blob);
|
|
16
|
+
this.el.nativeElement.onload = () => {
|
|
17
|
+
URL.revokeObjectURL(url);
|
|
18
|
+
};
|
|
19
|
+
this.el.nativeElement.src = url;
|
|
20
|
+
this.el.nativeElement.style.visibility = 'initial';
|
|
21
|
+
},
|
|
22
|
+
error: () => {
|
|
23
|
+
this.error.emit();
|
|
24
|
+
this.el.nativeElement.style.visibility = 'initial';
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this.el.nativeElement.src = value;
|
|
30
|
+
this.el.nativeElement.style.visibility = 'initial';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.log('Cannot parse URL ', value, error);
|
|
35
|
+
this.el.nativeElement.src = value;
|
|
36
|
+
this.el.nativeElement.style.visibility = 'initial';
|
|
37
|
+
}
|
|
38
|
+
this._src = value;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
constructor(el, httpClient) {
|
|
42
|
+
this.el = el;
|
|
43
|
+
this.httpClient = httpClient;
|
|
44
|
+
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
45
|
+
this.error = new EventEmitter();
|
|
46
|
+
this.el.nativeElement.style.visibility = 'hidden';
|
|
47
|
+
}
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SrcDirective, deps: [{ token: i0.ElementRef }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
49
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: SrcDirective, selector: "[ocxSrc]", inputs: { ocxSrc: "ocxSrc" }, outputs: { error: "error" }, ngImport: i0 }); }
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SrcDirective, decorators: [{
|
|
52
|
+
type: Directive,
|
|
53
|
+
args: [{ selector: '[ocxSrc]' }]
|
|
54
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.HttpClient }], propDecorators: { error: [{
|
|
55
|
+
type: Output
|
|
56
|
+
}], ocxSrc: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}] } });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL2RpcmVjdGl2ZXMvc3JjLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7OztBQUdsRixNQUFNLE9BQU8sWUFBWTtJQU12QixJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDbEIsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLEtBQXlCO1FBQ2xDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDO2dCQUNILElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2pGLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQzt3QkFDN0QsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7NEJBQ2IsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTs0QkFDckMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQ0FDbEMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTs0QkFDMUIsQ0FBQyxDQUFBOzRCQUNELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUE7NEJBQy9CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO3dCQUNwRCxDQUFDO3dCQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7NEJBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTs0QkFDakIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUE7d0JBQ3BELENBQUM7cUJBQ0YsQ0FBQyxDQUFBO2dCQUNKLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFBO29CQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQTtnQkFDcEQsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUM5QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFBO2dCQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQTtZQUNwRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUE7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFvQixFQUFjLEVBQVUsVUFBc0I7UUFBOUMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUF0Q2xFLDREQUE0RDtRQUNsRCxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQXNDeEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUE7SUFDbkQsQ0FBQzs4R0EzQ1UsWUFBWTtrR0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTt3R0FLdkIsS0FBSztzQkFBZCxNQUFNO2dCQUdILE1BQU07c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW29jeFNyY10nIH0pXG5leHBvcnQgY2xhc3MgU3JjRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBfc3JjOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgQElucHV0KClcbiAgZ2V0IG9jeFNyYygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zcmNcbiAgfVxuICBzZXQgb2N4U3JjKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5fc3JjICE9PSB2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKG5ldyBVUkwodmFsdWUsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pLmhvc3RuYW1lID09PSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpIHtcbiAgICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KHZhbHVlLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoYmxvYikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXG4gICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNyYyA9IHVybFxuICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICdpbml0aWFsJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdCgpXG4gICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ2luaXRpYWwnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNyYyA9IHZhbHVlXG4gICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaW5pdGlhbCdcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0Nhbm5vdCBwYXJzZSBVUkwgJywgdmFsdWUsIGVycm9yKVxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3JjID0gdmFsdWVcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaW5pdGlhbCdcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NyYyA9IHZhbHVlXG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJ1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function flattenObject(ob) {
|
|
2
|
+
const toReturn = {};
|
|
3
|
+
for (const i in ob) {
|
|
4
|
+
if (!Object.prototype.hasOwnProperty.call(ob, i))
|
|
5
|
+
continue;
|
|
6
|
+
if (!!ob[i] && typeof ob[i] == 'object' && !(ob[i] instanceof Date) && !Array.isArray(ob[i])) {
|
|
7
|
+
const flatObject = flattenObject(ob[i]);
|
|
8
|
+
for (const x in flatObject) {
|
|
9
|
+
if (!Object.prototype.hasOwnProperty.call(flatObject, x))
|
|
10
|
+
continue;
|
|
11
|
+
toReturn[i + '.' + x] = flatObject[x];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
toReturn[i] = ob[i];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return toReturn;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbi1vYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9mdW5jdGlvbnMvZmxhdHRlbi1vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEJBLE1BQU0sVUFBVSxhQUFhLENBQW9DLEVBQUs7SUFDcEUsTUFBTSxRQUFRLEdBQTRCLEVBQUUsQ0FBQTtJQUU1QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUFFLFNBQVE7UUFFMUQsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdGLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUE0QixDQUFDLENBQUE7WUFDbEUsS0FBSyxNQUFNLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO29CQUFFLFNBQVE7Z0JBRWxFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFJLFVBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDaEQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sUUFBcUIsQ0FBQTtBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBFeHRlbmQ8VE9iaiBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBLIGV4dGVuZHMgc3RyaW5nPiA9IHtcbiAgW1RLZXkgaW4ga2V5b2YgVE9iaiAmIHN0cmluZyBhcyBgJHtLfSR7VEtleX1gXTogVE9ialtUS2V5XSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgPyBFeHRlbmQ8VE9ialtUS2V5XSwgYCR7S30ke1RLZXl9LmA+XG4gICAgOiBUT2JqW1RLZXldXG59XG5cbnR5cGUgTm9uT2JqZWN0S2V5c09mPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIEFycmF5PGFueT4gPyBLIDogVFtLXSBleHRlbmRzIG9iamVjdCA/IChUW0tdIGV4dGVuZHMgRGF0ZSA/IEsgOiBuZXZlcikgOiBLXG59W2tleW9mIFRdXG5cbnR5cGUgT2JqZWN0S2V5c09mPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIEFycmF5PGFueT4gPyBuZXZlciA6IFRbS10gZXh0ZW5kcyBvYmplY3QgPyBLIDogbmV2ZXJcbn1ba2V5b2YgVF1cblxudHlwZSBGaWx0ZXI8VE9iaiBleHRlbmRzIG9iamVjdCwgVEtleSA9IGtleW9mIFRPYmo+ID0gVEtleSBleHRlbmRzIGtleW9mIFRPYmpcbiAgPyBUT2JqW1RLZXldIGV4dGVuZHMgQXJyYXk8YW55PlxuICAgID8gVE9ialxuICAgIDogVE9ialtUS2V5XSBleHRlbmRzIG9iamVjdFxuICAgID8gRmlsdGVyPFRPYmpbVEtleV0+XG4gICAgOiBQaWNrPFRPYmosIE5vbk9iamVjdEtleXNPZjxUT2JqPj4gfCBGaWx0ZXI8UGljazxUT2JqLCBPYmplY3RLZXlzT2Y8VE9iaj4+PlxuICA6IG5ldmVyXG5cbnR5cGUgVW5pb25Ub0ludGVyc2VjdGlvbjxVPiA9IChVIGV4dGVuZHMgYW55ID8gKGs6IFUpID0+IHZvaWQgOiBuZXZlcikgZXh0ZW5kcyAoazogaW5mZXIgSSkgPT4gdm9pZCA/IEkgOiBuZXZlclxuXG5leHBvcnQgdHlwZSBSZXN1bHQ8VE9iaiBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IFVuaW9uVG9JbnRlcnNlY3Rpb248RmlsdGVyPEV4dGVuZDxUT2JqLCAnJz4+PlxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbk9iamVjdDxPIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9iOiBPKTogUmVzdWx0PE8+IHtcbiAgY29uc3QgdG9SZXR1cm46IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge31cblxuICBmb3IgKGNvbnN0IGkgaW4gb2IpIHtcbiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYiwgaSkpIGNvbnRpbnVlXG5cbiAgICBpZiAoISFvYltpXSAmJiB0eXBlb2Ygb2JbaV0gPT0gJ29iamVjdCcgJiYgIShvYltpXSBpbnN0YW5jZW9mIERhdGUpICYmICFBcnJheS5pc0FycmF5KG9iW2ldKSkge1xuICAgICAgY29uc3QgZmxhdE9iamVjdCA9IGZsYXR0ZW5PYmplY3Qob2JbaV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pXG4gICAgICBmb3IgKGNvbnN0IHggaW4gZmxhdE9iamVjdCkge1xuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmbGF0T2JqZWN0LCB4KSkgY29udGludWVcblxuICAgICAgICB0b1JldHVybltpICsgJy4nICsgeF0gPSAoZmxhdE9iamVjdCBhcyBhbnkpW3hdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvUmV0dXJuW2ldID0gb2JbaV1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvUmV0dXJuIGFzIFJlc3VsdDxPPlxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1tZW51LWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9tb2RlbC9icmVhZGNydW1iLW1lbnUtaXRlbS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlQYXJhbXNIYW5kbGluZyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknXG5leHBvcnQgaW50ZXJmYWNlIEJyZWFkQ3J1bWJNZW51SXRlbSB7XG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgbGFiZWxLZXkgaW5zdGVhZCAqL1xuICBsYWJlbD86IHN0cmluZ1xuICBsYWJlbEtleT86IHN0cmluZ1xuICBpY29uPzogc3RyaW5nXG4gIGNvbW1hbmQ/OiAoZXZlbnQ/OiBhbnkpID0+IHZvaWRcbiAgdXJsPzogc3RyaW5nXG4gIGl0ZW1zPzogTWVudUl0ZW1bXVxuICBleHBhbmRlZD86IGJvb2xlYW5cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIHZpc2libGU/OiBib29sZWFuXG4gIHRhcmdldD86IHN0cmluZ1xuICBlc2NhcGU/OiBib29sZWFuXG4gIHJvdXRlckxpbmtBY3RpdmVPcHRpb25zPzogYW55XG4gIHNlcGFyYXRvcj86IGJvb2xlYW5cbiAgYmFkZ2U/OiBzdHJpbmdcbiAgdG9vbHRpcD86IHN0cmluZ1xuICB0b29sdGlwUG9zaXRpb24/OiBzdHJpbmdcbiAgYmFkZ2VTdHlsZUNsYXNzPzogc3RyaW5nXG4gIHN0eWxlPzogYW55XG4gIHN0eWxlQ2xhc3M/OiBzdHJpbmdcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSB0aXRsZUtleSBpbnN0ZWFkICovXG4gIHRpdGxlPzogc3RyaW5nXG4gIHRpdGxlS2V5Pzogc3RyaW5nXG4gIGlkPzogc3RyaW5nXG4gIGF1dG9tYXRpb25JZD86IGFueVxuICB0YWJpbmRleD86IHN0cmluZ1xuICByb3V0ZXJMaW5rPzogYW55XG4gIHF1ZXJ5UGFyYW1zPzoge1xuICAgIFtrOiBzdHJpbmddOiBhbnlcbiAgfVxuICBmcmFnbWVudD86IHN0cmluZ1xuICBxdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZ1xuICBwcmVzZXJ2ZUZyYWdtZW50PzogYm9vbGVhblxuICBza2lwTG9jYXRpb25DaGFuZ2U/OiBib29sZWFuXG4gIHJlcGxhY2VVcmw/OiBib29sZWFuXG4gIGljb25TdHlsZT86IGFueVxuICBpY29uQ2xhc3M/OiBzdHJpbmdcbiAgc3RhdGU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1tZW51LWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9tb2RlbC9icmVhZGNydW1iLW1lbnUtaXRlbS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlQYXJhbXNIYW5kbGluZyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknXG5leHBvcnQgaW50ZXJmYWNlIEJyZWFkQ3J1bWJNZW51SXRlbSB7XG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgbGFiZWxLZXkgaW5zdGVhZCAqL1xuICBsYWJlbD86IHN0cmluZ1xuICBsYWJlbEtleT86IHN0cmluZ1xuICBpY29uPzogc3RyaW5nXG4gIGNvbW1hbmQ/OiAoZXZlbnQ/OiBhbnkpID0+IHZvaWRcbiAgdXJsPzogc3RyaW5nXG4gIGl0ZW1zPzogTWVudUl0ZW1bXVxuICBleHBhbmRlZD86IGJvb2xlYW5cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIHZpc2libGU/OiBib29sZWFuXG4gIHRhcmdldD86IHN0cmluZ1xuICBlc2NhcGU/OiBib29sZWFuXG4gIHJvdXRlckxpbmtBY3RpdmVPcHRpb25zPzogYW55XG4gIHNlcGFyYXRvcj86IGJvb2xlYW5cbiAgYmFkZ2U/OiBzdHJpbmdcbiAgdG9vbHRpcD86IHN0cmluZ1xuICB0b29sdGlwUG9zaXRpb24/OiBzdHJpbmdcbiAgYmFkZ2VTdHlsZUNsYXNzPzogc3RyaW5nXG4gIHN0eWxlPzogYW55XG4gIHN0eWxlQ2xhc3M/OiBzdHJpbmdcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSB0aXRsZUtleSBpbnN0ZWFkICovXG4gIHRpdGxlPzogc3RyaW5nXG4gIHRpdGxlS2V5Pzogc3RyaW5nXG4gIGlkPzogc3RyaW5nXG4gIGF1dG9tYXRpb25JZD86IGFueVxuICB0YWJpbmRleD86IHN0cmluZ1xuICByb3V0ZXJMaW5rPzogYW55XG4gIHF1ZXJ5UGFyYW1zPzoge1xuICAgIFtrOiBzdHJpbmddOiBhbnlcbiAgfVxuICBmcmFnbWVudD86IHN0cmluZ1xuICBxdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZ1xuICBwcmVzZXJ2ZUZyYWdtZW50PzogYm9vbGVhblxuICBza2lwTG9jYXRpb25DaGFuZ2U/OiBib29sZWFuXG4gIHJlcGxhY2VVcmw/OiBib29sZWFuXG4gIGljb25TdHlsZT86IGFueVxuICBpY29uQ2xhc3M/OiBzdHJpbmdcbiAgc3RhdGU/OiB7XG4gICAgW2s6IHN0cmluZ106IGFueVxuICB9XG4gIHRvb2x0aXBPcHRpb25zPzoge1xuICAgIHRvb2x0aXBMYWJlbD86IHN0cmluZ1xuICAgIHRvb2x0aXBQb3NpdGlvbj86ICdyaWdodCcgfCAnbGVmdCcgfCAndG9wJyB8ICdib3R0b20nXG4gICAgdG9vbHRpcEV2ZW50PzogJ2hvdmVyJyB8ICdmb2N1cydcbiAgICBhcHBlbmRUbz86IGFueVxuICAgIHBvc2l0aW9uU3R5bGU/OiBzdHJpbmdcbiAgICB0b29sdGlwU3R5bGVDbGFzcz86IHN0cmluZ1xuICAgIHRvb2x0aXBaSW5kZXg/OiBzdHJpbmdcbiAgICBlc2NhcGU/OiBib29sZWFuXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuXG4gICAgcG9zaXRpb25Ub3A/OiBudW1iZXJcbiAgICBwb3NpdGlvbkxlZnQ/OiBudW1iZXJcbiAgICBzaG93RGVsYXk/OiBudW1iZXJcbiAgICBoaWRlRGVsYXk/OiBudW1iZXJcbiAgICBsaWZlPzogbnVtYmVyXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common';
|
|
2
|
+
import { Inject, Injector, LOCALE_ID, Pipe } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class DynamicPipe {
|
|
5
|
+
constructor(locale, injector) {
|
|
6
|
+
this.injector = injector;
|
|
7
|
+
this.knownPipes = {};
|
|
8
|
+
this.knownPipes = {
|
|
9
|
+
currency: new CurrencyPipe(locale),
|
|
10
|
+
decimal: new DecimalPipe(locale),
|
|
11
|
+
date: new DatePipe(locale),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
transform(value, requiredPipe, pipeArgs) {
|
|
15
|
+
if (!requiredPipe) {
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
const injector = Injector.create({
|
|
19
|
+
name: 'DynamicPipe',
|
|
20
|
+
parent: this.injector,
|
|
21
|
+
providers: [{ provide: requiredPipe }],
|
|
22
|
+
});
|
|
23
|
+
const pipe = injector.get(requiredPipe);
|
|
24
|
+
return pipe.transform(value, pipeArgs);
|
|
25
|
+
}
|
|
26
|
+
transform2(value, pipeToken, ...pipeArgs) {
|
|
27
|
+
if (!pipeToken) {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
32
|
+
if (pipeToken && this.knownPipes.hasOwnProperty(pipeToken)) {
|
|
33
|
+
const pipe = this.knownPipes[pipeToken];
|
|
34
|
+
if (Array.isArray(pipeArgs)) {
|
|
35
|
+
return pipe.transform(value, ...pipeArgs);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return pipe.transform(value, pipeArgs);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: DynamicPipe, deps: [{ token: LOCALE_ID }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
47
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: DynamicPipe, name: "dynamicPipe" }); }
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: DynamicPipe, decorators: [{
|
|
50
|
+
type: Pipe,
|
|
51
|
+
args: [{
|
|
52
|
+
name: 'dynamicPipe',
|
|
53
|
+
}]
|
|
54
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
55
|
+
type: Inject,
|
|
56
|
+
args: [LOCALE_ID]
|
|
57
|
+
}] }, { type: i0.Injector }] });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvcGlwZXMvZHluYW1pYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQXVCLE1BQU0sZUFBZSxDQUFBOztBQUt0RixNQUFNLE9BQU8sV0FBVztJQUV0QixZQUFzQyxNQUFjLEVBQVUsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQURoRixlQUFVLEdBQXNDLEVBQUUsQ0FBQTtRQUVoRCxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFFBQVEsRUFBRSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFDbEMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUNoQyxJQUFJLEVBQUUsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDO1NBQzNCLENBQUE7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxZQUF3QixFQUFFLFFBQWM7UUFDNUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsSUFBSSxFQUFFLGFBQWE7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3JCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO1NBQ3ZDLENBQUMsQ0FBQTtRQUNGLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDdkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVUsRUFBRSxTQUFjLEVBQUUsR0FBRyxRQUFlO1FBQ3ZELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQzthQUFNLENBQUM7WUFDTixpREFBaUQ7WUFDakQsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDdkMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQTtnQkFDM0MsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUE7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxLQUFLLENBQUE7WUFDZCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBeENVLFdBQVcsa0JBRUssU0FBUzs0R0FGekIsV0FBVzs7MkZBQVgsV0FBVztrQkFIdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsYUFBYTtpQkFDcEI7OzBCQUdxQixNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIERhdGVQaXBlLCBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0b3IsIExPQ0FMRV9JRCwgUGlwZSwgUGlwZVRyYW5zZm9ybSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbkBQaXBlKHtcbiAgbmFtZTogJ2R5bmFtaWNQaXBlJyxcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAga25vd25QaXBlczogeyBbbmFtZTogc3RyaW5nXTogUGlwZVRyYW5zZm9ybSB9ID0ge31cbiAgcHVibGljIGNvbnN0cnVjdG9yKEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGU6IHN0cmluZywgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLmtub3duUGlwZXMgPSB7XG4gICAgICBjdXJyZW5jeTogbmV3IEN1cnJlbmN5UGlwZShsb2NhbGUpLFxuICAgICAgZGVjaW1hbDogbmV3IERlY2ltYWxQaXBlKGxvY2FsZSksXG4gICAgICBkYXRlOiBuZXcgRGF0ZVBpcGUobG9jYWxlKSxcbiAgICB9XG4gIH1cblxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgcmVxdWlyZWRQaXBlPzogVHlwZTxhbnk+LCBwaXBlQXJncz86IGFueSk6IGFueSB7XG4gICAgaWYgKCFyZXF1aXJlZFBpcGUpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIG5hbWU6ICdEeW5hbWljUGlwZScsXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IHJlcXVpcmVkUGlwZSB9XSxcbiAgICB9KVxuICAgIGNvbnN0IHBpcGUgPSBpbmplY3Rvci5nZXQocmVxdWlyZWRQaXBlKVxuICAgIHJldHVybiBwaXBlLnRyYW5zZm9ybSh2YWx1ZSwgcGlwZUFyZ3MpXG4gIH1cblxuICB0cmFuc2Zvcm0yKHZhbHVlOiBhbnksIHBpcGVUb2tlbjogYW55LCAuLi5waXBlQXJnczogYW55W10pOiBhbnkge1xuICAgIGlmICghcGlwZVRva2VuKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgaWYgKHBpcGVUb2tlbiAmJiB0aGlzLmtub3duUGlwZXMuaGFzT3duUHJvcGVydHkocGlwZVRva2VuKSkge1xuICAgICAgICBjb25zdCBwaXBlID0gdGhpcy5rbm93blBpcGVzW3BpcGVUb2tlbl1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGlwZUFyZ3MpKSB7XG4gICAgICAgICAgcmV0dXJuIHBpcGUudHJhbnNmb3JtKHZhbHVlLCAuLi5waXBlQXJncylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcGlwZS50cmFuc2Zvcm0odmFsdWUsIHBpcGVBcmdzKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { ChangeDetectorRef, NgZone, Pipe } from '@angular/core';
|
|
2
|
+
import { TranslatePipe, TranslateService } from '@ngx-translate/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@ngx-translate/core";
|
|
5
|
+
// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
|
|
6
|
+
export class OcxTimeAgoPipe extends TranslatePipe {
|
|
7
|
+
constructor(changeDetectorRef, ngZone, translateService) {
|
|
8
|
+
super(translateService, changeDetectorRef);
|
|
9
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
10
|
+
this.ngZone = ngZone;
|
|
11
|
+
this.translateService = translateService;
|
|
12
|
+
}
|
|
13
|
+
transform(value) {
|
|
14
|
+
this.removeTimer();
|
|
15
|
+
const d = new Date(value);
|
|
16
|
+
const now = new Date();
|
|
17
|
+
const seconds = Math.round(Math.abs((now.getTime() - d.getTime()) / 1000));
|
|
18
|
+
const timeToUpdate = Number.isNaN(seconds) ? 1000 : this.getSecondsUntilUpdate(seconds) * 1000;
|
|
19
|
+
this.timer = this.ngZone.runOutsideAngular(() => {
|
|
20
|
+
if (typeof window !== 'undefined') {
|
|
21
|
+
return window.setTimeout(() => {
|
|
22
|
+
this.ngZone.run(() => this.changeDetectorRef.markForCheck());
|
|
23
|
+
}, timeToUpdate);
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
});
|
|
27
|
+
const minutes = Math.round(Math.abs(seconds / 60));
|
|
28
|
+
const hours = Math.round(Math.abs(minutes / 60));
|
|
29
|
+
const days = Math.round(Math.abs(hours / 24));
|
|
30
|
+
const months = Math.round(Math.abs(days / 30.416));
|
|
31
|
+
const years = Math.round(Math.abs(days / 365));
|
|
32
|
+
let translationKey = 'UNKNOWN';
|
|
33
|
+
if (Number.isNaN(seconds)) {
|
|
34
|
+
translationKey = 'NAN';
|
|
35
|
+
}
|
|
36
|
+
else if (seconds <= 45) {
|
|
37
|
+
translationKey = 'A_FEW_SECONDS_AGO';
|
|
38
|
+
}
|
|
39
|
+
else if (seconds <= 90) {
|
|
40
|
+
translationKey = 'A_MINUTE_AGO';
|
|
41
|
+
}
|
|
42
|
+
else if (minutes <= 45) {
|
|
43
|
+
translationKey = 'MINUTES_AGO';
|
|
44
|
+
}
|
|
45
|
+
else if (minutes <= 90) {
|
|
46
|
+
translationKey = 'AN_HOUR_AGO';
|
|
47
|
+
}
|
|
48
|
+
else if (hours <= 22) {
|
|
49
|
+
translationKey = 'HOURS_AGO';
|
|
50
|
+
}
|
|
51
|
+
else if (hours <= 36) {
|
|
52
|
+
translationKey = 'A_DAY_AGO';
|
|
53
|
+
}
|
|
54
|
+
else if (days <= 25) {
|
|
55
|
+
translationKey = 'DAYS_AGO';
|
|
56
|
+
}
|
|
57
|
+
else if (days <= 45) {
|
|
58
|
+
translationKey = 'A_MONTH_AGO';
|
|
59
|
+
}
|
|
60
|
+
else if (days <= 345) {
|
|
61
|
+
translationKey = 'MONTHS_AGO';
|
|
62
|
+
}
|
|
63
|
+
else if (days <= 545) {
|
|
64
|
+
translationKey = 'A_YEAR_AGO';
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
translationKey = 'YEARS_AGO';
|
|
68
|
+
}
|
|
69
|
+
return super.transform('OCX_TIMEAGO.' + translationKey, { minutes, hours, days, months, years });
|
|
70
|
+
}
|
|
71
|
+
ngOnDestroy() {
|
|
72
|
+
this.removeTimer();
|
|
73
|
+
super.ngOnDestroy();
|
|
74
|
+
}
|
|
75
|
+
removeTimer() {
|
|
76
|
+
if (this.timer) {
|
|
77
|
+
window.clearTimeout(this.timer);
|
|
78
|
+
this.timer = null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
getSecondsUntilUpdate(seconds) {
|
|
82
|
+
const min = 60;
|
|
83
|
+
const hr = min * 60;
|
|
84
|
+
const day = hr * 24;
|
|
85
|
+
if (seconds < min) {
|
|
86
|
+
return 2;
|
|
87
|
+
}
|
|
88
|
+
else if (seconds < hr) {
|
|
89
|
+
return 30;
|
|
90
|
+
}
|
|
91
|
+
else if (seconds < day) {
|
|
92
|
+
return 300;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
return 3600;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: OcxTimeAgoPipe, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
99
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: OcxTimeAgoPipe, name: "timeago" }); }
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: OcxTimeAgoPipe, decorators: [{
|
|
102
|
+
type: Pipe,
|
|
103
|
+
args: [{
|
|
104
|
+
name: 'timeago',
|
|
105
|
+
}]
|
|
106
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.TranslateService }] });
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2N4dGltZWFnby5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvcGlwZXMvb2N4dGltZWFnby5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQWEsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQTtBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7OztBQUtyRSx3RUFBd0U7QUFDeEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBRS9DLFlBQ1UsaUJBQW9DLEVBQ3BDLE1BQWMsRUFDZCxnQkFBa0M7UUFFMUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFKbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUc1QyxDQUFDO0lBQ1EsU0FBUyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ2xCLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7UUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDMUUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMs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LEtBQUssRUFBRSxDQUFDLENBQUE7SUFDbEcsQ0FBQztJQUNRLFdBQVc7UUFDbEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ2xCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBQ08sV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBQ08scUJBQXFCLENBQUMsT0FBZTtRQUMzQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUE7UUFDZCxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFBO1FBQ25CLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7UUFDbkIsSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLENBQUE7UUFDVixDQUFDO2FBQU0sSUFBSSxPQUFPLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDeEIsT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO2FBQU0sSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDekIsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztJQUNILENBQUM7OEdBL0VVLGNBQWM7NEdBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFKMUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsU0FBUztpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgTmdab25lLCBPbkRlc3Ryb3ksIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5cbkBQaXBlKHtcbiAgbmFtZTogJ3RpbWVhZ28nLFxufSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdXNlLXBpcGUtdHJhbnNmb3JtLWludGVyZmFjZVxuZXhwb3J0IGNsYXNzIE9jeFRpbWVBZ29QaXBlIGV4dGVuZHMgVHJhbnNsYXRlUGlwZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgdGltZXI6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGxcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSwgY2hhbmdlRGV0ZWN0b3JSZWYpXG4gIH1cbiAgb3ZlcnJpZGUgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlbW92ZVRpbWVyKClcbiAgICBjb25zdCBkID0gbmV3IERhdGUodmFsdWUpXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKChub3cuZ2V0VGltZSgpIC0gZC5nZXRUaW1lKCkpIC8gMTAwMCkpXG4gICAgY29uc3QgdGltZVRvVXBkYXRlID0gTnVtYmVyLmlzTmFOKHNlY29uZHMpID8gMTAwMCA6IHRoaXMuZ2V0U2Vjb25kc1VudGlsVXBkYXRlKHNlY29uZHMpICogMTAwMFxuICAgIHRoaXMudGltZXIgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSlcbiAgICAgICAgfSwgdGltZVRvVXBkYXRlKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9KVxuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKHNlY29uZHMgLyA2MCkpXG4gICAgY29uc3QgaG91cnMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKG1pbnV0ZXMgLyA2MCkpXG4gICAgY29uc3QgZGF5cyA9IE1hdGgucm91bmQoTWF0aC5hYnMoaG91cnMgLyAyNCkpXG4gICAgY29uc3QgbW9udGhzID0gTWF0aC5yb3VuZChNYXRoLmFicyhkYXlzIC8gMzAuNDE2KSlcbiAgICBjb25zdCB5ZWFycyA9IE1hdGgucm91bmQoTWF0aC5hYnMoZGF5cyAvIDM2NSkpXG4gICAgbGV0IHRyYW5zbGF0aW9uS2V5ID0gJ1VOS05PV04nXG4gICAgaWYgKE51bWJlci5pc05hTihzZWNvbmRzKSkge1xuICAgICAgdHJhbnNsYXRpb25LZXkgPSAnTkFOJ1xuICAgIH0gZWxzZSBpZiAoc2Vjb25kcyA8PSA0NSkge1xuICAgICAgdHJhbnNsYXRpb25LZXkgPSAnQV9GRVdfU0VDT05EU19BR08nXG4gICAgfSBlbHNlIGlmIChzZWNvbmRzIDw9IDkwKSB7XG4gICAgICB0cmFuc2xhdGlvbktleSA9ICdBX01JTlVURV9BR08nXG4gICAgfSBlbHNlIGlmIChtaW51dGVzIDw9IDQ1KSB7XG4gICAgICB0cmFuc2xhdGlvbktleSA9ICdNSU5VVEVTX0FHTydcbiAgICB9IGVsc2UgaWYgKG1pbnV0ZXMgPD0gOTApIHtcbiAgICAgIHRyYW5zbGF0aW9uS2V5ID0gJ0FOX0hPVVJfQUdPJ1xuICAgIH0gZWxzZSBpZiAoaG91cnMgPD0gMjIpIHtcbiAgICAgIHRyYW5zbGF0aW9uS2V5ID0gJ0hPVVJTX0FHTydcbiAgICB9IGVsc2UgaWYgKGhvdXJzIDw9IDM2KSB7XG4gICAgICB0cmFuc2xhdGlvbktleSA9ICdBX0RBWV9BR08nXG4gICAgfSBlbHNlIGlmIChkYXlzIDw9IDI1KSB7XG4gICAgICB0cmFuc2xhdGlvbktleSA9ICdEQVlTX0FHTydcbiAgICB9IGVsc2UgaWYgKGRheXMgPD0gNDUpIHtcbiAgICAgIHRyYW5zbGF0aW9uS2V5ID0gJ0FfTU9OVEhfQUdPJ1xuICAgIH0gZWxzZSBpZiAoZGF5cyA8PSAzNDUpIHtcbiAgICAgIHRyYW5zbGF0aW9uS2V5ID0gJ01PTlRIU19BR08nXG4gICAgfSBlbHNlIGlmIChkYXlzIDw9IDU0NSkge1xuICAgICAgdHJhbnNsYXRpb25LZXkgPSAnQV9ZRUFSX0FHTydcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNsYXRpb25LZXkgPSAnWUVBUlNfQUdPJ1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIudHJhbnNmb3JtKCdPQ1hfVElNRUFHTy4nICsgdHJhbnNsYXRpb25LZXksIHsgbWludXRlcywgaG91cnMsIGRheXMsIG1vbnRocywgeWVhcnMgfSlcbiAgfVxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVRpbWVyKClcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpXG4gIH1cbiAgcHJpdmF0ZSByZW1vdmVUaW1lcigpIHtcbiAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRpbWVyKVxuICAgICAgdGhpcy50aW1lciA9IG51bGxcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBnZXRTZWNvbmRzVW50aWxVcGRhdGUoc2Vjb25kczogbnVtYmVyKSB7XG4gICAgY29uc3QgbWluID0gNjBcbiAgICBjb25zdCBociA9IG1pbiAqIDYwXG4gICAgY29uc3QgZGF5ID0gaHIgKiAyNFxuICAgIGlmIChzZWNvbmRzIDwgbWluKSB7XG4gICAgICByZXR1cm4gMlxuICAgIH0gZWxzZSBpZiAoc2Vjb25kcyA8IGhyKSB7XG4gICAgICByZXR1cm4gMzBcbiAgICB9IGVsc2UgaWYgKHNlY29uZHMgPCBkYXkpIHtcbiAgICAgIHJldHVybiAzMDBcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDM2MDBcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Location } from '@angular/common';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import { BehaviorSubject, firstValueFrom } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
export class AppConfigService {
|
|
8
|
+
constructor(http) {
|
|
9
|
+
this.http = http;
|
|
10
|
+
this.config$ = new BehaviorSubject({});
|
|
11
|
+
}
|
|
12
|
+
init(baseUrl) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
const loadConfigPromise = firstValueFrom(this.http.get(Location.joinWithSlash(baseUrl, 'assets/env.json')));
|
|
15
|
+
loadConfigPromise
|
|
16
|
+
.then(async (config) => {
|
|
17
|
+
if (config) {
|
|
18
|
+
this.config$.next(config);
|
|
19
|
+
resolve();
|
|
20
|
+
}
|
|
21
|
+
})
|
|
22
|
+
.catch((e) => {
|
|
23
|
+
console.log(`Failed to load env configuration`);
|
|
24
|
+
reject(e);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
getProperty(key) {
|
|
29
|
+
return this.config$.getValue()?.[key];
|
|
30
|
+
}
|
|
31
|
+
setProperty(key, val) {
|
|
32
|
+
this.config$.next({ ...this.config$.value, [key]: val });
|
|
33
|
+
}
|
|
34
|
+
getConfig() {
|
|
35
|
+
return this.config$.getValue();
|
|
36
|
+
}
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: AppConfigService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: AppConfigService }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: AppConfigService, decorators: [{
|
|
41
|
+
type: Injectable
|
|
42
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvc2VydmljZXMvYXBwLWNvbmZpZy1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQTs7O0FBR3RELE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUZwQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQTRCLEVBQUUsQ0FBQyxDQUFBO0lBRXJCLENBQUM7SUFFakMsSUFBSSxDQUFDLE9BQWU7UUFDekIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLGlCQUFpQixHQUFvQixjQUFjLENBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFTLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FDMUUsQ0FBQTtZQUVELGlCQUFpQjtpQkFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNyQixJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUN6QixPQUFPLEVBQUUsQ0FBQTtnQkFDWCxDQUFDO1lBQ0gsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtnQkFDL0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ1gsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxXQUFXLENBQUMsR0FBVztRQUM1QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDaEMsQ0FBQzs4R0FuQ1UsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnQG9uZWN4L2ludGVncmF0aW9uLWludGVyZmFjZSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXBwQ29uZmlnU2VydmljZSB7XG4gIGNvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0+KHt9KVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICBwdWJsaWMgaW5pdChiYXNlVXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgbG9hZENvbmZpZ1Byb21pc2U6IFByb21pc2U8Q29uZmlnPiA9IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLmh0dHAuZ2V0PENvbmZpZz4oTG9jYXRpb24uam9pbldpdGhTbGFzaChiYXNlVXJsLCAnYXNzZXRzL2Vudi5qc29uJykpXG4gICAgICApXG5cbiAgICAgIGxvYWRDb25maWdQcm9taXNlXG4gICAgICAgIC50aGVuKGFzeW5jIChjb25maWcpID0+IHtcbiAgICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZyQubmV4dChjb25maWcpXG4gICAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gbG9hZCBlbnYgY29uZmlndXJhdGlvbmApXG4gICAgICAgICAgcmVqZWN0KGUpXG4gICAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcm9wZXJ0eShrZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnJC5nZXRWYWx1ZSgpPy5ba2V5XVxuICB9XG5cbiAgcHVibGljIHNldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWw6IHN0cmluZykge1xuICAgIHRoaXMuY29uZmlnJC5uZXh0KHsgLi4udGhpcy5jb25maWckLnZhbHVlLCBba2V5XTogdmFsIH0pXG4gIH1cblxuICBwdWJsaWMgZ2V0Q29uZmlnKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyQuZ2V0VmFsdWUoKVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
|
|
4
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
+
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
6
|
+
import { BehaviorSubject, filter } from 'rxjs';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/router";
|
|
9
|
+
import * as i2 from "@ngx-translate/core";
|
|
10
|
+
let BreadcrumbService = class BreadcrumbService {
|
|
11
|
+
constructor(router, activeRoute, translateService) {
|
|
12
|
+
this.router = router;
|
|
13
|
+
this.activeRoute = activeRoute;
|
|
14
|
+
this.translateService = translateService;
|
|
15
|
+
this.itemsSource = new BehaviorSubject([]);
|
|
16
|
+
this.generatedItemsSource = new BehaviorSubject([]);
|
|
17
|
+
this.itemsHandler = this.itemsSource.asObservable();
|
|
18
|
+
this.generateBreadcrumbs(this.activeRoute.snapshot);
|
|
19
|
+
this.router.events
|
|
20
|
+
.pipe(untilDestroyed(this), filter((e) => e instanceof NavigationEnd))
|
|
21
|
+
.subscribe(() => {
|
|
22
|
+
const root = this.router.routerState.snapshot.root;
|
|
23
|
+
this.generateBreadcrumbs(root);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
generateBreadcrumbs(route) {
|
|
27
|
+
if (route?.data['mfeInfo']) {
|
|
28
|
+
const breadcrumbs = [
|
|
29
|
+
{
|
|
30
|
+
label: route.data['mfeInfo'].productName,
|
|
31
|
+
routerLink: route.data['mfeInfo'].baseHref,
|
|
32
|
+
},
|
|
33
|
+
];
|
|
34
|
+
const baseUrl = route.data['mfeInfo'].baseHref.split('/').filter((value) => value);
|
|
35
|
+
const parentUrl = route.url.map((url) => url.path);
|
|
36
|
+
const isUsingMatcher = !parentUrl.every((item) => baseUrl.includes(item));
|
|
37
|
+
if (isUsingMatcher) {
|
|
38
|
+
this.createBreadcrumb(route, parentUrl, breadcrumbs);
|
|
39
|
+
}
|
|
40
|
+
this.addBreadcrumb(route.firstChild, parentUrl, breadcrumbs);
|
|
41
|
+
this.generatedItemsSource.next(breadcrumbs);
|
|
42
|
+
}
|
|
43
|
+
else if (route?.data['breadcrumb']) {
|
|
44
|
+
const breadcrumbs = [];
|
|
45
|
+
this.addBreadcrumb(route, [], breadcrumbs);
|
|
46
|
+
this.generatedItemsSource.next(breadcrumbs);
|
|
47
|
+
}
|
|
48
|
+
else if (route) {
|
|
49
|
+
this.generateBreadcrumbs(route.firstChild);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
addBreadcrumb(route, parentUrl, breadcrumbs) {
|
|
53
|
+
if (route && route.url) {
|
|
54
|
+
const routeUrl = parentUrl.concat(route.url.map((url) => url.path));
|
|
55
|
+
if (route.routeConfig?.path) {
|
|
56
|
+
this.createBreadcrumb(route, routeUrl, breadcrumbs);
|
|
57
|
+
}
|
|
58
|
+
this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
createBreadcrumb(route, routeUrl, breadcrumbs) {
|
|
62
|
+
if (route.data['breadcrumb']) {
|
|
63
|
+
const breadcrumb = {
|
|
64
|
+
label: this.getLabel(route.data, route.paramMap),
|
|
65
|
+
routerLink: '/' + routeUrl.join('/'),
|
|
66
|
+
};
|
|
67
|
+
breadcrumbs.push(breadcrumb);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const breadcrumb = {
|
|
71
|
+
label: 'NA',
|
|
72
|
+
routerLink: '/' + routeUrl.join('/'),
|
|
73
|
+
};
|
|
74
|
+
breadcrumbs.push(breadcrumb);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
getLabel(data, params) {
|
|
78
|
+
if (typeof data['breadcrumbFn'] === 'function') {
|
|
79
|
+
return data['breadcrumbFn'](data, params);
|
|
80
|
+
}
|
|
81
|
+
return data['breadcrumb'];
|
|
82
|
+
}
|
|
83
|
+
setItems(items) {
|
|
84
|
+
const translationKeys = [
|
|
85
|
+
...items.map((i) => i.labelKey || '').filter((l) => !!l),
|
|
86
|
+
...items.map((i) => i.titleKey || '').filter((l) => !!l),
|
|
87
|
+
];
|
|
88
|
+
if (translationKeys.length) {
|
|
89
|
+
this.translateService.get(translationKeys).subscribe((translations) => {
|
|
90
|
+
this.itemsSource.next(items.map((i) => ({
|
|
91
|
+
...i,
|
|
92
|
+
label: translations[i.labelKey || ''] || i.label,
|
|
93
|
+
title: translations[i.titleKey || ''] || i.title,
|
|
94
|
+
})));
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
this.itemsSource.next(items);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BreadcrumbService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
102
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BreadcrumbService, providedIn: 'any' }); }
|
|
103
|
+
};
|
|
104
|
+
BreadcrumbService = __decorate([
|
|
105
|
+
UntilDestroy(),
|
|
106
|
+
__metadata("design:paramtypes", [Router, ActivatedRoute, TranslateService])
|
|
107
|
+
], BreadcrumbService);
|
|
108
|
+
export { BreadcrumbService };
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BreadcrumbService, decorators: [{
|
|
110
|
+
type: Injectable,
|
|
111
|
+
args: [{ providedIn: 'any' }]
|
|
112
|
+
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }] });
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvc2VydmljZXMvYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQWdDLGFBQWEsRUFBWSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFBOzs7O0FBTXZDLElBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBTTVCLFlBQW9CLE1BQWMsRUFBVSxXQUEyQixFQUFVLGdCQUFrQztRQUEvRixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUwzRyxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFBO1FBQ3pELHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFBO1FBRTFELGlCQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUc1QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDZixJQUFJLENBQ0gsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVB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QyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6RCxDQUFBO1FBQ0QsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNuQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNoQixHQUFHLENBQUM7b0JBQ0osS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO29CQUNoRCxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7aUJBQ2pELENBQUMsQ0FBQyxDQUNKLENBQUE7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsQ0FBQztJQUNILENBQUM7OEdBaEdVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRkosS0FBSzs7QUFFbEIsaUJBQWlCO0lBRDdCLFlBQVksRUFBRTtxQ0FPZSxNQUFNLEVBQXVCLGNBQWMsRUFBNEIsZ0JBQWdCO0dBTnhHLGlCQUFpQixDQWlHN0I7OzJGQWpHWSxpQkFBaUI7a0JBRjdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgTmF2aWdhdGlvbkVuZCwgUGFyYW1NYXAsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknXG5pbXBvcnQgeyBCcmVhZENydW1iTWVudUl0ZW0gfSBmcm9tICcuLi9tb2RlbC9icmVhZGNydW1iLW1lbnUtaXRlbS5tb2RlbCdcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAnYW55JyB9KVxuQFVudGlsRGVzdHJveSgpXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYlNlcnZpY2Uge1xuICBwcml2YXRlIGl0ZW1zU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSlcbiAgZ2VuZXJhdGVkSXRlbXNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lbnVJdGVtW10+KFtdKVxuXG4gIGl0ZW1zSGFuZGxlciA9IHRoaXMuaXRlbXNTb3VyY2UuYXNPYnNlcnZhYmxlKClcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGFjdGl2ZVJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QpXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcyksXG4gICAgICAgIGZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3RcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvb3QpXG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUJyZWFkY3J1bWJzKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCkge1xuICAgIGlmIChyb3V0ZT8uZGF0YVsnbWZlSW5mbyddKSB7XG4gICAgICBjb25zdCBicmVhZGNydW1iczogTWVudUl0ZW1bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiByb3V0ZS5kYXRhWydtZmVJbmZvJ10ucHJvZHVjdE5hbWUsXG4gICAgICAgICAgcm91dGVyTGluazogcm91dGUuZGF0YVsnbWZlSW5mbyddLmJhc2VIcmVmLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgY29uc3QgYmFzZVVybDogc3RyaW5nW10gPSAocm91dGUuZGF0YVsnbWZlSW5mbyddLmJhc2VIcmVmIGFzIHN0cmluZykuc3BsaXQoJy8nKS5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSlcbiAgICAgIGNvbnN0IHBhcmVudFVybDogc3RyaW5nW10gPSByb3V0ZS51cmwubWFwKCh1cmwpID0+IHVybC5wYXRoKVxuICAgICAgY29uc3QgaXNVc2luZ01hdGNoZXIgPSAhcGFyZW50VXJsLmV2ZXJ5KChpdGVtKSA9PiBiYXNlVXJsLmluY2x1ZGVzKGl0ZW0pKVxuICAgICAgaWYgKGlzVXNpbmdNYXRjaGVyKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlQnJlYWRjcnVtYihyb3V0ZSwgcGFyZW50VXJsLCBicmVhZGNydW1icylcbiAgICAgIH1cbiAgICAgIHRoaXMuYWRkQnJlYWRjcnVtYihyb3V0ZS5maXJzdENoaWxkLCBwYXJlbnRVcmwsIGJyZWFkY3J1bWJzKVxuICAgICAgdGhpcy5nZW5lcmF0ZWRJdGVtc1NvdXJjZS5uZXh0KGJyZWFkY3J1bWJzKVxuICAgIH0gZWxzZSBpZiAocm91dGU/LmRhdGFbJ2JyZWFkY3J1bWInXSkge1xuICAgICAgY29uc3QgYnJlYWRjcnVtYnM6IE1lbnVJdGVtW10gPSBbXVxuICAgICAgdGhpcy5hZGRCcmVhZGNydW1iKHJvdXRlLCBbXSwgYnJlYWRjcnVtYnMpXG4gICAgICB0aGlzLmdlbmVyYXRlZEl0ZW1zU291cmNlLm5leHQoYnJlYWRjcnVtYnMpXG4gICAgfSBlbHNlIGlmIChyb3V0ZSkge1xuICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvdXRlLmZpcnN0Q2hpbGQpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCwgcGFyZW50VXJsOiBzdHJpbmdbXSwgYnJlYWRjcnVtYnM6IE1lbnVJdGVtW10pIHtcbiAgICBpZiAocm91dGUgJiYgcm91dGUudXJsKSB7XG4gICAgICBjb25zdCByb3V0ZVVybCA9IHBhcmVudFVybC5jb25jYXQocm91dGUudXJsLm1hcCgodXJsKSA9PiB1cmwucGF0aCkpXG4gICAgICBpZiAocm91dGUucm91dGVDb25maWc/LnBhdGgpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVCcmVhZGNydW1iKHJvdXRlLCByb3V0ZVVybCwgYnJlYWRjcnVtYnMpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWRkQnJlYWRjcnVtYihyb3V0ZS5maXJzdENoaWxkLCByb3V0ZVVybCwgYnJlYWRjcnVtYnMpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCByb3V0ZVVybDogc3RyaW5nW10sIGJyZWFkY3J1bWJzOiBNZW51SXRlbVtdKSB7XG4gICAgaWYgKHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSkge1xuICAgICAgY29uc3QgYnJlYWRjcnVtYjogTWVudUl0ZW0gPSB7XG4gICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsKHJvdXRlLmRhdGEsIHJvdXRlLnBhcmFtTWFwKSxcbiAgICAgICAgcm91dGVyTGluazogJy8nICsgcm91dGVVcmwuam9pbignLycpLFxuICAgICAgfVxuICAgICAgYnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBicmVhZGNydW1iOiBNZW51SXRlbSA9IHtcbiAgICAgICAgbGFiZWw6ICdOQScsXG4gICAgICAgIHJvdXRlckxpbms6ICcvJyArIHJvdXRlVXJsLmpvaW4oJy8nKSxcbiAgICAgIH1cbiAgICAgIGJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYilcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldExhYmVsKGRhdGE6IERhdGEsIHBhcmFtczogUGFyYW1NYXApIHtcbiAgICBpZiAodHlwZW9mIGRhdGFbJ2JyZWFkY3J1bWJGbiddID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gZGF0YVsnYnJlYWRjcnVtYkZuJ10oZGF0YSwgcGFyYW1zKVxuICAgIH1cbiAgICByZXR1cm4gZGF0YVsnYnJlYWRjcnVtYiddXG4gIH1cblxuICBzZXRJdGVtcyhpdGVtczogQnJlYWRDcnVtYk1lbnVJdGVtW10pIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbktleXMgPSBbXG4gICAgICAuLi5pdGVtcy5tYXAoKGkpID0+IGkubGFiZWxLZXkgfHwgJycpLmZpbHRlcigobCkgPT4gISFsKSxcbiAgICAgIC4uLml0ZW1zLm1hcCgoaSkgPT4gaS50aXRsZUtleSB8fCAnJykuZmlsdGVyKChsKSA9PiAhIWwpLFxuICAgIF1cbiAgICBpZiAodHJhbnNsYXRpb25LZXlzLmxlbmd0aCkge1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0cmFuc2xhdGlvbktleXMpLnN1YnNjcmliZSgodHJhbnNsYXRpb25zOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pdGVtc1NvdXJjZS5uZXh0KFxuICAgICAgICAgIGl0ZW1zLm1hcCgoaSkgPT4gKHtcbiAgICAgICAgICAgIC4uLmksXG4gICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zW2kubGFiZWxLZXkgfHwgJyddIHx8IGkubGFiZWwsXG4gICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRpb25zW2kudGl0bGVLZXkgfHwgJyddIHx8IGkudGl0bGUsXG4gICAgICAgICAgfSkpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXRlbXNTb3VyY2UubmV4dChpdGVtcylcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|