@wertzui/ngx-restworld-client 1.0.2 → 2.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.
Files changed (31) hide show
  1. package/bundles/wertzui-ngx-restworld-client.umd.js +1101 -301
  2. package/bundles/wertzui-ngx-restworld-client.umd.js.map +1 -1
  3. package/esm2015/lib/models/problem-details.js +2 -2
  4. package/esm2015/lib/pipes/as.pipe.js +25 -0
  5. package/esm2015/lib/pipes/safe-url.pipe.js +23 -0
  6. package/esm2015/lib/restworld-client.module.js +68 -8
  7. package/esm2015/lib/services/avatar-generator.js +2 -2
  8. package/esm2015/lib/services/form.service.js +69 -0
  9. package/esm2015/lib/services/restworld-client-collection.js +1 -1
  10. package/esm2015/lib/services/restworld-client.js +46 -8
  11. package/esm2015/lib/views/restworld-edit-form/restworld-edit-form.component.js +238 -0
  12. package/esm2015/lib/views/restworld-edit-view/restworld-edit-view.component.js +209 -143
  13. package/esm2015/lib/views/restworld-file-view/restworld-file-view.component.js +63 -0
  14. package/esm2015/lib/views/restworld-image-view/restworld-image-view.component.js +107 -0
  15. package/esm2015/lib/views/restworld-list-view/restworld-list-view.component.js +64 -37
  16. package/esm2015/public-api.js +7 -1
  17. package/fesm2015/wertzui-ngx-restworld-client.js +880 -220
  18. package/fesm2015/wertzui-ngx-restworld-client.js.map +1 -1
  19. package/lib/models/problem-details.d.ts +4 -8
  20. package/lib/pipes/as.pipe.d.ts +18 -0
  21. package/lib/pipes/safe-url.pipe.d.ts +10 -0
  22. package/lib/restworld-client.module.d.ts +35 -21
  23. package/lib/services/form.service.d.ts +14 -0
  24. package/lib/services/restworld-client.d.ts +4 -1
  25. package/lib/views/restworld-edit-form/restworld-edit-form.component.d.ts +69 -0
  26. package/lib/views/restworld-edit-view/restworld-edit-view.component.d.ts +53 -32
  27. package/lib/views/restworld-file-view/restworld-file-view.component.d.ts +21 -0
  28. package/lib/views/restworld-image-view/restworld-image-view.component.d.ts +38 -0
  29. package/lib/views/restworld-list-view/restworld-list-view.component.d.ts +20 -8
  30. package/package.json +29 -8
  31. package/public-api.d.ts +6 -0
