@lenne.tech/ng-base 0.3.12 → 13.0.0
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/{esm2015/lenne.tech-ng-base.js → esm2020/lenne.tech-ng-base.mjs} +0 -0
- package/esm2020/lib/base/base.module.mjs +97 -0
- package/{esm2015/lib/base/classes/basic-user.class.js → esm2020/lib/base/classes/basic-user.class.mjs} +0 -0
- package/{esm2015/lib/base/classes/graphql-enum.class.js → esm2020/lib/base/classes/graphql-enum.class.mjs} +0 -0
- package/esm2020/lib/base/classes/graphql-meta.class.mjs +171 -0
- package/{esm2015/lib/base/classes/graphql-type.class.js → esm2020/lib/base/classes/graphql-type.class.mjs} +0 -0
- package/esm2020/lib/base/classes/helper.class.mjs +295 -0
- package/{esm2015/lib/base/classes/standard.class.js → esm2020/lib/base/classes/standard.class.mjs} +0 -0
- package/esm2020/lib/base/directives/context-menu.directive.mjs +109 -0
- package/esm2020/lib/base/directives/lazy-load.directive.mjs +45 -0
- package/esm2020/lib/base/directives/match-height.directive.mjs +79 -0
- package/esm2020/lib/base/directives/resizable.directive.mjs +90 -0
- package/{esm2015/lib/base/enums/comparison-operator.enum.js → esm2020/lib/base/enums/comparison-operator.enum.mjs} +0 -0
- package/{esm2015/lib/base/enums/graphql-request-type.enum.js → esm2020/lib/base/enums/graphql-request-type.enum.mjs} +0 -0
- package/{esm2015/lib/base/enums/logical-operator.enum.js → esm2020/lib/base/enums/logical-operator.enum.mjs} +0 -0
- package/{esm2015/lib/base/enums/sort-order.enum.js → esm2020/lib/base/enums/sort-order.enum.mjs} +0 -0
- package/{esm2015/lib/base/factories/apollo-options.factory.js → esm2020/lib/base/factories/apollo-options.factory.mjs} +0 -0
- package/esm2020/lib/base/guards/auth.guard.mjs +61 -0
- package/esm2020/lib/base/guards/can-deactivate.guard.mjs +16 -0
- package/esm2020/lib/base/guards/logout.guard.mjs +32 -0
- package/{esm2015/lib/base/index.js → esm2020/lib/base/index.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/base-module-config.interface.js → esm2020/lib/base/interfaces/base-module-config.interface.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/can-component-deactivate.interface.js → esm2020/lib/base/interfaces/can-component-deactivate.interface.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/combined-filter-input.interface.js → esm2020/lib/base/interfaces/combined-filter-input.interface.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/field-object.interface.js → esm2020/lib/base/interfaces/field-object.interface.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/field.interface.js → esm2020/lib/base/interfaces/field.interface.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/filter-input.interface.js → esm2020/lib/base/interfaces/filter-input.interface.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/find-args.interface.js → esm2020/lib/base/interfaces/find-args.interface.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/graphql-options.interface.js → esm2020/lib/base/interfaces/graphql-options.interface.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/graphql-plus-options.interfacen.js → esm2020/lib/base/interfaces/graphql-plus-options.interfacen.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/graphql-type-collection.interface.js → esm2020/lib/base/interfaces/graphql-type-collection.interface.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/single-filter-input.interface.js → esm2020/lib/base/interfaces/single-filter-input.interface.mjs} +0 -0
- package/{esm2015/lib/base/interfaces/sort-input.interface.js → esm2020/lib/base/interfaces/sort-input.interface.mjs} +0 -0
- package/esm2020/lib/base/pipes/ellipses.pipe.mjs +22 -0
- package/esm2020/lib/base/pipes/safe-html.pipe.mjs +21 -0
- package/{esm2015/lib/base/public-api.js → esm2020/lib/base/public-api.mjs} +2 -1
- package/{esm2015/lib/base/services/auth.service.js → esm2020/lib/base/services/auth.service.mjs} +14 -17
- package/{esm2015/lib/base/services/fullscreen.service.js → esm2020/lib/base/services/fullscreen.service.mjs} +9 -8
- package/esm2020/lib/base/services/graphql-meta.service.mjs +123 -0
- package/esm2020/lib/base/services/graphql-plus.service.mjs +84 -0
- package/esm2020/lib/base/services/graphql.service.mjs +441 -0
- package/esm2020/lib/base/services/image.service.mjs +102 -0
- package/esm2020/lib/base/services/loader.service.mjs +29 -0
- package/esm2020/lib/base/services/scroll.service.mjs +179 -0
- package/esm2020/lib/base/services/seo.service.mjs +97 -0
- package/esm2020/lib/base/services/storage.service.mjs +132 -0
- package/esm2020/lib/base/services/ws.service.mjs +17 -0
- package/{esm2015/lib/base/types/storage.type.js → esm2020/lib/base/types/storage.type.mjs} +0 -0
- package/{esm2015/lib/base/validators/must-match.validator.js → esm2020/lib/base/validators/must-match.validator.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/esm2020/src/lib/base/base.module.mjs +97 -0
- package/{esm2015/src/lib/base/classes/basic-user.class.js → esm2020/src/lib/base/classes/basic-user.class.mjs} +0 -0
- package/{esm2015/src/lib/base/classes/graphql-enum.class.js → esm2020/src/lib/base/classes/graphql-enum.class.mjs} +0 -0
- package/esm2020/src/lib/base/classes/graphql-meta.class.mjs +171 -0
- package/{esm2015/src/lib/base/classes/graphql-type.class.js → esm2020/src/lib/base/classes/graphql-type.class.mjs} +0 -0
- package/esm2020/src/lib/base/classes/helper.class.mjs +295 -0
- package/{esm2015/src/lib/base/classes/standard.class.js → esm2020/src/lib/base/classes/standard.class.mjs} +0 -0
- package/esm2020/src/lib/base/directives/context-menu.directive.mjs +109 -0
- package/esm2020/src/lib/base/directives/lazy-load.directive.mjs +45 -0
- package/esm2020/src/lib/base/directives/match-height.directive.mjs +79 -0
- package/esm2020/src/lib/base/directives/resizable.directive.mjs +90 -0
- package/{esm2015/src/lib/base/enums/comparison-operator.enum.js → esm2020/src/lib/base/enums/comparison-operator.enum.mjs} +0 -0
- package/{esm2015/src/lib/base/enums/graphql-request-type.enum.js → esm2020/src/lib/base/enums/graphql-request-type.enum.mjs} +0 -0
- package/{esm2015/src/lib/base/enums/logical-operator.enum.js → esm2020/src/lib/base/enums/logical-operator.enum.mjs} +0 -0
- package/{esm2015/src/lib/base/enums/sort-order.enum.js → esm2020/src/lib/base/enums/sort-order.enum.mjs} +0 -0
- package/{esm2015/src/lib/base/factories/apollo-options.factory.js → esm2020/src/lib/base/factories/apollo-options.factory.mjs} +0 -0
- package/esm2020/src/lib/base/guards/auth.guard.mjs +61 -0
- package/esm2020/src/lib/base/guards/can-deactivate.guard.mjs +16 -0
- package/esm2020/src/lib/base/guards/logout.guard.mjs +32 -0
- package/{esm2015/src/lib/base/interfaces/base-module-config.interface.js → esm2020/src/lib/base/interfaces/base-module-config.interface.mjs} +0 -0
- package/{esm2015/src/lib/base/interfaces/can-component-deactivate.interface.js → esm2020/src/lib/base/interfaces/can-component-deactivate.interface.mjs} +0 -0
- package/{esm2015/src/lib/base/interfaces/combined-filter-input.interface.js → esm2020/src/lib/base/interfaces/combined-filter-input.interface.mjs} +0 -0
- package/{esm2015/src/lib/base/interfaces/field-object.interface.js → esm2020/src/lib/base/interfaces/field-object.interface.mjs} +0 -0
- package/{esm2015/src/lib/base/interfaces/field.interface.js → esm2020/src/lib/base/interfaces/field.interface.mjs} +0 -0
- package/{esm2015/src/lib/base/interfaces/filter-input.interface.js → esm2020/src/lib/base/interfaces/filter-input.interface.mjs} +0 -0
- package/{esm2015/src/lib/base/interfaces/find-args.interface.js → esm2020/src/lib/base/interfaces/find-args.interface.mjs} +0 -0
- package/{esm2015/src/lib/base/interfaces/graphql-options.interface.js → esm2020/src/lib/base/interfaces/graphql-options.interface.mjs} +0 -0
- package/{esm2015/src/lib/base/interfaces/graphql-plus-options.interfacen.js → esm2020/src/lib/base/interfaces/graphql-plus-options.interfacen.mjs} +0 -0
- package/{esm2015/src/lib/base/interfaces/graphql-type-collection.interface.js → esm2020/src/lib/base/interfaces/graphql-type-collection.interface.mjs} +0 -0
- package/{esm2015/src/lib/base/interfaces/single-filter-input.interface.js → esm2020/src/lib/base/interfaces/single-filter-input.interface.mjs} +0 -0
- package/{esm2015/src/lib/base/interfaces/sort-input.interface.js → esm2020/src/lib/base/interfaces/sort-input.interface.mjs} +0 -0
- package/{esm2015/src/lib/base/lenne.tech-ng-base-src-lib-base.js → esm2020/src/lib/base/lenne.tech-ng-base-src-lib-base.mjs} +1 -2
- package/esm2020/src/lib/base/pipes/ellipses.pipe.mjs +22 -0
- package/esm2020/src/lib/base/pipes/safe-html.pipe.mjs +21 -0
- package/{esm2015/src/lib/base/public-api.js → esm2020/src/lib/base/public-api.mjs} +2 -1
- package/{esm2015/src/lib/base/services/auth.service.js → esm2020/src/lib/base/services/auth.service.mjs} +14 -17
- package/{esm2015/src/lib/base/services/fullscreen.service.js → esm2020/src/lib/base/services/fullscreen.service.mjs} +9 -8
- package/esm2020/src/lib/base/services/graphql-meta.service.mjs +123 -0
- package/esm2020/src/lib/base/services/graphql-plus.service.mjs +84 -0
- package/esm2020/src/lib/base/services/graphql.service.mjs +441 -0
- package/esm2020/src/lib/base/services/image.service.mjs +102 -0
- package/esm2020/src/lib/base/services/loader.service.mjs +29 -0
- package/esm2020/src/lib/base/services/scroll.service.mjs +179 -0
- package/esm2020/src/lib/base/services/seo.service.mjs +97 -0
- package/esm2020/src/lib/base/services/storage.service.mjs +132 -0
- package/esm2020/src/lib/base/services/ws.service.mjs +17 -0
- package/{esm2015/src/lib/base/types/storage.type.js → esm2020/src/lib/base/types/storage.type.mjs} +0 -0
- package/{esm2015/src/lib/base/validators/must-match.validator.js → esm2020/src/lib/base/validators/must-match.validator.mjs} +0 -0
- package/fesm2015/{lenne.tech-ng-base-src-lib-base.js → lenne.tech-ng-base-src-lib-base.mjs} +241 -198
- package/fesm2015/lenne.tech-ng-base-src-lib-base.mjs.map +1 -0
- package/fesm2015/{lenne.tech-ng-base.js → lenne.tech-ng-base.mjs} +241 -198
- package/fesm2015/lenne.tech-ng-base.mjs.map +1 -0
- package/fesm2020/lenne.tech-ng-base-src-lib-base.mjs +2524 -0
- package/fesm2020/lenne.tech-ng-base-src-lib-base.mjs.map +1 -0
- package/fesm2020/lenne.tech-ng-base.mjs +2526 -0
- package/fesm2020/lenne.tech-ng-base.mjs.map +1 -0
- package/lenne.tech-ng-base.d.ts +1 -0
- package/lib/base/base.module.d.ts +11 -1
- package/lib/base/classes/graphql-meta.class.d.ts +2 -4
- package/lib/base/directives/context-menu.directive.d.ts +3 -0
- package/lib/base/directives/lazy-load.directive.d.ts +3 -0
- package/lib/base/directives/match-height.directive.d.ts +3 -0
- package/lib/base/directives/resizable.directive.d.ts +3 -0
- package/lib/base/guards/auth.guard.d.ts +3 -0
- package/lib/base/guards/can-deactivate.guard.d.ts +3 -0
- package/lib/base/guards/logout.guard.d.ts +3 -0
- package/lib/base/pipes/ellipses.pipe.d.ts +3 -0
- package/lib/base/pipes/safe-html.pipe.d.ts +3 -0
- package/lib/base/public-api.d.ts +1 -0
- package/lib/base/services/auth.service.d.ts +3 -0
- package/lib/base/services/fullscreen.service.d.ts +3 -0
- package/lib/base/services/graphql-meta.service.d.ts +3 -0
- package/lib/base/services/graphql-plus.service.d.ts +3 -0
- package/lib/base/services/graphql.service.d.ts +3 -0
- package/lib/base/services/image.service.d.ts +3 -0
- package/lib/base/services/loader.service.d.ts +3 -0
- package/lib/base/services/scroll.service.d.ts +3 -0
- package/lib/base/services/seo.service.d.ts +3 -0
- package/lib/base/services/storage.service.d.ts +3 -0
- package/lib/base/services/ws.service.d.ts +3 -0
- package/package.json +34 -14
- package/src/lib/base/base.module.d.ts +11 -1
- package/src/lib/base/classes/graphql-meta.class.d.ts +2 -4
- package/src/lib/base/directives/context-menu.directive.d.ts +3 -0
- package/src/lib/base/directives/lazy-load.directive.d.ts +3 -0
- package/src/lib/base/directives/match-height.directive.d.ts +3 -0
- package/src/lib/base/directives/resizable.directive.d.ts +3 -0
- package/src/lib/base/guards/auth.guard.d.ts +3 -0
- package/src/lib/base/guards/can-deactivate.guard.d.ts +3 -0
- package/src/lib/base/guards/logout.guard.d.ts +3 -0
- package/src/lib/base/lenne.tech-ng-base-src-lib-base.d.ts +1 -1
- package/src/lib/base/package.json +5 -6
- package/src/lib/base/pipes/ellipses.pipe.d.ts +3 -0
- package/src/lib/base/pipes/safe-html.pipe.d.ts +3 -0
- package/src/lib/base/public-api.d.ts +1 -0
- package/src/lib/base/services/auth.service.d.ts +3 -0
- package/src/lib/base/services/fullscreen.service.d.ts +3 -0
- package/src/lib/base/services/graphql-meta.service.d.ts +3 -0
- package/src/lib/base/services/graphql-plus.service.d.ts +3 -0
- package/src/lib/base/services/graphql.service.d.ts +3 -0
- package/src/lib/base/services/image.service.d.ts +3 -0
- package/src/lib/base/services/loader.service.d.ts +3 -0
- package/src/lib/base/services/scroll.service.d.ts +3 -0
- package/src/lib/base/services/seo.service.d.ts +3 -0
- package/src/lib/base/services/storage.service.d.ts +3 -0
- package/src/lib/base/services/ws.service.d.ts +3 -0
- package/bundles/lenne.tech-ng-base-src-lib-base.umd.js +0 -3152
- package/bundles/lenne.tech-ng-base-src-lib-base.umd.js.map +0 -1
- package/bundles/lenne.tech-ng-base.umd.js +0 -3153
- package/bundles/lenne.tech-ng-base.umd.js.map +0 -1
- package/esm2015/lib/base/base.module.js +0 -66
- package/esm2015/lib/base/classes/graphql-meta.class.js +0 -156
- package/esm2015/lib/base/classes/helper.class.js +0 -290
- package/esm2015/lib/base/directives/context-menu.directive.js +0 -104
- package/esm2015/lib/base/directives/lazy-load.directive.js +0 -43
- package/esm2015/lib/base/directives/match-height.directive.js +0 -78
- package/esm2015/lib/base/directives/resizable.directive.js +0 -89
- package/esm2015/lib/base/guards/auth.guard.js +0 -61
- package/esm2015/lib/base/guards/can-deactivate.guard.js +0 -13
- package/esm2015/lib/base/guards/logout.guard.js +0 -33
- package/esm2015/lib/base/pipes/ellipses.pipe.js +0 -18
- package/esm2015/lib/base/pipes/safe-html.pipe.js +0 -20
- package/esm2015/lib/base/services/graphql-meta.service.js +0 -116
- package/esm2015/lib/base/services/graphql-plus.service.js +0 -90
- package/esm2015/lib/base/services/graphql.service.js +0 -423
- package/esm2015/lib/base/services/image.service.js +0 -99
- package/esm2015/lib/base/services/loader.service.js +0 -27
- package/esm2015/lib/base/services/scroll.service.js +0 -172
- package/esm2015/lib/base/services/seo.service.js +0 -100
- package/esm2015/lib/base/services/storage.service.js +0 -131
- package/esm2015/lib/base/services/ws.service.js +0 -16
- package/esm2015/src/lib/base/base.module.js +0 -66
- package/esm2015/src/lib/base/classes/graphql-meta.class.js +0 -156
- package/esm2015/src/lib/base/classes/helper.class.js +0 -290
- package/esm2015/src/lib/base/directives/context-menu.directive.js +0 -104
- package/esm2015/src/lib/base/directives/lazy-load.directive.js +0 -43
- package/esm2015/src/lib/base/directives/match-height.directive.js +0 -78
- package/esm2015/src/lib/base/directives/resizable.directive.js +0 -89
- package/esm2015/src/lib/base/guards/auth.guard.js +0 -61
- package/esm2015/src/lib/base/guards/can-deactivate.guard.js +0 -13
- package/esm2015/src/lib/base/guards/logout.guard.js +0 -33
- package/esm2015/src/lib/base/pipes/ellipses.pipe.js +0 -18
- package/esm2015/src/lib/base/pipes/safe-html.pipe.js +0 -20
- package/esm2015/src/lib/base/services/graphql-meta.service.js +0 -116
- package/esm2015/src/lib/base/services/graphql-plus.service.js +0 -90
- package/esm2015/src/lib/base/services/graphql.service.js +0 -423
- package/esm2015/src/lib/base/services/image.service.js +0 -99
- package/esm2015/src/lib/base/services/loader.service.js +0 -27
- package/esm2015/src/lib/base/services/scroll.service.js +0 -172
- package/esm2015/src/lib/base/services/seo.service.js +0 -100
- package/esm2015/src/lib/base/services/storage.service.js +0 -131
- package/esm2015/src/lib/base/services/ws.service.js +0 -16
- package/fesm2015/lenne.tech-ng-base-src-lib-base.js.map +0 -1
- package/fesm2015/lenne.tech-ng-base.js.map +0 -1
- package/lenne.tech-ng-base.metadata.json +0 -1
- package/src/lib/base/lenne.tech-ng-base-src-lib-base.metadata.json +0 -1
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Directive, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Directive vor context menu
|
|
5
|
+
* See https://stackblitz.com/edit/angular-custom-context-menu
|
|
6
|
+
*/
|
|
7
|
+
export class ContextMenuDirective {
|
|
8
|
+
constructor(el) {
|
|
9
|
+
this.el = el;
|
|
10
|
+
this.xGap = 0;
|
|
11
|
+
this.yGap = 0;
|
|
12
|
+
this.overflowSpace = 10;
|
|
13
|
+
this.selectors = '*';
|
|
14
|
+
this.clickedElement = null;
|
|
15
|
+
this.previousDisplayStatus = null;
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
if (this.ltContextMenu) {
|
|
19
|
+
this.previousDisplayStatus = this.ltContextMenu.style.display;
|
|
20
|
+
}
|
|
21
|
+
// Add a click listener to the window,
|
|
22
|
+
// so that we can close the context menu on left click
|
|
23
|
+
window.addEventListener('click', () => {
|
|
24
|
+
this.showContextMenu(null, false);
|
|
25
|
+
});
|
|
26
|
+
// Close context menu when escape is pressed
|
|
27
|
+
window.addEventListener('keydown', (e) => {
|
|
28
|
+
if (e.code === 'Escape') {
|
|
29
|
+
this.showContextMenu(null, false);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
// Add an event listener to listen to the 'contextmenu' event
|
|
33
|
+
this.el.nativeElement.addEventListener('contextmenu', (e) => {
|
|
34
|
+
// Prevent the default context menu to popup
|
|
35
|
+
if (e.preventDefault) {
|
|
36
|
+
e.preventDefault();
|
|
37
|
+
}
|
|
38
|
+
// Shows our own context menu
|
|
39
|
+
this.showContextMenu(e, true);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
// Shows or hides our custom context menu, which is specified as a input
|
|
43
|
+
showContextMenu(event, show) {
|
|
44
|
+
const cm = this.ltContextMenu;
|
|
45
|
+
if (cm) {
|
|
46
|
+
// Try to open context menu
|
|
47
|
+
if (show && event && event instanceof MouseEvent) {
|
|
48
|
+
// Get valid clicked structureElement
|
|
49
|
+
const clickedElement = event?.target?.closest(this.selectors);
|
|
50
|
+
if (clickedElement) {
|
|
51
|
+
// Set clicked structureElement
|
|
52
|
+
this.clickedElement = clickedElement;
|
|
53
|
+
setTimeout(() => {
|
|
54
|
+
// Set display status
|
|
55
|
+
cm.style.display = 'block';
|
|
56
|
+
// Calculate top position
|
|
57
|
+
let top = event.y + this.yGap;
|
|
58
|
+
if (top + cm.offsetHeight + 10 > document.documentElement.clientHeight) {
|
|
59
|
+
top = document.documentElement.clientHeight - cm.offsetHeight - this.overflowSpace;
|
|
60
|
+
}
|
|
61
|
+
// Calculate left position
|
|
62
|
+
let left = event.x + this.xGap;
|
|
63
|
+
if (left + cm.offsetWidth + 10 > document.documentElement.clientWidth) {
|
|
64
|
+
left = document.documentElement.clientWidth - cm.offsetWidth - this.overflowSpace;
|
|
65
|
+
}
|
|
66
|
+
// Set position
|
|
67
|
+
cm.style.top = top + 'px';
|
|
68
|
+
cm.style.left = left + 'px';
|
|
69
|
+
// Show
|
|
70
|
+
cm.style.opacity = '1.0';
|
|
71
|
+
cm.style['pointer-events'] = 'auto';
|
|
72
|
+
}, 1);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Close context menu
|
|
77
|
+
this.clickedElement = null;
|
|
78
|
+
if (this.previousDisplayStatus) {
|
|
79
|
+
cm.style.display = this.previousDisplayStatus;
|
|
80
|
+
}
|
|
81
|
+
cm.style.opacity = '0.01';
|
|
82
|
+
cm.style['pointer-events'] = 'none';
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
ContextMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ContextMenuDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
87
|
+
ContextMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: ContextMenuDirective, selector: "[ltContextMenu]", inputs: { contextMenuData: "contextMenuData", ltContextMenu: "ltContextMenu", xGap: "xGap", yGap: "yGap", overflowSpace: "overflowSpace", selectors: "selectors" }, outputs: { clickedElement: "clickedElement" }, exportAs: ["contextMenuData"], ngImport: i0 });
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ContextMenuDirective, decorators: [{
|
|
89
|
+
type: Directive,
|
|
90
|
+
args: [{
|
|
91
|
+
selector: '[ltContextMenu]',
|
|
92
|
+
exportAs: 'contextMenuData',
|
|
93
|
+
}]
|
|
94
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { contextMenuData: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], ltContextMenu: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], xGap: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], yGap: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], overflowSpace: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], selectors: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], clickedElement: [{
|
|
107
|
+
type: Output
|
|
108
|
+
}] } });
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvY29udGV4dC1tZW51LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTdFOzs7R0FHRztBQUtILE1BQU0sT0FBTyxvQkFBb0I7SUFVL0IsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFQekIsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUNULFNBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixjQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ2YsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDekMsMEJBQXFCLEdBQVcsSUFBSSxDQUFDO0lBRUEsQ0FBQztJQUV0QyxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDL0Q7UUFFRCxzQ0FBc0M7UUFDdEMsc0RBQXNEO1FBQ3RELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsNENBQTRDO1FBQzVDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNuQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsNkRBQTZEO1FBQzdELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzFELDRDQUE0QztZQUM1QyxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUU7Z0JBQ3BCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUNwQjtZQUNELDZCQUE2QjtZQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsZUFBZSxDQUFDLEtBQUssRUFBRSxJQUFhO1FBQ2xDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDOUIsSUFBSSxFQUFFLEVBQUU7WUFDTiwyQkFBMkI7WUFDM0IsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7Z0JBQ2hELHFDQUFxQztnQkFDckMsTUFBTSxjQUFjLEdBQUksS0FBSyxFQUFFLE1BQXNCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxjQUFjLEVBQUU7b0JBQ2xCLCtCQUErQjtvQkFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7b0JBRXJDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ2QscUJBQXFCO3dCQUNyQixFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7d0JBRTNCLHlCQUF5Qjt3QkFDekIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO3dCQUM5QixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRTs0QkFDdEUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQzt5QkFDcEY7d0JBRUQsMEJBQTBCO3dCQUMxQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQy9CLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFOzRCQUNyRSxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO3lCQUNuRjt3QkFFRCxlQUFlO3dCQUNmLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7d0JBQzFCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7d0JBRTVCLE9BQU87d0JBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO3dCQUN6QixFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsTUFBTSxDQUFDO29CQUN0QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRU4sT0FBTztpQkFDUjthQUNGO1lBRUQscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO2dCQUM5QixFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7YUFDL0M7WUFDRCxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDMUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLE1BQU0sQ0FBQztTQUNyQztJQUNILENBQUM7O2lIQTFGVSxvQkFBb0I7cUdBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCO2lHQUVVLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgdm9yIGNvbnRleHQgbWVudVxuICogU2VlIGh0dHBzOi8vc3RhY2tibGl0ei5jb20vZWRpdC9hbmd1bGFyLWN1c3RvbS1jb250ZXh0LW1lbnVcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2x0Q29udGV4dE1lbnVdJyxcbiAgZXhwb3J0QXM6ICdjb250ZXh0TWVudURhdGEnLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNvbnRleHRNZW51RGF0YT86IGFueTtcbiAgQElucHV0KCkgbHRDb250ZXh0TWVudTogSFRNTEVsZW1lbnQ7XG4gIEBJbnB1dCgpIHhHYXAgPSAwO1xuICBASW5wdXQoKSB5R2FwID0gMDtcbiAgQElucHV0KCkgb3ZlcmZsb3dTcGFjZSA9IDEwO1xuICBASW5wdXQoKSBzZWxlY3RvcnMgPSAnKic7XG4gIEBPdXRwdXQoKSBjbGlja2VkRWxlbWVudDogRWxlbWVudCA9IG51bGw7XG4gIHByZXZpb3VzRGlzcGxheVN0YXR1czogc3RyaW5nID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmx0Q29udGV4dE1lbnUpIHtcbiAgICAgIHRoaXMucHJldmlvdXNEaXNwbGF5U3RhdHVzID0gdGhpcy5sdENvbnRleHRNZW51LnN0eWxlLmRpc3BsYXk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGEgY2xpY2sgbGlzdGVuZXIgdG8gdGhlIHdpbmRvdyxcbiAgICAvLyBzbyB0aGF0IHdlIGNhbiBjbG9zZSB0aGUgY29udGV4dCBtZW51IG9uIGxlZnQgY2xpY2tcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICB0aGlzLnNob3dDb250ZXh0TWVudShudWxsLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBDbG9zZSBjb250ZXh0IG1lbnUgd2hlbiBlc2NhcGUgaXMgcHJlc3NlZFxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpID0+IHtcbiAgICAgIGlmIChlLmNvZGUgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIHRoaXMuc2hvd0NvbnRleHRNZW51KG51bGwsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEFkZCBhbiBldmVudCBsaXN0ZW5lciB0byBsaXN0ZW4gdG8gdGhlICdjb250ZXh0bWVudScgZXZlbnRcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCAoZSkgPT4ge1xuICAgICAgLy8gUHJldmVudCB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnUgdG8gcG9wdXBcbiAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIC8vIFNob3dzIG91ciBvd24gY29udGV4dCBtZW51XG4gICAgICB0aGlzLnNob3dDb250ZXh0TWVudShlLCB0cnVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFNob3dzIG9yIGhpZGVzIG91ciBjdXN0b20gY29udGV4dCBtZW51LCB3aGljaCBpcyBzcGVjaWZpZWQgYXMgYSBpbnB1dFxuICBzaG93Q29udGV4dE1lbnUoZXZlbnQsIHNob3c6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjbSA9IHRoaXMubHRDb250ZXh0TWVudTtcbiAgICBpZiAoY20pIHtcbiAgICAgIC8vIFRyeSB0byBvcGVuIGNvbnRleHQgbWVudVxuICAgICAgaWYgKHNob3cgJiYgZXZlbnQgJiYgZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIC8vIEdldCB2YWxpZCBjbGlja2VkIHN0cnVjdHVyZUVsZW1lbnRcbiAgICAgICAgY29uc3QgY2xpY2tlZEVsZW1lbnQgPSAoZXZlbnQ/LnRhcmdldCBhcyBIVE1MRWxlbWVudCk/LmNsb3Nlc3QodGhpcy5zZWxlY3RvcnMpO1xuICAgICAgICBpZiAoY2xpY2tlZEVsZW1lbnQpIHtcbiAgICAgICAgICAvLyBTZXQgY2xpY2tlZCBzdHJ1Y3R1cmVFbGVtZW50XG4gICAgICAgICAgdGhpcy5jbGlja2VkRWxlbWVudCA9IGNsaWNrZWRFbGVtZW50O1xuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBTZXQgZGlzcGxheSBzdGF0dXNcbiAgICAgICAgICAgIGNtLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuXG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgdG9wIHBvc2l0aW9uXG4gICAgICAgICAgICBsZXQgdG9wID0gZXZlbnQueSArIHRoaXMueUdhcDtcbiAgICAgICAgICAgIGlmICh0b3AgKyBjbS5vZmZzZXRIZWlnaHQgKyAxMCA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgdG9wID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCAtIGNtLm9mZnNldEhlaWdodCAtIHRoaXMub3ZlcmZsb3dTcGFjZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGxlZnQgcG9zaXRpb25cbiAgICAgICAgICAgIGxldCBsZWZ0ID0gZXZlbnQueCArIHRoaXMueEdhcDtcbiAgICAgICAgICAgIGlmIChsZWZ0ICsgY20ub2Zmc2V0V2lkdGggKyAxMCA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgICBsZWZ0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC0gY20ub2Zmc2V0V2lkdGggLSB0aGlzLm92ZXJmbG93U3BhY2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNldCBwb3NpdGlvblxuICAgICAgICAgICAgY20uc3R5bGUudG9wID0gdG9wICsgJ3B4JztcbiAgICAgICAgICAgIGNtLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JztcblxuICAgICAgICAgICAgLy8gU2hvd1xuICAgICAgICAgICAgY20uc3R5bGUub3BhY2l0eSA9ICcxLjAnO1xuICAgICAgICAgICAgY20uc3R5bGVbJ3BvaW50ZXItZXZlbnRzJ10gPSAnYXV0byc7XG4gICAgICAgICAgfSwgMSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2xvc2UgY29udGV4dCBtZW51XG4gICAgICB0aGlzLmNsaWNrZWRFbGVtZW50ID0gbnVsbDtcbiAgICAgIGlmICh0aGlzLnByZXZpb3VzRGlzcGxheVN0YXR1cykge1xuICAgICAgICBjbS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5wcmV2aW91c0Rpc3BsYXlTdGF0dXM7XG4gICAgICB9XG4gICAgICBjbS5zdHlsZS5vcGFjaXR5ID0gJzAuMDEnO1xuICAgICAgY20uc3R5bGVbJ3BvaW50ZXItZXZlbnRzJ10gPSAnbm9uZSc7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Directive, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Directive for lazy loading images
|
|
5
|
+
*/
|
|
6
|
+
export class LazyLoadDirective {
|
|
7
|
+
constructor(el) {
|
|
8
|
+
this.el = el;
|
|
9
|
+
this.srcAttr = null;
|
|
10
|
+
}
|
|
11
|
+
ngAfterViewInit() {
|
|
12
|
+
this.canLazyLoad() ? this.lazyLoadImage() : this.loadImage();
|
|
13
|
+
}
|
|
14
|
+
canLazyLoad() {
|
|
15
|
+
return window && 'IntersectionObserver' in window;
|
|
16
|
+
}
|
|
17
|
+
lazyLoadImage() {
|
|
18
|
+
const obs = new IntersectionObserver((entries) => {
|
|
19
|
+
entries.forEach(({ isIntersecting }) => {
|
|
20
|
+
if (isIntersecting) {
|
|
21
|
+
this.loadImage();
|
|
22
|
+
obs.unobserve(this.el.nativeElement);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
obs.observe(this.el.nativeElement);
|
|
27
|
+
}
|
|
28
|
+
loadImage() {
|
|
29
|
+
this.srcAttr = this.src;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
LazyLoadDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LazyLoadDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
33
|
+
LazyLoadDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: LazyLoadDirective, selector: "img[ltLazyLoad]", inputs: { src: "src" }, host: { properties: { "attr.src": "this.srcAttr" } }, ngImport: i0 });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LazyLoadDirective, decorators: [{
|
|
35
|
+
type: Directive,
|
|
36
|
+
args: [{
|
|
37
|
+
selector: 'img[ltLazyLoad]',
|
|
38
|
+
}]
|
|
39
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { srcAttr: [{
|
|
40
|
+
type: HostBinding,
|
|
41
|
+
args: ['attr.src']
|
|
42
|
+
}], src: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}] } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvbGF6eS1sb2FkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6Rjs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFIVCxZQUFPLEdBQUcsSUFBSSxDQUFDO0lBR0gsQ0FBQztJQUV0QyxlQUFlO1FBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLE1BQU0sSUFBSSxzQkFBc0IsSUFBSSxNQUFNLENBQUM7SUFDcEQsQ0FBQztJQUVPLGFBQWE7UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQy9DLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLGNBQWMsRUFBQyxFQUFFLEVBQUU7Z0JBQ25DLElBQUksY0FBYyxFQUFFO29CQUNsQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2pCLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDdEM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzFCLENBQUM7OzhHQTVCVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCO2lHQUUwQixPQUFPO3NCQUEvQixXQUFXO3VCQUFDLFVBQVU7Z0JBQ2QsR0FBRztzQkFBWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgZm9yIGxhenkgbG9hZGluZyBpbWFnZXNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW1nW2x0TGF6eUxvYWRdJyxcbn0pXG5leHBvcnQgY2xhc3MgTGF6eUxvYWREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnNyYycpIHNyY0F0dHIgPSBudWxsO1xuICBASW5wdXQoKSBzcmM6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNhbkxhenlMb2FkKCkgPyB0aGlzLmxhenlMb2FkSW1hZ2UoKSA6IHRoaXMubG9hZEltYWdlKCk7XG4gIH1cblxuICBwcml2YXRlIGNhbkxhenlMb2FkKCkge1xuICAgIHJldHVybiB3aW5kb3cgJiYgJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3c7XG4gIH1cblxuICBwcml2YXRlIGxhenlMb2FkSW1hZ2UoKSB7XG4gICAgY29uc3Qgb2JzID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBlbnRyaWVzLmZvckVhY2goKHtpc0ludGVyc2VjdGluZ30pID0+IHtcbiAgICAgICAgaWYgKGlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgdGhpcy5sb2FkSW1hZ2UoKTtcbiAgICAgICAgICBvYnMudW5vYnNlcnZlKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIG9icy5vYnNlcnZlKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRJbWFnZSgpIHtcbiAgICB0aGlzLnNyY0F0dHIgPSB0aGlzLnNyYztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Directive, HostListener, Inject, Input, PLATFORM_ID } from '@angular/core';
|
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../services/image.service";
|
|
5
|
+
/**
|
|
6
|
+
* Set same height (maximum) to different elements
|
|
7
|
+
*/
|
|
8
|
+
export class MatchHeightDirective {
|
|
9
|
+
constructor(el, imageService, platformId) {
|
|
10
|
+
this.el = el;
|
|
11
|
+
this.imageService = imageService;
|
|
12
|
+
// Replace lazy loading images with immediate loading images
|
|
13
|
+
this.loadImages = true;
|
|
14
|
+
this.isBrowser = isPlatformBrowser(platformId);
|
|
15
|
+
}
|
|
16
|
+
onResize() {
|
|
17
|
+
this.matchHeight(this.el.nativeElement, this.ltMatchHeight);
|
|
18
|
+
}
|
|
19
|
+
ngOnInit() {
|
|
20
|
+
this.matchHeight(this.el.nativeElement, this.ltMatchHeight);
|
|
21
|
+
}
|
|
22
|
+
async matchHeight(parent, target) {
|
|
23
|
+
if (!parent) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
let classNames;
|
|
27
|
+
if (!Array.isArray(target)) {
|
|
28
|
+
classNames = [target];
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
classNames = target;
|
|
32
|
+
}
|
|
33
|
+
for (const className of classNames) {
|
|
34
|
+
// find all child structureElements with the selected class name
|
|
35
|
+
const children = parent.getElementsByClassName(className);
|
|
36
|
+
if (!children || children.length < 2) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
// Load images of children
|
|
40
|
+
if (this.loadImages) {
|
|
41
|
+
await this.imageService.preLoadImages({ elements: children });
|
|
42
|
+
}
|
|
43
|
+
// reset all children height
|
|
44
|
+
Array.from(children).forEach((element) => {
|
|
45
|
+
element.style.height = 'initial';
|
|
46
|
+
});
|
|
47
|
+
// get all the child structureElements heights
|
|
48
|
+
const itemHeights = Array.from(children).map((element) => {
|
|
49
|
+
if (element.getBoundingClientRect) {
|
|
50
|
+
return element.getBoundingClientRect().height;
|
|
51
|
+
}
|
|
52
|
+
return 0;
|
|
53
|
+
});
|
|
54
|
+
// find out the tallest one
|
|
55
|
+
const maxHeight = itemHeights.reduce((prev, curr) => (curr > prev ? curr : prev), 0);
|
|
56
|
+
// update the child structureElements height to the tallest one
|
|
57
|
+
Array.from(children).forEach((element) => (element.style.height = `${maxHeight}px`));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
MatchHeightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MatchHeightDirective, deps: [{ token: i0.ElementRef }, { token: i1.ImageService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive });
|
|
62
|
+
MatchHeightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: MatchHeightDirective, selector: "[ltMatchHeight]", inputs: { ltMatchHeight: "ltMatchHeight", loadImages: "loadImages" }, host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0 });
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MatchHeightDirective, decorators: [{
|
|
64
|
+
type: Directive,
|
|
65
|
+
args: [{
|
|
66
|
+
selector: '[ltMatchHeight]',
|
|
67
|
+
}]
|
|
68
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ImageService }, { type: undefined, decorators: [{
|
|
69
|
+
type: Inject,
|
|
70
|
+
args: [PLATFORM_ID]
|
|
71
|
+
}] }]; }, propDecorators: { ltMatchHeight: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], loadImages: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], onResize: [{
|
|
76
|
+
type: HostListener,
|
|
77
|
+
args: ['window:resize']
|
|
78
|
+
}] } });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtaGVpZ2h0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvbWF0Y2gtaGVpZ2h0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRXBEOztHQUVHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQVkvQixZQUFzQixFQUFjLEVBQVksWUFBMEIsRUFBdUIsVUFBa0I7UUFBN0YsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFZLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUDFFLDREQUE0RDtRQUU1RCxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBTWhCLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQW1CLEVBQUUsTUFBeUI7UUFDOUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU87U0FDUjtRQUVELElBQUksVUFBVSxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNMLFVBQVUsR0FBRyxNQUFNLENBQUM7U0FDckI7UUFFRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxnRUFBZ0U7WUFDaEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRTFELElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3BDLFNBQVM7YUFDVjtZQUVELDBCQUEwQjtZQUMxQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ25CLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQzthQUMvRDtZQUVELDRCQUE0QjtZQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQW9CLEVBQUUsRUFBRTtnQkFDcEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1lBRUgsOENBQThDO1lBQzlDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3ZELElBQUksT0FBTyxDQUFDLHFCQUFxQixFQUFFO29CQUNqQyxPQUFPLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztpQkFDL0M7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztZQUVILDJCQUEyQjtZQUMzQixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXJGLCtEQUErRDtZQUMvRCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQW9CLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDbkc7SUFDSCxDQUFDOztpSEFyRVUsb0JBQW9CLHdFQVlxRCxXQUFXO3FHQVpwRixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1Qjs7MEJBYThFLE1BQU07MkJBQUMsV0FBVzs0Q0FUL0YsYUFBYTtzQkFEWixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFXTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbWFnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBTZXQgc2FtZSBoZWlnaHQgKG1heGltdW0pIHRvIGRpZmZlcmVudCBlbGVtZW50c1xuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbHRNYXRjaEhlaWdodF0nLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRjaEhlaWdodERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIGNsYXNzIG5hbWUgdG8gbWF0Y2ggaGVpZ2h0XG4gIEBJbnB1dCgpXG4gIGx0TWF0Y2hIZWlnaHQ6IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIC8vIFJlcGxhY2UgbGF6eSBsb2FkaW5nIGltYWdlcyB3aXRoIGltbWVkaWF0ZSBsb2FkaW5nIGltYWdlc1xuICBASW5wdXQoKVxuICBsb2FkSW1hZ2VzID0gdHJ1ZTtcblxuICAvLyBXZXRoZXIgY3VycmVudCBwbGF0Zm9ybSBpcyBhIGJyb3dzZXJcbiAgcmVhZG9ubHkgaXNCcm93c2VyOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbDogRWxlbWVudFJlZiwgcHJvdGVjdGVkIGltYWdlU2VydmljZTogSW1hZ2VTZXJ2aWNlLCBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIG9uUmVzaXplKCkge1xuICAgIHRoaXMubWF0Y2hIZWlnaHQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmx0TWF0Y2hIZWlnaHQpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tYXRjaEhlaWdodCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMubHRNYXRjaEhlaWdodCk7XG4gIH1cblxuICBhc3luYyBtYXRjaEhlaWdodChwYXJlbnQ6IEhUTUxFbGVtZW50LCB0YXJnZXQ6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY2xhc3NOYW1lcztcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgY2xhc3NOYW1lcyA9IFt0YXJnZXRdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGFzc05hbWVzID0gdGFyZ2V0O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2xhc3NOYW1lIG9mIGNsYXNzTmFtZXMpIHtcbiAgICAgIC8vIGZpbmQgYWxsIGNoaWxkIHN0cnVjdHVyZUVsZW1lbnRzIHdpdGggdGhlIHNlbGVjdGVkIGNsYXNzIG5hbWVcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lKTtcblxuICAgICAgaWYgKCFjaGlsZHJlbiB8fCBjaGlsZHJlbi5sZW5ndGggPCAyKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBMb2FkIGltYWdlcyBvZiBjaGlsZHJlblxuICAgICAgaWYgKHRoaXMubG9hZEltYWdlcykge1xuICAgICAgICBhd2FpdCB0aGlzLmltYWdlU2VydmljZS5wcmVMb2FkSW1hZ2VzKHsgZWxlbWVudHM6IGNoaWxkcmVuIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyByZXNldCBhbGwgY2hpbGRyZW4gaGVpZ2h0XG4gICAgICBBcnJheS5mcm9tKGNoaWxkcmVuKS5mb3JFYWNoKChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9ICdpbml0aWFsJztcbiAgICAgIH0pO1xuXG4gICAgICAvLyBnZXQgYWxsIHRoZSBjaGlsZCBzdHJ1Y3R1cmVFbGVtZW50cyBoZWlnaHRzXG4gICAgICBjb25zdCBpdGVtSGVpZ2h0cyA9IEFycmF5LmZyb20oY2hpbGRyZW4pLm1hcCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICAgICAgICByZXR1cm4gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9KTtcblxuICAgICAgLy8gZmluZCBvdXQgdGhlIHRhbGxlc3Qgb25lXG4gICAgICBjb25zdCBtYXhIZWlnaHQgPSBpdGVtSGVpZ2h0cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IChjdXJyID4gcHJldiA/IGN1cnIgOiBwcmV2KSwgMCk7XG5cbiAgICAgIC8vIHVwZGF0ZSB0aGUgY2hpbGQgc3RydWN0dXJlRWxlbWVudHMgaGVpZ2h0IHRvIHRoZSB0YWxsZXN0IG9uZVxuICAgICAgQXJyYXkuZnJvbShjaGlsZHJlbikuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IChlbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGApKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Reszise detection
|
|
5
|
+
* (inpsired by: https://stackblitz.com/edit/angular-resizable)
|
|
6
|
+
*/
|
|
7
|
+
export class ResizableDirective {
|
|
8
|
+
constructor(el) {
|
|
9
|
+
this.el = el;
|
|
10
|
+
this.resizableGrabWidth = 8;
|
|
11
|
+
this.resizableMinWidth = 10;
|
|
12
|
+
this.dragging = false;
|
|
13
|
+
}
|
|
14
|
+
ngOnInit() {
|
|
15
|
+
this.addListenerToDocument();
|
|
16
|
+
this.addListenerToElement();
|
|
17
|
+
}
|
|
18
|
+
mouseMoveG(evt) {
|
|
19
|
+
if (!this.dragging) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
this.newWidth(evt.clientX - this.el.nativeElement.offsetLeft);
|
|
23
|
+
evt.stopPropagation();
|
|
24
|
+
}
|
|
25
|
+
newWidth(wid) {
|
|
26
|
+
const result = Math.max(this.resizableMinWidth, wid);
|
|
27
|
+
this.el.nativeElement.style.width = result + 'px';
|
|
28
|
+
}
|
|
29
|
+
mouseDown(evt) {
|
|
30
|
+
if (this.inDragRegion(evt)) {
|
|
31
|
+
this.dragging = true;
|
|
32
|
+
this.preventGlobalMouseEvents();
|
|
33
|
+
evt.stopPropagation();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
restoreGlobalMouseEvents() {
|
|
37
|
+
document.body.style['pointer-events'] = 'auto';
|
|
38
|
+
}
|
|
39
|
+
mouseUpG(evt) {
|
|
40
|
+
if (!this.dragging) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this.restoreGlobalMouseEvents();
|
|
44
|
+
this.dragging = false;
|
|
45
|
+
evt.stopPropagation();
|
|
46
|
+
}
|
|
47
|
+
mouseMove(evt) {
|
|
48
|
+
if (this.inDragRegion(evt) || this.dragging) {
|
|
49
|
+
this.el.nativeElement.style.cursor = 'col-resize';
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.el.nativeElement.style.cursor = 'default';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
preventGlobalMouseEvents() {
|
|
56
|
+
document.body.style['pointer-events'] = 'none';
|
|
57
|
+
}
|
|
58
|
+
inDragRegion(evt) {
|
|
59
|
+
return this.el.nativeElement.clientWidth - evt.clientX + this.el.nativeElement.offsetLeft < this.resizableGrabWidth;
|
|
60
|
+
}
|
|
61
|
+
addListenerToDocument() {
|
|
62
|
+
document.addEventListener('mousemove', (e) => {
|
|
63
|
+
this.mouseMoveG(e);
|
|
64
|
+
}, true);
|
|
65
|
+
document.addEventListener('mouseup', (e) => {
|
|
66
|
+
this.mouseUpG(e);
|
|
67
|
+
}, true);
|
|
68
|
+
}
|
|
69
|
+
addListenerToElement() {
|
|
70
|
+
this.el.nativeElement.addEventListener('mousedown', (e) => {
|
|
71
|
+
this.mouseDown(e);
|
|
72
|
+
}, true);
|
|
73
|
+
this.el.nativeElement.addEventListener('mousemove', (e) => {
|
|
74
|
+
this.mouseMove(e);
|
|
75
|
+
}, true);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
ResizableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ResizableDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
79
|
+
ResizableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: ResizableDirective, selector: "[ltResizable]", inputs: { resizableGrabWidth: "resizableGrabWidth", resizableMinWidth: "resizableMinWidth" }, ngImport: i0 });
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ResizableDirective, decorators: [{
|
|
81
|
+
type: Directive,
|
|
82
|
+
args: [{
|
|
83
|
+
selector: '[ltResizable]',
|
|
84
|
+
}]
|
|
85
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { resizableGrabWidth: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], resizableMinWidth: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}] } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvcmVzaXphYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFFckU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUx6Qix1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDdkIsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBRWhDLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFFb0IsQ0FBQztJQUV0QyxRQUFRO1FBQ04sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFHO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQUc7UUFDVixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFHO1FBQ1gsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFVO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQUc7UUFDWCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMzQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQztTQUNuRDthQUFNO1lBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ2pELENBQUM7SUFFRCxZQUFZLENBQUMsR0FBRztRQUNkLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUN0SCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDdkIsV0FBVyxFQUNYLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztRQUVGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDdkIsU0FBUyxFQUNULENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ3BDLFdBQVcsRUFDWCxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixDQUFDLEVBQ0QsSUFBSSxDQUNMLENBQUM7UUFFRixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDcEMsV0FBVyxFQUNYLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7OytHQWpHVSxrQkFBa0I7bUdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjtpR0FFVSxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogUmVzemlzZSBkZXRlY3Rpb25cbiAqIChpbnBzaXJlZCBieTogaHR0cHM6Ly9zdGFja2JsaXR6LmNvbS9lZGl0L2FuZ3VsYXItcmVzaXphYmxlKVxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbHRSZXNpemFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcmVzaXphYmxlR3JhYldpZHRoID0gODtcbiAgQElucHV0KCkgcmVzaXphYmxlTWluV2lkdGggPSAxMDtcblxuICBkcmFnZ2luZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRMaXN0ZW5lclRvRG9jdW1lbnQoKTtcbiAgICB0aGlzLmFkZExpc3RlbmVyVG9FbGVtZW50KCk7XG4gIH1cblxuICBtb3VzZU1vdmVHKGV2dCkge1xuICAgIGlmICghdGhpcy5kcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm5ld1dpZHRoKGV2dC5jbGllbnRYIC0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQpO1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG5ld1dpZHRoKHdpZCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IE1hdGgubWF4KHRoaXMucmVzaXphYmxlTWluV2lkdGgsIHdpZCk7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gcmVzdWx0ICsgJ3B4JztcbiAgfVxuXG4gIG1vdXNlRG93bihldnQpIHtcbiAgICBpZiAodGhpcy5pbkRyYWdSZWdpb24oZXZ0KSkge1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICB0aGlzLnByZXZlbnRHbG9iYWxNb3VzZUV2ZW50cygpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHJlc3RvcmVHbG9iYWxNb3VzZUV2ZW50cygpIHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlWydwb2ludGVyLWV2ZW50cyddID0gJ2F1dG8nO1xuICB9XG5cbiAgbW91c2VVcEcoZXZ0OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5kcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJlc3RvcmVHbG9iYWxNb3VzZUV2ZW50cygpO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBtb3VzZU1vdmUoZXZ0KSB7XG4gICAgaWYgKHRoaXMuaW5EcmFnUmVnaW9uKGV2dCkgfHwgdGhpcy5kcmFnZ2luZykge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdjb2wtcmVzaXplJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JztcbiAgICB9XG4gIH1cblxuICBwcmV2ZW50R2xvYmFsTW91c2VFdmVudHMoKSB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZVsncG9pbnRlci1ldmVudHMnXSA9ICdub25lJztcbiAgfVxuXG4gIGluRHJhZ1JlZ2lvbihldnQpIHtcbiAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoIC0gZXZ0LmNsaWVudFggKyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCA8IHRoaXMucmVzaXphYmxlR3JhYldpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRMaXN0ZW5lclRvRG9jdW1lbnQoKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdtb3VzZW1vdmUnLFxuICAgICAgKGUpID0+IHtcbiAgICAgICAgdGhpcy5tb3VzZU1vdmVHKGUpO1xuICAgICAgfSxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdtb3VzZXVwJyxcbiAgICAgIChlKSA9PiB7XG4gICAgICAgIHRoaXMubW91c2VVcEcoZSk7XG4gICAgICB9LFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZExpc3RlbmVyVG9FbGVtZW50KCkge1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ21vdXNlZG93bicsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICB0aGlzLm1vdXNlRG93bihlKTtcbiAgICAgIH0sXG4gICAgICB0cnVlXG4gICAgKTtcblxuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ21vdXNlbW92ZScsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICB0aGlzLm1vdXNlTW92ZShlKTtcbiAgICAgIH0sXG4gICAgICB0cnVlXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/{esm2015/lib/base/enums/sort-order.enum.js → esm2020/lib/base/enums/sort-order.enum.mjs}
RENAMED
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { BASE_MODULE_CONFIG } from '../interfaces/base-module-config.interface';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
import * as i2 from "../services/auth.service";
|
|
7
|
+
/**
|
|
8
|
+
* Authentication guard
|
|
9
|
+
*/
|
|
10
|
+
export class AuthGuard {
|
|
11
|
+
/**
|
|
12
|
+
* Imports
|
|
13
|
+
*/
|
|
14
|
+
constructor(router, authService, moduleConfig) {
|
|
15
|
+
this.router = router;
|
|
16
|
+
this.authService = authService;
|
|
17
|
+
this.moduleConfig = moduleConfig;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Can activate main route
|
|
21
|
+
*/
|
|
22
|
+
canActivate(route, state) {
|
|
23
|
+
return new Observable((subscriber) => {
|
|
24
|
+
let allowed = false;
|
|
25
|
+
const opposite = route?.data?.opposite ? route?.data?.opposite : false;
|
|
26
|
+
const redirectUrl = route?.data?.redirectUrl ? route.data.redirectUrl : this.moduleConfig.authGuardRedirectUrl;
|
|
27
|
+
if (this.authService.token && !opposite) {
|
|
28
|
+
if (route.data.allowedRole) {
|
|
29
|
+
const user = this.authService.currentUser;
|
|
30
|
+
allowed = user?.roles?.includes(route.data.allowedRole);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
allowed = true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else if (!this.authService.token && opposite) {
|
|
37
|
+
allowed = true;
|
|
38
|
+
}
|
|
39
|
+
if (!allowed) {
|
|
40
|
+
this.router.navigate([redirectUrl]);
|
|
41
|
+
}
|
|
42
|
+
subscriber.next(allowed);
|
|
43
|
+
subscriber.complete();
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Can activate child route
|
|
48
|
+
*/
|
|
49
|
+
canActivateChild(route, state) {
|
|
50
|
+
return this.canActivate(route, state);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: AuthGuard, deps: [{ token: i1.Router }, { token: i2.AuthService }, { token: BASE_MODULE_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
54
|
+
AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: AuthGuard });
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: AuthGuard, decorators: [{
|
|
56
|
+
type: Injectable
|
|
57
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AuthService }, { type: undefined, decorators: [{
|
|
58
|
+
type: Inject,
|
|
59
|
+
args: [BASE_MODULE_CONFIG]
|
|
60
|
+
}] }]; } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2d1YXJkcy9hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFvQixNQUFNLDRDQUE0QyxDQUFDOzs7O0FBRWxHOztHQUVHO0FBRUgsTUFBTSxPQUFPLFNBQVM7SUFFcEI7O09BRUc7SUFDSCxZQUNVLE1BQWMsRUFDZCxXQUF3QixFQUNJLFlBQThCO1FBRjFELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNJLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtJQUNqRSxDQUFDO0lBRUo7O09BRUc7SUFDSCxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3ZFLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztZQUUvRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN2QyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUMxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztvQkFDMUMsT0FBTyxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ3pEO3FCQUFNO29CQUNMLE9BQU8sR0FBRyxJQUFJLENBQUM7aUJBQ2hCO2FBQ0Y7aUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRTtnQkFDOUMsT0FBTyxHQUFHLElBQUksQ0FBQzthQUNoQjtZQUVELElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2FBQ3JDO1lBRUQsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7c0dBN0NVLFNBQVMsbUVBUVYsa0JBQWtCOzBHQVJqQixTQUFTOzJGQUFULFNBQVM7a0JBRHJCLFVBQVU7OzBCQVNOLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEJBU0VfTU9EVUxFX0NPTkZJRywgQmFzZU1vZHVsZUNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvYmFzZS1tb2R1bGUtY29uZmlnLmludGVyZmFjZSc7XG5cbi8qKlxuICogQXV0aGVudGljYXRpb24gZ3VhcmRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkIHtcblxuICAvKipcbiAgICogSW1wb3J0c1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBASW5qZWN0KEJBU0VfTU9EVUxFX0NPTkZJRykgcHJpdmF0ZSBtb2R1bGVDb25maWc6IEJhc2VNb2R1bGVDb25maWdcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDYW4gYWN0aXZhdGUgbWFpbiByb3V0ZVxuICAgKi9cbiAgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBsZXQgYWxsb3dlZCA9IGZhbHNlO1xuICAgICAgY29uc3Qgb3Bwb3NpdGUgPSByb3V0ZT8uZGF0YT8ub3Bwb3NpdGUgPyByb3V0ZT8uZGF0YT8ub3Bwb3NpdGUgOiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlZGlyZWN0VXJsID0gcm91dGU/LmRhdGE/LnJlZGlyZWN0VXJsID8gcm91dGUuZGF0YS5yZWRpcmVjdFVybCA6IHRoaXMubW9kdWxlQ29uZmlnLmF1dGhHdWFyZFJlZGlyZWN0VXJsO1xuXG4gICAgICBpZiAodGhpcy5hdXRoU2VydmljZS50b2tlbiAmJiAhb3Bwb3NpdGUpIHtcbiAgICAgICAgaWYgKHJvdXRlLmRhdGEuYWxsb3dlZFJvbGUpIHtcbiAgICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoU2VydmljZS5jdXJyZW50VXNlcjtcbiAgICAgICAgICBhbGxvd2VkID0gdXNlcj8ucm9sZXM/LmluY2x1ZGVzKHJvdXRlLmRhdGEuYWxsb3dlZFJvbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFsbG93ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmF1dGhTZXJ2aWNlLnRva2VuICYmIG9wcG9zaXRlKSB7XG4gICAgICAgIGFsbG93ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWFsbG93ZWQpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JlZGlyZWN0VXJsXSk7XG4gICAgICB9XG5cbiAgICAgIHN1YnNjcmliZXIubmV4dChhbGxvd2VkKTtcbiAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW4gYWN0aXZhdGUgY2hpbGQgcm91dGVcbiAgICovXG4gIGNhbkFjdGl2YXRlQ2hpbGQocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUocm91dGUsIHN0YXRlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Guard to check if a component can be deactivated
|
|
5
|
+
*/
|
|
6
|
+
export class CanDeactivateGuard {
|
|
7
|
+
canDeactivate(component) {
|
|
8
|
+
return component.canDeactivate ? component.canDeactivate() : true;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
CanDeactivateGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CanDeactivateGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12
|
+
CanDeactivateGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CanDeactivateGuard });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CanDeactivateGuard, decorators: [{
|
|
14
|
+
type: Injectable
|
|
15
|
+
}] });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWRlYWN0aXZhdGUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9ndWFyZHMvY2FuLWRlYWN0aXZhdGUuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLGFBQWEsQ0FBQyxTQUFrQztRQUM5QyxPQUFPLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BFLENBQUM7OytHQUhVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5EZWFjdGl2YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElDYW5Db21wb25lbnREZWFjdGl2YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jYW4tY29tcG9uZW50LWRlYWN0aXZhdGUuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBHdWFyZCB0byBjaGVjayBpZiBhIGNvbXBvbmVudCBjYW4gYmUgZGVhY3RpdmF0ZWRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhbkRlYWN0aXZhdGVHdWFyZCBpbXBsZW1lbnRzIENhbkRlYWN0aXZhdGU8SUNhbkNvbXBvbmVudERlYWN0aXZhdGU+IHtcbiAgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IElDYW5Db21wb25lbnREZWFjdGl2YXRlKSB7XG4gICAgcmV0dXJuIGNvbXBvbmVudC5jYW5EZWFjdGl2YXRlID8gY29tcG9uZW50LmNhbkRlYWN0aXZhdGUoKSA6IHRydWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/router";
|
|
5
|
+
import * as i2 from "../services/auth.service";
|
|
6
|
+
/**
|
|
7
|
+
* Logout guard
|
|
8
|
+
*/
|
|
9
|
+
export class LogoutGuard {
|
|
10
|
+
constructor(router, authService) {
|
|
11
|
+
this.router = router;
|
|
12
|
+
this.authService = authService;
|
|
13
|
+
}
|
|
14
|
+
canActivate(route, state) {
|
|
15
|
+
return new Observable((subscriber) => {
|
|
16
|
+
if (this.authService.token) {
|
|
17
|
+
this.authService.logout();
|
|
18
|
+
}
|
|
19
|
+
subscriber.next(true);
|
|
20
|
+
subscriber.complete();
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
canActivateChild(route, state) {
|
|
24
|
+
return this.canActivate(route, state);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
LogoutGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LogoutGuard, deps: [{ token: i1.Router }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
+
LogoutGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LogoutGuard });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LogoutGuard, decorators: [{
|
|
30
|
+
type: Injectable
|
|
31
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AuthService }]; } });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb3V0Lmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvZ3VhcmRzL2xvZ291dC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFHbEM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUFvQixNQUFjLEVBQVUsV0FBd0I7UUFBaEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUV4RSxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUMzQjtZQUVELFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDeEUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzt3R0FoQlUsV0FBVzs0R0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcblxuLyoqXG4gKiBMb2dvdXQgZ3VhcmRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ291dEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkge31cblxuICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLnRva2VuKSB7XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nb3V0KCk7XG4gICAgICB9XG5cbiAgICAgIHN1YnNjcmliZXIubmV4dCh0cnVlKTtcbiAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbkFjdGl2YXRlQ2hpbGQocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUocm91dGUsIHN0YXRlKTtcbiAgfVxufVxuIl19
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Truncate string with ellipses
|
|
5
|
+
*/
|
|
6
|
+
export class EllipsesPipe {
|
|
7
|
+
transform(value, limit) {
|
|
8
|
+
if (!value) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return value.length > limit ? value.substring(0, limit) + '...' : value;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
EllipsesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: EllipsesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
15
|
+
EllipsesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: EllipsesPipe, name: "ltEllipses" });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: EllipsesPipe, decorators: [{
|
|
17
|
+
type: Pipe,
|
|
18
|
+
args: [{
|
|
19
|
+
name: 'ltEllipses',
|
|
20
|
+
}]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL3BpcGVzL2VsbGlwc2VzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBRXBEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFlBQVk7SUFDdkIsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDMUUsQ0FBQzs7eUdBUFUsWUFBWTt1R0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFlBQVk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRydW5jYXRlIHN0cmluZyB3aXRoIGVsbGlwc2VzXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ2x0RWxsaXBzZXMnLFxufSlcbmV4cG9ydCBjbGFzcyBFbGxpcHNlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGxpbWl0OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiBsaW1pdCA/IHZhbHVlLnN1YnN0cmluZygwLCBsaW1pdCkgKyAnLi4uJyA6IHZhbHVlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/platform-browser";
|
|
4
|
+
/**
|
|
5
|
+
* Declarate html as safe
|
|
6
|
+
*/
|
|
7
|
+
export class SafeHtmlPipe {
|
|
8
|
+
constructor(sanitized) {
|
|
9
|
+
this.sanitized = sanitized;
|
|
10
|
+
}
|
|
11
|
+
transform(value) {
|
|
12
|
+
return this.sanitized.bypassSecurityTrustHtml(value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
SafeHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
16
|
+
SafeHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: SafeHtmlPipe, name: "ltSafeHtml" });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: SafeHtmlPipe, decorators: [{
|
|
18
|
+
type: Pipe,
|
|
19
|
+
args: [{ name: 'ltSafeHtml' }]
|
|
20
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9waXBlcy9zYWZlLWh0bWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBRXBEOztHQUVHO0FBRUgsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFHLENBQUM7SUFFL0MsU0FBUyxDQUFDLEtBQUs7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7eUdBTFUsWUFBWTt1R0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBRHhCLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogRGVjbGFyYXRlIGh0bWwgYXMgc2FmZVxuICovXG5AUGlwZSh7bmFtZTogJ2x0U2FmZUh0bWwnfSlcbmV4cG9ydCBjbGFzcyBTYWZlSHRtbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZWQ6IERvbVNhbml0aXplcikge31cblxuICB0cmFuc2Zvcm0odmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZWQuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodmFsdWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -53,8 +53,9 @@ export * from './services/loader.service';
|
|
|
53
53
|
export * from './services/scroll.service';
|
|
54
54
|
export * from './services/seo.service';
|
|
55
55
|
export * from './services/storage.service';
|
|
56
|
+
export * from './services/ws.service';
|
|
56
57
|
// Types
|
|
57
58
|
export * from './types/storage.type';
|
|
58
59
|
// Validators
|
|
59
60
|
export * from './validators/must-match.validator';
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxTQUFTO0FBQ1QsY0FBYyxlQUFlLENBQUM7QUFFOUIsVUFBVTtBQUNWLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLGFBQWE7QUFDYixjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELFlBQVk7QUFDWixjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELFNBQVM7QUFDVCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxRQUFRO0FBQ1IsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxhQUFhO0FBQ2IsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsa0NBQWtDLENBQUM7QUFFakQsUUFBUTtBQUNSLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxXQUFXO0FBQ1gsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLFFBQVE7QUFDUixjQUFjLHNCQUFzQixDQUFDO0FBRXJDLGFBQWE7QUFDYixjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFeHBvcnRzIGZvciBwdWJsaWMgQVBJXG4gKi9cblxuLy8gTW9kdWxlXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UubW9kdWxlJztcblxuLy8gQ2xhc3Nlc1xuZXhwb3J0ICogZnJvbSAnLi9jbGFzc2VzL2Jhc2ljLXVzZXIuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFzc2VzL2dyYXBocWwtZW51bS5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL2NsYXNzZXMvZ3JhcGhxbC1tZXRhLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xhc3Nlcy9ncmFwaHFsLXR5cGUuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFzc2VzL2hlbHBlci5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL2NsYXNzZXMvc3RhbmRhcmQuY2xhc3MnO1xuXG4vLyBEaXJlY3RpdmVzXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvY29udGV4dC1tZW51LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvbGF6eS1sb2FkLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvbWF0Y2gtaGVpZ2h0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvcmVzaXphYmxlLmRpcmVjdGl2ZSc7XG5cbi8vIEZhY3Rvcmllc1xuZXhwb3J0ICogZnJvbSAnLi9mYWN0b3JpZXMvYXBvbGxvLW9wdGlvbnMuZmFjdG9yeSc7XG5cbi8vIEd1YXJkc1xuZXhwb3J0ICogZnJvbSAnLi9ndWFyZHMvYXV0aC5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL2d1YXJkcy9jYW4tZGVhY3RpdmF0ZS5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL2d1YXJkcy9sb2dvdXQuZ3VhcmQnO1xuXG4vLyBFbnVtc1xuZXhwb3J0ICogZnJvbSAnLi9lbnVtcy9jb21wYXJpc29uLW9wZXJhdG9yLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9lbnVtcy9ncmFwaHFsLXJlcXVlc3QtdHlwZS5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMvbG9naWNhbC1vcGVyYXRvci5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMvc29ydC1vcmRlci5lbnVtJztcblxuLy8gSW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2Jhc2UtbW9kdWxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2Nhbi1jb21wb25lbnQtZGVhY3RpdmF0ZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2NvbWJpbmVkLWZpbHRlci1pbnB1dC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2ZpZWxkLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvZmllbGQtb2JqZWN0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWlucHV0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvZ3JhcGhxbC1vcHRpb25zLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvZ3JhcGhxbC1wbHVzLW9wdGlvbnMuaW50ZXJmYWNlbic7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvZ3JhcGhxbC10eXBlLWNvbGxlY3Rpb24uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9zaW5nbGUtZmlsdGVyLWlucHV0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvc29ydC1pbnB1dC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbmQtYXJncy5pbnRlcmZhY2UnO1xuXG4vLyBQaXBlc1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9lbGxpcHNlcy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvc2FmZS1odG1sLnBpcGUnO1xuXG4vLyBTZXJ2aWNlc1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9mdWxsc2NyZWVuLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9ncmFwaHFsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9ncmFwaHFsLW1ldGEuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2dyYXBocWwtcGx1cy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvaW1hZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2xvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvc2Nyb2xsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9zZW8uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3dzLnNlcnZpY2UnO1xuXG4vLyBUeXBlc1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9zdG9yYWdlLnR5cGUnO1xuXG4vLyBWYWxpZGF0b3JzXG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRvcnMvbXVzdC1tYXRjaC52YWxpZGF0b3InO1xuIl19
|