@colijnit/sharedcomponents 1.0.57 → 1.0.58
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/bundles/colijnit-sharedcomponents.umd.js +3555 -6
- package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
- package/colijnit-sharedcomponents.d.ts +17 -0
- package/colijnit-sharedcomponents.metadata.json +1 -1
- package/esm2015/colijnit-sharedcomponents.js +18 -1
- package/esm2015/lib/businessobject/build-images-and-documentation-result.js +2 -0
- package/esm2015/lib/businessobject/co-document-right.bo.js +3 -0
- package/esm2015/lib/businessobject/drag-drop-container-element.js +2 -0
- package/esm2015/lib/businessobject/drag-drop-container.js +7 -0
- package/esm2015/lib/components/activity-list/activity-list.component.js +130 -0
- package/esm2015/lib/components/activity-list/activity-list.module.js +24 -0
- package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.component.js +47 -0
- package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.module.js +20 -0
- package/esm2015/lib/components/file-upload/file-upload.component.js +189 -0
- package/esm2015/lib/components/file-upload/file-upload.module.js +25 -0
- package/esm2015/lib/components/file-upload-popup/file-upload-popup.component.js +397 -0
- package/esm2015/lib/components/file-upload-popup/file-upload-popup.module.js +30 -0
- package/esm2015/lib/components/files-upload/components/base-file-upload.component.js +469 -0
- package/esm2015/lib/components/files-upload/components/drag-drop-container.component.js +115 -0
- package/esm2015/lib/components/files-upload/files-upload.component.js +131 -0
- package/esm2015/lib/components/files-upload/files-upload.module.js +47 -0
- package/esm2015/lib/components/image-display/image-display.component.js +36 -0
- package/esm2015/lib/components/image-display/image-display.module.js +23 -0
- package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.component.js +89 -0
- package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.module.js +21 -0
- package/esm2015/lib/components/tile-renderer/tile-render.component.js +80 -0
- package/esm2015/lib/components/tile-renderer/tile-render.module.js +26 -0
- package/esm2015/lib/decorator/input-boolean.decorator.js +34 -0
- package/esm2015/lib/enum/document-email-report.enum.js +18 -0
- package/esm2015/lib/enum/domain-multiple-name.enum.js +13 -0
- package/esm2015/lib/enum/file-type.js +14 -0
- package/esm2015/lib/enum/files-upload-config-objects.js +3 -0
- package/esm2015/lib/enum/icon.enum.js +7 -1
- package/esm2015/lib/enum/internal-param.enum.js +38 -0
- package/esm2015/lib/enum/read-write-access-config-names.enum.js +2 -0
- package/esm2015/lib/enum/table-name.enum.js +86 -0
- package/esm2015/lib/enum/tag-category.enum.js +22 -0
- package/esm2015/lib/enum/tags-component-config-names.js +2 -0
- package/esm2015/lib/enum/tile-size-type.js +7 -0
- package/esm2015/lib/event/co-drag-event.js +2 -0
- package/esm2015/lib/event/co-drop-event.js +2 -0
- package/esm2015/lib/interface/key-value-pair.js +2 -0
- package/esm2015/lib/interface/operation-callback-simple-function.js +4 -0
- package/esm2015/lib/model/icon-svg.js +7 -1
- package/esm2015/lib/model/tag-tree-item.bo.js +16 -0
- package/esm2015/lib/model/tree-object.js +15 -0
- package/esm2015/lib/pipe/file-type-image.pipe.js +51 -0
- package/esm2015/lib/pipe/master-pipes.js +4 -2
- package/esm2015/lib/service/drag-drop.service.js +365 -0
- package/esm2015/lib/service/shared-connector.service.js +10 -1
- package/esm2015/lib/service/shared.service.js +2 -2
- package/esm2015/lib/utils/array-utils.js +202 -0
- package/esm2015/lib/utils/check-precision-and-scale-result.js +2 -0
- package/esm2015/lib/utils/check-within-stepped-bounds-result.js +2 -0
- package/esm2015/lib/utils/co-document-shared-field-logic.js +50 -0
- package/esm2015/lib/utils/enum-utils.js +128 -0
- package/esm2015/lib/utils/is-nill.function.js +5 -0
- package/esm2015/lib/utils/number-utils.js +390 -0
- package/esm2015/lib/utils/object-utils.js +278 -0
- package/esm2015/lib/utils/ref-code-utils.js +49 -0
- package/esm2015/lib/utils/string-utils.js +30 -1
- package/esm2015/public-api.js +5 -1
- package/fesm2015/colijnit-sharedcomponents.js +3528 -6
- package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
- package/lib/businessobject/build-images-and-documentation-result.d.ts +5 -0
- package/lib/businessobject/co-document-right.bo.d.ts +6 -0
- package/lib/businessobject/drag-drop-container-element.d.ts +6 -0
- package/lib/businessobject/drag-drop-container.d.ts +6 -0
- package/lib/components/access/read-write-access.scss +25 -0
- package/lib/components/access/style/_layout.scss +23 -0
- package/lib/components/access/style/_material-definition.scss +12 -0
- package/lib/components/access/style/_theme.scss +4 -0
- package/lib/components/access/style/material.scss +4 -0
- package/lib/components/activity-list/activity-list.component.d.ts +33 -0
- package/lib/components/activity-list/activity-list.module.d.ts +2 -0
- package/lib/components/activity-list/style/_layout.scss +68 -0
- package/lib/components/activity-list/style/_material-definition.scss +0 -0
- package/lib/components/activity-list/style/_theme.scss +4 -0
- package/lib/components/activity-list/style/material.scss +4 -0
- package/lib/components/app-file-dropzone/app-file-dropzone.component.d.ts +14 -0
- package/lib/components/app-file-dropzone/app-file-dropzone.module.d.ts +2 -0
- package/lib/components/app-file-dropzone/style/_layout.scss +61 -0
- package/lib/components/app-file-dropzone/style/_material-definition.scss +0 -0
- package/lib/components/app-file-dropzone/style/_theme.scss +4 -0
- package/lib/components/app-file-dropzone/style/material.scss +4 -0
- package/lib/components/file-upload/file-upload.component.d.ts +42 -0
- package/lib/components/file-upload/file-upload.module.d.ts +2 -0
- package/lib/components/file-upload/style/_layout.scss +59 -0
- package/lib/components/file-upload/style/_material-definition.scss +2 -0
- package/lib/components/file-upload/style/_theme.scss +4 -0
- package/lib/components/file-upload/style/material.scss +4 -0
- package/lib/components/file-upload-popup/file-upload-popup.component.d.ts +75 -0
- package/lib/components/file-upload-popup/file-upload-popup.module.d.ts +2 -0
- package/lib/components/file-upload-popup/style/_layout.scss +48 -0
- package/lib/components/file-upload-popup/style/_material-definition.scss +2 -0
- package/lib/components/file-upload-popup/style/_theme.scss +5 -0
- package/lib/components/file-upload-popup/style/material.scss +4 -0
- package/lib/components/files-upload/components/base-file-upload.component.d.ts +98 -0
- package/lib/components/files-upload/components/drag-drop-container.component.d.ts +34 -0
- package/lib/components/files-upload/files-upload.component.d.ts +32 -0
- package/lib/components/files-upload/files-upload.module.d.ts +2 -0
- package/lib/components/files-upload/style/_layout.scss +49 -0
- package/lib/components/files-upload/style/_material-definition.scss +0 -0
- package/lib/components/files-upload/style/_theme.scss +5 -0
- package/lib/components/files-upload/style/material.scss +4 -0
- package/lib/components/image-display/image-display.component.d.ts +14 -0
- package/lib/components/image-display/image-display.module.d.ts +2 -0
- package/lib/components/image-display/style/_layout.scss +56 -0
- package/lib/components/image-display/style/_material-definition.scss +4 -0
- package/lib/components/image-display/style/_theme.scss +6 -0
- package/lib/components/image-display/style/material.scss +3 -0
- package/lib/components/multi-property-toggler/multiple-property-toggler.component.d.ts +27 -0
- package/lib/components/multi-property-toggler/multiple-property-toggler.module.d.ts +2 -0
- package/lib/components/multi-property-toggler/style/_layout.scss +24 -0
- package/lib/components/multi-property-toggler/style/_material-definition.scss +0 -0
- package/lib/components/multi-property-toggler/style/_theme.scss +4 -0
- package/lib/components/multi-property-toggler/style/material.scss +4 -0
- package/lib/components/tile-renderer/style/_layout.scss +90 -0
- package/lib/components/tile-renderer/style/_material-definition.scss +0 -0
- package/lib/components/tile-renderer/style/_theme.scss +4 -0
- package/lib/components/tile-renderer/style/material.scss +4 -0
- package/lib/components/tile-renderer/tile-render.component.d.ts +31 -0
- package/lib/components/tile-renderer/tile-render.module.d.ts +2 -0
- package/lib/decorator/input-boolean.decorator.d.ts +8 -0
- package/lib/enum/document-email-report.enum.d.ts +15 -0
- package/lib/enum/domain-multiple-name.enum.d.ts +10 -0
- package/lib/enum/file-type.d.ts +7 -0
- package/lib/enum/files-upload-config-objects.d.ts +22 -0
- package/lib/enum/icon.enum.d.ts +6 -0
- package/lib/enum/internal-param.enum.d.ts +34 -0
- package/lib/enum/read-write-access-config-names.enum.d.ts +4 -0
- package/lib/enum/table-name.enum.d.ts +84 -0
- package/lib/enum/tag-category.enum.d.ts +19 -0
- package/lib/enum/tags-component-config-names.d.ts +4 -0
- package/lib/enum/tile-size-type.d.ts +4 -0
- package/lib/event/co-drag-event.d.ts +5 -0
- package/lib/event/co-drop-event.d.ts +8 -0
- package/lib/interface/key-value-pair.d.ts +4 -0
- package/lib/interface/operation-callback-simple-function.d.ts +4 -0
- package/lib/model/tag-tree-item.bo.d.ts +18 -0
- package/lib/model/tree-object.d.ts +8 -0
- package/lib/pipe/file-type-image.pipe.d.ts +12 -0
- package/lib/service/drag-drop.service.d.ts +86 -0
- package/lib/service/shared-connector.service.d.ts +2 -0
- package/lib/style/_variables.scss +1 -1
- package/lib/utils/array-utils.d.ts +63 -0
- package/lib/utils/check-precision-and-scale-result.d.ts +4 -0
- package/lib/utils/check-within-stepped-bounds-result.d.ts +8 -0
- package/lib/utils/co-document-shared-field-logic.d.ts +7 -0
- package/lib/utils/enum-utils.d.ts +31 -0
- package/lib/utils/is-nill.function.d.ts +1 -0
- package/lib/utils/number-utils.d.ts +125 -0
- package/lib/utils/object-utils.d.ts +40 -0
- package/lib/utils/ref-code-utils.d.ts +10 -0
- package/lib/utils/string-utils.d.ts +16 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { ElementRef, Input, Directive, Renderer2, Output, EventEmitter, HostBinding } from "@angular/core";
|
|
3
|
+
import { InputBoolean } from "../../../decorator/input-boolean.decorator";
|
|
4
|
+
import { DragDropContainer } from "../../../businessobject/drag-drop-container";
|
|
5
|
+
import { CoOrientation } from "@colijnit/corecomponents_v12";
|
|
6
|
+
import { ArrayUtils } from "@colijnit/sharedapi/build/utils/array-utils";
|
|
7
|
+
import { DragDropService } from "../../../service/drag-drop.service";
|
|
8
|
+
export class DragDropContainerComponent {
|
|
9
|
+
constructor(_elementRef, _renderer, _dragDropService) {
|
|
10
|
+
this._elementRef = _elementRef;
|
|
11
|
+
this._renderer = _renderer;
|
|
12
|
+
this._dragDropService = _dragDropService;
|
|
13
|
+
this.handleSort = false;
|
|
14
|
+
/**
|
|
15
|
+
* Class of the handle to drag operations
|
|
16
|
+
*/
|
|
17
|
+
this.dragHandle = "";
|
|
18
|
+
// Emits when the order of sortableList items changed after a drag-drop action.
|
|
19
|
+
this.sortingChange = new EventEmitter();
|
|
20
|
+
this.showClass = true;
|
|
21
|
+
this._enabled = true;
|
|
22
|
+
this._initialized = false;
|
|
23
|
+
this._dragDropService.renderer = this._renderer;
|
|
24
|
+
this._container = new DragDropContainer(_elementRef.nativeElement, CoOrientation.Vertical);
|
|
25
|
+
}
|
|
26
|
+
set enabled(value) {
|
|
27
|
+
this._enabled = value;
|
|
28
|
+
this.handleEnabledChange();
|
|
29
|
+
}
|
|
30
|
+
ngAfterViewInit() {
|
|
31
|
+
this._initialized = true;
|
|
32
|
+
this._createDragDrop();
|
|
33
|
+
if (this._initialized) {
|
|
34
|
+
this._updateEnableDisableContainer();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Cleanup...
|
|
39
|
+
*/
|
|
40
|
+
ngOnDestroy() {
|
|
41
|
+
this._removeDragDrop();
|
|
42
|
+
this._elementRef = undefined;
|
|
43
|
+
}
|
|
44
|
+
handleEnabledChange() {
|
|
45
|
+
if (!this._initialized) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (this._enabled) {
|
|
49
|
+
this._dragDropService.enableContainer(this._container);
|
|
50
|
+
this._createDragDrop();
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this._dragDropService.disableContainer(this._container);
|
|
54
|
+
this._removeDragDrop();
|
|
55
|
+
this._initialized = false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
_createDragDrop() {
|
|
59
|
+
this._dragDropService.addContainer(this._container);
|
|
60
|
+
this._dragDropService.addDragHandle(this.dragHandle);
|
|
61
|
+
if (this.handleSort) { // subscribe drop event to be able to adapt the order of dropped items
|
|
62
|
+
this._handleOrderSub = this._dragDropService.drop.subscribe((event) => {
|
|
63
|
+
this._handleOrder(event.container, event.elementIndex, event.targetIndex);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
this._initialized = true;
|
|
67
|
+
}
|
|
68
|
+
_removeDragDrop() {
|
|
69
|
+
this._dragDropService.removeContainer(this._container);
|
|
70
|
+
this._dragDropService.removeDragHandle(this.dragHandle);
|
|
71
|
+
if (this._handleOrderSub) {
|
|
72
|
+
this._handleOrderSub.unsubscribe();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
_handleOrder(container, oldIndex, newIndex) {
|
|
76
|
+
if (container !== this._container) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (newIndex === -1) {
|
|
80
|
+
newIndex = this.sortableList.length;
|
|
81
|
+
}
|
|
82
|
+
ArrayUtils.MoveElement(this.sortableList[oldIndex], newIndex, this.sortableList);
|
|
83
|
+
this.sortingChange.emit(this.sortableList);
|
|
84
|
+
}
|
|
85
|
+
_updateEnableDisableContainer() {
|
|
86
|
+
if (this._enabled) {
|
|
87
|
+
this._dragDropService.enableContainer(this._container);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this._dragDropService.disableContainer(this._container);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
DragDropContainerComponent.decorators = [
|
|
95
|
+
{ type: Directive, args: [{
|
|
96
|
+
selector: "drag-drop-container"
|
|
97
|
+
},] }
|
|
98
|
+
];
|
|
99
|
+
DragDropContainerComponent.ctorParameters = () => [
|
|
100
|
+
{ type: ElementRef },
|
|
101
|
+
{ type: Renderer2 },
|
|
102
|
+
{ type: DragDropService }
|
|
103
|
+
];
|
|
104
|
+
DragDropContainerComponent.propDecorators = {
|
|
105
|
+
sortableList: [{ type: Input }],
|
|
106
|
+
handleSort: [{ type: Input }],
|
|
107
|
+
enabled: [{ type: Input }],
|
|
108
|
+
dragHandle: [{ type: Input }],
|
|
109
|
+
sortingChange: [{ type: Output }],
|
|
110
|
+
showClass: [{ type: HostBinding, args: ["class.co-drag-drop-container",] }]
|
|
111
|
+
};
|
|
112
|
+
__decorate([
|
|
113
|
+
InputBoolean()
|
|
114
|
+
], DragDropContainerComponent.prototype, "handleSort", void 0);
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWxlcy11cGxvYWQvY29tcG9uZW50cy9kcmFnLWRyb3AtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUdULFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDeEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDOUUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUV2RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFLbkUsTUFBTSxPQUFPLDBCQUEwQjtJQW9DbkMsWUFBb0IsV0FBdUIsRUFBVSxTQUFvQixFQUFVLGdCQUFpQztRQUFoRyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBMUI3RyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBUW5DOztXQUVHO1FBRUksZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUUvQiwrRUFBK0U7UUFFeEUsa0JBQWEsR0FBd0IsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUcvRCxjQUFTLEdBQVksSUFBSSxDQUFDO1FBR3pCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFekIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFHbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBM0JELElBQ1csT0FBTyxDQUFDLEtBQWM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQXlCRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDUCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7SUFDakMsQ0FBQztJQUVNLG1CQUFtQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDMUI7YUFBTTtZQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzdCO0lBQ0wsQ0FBQztJQUVPLGVBQWU7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsc0VBQXNFO1lBQ3pGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFrQixFQUFFLEVBQUU7Z0JBQy9FLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5RSxDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVPLGVBQWU7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsU0FBNEIsRUFBRSxRQUFnQixFQUFFLFFBQWdCO1FBQ2pGLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDL0IsT0FBTztTQUNWO1FBQ0QsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDakIsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1NBQ3ZDO1FBQ0QsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyw2QkFBNkI7UUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDMUQ7YUFBTTtZQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0Q7SUFDTCxDQUFDOzs7WUE5R0osU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7YUFDaEM7OztZQXBCQyxVQUFVO1lBS1YsU0FBUztZQVdILGVBQWU7OzsyQkFVbEIsS0FBSzt5QkFHTCxLQUFLO3NCQUlMLEtBQUs7eUJBU0wsS0FBSzs0QkFJTCxNQUFNO3dCQUdOLFdBQVcsU0FBQyw4QkFBOEI7O0FBbEIzQztJQURDLFlBQVksRUFBRTs4REFDb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIFJlbmRlcmVyMixcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7SW5wdXRCb29sZWFufSBmcm9tIFwiLi4vLi4vLi4vZGVjb3JhdG9yL2lucHV0LWJvb2xlYW4uZGVjb3JhdG9yXCI7XHJcbmltcG9ydCB7RHJhZ0Ryb3BDb250YWluZXJ9IGZyb20gXCIuLi8uLi8uLi9idXNpbmVzc29iamVjdC9kcmFnLWRyb3AtY29udGFpbmVyXCI7XHJcbmltcG9ydCB7Q29PcmllbnRhdGlvbn0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcclxuaW1wb3J0IHtBcnJheVV0aWxzfSBmcm9tIFwiQGNvbGlqbml0L3NoYXJlZGFwaS9idWlsZC91dGlscy9hcnJheS11dGlsc1wiO1xyXG5pbXBvcnQge0NvRHJvcEV2ZW50fSBmcm9tIFwiLi4vLi4vLi4vZXZlbnQvY28tZHJvcC1ldmVudFwiO1xyXG5pbXBvcnQge0RyYWdEcm9wU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvZHJhZy1kcm9wLnNlcnZpY2VcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcImRyYWctZHJvcC1jb250YWluZXJcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJhZ0Ryb3BDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9kZWwgb2YgbGlzdCBjb250YWluaW5nIGRyYWdnYWJsZSBpdGVtc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNvcnRhYmxlTGlzdDogYW55W107XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIGhhbmRsZVNvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBlbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fZW5hYmxlZCA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRW5hYmxlZENoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xhc3Mgb2YgdGhlIGhhbmRsZSB0byBkcmFnIG9wZXJhdGlvbnNcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkcmFnSGFuZGxlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8vIEVtaXRzIHdoZW4gdGhlIG9yZGVyIG9mIHNvcnRhYmxlTGlzdCBpdGVtcyBjaGFuZ2VkIGFmdGVyIGEgZHJhZy1kcm9wIGFjdGlvbi5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNvcnRpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWRyYWctZHJvcC1jb250YWluZXJcIilcclxuICAgIHB1YmxpYyBzaG93Q2xhc3M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHByaXZhdGUgX2NvbnRhaW5lcjogRHJhZ0Ryb3BDb250YWluZXI7XHJcbiAgICBwcml2YXRlIF9lbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgX2hhbmRsZU9yZGVyU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIF9pbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgX2RyYWdEcm9wU2VydmljZTogRHJhZ0Ryb3BTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5fZHJhZ0Ryb3BTZXJ2aWNlLnJlbmRlcmVyID0gdGhpcy5fcmVuZGVyZXI7XHJcbiAgICAgICAgdGhpcy5fY29udGFpbmVyID0gbmV3IERyYWdEcm9wQ29udGFpbmVyKF9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIENvT3JpZW50YXRpb24uVmVydGljYWwpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlRHJhZ0Ryb3AoKTtcclxuICAgICAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlRW5hYmxlRGlzYWJsZUNvbnRhaW5lcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENsZWFudXAuLi5cclxuICAgICAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmVtb3ZlRHJhZ0Ryb3AoKTtcclxuICAgICAgICB0aGlzLl9lbGVtZW50UmVmID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVFbmFibGVkQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fZW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9kcmFnRHJvcFNlcnZpY2UuZW5hYmxlQ29udGFpbmVyKHRoaXMuX2NvbnRhaW5lcik7XHJcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURyYWdEcm9wKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fZHJhZ0Ryb3BTZXJ2aWNlLmRpc2FibGVDb250YWluZXIodGhpcy5fY29udGFpbmVyKTtcclxuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlRHJhZ0Ryb3AoKTtcclxuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY3JlYXRlRHJhZ0Ryb3AoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZHJhZ0Ryb3BTZXJ2aWNlLmFkZENvbnRhaW5lcih0aGlzLl9jb250YWluZXIpO1xyXG4gICAgICAgIHRoaXMuX2RyYWdEcm9wU2VydmljZS5hZGREcmFnSGFuZGxlKHRoaXMuZHJhZ0hhbmRsZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlU29ydCkgeyAvLyBzdWJzY3JpYmUgZHJvcCBldmVudCB0byBiZSBhYmxlIHRvIGFkYXB0IHRoZSBvcmRlciBvZiBkcm9wcGVkIGl0ZW1zXHJcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZU9yZGVyU3ViID0gdGhpcy5fZHJhZ0Ryb3BTZXJ2aWNlLmRyb3Auc3Vic2NyaWJlKChldmVudDogQ29Ecm9wRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZU9yZGVyKGV2ZW50LmNvbnRhaW5lciwgZXZlbnQuZWxlbWVudEluZGV4LCBldmVudC50YXJnZXRJbmRleCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfcmVtb3ZlRHJhZ0Ryb3AoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZHJhZ0Ryb3BTZXJ2aWNlLnJlbW92ZUNvbnRhaW5lcih0aGlzLl9jb250YWluZXIpO1xyXG4gICAgICAgIHRoaXMuX2RyYWdEcm9wU2VydmljZS5yZW1vdmVEcmFnSGFuZGxlKHRoaXMuZHJhZ0hhbmRsZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2hhbmRsZU9yZGVyU3ViKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZU9yZGVyU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2hhbmRsZU9yZGVyKGNvbnRhaW5lcjogRHJhZ0Ryb3BDb250YWluZXIsIG9sZEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoY29udGFpbmVyICE9PSB0aGlzLl9jb250YWluZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobmV3SW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld0luZGV4ID0gdGhpcy5zb3J0YWJsZUxpc3QubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBBcnJheVV0aWxzLk1vdmVFbGVtZW50KHRoaXMuc29ydGFibGVMaXN0W29sZEluZGV4XSwgbmV3SW5kZXgsIHRoaXMuc29ydGFibGVMaXN0KTtcclxuICAgICAgICB0aGlzLnNvcnRpbmdDaGFuZ2UuZW1pdCh0aGlzLnNvcnRhYmxlTGlzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfdXBkYXRlRW5hYmxlRGlzYWJsZUNvbnRhaW5lcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fZW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9kcmFnRHJvcFNlcnZpY2UuZW5hYmxlQ29udGFpbmVyKHRoaXMuX2NvbnRhaW5lcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fZHJhZ0Ryb3BTZXJ2aWNlLmRpc2FibGVDb250YWluZXIodGhpcy5fY29udGFpbmVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import { Component, ComponentFactoryResolver, ContentChild, EventEmitter, forwardRef, HostBinding, Input, Output, ViewChild, ViewContainerRef, ViewEncapsulation } from "@angular/core";
|
|
3
|
+
import { BaseFileUploadComponent } from "./components/base-file-upload.component";
|
|
4
|
+
import { SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME } from "@colijnit/corecomponents_v12";
|
|
5
|
+
import { DictionaryService } from "../../service/dictionary.service";
|
|
6
|
+
import { InputBoolean } from "../../decorator/input-boolean.decorator";
|
|
7
|
+
// A component that lets the user make a list of files from its device. Doesn't actually upload, but outputs chosen files as filesChanged.
|
|
8
|
+
export class FilesUploadComponent extends BaseFileUploadComponent {
|
|
9
|
+
constructor(
|
|
10
|
+
//promptService: PromptService,
|
|
11
|
+
dictionaryService,
|
|
12
|
+
//userService: UserService,
|
|
13
|
+
_container, _factory) {
|
|
14
|
+
super(dictionaryService, _container, _factory);
|
|
15
|
+
this._container = _container;
|
|
16
|
+
this._factory = _factory;
|
|
17
|
+
// Input button label
|
|
18
|
+
this.label = "UPLOAD_FILE";
|
|
19
|
+
this.customImageClick = false;
|
|
20
|
+
this.isEditable = false;
|
|
21
|
+
this.hideAvatars = false;
|
|
22
|
+
this.editSlideoutSubmit = new EventEmitter();
|
|
23
|
+
this.tagsChangeEvent = new EventEmitter();
|
|
24
|
+
this.imageClick = new EventEmitter();
|
|
25
|
+
this.slideoutShown = false;
|
|
26
|
+
this.isDropzone = false;
|
|
27
|
+
}
|
|
28
|
+
set dropzone(value) {
|
|
29
|
+
this.isDropzone = value;
|
|
30
|
+
}
|
|
31
|
+
showClass() {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
get editable() {
|
|
35
|
+
return this.canAdd;
|
|
36
|
+
}
|
|
37
|
+
get empty() {
|
|
38
|
+
return !this.documents || this.documents.length === 0;
|
|
39
|
+
}
|
|
40
|
+
ngOnDestroy() {
|
|
41
|
+
this.slideoutTemplate = undefined;
|
|
42
|
+
this.input = undefined;
|
|
43
|
+
super.ngOnDestroy();
|
|
44
|
+
}
|
|
45
|
+
openFileBrowser() {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
if (this.input && this.input.nativeElement) {
|
|
48
|
+
this.input.nativeElement.click();
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
handleAddClick() {
|
|
53
|
+
this.openFileBrowser();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
FilesUploadComponent.decorators = [
|
|
57
|
+
{ type: Component, args: [{
|
|
58
|
+
selector: "co-files-upload",
|
|
59
|
+
template: `
|
|
60
|
+
<div class="files-upload-wrapper">
|
|
61
|
+
<drag-drop-container
|
|
62
|
+
[sortableList]="documents"
|
|
63
|
+
(sortingChange)="handleSortingChange($event)"
|
|
64
|
+
[handleSort]="true"
|
|
65
|
+
dragHandle="tile"
|
|
66
|
+
[enabled]="!noDragDropOrdering">
|
|
67
|
+
<co-file-upload *ngIf="canAdd && addWithButton" class="add-file"
|
|
68
|
+
isAddingTile
|
|
69
|
+
icon="plus_round_open"
|
|
70
|
+
[link]="true"
|
|
71
|
+
[label]="label | localize"
|
|
72
|
+
(mouseover)="mouseOverAdd = true"
|
|
73
|
+
(mouseout)="mouseOverAdd = false"
|
|
74
|
+
(click)="handleAddClick()"></co-file-upload> <!-- (click)="handleAddClick()" -->
|
|
75
|
+
<co-file-upload *ngFor="let file of documents" class="tile"
|
|
76
|
+
[readonly]="file.readonly || readonly"
|
|
77
|
+
[class.hidden]="hideAvatars ? file.isAvatar : false"
|
|
78
|
+
[file]="file"
|
|
79
|
+
[label]="file.fileName"
|
|
80
|
+
[showTrashCan]="canDelete"
|
|
81
|
+
[fileSavesOnPopupOkClick]="fileSavesOnPopupOkClick"
|
|
82
|
+
[isEditable]="isEditable"
|
|
83
|
+
[customImageClick]="customImageClick"
|
|
84
|
+
(imageClick)="imageClick.emit($event)"
|
|
85
|
+
(deleteClick)="handleDelete(file)"
|
|
86
|
+
(editClick)="handleEditDocumentClick($event)"></co-file-upload>
|
|
87
|
+
</drag-drop-container>
|
|
88
|
+
<span class="maxuploadsize" textContent="getMaxFileSizeNotition()" [class.show]="mouseOverAdd"></span>
|
|
89
|
+
<input #inputFile [accept]="acceptedUploadFormats" (change)="handleFileChange($event)" type="file" hidden multiple/>
|
|
90
|
+
</div>
|
|
91
|
+
`,
|
|
92
|
+
encapsulation: ViewEncapsulation.None,
|
|
93
|
+
providers: [
|
|
94
|
+
{
|
|
95
|
+
provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
|
|
96
|
+
useExisting: forwardRef(() => FilesUploadComponent)
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
},] }
|
|
100
|
+
];
|
|
101
|
+
FilesUploadComponent.ctorParameters = () => [
|
|
102
|
+
{ type: DictionaryService },
|
|
103
|
+
{ type: ViewContainerRef },
|
|
104
|
+
{ type: ComponentFactoryResolver }
|
|
105
|
+
];
|
|
106
|
+
FilesUploadComponent.propDecorators = {
|
|
107
|
+
dropzone: [{ type: Input }],
|
|
108
|
+
slideoutTemplate: [{ type: ContentChild, args: ["slideoutTemplate", { static: true },] }],
|
|
109
|
+
input: [{ type: ViewChild, args: ["inputFile", { static: true },] }],
|
|
110
|
+
label: [{ type: Input }],
|
|
111
|
+
cfgNames: [{ type: Input }],
|
|
112
|
+
customImageClick: [{ type: Input }],
|
|
113
|
+
isEditable: [{ type: Input }],
|
|
114
|
+
hideAvatars: [{ type: Input }],
|
|
115
|
+
fileSavesOnPopupOkClick: [{ type: Input }],
|
|
116
|
+
selected: [{ type: Input }],
|
|
117
|
+
editSlideoutSubmit: [{ type: Output }],
|
|
118
|
+
tagsChangeEvent: [{ type: Output }],
|
|
119
|
+
imageClick: [{ type: Output }],
|
|
120
|
+
showClass: [{ type: HostBinding, args: ['class.co-files-upload',] }],
|
|
121
|
+
editable: [{ type: HostBinding, args: ["class.editable",] }],
|
|
122
|
+
empty: [{ type: HostBinding, args: ["class.empty",] }],
|
|
123
|
+
isDropzone: [{ type: HostBinding, args: ['class.dropzone',] }]
|
|
124
|
+
};
|
|
125
|
+
__decorate([
|
|
126
|
+
InputBoolean()
|
|
127
|
+
], FilesUploadComponent.prototype, "isEditable", void 0);
|
|
128
|
+
__decorate([
|
|
129
|
+
InputBoolean()
|
|
130
|
+
], FilesUploadComponent.prototype, "hideAvatars", void 0);
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzLXVwbG9hZC9maWxlcy11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHdCQUF3QixFQUN4QixZQUFZLEVBRVosWUFBWSxFQUFFLFVBQVUsRUFDeEIsV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFDLDhDQUE4QyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDNUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFHbkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBNkNyRSwwSUFBMEk7QUFDMUksTUFBTSxPQUFPLG9CQUFxQixTQUFRLHVCQUF1QjtJQW9FN0Q7SUFDSSwrQkFBK0I7SUFDL0IsaUJBQW9DO0lBQ3BDLDJCQUEyQjtJQUNqQixVQUE0QixFQUM1QixRQUFrQztRQVE1QyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBVHJDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBMURoRCxxQkFBcUI7UUFFZCxVQUFLLEdBQVcsYUFBYSxDQUFDO1FBTTlCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUlsQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRzVCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBU3BCLHVCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzNFLG9CQUFlLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO1FBR2pGLGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQW1CdEUsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFL0IsZUFBVSxHQUFZLEtBQUssQ0FBQztJQWdCbkMsQ0FBQztJQWhGRCxJQUNXLFFBQVEsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUE0Q00sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQ1csUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFDVyxLQUFLO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUF1QkQsV0FBVztRQUNQLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdkIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFWSxlQUFlOztZQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3BDO1FBQ0wsQ0FBQztLQUFBO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7O1lBOUlKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBZ0NUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxTQUFTLEVBQUU7b0JBQ1A7d0JBQ0ksT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztxQkFDdEQ7aUJBQ0o7YUFDSjs7O1lBL0NPLGlCQUFpQjtZQUx2QixnQkFBZ0I7WUFWaEIsd0JBQXdCOzs7dUJBa0VyQixLQUFLOytCQU1MLFlBQVksU0FBQyxrQkFBa0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7b0JBSS9DLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO29CQUlyQyxLQUFLO3VCQUdMLEtBQUs7K0JBR0wsS0FBSzt5QkFHTCxLQUFLOzBCQUlMLEtBQUs7c0NBR0wsS0FBSzt1QkFHTCxLQUFLO2lDQUdMLE1BQU07OEJBR04sTUFBTTt5QkFHTixNQUFNO3dCQUlOLFdBQVcsU0FBQyx1QkFBdUI7dUJBS25DLFdBQVcsU0FBQyxnQkFBZ0I7b0JBSzVCLFdBQVcsU0FBQyxhQUFhO3lCQU96QixXQUFXLFNBQUMsZ0JBQWdCOztBQXRDN0I7SUFEQyxZQUFZLEVBQUU7d0RBQ29CO0FBR25DO0lBRFUsWUFBWSxFQUFFO3lEQUNZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtCYXNlRmlsZVVwbG9hZENvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9iYXNlLWZpbGUtdXBsb2FkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1NDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUV9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZVwiO1xyXG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudFwiO1xyXG5pbXBvcnQge1RhZ1RyZWVJdGVtfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvdGFnLXRyZWUtaXRlbS5ib1wiO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbn0gZnJvbSBcIi4uLy4uL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJjby1maWxlcy11cGxvYWRcIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGVzLXVwbG9hZC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxkcmFnLWRyb3AtY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZUxpc3RdPVwiZG9jdW1lbnRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvcnRpbmdDaGFuZ2UpPVwiaGFuZGxlU29ydGluZ0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hhbmRsZVNvcnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdIYW5kbGU9XCJ0aWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZWRdPVwiIW5vRHJhZ0Ryb3BPcmRlcmluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGNvLWZpbGUtdXBsb2FkICpuZ0lmPVwiY2FuQWRkICYmIGFkZFdpdGhCdXR0b25cIiBjbGFzcz1cImFkZC1maWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FkZGluZ1RpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGx1c19yb3VuZF9vcGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWwgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJtb3VzZU92ZXJBZGQgPSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VvdXQpPVwibW91c2VPdmVyQWRkID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVBZGRDbGljaygpXCI+PC9jby1maWxlLXVwbG9hZD4gPCEtLSAoY2xpY2spPVwiaGFuZGxlQWRkQ2xpY2soKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgPGNvLWZpbGUtdXBsb2FkICpuZ0Zvcj1cImxldCBmaWxlIG9mIGRvY3VtZW50c1wiIGNsYXNzPVwidGlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpbGUucmVhZG9ubHkgfHwgcmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiaGlkZUF2YXRhcnMgPyBmaWxlLmlzQXZhdGFyIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWxlXT1cImZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJmaWxlLmZpbGVOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RyYXNoQ2FuXT1cImNhbkRlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbGVTYXZlc09uUG9wdXBPa0NsaWNrXT1cImZpbGVTYXZlc09uUG9wdXBPa0NsaWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNFZGl0YWJsZV09XCJpc0VkaXRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tSW1hZ2VDbGlja109XCJjdXN0b21JbWFnZUNsaWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2VDbGljayk9XCJpbWFnZUNsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUNsaWNrKT1cImhhbmRsZURlbGV0ZShmaWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRDbGljayk9XCJoYW5kbGVFZGl0RG9jdW1lbnRDbGljaygkZXZlbnQpXCI+PC9jby1maWxlLXVwbG9hZD5cclxuICAgICAgICAgICAgPC9kcmFnLWRyb3AtY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1heHVwbG9hZHNpemVcIiB0ZXh0Q29udGVudD1cImdldE1heEZpbGVTaXplTm90aXRpb24oKVwiIFtjbGFzcy5zaG93XT1cIm1vdXNlT3ZlckFkZFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0ICNpbnB1dEZpbGUgW2FjY2VwdF09XCJhY2NlcHRlZFVwbG9hZEZvcm1hdHNcIiAoY2hhbmdlKT1cImhhbmRsZUZpbGVDaGFuZ2UoJGV2ZW50KVwiIHR5cGU9XCJmaWxlXCIgaGlkZGVuIG11bHRpcGxlLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIGAsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBTQ1JFRU5fQ09ORklHX0FEQVBURVJfQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGaWxlc1VwbG9hZENvbXBvbmVudClcclxuICAgICAgICB9XHJcbiAgICBdXHJcbn0pXHJcbi8vIEEgY29tcG9uZW50IHRoYXQgbGV0cyB0aGUgdXNlciBtYWtlIGEgbGlzdCBvZiBmaWxlcyBmcm9tIGl0cyBkZXZpY2UuIERvZXNuJ3QgYWN0dWFsbHkgdXBsb2FkLCBidXQgb3V0cHV0cyBjaG9zZW4gZmlsZXMgYXMgZmlsZXNDaGFuZ2VkLlxyXG5leHBvcnQgY2xhc3MgRmlsZXNVcGxvYWRDb21wb25lbnQgZXh0ZW5kcyBCYXNlRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZHJvcHpvbmUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmlzRHJvcHpvbmUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvL3RvZG8gc2VlIGlmIHRoaXMgaXMgdXNlZCBhbnl3aGVyZSBpZiBub3QsIHJlbW92ZVxyXG4gICAgQENvbnRlbnRDaGlsZChcInNsaWRlb3V0VGVtcGxhdGVcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgICBwdWJsaWMgc2xpZGVvdXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICAvLyAoSGlkZGVuKSBpbnB1dCBmb3IgZmlsZSB1cGxvYWQgZmFjaWxpdGllc1xyXG4gICAgQFZpZXdDaGlsZChcImlucHV0RmlsZVwiLCB7c3RhdGljOiB0cnVlfSlcclxuICAgIHB1YmxpYyBpbnB1dDogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvLyBJbnB1dCBidXR0b24gbGFiZWxcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGFiZWw6IHN0cmluZyA9IFwiVVBMT0FEX0ZJTEVcIjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNmZ05hbWVzOiBhbnk7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjdXN0b21JbWFnZUNsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIGlzRWRpdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBoaWRlQXZhdGFyczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZmlsZVNhdmVzT25Qb3B1cE9rQ2xpY2s6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGVkOiBzdHJpbmc7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWRpdFNsaWRlb3V0U3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdGFnc0NoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8VGFnVHJlZUl0ZW1bXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRhZ1RyZWVJdGVtW10+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgaW1hZ2VDbGljazogRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PigpO1xyXG5cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWZpbGVzLXVwbG9hZCcpXHJcbiAgICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5lZGl0YWJsZVwiKVxyXG4gICAgcHVibGljIGdldCBlZGl0YWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYW5BZGQ7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuZW1wdHlcIilcclxuICAgIHB1YmxpYyBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmRvY3VtZW50cyB8fCB0aGlzLmRvY3VtZW50cy5sZW5ndGggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG1vdXNlT3ZlckFkZDogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBzbGlkZW91dFNob3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyb3B6b25lJylcclxuICAgIHB1YmxpYyBpc0Ryb3B6b25lOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLy9wcm9tcHRTZXJ2aWNlOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgICAgIGRpY3Rpb25hcnlTZXJ2aWNlOiBEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgICAgICAvL3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgX2ZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgICAgICAvL3Byb3RlY3RlZCBfZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIC8vcHJvdGVjdGVkIF9iYXNlRGF0YURhbFJlcG9zaXRvcnk6IEJhc2VEYXRhRGFsUmVwb3NpdG9yeSxcclxuICAgICAgIC8vIHByb3RlY3RlZCBfZ2VuZXJhbERhbFJlcG9zaXRvcnk6IEdlbmVyYWxEYWxSZXBvc2l0b3J5LFxyXG4gICAgICAgIC8vcHJvdGVjdGVkIF9jb0RvY3VtZW50RGF0YUxvYWRlcjogQ29Eb2N1bWVudERhdGFMb2FkZXJTZXJ2aWNlLFxyXG4gICAgICAgIC8vcHJpdmF0ZSBfd29ya2FiaWxpdHk6IEFwcFdvcmthYmlsaXR5U2VydmljZSxcclxuICAgICAgICAvL3ByaXZhdGUgX2ZpbGVUeXBlSW1nUGlwZTogRmlsZVR5cGVJbWFnZVBpcGVcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGRpY3Rpb25hcnlTZXJ2aWNlLCBfY29udGFpbmVyLCBfZmFjdG9yeSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zbGlkZW91dFRlbXBsYXRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuaW5wdXQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgb3BlbkZpbGVCcm93c2VyKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlucHV0ICYmIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUFkZENsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub3BlbkZpbGVCcm93c2VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy90b2RvIGNoZWNrIGlmIHRoaXMgY2FuIGJlIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgcnVuXHJcbiAgICAvKnB1YmxpYyBvbkN1c3RvbUNsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQgPSB1bmRlZmluZWQ7XHJcbiAgICB9Ki9cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { ButtonModule, CoDialogModule, FormModule, IconModule, InputCheckboxModule, InputTextModule, ScreenConfigurationModule } from "@colijnit/corecomponents_v12";
|
|
3
|
+
import { LocalizationModule } from "../../localization/localization.module";
|
|
4
|
+
import { DragDropContainerComponent } from "./components/drag-drop-container.component";
|
|
5
|
+
import { ImageDisplayModule } from "../image-display/image-display.module";
|
|
6
|
+
import { CommonModule } from "@angular/common";
|
|
7
|
+
import { Overlay } from "@angular/cdk/overlay";
|
|
8
|
+
import { FileTypeImagePipe } from "../../pipe/file-type-image.pipe";
|
|
9
|
+
import { FilesUploadComponent } from "./files-upload.component";
|
|
10
|
+
import { FileUploadModule } from "../file-upload/file-upload.module";
|
|
11
|
+
import { FileUploadPopupModule } from "../file-upload-popup/file-upload-popup.module";
|
|
12
|
+
import { AppFileDropzoneModule } from "../app-file-dropzone/app-file-dropzone.module";
|
|
13
|
+
export class FilesUploadModule {
|
|
14
|
+
}
|
|
15
|
+
FilesUploadModule.decorators = [
|
|
16
|
+
{ type: NgModule, args: [{
|
|
17
|
+
imports: [
|
|
18
|
+
CoDialogModule,
|
|
19
|
+
FormModule,
|
|
20
|
+
InputTextModule,
|
|
21
|
+
ScreenConfigurationModule,
|
|
22
|
+
ButtonModule,
|
|
23
|
+
LocalizationModule,
|
|
24
|
+
IconModule,
|
|
25
|
+
ImageDisplayModule,
|
|
26
|
+
CommonModule,
|
|
27
|
+
// TagsModule,
|
|
28
|
+
InputCheckboxModule,
|
|
29
|
+
FileUploadModule,
|
|
30
|
+
FileUploadPopupModule,
|
|
31
|
+
AppFileDropzoneModule
|
|
32
|
+
],
|
|
33
|
+
declarations: [
|
|
34
|
+
FilesUploadComponent,
|
|
35
|
+
DragDropContainerComponent
|
|
36
|
+
],
|
|
37
|
+
exports: [
|
|
38
|
+
FilesUploadComponent,
|
|
39
|
+
DragDropContainerComponent
|
|
40
|
+
],
|
|
41
|
+
providers: [
|
|
42
|
+
Overlay,
|
|
43
|
+
FileTypeImagePipe
|
|
44
|
+
]
|
|
45
|
+
},] }
|
|
46
|
+
];
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtdXBsb2FkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzLXVwbG9hZC9maWxlcy11cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBQ2QsVUFBVSxFQUNWLFVBQVUsRUFBRSxtQkFBbUIsRUFDL0IsZUFBZSxFQUNmLHlCQUF5QixFQUMxQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFnQ3BGLE1BQU0sT0FBTyxpQkFBaUI7OztZQTlCN0IsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxjQUFjO29CQUNkLFVBQVU7b0JBQ1YsZUFBZTtvQkFDZix5QkFBeUI7b0JBQ3pCLFlBQVk7b0JBQ1osa0JBQWtCO29CQUNsQixVQUFVO29CQUNWLGtCQUFrQjtvQkFDbEIsWUFBWTtvQkFDWixjQUFjO29CQUNkLG1CQUFtQjtvQkFDbkIsZ0JBQWdCO29CQUNoQixxQkFBcUI7b0JBQ3JCLHFCQUFxQjtpQkFDdEI7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLG9CQUFvQjtvQkFDcEIsMEJBQTBCO2lCQUMzQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1Asb0JBQW9CO29CQUNwQiwwQkFBMEI7aUJBQzNCO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxPQUFPO29CQUNQLGlCQUFpQjtpQkFDbEI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgQnV0dG9uTW9kdWxlLFxyXG4gIENvRGlhbG9nTW9kdWxlLFxyXG4gIEZvcm1Nb2R1bGUsXHJcbiAgSWNvbk1vZHVsZSwgSW5wdXRDaGVja2JveE1vZHVsZSxcclxuICBJbnB1dFRleHRNb2R1bGUsXHJcbiAgU2NyZWVuQ29uZmlndXJhdGlvbk1vZHVsZVxyXG59IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XHJcbmltcG9ydCB7TG9jYWxpemF0aW9uTW9kdWxlfSBmcm9tIFwiLi4vLi4vbG9jYWxpemF0aW9uL2xvY2FsaXphdGlvbi5tb2R1bGVcIjtcclxuaW1wb3J0IHtEcmFnRHJvcENvbnRhaW5lckNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9kcmFnLWRyb3AtY29udGFpbmVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0ltYWdlRGlzcGxheU1vZHVsZX0gZnJvbSBcIi4uL2ltYWdlLWRpc3BsYXkvaW1hZ2UtZGlzcGxheS5tb2R1bGVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtPdmVybGF5fSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcclxuaW1wb3J0IHtGaWxlVHlwZUltYWdlUGlwZX0gZnJvbSBcIi4uLy4uL3BpcGUvZmlsZS10eXBlLWltYWdlLnBpcGVcIjtcclxuaW1wb3J0IHtGaWxlc1VwbG9hZENvbXBvbmVudH0gZnJvbSBcIi4vZmlsZXMtdXBsb2FkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0ZpbGVVcGxvYWRNb2R1bGV9IGZyb20gXCIuLi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5tb2R1bGVcIjtcclxuaW1wb3J0IHtGaWxlVXBsb2FkUG9wdXBNb2R1bGV9IGZyb20gXCIuLi9maWxlLXVwbG9hZC1wb3B1cC9maWxlLXVwbG9hZC1wb3B1cC5tb2R1bGVcIjtcclxuaW1wb3J0IHtBcHBGaWxlRHJvcHpvbmVNb2R1bGV9IGZyb20gXCIuLi9hcHAtZmlsZS1kcm9wem9uZS9hcHAtZmlsZS1kcm9wem9uZS5tb2R1bGVcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29EaWFsb2dNb2R1bGUsXHJcbiAgICBGb3JtTW9kdWxlLFxyXG4gICAgSW5wdXRUZXh0TW9kdWxlLFxyXG4gICAgU2NyZWVuQ29uZmlndXJhdGlvbk1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIExvY2FsaXphdGlvbk1vZHVsZSxcclxuICAgIEljb25Nb2R1bGUsXHJcbiAgICBJbWFnZURpc3BsYXlNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAvLyBUYWdzTW9kdWxlLFxyXG4gICAgSW5wdXRDaGVja2JveE1vZHVsZSxcclxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXHJcbiAgICBGaWxlVXBsb2FkUG9wdXBNb2R1bGUsXHJcbiAgICBBcHBGaWxlRHJvcHpvbmVNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgRmlsZXNVcGxvYWRDb21wb25lbnQsXHJcbiAgICBEcmFnRHJvcENvbnRhaW5lckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgRmlsZXNVcGxvYWRDb21wb25lbnQsXHJcbiAgICBEcmFnRHJvcENvbnRhaW5lckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBPdmVybGF5LFxyXG4gICAgRmlsZVR5cGVJbWFnZVBpcGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlc1VwbG9hZE1vZHVsZSB7XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Component, forwardRef, HostBinding, Input, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME } from '@colijnit/corecomponents_v12';
|
|
3
|
+
export class ImageDisplayComponent {
|
|
4
|
+
constructor() {
|
|
5
|
+
// The (localized) text to show when there is no image. Defaults to 'NO_IMAGE'.
|
|
6
|
+
this.label = "NO_IMAGE";
|
|
7
|
+
}
|
|
8
|
+
showClass() {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
ImageDisplayComponent.decorators = [
|
|
13
|
+
{ type: Component, args: [{
|
|
14
|
+
selector: "co-image-display",
|
|
15
|
+
template: `
|
|
16
|
+
<img class="image" *ngIf="!!model" [src]="model">
|
|
17
|
+
<div class="no-image" *ngIf="!model">
|
|
18
|
+
<div class="img"></div>
|
|
19
|
+
<div class="no-image-label" [textContent]="label | localize"></div>
|
|
20
|
+
</div>
|
|
21
|
+
`,
|
|
22
|
+
providers: [{
|
|
23
|
+
provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
|
|
24
|
+
useExisting: forwardRef(() => ImageDisplayComponent)
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
encapsulation: ViewEncapsulation.None
|
|
28
|
+
},] }
|
|
29
|
+
];
|
|
30
|
+
ImageDisplayComponent.propDecorators = {
|
|
31
|
+
model: [{ type: Input }],
|
|
32
|
+
label: [{ type: Input }],
|
|
33
|
+
showClass: [{ type: HostBinding, args: ['class.co-image-display',] }],
|
|
34
|
+
hidden: [{ type: HostBinding, args: ["class.co-transaction-hidden",] }]
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZGlzcGxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9pbWFnZS1kaXNwbGF5L2ltYWdlLWRpc3BsYXkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFDLDhDQUE4QyxFQUErQixNQUFNLDhCQUE4QixDQUFDO0FBaUIxSCxNQUFNLE9BQU8scUJBQXFCO0lBZmxDO1FBb0JFLCtFQUErRTtRQUV4RSxVQUFLLEdBQVcsVUFBVSxDQUFDO0lBZ0JwQyxDQUFDO0lBYlEsU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7O1lBM0JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixRQUFRLEVBQUU7Ozs7OztHQU1UO2dCQUNELFNBQVMsRUFBRSxDQUFDO3dCQUNWLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7cUJBQUM7aUJBQ3REO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7b0JBR0UsS0FBSztvQkFJTCxLQUFLO3dCQUdMLFdBQVcsU0FBQyx3QkFBd0I7cUJBTXBDLFdBQVcsU0FBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUUsIFNjcmVlbkNvbmZpZ0FkYXB0ZXJDb21wb25lbnR9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY28taW1hZ2UtZGlzcGxheVwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpbWcgY2xhc3M9XCJpbWFnZVwiICpuZ0lmPVwiISFtb2RlbFwiIFtzcmNdPVwibW9kZWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwibm8taW1hZ2VcIiAqbmdJZj1cIiFtb2RlbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImltZ1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm5vLWltYWdlLWxhYmVsXCIgW3RleHRDb250ZW50XT1cImxhYmVsIHwgbG9jYWxpemVcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IFNDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUUsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW1hZ2VEaXNwbGF5Q29tcG9uZW50KX1cbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZURpc3BsYXlDb21wb25lbnQgaW1wbGVtZW50cyBTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50IHtcbiAgLy8gSW1hZ2UgZGF0YSBVUkkgc3RyaW5nLiBNZWFudCBmb3IgZGlyZWN0IHVzZSBpbiBbc3JjXSBhdHRyaWJ1dGUgb2YgYW4gPGltZz4gdGFnLlxuICBASW5wdXQoKVxuICBwdWJsaWMgbW9kZWw6IHN0cmluZztcblxuICAvLyBUaGUgKGxvY2FsaXplZCkgdGV4dCB0byBzaG93IHdoZW4gdGhlcmUgaXMgbm8gaW1hZ2UuIERlZmF1bHRzIHRvICdOT19JTUFHRScuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nID0gXCJOT19JTUFHRVwiO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28taW1hZ2UtZGlzcGxheScpXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgb2JqZWN0Q29uZmlnTmFtZTogc3RyaW5nO1xuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby10cmFuc2FjdGlvbi1oaWRkZW5cIilcbiAgcHVibGljIGhpZGRlbjogYm9vbGVhbjtcbiAgcHVibGljIHJlcXVpcmVkOiBib29sZWFuO1xuICBwdWJsaWMgZm9yY2VSZWFkb25seTogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xuICBwdWJsaWMgbWF4TGVuZ3RoOiBudW1iZXI7XG4gIHB1YmxpYyBkZWNpbWFsczogbnVtYmVyO1xuICBwdWJsaWMgcmVkRXJyb3JCYWNrZ3JvdW5kOiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { ImageDisplayComponent } from "./image-display.component";
|
|
3
|
+
import { CoreComponentsTranslationModule } from "@colijnit/corecomponents_v12";
|
|
4
|
+
import { CommonModule } from "@angular/common";
|
|
5
|
+
import { LocalizationModule } from "../../localization/localization.module";
|
|
6
|
+
export class ImageDisplayModule {
|
|
7
|
+
}
|
|
8
|
+
ImageDisplayModule.decorators = [
|
|
9
|
+
{ type: NgModule, args: [{
|
|
10
|
+
imports: [
|
|
11
|
+
CoreComponentsTranslationModule,
|
|
12
|
+
CommonModule,
|
|
13
|
+
LocalizationModule
|
|
14
|
+
],
|
|
15
|
+
declarations: [
|
|
16
|
+
ImageDisplayComponent
|
|
17
|
+
],
|
|
18
|
+
exports: [
|
|
19
|
+
ImageDisplayComponent
|
|
20
|
+
]
|
|
21
|
+
},] }
|
|
22
|
+
];
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZGlzcGxheS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9pbWFnZS1kaXNwbGF5L2ltYWdlLWRpc3BsYXkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDN0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBZTFFLE1BQU0sT0FBTyxrQkFBa0I7OztZQWI5QixRQUFRLFNBQUM7Z0JBQ04sT0FBTyxFQUFFO29CQUNMLCtCQUErQjtvQkFDL0IsWUFBWTtvQkFDWixrQkFBa0I7aUJBQ3JCO2dCQUNILFlBQVksRUFBRTtvQkFDWixxQkFBcUI7aUJBQ3RCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxxQkFBcUI7aUJBQ3RCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0ltYWdlRGlzcGxheUNvbXBvbmVudH0gZnJvbSBcIi4vaW1hZ2UtZGlzcGxheS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtDb3JlQ29tcG9uZW50c1RyYW5zbGF0aW9uTW9kdWxlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0xvY2FsaXphdGlvbk1vZHVsZX0gZnJvbSBcIi4uLy4uL2xvY2FsaXphdGlvbi9sb2NhbGl6YXRpb24ubW9kdWxlXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvcmVDb21wb25lbnRzVHJhbnNsYXRpb25Nb2R1bGUsXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIExvY2FsaXphdGlvbk1vZHVsZVxyXG4gICAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEltYWdlRGlzcGxheUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgSW1hZ2VEaXNwbGF5Q29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW1hZ2VEaXNwbGF5TW9kdWxlIHtcclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom component for enabling and disabling multiple items based on an input enum
|
|
3
|
+
* For the component to work, an enum is required and a list of enabled items so that
|
|
4
|
+
* the component knows which items from the enum are already enabled
|
|
5
|
+
*
|
|
6
|
+
* Note: can be improved by not only accepting a string array of enabledItemProperties but also a full cgref number because that will save one conversion step as
|
|
7
|
+
* BO's already contain these numbers.
|
|
8
|
+
*/
|
|
9
|
+
import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from "@angular/core";
|
|
10
|
+
import { Icon } from "../../enum/icon.enum";
|
|
11
|
+
import { RefCodeUtils } from "../../utils/ref-code-utils";
|
|
12
|
+
import { EnumUtils } from "../../utils/enum-utils";
|
|
13
|
+
export class MultiplePropertyTogglerComponent {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.label = "";
|
|
16
|
+
this.readonly = false;
|
|
17
|
+
this.enableditemsChange = new EventEmitter();
|
|
18
|
+
// Outputs the sum of cgrefkeys of all newly enabled items
|
|
19
|
+
this.onPropertyItemChange = new EventEmitter();
|
|
20
|
+
this.Icons = Icon;
|
|
21
|
+
this.objectifiedEnum = [];
|
|
22
|
+
this.enabledItemNumberList = [];
|
|
23
|
+
}
|
|
24
|
+
showClass() {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
ngAfterViewInit() {
|
|
28
|
+
if (this.propertyNamesToToggle) {
|
|
29
|
+
this.objectifiedEnum = EnumUtils.createObjectFromEnum(this.propertyNamesToToggle);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// PropertytogglerItems is empty
|
|
33
|
+
}
|
|
34
|
+
this.makeNumberArrayFromCgRefCodeSum();
|
|
35
|
+
}
|
|
36
|
+
isValueActive(propertyToCheck) {
|
|
37
|
+
return this.enabledItemNumberList.includes(propertyToCheck.key);
|
|
38
|
+
}
|
|
39
|
+
clickToToggleProperty(target) {
|
|
40
|
+
let newRefNumberSum = 0;
|
|
41
|
+
if (this.enabledItemNumberList.includes(target.key)) {
|
|
42
|
+
this.enabledItemNumberList.splice(this.enabledItemNumberList.indexOf(target.key), 1);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.enabledItemNumberList.push(target.key);
|
|
46
|
+
}
|
|
47
|
+
this.enabledItemNumberList.forEach(enabledItem => {
|
|
48
|
+
newRefNumberSum += this.objectifiedEnum.find(x => x.key === enabledItem).key;
|
|
49
|
+
});
|
|
50
|
+
this.onPropertyItemChange.emit(newRefNumberSum);
|
|
51
|
+
}
|
|
52
|
+
makeNumberArrayFromCgRefCodeSum() {
|
|
53
|
+
if (this.enableditems) {
|
|
54
|
+
this.enabledItemNumberList = RefCodeUtils.GetMultiRefCodeChoices(this.enableditems);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
MultiplePropertyTogglerComponent.decorators = [
|
|
59
|
+
{ type: Component, args: [{
|
|
60
|
+
selector: "co-multiple-property-toggler",
|
|
61
|
+
template: `
|
|
62
|
+
<div class="input-text-content-wrapper">
|
|
63
|
+
<h3 [textContent]="label"></h3> <!-- | localize-->
|
|
64
|
+
|
|
65
|
+
<div class="property-toggling-container">
|
|
66
|
+
|
|
67
|
+
<div class="row" *ngFor="let propertyTogglerItem of objectifiedEnum | keyvalue">
|
|
68
|
+
|
|
69
|
+
<co-input-checkbox [model]="isValueActive(propertyTogglerItem.value)"
|
|
70
|
+
(click)="clickToToggleProperty(propertyTogglerItem.value)"></co-input-checkbox>
|
|
71
|
+
|
|
72
|
+
<label [textContent]="propertyTogglerItem.value.value"></label>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
`,
|
|
77
|
+
encapsulation: ViewEncapsulation.None
|
|
78
|
+
},] }
|
|
79
|
+
];
|
|
80
|
+
MultiplePropertyTogglerComponent.propDecorators = {
|
|
81
|
+
label: [{ type: Input }],
|
|
82
|
+
propertyNamesToToggle: [{ type: Input }],
|
|
83
|
+
readonly: [{ type: Input }],
|
|
84
|
+
enableditems: [{ type: Input }],
|
|
85
|
+
enableditemsChange: [{ type: Output }],
|
|
86
|
+
onPropertyItemChange: [{ type: Output }],
|
|
87
|
+
showClass: [{ type: HostBinding, args: ["class.co-multiple-property-toggler",] }]
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtcHJvcGVydHktdG9nZ2xlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tdWx0aS1wcm9wZXJ0eS10b2dnbGVyL211bHRpcGxlLXByb3BlcnR5LXRvZ2dsZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHcEgsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFzQmpELE1BQU0sT0FBTyxnQ0FBZ0M7SUFwQjdDO1FBc0JXLFVBQUssR0FBVyxFQUFFLENBQUM7UUFPbkIsYUFBUSxHQUFhLEtBQUssQ0FBQztRQU8zQix1QkFBa0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUU3RSwwREFBMEQ7UUFFMUMseUJBQW9CLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFPeEUsVUFBSyxHQUFnQixJQUFJLENBQUM7UUFFbkMsb0JBQWUsR0FBbUIsRUFBRSxDQUFDO1FBRXJDLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztJQXNDaEQsQ0FBQztJQTlDVSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBUUQsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3JGO2FBQU07WUFDSCxnQ0FBZ0M7U0FDbkM7UUFDRCxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU0sYUFBYSxDQUFDLGVBQW9CO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLHFCQUFxQixDQUFDLE1BQVc7UUFDcEMsSUFBSSxlQUFlLEdBQVcsQ0FBQyxDQUFDO1FBRWhDLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN4RjthQUFNO1lBQ0gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDL0M7UUFFRCxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUM5QixXQUFXLENBQUMsRUFBRTtZQUNWLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2pGLENBQUMsQ0FDSixDQUFDO1FBRUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sK0JBQStCO1FBQ2xDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMscUJBQXFCLEdBQUcsWUFBWSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2RjtJQUNMLENBQUM7OztZQXhGSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7S0FlVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7O29CQUVJLEtBQUs7b0NBSUwsS0FBSzt1QkFHTCxLQUFLOzJCQUlMLEtBQUs7aUNBR0wsTUFBTTttQ0FJTixNQUFNO3dCQUdOLFdBQVcsU0FBQyxvQ0FBb0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ3VzdG9tIGNvbXBvbmVudCBmb3IgZW5hYmxpbmcgYW5kIGRpc2FibGluZyBtdWx0aXBsZSBpdGVtcyBiYXNlZCBvbiBhbiBpbnB1dCBlbnVtXHJcbiAqIEZvciB0aGUgY29tcG9uZW50IHRvIHdvcmssIGFuIGVudW0gaXMgcmVxdWlyZWQgYW5kIGEgbGlzdCBvZiBlbmFibGVkIGl0ZW1zIHNvIHRoYXRcclxuICogdGhlIGNvbXBvbmVudCBrbm93cyB3aGljaCBpdGVtcyBmcm9tIHRoZSBlbnVtIGFyZSBhbHJlYWR5IGVuYWJsZWRcclxuICpcclxuICogTm90ZTogY2FuIGJlIGltcHJvdmVkIGJ5IG5vdCBvbmx5IGFjY2VwdGluZyBhIHN0cmluZyBhcnJheSBvZiBlbmFibGVkSXRlbVByb3BlcnRpZXMgYnV0IGFsc28gYSBmdWxsIGNncmVmIG51bWJlciBiZWNhdXNlIHRoYXQgd2lsbCBzYXZlIG9uZSBjb252ZXJzaW9uIHN0ZXAgYXNcclxuICogQk8ncyBhbHJlYWR5IGNvbnRhaW4gdGhlc2UgbnVtYmVycy5cclxuICovXHJcblxyXG5pbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbi8vaW1wb3J0IHtFbnVtVXRpbHN9IGZyb20gXCIuLi8uLi91dGlscy9lbnVtLXV0aWxzXCI7XHJcbmltcG9ydCB7S2V5VmFsdWVQYWlyfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlL2tleS12YWx1ZS1wYWlyXCI7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7UmVmQ29kZVV0aWxzfSBmcm9tIFwiLi4vLi4vdXRpbHMvcmVmLWNvZGUtdXRpbHNcIjtcclxuaW1wb3J0IHtFbnVtVXRpbHN9IGZyb20gXCIuLi8uLi91dGlscy9lbnVtLXV0aWxzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImNvLW11bHRpcGxlLXByb3BlcnR5LXRvZ2dsZXJcIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXRleHQtY29udGVudC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxoMyBbdGV4dENvbnRlbnRdPVwibGFiZWxcIj48L2gzPiA8IS0tIHwgbG9jYWxpemUtLT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS10b2dnbGluZy1jb250YWluZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IHByb3BlcnR5VG9nZ2xlckl0ZW0gb2Ygb2JqZWN0aWZpZWRFbnVtIHwga2V5dmFsdWVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94IFttb2RlbF09XCJpc1ZhbHVlQWN0aXZlKHByb3BlcnR5VG9nZ2xlckl0ZW0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja1RvVG9nZ2xlUHJvcGVydHkocHJvcGVydHlUb2dnbGVySXRlbS52YWx1ZSlcIj48L2NvLWlucHV0LWNoZWNrYm94PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW3RleHRDb250ZW50XT1cInByb3BlcnR5VG9nZ2xlckl0ZW0udmFsdWUudmFsdWVcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIE11bHRpcGxlUHJvcGVydHlUb2dnbGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxhYmVsOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8vIElucHV0IGFuIEVudW0gd2l0aCBuYW1lcyBhbmQgcHJvcGVydGllcyBhbmQgaXQgd2lsbCBiZSBjb252ZXJ0ZWRcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcHJvcGVydHlOYW1lc1RvVG9nZ2xlOiBhbnk7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seSA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvLyBJbnB1dCB0aGUgY2dyZWZjb2RlIHN1bSBzbyBpdCBrbm93cyB3aGljaCBpdGVtcyB3aWxsIGJlIGVuYWJsZWRcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZW5hYmxlZGl0ZW1zOiBudW1iZXI7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZW5hYmxlZGl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8vIE91dHB1dHMgdGhlIHN1bSBvZiBjZ3JlZmtleXMgb2YgYWxsIG5ld2x5IGVuYWJsZWQgaXRlbXNcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHJlYWRvbmx5IG9uUHJvcGVydHlJdGVtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLW11bHRpcGxlLXByb3BlcnR5LXRvZ2dsZXJcIilcclxuICAgIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSBJY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICAgIHB1YmxpYyBvYmplY3RpZmllZEVudW06IEtleVZhbHVlUGFpcltdID0gW107XHJcblxyXG4gICAgcHVibGljIGVuYWJsZWRJdGVtTnVtYmVyTGlzdDogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHlOYW1lc1RvVG9nZ2xlKSB7XHJcbiAgICAgICAgICAgIHRoaXMub2JqZWN0aWZpZWRFbnVtID0gRW51bVV0aWxzLmNyZWF0ZU9iamVjdEZyb21FbnVtKHRoaXMucHJvcGVydHlOYW1lc1RvVG9nZ2xlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBQcm9wZXJ0eXRvZ2dsZXJJdGVtcyBpcyBlbXB0eVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1ha2VOdW1iZXJBcnJheUZyb21DZ1JlZkNvZGVTdW0oKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNWYWx1ZUFjdGl2ZShwcm9wZXJ0eVRvQ2hlY2s6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVuYWJsZWRJdGVtTnVtYmVyTGlzdC5pbmNsdWRlcyhwcm9wZXJ0eVRvQ2hlY2sua2V5KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2xpY2tUb1RvZ2dsZVByb3BlcnR5KHRhcmdldDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgbGV0IG5ld1JlZk51bWJlclN1bTogbnVtYmVyID0gMDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlZEl0ZW1OdW1iZXJMaXN0LmluY2x1ZGVzKHRhcmdldC5rZXkpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZEl0ZW1OdW1iZXJMaXN0LnNwbGljZSh0aGlzLmVuYWJsZWRJdGVtTnVtYmVyTGlzdC5pbmRleE9mKHRhcmdldC5rZXkpLCAxKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZWRJdGVtTnVtYmVyTGlzdC5wdXNoKHRhcmdldC5rZXkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbmFibGVkSXRlbU51bWJlckxpc3QuZm9yRWFjaChcclxuICAgICAgICAgICAgZW5hYmxlZEl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgbmV3UmVmTnVtYmVyU3VtICs9IHRoaXMub2JqZWN0aWZpZWRFbnVtLmZpbmQoeCA9PiB4LmtleSA9PT0gZW5hYmxlZEl0ZW0pLmtleTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMub25Qcm9wZXJ0eUl0ZW1DaGFuZ2UuZW1pdChuZXdSZWZOdW1iZXJTdW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtYWtlTnVtYmVyQXJyYXlGcm9tQ2dSZWZDb2RlU3VtKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZWRpdGVtcykge1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZWRJdGVtTnVtYmVyTGlzdCA9IFJlZkNvZGVVdGlscy5HZXRNdWx0aVJlZkNvZGVDaG9pY2VzKHRoaXMuZW5hYmxlZGl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { MultiplePropertyTogglerComponent } from "./multiple-property-toggler.component";
|
|
3
|
+
import { InputCheckboxModule } from "@colijnit/corecomponents_v12";
|
|
4
|
+
import { CommonModule } from "@angular/common";
|
|
5
|
+
export class MultiplePropertyTogglerModule {
|
|
6
|
+
}
|
|
7
|
+
MultiplePropertyTogglerModule.decorators = [
|
|
8
|
+
{ type: NgModule, args: [{
|
|
9
|
+
imports: [
|
|
10
|
+
InputCheckboxModule,
|
|
11
|
+
CommonModule
|
|
12
|
+
],
|
|
13
|
+
declarations: [
|
|
14
|
+
MultiplePropertyTogglerComponent
|
|
15
|
+
],
|
|
16
|
+
exports: [
|
|
17
|
+
MultiplePropertyTogglerComponent
|
|
18
|
+
]
|
|
19
|
+
},] }
|
|
20
|
+
];
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtcHJvcGVydHktdG9nZ2xlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tdWx0aS1wcm9wZXJ0eS10b2dnbGVyL211bHRpcGxlLXByb3BlcnR5LXRvZ2dsZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDdkYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBYzdDLE1BQU0sT0FBTyw2QkFBNkI7OztZQVp6QyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLG1CQUFtQjtvQkFDbkIsWUFBWTtpQkFDYjtnQkFDRCxZQUFZLEVBQUU7b0JBQ2QsZ0NBQWdDO2lCQUMvQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1QsZ0NBQWdDO2lCQUMvQjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtNdWx0aXBsZVByb3BlcnR5VG9nZ2xlckNvbXBvbmVudH0gZnJvbSBcIi4vbXVsdGlwbGUtcHJvcGVydHktdG9nZ2xlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtJbnB1dENoZWNrYm94TW9kdWxlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBJbnB1dENoZWNrYm94TW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICBNdWx0aXBsZVByb3BlcnR5VG9nZ2xlckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gIE11bHRpcGxlUHJvcGVydHlUb2dnbGVyQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlwbGVQcm9wZXJ0eVRvZ2dsZXJNb2R1bGUge1xyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Component, ContentChild, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from "@angular/core";
|
|
2
|
+
import { TileSizeType } from "../../enum/tile-size-type";
|
|
3
|
+
import { Icon } from "../../enum/icon.enum";
|
|
4
|
+
import { IconCacheService } from "../../service/icon-cache.service";
|
|
5
|
+
/**
|
|
6
|
+
* A generic component that shows a collection of simple inputs (description, image, price, etc.) as a tile-shaped graphic with an image
|
|
7
|
+
* part (upper) and an info part (lower).
|
|
8
|
+
*/
|
|
9
|
+
export class TileRenderComponent {
|
|
10
|
+
constructor(iconCacheService) {
|
|
11
|
+
this.iconCacheService = iconCacheService;
|
|
12
|
+
this.icons = Icon;
|
|
13
|
+
// Render a large or small tile.
|
|
14
|
+
this.tileSize = TileSizeType.Large;
|
|
15
|
+
// When this tile is selected, this icon will be shown green in the upper-left corner (defaults to 'check').
|
|
16
|
+
this.iconWhenSelected = "check";
|
|
17
|
+
// Emits when the image wrapper was clicked (top half of this component) .
|
|
18
|
+
this.imageClick = new EventEmitter();
|
|
19
|
+
// Emits when the info wrapper was clicked (bottom half of this component).
|
|
20
|
+
this.infoClick = new EventEmitter();
|
|
21
|
+
this.Icon = Icon;
|
|
22
|
+
}
|
|
23
|
+
get inSmallTileMode() {
|
|
24
|
+
return this.tileSize === TileSizeType.Small;
|
|
25
|
+
}
|
|
26
|
+
showClass() {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
get inLargeTileMode() {
|
|
30
|
+
return this.tileSize === TileSizeType.Large;
|
|
31
|
+
}
|
|
32
|
+
ngOnDestroy() {
|
|
33
|
+
this.infoTemplate = undefined;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
TileRenderComponent.decorators = [
|
|
37
|
+
{ type: Component, args: [{
|
|
38
|
+
selector: "co-tile-render",
|
|
39
|
+
template: `
|
|
40
|
+
<div class="image" (click)="imageClick.emit()">
|
|
41
|
+
<label *ngIf="inLargeTileMode && tagDescription" [textContent]="tagDescription"></label>
|
|
42
|
+
<co-icon *ngIf="selected" class="selected small light circle" [iconData]="iconCacheService.getIcon(iconWhenSelected)" ></co-icon>
|
|
43
|
+
<co-image [source]="imageDataUri" [class.hidden]="(inSmallTileMode || hideImageDisplayWhenNoImage) && !imageDataUri"
|
|
44
|
+
></co-image>
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
<ng-content select="[tile-render-image-content]"></ng-content>
|
|
49
|
+
</div>
|
|
50
|
+
<div class="info" (click)="infoClick.emit()">
|
|
51
|
+
<ng-container *ngIf="infoTemplate" [templateWrapper]="infoTemplate"></ng-container>
|
|
52
|
+
<span *ngIf="inLargeTileMode && label" class="label" [textContent]="label"></span>
|
|
53
|
+
<span *ngIf="inLargeTileMode && description" class="description" [textContent]="description"></span>
|
|
54
|
+
</div>
|
|
55
|
+
<ng-content></ng-content>
|
|
56
|
+
`,
|
|
57
|
+
encapsulation: ViewEncapsulation.None
|
|
58
|
+
},] }
|
|
59
|
+
];
|
|
60
|
+
TileRenderComponent.ctorParameters = () => [
|
|
61
|
+
{ type: IconCacheService }
|
|
62
|
+
];
|
|
63
|
+
TileRenderComponent.propDecorators = {
|
|
64
|
+
infoTemplate: [{ type: ContentChild, args: ["infoTemplate", { static: true },] }],
|
|
65
|
+
imageDataUri: [{ type: Input }],
|
|
66
|
+
tagDescription: [{ type: Input }],
|
|
67
|
+
label: [{ type: Input }],
|
|
68
|
+
description: [{ type: Input }],
|
|
69
|
+
tileSize: [{ type: Input }],
|
|
70
|
+
price: [{ type: Input }],
|
|
71
|
+
hidePrice: [{ type: Input }],
|
|
72
|
+
iconWhenSelected: [{ type: Input }],
|
|
73
|
+
hideImageDisplayWhenNoImage: [{ type: Input }],
|
|
74
|
+
selected: [{ type: Input }, { type: HostBinding, args: ["class.selected",] }],
|
|
75
|
+
imageClick: [{ type: Output }],
|
|
76
|
+
infoClick: [{ type: Output }],
|
|
77
|
+
inSmallTileMode: [{ type: HostBinding, args: ["class.small-size",] }],
|
|
78
|
+
showClass: [{ type: HostBinding, args: ["class.co-tile-render",] }]
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1yZW5kZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvdGlsZS1yZW5kZXJlci90aWxlLXJlbmRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBd0JsRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBd0U1QixZQUFtQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXZFckMsVUFBSyxHQUFnQixJQUFJLENBQUM7UUFxQjFDLGdDQUFnQztRQUV6QixhQUFRLEdBQWlCLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFVbkQsNEdBQTRHO1FBRXJHLHFCQUFnQixHQUFXLE9BQU8sQ0FBQztRQWMxQywwRUFBMEU7UUFFbkUsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRS9ELDJFQUEyRTtRQUVwRSxjQUFTLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFzQjdDLFNBQUksR0FBRyxJQUFJLENBQUM7SUFMN0IsQ0FBQztJQWZELElBQ1csZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBR00sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBSUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQ2xDLENBQUM7OztZQXRHSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztLQWlCVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7O1lBdkJPLGdCQUFnQjs7OzJCQStCbkIsWUFBWSxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7MkJBSTdDLEtBQUs7NkJBSUwsS0FBSztvQkFJTCxLQUFLOzBCQUlMLEtBQUs7dUJBSUwsS0FBSztvQkFJTCxLQUFLO3dCQUlMLEtBQUs7K0JBSUwsS0FBSzswQ0FPTCxLQUFLO3VCQUlMLEtBQUssWUFDTCxXQUFXLFNBQUMsZ0JBQWdCO3lCQUk1QixNQUFNO3dCQUlOLE1BQU07OEJBR04sV0FBVyxTQUFDLGtCQUFrQjt3QkFLOUIsV0FBVyxTQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7VGlsZVNpemVUeXBlfSBmcm9tIFwiLi4vLi4vZW51bS90aWxlLXNpemUtdHlwZVwiO1xyXG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi9lbnVtL2ljb24uZW51bVwiO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJjby10aWxlLXJlbmRlclwiLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIiAoY2xpY2spPVwiaW1hZ2VDbGljay5lbWl0KClcIj5cclxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiaW5MYXJnZVRpbGVNb2RlICYmIHRhZ0Rlc2NyaXB0aW9uXCIgW3RleHRDb250ZW50XT1cInRhZ0Rlc2NyaXB0aW9uXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCJzZWxlY3RlZFwiIGNsYXNzPVwic2VsZWN0ZWQgc21hbGwgbGlnaHQgY2lyY2xlXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29uV2hlblNlbGVjdGVkKVwiID48L2NvLWljb24+XHJcbiAgICAgICAgICAgIDxjby1pbWFnZSBbc291cmNlXT1cImltYWdlRGF0YVVyaVwiIFtjbGFzcy5oaWRkZW5dPVwiKGluU21hbGxUaWxlTW9kZSB8fCBoaWRlSW1hZ2VEaXNwbGF5V2hlbk5vSW1hZ2UpICYmICFpbWFnZURhdGFVcmlcIlxyXG4gICAgICAgICAgICA+PC9jby1pbWFnZT5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RpbGUtcmVuZGVyLWltYWdlLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCIgKGNsaWNrKT1cImluZm9DbGljay5lbWl0KClcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZm9UZW1wbGF0ZVwiIFt0ZW1wbGF0ZVdyYXBwZXJdPVwiaW5mb1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW5MYXJnZVRpbGVNb2RlICYmIGxhYmVsXCIgY2xhc3M9XCJsYWJlbFwiIFt0ZXh0Q29udGVudF09XCJsYWJlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpbkxhcmdlVGlsZU1vZGUgJiYgZGVzY3JpcHRpb25cIiBjbGFzcz1cImRlc2NyaXB0aW9uXCIgW3RleHRDb250ZW50XT1cImRlc2NyaXB0aW9uXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIGAsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG4vKipcclxuICogQSBnZW5lcmljIGNvbXBvbmVudCB0aGF0IHNob3dzIGEgY29sbGVjdGlvbiBvZiBzaW1wbGUgaW5wdXRzIChkZXNjcmlwdGlvbiwgaW1hZ2UsIHByaWNlLCBldGMuKSBhcyBhIHRpbGUtc2hhcGVkIGdyYXBoaWMgd2l0aCBhbiBpbWFnZVxyXG4gKiBwYXJ0ICh1cHBlcikgYW5kIGFuIGluZm8gcGFydCAobG93ZXIpLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRpbGVSZW5kZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChcImluZm9UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIGluZm9UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICAvLyBJbWFnZSBkYXRhIHRvIHNob3cgaW4gYW4gPGltYWdlLWRpc3BsYXk+IGNvbXBvbmVudC5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaW1hZ2VEYXRhVXJpOiBzdHJpbmc7XHJcblxyXG4gICAgLy8gVGFnIHRleHQgdG8gc2hvdyBpbiBhIDx0YWItbGFiZWw+IGNvbXBvbmVudC5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdGFnRGVzY3JpcHRpb246IHN0cmluZztcclxuXHJcbiAgICAvLyBMYWJlbCB0ZXh0LCBub3QgbG9jYWxpemVkLlxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAgIC8vIE1haW4gZGVzY3JpcHRpb24gdGV4dC5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZztcclxuXHJcbiAgICAvLyBSZW5kZXIgYSBsYXJnZSBvciBzbWFsbCB0aWxlLlxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0aWxlU2l6ZTogVGlsZVNpemVUeXBlID0gVGlsZVNpemVUeXBlLkxhcmdlO1xyXG5cclxuICAgIC8vIFRoZSBwcmljZSBmb3IgZGlzcGxheS5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcHJpY2U6IG51bWJlcjtcclxuXHJcbiAgICAvLyBUaGUgcHJpY2UgY2FuIGJlIGhpZGRlbiBieSBzZXR0aW5nIHRoaXMgdG8gdHJ1ZS5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaGlkZVByaWNlOiBib29sZWFuO1xyXG5cclxuICAgIC8vIFdoZW4gdGhpcyB0aWxlIGlzIHNlbGVjdGVkLCB0aGlzIGljb24gd2lsbCBiZSBzaG93biBncmVlbiBpbiB0aGUgdXBwZXItbGVmdCBjb3JuZXIgKGRlZmF1bHRzIHRvICdjaGVjaycpLlxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpY29uV2hlblNlbGVjdGVkOiBzdHJpbmcgPSBcImNoZWNrXCI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGNvbXBvbmVudCBzaG93cyBhIHNwZWNpYWwgaWNvbiBhbmQgbWlzc2luZy1pbWFnZSB0ZXh0IGZvciB0aGUgaW1hZ2Ugd2hlbiBpdCdzIGVtcHR5LiBTZXQgdGhpcyB0byB0cnVlXHJcbiAgICAgKiB0byBoaWRlIHRoZSB3aG9sZSBpbWFnZS1kaXNwbGF5IGluc3RlYWQsIHdoZW4gdGhlcmUgd2FzIG5vIGltYWdlIGdpdmVuLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGhpZGVJbWFnZURpc3BsYXlXaGVuTm9JbWFnZTogYm9vbGVhbjtcclxuXHJcbiAgICAvLyBTZWxlY3RlZCB0aWxlcyBoYXZlIGEgZ3JlZW4gYm9yZGVyIGFyb3VuZCB0aGVtLlxyXG4gICAgQElucHV0KClcclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLnNlbGVjdGVkXCIpXHJcbiAgICBwdWJsaWMgc2VsZWN0ZWQ6IGJvb2xlYW47XHJcblxyXG4gICAgLy8gRW1pdHMgd2hlbiB0aGUgaW1hZ2Ugd3JhcHBlciB3YXMgY2xpY2tlZCAodG9wIGhhbGYgb2YgdGhpcyBjb21wb25lbnQpIC5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGltYWdlQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgLy8gRW1pdHMgd2hlbiB0aGUgaW5mbyB3cmFwcGVyIHdhcyBjbGlja2VkIChib3R0b20gaGFsZiBvZiB0aGlzIGNvbXBvbmVudCkuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBpbmZvQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3Muc21hbGwtc2l6ZVwiKVxyXG4gICAgcHVibGljIGdldCBpblNtYWxsVGlsZU1vZGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGlsZVNpemUgPT09IFRpbGVTaXplVHlwZS5TbWFsbDtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby10aWxlLXJlbmRlclwiKVxyXG4gICAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBpbkxhcmdlVGlsZU1vZGUoKTogYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRpbGVTaXplID09PSBUaWxlU2l6ZVR5cGUuTGFyZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UpIHtcclxuICAgIH1cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaW5mb1RlbXBsYXRlID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgSWNvbiA9IEljb247XHJcbn1cclxuIl19
|