@@ -0,0 +1,63 @@
1
+ import { Component, forwardRef, Input, ViewChildren } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { FileUpload } from 'primeng/fileupload';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "primeng/button";
6
+ import * as i2 from "primeng/fileupload";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "primeng/tooltip";
9
+ import * as i5 from "../../pipes/safe-url.pipe";
10
+ export class RESTWorldFileViewComponent {
11
+ constructor() {
12
+ this.disabled = false;
13
+ }
14
+ writeValue(obj) {
15
+ this.uri = obj;
16
+ }
17
+ registerOnChange(fn) {
18
+ this.onChange = fn;
19
+ }
20
+ registerOnTouched() {
21
+ // not needed for this component, but needed to implement the interface
22
+ }
23
+ setDisabledState(isDisabled) {
24
+ this.disabled = isDisabled;
25
+ }
26
+ fileChanged(event) {
27
+ const file = event.files[0];
28
+ const reader = new FileReader();
29
+ reader.onload = () => {
30
+ var _a;
31
+ this.uri = reader.result;
32
+ (_a = this.onChange) === null || _a === void 0 ? void 0 : _a.call(this, this.uri);
33
+ };
34
+ reader.readAsDataURL(file);
35
+ }
36
+ }
37
+ RESTWorldFileViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: RESTWorldFileViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
+ RESTWorldFileViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.11", type: RESTWorldFileViewComponent, selector: "rw-file", inputs: { accept: "accept", fileName: "fileName" }, providers: [{
39
+ provide: NG_VALUE_ACCESSOR,
40
+ useExisting: forwardRef(() => RESTWorldFileViewComponent),
41
+ multi: true
42
+ }], viewQueries: [{ propertyName: "fileUploads", predicate: FileUpload, descendants: true }], ngImport: i0, template: "<div class=\"flex align-items-center\">\r\n <p-button *ngIf=\"!uri\" [disabled]=\"true\" icon=\"pi pi-download\" class=\"mr-1\" pTooltip=\"No file present\"></p-button>\r\n <a *ngIf=\"uri\" [href]=\"uri | safeUrl\" [download]=\"fileName || 'download'\" class=\"mr-1\" pButton pTooltip=\"Download file\" icon=\"pi pi-download\"></a>\r\n <p-fileUpload chooseIcon=\"pi-upload fas fa-upload\" pTooltip=\"Upload new file\" mode=\"basic\" [auto]=\"true\" [accept]=\"accept || 'false'\" [customUpload]=\"true\" (uploadHandler)=\"fileChanged($event)\"></p-fileUpload>\r\n</div>\r\n", styles: ["a{text-decoration:none;height:calc(1rem + 2*8px + 2px)}a.p-button-icon-only span.p-button-label{height:1rem!important}\n"], components: [{ type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i2.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], pipes: { "safeUrl": i5.SafeUrlPipe } });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: RESTWorldFileViewComponent, decorators: [{
44
+ type: Component,
45
+ args: [{
46
+ selector: 'rw-file',
47
+ templateUrl: './restworld-file-view.component.html',
48
+ styleUrls: ['./restworld-file-view.component.css'],
49
+ providers: [{
50
+ provide: NG_VALUE_ACCESSOR,
51
+ useExisting: forwardRef(() => RESTWorldFileViewComponent),
52
+ multi: true
53
+ }]
54
+ }]
55
+ }], propDecorators: { accept: [{
56
+ type: Input
57
+ }], fileName: [{
58
+ type: Input
59
+ }], fileUploads: [{
60
+ type: ViewChildren,
61
+ args: [FileUpload]
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWZpbGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3ZpZXdzL3Jlc3R3b3JsZC1maWxlLXZpZXcvcmVzdHdvcmxkLWZpbGUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3ZpZXdzL3Jlc3R3b3JsZC1maWxlLXZpZXcvcmVzdHdvcmxkLWZpbGUtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWEsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFZaEQsTUFBTSxPQUFPLDBCQUEwQjtJQVZ2QztRQXFCUyxhQUFRLEdBQUcsS0FBSyxDQUFDO0tBMEJ6QjtJQXZCQyxVQUFVLENBQUMsR0FBWTtRQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsRUFBYTtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBQ0QsaUJBQWlCO1FBQ2YsdUVBQXVFO0lBQ3pFLENBQUM7SUFDRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQXdCO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTs7WUFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBZ0IsQ0FBQztZQUNuQyxNQUFBLElBQUksQ0FBQyxRQUFRLCtDQUFiLElBQUksRUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOzt3SEFwQ1UsMEJBQTBCOzRHQUExQiwwQkFBMEIsc0ZBTjFCLENBQUM7WUFDVixPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUM7WUFDekQsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLDBEQVVZLFVBQVUsZ0RDdEIxQixra0JBS0E7NEZEU2EsMEJBQTBCO2tCQVZ0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxTQUFTO29CQUNuQixXQUFXLEVBQUUsc0NBQXNDO29CQUNuRCxTQUFTLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztvQkFDbEQsU0FBUyxFQUFFLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7NEJBQ3pELEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7aUJBQ0g7OEJBSVEsTUFBTTtzQkFEWixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWQgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3J3LWZpbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLWZpbGUtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1maWxlLXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJFU1RXb3JsZEZpbGVWaWV3Q29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cbn0pXG5leHBvcnQgY2xhc3MgUkVTVFdvcmxkRmlsZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHByaXZhdGUgb25DaGFuZ2U/OiBGdW5jdGlvbjtcbiAgQElucHV0KClcbiAgcHVibGljIGFjY2VwdD86IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmlsZU5hbWU/OiBzdHJpbmc7XG5cclxuICBAVmlld0NoaWxkcmVuKEZpbGVVcGxvYWQpXHJcbiAgZmlsZVVwbG9hZHM/OiBRdWVyeUxpc3Q8RmlsZVVwbG9hZD47XG5cbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG4gIHB1YmxpYyB1cmk/OiBzdHJpbmc7XHJcblxuICB3cml0ZVZhbHVlKG9iaj86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy51cmkgPSBvYmo7XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm4/OiBGdW5jdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIC8vIG5vdCBuZWVkZWQgZm9yIHRoaXMgY29tcG9uZW50LCBidXQgbmVlZGVkIHRvIGltcGxlbWVudCB0aGUgaW50ZXJmYWNlXHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cblxuICBwdWJsaWMgZmlsZUNoYW5nZWQoZXZlbnQ6IHsgZmlsZXM6IEZpbGVbXSB9KTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWxlID0gZXZlbnQuZmlsZXNbMF07XHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdGhpcy51cmkgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcclxuICAgICAgdGhpcy5vbkNoYW5nZT8uKHRoaXMudXJpKTtcclxuICAgIH07XHJcblxyXG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgPHAtYnV0dG9uICpuZ0lmPVwiIXVyaVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgaWNvbj1cInBpIHBpLWRvd25sb2FkXCIgY2xhc3M9XCJtci0xXCIgcFRvb2x0aXA9XCJObyBmaWxlIHByZXNlbnRcIj48L3AtYnV0dG9uPlxyXG4gIDxhICpuZ0lmPVwidXJpXCIgW2hyZWZdPVwidXJpIHwgc2FmZVVybFwiIFtkb3dubG9hZF09XCJmaWxlTmFtZSB8fCAnZG93bmxvYWQnXCIgY2xhc3M9XCJtci0xXCIgcEJ1dHRvbiBwVG9vbHRpcD1cIkRvd25sb2FkIGZpbGVcIiBpY29uPVwicGkgcGktZG93bmxvYWRcIj48L2E+XHJcbiAgPHAtZmlsZVVwbG9hZCBjaG9vc2VJY29uPVwicGktdXBsb2FkIGZhcyBmYS11cGxvYWRcIiBwVG9vbHRpcD1cIlVwbG9hZCBuZXcgZmlsZVwiIG1vZGU9XCJiYXNpY1wiIFthdXRvXT1cInRydWVcIiBbYWNjZXB0XT1cImFjY2VwdCB8fCAnZmFsc2UnXCIgW2N1c3RvbVVwbG9hZF09XCJ0cnVlXCIgKHVwbG9hZEhhbmRsZXIpPVwiZmlsZUNoYW5nZWQoJGV2ZW50KVwiPjwvcC1maWxlVXBsb2FkPlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,107 @@
1
+ import { Component, forwardRef, Input, ViewChildren } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { FileUpload } from 'primeng/fileupload';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "primeng/button";
6
+ import * as i2 from "primeng/fileupload";
7
+ import * as i3 from "primeng/dialog";
8
+ import * as i4 from "ngx-image-cropper";
9
+ import * as i5 from "primeng/colorpicker";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "primeng/tooltip";
12
+ import * as i8 from "@angular/forms";
13
+ import * as i9 from "primeng/inputtext";
14
+ import * as i10 from "primeng/ripple";
15
+ import * as i11 from "../../pipes/safe-url.pipe";
16
+ export class RESTWorldImageViewComponent {
17
+ constructor() {
18
+ this.maintainAspectRatio = true;
19
+ this.aspectRatio = 1;
20
+ this.resizeToWidth = 0;
21
+ this.resizeToHeight = 0;
22
+ this.onlyScaleDown = false;
23
+ this.containWithinAspectRatio = false;
24
+ this.backgroundColor = "#ffffff";
25
+ this.format = 'png';
26
+ this.disabled = false;
27
+ this.displayCropDialog = false;
28
+ }
29
+ writeValue(obj) {
30
+ this.uri = obj;
31
+ }
32
+ registerOnChange(fn) {
33
+ this.onChange = fn;
34
+ }
35
+ registerOnTouched() {
36
+ // not needed for this component, but needed to implement the interface
37
+ }
38
+ setDisabledState(isDisabled) {
39
+ this.disabled = isDisabled;
40
+ }
41
+ showCropDialog() {
42
+ this.displayCropDialog = true;
43
+ }
44
+ imageChanged(event) {
45
+ this.tempImageFile = event.files[0];
46
+ this.showCropDialog();
47
+ }
48
+ croppedImageChanged(event) {
49
+ this.tempCroppedUri = event.base64;
50
+ }
51
+ acceptCroppedImage() {
52
+ var _a;
53
+ this.uri = this.tempCroppedUri;
54
+ (_a = this.onChange) === null || _a === void 0 ? void 0 : _a.call(this, this.uri);
55
+ this.closeCropDialog();
56
+ }
57
+ closeCropDialog() {
58
+ var _a;
59
+ (_a = this.fileUploads) === null || _a === void 0 ? void 0 : _a.forEach(f => f.clear());
60
+ this.displayCropDialog = false;
61
+ }
62
+ }
63
+ RESTWorldImageViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: RESTWorldImageViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
64
+ RESTWorldImageViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.11", type: RESTWorldImageViewComponent, selector: "rw-image", inputs: { alt: "alt", accept: "accept", fileName: "fileName", maintainAspectRatio: "maintainAspectRatio", aspectRatio: "aspectRatio", resizeToWidth: "resizeToWidth", resizeToHeight: "resizeToHeight", onlyScaleDown: "onlyScaleDown", containWithinAspectRatio: "containWithinAspectRatio", backgroundColor: "backgroundColor", format: "format" }, providers: [{
65
+ provide: NG_VALUE_ACCESSOR,
66
+ useExisting: forwardRef(() => RESTWorldImageViewComponent),
67
+ multi: true
68
+ }], viewQueries: [{ propertyName: "fileUploads", predicate: FileUpload, descendants: true }], ngImport: i0, template: "<div class=\"flex align-items-center\">\r\n <p-button *ngIf=\"!uri\" [disabled]=\"true\" icon=\"pi pi-download\" class=\"mr-1\" pTooltip=\"No image present\"></p-button>\r\n <a *ngIf=\"uri\" [href]=\"uri | safeUrl\" [download]=\"fileName || 'download'\" class=\"mr-1\" pButton pTooltip=\"Download image\" icon=\"pi pi-download\"></a>\r\n <p-fileUpload class=\"mr-1\" chooseIcon=\"pi-upload fas fa-upload\" mode=\"basic\" [auto]=\"true\" [accept]=\"accept || 'false'\" [customUpload]=\"true\" (uploadHandler)=\"imageChanged($event)\" pTooltip=\"Upload new image\"></p-fileUpload>\r\n <img *ngIf=\"uri\" [src]=\"uri\" [alt]=\"alt\" (click)=\"showCropDialog()\" pTooltip=\"Zoom and crop\" />\r\n</div>\r\n\r\n<p-dialog header=\"alt\" [(visible)]=\"displayCropDialog\">\r\n <image-cropper #cropper\r\n [imageFile]=\"tempImageFile!\"\r\n [imageURL]=\"uri!\"\r\n [maintainAspectRatio]=\"maintainAspectRatio\"\r\n [aspectRatio]=\"aspectRatio\"\r\n [resizeToWidth]=\"resizeToWidth\"\r\n [resizeToHeight]=\"resizeToHeight\"\r\n [onlyScaleDown]=\"onlyScaleDown\"\r\n [autoCrop]=\"true\"\r\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\r\n [backgroundColor]=\"backgroundColor\"\r\n [format]=\"format\"\r\n (imageCropped)=\"croppedImageChanged($event)\"></image-cropper>\r\n <div class=\"flex justify-content-end\">\r\n <div class=\"flex-auto align-items-center\">\r\n <span>Background color:&nbsp;</span>\r\n <p-colorPicker [(ngModel)]=\"cropper.backgroundColor\" appendTo=\"body\" class=\"ml-1 mr-1\"></p-colorPicker>\r\n <input pInputText [(ngModel)]=\"cropper.backgroundColor\" />\r\n </div>\r\n <button type=\"button\" pButton pRipple (click)=\"acceptCroppedImage()\" class=\"mr-2\">Ok</button>\r\n <button type=\"button\" pButton pRipple (click)=\"closeCropDialog()\">Cancel</button>\r\n </div>\r\n</p-dialog>\r\n", styles: ["img{height:calc(1rem + 2*8px + 2*1px);cursor:zoom-in;border-radius:3px}a{text-decoration:none;height:calc(1rem + 2*8px + 2px)}a.p-button-icon-only span.p-button-label{height:1rem!important}\n"], components: [{ type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i2.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler"] }, { type: i3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "cropper", "alignImage", "disabled", "imageChangedEvent", "imageURL", "imageBase64", "imageFile"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed"] }, { type: i5.ColorPicker, selector: "p-colorPicker", inputs: ["style", "styleClass", "inline", "format", "appendTo", "disabled", "tabindex", "inputId", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onChange", "onShow", "onHide"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.InputText, selector: "[pInputText]" }, { type: i10.Ripple, selector: "[pRipple]" }], pipes: { "safeUrl": i11.SafeUrlPipe } });
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: RESTWorldImageViewComponent, decorators: [{
70
+ type: Component,
71
+ args: [{
72
+ selector: 'rw-image',
73
+ templateUrl: './restworld-image-view.component.html',
74
+ styleUrls: ['./restworld-image-view.component.css'],
75
+ providers: [{
76
+ provide: NG_VALUE_ACCESSOR,
77
+ useExisting: forwardRef(() => RESTWorldImageViewComponent),
78
+ multi: true
79
+ }]
80
+ }]
81
+ }], propDecorators: { alt: [{
82
+ type: Input
83
+ }], accept: [{
84
+ type: Input
85
+ }], fileName: [{
86
+ type: Input
87
+ }], maintainAspectRatio: [{
88
+ type: Input
89
+ }], aspectRatio: [{
90
+ type: Input
91
+ }], resizeToWidth: [{
92
+ type: Input
93
+ }], resizeToHeight: [{
94
+ type: Input
95
+ }], onlyScaleDown: [{
96
+ type: Input
97
+ }], containWithinAspectRatio: [{
98
+ type: Input
99
+ }], backgroundColor: [{
100
+ type: Input
101
+ }], format: [{
102
+ type: Input
103
+ }], fileUploads: [{
104
+ type: ViewChildren,
105
+ args: [FileUpload]
106
+ }] } });
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWltYWdlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi92aWV3cy9yZXN0d29ybGQtaW1hZ2Utdmlldy9yZXN0d29ybGQtaW1hZ2Utdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3ZpZXdzL3Jlc3R3b3JsZC1pbWFnZS12aWV3L3Jlc3R3b3JsZC1pbWFnZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBYSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVloRCxNQUFNLE9BQU8sMkJBQTJCO0lBVnhDO1FBcUJFLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUUzQixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVoQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVsQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUVuQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0Qiw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFFakMsb0JBQWUsR0FBRyxTQUFTLENBQUM7UUFFckIsV0FBTSxHQUFpQixLQUFLLENBQUM7UUFPN0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUdqQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7S0F3Q2xDO0lBckNDLFVBQVUsQ0FBQyxHQUFtQjtRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsRUFBYTtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBQ0QsaUJBQWlCO1FBQ2YsdUVBQXVFO0lBQ3pFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBd0I7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sbUJBQW1CLENBQUMsS0FBd0I7UUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxrQkFBa0I7O1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMvQixNQUFBLElBQUksQ0FBQyxRQUFRLCtDQUFiLElBQUksRUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxlQUFlOztRQUNwQixNQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQzs7eUhBMUVVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLHlYQU4zQixDQUFDO1lBQ1YsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO1lBQzFELEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQywwREE4QlksVUFBVSxnREMzQzFCLCsvREErQkE7NEZEaEJhLDJCQUEyQjtrQkFWdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsV0FBVyxFQUFFLHVDQUF1QztvQkFDcEQsU0FBUyxFQUFFLENBQUMsc0NBQXNDLENBQUM7b0JBQ25ELFNBQVMsRUFBRSxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDOzRCQUMxRCxLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDO2lCQUNIOzhCQU1RLEdBQUc7c0JBRFQsS0FBSztnQkFHQyxNQUFNO3NCQURaLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFHTixXQUFXO3NCQURWLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixLQUFLO2dCQUdOLGNBQWM7c0JBRGIsS0FBSztnQkFHTixhQUFhO3NCQURaLEtBQUs7Z0JBR04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQUdOLGVBQWU7c0JBRGQsS0FBSztnQkFHQyxNQUFNO3NCQURaLEtBQUs7Z0JBS04sV0FBVztzQkFEVixZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJbWFnZUNyb3BwZWRFdmVudCwgT3V0cHV0Rm9ybWF0IH0gZnJvbSAnbmd4LWltYWdlLWNyb3BwZXInO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdydy1pbWFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtaW1hZ2Utdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1pbWFnZS12aWV3LmNvbXBvbmVudC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSRVNUV29ybGRJbWFnZVZpZXdDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XVxufSlcbmV4cG9ydCBjbGFzcyBSRVNUV29ybGRJbWFnZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cclxuICBwcml2YXRlIG9uQ2hhbmdlPzogRnVuY3Rpb247XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFsdD86IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGFjY2VwdD86IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGZpbGVOYW1lPzogc3RyaW5nO1xuICBASW5wdXQoKVxuICBtYWludGFpbkFzcGVjdFJhdGlvID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgYXNwZWN0UmF0aW8gPSAxO1xuICBASW5wdXQoKVxuICByZXNpemVUb1dpZHRoID0gMDtcbiAgQElucHV0KClcbiAgcmVzaXplVG9IZWlnaHQgPSAwO1xuICBASW5wdXQoKVxuICBvbmx5U2NhbGVEb3duID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbyA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBiYWNrZ3JvdW5kQ29sb3IgPSBcIiNmZmZmZmZcIjtcbiAgQElucHV0KClcbiAgcHVibGljIGZvcm1hdDogT3V0cHV0Rm9ybWF0ID0gJ3BuZyc7XG5cblxyXG4gIEBWaWV3Q2hpbGRyZW4oRmlsZVVwbG9hZClcclxuICBmaWxlVXBsb2Fkcz86IFF1ZXJ5TGlzdDxGaWxlVXBsb2FkPjtcblxuXG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgdXJpPzogc3RyaW5nIHwgbnVsbDtcclxuICBwdWJsaWMgdGVtcEltYWdlRmlsZT86IEZpbGU7XHJcbiAgcHVibGljIGRpc3BsYXlDcm9wRGlhbG9nID0gZmFsc2U7XG4gIHB1YmxpYyB0ZW1wQ3JvcHBlZFVyaT86IHN0cmluZyB8IG51bGw7XG5cbiAgd3JpdGVWYWx1ZShvYmo/OiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLnVyaSA9IG9iajtcclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbj86IEZ1bmN0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCk6IHZvaWQge1xyXG4gICAgLy8gbm90IG5lZWRlZCBmb3IgdGhpcyBjb21wb25lbnQsIGJ1dCBuZWVkZWQgdG8gaW1wbGVtZW50IHRoZSBpbnRlcmZhY2VcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dDcm9wRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNwbGF5Q3JvcERpYWxvZyA9IHRydWU7XHJcbiAgfVxyXG5cbiAgcHVibGljIGltYWdlQ2hhbmdlZChldmVudDogeyBmaWxlczogRmlsZVtdIH0pOiB2b2lkIHtcclxuICAgIHRoaXMudGVtcEltYWdlRmlsZSA9IGV2ZW50LmZpbGVzWzBdO1xyXG4gICAgdGhpcy5zaG93Q3JvcERpYWxvZygpO1xyXG4gIH1cblxuICBwdWJsaWMgY3JvcHBlZEltYWdlQ2hhbmdlZChldmVudDogSW1hZ2VDcm9wcGVkRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMudGVtcENyb3BwZWRVcmkgPSBldmVudC5iYXNlNjQ7XHJcbiAgfVxuXHJcbiAgcHVibGljIGFjY2VwdENyb3BwZWRJbWFnZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudXJpID0gdGhpcy50ZW1wQ3JvcHBlZFVyaTtcclxuICAgIHRoaXMub25DaGFuZ2U/Lih0aGlzLnVyaSk7XHJcbiAgICB0aGlzLmNsb3NlQ3JvcERpYWxvZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlQ3JvcERpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZHM/LmZvckVhY2goZiA9PiBmLmNsZWFyKCkpO1xyXG4gICAgdGhpcy5kaXNwbGF5Q3JvcERpYWxvZyA9IGZhbHNlO1xyXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gIDxwLWJ1dHRvbiAqbmdJZj1cIiF1cmlcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGljb249XCJwaSBwaS1kb3dubG9hZFwiIGNsYXNzPVwibXItMVwiIHBUb29sdGlwPVwiTm8gaW1hZ2UgcHJlc2VudFwiPjwvcC1idXR0b24+XHJcbiAgPGEgKm5nSWY9XCJ1cmlcIiBbaHJlZl09XCJ1cmkgfCBzYWZlVXJsXCIgW2Rvd25sb2FkXT1cImZpbGVOYW1lIHx8ICdkb3dubG9hZCdcIiBjbGFzcz1cIm1yLTFcIiBwQnV0dG9uIHBUb29sdGlwPVwiRG93bmxvYWQgaW1hZ2VcIiBpY29uPVwicGkgcGktZG93bmxvYWRcIj48L2E+XHJcbiAgPHAtZmlsZVVwbG9hZCBjbGFzcz1cIm1yLTFcIiBjaG9vc2VJY29uPVwicGktdXBsb2FkIGZhcyBmYS11cGxvYWRcIiBtb2RlPVwiYmFzaWNcIiBbYXV0b109XCJ0cnVlXCIgW2FjY2VwdF09XCJhY2NlcHQgfHwgJ2ZhbHNlJ1wiIFtjdXN0b21VcGxvYWRdPVwidHJ1ZVwiICh1cGxvYWRIYW5kbGVyKT1cImltYWdlQ2hhbmdlZCgkZXZlbnQpXCIgcFRvb2x0aXA9XCJVcGxvYWQgbmV3IGltYWdlXCI+PC9wLWZpbGVVcGxvYWQ+XHJcbiAgPGltZyAqbmdJZj1cInVyaVwiIFtzcmNdPVwidXJpXCIgW2FsdF09XCJhbHRcIiAoY2xpY2spPVwic2hvd0Nyb3BEaWFsb2coKVwiIHBUb29sdGlwPVwiWm9vbSBhbmQgY3JvcFwiIC8+XHJcbjwvZGl2PlxyXG5cclxuPHAtZGlhbG9nIGhlYWRlcj1cImFsdFwiIFsodmlzaWJsZSldPVwiZGlzcGxheUNyb3BEaWFsb2dcIj5cclxuICA8aW1hZ2UtY3JvcHBlciAjY3JvcHBlclxyXG4gICAgICAgICAgICAgICAgIFtpbWFnZUZpbGVdPVwidGVtcEltYWdlRmlsZSFcIlxyXG4gICAgICAgICAgICAgICAgIFtpbWFnZVVSTF09XCJ1cmkhXCJcclxuICAgICAgICAgICAgICAgICBbbWFpbnRhaW5Bc3BlY3RSYXRpb109XCJtYWludGFpbkFzcGVjdFJhdGlvXCJcclxuICAgICAgICAgICAgICAgICBbYXNwZWN0UmF0aW9dPVwiYXNwZWN0UmF0aW9cIlxyXG4gICAgICAgICAgICAgICAgIFtyZXNpemVUb1dpZHRoXT1cInJlc2l6ZVRvV2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgIFtyZXNpemVUb0hlaWdodF09XCJyZXNpemVUb0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgW29ubHlTY2FsZURvd25dPVwib25seVNjYWxlRG93blwiXHJcbiAgICAgICAgICAgICAgICAgW2F1dG9Dcm9wXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgIFtjb250YWluV2l0aGluQXNwZWN0UmF0aW9dPVwiY29udGFpbldpdGhpbkFzcGVjdFJhdGlvXCJcclxuICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cImJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCJmb3JtYXRcIlxyXG4gICAgICAgICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwiY3JvcHBlZEltYWdlQ2hhbmdlZCgkZXZlbnQpXCI+PC9pbWFnZS1jcm9wcGVyPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWF1dG8gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxzcGFuPkJhY2tncm91bmQgY29sb3I6Jm5ic3A7PC9zcGFuPlxyXG4gICAgICA8cC1jb2xvclBpY2tlciBbKG5nTW9kZWwpXT1cImNyb3BwZXIuYmFja2dyb3VuZENvbG9yXCIgYXBwZW5kVG89XCJib2R5XCIgY2xhc3M9XCJtbC0xIG1yLTFcIj48L3AtY29sb3JQaWNrZXI+XHJcbiAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwiY3JvcHBlci5iYWNrZ3JvdW5kQ29sb3JcIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgKGNsaWNrKT1cImFjY2VwdENyb3BwZWRJbWFnZSgpXCIgY2xhc3M9XCJtci0yXCI+T2s8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwiY2xvc2VDcm9wRGlhbG9nKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9wLWRpYWxvZz5cclxuIl19