@candy-kingdom/bonnie-cms 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/file-uploader/file-uploader.component.mjs +7 -6
- package/esm2022/lib/media-uploader/media-uploader.component.mjs +11 -9
- package/fesm2022/candy-kingdom-bonnie-cms.mjs +15 -12
- package/fesm2022/candy-kingdom-bonnie-cms.mjs.map +1 -1
- package/lib/media-uploader/media-uploader.component.d.ts +3 -2
- package/package.json +1 -1
|
@@ -68,21 +68,22 @@ export class FileUploaderComponent {
|
|
|
68
68
|
getEventMessage(event) {
|
|
69
69
|
switch (event.type) {
|
|
70
70
|
case HttpEventType.Sent:
|
|
71
|
-
|
|
71
|
+
break;
|
|
72
72
|
case HttpEventType.UploadProgress:
|
|
73
73
|
this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;
|
|
74
74
|
this.updateClip();
|
|
75
|
-
|
|
75
|
+
break;
|
|
76
76
|
case HttpEventType.Response:
|
|
77
77
|
if (event.body === null || event.body === undefined) {
|
|
78
78
|
console.warn(`empty body from uploader`);
|
|
79
|
-
|
|
79
|
+
break;
|
|
80
80
|
}
|
|
81
81
|
this.srcChange.emit(event.body);
|
|
82
|
-
|
|
82
|
+
break;
|
|
83
83
|
default:
|
|
84
|
-
|
|
84
|
+
break;
|
|
85
85
|
}
|
|
86
|
+
this.cd.detectChanges();
|
|
86
87
|
}
|
|
87
88
|
updateClip() {
|
|
88
89
|
this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);
|
|
@@ -115,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
115
116
|
}], uploadTypes: [{
|
|
116
117
|
type: Input
|
|
117
118
|
}] } });
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS1jbXMvc3JjL2xpYi9maWxlLXVwbG9hZGVyL2ZpbGUtdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUtY21zL3NyYy9saWIvZmlsZS11cGxvYWRlci9maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBYSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekYsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFTekQsTUFBTSxPQUFPLHFCQUFxQjtJQXFCaEMsWUFBb0IsU0FBdUIsRUFBVSxJQUFnQixFQUFtQixFQUFxQjtRQUF6RixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFtQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQWhCdEcsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBS2xELGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBR2hCLGlCQUFZLEdBQVksU0FBUyxDQUFDO1FBRWpDLGlCQUFZLEdBQWEsRUFBRSxDQUFDO0lBSXBDLENBQUM7SUFFRCxJQUNXLEdBQUcsQ0FBQyxNQUFxQztRQUNsRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTTtZQUN0QixPQUFPO1FBRVQsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFDVyxXQUFXLENBQUMsYUFBdUI7UUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU3RixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFTSxZQUFZLENBQUMsU0FBMkI7UUFDN0MsSUFBSSxTQUFTLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxTQUFTLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQzNGLE9BQU87UUFFVCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVoRixJQUFJLFNBQVMsS0FBSyxTQUFTLElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtZQUNqRCxPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUNyRSxPQUFPO1NBQ1I7UUFFRCxNQUFNLFFBQVEsR0FBYSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBRTFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRXhCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRTtZQUMzRCxjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSTthQUNOLE9BQU8sQ0FBb0IsT0FBTyxDQUFDO2FBQ25DLElBQUksQ0FFSCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLDhDQUE4QztRQUM5QyxJQUFJLEVBQUUsRUFBRSw0Q0FBNEM7UUFDcEQsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDbkMsQ0FBQyxTQUFTLENBRVQsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ3BDLENBQUM7SUFDTixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQVk7UUFDNUIsb0NBQW9DO1FBQ3BDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWE7WUFDL0MsT0FBTztRQUVULElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBbUM7UUFDekQsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2xCLEtBQUssYUFBYSxDQUFDLElBQUk7Z0JBQ3JCLE9BQU87WUFFVCxLQUFLLGFBQWEsQ0FBQyxjQUFjO2dCQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDN0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNsQixPQUFPO1lBRVQsS0FBSyxhQUFhLENBQUMsUUFBUTtnQkFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtvQkFDbkQsT0FBTyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO29CQUN6QyxPQUFPO2lCQUNSO2dCQUVELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEMsT0FBTztZQUVUO2dCQUNFLE9BQU87U0FDVjtJQUNILENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTyxXQUFXLENBQUMsSUFBVTtRQUM1QixNQUFNLElBQUksR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUF1QixFQUF1QixFQUFFO1lBQzVFLE1BQU0sT0FBTyxHQUFHLHVCQUF1QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7WUFDcEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNmLE9BQU8sSUFBSSxVQUFVLEVBQVcsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBeElVLHFCQUFxQjtrR0FBckIscUJBQXFCLHVTQ1psQyxzc0JBZ0JBOzsyRkRKYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usb0JBQW9COzBJQU12QixTQUFTO3NCQURmLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJakMsU0FBUztzQkFEZixNQUFNO2dCQUlBLFlBQVk7c0JBRGxCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQWtCZCxHQUFHO3NCQURiLEtBQUs7Z0JBYUssV0FBVztzQkFEckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVN0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGxhc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgRmlsZU1ldGEsIEZpbGVTcmMgfSBmcm9tICdAY2FuZHkta2luZ2RvbS9ib25uaWUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdib25jLWZpbGUtdXBsb2FkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRlckNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwdWJsaWMgZmlsZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNyY0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVNyYzxGaWxlTWV0YT4+KCk7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgcHVibGljIHVwbG9hZFVybE1hcCE6IFJlYWRvbmx5TWFwPHN0cmluZywgc3RyaW5nPjtcclxuXHJcbiAgcHVibGljIHByb2dyZXNzID0gMDtcclxuICBwdWJsaWMgaXNVcGxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGF1dG9wbGF5ID0gdHJ1ZTtcclxuICBwdWJsaWMgY2xpcFN0eWxlPzogU2FmZVN0eWxlO1xyXG5cclxuICBwdWJsaWMgZmlsZVR5cGVNYXNrPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIF91cGxvYWRUeXBlczogc3RyaW5nW10gPSBbXTtcclxuICBwcml2YXRlIF9zcmM/OiBGaWxlU3JjPEZpbGVNZXRhPjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplciwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNyYyhuZXdTcmM6IEZpbGVTcmM8RmlsZU1ldGE+IHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fc3JjID09PSBuZXdTcmMpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9zcmMgPSBuZXdTcmM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNyYygpOiBGaWxlU3JjPEZpbGVNZXRhPiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3JjO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHVwbG9hZFR5cGVzKG5ld1VwbG9hZFR5cGU6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLl91cGxvYWRUeXBlcy5zcGxpY2UoMCwgdGhpcy5fdXBsb2FkVHlwZXMubGVuZ3RoKTtcclxuXHJcbiAgICB0aGlzLl91cGxvYWRUeXBlcy5wdXNoKC4uLm5ld1VwbG9hZFR5cGUpO1xyXG5cclxuICAgIHRoaXMuZmlsZVR5cGVNYXNrID0gdGhpcy5fdXBsb2FkVHlwZXMubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogdGhpcy5fdXBsb2FkVHlwZXMuam9pbignLCcpO1xyXG5cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB1cGxvYWRUeXBlcygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXBsb2FkVHlwZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25GaWxlU2VsZWN0KGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgaWYgKGZpbGVJbnB1dC5maWxlcyA9PT0gdW5kZWZpbmVkIHx8IGZpbGVJbnB1dC5maWxlcyA9PT0gbnVsbCB8fCBmaWxlSW5wdXQuZmlsZXMubGVuZ3RoICE9PSAxKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZmlsZSA9IGZpbGVJbnB1dC5maWxlc1swXTtcclxuXHJcbiAgICBjb25zdCB1cGxvYWRVcmwgPSB0aGlzLnVwbG9hZFVybE1hcC5nZXQoZmlsZS50eXBlKSA/PyB0aGlzLnVwbG9hZFVybE1hcC5nZXQoXCJcIik7XHJcblxyXG4gICAgaWYgKHVwbG9hZFVybCA9PT0gdW5kZWZpbmVkIHx8IHVwbG9hZFVybCA9PT0gbnVsbCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGB1cGxvYWQgbWFwIGRvZXNuJ3QgaGF2ZSB1cmwgZm9yIHR5cGUgJyR7ZmlsZS50eXBlfSdgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG5cclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG5cclxuICAgIHRoaXMucHJvZ3Jlc3MgPSAwO1xyXG4gICAgdGhpcy5pc1VwbG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy51cGRhdGVDbGlwKCk7XHJcblxyXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBIdHRwUmVxdWVzdCgnUE9TVCcsIHVwbG9hZFVybCwgZm9ybURhdGEsIHtcclxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaHR0cFxyXG4gICAgICAucmVxdWVzdDxGaWxlU3JjPEZpbGVNZXRhPj4ocmVxdWVzdClcclxuICAgICAgLnBpcGVcclxuICAgICAgKFxyXG4gICAgICAgIG1hcChldmVudCA9PiB0aGlzLmdldEV2ZW50TWVzc2FnZShldmVudCkpLFxyXG4gICAgICAgIC8vIHRhcChtZXNzYWdlID0+IHRoaXMuc2hvd1Byb2dyZXNzKG1lc3NhZ2UpKSxcclxuICAgICAgICBsYXN0KCksIC8vIHJldHVybiBsYXN0IChjb21wbGV0ZWQpIG1lc3NhZ2UgdG8gY2FsbGVyXHJcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKGZpbGUpKVxyXG4gICAgICApLnN1YnNjcmliZVxyXG4gICAgICAoXHJcbiAgICAgICAgKCkgPT4geyB0aGlzLmlzVXBsb2FkaW5nID0gZmFsc2U7IH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RGaWxlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gaWdub3JlIGJ1YmxlIGNsaWNrIG9uIGZpbGUgcGlja2VyXHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50KVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFdmVudE1lc3NhZ2UoZXZlbnQ6IEh0dHBFdmVudDxGaWxlU3JjPEZpbGVNZXRhPj4pOiB2b2lkIHtcclxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICBjYXNlIEh0dHBFdmVudFR5cGUuU2VudDpcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XHJcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IGV2ZW50LnRvdGFsID09PSB1bmRlZmluZWQgPyAwLjUgOiBldmVudC5sb2FkZWQgLyBldmVudC50b3RhbDtcclxuICAgICAgICB0aGlzLnVwZGF0ZUNsaXAoKTtcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XHJcbiAgICAgICAgaWYgKGV2ZW50LmJvZHkgPT09IG51bGwgfHwgZXZlbnQuYm9keSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oYGVtcHR5IGJvZHkgZnJvbSB1cGxvYWRlcmApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zcmNDaGFuZ2UuZW1pdChldmVudC5ib2R5KTtcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ2xpcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xpcFN0eWxlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKGBpbnNldCgwcHggMTAwJSAwcHggMCUpYCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVycm9yKGZpbGU6IEZpbGUpOiAocDE6IHVua25vd24sIHAyOiBPYnNlcnZhYmxlPHVua25vd24+KSA9PiBPYnNlcnZhYmxlPHVua25vd24+IHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZXJyb3I6IHVua25vd24sIHAyOiBPYnNlcnZhYmxlPHVua25vd24+KTogT2JzZXJ2YWJsZTx1bmtub3duPiA9PiB7XHJcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgZXJyb3IgdXBsb2FkaW5nRmlsZSAke2ZpbGUubmFtZX0uYDtcclxuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlLCBlcnJvciwgcDIpO1xyXG4gICAgICBhbGVydChtZXNzYWdlKTtcclxuICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHVua25vd24+KCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwic3JjID09PSB1bmRlZmluZWQgfHwgc3JjLnVybCA9PT0gdW5kZWZpbmVkIHx8IHNyYz8udXJsPy5sZW5ndGggPT09IDBcIj5VcGxvYWQgZmlsZTwvZGl2PlxyXG5cclxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG5cclxuPGRpdiAoY2xpY2spPVwic2VsZWN0RmlsZSgkZXZlbnQpXCIgY2xhc3M9XCJtZWRpYS1jb250YWluZXJcIj5cclxuICA8aW5wdXQgI2ZpbGVJbnB1dCBbYWNjZXB0XT1cImZpbGVUeXBlTWFza1wiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0KGZpbGVJbnB1dClcIiBuYW1lPVwibWVkaWFcIiB0eXBlPVwiZmlsZVwiIC8+XHJcbiAgPHNwYW4gKm5nSWY9XCJpc1VwbG9hZGluZ1wiXHJcbiAgICAgICAgW3N0eWxlLmNsaXAtcGF0aF09XCJjbGlwU3R5bGVcIlxyXG4gICAgICAgIFtzdHlsZS4td2Via2l0LWNsaXAtcGF0aF09XCJjbGlwU3R5bGVcIlxyXG4gICAgICAgIGNsYXNzPVwibG9hZGVyXCI+PC9zcGFuPlxyXG5cclxuICA8c3BhbiAqbmdJZj1cImlzVXBsb2FkaW5nXCIgY2xhc3M9XCJsb2FkZXItdGV4dFwiPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJwcm9ncmVzcyA8IDFcIj57ezEwMCAqIHByb2dyZXNzIHwgbnVtYmVyOiAnMS4wLTAnfX0lPC9zcGFuPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJwcm9ncmVzcyA+PSAxXCI+Y29udmVydGluZzwvc3Bhbj5cclxuICA8L3NwYW4+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS1jbXMvc3JjL2xpYi9maWxlLXVwbG9hZGVyL2ZpbGUtdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUtY21zL3NyYy9saWIvZmlsZS11cGxvYWRlci9maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBYSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekYsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFTekQsTUFBTSxPQUFPLHFCQUFxQjtJQXFCaEMsWUFBb0IsU0FBdUIsRUFBVSxJQUFnQixFQUFtQixFQUFxQjtRQUF6RixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFtQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQWhCdEcsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBS2xELGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBR2hCLGlCQUFZLEdBQVksU0FBUyxDQUFDO1FBRWpDLGlCQUFZLEdBQWEsRUFBRSxDQUFDO0lBSXBDLENBQUM7SUFFRCxJQUNXLEdBQUcsQ0FBQyxN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QUFJLFVBQVUsRUFBVyxDQUFDO1FBQ25DLENBQUMsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0ExSVUscUJBQXFCO2tHQUFyQixxQkFBcUIsdVNDWmxDLHNzQkFnQkE7OzJGREphLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxvQkFBb0I7MElBTXZCLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqQyxTQUFTO3NCQURmLE1BQU07Z0JBSUEsWUFBWTtzQkFEbEIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBa0JkLEdBQUc7c0JBRGIsS0FBSztnQkFhSyxXQUFXO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlU3R5bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbGFzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBGaWxlTWV0YSwgRmlsZVNyYyB9IGZyb20gJ0BjYW5keS1raW5nZG9tL2Jvbm5pZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JvbmMtZmlsZS11cGxvYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZGVyQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHB1YmxpYyBmaWxlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc3JjQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlU3JjPEZpbGVNZXRhPj4oKTtcclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICBwdWJsaWMgdXBsb2FkVXJsTWFwITogUmVhZG9ubHlNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG5cclxuICBwdWJsaWMgcHJvZ3Jlc3MgPSAwO1xyXG4gIHB1YmxpYyBpc1VwbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgYXV0b3BsYXkgPSB0cnVlO1xyXG4gIHB1YmxpYyBjbGlwU3R5bGU/OiBTYWZlU3R5bGU7XHJcblxyXG4gIHB1YmxpYyBmaWxlVHlwZU1hc2s/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgX3VwbG9hZFR5cGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3NyYz86IEZpbGVTcmM8RmlsZU1ldGE+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc3JjKG5ld1NyYzogRmlsZVNyYzxGaWxlTWV0YT4gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl9zcmMgPT09IG5ld1NyYylcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX3NyYyA9IG5ld1NyYztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc3JjKCk6IEZpbGVTcmM8RmlsZU1ldGE+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9zcmM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgdXBsb2FkVHlwZXMobmV3VXBsb2FkVHlwZTogc3RyaW5nW10pIHtcclxuICAgIHRoaXMuX3VwbG9hZFR5cGVzLnNwbGljZSgwLCB0aGlzLl91cGxvYWRUeXBlcy5sZW5ndGgpO1xyXG5cclxuICAgIHRoaXMuX3VwbG9hZFR5cGVzLnB1c2goLi4ubmV3VXBsb2FkVHlwZSk7XHJcblxyXG4gICAgdGhpcy5maWxlVHlwZU1hc2sgPSB0aGlzLl91cGxvYWRUeXBlcy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiB0aGlzLl91cGxvYWRUeXBlcy5qb2luKCcsJyk7XHJcblxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHVwbG9hZFR5cGVzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLl91cGxvYWRUeXBlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZpbGVTZWxlY3QoZmlsZUlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XHJcbiAgICBpZiAoZmlsZUlucHV0LmZpbGVzID09PSB1bmRlZmluZWQgfHwgZmlsZUlucHV0LmZpbGVzID09PSBudWxsIHx8IGZpbGVJbnB1dC5maWxlcy5sZW5ndGggIT09IDEpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBmaWxlID0gZmlsZUlucHV0LmZpbGVzWzBdO1xyXG5cclxuICAgIGNvbnN0IHVwbG9hZFVybCA9IHRoaXMudXBsb2FkVXJsTWFwLmdldChmaWxlLnR5cGUpID8/IHRoaXMudXBsb2FkVXJsTWFwLmdldChcIlwiKTtcclxuXHJcbiAgICBpZiAodXBsb2FkVXJsID09PSB1bmRlZmluZWQgfHwgdXBsb2FkVXJsID09PSBudWxsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHVwbG9hZCBtYXAgZG9lc24ndCBoYXZlIHVybCBmb3IgdHlwZSAnJHtmaWxlLnR5cGV9J2ApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcblxyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XHJcblxyXG4gICAgdGhpcy5wcm9ncmVzcyA9IDA7XHJcbiAgICB0aGlzLmlzVXBsb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNsaXAoKTtcclxuXHJcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgdXBsb2FkVXJsLCBmb3JtRGF0YSwge1xyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5odHRwXHJcbiAgICAgIC5yZXF1ZXN0PEZpbGVTcmM8RmlsZU1ldGE+PihyZXF1ZXN0KVxyXG4gICAgICAucGlwZVxyXG4gICAgICAoXHJcbiAgICAgICAgbWFwKGV2ZW50ID0+IHRoaXMuZ2V0RXZlbnRNZXNzYWdlKGV2ZW50KSksXHJcbiAgICAgICAgLy8gdGFwKG1lc3NhZ2UgPT4gdGhpcy5zaG93UHJvZ3Jlc3MobWVzc2FnZSkpLFxyXG4gICAgICAgIGxhc3QoKSwgLy8gcmV0dXJuIGxhc3QgKGNvbXBsZXRlZCkgbWVzc2FnZSB0byBjYWxsZXJcclxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IoZmlsZSkpXHJcbiAgICAgICkuc3Vic2NyaWJlXHJcbiAgICAgIChcclxuICAgICAgICAoKSA9PiB7IHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZTsgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdEZpbGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAvLyBpZ25vcmUgYnVibGUgY2xpY2sgb24gZmlsZSBwaWNrZXJcclxuICAgIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEV2ZW50TWVzc2FnZShldmVudDogSHR0cEV2ZW50PEZpbGVTcmM8RmlsZU1ldGE+Pik6IHZvaWQge1xyXG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5TZW50OlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOlxyXG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBldmVudC50b3RhbCA9PT0gdW5kZWZpbmVkID8gMC41IDogZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWw7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDbGlwKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XHJcbiAgICAgICAgaWYgKGV2ZW50LmJvZHkgPT09IG51bGwgfHwgZXZlbnQuYm9keSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oYGVtcHR5IGJvZHkgZnJvbSB1cGxvYWRlcmApO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNyY0NoYW5nZS5lbWl0KGV2ZW50LmJvZHkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDbGlwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGlwU3R5bGUgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoYGluc2V0KDBweCAxMDAlIDBweCAwJSlgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZmlsZTogRmlsZSk6IChwMTogdW5rbm93biwgcDI6IE9ic2VydmFibGU8dW5rbm93bj4pID0+IE9ic2VydmFibGU8dW5rbm93bj4ge1xyXG4gICAgY29uc3QgZnVuYyA9IChlcnJvcjogdW5rbm93biwgcDI6IE9ic2VydmFibGU8dW5rbm93bj4pOiBPYnNlcnZhYmxlPHVua25vd24+ID0+IHtcclxuICAgICAgY29uc3QgbWVzc2FnZSA9IGBlcnJvciB1cGxvYWRpbmdGaWxlICR7ZmlsZS5uYW1lfS5gO1xyXG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIGVycm9yLCBwMik7XHJcbiAgICAgIGFsZXJ0KG1lc3NhZ2UpO1xyXG4gICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dW5rbm93bj4oKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGZ1bmM7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJzcmMgPT09IHVuZGVmaW5lZCB8fCBzcmMudXJsID09PSB1bmRlZmluZWQgfHwgc3JjPy51cmw/Lmxlbmd0aCA9PT0gMFwiPlVwbG9hZCBmaWxlPC9kaXY+XHJcblxyXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcblxyXG48ZGl2IChjbGljayk9XCJzZWxlY3RGaWxlKCRldmVudClcIiBjbGFzcz1cIm1lZGlhLWNvbnRhaW5lclwiPlxyXG4gIDxpbnB1dCAjZmlsZUlucHV0IFthY2NlcHRdPVwiZmlsZVR5cGVNYXNrXCIgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3QoZmlsZUlucHV0KVwiIG5hbWU9XCJtZWRpYVwiIHR5cGU9XCJmaWxlXCIgLz5cclxuICA8c3BhbiAqbmdJZj1cImlzVXBsb2FkaW5nXCJcclxuICAgICAgICBbc3R5bGUuY2xpcC1wYXRoXT1cImNsaXBTdHlsZVwiXHJcbiAgICAgICAgW3N0eWxlLi13ZWJraXQtY2xpcC1wYXRoXT1cImNsaXBTdHlsZVwiXHJcbiAgICAgICAgY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+XHJcblxyXG4gIDxzcGFuICpuZ0lmPVwiaXNVcGxvYWRpbmdcIiBjbGFzcz1cImxvYWRlci10ZXh0XCI+XHJcbiAgICA8c3BhbiAqbmdJZj1cInByb2dyZXNzIDwgMVwiPnt7MTAwICogcHJvZ3Jlc3MgfCBudW1iZXI6ICcxLjAtMCd9fSU8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cInByb2dyZXNzID49IDFcIj5jb252ZXJ0aW5nPC9zcGFuPlxyXG4gIDwvc3Bhbj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
1
|
+
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
3
|
import { HttpClient, HttpEventType, HttpRequest } from '@angular/common/http';
|
|
4
4
|
import { catchError, last, map, Observable } from 'rxjs';
|
|
@@ -14,9 +14,10 @@ const imageFileTypes = imageMimeTypes.join(',');
|
|
|
14
14
|
const videoFileTypes = videoMimeTypes.join(',');
|
|
15
15
|
const allMediaFileTypes = `${imageFileTypes},${videoFileTypes}`;
|
|
16
16
|
export class MediaUploaderComponent {
|
|
17
|
-
constructor(sanitizer, http) {
|
|
17
|
+
constructor(sanitizer, http, cd) {
|
|
18
18
|
this.sanitizer = sanitizer;
|
|
19
19
|
this.http = http;
|
|
20
|
+
this.cd = cd;
|
|
20
21
|
this.MediaObjectFit = MediaObjectFit;
|
|
21
22
|
this.srcChange = new EventEmitter();
|
|
22
23
|
this.progress = 0;
|
|
@@ -100,11 +101,11 @@ export class MediaUploaderComponent {
|
|
|
100
101
|
getEventMessage(event) {
|
|
101
102
|
switch (event.type) {
|
|
102
103
|
case HttpEventType.Sent:
|
|
103
|
-
|
|
104
|
+
break;
|
|
104
105
|
case HttpEventType.UploadProgress:
|
|
105
106
|
this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;
|
|
106
107
|
this.updateClip();
|
|
107
|
-
|
|
108
|
+
break;
|
|
108
109
|
case HttpEventType.Response:
|
|
109
110
|
if (event.body === undefined || event.body === null) {
|
|
110
111
|
console.error('media deserialization error. Response body in undefined');
|
|
@@ -118,10 +119,11 @@ export class MediaUploaderComponent {
|
|
|
118
119
|
};
|
|
119
120
|
this.srcChange.emit(pixmedia);
|
|
120
121
|
}
|
|
121
|
-
|
|
122
|
+
break;
|
|
122
123
|
default:
|
|
123
|
-
|
|
124
|
+
break;
|
|
124
125
|
}
|
|
126
|
+
this.cd.detectChanges();
|
|
125
127
|
}
|
|
126
128
|
updateClip() {
|
|
127
129
|
this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);
|
|
@@ -135,13 +137,13 @@ export class MediaUploaderComponent {
|
|
|
135
137
|
};
|
|
136
138
|
return func;
|
|
137
139
|
}
|
|
138
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MediaUploaderComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
140
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MediaUploaderComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
139
141
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: MediaUploaderComponent, selector: "bonc-media-uploader", inputs: { uploadUrlMap: "uploadUrlMap", forceRatio: "forceRatio", src: "src", uploadType: "uploadType" }, outputs: { srcChange: "srcChange" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\r\n\r\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MarcyMediaComponent, selector: "bon-media", inputs: ["src", "objectFit"], outputs: ["isLoaded"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }] }); }
|
|
140
142
|
}
|
|
141
143
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MediaUploaderComponent, decorators: [{
|
|
142
144
|
type: Component,
|
|
143
145
|
args: [{ selector: 'bonc-media-uploader', template: "<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\r\n\r\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"] }]
|
|
144
|
-
}], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.HttpClient }], propDecorators: { fileInput: [{
|
|
146
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: { fileInput: [{
|
|
145
147
|
type: ViewChild,
|
|
146
148
|
args: ['fileInput', { static: true }]
|
|
147
149
|
}], srcChange: [{
|
|
@@ -156,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
156
158
|
}], uploadType: [{
|
|
157
159
|
type: Input
|
|
158
160
|
}] } });
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUtY21zL3NyYy9saWIvbWVkaWEtdXBsb2FkZXIvbWVkaWEtdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUtY21zL3NyYy9saWIvbWVkaWEtdXBsb2FkZXIvbWVkaWEtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQWEsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFhLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQWlCLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUd0RSxNQUFNLGNBQWMsR0FBRyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNuRCxNQUFNLGNBQWMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXJDLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVoRCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsY0FBYyxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBT2hFLE1BQU0sT0FBTyxzQkFBc0I7SUF5QmpDLFlBQW9CLFNBQXVCLEVBQVUsSUFB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OzJGREthLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxxQkFBcUI7MEdBUXhCLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqQyxTQUFTO3NCQURmLE1BQU07Z0JBSUEsWUFBWTtzQkFEbEIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWxCLFVBQVU7c0JBRGhCLEtBQUs7Z0JBaUJLLEdBQUc7c0JBRGIsS0FBSztnQkFhSyxVQUFVO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBsYXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE1lZGlhT2JqZWN0Rml0LCBQaXhNZWRpYVVuaW9uIH0gZnJvbSAnQGNhbmR5LWtpbmdkb20vYm9ubmllJztcclxuaW1wb3J0IHsgTWVkaWFUeXBlIH0gZnJvbSAnLi4vY29yZSc7XHJcblxyXG5jb25zdCBpbWFnZU1pbWVUeXBlcyA9IFsnaW1hZ2UvcG5nJywgJ2ltYWdlL2pwZWcnXTtcclxuY29uc3QgdmlkZW9NaW1lVHlwZXMgPSBbJ3ZpZGVvL21wNCddO1xyXG5cclxuY29uc3QgaW1hZ2VGaWxlVHlwZXMgPSBpbWFnZU1pbWVUeXBlcy5qb2luKCcsJyk7XHJcbmNvbnN0IHZpZGVvRmlsZVR5cGVzID0gdmlkZW9NaW1lVHlwZXMuam9pbignLCcpO1xyXG5cclxuY29uc3QgYWxsTWVkaWFGaWxlVHlwZXMgPSBgJHtpbWFnZUZpbGVUeXBlc30sJHt2aWRlb0ZpbGVUeXBlc31gO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdib25jLW1lZGlhLXVwbG9hZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lZGlhLXVwbG9hZGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1lZGlhVXBsb2FkZXJDb21wb25lbnQge1xyXG4gIHB1YmxpYyByZWFkb25seSBNZWRpYU9iamVjdEZpdCA9IE1lZGlhT2JqZWN0Rml0O1xyXG5cclxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHB1YmxpYyBmaWxlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc3JjQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQaXhNZWRpYVVuaW9uPigpO1xyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHB1YmxpYyB1cGxvYWRVcmxNYXAhOiBSZWFkb25seU1hcDxNZWRpYVR5cGUsIHN0cmluZz47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZvcmNlUmF0aW8/OiBudW1iZXI7XHJcblxyXG4gIHB1YmxpYyBwcm9ncmVzcyA9IDA7XHJcbiAgcHVibGljIGlzVXBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBhdXRvcGxheSA9IHRydWU7XHJcbiAgcHVibGljIGNsaXBTdHlsZT86IFNhZmVTdHlsZTtcclxuICBwdWJsaWMgZmlsZVR5cGVNYXNrID0gYWxsTWVkaWFGaWxlVHlwZXM7XHJcblxyXG4gIHByaXZhdGUgX3VwbG9hZFR5cGU/OiBNZWRpYVR5cGU7XHJcbiAgcHJpdmF0ZSBfc3JjPzogUGl4TWVkaWFVbmlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplciwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc3JjKG5ld1NyYzogUGl4TWVkaWFVbmlvbiB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX3NyYyA9PT0gbmV3U3JjKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fc3JjID0gbmV3U3JjO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzcmMoKTogUGl4TWVkaWFVbmlvbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3JjO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHVwbG9hZFR5cGUobmV3VXBsb2FkVHlwZTogTWVkaWFUeXBlIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBzd2l0Y2ggKG5ld1VwbG9hZFR5cGUpIHtcclxuICAgICAgY2FzZSBcImltYWdlXCI6XHJcbiAgICAgICAgdGhpcy5fdXBsb2FkVHlwZSA9IG5ld1VwbG9hZFR5cGU7XHJcbiAgICAgICAgdGhpcy5maWxlVHlwZU1hc2sgPSBpbWFnZUZpbGVUeXBlcztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgXCJ2aWRlb1wiOlxyXG4gICAgICAgIHRoaXMuX3VwbG9hZFR5cGUgPSBuZXdVcGxvYWRUeXBlO1xyXG4gICAgICAgIHRoaXMuZmlsZVR5cGVNYXNrID0gdmlkZW9GaWxlVHlwZXM7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIHVuZGVmaW5lZDpcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLl91cGxvYWRUeXBlID0gbmV3VXBsb2FkVHlwZTtcclxuICAgICAgICB0aGlzLmZpbGVUeXBlTWFzayA9IGFsbE1lZGlhRmlsZVR5cGVzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB1cGxvYWRUeXBlKCk6IE1lZGlhVHlwZSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXBsb2FkVHlwZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZpbGVTZWxlY3QoZmlsZUlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XHJcbiAgICBpZiAoZmlsZUlucHV0LmZpbGVzID09PSB1bmRlZmluZWQgfHwgZmlsZUlucHV0LmZpbGVzID09PSBudWxsIHx8IGZpbGVJbnB1dC5maWxlcy5sZW5ndGggIT09IDEpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBmaWxlID0gZmlsZUlucHV0LmZpbGVzWzBdO1xyXG5cclxuICAgIGxldCB1cGxvYWRpbmdNZWRpYVR5cGU6IE1lZGlhVHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5fdXBsb2FkVHlwZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3VwbG9hZFR5cGUgIT09IG51bGwpIHtcclxuICAgICAgdXBsb2FkaW5nTWVkaWFUeXBlID0gdGhpcy5fdXBsb2FkVHlwZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGltYWdlTWltZVR5cGVzLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcclxuICAgICAgdXBsb2FkaW5nTWVkaWFUeXBlID0gJ2ltYWdlJztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHZpZGVvTWltZVR5cGVzLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcclxuICAgICAgdXBsb2FkaW5nTWVkaWFUeXBlID0gJ3ZpZGVvJztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGB1bmtub3duIG1lZGlhIHR5cGUgJHtmaWxlLnR5cGV9ICgke2ZpbGUubmFtZX0pYCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB1cGxvYWRVcmwgPSB0aGlzLnVwbG9hZFVybE1hcC5nZXQodXBsb2FkaW5nTWVkaWFUeXBlKTtcclxuXHJcbiAgICBpZiAodXBsb2FkVXJsID09PSB1bmRlZmluZWQgfHwgdXBsb2FkVXJsID09PSBudWxsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHVwbG9hZCBtYXAgZG9lc24ndCBoYXZlIHVybCBmb3IgdHlwZSAke3VwbG9hZGluZ01lZGlhVHlwZX1gKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG5cclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdyYXRpbycsIGAke3RoaXMuZm9yY2VSYXRpbyA/PyAwfWApO1xyXG5cclxuICAgIHRoaXMucHJvZ3Jlc3MgPSAwO1xyXG4gICAgdGhpcy5pc1VwbG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy51cGRhdGVDbGlwKCk7XHJcblxyXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBIdHRwUmVxdWVzdCgnUE9TVCcsIHVwbG9hZFVybCwgZm9ybURhdGEsIHtcclxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaHR0cFxyXG4gICAgICAucmVxdWVzdDxQaXhNZWRpYVVuaW9uPihyZXF1ZXN0KVxyXG4gICAgICAucGlwZVxyXG4gICAgICAoXHJcbiAgICAgICAgbWFwKGV2ZW50ID0+IHRoaXMuZ2V0RXZlbnRNZXNzYWdlKGV2ZW50KSksXHJcbiAgICAgICAgLy8gdGFwKG1lc3NhZ2UgPT4gdGhpcy5zaG93UHJvZ3Jlc3MobWVzc2FnZSkpLFxyXG4gICAgICAgIGxhc3QoKSwgLy8gcmV0dXJuIGxhc3QgKGNvbXBsZXRlZCkgbWVzc2FnZSB0byBjYWxsZXJcclxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IoZmlsZSkpXHJcbiAgICAgICkuc3Vic2NyaWJlXHJcbiAgICAgIChcclxuICAgICAgICAoKSA9PiB7IHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZTsgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdEZpbGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAvLyBpZ25vcmUgYnVibGUgY2xpY2sgb24gZmlsZSBwaWNrZXJcclxuICAgIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEV2ZW50TWVzc2FnZShldmVudDogSHR0cEV2ZW50PFBpeE1lZGlhVW5pb24+KTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlNlbnQ6XHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOlxyXG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBldmVudC50b3RhbCA9PT0gdW5kZWZpbmVkID8gMC41IDogZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWw7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDbGlwKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxyXG4gICAgICAgIGlmIChldmVudC5ib2R5ID09PSB1bmRlZmluZWQgfHwgZXZlbnQuYm9keSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignbWVkaWEgZGVzZXJpYWxpemF0aW9uIGVycm9yLiBSZXNwb25zZSBib2R5IGluIHVuZGVmaW5lZCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyByZW1vdmUgdGhpc1xyXG4gICAgICAgICAgLy8gbmVlZGVkIGZvciBDIyBkZXNlcmlhbGl6YXRpb25cclxuICAgICAgICAgIGNvbnN0IHBpeG1lZGlhID0ge1xyXG4gICAgICAgICAgICAkdHlwZTogZXZlbnQuYm9keS50eXBlLFxyXG4gICAgICAgICAgICAuLi5ldmVudC5ib2R5IGFzIGFueSxcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgdGhpcy5zcmNDaGFuZ2UuZW1pdChwaXhtZWRpYSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDbGlwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGlwU3R5bGUgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoYGluc2V0KDBweCAxMDAlIDBweCAwJSlgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZmlsZTogRmlsZSk6IChwMTogdW5rbm93biwgcDI6IE9ic2VydmFibGU8dW5rbm93bj4pID0+IE9ic2VydmFibGU8dW5rbm93bj4ge1xyXG4gICAgY29uc3QgZnVuYyA9IChlcnJvcjogdW5rbm93biwgcDI6IE9ic2VydmFibGU8dW5rbm93bj4pOiBPYnNlcnZhYmxlPHVua25vd24+ID0+IHtcclxuICAgICAgY29uc3QgbWVzc2FnZSA9IGBlcnJvciB1cGxvYWRpbmdGaWxlICR7ZmlsZS5uYW1lfS5gO1xyXG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIGVycm9yLCBwMik7XHJcbiAgICAgIGFsZXJ0KG1lc3NhZ2UpO1xyXG4gICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dW5rbm93bj4oKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGZ1bmM7XHJcbiAgfVxyXG59XHJcbiIsIjxib24tbWVkaWEgW3NyY109XCJzcmNcIiBbb2JqZWN0Rml0XT1cIk1lZGlhT2JqZWN0Rml0LkNvdmVyXCI+PC9ib24tbWVkaWE+XHJcblxyXG48ZGl2ICpuZ0lmPVwic3JjPy5zb3VyY2VzPy5sZW5ndGg9PT0wXCI+VXBsb2FkIG1lZGlhPC9kaXY+XHJcblxyXG48ZGl2IChjbGljayk9XCJzZWxlY3RGaWxlKCRldmVudClcIiBjbGFzcz1cIm1lZGlhLWNvbnRhaW5lclwiPlxyXG4gIDxpbnB1dCAjZmlsZUlucHV0IFthY2NlcHRdPVwiZmlsZVR5cGVNYXNrXCIgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3QoZmlsZUlucHV0KVwiIG5hbWU9XCJtZWRpYVwiIHR5cGU9XCJmaWxlXCIgLz5cclxuICA8c3BhbiAqbmdJZj1cImlzVXBsb2FkaW5nXCJcclxuICAgICAgICBbc3R5bGUuY2xpcC1wYXRoXT1cImNsaXBTdHlsZVwiXHJcbiAgICAgICAgW3N0eWxlLi13ZWJraXQtY2xpcC1wYXRoXT1cImNsaXBTdHlsZVwiXHJcbiAgICAgICAgY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+XHJcblxyXG4gIDxzcGFuICpuZ0lmPVwiaXNVcGxvYWRpbmdcIiBjbGFzcz1cImxvYWRlci10ZXh0XCI+XHJcbiAgICA8c3BhbiAqbmdJZj1cInByb2dyZXNzIDwgMVwiPnt7MTAwICogcHJvZ3Jlc3MgfCBudW1iZXI6ICcxLjAtMCd9fSU8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cInByb2dyZXNzID49IDFcIj5jb252ZXJ0aW5nPC9zcGFuPlxyXG4gIDwvc3Bhbj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUtY21zL3NyYy9saWIvbWVkaWEtdXBsb2FkZXIvbWVkaWEtdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUtY21zL3NyYy9saWIvbWVkaWEtdXBsb2FkZXIvbWVkaWEtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxZQUFZLEVBQWEsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFhLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQWlCLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUd0RSxNQUFNLGNBQWMsR0FBRyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNuRCxNQUFNLGNBQWMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXJDLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVoRCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsY0FBYyxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBT2hFLE1BQU0sT0FBTyxzQkFBc0I7SUF5QmpDLFlBQW9CLFNB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UUFDbkMsQ0FBQyxDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQS9LVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixnVUNyQm5DLDRzQkFnQkE7OzJGREthLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxxQkFBcUI7MElBUXhCLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqQyxTQUFTO3NCQURmLE1BQU07Z0JBSUEsWUFBWTtzQkFEbEIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWxCLFVBQVU7c0JBRGhCLEtBQUs7Z0JBaUJLLEdBQUc7c0JBRGIsS0FBSztnQkFhSyxVQUFVO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlU3R5bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbGFzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBNZWRpYU9iamVjdEZpdCwgUGl4TWVkaWFVbmlvbiB9IGZyb20gJ0BjYW5keS1raW5nZG9tL2Jvbm5pZSc7XHJcbmltcG9ydCB7IE1lZGlhVHlwZSB9IGZyb20gJy4uL2NvcmUnO1xyXG5cclxuY29uc3QgaW1hZ2VNaW1lVHlwZXMgPSBbJ2ltYWdlL3BuZycsICdpbWFnZS9qcGVnJ107XHJcbmNvbnN0IHZpZGVvTWltZVR5cGVzID0gWyd2aWRlby9tcDQnXTtcclxuXHJcbmNvbnN0IGltYWdlRmlsZVR5cGVzID0gaW1hZ2VNaW1lVHlwZXMuam9pbignLCcpO1xyXG5jb25zdCB2aWRlb0ZpbGVUeXBlcyA9IHZpZGVvTWltZVR5cGVzLmpvaW4oJywnKTtcclxuXHJcbmNvbnN0IGFsbE1lZGlhRmlsZVR5cGVzID0gYCR7aW1hZ2VGaWxlVHlwZXN9LCR7dmlkZW9GaWxlVHlwZXN9YDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYm9uYy1tZWRpYS11cGxvYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lZGlhLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZWRpYS11cGxvYWRlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWRpYVVwbG9hZGVyQ29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgTWVkaWFPYmplY3RGaXQgPSBNZWRpYU9iamVjdEZpdDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwdWJsaWMgZmlsZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNyY0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGl4TWVkaWFVbmlvbj4oKTtcclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICBwdWJsaWMgdXBsb2FkVXJsTWFwITogUmVhZG9ubHlNYXA8TWVkaWFUeXBlLCBzdHJpbmc+O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBmb3JjZVJhdGlvPzogbnVtYmVyO1xyXG5cclxuICBwdWJsaWMgcHJvZ3Jlc3MgPSAwO1xyXG4gIHB1YmxpYyBpc1VwbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgYXV0b3BsYXkgPSB0cnVlO1xyXG4gIHB1YmxpYyBjbGlwU3R5bGU/OiBTYWZlU3R5bGU7XHJcbiAgcHVibGljIGZpbGVUeXBlTWFzayA9IGFsbE1lZGlhRmlsZVR5cGVzO1xyXG5cclxuICBwcml2YXRlIF91cGxvYWRUeXBlPzogTWVkaWFUeXBlO1xyXG4gIHByaXZhdGUgX3NyYz86IFBpeE1lZGlhVW5pb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzcmMobmV3U3JjOiBQaXhNZWRpYVVuaW9uIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fc3JjID09PSBuZXdTcmMpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9zcmMgPSBuZXdTcmM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNyYygpOiBQaXhNZWRpYVVuaW9uIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9zcmM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgdXBsb2FkVHlwZShuZXdVcGxvYWRUeXBlOiBNZWRpYVR5cGUgfCB1bmRlZmluZWQpIHtcclxuICAgIHN3aXRjaCAobmV3VXBsb2FkVHlwZSkge1xyXG4gICAgICBjYXNlIFwiaW1hZ2VcIjpcclxuICAgICAgICB0aGlzLl91cGxvYWRUeXBlID0gbmV3VXBsb2FkVHlwZTtcclxuICAgICAgICB0aGlzLmZpbGVUeXBlTWFzayA9IGltYWdlRmlsZVR5cGVzO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcInZpZGVvXCI6XHJcbiAgICAgICAgdGhpcy5fdXBsb2FkVHlwZSA9IG5ld1VwbG9hZFR5cGU7XHJcbiAgICAgICAgdGhpcy5maWxlVHlwZU1hc2sgPSB2aWRlb0ZpbGVUeXBlcztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX3VwbG9hZFR5cGUgPSBuZXdVcGxvYWRUeXBlO1xyXG4gICAgICAgIHRoaXMuZmlsZVR5cGVNYXNrID0gYWxsTWVkaWFGaWxlVHlwZXM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHVwbG9hZFR5cGUoKTogTWVkaWFUeXBlIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl91cGxvYWRUeXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRmlsZVNlbGVjdChmaWxlSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgIGlmIChmaWxlSW5wdXQuZmlsZXMgPT09IHVuZGVmaW5lZCB8fCBmaWxlSW5wdXQuZmlsZXMgPT09IG51bGwgfHwgZmlsZUlucHV0LmZpbGVzLmxlbmd0aCAhPT0gMSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGZpbGUgPSBmaWxlSW5wdXQuZmlsZXNbMF07XHJcblxyXG4gICAgbGV0IHVwbG9hZGluZ01lZGlhVHlwZTogTWVkaWFUeXBlO1xyXG5cclxuICAgIGlmICh0aGlzLl91cGxvYWRUeXBlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fdXBsb2FkVHlwZSAhPT0gbnVsbCkge1xyXG4gICAgICB1cGxvYWRpbmdNZWRpYVR5cGUgPSB0aGlzLl91cGxvYWRUeXBlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaW1hZ2VNaW1lVHlwZXMuaW5jbHVkZXMoZmlsZS50eXBlKSkge1xyXG4gICAgICB1cGxvYWRpbmdNZWRpYVR5cGUgPSAnaW1hZ2UnO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodmlkZW9NaW1lVHlwZXMuaW5jbHVkZXMoZmlsZS50eXBlKSkge1xyXG4gICAgICB1cGxvYWRpbmdNZWRpYVR5cGUgPSAndmlkZW8nO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHVua25vd24gbWVkaWEgdHlwZSAke2ZpbGUudHlwZX0gKCR7ZmlsZS5uYW1lfSlgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVwbG9hZFVybCA9IHRoaXMudXBsb2FkVXJsTWFwLmdldCh1cGxvYWRpbmdNZWRpYVR5cGUpO1xyXG5cclxuICAgIGlmICh1cGxvYWRVcmwgPT09IHVuZGVmaW5lZCB8fCB1cGxvYWRVcmwgPT09IG51bGwpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihgdXBsb2FkIG1hcCBkb2Vzbid0IGhhdmUgdXJsIGZvciB0eXBlICR7dXBsb2FkaW5nTWVkaWFUeXBlfWApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcblxyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ3JhdGlvJywgYCR7dGhpcy5mb3JjZVJhdGlvID8/IDB9YCk7XHJcblxyXG4gICAgdGhpcy5wcm9ncmVzcyA9IDA7XHJcbiAgICB0aGlzLmlzVXBsb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNsaXAoKTtcclxuXHJcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgdXBsb2FkVXJsLCBmb3JtRGF0YSwge1xyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5odHRwXHJcbiAgICAgIC5yZXF1ZXN0PFBpeE1lZGlhVW5pb24+KHJlcXVlc3QpXHJcbiAgICAgIC5waXBlXHJcbiAgICAgIChcclxuICAgICAgICBtYXAoZXZlbnQgPT4gdGhpcy5nZXRFdmVudE1lc3NhZ2UoZXZlbnQpKSxcclxuICAgICAgICAvLyB0YXAobWVzc2FnZSA9PiB0aGlzLnNob3dQcm9ncmVzcyhtZXNzYWdlKSksXHJcbiAgICAgICAgbGFzdCgpLCAvLyByZXR1cm4gbGFzdCAoY29tcGxldGVkKSBtZXNzYWdlIHRvIGNhbGxlclxyXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcihmaWxlKSlcclxuICAgICAgKS5zdWJzY3JpYmVcclxuICAgICAgKFxyXG4gICAgICAgICgpID0+IHsgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlOyB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0RmlsZShldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIC8vIGlnbm9yZSBidWJsZSBjbGljayBvbiBmaWxlIHBpY2tlclxyXG4gICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RXZlbnRNZXNzYWdlKGV2ZW50OiBIdHRwRXZlbnQ8UGl4TWVkaWFVbmlvbj4pOiB2b2lkIHtcclxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICBjYXNlIEh0dHBFdmVudFR5cGUuU2VudDpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzczpcclxuICAgICAgICB0aGlzLnByb2dyZXNzID0gZXZlbnQudG90YWwgPT09IHVuZGVmaW5lZCA/IDAuNSA6IGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ2xpcCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxyXG4gICAgICAgIGlmIChldmVudC5ib2R5ID09PSB1bmRlZmluZWQgfHwgZXZlbnQuYm9keSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignbWVkaWEgZGVzZXJpYWxpemF0aW9uIGVycm9yLiBSZXNwb25zZSBib2R5IGluIHVuZGVmaW5lZCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyByZW1vdmUgdGhpc1xyXG4gICAgICAgICAgLy8gbmVlZGVkIGZvciBDIyBkZXNlcmlhbGl6YXRpb25cclxuICAgICAgICAgIGNvbnN0IHBpeG1lZGlhID0ge1xyXG4gICAgICAgICAgICAkdHlwZTogZXZlbnQuYm9keS50eXBlLFxyXG4gICAgICAgICAgICAuLi5ldmVudC5ib2R5IGFzIGFueSxcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgdGhpcy5zcmNDaGFuZ2UuZW1pdChwaXhtZWRpYSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ2xpcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xpcFN0eWxlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKGBpbnNldCgwcHggMTAwJSAwcHggMCUpYCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVycm9yKGZpbGU6IEZpbGUpOiAocDE6IHVua25vd24sIHAyOiBPYnNlcnZhYmxlPHVua25vd24+KSA9PiBPYnNlcnZhYmxlPHVua25vd24+IHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZXJyb3I6IHVua25vd24sIHAyOiBPYnNlcnZhYmxlPHVua25vd24+KTogT2JzZXJ2YWJsZTx1bmtub3duPiA9PiB7XHJcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgZXJyb3IgdXBsb2FkaW5nRmlsZSAke2ZpbGUubmFtZX0uYDtcclxuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlLCBlcnJvciwgcDIpO1xyXG4gICAgICBhbGVydChtZXNzYWdlKTtcclxuICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHVua25vd24+KCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxufVxyXG4iLCI8Ym9uLW1lZGlhIFtzcmNdPVwic3JjXCIgW29iamVjdEZpdF09XCJNZWRpYU9iamVjdEZpdC5Db3ZlclwiPjwvYm9uLW1lZGlhPlxyXG5cclxuPGRpdiAqbmdJZj1cInNyYz8uc291cmNlcz8ubGVuZ3RoPT09MFwiPlVwbG9hZCBtZWRpYTwvZGl2PlxyXG5cclxuPGRpdiAoY2xpY2spPVwic2VsZWN0RmlsZSgkZXZlbnQpXCIgY2xhc3M9XCJtZWRpYS1jb250YWluZXJcIj5cclxuICA8aW5wdXQgI2ZpbGVJbnB1dCBbYWNjZXB0XT1cImZpbGVUeXBlTWFza1wiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0KGZpbGVJbnB1dClcIiBuYW1lPVwibWVkaWFcIiB0eXBlPVwiZmlsZVwiIC8+XHJcbiAgPHNwYW4gKm5nSWY9XCJpc1VwbG9hZGluZ1wiXHJcbiAgICAgICAgW3N0eWxlLmNsaXAtcGF0aF09XCJjbGlwU3R5bGVcIlxyXG4gICAgICAgIFtzdHlsZS4td2Via2l0LWNsaXAtcGF0aF09XCJjbGlwU3R5bGVcIlxyXG4gICAgICAgIGNsYXNzPVwibG9hZGVyXCI+PC9zcGFuPlxyXG5cclxuICA8c3BhbiAqbmdJZj1cImlzVXBsb2FkaW5nXCIgY2xhc3M9XCJsb2FkZXItdGV4dFwiPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJwcm9ncmVzcyA8IDFcIj57ezEwMCAqIHByb2dyZXNzIHwgbnVtYmVyOiAnMS4wLTAnfX0lPC9zcGFuPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJwcm9ncmVzcyA+PSAxXCI+Y29udmVydGluZzwvc3Bhbj5cclxuICA8L3NwYW4+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -647,21 +647,22 @@ class FileUploaderComponent {
|
|
|
647
647
|
getEventMessage(event) {
|
|
648
648
|
switch (event.type) {
|
|
649
649
|
case HttpEventType.Sent:
|
|
650
|
-
|
|
650
|
+
break;
|
|
651
651
|
case HttpEventType.UploadProgress:
|
|
652
652
|
this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;
|
|
653
653
|
this.updateClip();
|
|
654
|
-
|
|
654
|
+
break;
|
|
655
655
|
case HttpEventType.Response:
|
|
656
656
|
if (event.body === null || event.body === undefined) {
|
|
657
657
|
console.warn(`empty body from uploader`);
|
|
658
|
-
|
|
658
|
+
break;
|
|
659
659
|
}
|
|
660
660
|
this.srcChange.emit(event.body);
|
|
661
|
-
|
|
661
|
+
break;
|
|
662
662
|
default:
|
|
663
|
-
|
|
663
|
+
break;
|
|
664
664
|
}
|
|
665
|
+
this.cd.detectChanges();
|
|
665
666
|
}
|
|
666
667
|
updateClip() {
|
|
667
668
|
this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);
|
|
@@ -1128,9 +1129,10 @@ const imageFileTypes = imageMimeTypes.join(',');
|
|
|
1128
1129
|
const videoFileTypes = videoMimeTypes.join(',');
|
|
1129
1130
|
const allMediaFileTypes = `${imageFileTypes},${videoFileTypes}`;
|
|
1130
1131
|
class MediaUploaderComponent {
|
|
1131
|
-
constructor(sanitizer, http) {
|
|
1132
|
+
constructor(sanitizer, http, cd) {
|
|
1132
1133
|
this.sanitizer = sanitizer;
|
|
1133
1134
|
this.http = http;
|
|
1135
|
+
this.cd = cd;
|
|
1134
1136
|
this.MediaObjectFit = MediaObjectFit;
|
|
1135
1137
|
this.srcChange = new EventEmitter();
|
|
1136
1138
|
this.progress = 0;
|
|
@@ -1214,11 +1216,11 @@ class MediaUploaderComponent {
|
|
|
1214
1216
|
getEventMessage(event) {
|
|
1215
1217
|
switch (event.type) {
|
|
1216
1218
|
case HttpEventType.Sent:
|
|
1217
|
-
|
|
1219
|
+
break;
|
|
1218
1220
|
case HttpEventType.UploadProgress:
|
|
1219
1221
|
this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;
|
|
1220
1222
|
this.updateClip();
|
|
1221
|
-
|
|
1223
|
+
break;
|
|
1222
1224
|
case HttpEventType.Response:
|
|
1223
1225
|
if (event.body === undefined || event.body === null) {
|
|
1224
1226
|
console.error('media deserialization error. Response body in undefined');
|
|
@@ -1232,10 +1234,11 @@ class MediaUploaderComponent {
|
|
|
1232
1234
|
};
|
|
1233
1235
|
this.srcChange.emit(pixmedia);
|
|
1234
1236
|
}
|
|
1235
|
-
|
|
1237
|
+
break;
|
|
1236
1238
|
default:
|
|
1237
|
-
|
|
1239
|
+
break;
|
|
1238
1240
|
}
|
|
1241
|
+
this.cd.detectChanges();
|
|
1239
1242
|
}
|
|
1240
1243
|
updateClip() {
|
|
1241
1244
|
this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);
|
|
@@ -1249,13 +1252,13 @@ class MediaUploaderComponent {
|
|
|
1249
1252
|
};
|
|
1250
1253
|
return func;
|
|
1251
1254
|
}
|
|
1252
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MediaUploaderComponent, deps: [{ token: i1$1.DomSanitizer }, { token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1255
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MediaUploaderComponent, deps: [{ token: i1$1.DomSanitizer }, { token: i1$2.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1253
1256
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: MediaUploaderComponent, selector: "bonc-media-uploader", inputs: { uploadUrlMap: "uploadUrlMap", forceRatio: "forceRatio", src: "src", uploadType: "uploadType" }, outputs: { srcChange: "srcChange" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\r\n\r\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MarcyMediaComponent, selector: "bon-media", inputs: ["src", "objectFit"], outputs: ["isLoaded"] }, { kind: "pipe", type: i2$1.DecimalPipe, name: "number" }] }); }
|
|
1254
1257
|
}
|
|
1255
1258
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MediaUploaderComponent, decorators: [{
|
|
1256
1259
|
type: Component,
|
|
1257
1260
|
args: [{ selector: 'bonc-media-uploader', template: "<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\r\n\r\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"] }]
|
|
1258
|
-
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }, { type: i1$2.HttpClient }], propDecorators: { fileInput: [{
|
|
1261
|
+
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }, { type: i1$2.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: { fileInput: [{
|
|
1259
1262
|
type: ViewChild,
|
|
1260
1263
|
args: ['fileInput', { static: true }]
|
|
1261
1264
|
}], srcChange: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candy-kingdom-bonnie-cms.mjs","sources":["../../../../libs/bonnie-cms/src/lib/generated/file-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/i-equatable.ts","../../../../libs/bonnie-cms/src/lib/generated/i-setting.ts","../../../../libs/bonnie-cms/src/lib/generated/localized-text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/lottie-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/one-image-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-base.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-group.ts","../../../../libs/bonnie-cms/src/lib/generated/setting.ts","../../../../libs/bonnie-cms/src/lib/generated/svg-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-type.ts","../../../../libs/bonnie-cms/src/lib/generated/index.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceType.ts","../../../../libs/bonnie-cms/src/lib/core/TextEditorField.ts","../../../../libs/bonnie-cms/src/lib/core/Utils.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceVisibility.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable.directive.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable-group.ts","../../../../libs/bonnie-cms/src/lib/core-components/form-base.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.html","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.ts","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.html","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.ts","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.html","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.ts","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.html","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.html","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/text-form/TextInputStyle.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.html","../../../../libs/bonnie-cms/src/lib/services/API_BASE_URL.ts","../../../../libs/bonnie-cms/src/lib/services/data.service.ts","../../../../libs/bonnie-cms/src/lib/services/admin-data.service.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.html","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor-anchor.directive.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/bone-editor-base.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/ContentPreset.ts","../../../../libs/bonnie-cms/src/lib/bonnie-cms.module.ts","../../../../libs/bonnie-cms/src/candy-kingdom-bonnie-cms.ts"],"sourcesContent":["/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface FileSettingData extends SettingData {\r\n allowedMimeTypes: string[];\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport interface IEquatable<T> {\r\n\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\n\r\nexport interface ISetting<T extends SettingData> {\r\n id: string;\r\n title: string;\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\nimport { LocalizedString } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LocalizedTextSettingData extends SettingData {\r\n text: LocalizedString;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LottieSettingData extends SettingData {\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileFormat } from \"@candy-kingdom/bonnie\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface OneImageSettingData extends SettingData {\r\n width: number;\r\n height: number;\r\n format: FileFormat;\r\n allowedMimeTypes: string[];\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingBase {\r\n id: string;\r\n order: number;\r\n title: string;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingData {\r\n type: string;\r\n empty: SettingData;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { Setting } from \"./setting\";\r\n\r\nexport interface SettingGroup {\r\n id: string;\r\n order: number;\r\n title: string;\r\n records: Setting<any>[];\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { SettingBase } from \"./setting-base\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { ISetting } from \"./i-setting\";\r\n\r\nexport interface Setting<T extends SettingData> extends SettingBase {\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface SvgSettingData extends SettingData {\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\n\r\nexport interface TextSettingData extends SettingData {\r\n text: string;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport enum TextSettingType {\r\n SingleLine = 0,\r\n MultiLine = 1,\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport * from './file-setting-data';\r\nexport * from './i-equatable';\r\nexport * from './i-setting';\r\nexport * from './localized-text-setting-data';\r\nexport * from './lottie-setting-data';\r\nexport * from './one-image-setting-data';\r\nexport * from './setting-base';\r\nexport * from './setting-data';\r\nexport * from './setting-group';\r\nexport * from './setting';\r\nexport * from './svg-setting-data';\r\nexport * from './text-setting-data';\r\nexport * from './text-setting-type';\r\n","export enum DeviceType {\r\n NotSet = 0,\r\n Mobile = 1,\r\n Tablet = 2,\r\n Desktop = 3\r\n}\r\n","\r\n\r\n\r\nexport enum TextEditorField {\r\n NotSet = 0,\r\n Input = 1,\r\n Textarea = 2\r\n}\r\n","\r\n// tslint:disable-next-line: max-line-length\r\nexport const regExpIsMobile = new RegExp(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/, 'i');\r\n\r\nexport function isLocalUrlString(url: string): boolean {\r\n if (url === undefined || url === null || url.trim().length === 0)\r\n return true;\r\n\r\n if (url.startsWith('//'))\r\n return false;\r\n\r\n if (url.startsWith('./') || url.startsWith('/'))\r\n return true;\r\n\r\n return false;\r\n}\r\n\r\nexport function hasFlag<T extends number>(value: T, flag: T): boolean {\r\n return (value & flag) === flag;\r\n}\r\n\r\nexport function setOrRemoveFlag<T extends number>(value: T, flag: T, enabled: boolean): T {\r\n return (enabled ? value | flag : value & ~flag) as T;\r\n}\r\n","export enum DeviceVisibility {\r\n None = 0,\r\n Desktop = 1,\r\n Tablet = 2,\r\n Mobile = 4,\r\n All = Desktop | Tablet | Mobile\r\n}\r\n","import { Directive, Output, EventEmitter, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[boncEditable]',\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableDirective), multi: true }]\r\n})\r\nexport class EditableDirective<T = unknown> {\r\n @Output()\r\n public readonly saved = new EventEmitter<T>();\r\n\r\n @Output()\r\n public readonly editModeChange = new EventEmitter<boolean>();\r\n\r\n @Output()\r\n public readonly externalSaveCall = new EventEmitter<void>();\r\n\r\n @Output()\r\n public readonly canceled = new EventEmitter<void>();\r\n\r\n @Output()\r\n public readonly valueChange = new EventEmitter<T>();\r\n\r\n private propagateChange: (newValue: T) => void = () => { };\r\n\r\n private _inEditMode = false;\r\n private _isDirty = false;\r\n\r\n private _value?: T;\r\n private _originalValue?: T;\r\n private _storedData?: string;\r\n\r\n public get inEditMode(): boolean {\r\n return this._inEditMode;\r\n }\r\n\r\n public subscribe\r\n (\r\n params: {\r\n readonly onValueChange?: (x: T) => void,\r\n readonly onEditModeChange?: (x: boolean) => void,\r\n readonly onSaveRequest?: () => void\r\n }\r\n ): Subscription[] {\r\n\r\n const subscriptions: Subscription[] = [];\r\n\r\n if (params.onValueChange !== undefined && params.onValueChange !== null) {\r\n subscriptions.push\r\n (\r\n this.valueChange.subscribe((x: T) => {\r\n if (params.onValueChange)\r\n params.onValueChange(x);\r\n })\r\n );\r\n }\r\n\r\n if (params.onEditModeChange !== undefined) {\r\n subscriptions.push\r\n (\r\n this.editModeChange.subscribe((x: boolean) => {\r\n if (params.onEditModeChange)\r\n params.onEditModeChange(x);\r\n })\r\n );\r\n }\r\n\r\n if (params.onSaveRequest !== undefined) {\r\n subscriptions.push\r\n (\r\n this.externalSaveCall.subscribe(() => {\r\n if (params.onSaveRequest)\r\n params.onSaveRequest();\r\n })\r\n );\r\n }\r\n\r\n return subscriptions;\r\n }\r\n\r\n public requestSave() {\r\n this.externalSaveCall.emit();\r\n }\r\n\r\n public startEditing = (): void => {\r\n if (this._inEditMode) {\r\n this.updateDirty();\r\n return;\r\n }\r\n\r\n this._inEditMode = true;\r\n this.updateDirty();\r\n this.editModeChange.emit(true);\r\n }\r\n\r\n public save(newData?: T): void {\r\n if (!this._inEditMode) {\r\n console.warn('save before edit mode'); //todo: fix that\r\n }\r\n\r\n this.finishEditing();\r\n\r\n const newUnqieNotEmptyData = this.value === newData || newData === undefined\r\n ? JSON.parse(JSON.stringify(this.value))\r\n : newData;\r\n\r\n this.setOriginal(newUnqieNotEmptyData);\r\n this.updateDirty();\r\n\r\n this.saved.emit(newUnqieNotEmptyData);\r\n\r\n this.propagateChange(newUnqieNotEmptyData);\r\n }\r\n\r\n public patchSave(propName: keyof T, newDataParts: T[keyof T]): void {\r\n if (this._originalValue === undefined || this._originalValue === null)\r\n return;\r\n\r\n if (typeof this._originalValue !== \"object\") {\r\n console.warn('patch save called on not object type');\r\n return;\r\n }\r\n\r\n (this._originalValue as any)[propName] = newDataParts;\r\n\r\n this.setOriginal(this._originalValue);\r\n\r\n this.updateDirty();\r\n\r\n if (!this.isDirty)\r\n this.close();\r\n }\r\n\r\n // change model without opening or closing the editor\r\n\r\n public silentPatch(dict: Partial<T>): void {\r\n for (const key in dict) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (!dict.hasOwnProperty(key))\r\n continue;\r\n\r\n const propVal = dict[key];\r\n\r\n\r\n if (this._value !== undefined && this._value !== null) {\r\n this._value[key] = propVal as any;\r\n }\r\n\r\n if (this._originalValue !== undefined && this._originalValue !== null) {\r\n this._originalValue[key] = propVal as any;\r\n }\r\n }\r\n this._storedData = JSON.stringify(this._originalValue);\r\n }\r\n\r\n public cancel(): void {\r\n if (!this._inEditMode)\r\n return;\r\n\r\n this.finishEditing();\r\n\r\n // reset value\r\n this.setValue(this._originalValue);\r\n\r\n this.canceled.emit();\r\n }\r\n\r\n public close(): void {\r\n this.finishEditing();\r\n }\r\n\r\n private finishEditing(): void {\r\n if (!this._inEditMode)\r\n return;\r\n\r\n this._inEditMode = false;\r\n this.editModeChange.emit(false);\r\n }\r\n\r\n private setValue(newValue?: T): void {\r\n this._value = (newValue === null || newValue === undefined)\r\n ? undefined\r\n : JSON.parse(JSON.stringify(newValue));\r\n\r\n this.valueChange.emit(this._value);\r\n }\r\n\r\n public set value(newValue: T | undefined) {\r\n this.setValue(newValue);\r\n }\r\n\r\n public get value(): T | undefined {\r\n return this._value;\r\n }\r\n\r\n public updateDirty(): void {\r\n this._isDirty = JSON.stringify(this._value) !== this._storedData;\r\n }\r\n\r\n public markAsDirty(): void {\r\n this._isDirty = true;\r\n }\r\n\r\n public get isDirty(): boolean {\r\n return this._isDirty;\r\n }\r\n\r\n private setOriginal(newOriginalValue: T) {\r\n this._originalValue = newOriginalValue;\r\n this._storedData = JSON.stringify(newOriginalValue);\r\n }\r\n\r\n // #region ngModel\r\n\r\n writeValue(newValue: T): void {\r\n this.finishEditing();\r\n\r\n this.setOriginal(newValue);\r\n this._isDirty = false;\r\n\r\n this.setValue(newValue);\r\n }\r\n\r\n setDisabledState?(): void {\r\n }\r\n\r\n registerOnChange(tellAngularThatSomethingIsChanged: (newValue: T) => void): void {\r\n this.propagateChange = (newValue: T): void => {\r\n tellAngularThatSomethingIsChanged(newValue);\r\n };\r\n }\r\n\r\n registerOnTouched(): void {\r\n }\r\n\r\n // #endregion\r\n}\r\n","import { QueryList, ContentChildren, AfterContentInit, OnDestroy, Output, EventEmitter, Component } from '@angular/core';\r\nimport { Subscription, Subject, debounceTime } from 'rxjs';\r\n\r\nimport { EditableDirective } from './editable.directive';\r\n\r\n@Component({\r\n selector: 'bonc-editable-group',\r\n template: '<ng-content></ng-content>'\r\n})\r\nexport class EditableGroupComponent implements AfterContentInit, OnDestroy {\r\n @Output()\r\n public readonly editModeChange = new EventEmitter<boolean>();\r\n\r\n @Output()\r\n public readonly saved = new EventEmitter<void>();\r\n\r\n @Output()\r\n public readonly requestEditorClose = new EventEmitter<boolean>();\r\n\r\n @ContentChildren(EditableDirective, { descendants: true })\r\n public editables!: QueryList<EditableDirective>;\r\n\r\n private readonly subscriptions: Subscription[] = [];\r\n private _inEditMode = false;\r\n\r\n private readonly saveSubject = new Subject<void>();\r\n\r\n public ngAfterContentInit(): void {\r\n this.saveSubject\r\n .asObservable()\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.saved.emit());\r\n\r\n this.updateSubscriptions();\r\n\r\n this.editables.changes.subscribe\r\n (\r\n () => {\r\n this.clearSubscribtions();\r\n this.updateSubscriptions();\r\n }\r\n );\r\n }\r\n\r\n public get inEditMode(): boolean {\r\n return this._inEditMode;\r\n }\r\n\r\n public saveAll(): void {\r\n this.editables.forEach(x => x.requestSave());\r\n }\r\n\r\n public cancelAll(): void {\r\n this.editables.forEach(x => x.cancel());\r\n }\r\n\r\n public closeAll(): void {\r\n this.requestEditorClose.emit(true);\r\n this.editables.forEach(x => x.close());\r\n }\r\n\r\n private clearSubscribtions(): void {\r\n this.subscriptions.forEach(x => x.unsubscribe());\r\n this.subscriptions.splice(0, this.subscriptions.length);\r\n }\r\n\r\n private updateSubscriptions(): void {\r\n\r\n this.editables.forEach\r\n (\r\n editable => {\r\n\r\n this.subscriptions.push(\r\n editable.saved.subscribe(\r\n () => this.onSave()\r\n )\r\n );\r\n\r\n this.subscriptions.push(\r\n ...editable.subscribe({\r\n onEditModeChange: this.updateEditMode.bind(this)\r\n })\r\n );\r\n }\r\n );\r\n }\r\n\r\n private onSave(): void {\r\n this.saveSubject.next();\r\n }\r\n\r\n private updateEditMode(): void {\r\n const newEditMode = this.editables\r\n .filter(x => x.inEditMode)\r\n .length > 0;\r\n\r\n if (newEditMode === this._inEditMode)\r\n return;\r\n\r\n this._inEditMode = newEditMode;\r\n\r\n this.editModeChange.next(newEditMode);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.clearSubscribtions();\r\n }\r\n}\r\n","import { Component, Host, Input } from '@angular/core';\r\n\r\nimport { EditableDirective } from './editable.directive';\r\n\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class FormBaseComponent<TData = unknown> {\r\n public static readonly inputs = ['locale'];\r\n\r\n protected name = '';\r\n private _locale = '';\r\n\r\n constructor(@Host() public readonly editable: EditableDirective<TData>) { }\r\n\r\n @Input()\r\n public set locale(value: string) {\r\n this._locale = value;\r\n }\r\n\r\n public get locale(): string {\r\n return this._locale;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { DeviceType } from '../core';\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\n\r\n@Component({\r\n selector: 'bonc-translation-input',\r\n templateUrl: './translation-input.component.html',\r\n styleUrls: ['./translation-input.component.scss']\r\n})\r\nexport class TranslationInputComponent {\r\n @Input({ required: true })\r\n public text!: LocalizedString;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device: DeviceType = DeviceType.NotSet;\r\n\r\n @Output()\r\n public startEditing: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public changed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public blurred: EventEmitter<void> = new EventEmitter();\r\n\r\n public onClick() {\r\n this.startEditing.emit();\r\n }\r\n\r\n public onKeyPress() {\r\n this.changed.emit();\r\n }\r\n\r\n public onBlur() {\r\n this.blurred.emit();\r\n }\r\n}\r\n","<input [(ngModel)]=\"text[locale]\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onKeyPress()\"\r\n (blur)=\"onBlur()\" />\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\nimport { DeviceType } from '../core';\r\n\r\n@Component({\r\n selector: 'bonc-translation-textarea',\r\n templateUrl: './translation-textarea.component.html',\r\n styleUrls: ['./translation-textarea.component.scss']\r\n})\r\nexport class TranslationTextareaComponent implements OnChanges, AfterViewInit {\r\n @ViewChildren(CdkTextareaAutosize)\r\n public autosizeList!: QueryList<CdkTextareaAutosize>;\r\n\r\n @Input()\r\n public minRows?: number;\r\n\r\n @Input()\r\n public maxRows?: number;\r\n\r\n @Input({ required: true })\r\n public text!: LocalizedString;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device: DeviceType = DeviceType.NotSet;\r\n\r\n @Output()\r\n public startEditing: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public changed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public blurred: EventEmitter<void> = new EventEmitter();\r\n\r\n constructor(\r\n private ngZone: NgZone\r\n ) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(this.triggerResize.bind(this));\r\n }\r\n\r\n ngOnChanges(): void {\r\n setTimeout(this.triggerResize.bind(this), 500);\r\n }\r\n\r\n public onClick() {\r\n this.startEditing.emit();\r\n }\r\n\r\n public onKeyPress() {\r\n this.changed.emit();\r\n }\r\n\r\n public onBlur() {\r\n this.blurred.emit();\r\n }\r\n\r\n private triggerResize() {\r\n // console.log('trigger resize!');\r\n\r\n this.ngZone.onStable.pipe(take(1))\r\n .subscribe(() => {\r\n this.autosizeList.forEach(x => x.resizeToFitContent(true));\r\n });\r\n }\r\n}\r\n","<textarea [(ngModel)]=\"text[locale]\"\r\n [cdkAutosizeMinRows]=\"minRows\"\r\n [cdkAutosizeMaxRows]=\"maxRows\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onKeyPress()\"\r\n (blur)=\"onBlur()\"\r\n matInput\r\n cdkTextareaAutosize>\r\n</textarea>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\nimport { TextEditorField } from '../../core';\r\n\r\n@Component({\r\n selector: 'bonc-link-popup',\r\n templateUrl: './link-popup.component.html',\r\n styleUrl: './link-popup.component.scss'\r\n})\r\nexport class LinkPopupComponent {\r\n public readonly TextEditorField = TextEditorField;\r\n @Output()\r\n public linkChange: EventEmitter<LocalizedString> = new EventEmitter();\r\n\r\n @Output()\r\n public startEditing: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public changed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public blurred: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public open: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public closed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Input({ required: true })\r\n public field!: TextEditorField;\r\n public LinkPopupField = TextEditorField;\r\n\r\n @Input()\r\n public maxRows?: number;\r\n\r\n @Input()\r\n public minRows?: number;\r\n\r\n @Input({ required: true })\r\n public linkTitle!: LocalizedString; // todo: allready in weblink\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input({ required: true })\r\n public link!: LocalizedString;\r\n\r\n public popupIsShown = false;\r\n\r\n public onClick() {\r\n this.startEditing.emit();\r\n }\r\n\r\n public onChange() {\r\n console.log('change link pop up')\r\n this.changed.emit();\r\n }\r\n\r\n public onBlur() {\r\n this.blurred.emit();\r\n }\r\n\r\n public showPopup(): void {\r\n this.popupIsShown = true;\r\n this.open.emit();\r\n }\r\n\r\n public hidePopup(): void {\r\n this.popupIsShown = false;\r\n this.closed.emit();\r\n }\r\n}\r\n","<bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\r\n (click)=\"showPopup()\"\r\n [text]=\"linkTitle\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"onClick()\"\r\n (changed)=\"onChange()\"\r\n (blurred)=\"onBlur()\">\r\n</bonc-translation-input>\r\n\r\n<bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\r\n (click)=\"showPopup()\"\r\n [text]=\"linkTitle\"\r\n [locale]=\"locale\"\r\n [minRows]=\"minRows\"\r\n [maxRows]=\"maxRows\"\r\n (startEditing)=\"onClick()\"\r\n (changed)=\"onChange()\"\r\n (blurred)=\"onBlur()\">\r\n</bonc-translation-textarea>\r\n\r\n<div *ngIf=\"popupIsShown\">\r\n <div class=\"popup\">\r\n <a (click)=\"hidePopup()\" class=\"close\">close</a>\r\n\r\n <label>Link\r\n <input [(ngModel)]=\"link[locale]\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onChange()\"\r\n (blur)=\"onBlur()\">\r\n </label>\r\n\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { EditableDirective } from '../core-components';\r\n\r\n@Component({\r\n selector: 'bonc-form-controls',\r\n templateUrl: './form-controls.component.html',\r\n styleUrls: ['./form-controls.component.scss']\r\n})\r\nexport class FormControlsComponent {\r\n @Input({ required: true })\r\n public editable!: EditableDirective<any>;\r\n}\r\n","<div [class.edit]=\"editable.inEditMode\" class=\"content\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<div [class.hidden]=\"!editable.inEditMode\" class=\"controls\">\r\n <a *ngIf=\"!editable.isDirty\" (click)=\"editable.cancel()\" class=\"close\">close</a>\r\n <ng-container *ngIf=\"editable.isDirty\">\r\n <a (click)=\"editable.cancel()\">reset</a>\r\n <a (click)=\"editable.requestSave()\" class=\"apply\">apply</a>\r\n </ng-container>\r\n</div>\r\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\r\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\r\nimport { catchError, last, map, Observable } from 'rxjs';\r\n\r\nimport { FileMeta, FileSrc } from '@candy-kingdom/bonnie';\r\n\r\n@Component({\r\n selector: 'bonc-file-uploader',\r\n templateUrl: './file-uploader.component.html',\r\n styleUrls: ['./file-uploader.component.scss']\r\n})\r\nexport class FileUploaderComponent {\r\n @ViewChild('fileInput', { static: true })\r\n public fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n @Output()\r\n public srcChange = new EventEmitter<FileSrc<FileMeta>>();\r\n\r\n @Input({ required: true })\r\n public uploadUrlMap!: ReadonlyMap<string, string>;\r\n\r\n public progress = 0;\r\n public isUploading = false;\r\n\r\n public autoplay = true;\r\n public clipStyle?: SafeStyle;\r\n\r\n public fileTypeMask?: string = undefined;\r\n\r\n private _uploadTypes: string[] = [];\r\n private _src?: FileSrc<FileMeta>;\r\n\r\n constructor(private sanitizer: DomSanitizer, private http: HttpClient, private readonly cd: ChangeDetectorRef) {\r\n }\r\n\r\n @Input()\r\n public set src(newSrc: FileSrc<FileMeta> | undefined) {\r\n if (this._src === newSrc)\r\n return;\r\n\r\n this._src = newSrc;\r\n }\r\n\r\n public get src(): FileSrc<FileMeta> | undefined {\r\n return this._src;\r\n }\r\n\r\n @Input()\r\n public set uploadTypes(newUploadType: string[]) {\r\n this._uploadTypes.splice(0, this._uploadTypes.length);\r\n\r\n this._uploadTypes.push(...newUploadType);\r\n\r\n this.fileTypeMask = this._uploadTypes.length === 0 ? undefined : this._uploadTypes.join(',');\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get uploadTypes(): string[] {\r\n return this._uploadTypes;\r\n }\r\n\r\n public onFileSelect(fileInput: HTMLInputElement) {\r\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\r\n return;\r\n\r\n const file = fileInput.files[0];\r\n\r\n const uploadUrl = this.uploadUrlMap.get(file.type) ?? this.uploadUrlMap.get(\"\");\r\n\r\n if (uploadUrl === undefined || uploadUrl === null) {\r\n console.error(`upload map doesn't have url for type '${file.type}'`);\r\n return;\r\n }\r\n\r\n const formData: FormData = new FormData();\r\n\r\n formData.append('file', file);\r\n\r\n this.progress = 0;\r\n this.isUploading = true;\r\n\r\n this.updateClip();\r\n\r\n const request = new HttpRequest('POST', uploadUrl, formData, {\r\n reportProgress: true\r\n });\r\n\r\n this.http\r\n .request<FileSrc<FileMeta>>(request)\r\n .pipe\r\n (\r\n map(event => this.getEventMessage(event)),\r\n // tap(message => this.showProgress(message)),\r\n last(), // return last (completed) message to caller\r\n catchError(this.handleError(file))\r\n ).subscribe\r\n (\r\n () => { this.isUploading = false; }\r\n );\r\n }\r\n\r\n public selectFile(event: Event): void {\r\n // ignore buble click on file picker\r\n if (event.target === this.fileInput.nativeElement)\r\n return;\r\n\r\n this.fileInput.nativeElement.click();\r\n }\r\n\r\n private getEventMessage(event: HttpEvent<FileSrc<FileMeta>>): void {\r\n switch (event.type) {\r\n case HttpEventType.Sent:\r\n return;\r\n\r\n case HttpEventType.UploadProgress:\r\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\r\n this.updateClip();\r\n return;\r\n\r\n case HttpEventType.Response:\r\n if (event.body === null || event.body === undefined) {\r\n console.warn(`empty body from uploader`);\r\n return;\r\n }\r\n\r\n this.srcChange.emit(event.body);\r\n return;\r\n\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n private updateClip(): void {\r\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\r\n }\r\n\r\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\r\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\r\n const message = `error uploadingFile ${file.name}.`;\r\n console.error(message, error, p2);\r\n alert(message);\r\n return new Observable<unknown>();\r\n };\r\n\r\n return func;\r\n }\r\n}\r\n","<div *ngIf=\"src === undefined || src.url === undefined || src?.url?.length === 0\">Upload file</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { FileMeta, FileSrc, ImageMeta, OpenGraphData } from '@candy-kingdom/bonnie';\r\n\r\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\r\n\r\nconst uploadMap = new Map<string, string>();\r\nuploadMap.set('', `/api/admin/upload/image?width=${1200}&height=${630}&format=image/jpeg`);\r\n\r\n@Component({\r\n selector: 'bonc-seo-form',\r\n templateUrl: './seo-form.component.html',\r\n styleUrls: ['./seo-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class SeoFormComponent extends FormBaseComponent<OpenGraphData> implements OnInit {\r\n public readonly uploadMap = uploadMap;\r\n\r\n private _pageId = '';\r\n public ogImageUploadUrl = '';\r\n\r\n @Input()\r\n public label = '';\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input()\r\n public set pageId(value: string) {\r\n this._pageId = value;\r\n this.ogImageUploadUrl = `/api/admin/page/Og-Image?pageId=${this.pageId}`; // todo: replace with link to single image api\r\n }\r\n\r\n public get pageId(): string {\r\n return this._pageId;\r\n }\r\n\r\n public ResToSrc(res: { url: string }): string {\r\n return res.url;\r\n }\r\n\r\n public replaceImage($event: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n if (this.editable.value !== undefined) {\r\n this.editable.value.image[this.locale] = $event as FileSrc<ImageMeta>;\r\n }\r\n\r\n this.editable.updateDirty();\r\n }\r\n}\r\n","<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\r\n <h2 *ngIf=\"label\">{{label}}</h2>\r\n\r\n <div class=\"form-group\">\r\n <label>Title</label>\r\n <bonc-translation-input [text]=\"editable.value.title\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-input>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Description</label>\r\n <bonc-translation-textarea [text]=\"editable.value.description\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-textarea>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Share image | 1200x630</label>\r\n\r\n <bonc-file-uploader [src]=\"editable.value.image[locale]\"\r\n [uploadTypes]=\"['image/png', 'image/jpeg']\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"replaceImage($event)\">\r\n <img *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [src]=\"editable.value.image[locale].url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [href]=\"editable.value.image[locale].url\" download target=\"_blank\">Download</a>\r\n </div>\r\n\r\n</bonc-form-controls>\r\n\r\n<div *ngIf=\"!editable.value\">Editable Value canot be null or undefined</div>\r\n","import { ChangeDetectorRef, Component, Host, Input, OnInit, inject } from '@angular/core';\r\n\r\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components/editable.directive';\r\n\r\n@Component({\r\n selector: 'bonc-svg-form',\r\n templateUrl: './svg-form.component.html',\r\n styleUrls: ['./svg-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class SvgFormComponent extends FormBaseComponent<FileSrc<SvgMeta>> implements OnInit {\r\n private readonly cd = inject(ChangeDetectorRef);\r\n\r\n public readonly SvgMime = 'image/svg+xml';\r\n\r\n @Input()\r\n public label = '';\r\n\r\n public uploadMap = new Map<string, string>();\r\n\r\n private _uploadUrl = '/api/admin/upload/image/svg';\r\n\r\n constructor(@Host() editable: EditableDirective<FileSrc<SvgMeta>>) {\r\n super(editable)\r\n\r\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input()\r\n public set uploadUrl(newValue: string) {\r\n this._uploadUrl = newValue;\r\n\r\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"[SvgMime]\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n\r\n</bonc-form-controls>\r\n","import { ChangeDetectorRef, Component, Host, Input, OnInit, inject } from '@angular/core';\r\n\r\nimport { FileMeta, FileSrc, ImageMeta } from '@candy-kingdom/bonnie';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components/editable.directive';\r\n\r\nconst DefaultImageMimeTypes = ['image/png', 'image/jpeg'];\r\n\r\n@Component({\r\n selector: 'bonc-one-image-form',\r\n templateUrl: './one-image-form.component.html',\r\n styleUrls: ['./one-image-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class OneImageFormComponent extends FormBaseComponent<FileSrc<ImageMeta>> implements OnInit {\r\n private readonly cd = inject(ChangeDetectorRef);\r\n\r\n public uploadMap = new Map<string, string>();\r\n\r\n private _mimeTypes = DefaultImageMimeTypes;\r\n\r\n private _uploadUrl = '/api/admin/upload/image';\r\n\r\n private _label = ''\r\n\r\n constructor(@Host() editable: EditableDirective<FileSrc<ImageMeta>>) {\r\n super(editable)\r\n\r\n this.uploadMap.set('', this._uploadUrl);\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input()\r\n public set label(newValue: string) {\r\n this._label = newValue;\r\n }\r\n\r\n public get label(): string {\r\n return this._label;\r\n }\r\n\r\n @Input()\r\n public set uploadUrl(newValue: string) {\r\n this._uploadUrl = newValue;\r\n\r\n this.uploadMap.set('', this._uploadUrl);\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n @Input()\r\n public set mimeTypes(newValue: string[]) {\r\n this._mimeTypes = newValue.length === 0 ? DefaultImageMimeTypes : newValue;\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get mimeTypes(): string[] {\r\n return this._mimeTypes;\r\n }\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<ImageMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"mimeTypes\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n\r\n</bonc-form-controls>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components';\r\n\r\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\r\n\r\n@Component({\r\n selector: 'bonc-file-form',\r\n templateUrl: './file-form.component.html',\r\n styleUrls: ['./file-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class FileFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\r\n @Input()\r\n public label = '';\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input({ required: true })\r\n public uploadTypes: string[] = [];\r\n\r\n @Input({ required: true })\r\n public uploadMap = new Map<string, string>();;\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"uploadTypes\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <div *ngIf=\"editable.value?.url?.length ?? 0 > 0\">{{editable.value?.url}}</div>\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n</bonc-form-controls>\r\n","\r\nexport enum TextInputStyle {\r\n NotSet = 0,\r\n SingleLine = 1,\r\n MultiLine = 2\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TextInputStyle } from './TextInputStyle';\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components';\r\n\r\n@Component({\r\n selector: 'bonc-text-form',\r\n templateUrl: './text-form.component.html',\r\n styleUrls: ['./text-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class TextFormComponent extends FormBaseComponent<string> implements OnInit {\r\n public readonly TextInputStyle = TextInputStyle;\r\n\r\n @Input()\r\n public label = '';\r\n\r\n @Input()\r\n public type = TextInputStyle.SingleLine;\r\n\r\n ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n\r\n <input *ngIf=\"editable && type === TextInputStyle.SingleLine\"\r\n [(ngModel)]=\"editable.value\"\r\n (click)=\"editable.startEditing()\"\r\n (keyup)=\"editable.updateDirty()\"\r\n (blur)=\"editable.updateDirty()\" />\r\n\r\n <textarea *ngIf=\"editable && type === TextInputStyle.MultiLine\"\r\n [(ngModel)]=\"editable.value\"\r\n (click)=\"editable.startEditing()\"\r\n (keyup)=\"editable.updateDirty()\"\r\n (blur)=\"editable.updateDirty()\">\r\n </textarea>\r\n</bonc-form-controls>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components/editable.directive';\r\nimport { AnimationOptions } from 'ngx-lottie';\r\n\r\n@Component({\r\n selector: 'bonc-lottie-form',\r\n templateUrl: './lottie-form.component.html',\r\n styleUrls: ['./lottie-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class LottieFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\r\n public readonly LottieMimeType = 'application/json';\r\n\r\n public animOptions?: AnimationOptions;\r\n\r\n @Input()\r\n public label = '';\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n\r\n this.editable.valueChange.subscribe(x => {\r\n const url = x?.url ?? '';\r\n this.animOptions = url.length === 0 ? undefined : { path: url };\r\n })\r\n }\r\n\r\n @Input({ required: true })\r\n public uploadMap = new Map<string, string>();;\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"[LottieMimeType]\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n\r\n <ng-lottie *ngIf=\"animOptions\"\r\n [options]=\"animOptions\"></ng-lottie>\r\n\r\n\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n</bonc-form-controls>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\n\r\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\r\nimport { TextEditorField } from '../../core';\r\n\r\n@Component({\r\n selector: 'bonc-translation-form',\r\n templateUrl: './translation-form.component.html',\r\n styleUrls: ['./translation-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class TranslationFormComponent extends FormBaseComponent<LocalizedString> implements OnInit {\r\n public readonly TextEditorField = TextEditorField;\r\n\r\n @Input({ required: true })\r\n public field!: TextEditorField;\r\n\r\n @Input() label?: string;\r\n\r\n\r\n ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n}\r\n","<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n\r\n <bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\r\n [text]=\"editable.value\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-input>\r\n\r\n\r\n <bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\r\n [text]=\"editable.value\"\r\n [minRows]=\"2\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-textarea>\r\n</bonc-form-controls>\r\n\r\n<div *ngIf=\"editable.value===undefined\">Editable value canot be undefined</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\n\r\n@Component({\r\n selector: 'bonc-unknown-form',\r\n templateUrl: './unknown-form.component.html',\r\n styleUrls: ['./unknown-form.component.scss']\r\n})\r\nexport class UnknownFormComponent extends FormBaseComponent<string> implements OnInit {\r\n @Input()\r\n public label = '';\r\n\r\n ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n}\r\n","<label>Unknown form:<b>{{label}}</b></label>\r\n<pre><ng-content></ng-content></pre>\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const API_BASE_URL = new InjectionToken<string>('ApiBaseUrl');\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Observable, combineLatest, map, merge, mergeMap, of } from 'rxjs';\r\n\r\nimport { PageBase, View } from '@candy-kingdom/bonnie';\r\n\r\nimport { SettingData } from \"../generated\";\r\nimport { API_BASE_URL } from \"./API_BASE_URL\";\r\n\r\ntype DataDictionary = { [n: string]: Observable<unknown> };\r\n\r\nexport type SettingDataDict = { [id: string]: SettingData };\r\n\r\n@Injectable()\r\nexport class DataService {\r\n constructor(private readonly http: HttpClient, @Inject(API_BASE_URL) private baseHref: string) {\r\n }\r\n\r\n public getView(viewCode: string): Observable<Readonly<PageBase>> {\r\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/views/${viewCode}`);\r\n return pageOb;\r\n }\r\n\r\n public getPage(pageRoute: string): Observable<Readonly<PageBase>> {\r\n const pageUrl = `/${pageRoute}`\r\n\r\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/pages/?url=${encodeURIComponent(pageUrl)}`);\r\n return pageOb;\r\n }\r\n\r\n public getSettings(ids: string[]): Observable<Readonly<SettingDataDict>> {\r\n const pageOb = this.http.get<SettingDataDict>(`${this.baseHref}api/settings`, {\r\n params: { ids: ids }\r\n });\r\n\r\n return pageOb;\r\n }\r\n\r\n private getSkeleton<T extends (PageBase | View)>(url: string): Observable<Readonly<T>> {\r\n const skeletonOb = this.http.get<T>(url);\r\n\r\n const routeDataObs = skeletonOb\r\n .pipe\r\n (\r\n map(\r\n x => {\r\n const notEmptyDataRoutes = x.bones\r\n .map(b => ('dataRoute' in b) && typeof (b.dataRoute) === 'string' ? b.dataRoute : '')\r\n .filter(x => x.length > 0);\r\n\r\n if (notEmptyDataRoutes.length === 0) {\r\n const emptyData: DataDictionary = {};\r\n return { page: of(x), data: of(emptyData) };\r\n }\r\n\r\n return {\r\n page: of(x),\r\n data: combineLatest\r\n (\r\n notEmptyDataRoutes\r\n .map(dataRoute => {\r\n const url = `${this.baseHref}api/Pages/Children/?url=${dataRoute}`;\r\n\r\n return {\r\n route: dataRoute,\r\n json: this.http.get(url)\r\n }\r\n })\r\n .reduce(\r\n (prev, curr) => {\r\n prev[curr.route] = curr.json;\r\n return prev;\r\n }, {} as DataDictionary\r\n )\r\n )\r\n }\r\n }\r\n\r\n ),\r\n map(x => combineLatest(x)),\r\n mergeMap(res => merge(res)),\r\n map(x => {\r\n\r\n for (const bone of x.page.bones) {\r\n if (!('dataRoute' in bone) || typeof bone.dataRoute !== 'string' || bone.dataRoute.length === 0)\r\n continue;\r\n\r\n const data = x.data[bone.dataRoute];\r\n\r\n if (data === undefined || data === null)\r\n throw new Error(`Data ${bone.dataRoute} have not been preloaded`);\r\n\r\n (bone as any).data = data; // todo: fix\r\n }\r\n\r\n return x.page;\r\n })\r\n );\r\n\r\n return routeDataObs;\r\n }\r\n}\r\n\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { PageBase } from \"@candy-kingdom/bonnie\";\r\n\r\nimport { SettingBase, SettingGroup } from \"../generated\";\r\nimport { API_BASE_URL } from \"./API_BASE_URL\";\r\n\r\n@Injectable()\r\nexport class AdminDataService {\r\n constructor(private readonly http: HttpClient, @Inject(API_BASE_URL) private baseHref: string) {\r\n console.log('baseHref: ' + baseHref);\r\n }\r\n\r\n public getSettingGroups(): Observable<SettingGroup[]> {\r\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/settings`);\r\n return pageOb;\r\n }\r\n\r\n public getPage(url: string): Observable<SettingGroup[]> {\r\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/pages/${url}`);\r\n return pageOb;\r\n }\r\n\r\n public storePage(page: PageBase): Observable<void> {\r\n const ob = this.http.post<void>(`${this.baseHref}api/admin/pages`, page);\r\n return ob;\r\n }\r\n\r\n public updateSettings(settings: SettingBase[]): Observable<void> {\r\n const ob = this.http.post<void>(`${this.baseHref}api/admin/settings`, settings);\r\n return ob;\r\n }\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { DeviceType } from '../core';\r\nimport { EditableGroupComponent } from '../core-components';\r\n\r\n@Component({\r\n selector: 'bonc-admin-controls',\r\n templateUrl: './admin-controls.component.html',\r\n styleUrls: ['./admin-controls.component.scss']\r\n})\r\nexport class AdminControlsComponent {\r\n public readonly DeviceType = DeviceType;\r\n\r\n @Input({ required: true })\r\n public editableGroup!: EditableGroupComponent;\r\n\r\n @Input()\r\n public deviceControls = false;\r\n\r\n public locale = 'en';\r\n public device = this.DeviceType.Desktop;\r\n\r\n public changeLocale(): void {\r\n this.locale = this.locale === 'en' ? 'ru' : 'en';\r\n }\r\n\r\n public changeDevice(): void {\r\n switch (this.device) {\r\n case DeviceType.Desktop:\r\n this.device = DeviceType.Tablet;\r\n return;\r\n\r\n case DeviceType.Tablet:\r\n this.device = DeviceType.Mobile;\r\n return;\r\n\r\n case DeviceType.Mobile:\r\n this.device = DeviceType.Desktop;\r\n return;\r\n\r\n default:\r\n this.device = DeviceType.Desktop;\r\n return;\r\n }\r\n }\r\n}\r\n","<div class=\"page-controls\">\r\n <a (click)=\"changeLocale()\" class=\"locale\">Locale: {{locale}}</a>\r\n\r\n <!-- todo: return this functionality -->\r\n <!-- <a *ngIf=\"deviceControls\" (click)=\"changeDevice()\" class=\"device\">\r\n <span *ngIf=\"device === DeviceType.Desktop\">DESKTOP</span>\r\n <span *ngIf=\"device === DeviceType.Tablet\">TABLET</span>\r\n <span *ngIf=\"device === DeviceType.Mobile\">MOBILE</span>\r\n </a> -->\r\n\r\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\r\n (click)=\"editableGroup.saveAll()\"\r\n class=\"save\">Save all</a>\r\n\r\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\r\n (click)=\"editableGroup.cancelAll()\"\r\n class=\"cancel\">Cancel all</a>\r\n</div>\r\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\r\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\r\nimport { catchError, last, map, Observable } from 'rxjs';\r\n\r\nimport { MediaObjectFit, PixMediaUnion } from '@candy-kingdom/bonnie';\r\nimport { MediaType } from '../core';\r\n\r\nconst imageMimeTypes = ['image/png', 'image/jpeg'];\r\nconst videoMimeTypes = ['video/mp4'];\r\n\r\nconst imageFileTypes = imageMimeTypes.join(',');\r\nconst videoFileTypes = videoMimeTypes.join(',');\r\n\r\nconst allMediaFileTypes = `${imageFileTypes},${videoFileTypes}`;\r\n\r\n@Component({\r\n selector: 'bonc-media-uploader',\r\n templateUrl: './media-uploader.component.html',\r\n styleUrls: ['./media-uploader.component.scss']\r\n})\r\nexport class MediaUploaderComponent {\r\n public readonly MediaObjectFit = MediaObjectFit;\r\n\r\n @ViewChild('fileInput', { static: true })\r\n public fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n @Output()\r\n public srcChange = new EventEmitter<PixMediaUnion>();\r\n\r\n @Input({ required: true })\r\n public uploadUrlMap!: ReadonlyMap<MediaType, string>;\r\n\r\n @Input()\r\n public forceRatio?: number;\r\n\r\n public progress = 0;\r\n public isUploading = false;\r\n\r\n public autoplay = true;\r\n public clipStyle?: SafeStyle;\r\n public fileTypeMask = allMediaFileTypes;\r\n\r\n private _uploadType?: MediaType;\r\n private _src?: PixMediaUnion;\r\n\r\n constructor(private sanitizer: DomSanitizer, private http: HttpClient) {\r\n }\r\n\r\n @Input()\r\n public set src(newSrc: PixMediaUnion | undefined) {\r\n if (this._src === newSrc)\r\n return;\r\n\r\n this._src = newSrc;\r\n }\r\n\r\n public get src(): PixMediaUnion | undefined {\r\n return this._src;\r\n }\r\n\r\n @Input()\r\n public set uploadType(newUploadType: MediaType | undefined) {\r\n switch (newUploadType) {\r\n case \"image\":\r\n this._uploadType = newUploadType;\r\n this.fileTypeMask = imageFileTypes;\r\n break;\r\n\r\n case \"video\":\r\n this._uploadType = newUploadType;\r\n this.fileTypeMask = videoFileTypes;\r\n break;\r\n\r\n case undefined:\r\n default:\r\n this._uploadType = newUploadType;\r\n this.fileTypeMask = allMediaFileTypes;\r\n break;\r\n }\r\n }\r\n\r\n public get uploadType(): MediaType | undefined {\r\n return this._uploadType;\r\n }\r\n\r\n public onFileSelect(fileInput: HTMLInputElement) {\r\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\r\n return;\r\n\r\n const file = fileInput.files[0];\r\n\r\n let uploadingMediaType: MediaType;\r\n\r\n if (this._uploadType !== undefined && this._uploadType !== null) {\r\n uploadingMediaType = this._uploadType;\r\n }\r\n else if (imageMimeTypes.includes(file.type)) {\r\n uploadingMediaType = 'image';\r\n }\r\n else if (videoMimeTypes.includes(file.type)) {\r\n uploadingMediaType = 'video';\r\n }\r\n else {\r\n console.error(`unknown media type ${file.type} (${file.name})`);\r\n return;\r\n }\r\n\r\n const uploadUrl = this.uploadUrlMap.get(uploadingMediaType);\r\n\r\n if (uploadUrl === undefined || uploadUrl === null) {\r\n console.error(`upload map doesn't have url for type ${uploadingMediaType}`);\r\n return;\r\n }\r\n\r\n const formData: FormData = new FormData();\r\n\r\n formData.append('file', file);\r\n formData.append('ratio', `${this.forceRatio ?? 0}`);\r\n\r\n this.progress = 0;\r\n this.isUploading = true;\r\n\r\n this.updateClip();\r\n\r\n const request = new HttpRequest('POST', uploadUrl, formData, {\r\n reportProgress: true\r\n });\r\n\r\n this.http\r\n .request<PixMediaUnion>(request)\r\n .pipe\r\n (\r\n map(event => this.getEventMessage(event)),\r\n // tap(message => this.showProgress(message)),\r\n last(), // return last (completed) message to caller\r\n catchError(this.handleError(file))\r\n ).subscribe\r\n (\r\n () => { this.isUploading = false; }\r\n );\r\n }\r\n\r\n public selectFile(event: Event): void {\r\n // ignore buble click on file picker\r\n if (event.target === this.fileInput.nativeElement)\r\n return;\r\n\r\n this.fileInput.nativeElement.click();\r\n }\r\n\r\n private getEventMessage(event: HttpEvent<PixMediaUnion>): void {\r\n switch (event.type) {\r\n case HttpEventType.Sent:\r\n return;\r\n\r\n case HttpEventType.UploadProgress:\r\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\r\n this.updateClip();\r\n return;\r\n\r\n case HttpEventType.Response:\r\n if (event.body === undefined || event.body === null) {\r\n console.error('media deserialization error. Response body in undefined');\r\n } else {\r\n // remove this\r\n // needed for C# deserialization\r\n const pixmedia = {\r\n $type: event.body.type,\r\n ...event.body as any,\r\n };\r\n\r\n this.srcChange.emit(pixmedia);\r\n }\r\n return;\r\n\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n private updateClip(): void {\r\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\r\n }\r\n\r\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\r\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\r\n const message = `error uploadingFile ${file.name}.`;\r\n console.error(message, error, p2);\r\n alert(message);\r\n return new Observable<unknown>();\r\n };\r\n\r\n return func;\r\n }\r\n}\r\n","<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\r\n\r\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[boncSkeletonEditorAnchor]'\r\n})\r\nexport class SkeletonEditorAnchorDirective {\r\n\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n}\r\n","import { EventEmitter, HostBinding, Component, Input } from '@angular/core';\r\n\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\n\r\nimport { ContentPreset } from '../skeleton-editor/ContentPreset';\r\nimport { IBoneEditor } from '../skeleton-editor/IBoneEditor';\r\nimport { DeviceType } from '../core';\r\n\r\n@Component({ template: '' })\r\nexport abstract class BoneEditorBaseComponent<TBone extends Bone> implements IBoneEditor<TBone> {\r\n public readonly editing: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n public readonly saved: EventEmitter<Bone> = new EventEmitter<Bone>();\r\n public readonly removed: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public readonly noPresets: boolean;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n public device = DeviceType.NotSet;\r\n\r\n private _bone!: TBone;\r\n private _storedData: string = '';\r\n\r\n private _currentPreset: ContentPreset<TBone> | undefined;\r\n\r\n protected readonly presets: ReadonlyArray<ContentPreset<TBone>>;\r\n private _isDirty = false;\r\n private _isEditing = false;\r\n\r\n public abstract onReset(): void;\r\n public abstract onFinishEditing(): void;\r\n\r\n protected abstract getPresets(): ContentPreset<TBone>[];\r\n\r\n constructor() {\r\n this.presets = this.getPresets();\r\n\r\n if (this.presets === undefined || this.presets === null)\r\n throw new Error('presets cannot be undefined in ContentPreset constructor');\r\n\r\n if (this.presets.length === 0) {\r\n this.presets = [\r\n\r\n {\r\n title: 'default',\r\n isActive: () => true,\r\n transformer: bone => bone,\r\n clean: bone => bone,\r\n }\r\n ];\r\n }\r\n\r\n this.noPresets = this.presets.length === 1;\r\n }\r\n\r\n @HostBinding('class.mobile') get isMobile(): boolean {\r\n return this.device !== undefined && this.device === DeviceType.Mobile;\r\n }\r\n\r\n @HostBinding('class.tablet') get isTablet(): boolean {\r\n return this.device !== undefined && this.device === DeviceType.Tablet;\r\n }\r\n\r\n @HostBinding('class.desktop') get isDesktop(): boolean {\r\n return this.device !== undefined && this.device === DeviceType.Desktop;\r\n }\r\n\r\n public get currentPreset(): ContentPreset<TBone> | undefined {\r\n return this._currentPreset;\r\n }\r\n\r\n public get bone(): TBone {\r\n return this._bone;\r\n }\r\n\r\n @Input({ required: true })\r\n public set bone(newData: TBone) {\r\n this._isDirty = false;\r\n this._storedData = JSON.stringify(newData);\r\n this._bone = JSON.parse(this._storedData);\r\n this.updatePresetByData();\r\n }\r\n\r\n public get isDirty(): boolean {\r\n return this._isDirty;\r\n }\r\n\r\n public get isEditing(): boolean {\r\n return this._isEditing;\r\n }\r\n\r\n public resetData(): void {\r\n this._isEditing = false;\r\n this.bone = JSON.parse(this._storedData);\r\n\r\n if (this.onReset !== undefined)\r\n this.onReset();\r\n\r\n this.editing.emit(false);\r\n }\r\n\r\n public updateDirty(): void {\r\n this._isDirty = JSON.stringify(this._bone) !== this._storedData;\r\n }\r\n\r\n public markAsDirty(): void {\r\n this._isDirty = true;\r\n }\r\n\r\n public remove(): void {\r\n this.removed.next();\r\n }\r\n\r\n public save(): void {\r\n if (!this.isDirty)\r\n return;\r\n\r\n this._isDirty = false;\r\n\r\n this.finishEditing();\r\n\r\n this._storedData = JSON.stringify(this._bone);\r\n\r\n const clonedData: TBone = JSON.parse(this._storedData);\r\n this.saved.emit(clonedData);\r\n }\r\n\r\n public startEditing(): void {\r\n if (this._isEditing) {\r\n this.updateDirty();\r\n return;\r\n }\r\n\r\n this._isEditing = true;\r\n this.updateDirty();\r\n\r\n this.editing.emit(true);\r\n }\r\n\r\n public finishEditing(): void {\r\n if (this._isDirty)\r\n throw new Error('Нельзя закрывать редактирование когда есть изменения. Надо сохранить либо зарезетить.');\r\n\r\n if (this.onFinishEditing !== undefined)\r\n this.onFinishEditing();\r\n\r\n this._isEditing = false;\r\n }\r\n\r\n public nextPreset(): void {\r\n const newIndex = this._currentPreset === undefined ? 0 : this.presets.indexOf(this._currentPreset) + 1;\r\n this.applyPresetAtIndex(newIndex);\r\n }\r\n\r\n private applyPresetAtIndex = (newIndex: number): void => {\r\n newIndex = newIndex < 0 ? 0 : newIndex % this.presets.length;\r\n\r\n const currentIndex = this._currentPreset === undefined ? -1 : this.presets.indexOf(this._currentPreset);\r\n if (currentIndex === newIndex)\r\n return;\r\n\r\n this._currentPreset = this.presets[newIndex];\r\n this._currentPreset.transformer(this._bone);\r\n\r\n this.updateDirty();\r\n }\r\n\r\n private updatePresetByData = (): void => {\r\n const countOfActive = this.presets.map(p => p.isActive(this._bone)).filter(p => p).length;\r\n\r\n if (countOfActive !== 1)\r\n throw new Error(`active preset count should be equal 1, but it was: ${countOfActive}. ${this.constructor.name}`);\r\n\r\n for (let i = 0; this.presets.length; i++) {\r\n const preset = this.presets[i];\r\n\r\n if (preset.isActive(this._bone)) {\r\n this.applyPresetAtIndex(i);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\n\r\nimport { ContentPreset } from '../../skeleton-editor/ContentPreset';\r\nimport { BoneEditorBaseComponent } from '../bone-editor-base.component';\r\n\r\n@Component({\r\n selector: 'bonc-unknown-bone-editor',\r\n templateUrl: './unknown-bone-editor.component.html',\r\n styleUrls: ['./unknown-bone-editor.component.scss']\r\n})\r\nexport class UnknownBoneEditorComponent extends BoneEditorBaseComponent<Bone> {\r\n public onFinishEditing(): void { }\r\n public onReset(): void { }\r\n\r\n protected getPresets(): ContentPreset<Bone>[] {\r\n return [];\r\n }\r\n}\r\n","<p>Unknown Bone Editor | bone type: {{bone.type}}</p>\r\n<pre>{{bone | json}}</pre>\r\n","import { Component, ComponentFactoryResolver, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\n\r\nimport { SkeletonEditorAnchorDirective } from '../skeleton-editor-anchor.directive';\r\nimport { DeviceType } from '../../core';\r\nimport { IBoneEditor } from '../IBoneEditor';\r\nimport { BoneEditorMap } from '../BoneEditorMap';\r\nimport { UnknownBoneEditorComponent } from '../../bone-editors/unknown-bone-editor/unknown-bone-editor.component';\r\n\r\n// todo: rename class\r\n@Component({\r\n selector: 'bonc-bone-editor-container',\r\n templateUrl: './bone-editor-container.component.html',\r\n styleUrls: ['./bone-editor-container.component.scss']\r\n})\r\nexport class BoneEditorContainerComponent implements OnChanges {\r\n @ViewChild(SkeletonEditorAnchorDirective, { static: true })\r\n public anchor!: SkeletonEditorAnchorDirective;\r\n\r\n @Output()\r\n public removed: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Output()\r\n public saved: EventEmitter<Bone> = new EventEmitter<Bone>();\r\n\r\n @Output()\r\n public editing: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n public DeviceType = DeviceType;\r\n\r\n public editor!: IBoneEditor;\r\n\r\n public themePopupIsShown = false;\r\n\r\n private _bone!: Bone;\r\n\r\n private removeSubscription?: Subscription;\r\n private saveSubscription?: Subscription;\r\n private changedSubscription?: Subscription;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device = DeviceType.NotSet;\r\n\r\n constructor(private readonly componentFactoryResolver: ComponentFactoryResolver) {\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.editor === undefined || this.editor === null)\r\n return;\r\n\r\n this.editor.locale = this.locale;\r\n this.editor.device = this.device;\r\n }\r\n\r\n @Input({ required: true })\r\n public map!: BoneEditorMap\r\n\r\n public get bone(): Bone {\r\n return this._bone;\r\n }\r\n\r\n @Input({ required: true })\r\n public set bone(newBone: Bone) {\r\n this._bone = newBone;\r\n\r\n if (this.removeSubscription) {\r\n this.removeSubscription.unsubscribe();\r\n this.removeSubscription = undefined;\r\n }\r\n\r\n if (this.saveSubscription) {\r\n this.saveSubscription.unsubscribe();\r\n this.saveSubscription = undefined;\r\n }\r\n\r\n if (this.changedSubscription) {\r\n this.changedSubscription.unsubscribe();\r\n this.changedSubscription = undefined;\r\n }\r\n\r\n const viewContainerRef = this.anchor.viewContainerRef;\r\n\r\n viewContainerRef.clear();\r\n\r\n const componentType = this.map.get(newBone.type) ?? UnknownBoneEditorComponent;\r\n\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\r\n const boneEditorRef = viewContainerRef.createComponent(componentFactory);\r\n\r\n this.editor = boneEditorRef.instance;\r\n this.editor.bone = newBone;\r\n\r\n this.removeSubscription = this.editor.removed.subscribe(() => {\r\n this.removed.next();\r\n });\r\n\r\n this.changedSubscription = this.editor.editing.subscribe\r\n (\r\n (isEditing: boolean) => {\r\n this.editing.next(isEditing);\r\n }\r\n );\r\n\r\n this.saveSubscription = this.editor.saved.subscribe(\r\n (newBoneValue: Bone) => {\r\n this.saved.next(newBoneValue);\r\n }\r\n );\r\n\r\n this.ngOnChanges();\r\n }\r\n\r\n public nextPreset = (): void => {\r\n if (this.editor === undefined || this.editor === null)\r\n return;\r\n\r\n this.editor.nextPreset();\r\n }\r\n\r\n // todo: add or remove visibility feature\r\n\r\n // public setDisabled = (disabled: boolean): void => {\r\n // if (this.editor === undefined || this.editor === null)\r\n // return;\r\n\r\n // this.editor.startEditing();\r\n\r\n // if (this.device === DeviceType.Desktop)\r\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Desktop, !disabled);\r\n // else if (this.device === DeviceType.Tablet)\r\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Tablet, !disabled);\r\n // else if (this.device === DeviceType.Mobile)\r\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Mobile, !disabled);\r\n\r\n // this.editor.updateDirty();\r\n // }\r\n\r\n public get disabled(): boolean {\r\n if (this.editor === undefined || this.editor === null)\r\n throw new Error('editor should have been set');\r\n\r\n return false;\r\n // todo: add or remove visibility feature\r\n // const visibility = this.editor.bone.visibility;\r\n\r\n // if (this.device === DeviceType.Desktop && hasFlag(visibility, DeviceVisibility.Desktop))\r\n // return false;\r\n\r\n // if (this.device === DeviceType.Tablet && hasFlag(visibility, DeviceVisibility.Tablet))\r\n // return false;\r\n\r\n // if (this.device === DeviceType.Mobile && hasFlag(visibility, DeviceVisibility.Mobile))\r\n // return false;\r\n\r\n // return true;\r\n }\r\n}\r\n","<div *ngIf=\"editor\" class=\"left bar\" [class.inactive]=\"editor.noPresets\">\r\n <!-- <a *ngFor=\"let control of editor.controls\" (click)=\"control.activate()\">{{control.label}}</a> -->\r\n <!-- <a (click)=\"setDisabled(!disabled)\" class=\"disabled\">block {{disabled ? 'disabled' : 'enabled'}} ({{editor.bone.visibility}})</a> -->\r\n <a *ngIf=\"editor.currentPreset && !editor.noPresets\" (click)=\"nextPreset()\" class=\"preset\">style:<br />{{editor.currentPreset.title}}</a>\r\n</div>\r\n\r\n<div class=\"editor-container\"\r\n [class.disabled]=\"disabled\"\r\n [style.width]=\"\r\n device === DeviceType.Desktop ? '75vw'\r\n : device === DeviceType.Tablet ? '55vw'\r\n : device === DeviceType.Mobile ? '35vw'\r\n : '75vw' \">\r\n <ng-template boncSkeletonEditorAnchor>\r\n </ng-template>\r\n</div>\r\n\r\n<div *ngIf=\"editor\" [class.active]=\"editor.isEditing || editor.isDirty\" class=\"right bar\">\r\n <!-- <a *ngIf=\"!editor.isEditing\" (click)=\"editor.remove()\" class=\"delete\">!!! remove</a> -->\r\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.resetData()\" class=\"reset\">reset</a>\r\n <a *ngIf=\"editor.isEditing && !editor.isDirty\" (click)=\"editor.finishEditing()\" class=\"close\">close</a>\r\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.save()\" class=\"save\">apply</a>\r\n</div>\r\n","import { Component, Host, Input, OnChanges, OnInit, QueryList, ViewChildren } from '@angular/core';\r\n\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\nimport { BoneEditorContainerComponent } from './bone-editor-container/bone-editor-container.component';\r\nimport { EditableDirective } from '../core-components/editable.directive';\r\nimport { DeviceType } from '../core';\r\nimport { IBoneTemplate } from './IBoneTemplate';\r\nimport { BoneEditorMap } from './BoneEditorMap';\r\n\r\n// todo: rename class\r\n@Component({\r\n selector: 'bonc-skeleton-editor',\r\n templateUrl: './skeleton-editor.component.html',\r\n styleUrls: ['./skeleton-editor.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class SkeletonEditorComponent implements OnInit, OnChanges {\r\n @ViewChildren('boneEditorContainer')\r\n public boneEditorContainerList!: QueryList<BoneEditorContainerComponent>;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device = DeviceType.NotSet;\r\n\r\n public readonly templatesAreShown: boolean[] = [];\r\n\r\n constructor(@Host() public editable: EditableDirective<Bone[]>) {\r\n\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.boneEditorContainerList.forEach\r\n (\r\n editorContainer => editorContainer.editor?.save()\r\n );\r\n\r\n this.editable.save();\r\n });\r\n\r\n this.editable.canceled.subscribe(() => {\r\n this.boneEditorContainerList.forEach\r\n (\r\n editorContainer => editorContainer.editor?.resetData()\r\n );\r\n\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input({ required: true })\r\n public map!: BoneEditorMap;\r\n\r\n public ngOnChanges(): void {\r\n this.templatesAreShown.splice(0, this.templatesAreShown.length);\r\n if (this.bones === undefined)\r\n return;\r\n\r\n this.bones.forEach(() => this.templatesAreShown.push(false));\r\n this.templatesAreShown.push(false);\r\n }\r\n\r\n @Input({ required: true })\r\n public templates!: ReadonlyArray<IBoneTemplate>;\r\n\r\n\r\n public get bones(): Bone[] {\r\n return this.editable?.value ?? [];\r\n }\r\n\r\n public boneEditHandler(isEditing: boolean): void {\r\n if (isEditing)\r\n this.editable.startEditing();\r\n else {\r\n const allClosed = this.boneEditorContainerList\r\n .filter(x => x.editor !== undefined && x.editor.isEditing)\r\n .length === 0;\r\n\r\n this.editable.updateDirty();\r\n\r\n if (!this.editable.isDirty && allClosed)\r\n this.editable.close();\r\n }\r\n }\r\n\r\n public boneChangeHandler(index: number, newBoneValue: Bone): void {\r\n if (Array.isArray(this.editable.value)) {\r\n this.editable.value[index] = newBoneValue;\r\n }\r\n\r\n this.editable.save();\r\n }\r\n\r\n public removeBone(boneIndex: number): void {\r\n if (this.bones === undefined || this.bones === null)\r\n return;\r\n\r\n if (!confirm('Вы уверены, что хотите удалить компонент?'))\r\n return;\r\n\r\n this.bones.splice(boneIndex, 1);\r\n\r\n if (!this.editable.inEditMode)\r\n this.editable.startEditing();\r\n\r\n this.editable.save();\r\n }\r\n\r\n public moveDown(boneIndex: number): void {\r\n if (boneIndex >= this.bones.length - 1)\r\n return;\r\n\r\n this.swapBones(boneIndex, boneIndex + 1);\r\n }\r\n\r\n public moveUp(boneIndex: number): void {\r\n if (boneIndex <= 0)\r\n return;\r\n\r\n this.swapBones(boneIndex - 1, boneIndex);\r\n }\r\n\r\n public createBone(index: number, selectedTemplate: IBoneTemplate): void {\r\n const newBone = selectedTemplate.boneFactory();\r\n\r\n this.bones.splice(index, 0, newBone);\r\n }\r\n\r\n private swapBones(index1: number, index2: number): void {\r\n if (index1 < 0 || index2 < 0 || index1 >= this.bones.length || index2 >= this.bones.length)\r\n throw new Error(`ошибка swapBones. неправильные индексы ${index1} и ${index2}. bone count: ${this.bones.length}`);\r\n\r\n const tempBone = this.bones[index1];\r\n this.bones[index1] = this.bones[index2];\r\n this.bones[index2] = tempBone;\r\n }\r\n}\r\n\r\n\r\n","<ng-template #controls let-index='index'>\r\n <div [class.appearable]=\"index > 0 && index < bones.length\" class=\"controls\">\r\n <div *ngIf=\"index < bones.length\" class=\"up-down\">\r\n <a *ngIf=\"index > 0\" (click)=\"moveDown(index - 1)\" class=\"down\">move down</a>\r\n <a *ngIf=\"index > 0\" (click)=\"moveUp(index)\" class=\"up\">move up</a>\r\n </div>\r\n <a (click)=\"templatesAreShown[index] = true\" class=\"add\">create</a>\r\n <a *ngIf=\"index < bones.length\" (click)=\"removeBone(index)\" class=\"remove\">remove</a>\r\n </div>\r\n\r\n <div *ngIf=\"templatesAreShown[index]\" class=\"templates\">\r\n <a *ngFor=\"let template of templates\" (click)=\"templatesAreShown[index] = false; createBone(index,template);\">{{template.title}}</a>\r\n <a (click)=\"templatesAreShown[index] = false\">Close</a>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- todo: add trackby -->\r\n<ng-container *ngFor=\"let bone of bones; let i = index\">\r\n <ng-container>\r\n <ng-container *ngTemplateOutlet=\"controls; context: {index: i}\"></ng-container>\r\n </ng-container>\r\n\r\n <bonc-bone-editor-container #boneEditorContainer\r\n [map]=\"map\"\r\n [bone]=\"bone\"\r\n [locale]=\"locale\"\r\n [device]=\"device\"\r\n (removed)=\"removeBone(i)\"\r\n (editing)=\"boneEditHandler($event)\"\r\n (saved)=\"boneChangeHandler(i, $event)\">\r\n </bonc-bone-editor-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"controls; context: {index: bones.length}\"></ng-container>\r\n","import { Bone } from '@candy-kingdom/bonnie';\r\n\r\nexport interface ContentPreset<out TBone extends Bone> {\r\n title: string;\r\n isActive(data: TBone): boolean;\r\n clean(data: TBone): void;\r\n transformer(bone: TBone): void;\r\n}\r\n\r\nexport function createPreset<TBone extends Bone>(params: { title: string, style: string }): ContentPreset<TBone> {\r\n return {\r\n title: params.title,\r\n isActive: x => x.style === params.style,\r\n transformer: bone => bone.style = params.style,\r\n clean: bone => bone.style = params.style,\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\r\nimport { LottieComponent } from 'ngx-lottie';\r\n\r\n\r\nimport { BonnieModule } from '@candy-kingdom/bonnie';\r\n\r\nimport { AdminControlsComponent } from './admin-controls/';\r\nimport { EditableDirective, LinkPopupComponent } from './core-components';\r\nimport { TextFormComponent } from './forms/text-form';\r\nimport { EditableGroupComponent } from './core-components';\r\nimport { FormControlsComponent } from './form-controls';\r\nimport { SeoFormComponent } from './forms/seo-form';\r\nimport { TranslationTextareaComponent } from './translation-textarea';\r\nimport { TranslationInputComponent } from './translation-input';\r\nimport { BoneEditorContainerComponent, SkeletonEditorAnchorDirective, SkeletonEditorComponent } from './skeleton-editor';\r\nimport { UnknownBoneEditorComponent } from './bone-editors/unknown-bone-editor/unknown-bone-editor.component';\r\nimport { MediaUploaderComponent } from './media-uploader/media-uploader.component';\r\nimport { DataService } from './services/data.service';\r\nimport { AdminDataService } from './services/admin-data.service';\r\nimport { TranslationFormComponent } from './forms/translation-form';\r\nimport { SvgFormComponent } from './forms/svg-form';\r\nimport { UnknownFormComponent } from './forms/unknown-form/unknown-form.component';\r\nimport { FileUploaderComponent } from './file-uploader';\r\nimport { FileFormComponent } from './forms/file-form';\r\nimport { LottieFormComponent } from './forms/lottie-form/lottie-form.component';\r\nimport { OneImageFormComponent } from './forms/one-image-form/one-image-form.component';\r\n\r\nconst formComponents = [\r\n TranslationFormComponent,\r\n TextFormComponent,\r\n SeoFormComponent,\r\n SvgFormComponent,\r\n OneImageFormComponent,\r\n FileFormComponent,\r\n LottieFormComponent,\r\n UnknownFormComponent\r\n];\r\n\r\nconst components = [\r\n ...formComponents,\r\n TranslationInputComponent,\r\n TranslationTextareaComponent,\r\n AdminControlsComponent,\r\n EditableGroupComponent,\r\n FormControlsComponent,\r\n SkeletonEditorComponent,\r\n SkeletonEditorAnchorDirective,\r\n BoneEditorContainerComponent,\r\n UnknownBoneEditorComponent,\r\n MediaUploaderComponent,\r\n FileUploaderComponent,\r\n LinkPopupComponent\r\n];\r\n\r\nconst standaloneDirectives = [\r\n EditableDirective\r\n];\r\n\r\n@NgModule({\r\n declarations: [\r\n ...components,\r\n ],\r\n providers:\r\n [\r\n DataService,\r\n AdminDataService\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CdkTextareaAutosize,\r\n BonnieModule,\r\n LottieComponent,\r\n ...standaloneDirectives\r\n ],\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n BonnieModule,\r\n LottieFormComponent,\r\n ...components,\r\n ...standaloneDirectives\r\n ]\r\n})\r\nexport class BonnieCmsModule { } // todo: move to standalone\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EditableDirective","i1","i2","i3.TranslationInputComponent","i4.TranslationTextareaComponent","i3","i5.FormControlsComponent","i6.FileUploaderComponent","i3.FormControlsComponent","i4.FileUploaderComponent","i4.FormControlsComponent","i5.FileUploaderComponent","i2.SkeletonEditorAnchorDirective","i3.BoneEditorContainerComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"candy-kingdom-bonnie-cms.mjs","sources":["../../../../libs/bonnie-cms/src/lib/generated/file-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/i-equatable.ts","../../../../libs/bonnie-cms/src/lib/generated/i-setting.ts","../../../../libs/bonnie-cms/src/lib/generated/localized-text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/lottie-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/one-image-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-base.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-group.ts","../../../../libs/bonnie-cms/src/lib/generated/setting.ts","../../../../libs/bonnie-cms/src/lib/generated/svg-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-type.ts","../../../../libs/bonnie-cms/src/lib/generated/index.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceType.ts","../../../../libs/bonnie-cms/src/lib/core/TextEditorField.ts","../../../../libs/bonnie-cms/src/lib/core/Utils.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceVisibility.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable.directive.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable-group.ts","../../../../libs/bonnie-cms/src/lib/core-components/form-base.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.html","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.ts","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.html","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.ts","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.html","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.ts","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.html","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.html","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/text-form/TextInputStyle.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.html","../../../../libs/bonnie-cms/src/lib/services/API_BASE_URL.ts","../../../../libs/bonnie-cms/src/lib/services/data.service.ts","../../../../libs/bonnie-cms/src/lib/services/admin-data.service.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.html","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor-anchor.directive.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/bone-editor-base.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/ContentPreset.ts","../../../../libs/bonnie-cms/src/lib/bonnie-cms.module.ts","../../../../libs/bonnie-cms/src/candy-kingdom-bonnie-cms.ts"],"sourcesContent":["/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface FileSettingData extends SettingData {\r\n allowedMimeTypes: string[];\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport interface IEquatable<T> {\r\n\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\n\r\nexport interface ISetting<T extends SettingData> {\r\n id: string;\r\n title: string;\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\nimport { LocalizedString } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LocalizedTextSettingData extends SettingData {\r\n text: LocalizedString;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LottieSettingData extends SettingData {\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileFormat } from \"@candy-kingdom/bonnie\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface OneImageSettingData extends SettingData {\r\n width: number;\r\n height: number;\r\n format: FileFormat;\r\n allowedMimeTypes: string[];\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingBase {\r\n id: string;\r\n order: number;\r\n title: string;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingData {\r\n type: string;\r\n empty: SettingData;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { Setting } from \"./setting\";\r\n\r\nexport interface SettingGroup {\r\n id: string;\r\n order: number;\r\n title: string;\r\n records: Setting<any>[];\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { SettingBase } from \"./setting-base\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { ISetting } from \"./i-setting\";\r\n\r\nexport interface Setting<T extends SettingData> extends SettingBase {\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface SvgSettingData extends SettingData {\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\n\r\nexport interface TextSettingData extends SettingData {\r\n text: string;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport enum TextSettingType {\r\n SingleLine = 0,\r\n MultiLine = 1,\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport * from './file-setting-data';\r\nexport * from './i-equatable';\r\nexport * from './i-setting';\r\nexport * from './localized-text-setting-data';\r\nexport * from './lottie-setting-data';\r\nexport * from './one-image-setting-data';\r\nexport * from './setting-base';\r\nexport * from './setting-data';\r\nexport * from './setting-group';\r\nexport * from './setting';\r\nexport * from './svg-setting-data';\r\nexport * from './text-setting-data';\r\nexport * from './text-setting-type';\r\n","export enum DeviceType {\r\n NotSet = 0,\r\n Mobile = 1,\r\n Tablet = 2,\r\n Desktop = 3\r\n}\r\n","\r\n\r\n\r\nexport enum TextEditorField {\r\n NotSet = 0,\r\n Input = 1,\r\n Textarea = 2\r\n}\r\n","\r\n// tslint:disable-next-line: max-line-length\r\nexport const regExpIsMobile = new RegExp(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/, 'i');\r\n\r\nexport function isLocalUrlString(url: string): boolean {\r\n if (url === undefined || url === null || url.trim().length === 0)\r\n return true;\r\n\r\n if (url.startsWith('//'))\r\n return false;\r\n\r\n if (url.startsWith('./') || url.startsWith('/'))\r\n return true;\r\n\r\n return false;\r\n}\r\n\r\nexport function hasFlag<T extends number>(value: T, flag: T): boolean {\r\n return (value & flag) === flag;\r\n}\r\n\r\nexport function setOrRemoveFlag<T extends number>(value: T, flag: T, enabled: boolean): T {\r\n return (enabled ? value | flag : value & ~flag) as T;\r\n}\r\n","export enum DeviceVisibility {\r\n None = 0,\r\n Desktop = 1,\r\n Tablet = 2,\r\n Mobile = 4,\r\n All = Desktop | Tablet | Mobile\r\n}\r\n","import { Directive, Output, EventEmitter, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[boncEditable]',\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableDirective), multi: true }]\r\n})\r\nexport class EditableDirective<T = unknown> {\r\n @Output()\r\n public readonly saved = new EventEmitter<T>();\r\n\r\n @Output()\r\n public readonly editModeChange = new EventEmitter<boolean>();\r\n\r\n @Output()\r\n public readonly externalSaveCall = new EventEmitter<void>();\r\n\r\n @Output()\r\n public readonly canceled = new EventEmitter<void>();\r\n\r\n @Output()\r\n public readonly valueChange = new EventEmitter<T>();\r\n\r\n private propagateChange: (newValue: T) => void = () => { };\r\n\r\n private _inEditMode = false;\r\n private _isDirty = false;\r\n\r\n private _value?: T;\r\n private _originalValue?: T;\r\n private _storedData?: string;\r\n\r\n public get inEditMode(): boolean {\r\n return this._inEditMode;\r\n }\r\n\r\n public subscribe\r\n (\r\n params: {\r\n readonly onValueChange?: (x: T) => void,\r\n readonly onEditModeChange?: (x: boolean) => void,\r\n readonly onSaveRequest?: () => void\r\n }\r\n ): Subscription[] {\r\n\r\n const subscriptions: Subscription[] = [];\r\n\r\n if (params.onValueChange !== undefined && params.onValueChange !== null) {\r\n subscriptions.push\r\n (\r\n this.valueChange.subscribe((x: T) => {\r\n if (params.onValueChange)\r\n params.onValueChange(x);\r\n })\r\n );\r\n }\r\n\r\n if (params.onEditModeChange !== undefined) {\r\n subscriptions.push\r\n (\r\n this.editModeChange.subscribe((x: boolean) => {\r\n if (params.onEditModeChange)\r\n params.onEditModeChange(x);\r\n })\r\n );\r\n }\r\n\r\n if (params.onSaveRequest !== undefined) {\r\n subscriptions.push\r\n (\r\n this.externalSaveCall.subscribe(() => {\r\n if (params.onSaveRequest)\r\n params.onSaveRequest();\r\n })\r\n );\r\n }\r\n\r\n return subscriptions;\r\n }\r\n\r\n public requestSave() {\r\n this.externalSaveCall.emit();\r\n }\r\n\r\n public startEditing = (): void => {\r\n if (this._inEditMode) {\r\n this.updateDirty();\r\n return;\r\n }\r\n\r\n this._inEditMode = true;\r\n this.updateDirty();\r\n this.editModeChange.emit(true);\r\n }\r\n\r\n public save(newData?: T): void {\r\n if (!this._inEditMode) {\r\n console.warn('save before edit mode'); //todo: fix that\r\n }\r\n\r\n this.finishEditing();\r\n\r\n const newUnqieNotEmptyData = this.value === newData || newData === undefined\r\n ? JSON.parse(JSON.stringify(this.value))\r\n : newData;\r\n\r\n this.setOriginal(newUnqieNotEmptyData);\r\n this.updateDirty();\r\n\r\n this.saved.emit(newUnqieNotEmptyData);\r\n\r\n this.propagateChange(newUnqieNotEmptyData);\r\n }\r\n\r\n public patchSave(propName: keyof T, newDataParts: T[keyof T]): void {\r\n if (this._originalValue === undefined || this._originalValue === null)\r\n return;\r\n\r\n if (typeof this._originalValue !== \"object\") {\r\n console.warn('patch save called on not object type');\r\n return;\r\n }\r\n\r\n (this._originalValue as any)[propName] = newDataParts;\r\n\r\n this.setOriginal(this._originalValue);\r\n\r\n this.updateDirty();\r\n\r\n if (!this.isDirty)\r\n this.close();\r\n }\r\n\r\n // change model without opening or closing the editor\r\n\r\n public silentPatch(dict: Partial<T>): void {\r\n for (const key in dict) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (!dict.hasOwnProperty(key))\r\n continue;\r\n\r\n const propVal = dict[key];\r\n\r\n\r\n if (this._value !== undefined && this._value !== null) {\r\n this._value[key] = propVal as any;\r\n }\r\n\r\n if (this._originalValue !== undefined && this._originalValue !== null) {\r\n this._originalValue[key] = propVal as any;\r\n }\r\n }\r\n this._storedData = JSON.stringify(this._originalValue);\r\n }\r\n\r\n public cancel(): void {\r\n if (!this._inEditMode)\r\n return;\r\n\r\n this.finishEditing();\r\n\r\n // reset value\r\n this.setValue(this._originalValue);\r\n\r\n this.canceled.emit();\r\n }\r\n\r\n public close(): void {\r\n this.finishEditing();\r\n }\r\n\r\n private finishEditing(): void {\r\n if (!this._inEditMode)\r\n return;\r\n\r\n this._inEditMode = false;\r\n this.editModeChange.emit(false);\r\n }\r\n\r\n private setValue(newValue?: T): void {\r\n this._value = (newValue === null || newValue === undefined)\r\n ? undefined\r\n : JSON.parse(JSON.stringify(newValue));\r\n\r\n this.valueChange.emit(this._value);\r\n }\r\n\r\n public set value(newValue: T | undefined) {\r\n this.setValue(newValue);\r\n }\r\n\r\n public get value(): T | undefined {\r\n return this._value;\r\n }\r\n\r\n public updateDirty(): void {\r\n this._isDirty = JSON.stringify(this._value) !== this._storedData;\r\n }\r\n\r\n public markAsDirty(): void {\r\n this._isDirty = true;\r\n }\r\n\r\n public get isDirty(): boolean {\r\n return this._isDirty;\r\n }\r\n\r\n private setOriginal(newOriginalValue: T) {\r\n this._originalValue = newOriginalValue;\r\n this._storedData = JSON.stringify(newOriginalValue);\r\n }\r\n\r\n // #region ngModel\r\n\r\n writeValue(newValue: T): void {\r\n this.finishEditing();\r\n\r\n this.setOriginal(newValue);\r\n this._isDirty = false;\r\n\r\n this.setValue(newValue);\r\n }\r\n\r\n setDisabledState?(): void {\r\n }\r\n\r\n registerOnChange(tellAngularThatSomethingIsChanged: (newValue: T) => void): void {\r\n this.propagateChange = (newValue: T): void => {\r\n tellAngularThatSomethingIsChanged(newValue);\r\n };\r\n }\r\n\r\n registerOnTouched(): void {\r\n }\r\n\r\n // #endregion\r\n}\r\n","import { QueryList, ContentChildren, AfterContentInit, OnDestroy, Output, EventEmitter, Component } from '@angular/core';\r\nimport { Subscription, Subject, debounceTime } from 'rxjs';\r\n\r\nimport { EditableDirective } from './editable.directive';\r\n\r\n@Component({\r\n selector: 'bonc-editable-group',\r\n template: '<ng-content></ng-content>'\r\n})\r\nexport class EditableGroupComponent implements AfterContentInit, OnDestroy {\r\n @Output()\r\n public readonly editModeChange = new EventEmitter<boolean>();\r\n\r\n @Output()\r\n public readonly saved = new EventEmitter<void>();\r\n\r\n @Output()\r\n public readonly requestEditorClose = new EventEmitter<boolean>();\r\n\r\n @ContentChildren(EditableDirective, { descendants: true })\r\n public editables!: QueryList<EditableDirective>;\r\n\r\n private readonly subscriptions: Subscription[] = [];\r\n private _inEditMode = false;\r\n\r\n private readonly saveSubject = new Subject<void>();\r\n\r\n public ngAfterContentInit(): void {\r\n this.saveSubject\r\n .asObservable()\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.saved.emit());\r\n\r\n this.updateSubscriptions();\r\n\r\n this.editables.changes.subscribe\r\n (\r\n () => {\r\n this.clearSubscribtions();\r\n this.updateSubscriptions();\r\n }\r\n );\r\n }\r\n\r\n public get inEditMode(): boolean {\r\n return this._inEditMode;\r\n }\r\n\r\n public saveAll(): void {\r\n this.editables.forEach(x => x.requestSave());\r\n }\r\n\r\n public cancelAll(): void {\r\n this.editables.forEach(x => x.cancel());\r\n }\r\n\r\n public closeAll(): void {\r\n this.requestEditorClose.emit(true);\r\n this.editables.forEach(x => x.close());\r\n }\r\n\r\n private clearSubscribtions(): void {\r\n this.subscriptions.forEach(x => x.unsubscribe());\r\n this.subscriptions.splice(0, this.subscriptions.length);\r\n }\r\n\r\n private updateSubscriptions(): void {\r\n\r\n this.editables.forEach\r\n (\r\n editable => {\r\n\r\n this.subscriptions.push(\r\n editable.saved.subscribe(\r\n () => this.onSave()\r\n )\r\n );\r\n\r\n this.subscriptions.push(\r\n ...editable.subscribe({\r\n onEditModeChange: this.updateEditMode.bind(this)\r\n })\r\n );\r\n }\r\n );\r\n }\r\n\r\n private onSave(): void {\r\n this.saveSubject.next();\r\n }\r\n\r\n private updateEditMode(): void {\r\n const newEditMode = this.editables\r\n .filter(x => x.inEditMode)\r\n .length > 0;\r\n\r\n if (newEditMode === this._inEditMode)\r\n return;\r\n\r\n this._inEditMode = newEditMode;\r\n\r\n this.editModeChange.next(newEditMode);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.clearSubscribtions();\r\n }\r\n}\r\n","import { Component, Host, Input } from '@angular/core';\r\n\r\nimport { EditableDirective } from './editable.directive';\r\n\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class FormBaseComponent<TData = unknown> {\r\n public static readonly inputs = ['locale'];\r\n\r\n protected name = '';\r\n private _locale = '';\r\n\r\n constructor(@Host() public readonly editable: EditableDirective<TData>) { }\r\n\r\n @Input()\r\n public set locale(value: string) {\r\n this._locale = value;\r\n }\r\n\r\n public get locale(): string {\r\n return this._locale;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { DeviceType } from '../core';\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\n\r\n@Component({\r\n selector: 'bonc-translation-input',\r\n templateUrl: './translation-input.component.html',\r\n styleUrls: ['./translation-input.component.scss']\r\n})\r\nexport class TranslationInputComponent {\r\n @Input({ required: true })\r\n public text!: LocalizedString;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device: DeviceType = DeviceType.NotSet;\r\n\r\n @Output()\r\n public startEditing: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public changed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public blurred: EventEmitter<void> = new EventEmitter();\r\n\r\n public onClick() {\r\n this.startEditing.emit();\r\n }\r\n\r\n public onKeyPress() {\r\n this.changed.emit();\r\n }\r\n\r\n public onBlur() {\r\n this.blurred.emit();\r\n }\r\n}\r\n","<input [(ngModel)]=\"text[locale]\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onKeyPress()\"\r\n (blur)=\"onBlur()\" />\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\nimport { DeviceType } from '../core';\r\n\r\n@Component({\r\n selector: 'bonc-translation-textarea',\r\n templateUrl: './translation-textarea.component.html',\r\n styleUrls: ['./translation-textarea.component.scss']\r\n})\r\nexport class TranslationTextareaComponent implements OnChanges, AfterViewInit {\r\n @ViewChildren(CdkTextareaAutosize)\r\n public autosizeList!: QueryList<CdkTextareaAutosize>;\r\n\r\n @Input()\r\n public minRows?: number;\r\n\r\n @Input()\r\n public maxRows?: number;\r\n\r\n @Input({ required: true })\r\n public text!: LocalizedString;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device: DeviceType = DeviceType.NotSet;\r\n\r\n @Output()\r\n public startEditing: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public changed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public blurred: EventEmitter<void> = new EventEmitter();\r\n\r\n constructor(\r\n private ngZone: NgZone\r\n ) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(this.triggerResize.bind(this));\r\n }\r\n\r\n ngOnChanges(): void {\r\n setTimeout(this.triggerResize.bind(this), 500);\r\n }\r\n\r\n public onClick() {\r\n this.startEditing.emit();\r\n }\r\n\r\n public onKeyPress() {\r\n this.changed.emit();\r\n }\r\n\r\n public onBlur() {\r\n this.blurred.emit();\r\n }\r\n\r\n private triggerResize() {\r\n // console.log('trigger resize!');\r\n\r\n this.ngZone.onStable.pipe(take(1))\r\n .subscribe(() => {\r\n this.autosizeList.forEach(x => x.resizeToFitContent(true));\r\n });\r\n }\r\n}\r\n","<textarea [(ngModel)]=\"text[locale]\"\r\n [cdkAutosizeMinRows]=\"minRows\"\r\n [cdkAutosizeMaxRows]=\"maxRows\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onKeyPress()\"\r\n (blur)=\"onBlur()\"\r\n matInput\r\n cdkTextareaAutosize>\r\n</textarea>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\nimport { TextEditorField } from '../../core';\r\n\r\n@Component({\r\n selector: 'bonc-link-popup',\r\n templateUrl: './link-popup.component.html',\r\n styleUrl: './link-popup.component.scss'\r\n})\r\nexport class LinkPopupComponent {\r\n public readonly TextEditorField = TextEditorField;\r\n @Output()\r\n public linkChange: EventEmitter<LocalizedString> = new EventEmitter();\r\n\r\n @Output()\r\n public startEditing: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public changed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public blurred: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public open: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public closed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Input({ required: true })\r\n public field!: TextEditorField;\r\n public LinkPopupField = TextEditorField;\r\n\r\n @Input()\r\n public maxRows?: number;\r\n\r\n @Input()\r\n public minRows?: number;\r\n\r\n @Input({ required: true })\r\n public linkTitle!: LocalizedString; // todo: allready in weblink\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input({ required: true })\r\n public link!: LocalizedString;\r\n\r\n public popupIsShown = false;\r\n\r\n public onClick() {\r\n this.startEditing.emit();\r\n }\r\n\r\n public onChange() {\r\n console.log('change link pop up')\r\n this.changed.emit();\r\n }\r\n\r\n public onBlur() {\r\n this.blurred.emit();\r\n }\r\n\r\n public showPopup(): void {\r\n this.popupIsShown = true;\r\n this.open.emit();\r\n }\r\n\r\n public hidePopup(): void {\r\n this.popupIsShown = false;\r\n this.closed.emit();\r\n }\r\n}\r\n","<bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\r\n (click)=\"showPopup()\"\r\n [text]=\"linkTitle\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"onClick()\"\r\n (changed)=\"onChange()\"\r\n (blurred)=\"onBlur()\">\r\n</bonc-translation-input>\r\n\r\n<bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\r\n (click)=\"showPopup()\"\r\n [text]=\"linkTitle\"\r\n [locale]=\"locale\"\r\n [minRows]=\"minRows\"\r\n [maxRows]=\"maxRows\"\r\n (startEditing)=\"onClick()\"\r\n (changed)=\"onChange()\"\r\n (blurred)=\"onBlur()\">\r\n</bonc-translation-textarea>\r\n\r\n<div *ngIf=\"popupIsShown\">\r\n <div class=\"popup\">\r\n <a (click)=\"hidePopup()\" class=\"close\">close</a>\r\n\r\n <label>Link\r\n <input [(ngModel)]=\"link[locale]\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onChange()\"\r\n (blur)=\"onBlur()\">\r\n </label>\r\n\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { EditableDirective } from '../core-components';\r\n\r\n@Component({\r\n selector: 'bonc-form-controls',\r\n templateUrl: './form-controls.component.html',\r\n styleUrls: ['./form-controls.component.scss']\r\n})\r\nexport class FormControlsComponent {\r\n @Input({ required: true })\r\n public editable!: EditableDirective<any>;\r\n}\r\n","<div [class.edit]=\"editable.inEditMode\" class=\"content\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<div [class.hidden]=\"!editable.inEditMode\" class=\"controls\">\r\n <a *ngIf=\"!editable.isDirty\" (click)=\"editable.cancel()\" class=\"close\">close</a>\r\n <ng-container *ngIf=\"editable.isDirty\">\r\n <a (click)=\"editable.cancel()\">reset</a>\r\n <a (click)=\"editable.requestSave()\" class=\"apply\">apply</a>\r\n </ng-container>\r\n</div>\r\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\r\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\r\nimport { catchError, last, map, Observable } from 'rxjs';\r\n\r\nimport { FileMeta, FileSrc } from '@candy-kingdom/bonnie';\r\n\r\n@Component({\r\n selector: 'bonc-file-uploader',\r\n templateUrl: './file-uploader.component.html',\r\n styleUrls: ['./file-uploader.component.scss']\r\n})\r\nexport class FileUploaderComponent {\r\n @ViewChild('fileInput', { static: true })\r\n public fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n @Output()\r\n public srcChange = new EventEmitter<FileSrc<FileMeta>>();\r\n\r\n @Input({ required: true })\r\n public uploadUrlMap!: ReadonlyMap<string, string>;\r\n\r\n public progress = 0;\r\n public isUploading = false;\r\n\r\n public autoplay = true;\r\n public clipStyle?: SafeStyle;\r\n\r\n public fileTypeMask?: string = undefined;\r\n\r\n private _uploadTypes: string[] = [];\r\n private _src?: FileSrc<FileMeta>;\r\n\r\n constructor(private sanitizer: DomSanitizer, private http: HttpClient, private readonly cd: ChangeDetectorRef) {\r\n }\r\n\r\n @Input()\r\n public set src(newSrc: FileSrc<FileMeta> | undefined) {\r\n if (this._src === newSrc)\r\n return;\r\n\r\n this._src = newSrc;\r\n }\r\n\r\n public get src(): FileSrc<FileMeta> | undefined {\r\n return this._src;\r\n }\r\n\r\n @Input()\r\n public set uploadTypes(newUploadType: string[]) {\r\n this._uploadTypes.splice(0, this._uploadTypes.length);\r\n\r\n this._uploadTypes.push(...newUploadType);\r\n\r\n this.fileTypeMask = this._uploadTypes.length === 0 ? undefined : this._uploadTypes.join(',');\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get uploadTypes(): string[] {\r\n return this._uploadTypes;\r\n }\r\n\r\n public onFileSelect(fileInput: HTMLInputElement) {\r\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\r\n return;\r\n\r\n const file = fileInput.files[0];\r\n\r\n const uploadUrl = this.uploadUrlMap.get(file.type) ?? this.uploadUrlMap.get(\"\");\r\n\r\n if (uploadUrl === undefined || uploadUrl === null) {\r\n console.error(`upload map doesn't have url for type '${file.type}'`);\r\n return;\r\n }\r\n\r\n const formData: FormData = new FormData();\r\n\r\n formData.append('file', file);\r\n\r\n this.progress = 0;\r\n this.isUploading = true;\r\n\r\n this.updateClip();\r\n\r\n const request = new HttpRequest('POST', uploadUrl, formData, {\r\n reportProgress: true\r\n });\r\n\r\n this.http\r\n .request<FileSrc<FileMeta>>(request)\r\n .pipe\r\n (\r\n map(event => this.getEventMessage(event)),\r\n // tap(message => this.showProgress(message)),\r\n last(), // return last (completed) message to caller\r\n catchError(this.handleError(file))\r\n ).subscribe\r\n (\r\n () => { this.isUploading = false; }\r\n );\r\n }\r\n\r\n public selectFile(event: Event): void {\r\n // ignore buble click on file picker\r\n if (event.target === this.fileInput.nativeElement)\r\n return;\r\n\r\n this.fileInput.nativeElement.click();\r\n }\r\n\r\n private getEventMessage(event: HttpEvent<FileSrc<FileMeta>>): void {\r\n switch (event.type) {\r\n case HttpEventType.Sent:\r\n break;\r\n\r\n case HttpEventType.UploadProgress:\r\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\r\n this.updateClip();\r\n break;\r\n\r\n case HttpEventType.Response:\r\n if (event.body === null || event.body === undefined) {\r\n console.warn(`empty body from uploader`);\r\n break;\r\n }\r\n\r\n this.srcChange.emit(event.body);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n this.cd.detectChanges()\r\n }\r\n\r\n private updateClip(): void {\r\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\r\n }\r\n\r\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\r\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\r\n const message = `error uploadingFile ${file.name}.`;\r\n console.error(message, error, p2);\r\n alert(message);\r\n return new Observable<unknown>();\r\n };\r\n\r\n return func;\r\n }\r\n}\r\n","<div *ngIf=\"src === undefined || src.url === undefined || src?.url?.length === 0\">Upload file</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { FileMeta, FileSrc, ImageMeta, OpenGraphData } from '@candy-kingdom/bonnie';\r\n\r\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\r\n\r\nconst uploadMap = new Map<string, string>();\r\nuploadMap.set('', `/api/admin/upload/image?width=${1200}&height=${630}&format=image/jpeg`);\r\n\r\n@Component({\r\n selector: 'bonc-seo-form',\r\n templateUrl: './seo-form.component.html',\r\n styleUrls: ['./seo-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class SeoFormComponent extends FormBaseComponent<OpenGraphData> implements OnInit {\r\n public readonly uploadMap = uploadMap;\r\n\r\n private _pageId = '';\r\n public ogImageUploadUrl = '';\r\n\r\n @Input()\r\n public label = '';\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input()\r\n public set pageId(value: string) {\r\n this._pageId = value;\r\n this.ogImageUploadUrl = `/api/admin/page/Og-Image?pageId=${this.pageId}`; // todo: replace with link to single image api\r\n }\r\n\r\n public get pageId(): string {\r\n return this._pageId;\r\n }\r\n\r\n public ResToSrc(res: { url: string }): string {\r\n return res.url;\r\n }\r\n\r\n public replaceImage($event: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n if (this.editable.value !== undefined) {\r\n this.editable.value.image[this.locale] = $event as FileSrc<ImageMeta>;\r\n }\r\n\r\n this.editable.updateDirty();\r\n }\r\n}\r\n","<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\r\n <h2 *ngIf=\"label\">{{label}}</h2>\r\n\r\n <div class=\"form-group\">\r\n <label>Title</label>\r\n <bonc-translation-input [text]=\"editable.value.title\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-input>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Description</label>\r\n <bonc-translation-textarea [text]=\"editable.value.description\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-textarea>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Share image | 1200x630</label>\r\n\r\n <bonc-file-uploader [src]=\"editable.value.image[locale]\"\r\n [uploadTypes]=\"['image/png', 'image/jpeg']\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"replaceImage($event)\">\r\n <img *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [src]=\"editable.value.image[locale].url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [href]=\"editable.value.image[locale].url\" download target=\"_blank\">Download</a>\r\n </div>\r\n\r\n</bonc-form-controls>\r\n\r\n<div *ngIf=\"!editable.value\">Editable Value canot be null or undefined</div>\r\n","import { ChangeDetectorRef, Component, Host, Input, OnInit, inject } from '@angular/core';\r\n\r\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components/editable.directive';\r\n\r\n@Component({\r\n selector: 'bonc-svg-form',\r\n templateUrl: './svg-form.component.html',\r\n styleUrls: ['./svg-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class SvgFormComponent extends FormBaseComponent<FileSrc<SvgMeta>> implements OnInit {\r\n private readonly cd = inject(ChangeDetectorRef);\r\n\r\n public readonly SvgMime = 'image/svg+xml';\r\n\r\n @Input()\r\n public label = '';\r\n\r\n public uploadMap = new Map<string, string>();\r\n\r\n private _uploadUrl = '/api/admin/upload/image/svg';\r\n\r\n constructor(@Host() editable: EditableDirective<FileSrc<SvgMeta>>) {\r\n super(editable)\r\n\r\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input()\r\n public set uploadUrl(newValue: string) {\r\n this._uploadUrl = newValue;\r\n\r\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"[SvgMime]\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n\r\n</bonc-form-controls>\r\n","import { ChangeDetectorRef, Component, Host, Input, OnInit, inject } from '@angular/core';\r\n\r\nimport { FileMeta, FileSrc, ImageMeta } from '@candy-kingdom/bonnie';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components/editable.directive';\r\n\r\nconst DefaultImageMimeTypes = ['image/png', 'image/jpeg'];\r\n\r\n@Component({\r\n selector: 'bonc-one-image-form',\r\n templateUrl: './one-image-form.component.html',\r\n styleUrls: ['./one-image-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class OneImageFormComponent extends FormBaseComponent<FileSrc<ImageMeta>> implements OnInit {\r\n private readonly cd = inject(ChangeDetectorRef);\r\n\r\n public uploadMap = new Map<string, string>();\r\n\r\n private _mimeTypes = DefaultImageMimeTypes;\r\n\r\n private _uploadUrl = '/api/admin/upload/image';\r\n\r\n private _label = ''\r\n\r\n constructor(@Host() editable: EditableDirective<FileSrc<ImageMeta>>) {\r\n super(editable)\r\n\r\n this.uploadMap.set('', this._uploadUrl);\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input()\r\n public set label(newValue: string) {\r\n this._label = newValue;\r\n }\r\n\r\n public get label(): string {\r\n return this._label;\r\n }\r\n\r\n @Input()\r\n public set uploadUrl(newValue: string) {\r\n this._uploadUrl = newValue;\r\n\r\n this.uploadMap.set('', this._uploadUrl);\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n @Input()\r\n public set mimeTypes(newValue: string[]) {\r\n this._mimeTypes = newValue.length === 0 ? DefaultImageMimeTypes : newValue;\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get mimeTypes(): string[] {\r\n return this._mimeTypes;\r\n }\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<ImageMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"mimeTypes\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n\r\n</bonc-form-controls>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components';\r\n\r\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\r\n\r\n@Component({\r\n selector: 'bonc-file-form',\r\n templateUrl: './file-form.component.html',\r\n styleUrls: ['./file-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class FileFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\r\n @Input()\r\n public label = '';\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input({ required: true })\r\n public uploadTypes: string[] = [];\r\n\r\n @Input({ required: true })\r\n public uploadMap = new Map<string, string>();;\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"uploadTypes\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <div *ngIf=\"editable.value?.url?.length ?? 0 > 0\">{{editable.value?.url}}</div>\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n</bonc-form-controls>\r\n","\r\nexport enum TextInputStyle {\r\n NotSet = 0,\r\n SingleLine = 1,\r\n MultiLine = 2\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TextInputStyle } from './TextInputStyle';\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components';\r\n\r\n@Component({\r\n selector: 'bonc-text-form',\r\n templateUrl: './text-form.component.html',\r\n styleUrls: ['./text-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class TextFormComponent extends FormBaseComponent<string> implements OnInit {\r\n public readonly TextInputStyle = TextInputStyle;\r\n\r\n @Input()\r\n public label = '';\r\n\r\n @Input()\r\n public type = TextInputStyle.SingleLine;\r\n\r\n ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n\r\n <input *ngIf=\"editable && type === TextInputStyle.SingleLine\"\r\n [(ngModel)]=\"editable.value\"\r\n (click)=\"editable.startEditing()\"\r\n (keyup)=\"editable.updateDirty()\"\r\n (blur)=\"editable.updateDirty()\" />\r\n\r\n <textarea *ngIf=\"editable && type === TextInputStyle.MultiLine\"\r\n [(ngModel)]=\"editable.value\"\r\n (click)=\"editable.startEditing()\"\r\n (keyup)=\"editable.updateDirty()\"\r\n (blur)=\"editable.updateDirty()\">\r\n </textarea>\r\n</bonc-form-controls>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components/editable.directive';\r\nimport { AnimationOptions } from 'ngx-lottie';\r\n\r\n@Component({\r\n selector: 'bonc-lottie-form',\r\n templateUrl: './lottie-form.component.html',\r\n styleUrls: ['./lottie-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class LottieFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\r\n public readonly LottieMimeType = 'application/json';\r\n\r\n public animOptions?: AnimationOptions;\r\n\r\n @Input()\r\n public label = '';\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n\r\n this.editable.valueChange.subscribe(x => {\r\n const url = x?.url ?? '';\r\n this.animOptions = url.length === 0 ? undefined : { path: url };\r\n })\r\n }\r\n\r\n @Input({ required: true })\r\n public uploadMap = new Map<string, string>();;\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"[LottieMimeType]\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n\r\n <ng-lottie *ngIf=\"animOptions\"\r\n [options]=\"animOptions\"></ng-lottie>\r\n\r\n\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n</bonc-form-controls>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\n\r\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\r\nimport { TextEditorField } from '../../core';\r\n\r\n@Component({\r\n selector: 'bonc-translation-form',\r\n templateUrl: './translation-form.component.html',\r\n styleUrls: ['./translation-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class TranslationFormComponent extends FormBaseComponent<LocalizedString> implements OnInit {\r\n public readonly TextEditorField = TextEditorField;\r\n\r\n @Input({ required: true })\r\n public field!: TextEditorField;\r\n\r\n @Input() label?: string;\r\n\r\n\r\n ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n}\r\n","<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n\r\n <bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\r\n [text]=\"editable.value\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-input>\r\n\r\n\r\n <bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\r\n [text]=\"editable.value\"\r\n [minRows]=\"2\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-textarea>\r\n</bonc-form-controls>\r\n\r\n<div *ngIf=\"editable.value===undefined\">Editable value canot be undefined</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\n\r\n@Component({\r\n selector: 'bonc-unknown-form',\r\n templateUrl: './unknown-form.component.html',\r\n styleUrls: ['./unknown-form.component.scss']\r\n})\r\nexport class UnknownFormComponent extends FormBaseComponent<string> implements OnInit {\r\n @Input()\r\n public label = '';\r\n\r\n ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n}\r\n","<label>Unknown form:<b>{{label}}</b></label>\r\n<pre><ng-content></ng-content></pre>\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const API_BASE_URL = new InjectionToken<string>('ApiBaseUrl');\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Observable, combineLatest, map, merge, mergeMap, of } from 'rxjs';\r\n\r\nimport { PageBase, View } from '@candy-kingdom/bonnie';\r\n\r\nimport { SettingData } from \"../generated\";\r\nimport { API_BASE_URL } from \"./API_BASE_URL\";\r\n\r\ntype DataDictionary = { [n: string]: Observable<unknown> };\r\n\r\nexport type SettingDataDict = { [id: string]: SettingData };\r\n\r\n@Injectable()\r\nexport class DataService {\r\n constructor(private readonly http: HttpClient, @Inject(API_BASE_URL) private baseHref: string) {\r\n }\r\n\r\n public getView(viewCode: string): Observable<Readonly<PageBase>> {\r\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/views/${viewCode}`);\r\n return pageOb;\r\n }\r\n\r\n public getPage(pageRoute: string): Observable<Readonly<PageBase>> {\r\n const pageUrl = `/${pageRoute}`\r\n\r\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/pages/?url=${encodeURIComponent(pageUrl)}`);\r\n return pageOb;\r\n }\r\n\r\n public getSettings(ids: string[]): Observable<Readonly<SettingDataDict>> {\r\n const pageOb = this.http.get<SettingDataDict>(`${this.baseHref}api/settings`, {\r\n params: { ids: ids }\r\n });\r\n\r\n return pageOb;\r\n }\r\n\r\n private getSkeleton<T extends (PageBase | View)>(url: string): Observable<Readonly<T>> {\r\n const skeletonOb = this.http.get<T>(url);\r\n\r\n const routeDataObs = skeletonOb\r\n .pipe\r\n (\r\n map(\r\n x => {\r\n const notEmptyDataRoutes = x.bones\r\n .map(b => ('dataRoute' in b) && typeof (b.dataRoute) === 'string' ? b.dataRoute : '')\r\n .filter(x => x.length > 0);\r\n\r\n if (notEmptyDataRoutes.length === 0) {\r\n const emptyData: DataDictionary = {};\r\n return { page: of(x), data: of(emptyData) };\r\n }\r\n\r\n return {\r\n page: of(x),\r\n data: combineLatest\r\n (\r\n notEmptyDataRoutes\r\n .map(dataRoute => {\r\n const url = `${this.baseHref}api/Pages/Children/?url=${dataRoute}`;\r\n\r\n return {\r\n route: dataRoute,\r\n json: this.http.get(url)\r\n }\r\n })\r\n .reduce(\r\n (prev, curr) => {\r\n prev[curr.route] = curr.json;\r\n return prev;\r\n }, {} as DataDictionary\r\n )\r\n )\r\n }\r\n }\r\n\r\n ),\r\n map(x => combineLatest(x)),\r\n mergeMap(res => merge(res)),\r\n map(x => {\r\n\r\n for (const bone of x.page.bones) {\r\n if (!('dataRoute' in bone) || typeof bone.dataRoute !== 'string' || bone.dataRoute.length === 0)\r\n continue;\r\n\r\n const data = x.data[bone.dataRoute];\r\n\r\n if (data === undefined || data === null)\r\n throw new Error(`Data ${bone.dataRoute} have not been preloaded`);\r\n\r\n (bone as any).data = data; // todo: fix\r\n }\r\n\r\n return x.page;\r\n })\r\n );\r\n\r\n return routeDataObs;\r\n }\r\n}\r\n\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { PageBase } from \"@candy-kingdom/bonnie\";\r\n\r\nimport { SettingBase, SettingGroup } from \"../generated\";\r\nimport { API_BASE_URL } from \"./API_BASE_URL\";\r\n\r\n@Injectable()\r\nexport class AdminDataService {\r\n constructor(private readonly http: HttpClient, @Inject(API_BASE_URL) private baseHref: string) {\r\n console.log('baseHref: ' + baseHref);\r\n }\r\n\r\n public getSettingGroups(): Observable<SettingGroup[]> {\r\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/settings`);\r\n return pageOb;\r\n }\r\n\r\n public getPage(url: string): Observable<SettingGroup[]> {\r\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/pages/${url}`);\r\n return pageOb;\r\n }\r\n\r\n public storePage(page: PageBase): Observable<void> {\r\n const ob = this.http.post<void>(`${this.baseHref}api/admin/pages`, page);\r\n return ob;\r\n }\r\n\r\n public updateSettings(settings: SettingBase[]): Observable<void> {\r\n const ob = this.http.post<void>(`${this.baseHref}api/admin/settings`, settings);\r\n return ob;\r\n }\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { DeviceType } from '../core';\r\nimport { EditableGroupComponent } from '../core-components';\r\n\r\n@Component({\r\n selector: 'bonc-admin-controls',\r\n templateUrl: './admin-controls.component.html',\r\n styleUrls: ['./admin-controls.component.scss']\r\n})\r\nexport class AdminControlsComponent {\r\n public readonly DeviceType = DeviceType;\r\n\r\n @Input({ required: true })\r\n public editableGroup!: EditableGroupComponent;\r\n\r\n @Input()\r\n public deviceControls = false;\r\n\r\n public locale = 'en';\r\n public device = this.DeviceType.Desktop;\r\n\r\n public changeLocale(): void {\r\n this.locale = this.locale === 'en' ? 'ru' : 'en';\r\n }\r\n\r\n public changeDevice(): void {\r\n switch (this.device) {\r\n case DeviceType.Desktop:\r\n this.device = DeviceType.Tablet;\r\n return;\r\n\r\n case DeviceType.Tablet:\r\n this.device = DeviceType.Mobile;\r\n return;\r\n\r\n case DeviceType.Mobile:\r\n this.device = DeviceType.Desktop;\r\n return;\r\n\r\n default:\r\n this.device = DeviceType.Desktop;\r\n return;\r\n }\r\n }\r\n}\r\n","<div class=\"page-controls\">\r\n <a (click)=\"changeLocale()\" class=\"locale\">Locale: {{locale}}</a>\r\n\r\n <!-- todo: return this functionality -->\r\n <!-- <a *ngIf=\"deviceControls\" (click)=\"changeDevice()\" class=\"device\">\r\n <span *ngIf=\"device === DeviceType.Desktop\">DESKTOP</span>\r\n <span *ngIf=\"device === DeviceType.Tablet\">TABLET</span>\r\n <span *ngIf=\"device === DeviceType.Mobile\">MOBILE</span>\r\n </a> -->\r\n\r\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\r\n (click)=\"editableGroup.saveAll()\"\r\n class=\"save\">Save all</a>\r\n\r\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\r\n (click)=\"editableGroup.cancelAll()\"\r\n class=\"cancel\">Cancel all</a>\r\n</div>\r\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\r\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\r\nimport { catchError, last, map, Observable } from 'rxjs';\r\n\r\nimport { MediaObjectFit, PixMediaUnion } from '@candy-kingdom/bonnie';\r\nimport { MediaType } from '../core';\r\n\r\nconst imageMimeTypes = ['image/png', 'image/jpeg'];\r\nconst videoMimeTypes = ['video/mp4'];\r\n\r\nconst imageFileTypes = imageMimeTypes.join(',');\r\nconst videoFileTypes = videoMimeTypes.join(',');\r\n\r\nconst allMediaFileTypes = `${imageFileTypes},${videoFileTypes}`;\r\n\r\n@Component({\r\n selector: 'bonc-media-uploader',\r\n templateUrl: './media-uploader.component.html',\r\n styleUrls: ['./media-uploader.component.scss']\r\n})\r\nexport class MediaUploaderComponent {\r\n public readonly MediaObjectFit = MediaObjectFit;\r\n\r\n @ViewChild('fileInput', { static: true })\r\n public fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n @Output()\r\n public srcChange = new EventEmitter<PixMediaUnion>();\r\n\r\n @Input({ required: true })\r\n public uploadUrlMap!: ReadonlyMap<MediaType, string>;\r\n\r\n @Input()\r\n public forceRatio?: number;\r\n\r\n public progress = 0;\r\n public isUploading = false;\r\n\r\n public autoplay = true;\r\n public clipStyle?: SafeStyle;\r\n public fileTypeMask = allMediaFileTypes;\r\n\r\n private _uploadType?: MediaType;\r\n private _src?: PixMediaUnion;\r\n\r\n constructor(private sanitizer: DomSanitizer, private http: HttpClient, private cd: ChangeDetectorRef) {\r\n }\r\n\r\n @Input()\r\n public set src(newSrc: PixMediaUnion | undefined) {\r\n if (this._src === newSrc)\r\n return;\r\n\r\n this._src = newSrc;\r\n }\r\n\r\n public get src(): PixMediaUnion | undefined {\r\n return this._src;\r\n }\r\n\r\n @Input()\r\n public set uploadType(newUploadType: MediaType | undefined) {\r\n switch (newUploadType) {\r\n case \"image\":\r\n this._uploadType = newUploadType;\r\n this.fileTypeMask = imageFileTypes;\r\n break;\r\n\r\n case \"video\":\r\n this._uploadType = newUploadType;\r\n this.fileTypeMask = videoFileTypes;\r\n break;\r\n\r\n case undefined:\r\n default:\r\n this._uploadType = newUploadType;\r\n this.fileTypeMask = allMediaFileTypes;\r\n break;\r\n }\r\n }\r\n\r\n public get uploadType(): MediaType | undefined {\r\n return this._uploadType;\r\n }\r\n\r\n public onFileSelect(fileInput: HTMLInputElement) {\r\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\r\n return;\r\n\r\n const file = fileInput.files[0];\r\n\r\n let uploadingMediaType: MediaType;\r\n\r\n if (this._uploadType !== undefined && this._uploadType !== null) {\r\n uploadingMediaType = this._uploadType;\r\n }\r\n else if (imageMimeTypes.includes(file.type)) {\r\n uploadingMediaType = 'image';\r\n }\r\n else if (videoMimeTypes.includes(file.type)) {\r\n uploadingMediaType = 'video';\r\n }\r\n else {\r\n console.error(`unknown media type ${file.type} (${file.name})`);\r\n return;\r\n }\r\n\r\n const uploadUrl = this.uploadUrlMap.get(uploadingMediaType);\r\n\r\n if (uploadUrl === undefined || uploadUrl === null) {\r\n console.error(`upload map doesn't have url for type ${uploadingMediaType}`);\r\n return;\r\n }\r\n\r\n const formData: FormData = new FormData();\r\n\r\n formData.append('file', file);\r\n formData.append('ratio', `${this.forceRatio ?? 0}`);\r\n\r\n this.progress = 0;\r\n this.isUploading = true;\r\n\r\n this.updateClip();\r\n\r\n const request = new HttpRequest('POST', uploadUrl, formData, {\r\n reportProgress: true\r\n });\r\n\r\n this.http\r\n .request<PixMediaUnion>(request)\r\n .pipe\r\n (\r\n map(event => this.getEventMessage(event)),\r\n // tap(message => this.showProgress(message)),\r\n last(), // return last (completed) message to caller\r\n catchError(this.handleError(file))\r\n ).subscribe\r\n (\r\n () => { this.isUploading = false; }\r\n );\r\n }\r\n\r\n public selectFile(event: Event): void {\r\n // ignore buble click on file picker\r\n if (event.target === this.fileInput.nativeElement)\r\n return;\r\n\r\n this.fileInput.nativeElement.click();\r\n }\r\n\r\n private getEventMessage(event: HttpEvent<PixMediaUnion>): void {\r\n switch (event.type) {\r\n case HttpEventType.Sent:\r\n break;\r\n\r\n case HttpEventType.UploadProgress:\r\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\r\n this.updateClip();\r\n break;\r\n\r\n case HttpEventType.Response:\r\n if (event.body === undefined || event.body === null) {\r\n console.error('media deserialization error. Response body in undefined');\r\n } else {\r\n // remove this\r\n // needed for C# deserialization\r\n const pixmedia = {\r\n $type: event.body.type,\r\n ...event.body as any,\r\n };\r\n\r\n this.srcChange.emit(pixmedia);\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n private updateClip(): void {\r\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\r\n }\r\n\r\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\r\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\r\n const message = `error uploadingFile ${file.name}.`;\r\n console.error(message, error, p2);\r\n alert(message);\r\n return new Observable<unknown>();\r\n };\r\n\r\n return func;\r\n }\r\n}\r\n","<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\r\n\r\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[boncSkeletonEditorAnchor]'\r\n})\r\nexport class SkeletonEditorAnchorDirective {\r\n\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n}\r\n","import { EventEmitter, HostBinding, Component, Input } from '@angular/core';\r\n\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\n\r\nimport { ContentPreset } from '../skeleton-editor/ContentPreset';\r\nimport { IBoneEditor } from '../skeleton-editor/IBoneEditor';\r\nimport { DeviceType } from '../core';\r\n\r\n@Component({ template: '' })\r\nexport abstract class BoneEditorBaseComponent<TBone extends Bone> implements IBoneEditor<TBone> {\r\n public readonly editing: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n public readonly saved: EventEmitter<Bone> = new EventEmitter<Bone>();\r\n public readonly removed: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public readonly noPresets: boolean;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n public device = DeviceType.NotSet;\r\n\r\n private _bone!: TBone;\r\n private _storedData: string = '';\r\n\r\n private _currentPreset: ContentPreset<TBone> | undefined;\r\n\r\n protected readonly presets: ReadonlyArray<ContentPreset<TBone>>;\r\n private _isDirty = false;\r\n private _isEditing = false;\r\n\r\n public abstract onReset(): void;\r\n public abstract onFinishEditing(): void;\r\n\r\n protected abstract getPresets(): ContentPreset<TBone>[];\r\n\r\n constructor() {\r\n this.presets = this.getPresets();\r\n\r\n if (this.presets === undefined || this.presets === null)\r\n throw new Error('presets cannot be undefined in ContentPreset constructor');\r\n\r\n if (this.presets.length === 0) {\r\n this.presets = [\r\n\r\n {\r\n title: 'default',\r\n isActive: () => true,\r\n transformer: bone => bone,\r\n clean: bone => bone,\r\n }\r\n ];\r\n }\r\n\r\n this.noPresets = this.presets.length === 1;\r\n }\r\n\r\n @HostBinding('class.mobile') get isMobile(): boolean {\r\n return this.device !== undefined && this.device === DeviceType.Mobile;\r\n }\r\n\r\n @HostBinding('class.tablet') get isTablet(): boolean {\r\n return this.device !== undefined && this.device === DeviceType.Tablet;\r\n }\r\n\r\n @HostBinding('class.desktop') get isDesktop(): boolean {\r\n return this.device !== undefined && this.device === DeviceType.Desktop;\r\n }\r\n\r\n public get currentPreset(): ContentPreset<TBone> | undefined {\r\n return this._currentPreset;\r\n }\r\n\r\n public get bone(): TBone {\r\n return this._bone;\r\n }\r\n\r\n @Input({ required: true })\r\n public set bone(newData: TBone) {\r\n this._isDirty = false;\r\n this._storedData = JSON.stringify(newData);\r\n this._bone = JSON.parse(this._storedData);\r\n this.updatePresetByData();\r\n }\r\n\r\n public get isDirty(): boolean {\r\n return this._isDirty;\r\n }\r\n\r\n public get isEditing(): boolean {\r\n return this._isEditing;\r\n }\r\n\r\n public resetData(): void {\r\n this._isEditing = false;\r\n this.bone = JSON.parse(this._storedData);\r\n\r\n if (this.onReset !== undefined)\r\n this.onReset();\r\n\r\n this.editing.emit(false);\r\n }\r\n\r\n public updateDirty(): void {\r\n this._isDirty = JSON.stringify(this._bone) !== this._storedData;\r\n }\r\n\r\n public markAsDirty(): void {\r\n this._isDirty = true;\r\n }\r\n\r\n public remove(): void {\r\n this.removed.next();\r\n }\r\n\r\n public save(): void {\r\n if (!this.isDirty)\r\n return;\r\n\r\n this._isDirty = false;\r\n\r\n this.finishEditing();\r\n\r\n this._storedData = JSON.stringify(this._bone);\r\n\r\n const clonedData: TBone = JSON.parse(this._storedData);\r\n this.saved.emit(clonedData);\r\n }\r\n\r\n public startEditing(): void {\r\n if (this._isEditing) {\r\n this.updateDirty();\r\n return;\r\n }\r\n\r\n this._isEditing = true;\r\n this.updateDirty();\r\n\r\n this.editing.emit(true);\r\n }\r\n\r\n public finishEditing(): void {\r\n if (this._isDirty)\r\n throw new Error('Нельзя закрывать редактирование когда есть изменения. Надо сохранить либо зарезетить.');\r\n\r\n if (this.onFinishEditing !== undefined)\r\n this.onFinishEditing();\r\n\r\n this._isEditing = false;\r\n }\r\n\r\n public nextPreset(): void {\r\n const newIndex = this._currentPreset === undefined ? 0 : this.presets.indexOf(this._currentPreset) + 1;\r\n this.applyPresetAtIndex(newIndex);\r\n }\r\n\r\n private applyPresetAtIndex = (newIndex: number): void => {\r\n newIndex = newIndex < 0 ? 0 : newIndex % this.presets.length;\r\n\r\n const currentIndex = this._currentPreset === undefined ? -1 : this.presets.indexOf(this._currentPreset);\r\n if (currentIndex === newIndex)\r\n return;\r\n\r\n this._currentPreset = this.presets[newIndex];\r\n this._currentPreset.transformer(this._bone);\r\n\r\n this.updateDirty();\r\n }\r\n\r\n private updatePresetByData = (): void => {\r\n const countOfActive = this.presets.map(p => p.isActive(this._bone)).filter(p => p).length;\r\n\r\n if (countOfActive !== 1)\r\n throw new Error(`active preset count should be equal 1, but it was: ${countOfActive}. ${this.constructor.name}`);\r\n\r\n for (let i = 0; this.presets.length; i++) {\r\n const preset = this.presets[i];\r\n\r\n if (preset.isActive(this._bone)) {\r\n this.applyPresetAtIndex(i);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\n\r\nimport { ContentPreset } from '../../skeleton-editor/ContentPreset';\r\nimport { BoneEditorBaseComponent } from '../bone-editor-base.component';\r\n\r\n@Component({\r\n selector: 'bonc-unknown-bone-editor',\r\n templateUrl: './unknown-bone-editor.component.html',\r\n styleUrls: ['./unknown-bone-editor.component.scss']\r\n})\r\nexport class UnknownBoneEditorComponent extends BoneEditorBaseComponent<Bone> {\r\n public onFinishEditing(): void { }\r\n public onReset(): void { }\r\n\r\n protected getPresets(): ContentPreset<Bone>[] {\r\n return [];\r\n }\r\n}\r\n","<p>Unknown Bone Editor | bone type: {{bone.type}}</p>\r\n<pre>{{bone | json}}</pre>\r\n","import { Component, ComponentFactoryResolver, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\n\r\nimport { SkeletonEditorAnchorDirective } from '../skeleton-editor-anchor.directive';\r\nimport { DeviceType } from '../../core';\r\nimport { IBoneEditor } from '../IBoneEditor';\r\nimport { BoneEditorMap } from '../BoneEditorMap';\r\nimport { UnknownBoneEditorComponent } from '../../bone-editors/unknown-bone-editor/unknown-bone-editor.component';\r\n\r\n// todo: rename class\r\n@Component({\r\n selector: 'bonc-bone-editor-container',\r\n templateUrl: './bone-editor-container.component.html',\r\n styleUrls: ['./bone-editor-container.component.scss']\r\n})\r\nexport class BoneEditorContainerComponent implements OnChanges {\r\n @ViewChild(SkeletonEditorAnchorDirective, { static: true })\r\n public anchor!: SkeletonEditorAnchorDirective;\r\n\r\n @Output()\r\n public removed: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Output()\r\n public saved: EventEmitter<Bone> = new EventEmitter<Bone>();\r\n\r\n @Output()\r\n public editing: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n public DeviceType = DeviceType;\r\n\r\n public editor!: IBoneEditor;\r\n\r\n public themePopupIsShown = false;\r\n\r\n private _bone!: Bone;\r\n\r\n private removeSubscription?: Subscription;\r\n private saveSubscription?: Subscription;\r\n private changedSubscription?: Subscription;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device = DeviceType.NotSet;\r\n\r\n constructor(private readonly componentFactoryResolver: ComponentFactoryResolver) {\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.editor === undefined || this.editor === null)\r\n return;\r\n\r\n this.editor.locale = this.locale;\r\n this.editor.device = this.device;\r\n }\r\n\r\n @Input({ required: true })\r\n public map!: BoneEditorMap\r\n\r\n public get bone(): Bone {\r\n return this._bone;\r\n }\r\n\r\n @Input({ required: true })\r\n public set bone(newBone: Bone) {\r\n this._bone = newBone;\r\n\r\n if (this.removeSubscription) {\r\n this.removeSubscription.unsubscribe();\r\n this.removeSubscription = undefined;\r\n }\r\n\r\n if (this.saveSubscription) {\r\n this.saveSubscription.unsubscribe();\r\n this.saveSubscription = undefined;\r\n }\r\n\r\n if (this.changedSubscription) {\r\n this.changedSubscription.unsubscribe();\r\n this.changedSubscription = undefined;\r\n }\r\n\r\n const viewContainerRef = this.anchor.viewContainerRef;\r\n\r\n viewContainerRef.clear();\r\n\r\n const componentType = this.map.get(newBone.type) ?? UnknownBoneEditorComponent;\r\n\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\r\n const boneEditorRef = viewContainerRef.createComponent(componentFactory);\r\n\r\n this.editor = boneEditorRef.instance;\r\n this.editor.bone = newBone;\r\n\r\n this.removeSubscription = this.editor.removed.subscribe(() => {\r\n this.removed.next();\r\n });\r\n\r\n this.changedSubscription = this.editor.editing.subscribe\r\n (\r\n (isEditing: boolean) => {\r\n this.editing.next(isEditing);\r\n }\r\n );\r\n\r\n this.saveSubscription = this.editor.saved.subscribe(\r\n (newBoneValue: Bone) => {\r\n this.saved.next(newBoneValue);\r\n }\r\n );\r\n\r\n this.ngOnChanges();\r\n }\r\n\r\n public nextPreset = (): void => {\r\n if (this.editor === undefined || this.editor === null)\r\n return;\r\n\r\n this.editor.nextPreset();\r\n }\r\n\r\n // todo: add or remove visibility feature\r\n\r\n // public setDisabled = (disabled: boolean): void => {\r\n // if (this.editor === undefined || this.editor === null)\r\n // return;\r\n\r\n // this.editor.startEditing();\r\n\r\n // if (this.device === DeviceType.Desktop)\r\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Desktop, !disabled);\r\n // else if (this.device === DeviceType.Tablet)\r\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Tablet, !disabled);\r\n // else if (this.device === DeviceType.Mobile)\r\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Mobile, !disabled);\r\n\r\n // this.editor.updateDirty();\r\n // }\r\n\r\n public get disabled(): boolean {\r\n if (this.editor === undefined || this.editor === null)\r\n throw new Error('editor should have been set');\r\n\r\n return false;\r\n // todo: add or remove visibility feature\r\n // const visibility = this.editor.bone.visibility;\r\n\r\n // if (this.device === DeviceType.Desktop && hasFlag(visibility, DeviceVisibility.Desktop))\r\n // return false;\r\n\r\n // if (this.device === DeviceType.Tablet && hasFlag(visibility, DeviceVisibility.Tablet))\r\n // return false;\r\n\r\n // if (this.device === DeviceType.Mobile && hasFlag(visibility, DeviceVisibility.Mobile))\r\n // return false;\r\n\r\n // return true;\r\n }\r\n}\r\n","<div *ngIf=\"editor\" class=\"left bar\" [class.inactive]=\"editor.noPresets\">\r\n <!-- <a *ngFor=\"let control of editor.controls\" (click)=\"control.activate()\">{{control.label}}</a> -->\r\n <!-- <a (click)=\"setDisabled(!disabled)\" class=\"disabled\">block {{disabled ? 'disabled' : 'enabled'}} ({{editor.bone.visibility}})</a> -->\r\n <a *ngIf=\"editor.currentPreset && !editor.noPresets\" (click)=\"nextPreset()\" class=\"preset\">style:<br />{{editor.currentPreset.title}}</a>\r\n</div>\r\n\r\n<div class=\"editor-container\"\r\n [class.disabled]=\"disabled\"\r\n [style.width]=\"\r\n device === DeviceType.Desktop ? '75vw'\r\n : device === DeviceType.Tablet ? '55vw'\r\n : device === DeviceType.Mobile ? '35vw'\r\n : '75vw' \">\r\n <ng-template boncSkeletonEditorAnchor>\r\n </ng-template>\r\n</div>\r\n\r\n<div *ngIf=\"editor\" [class.active]=\"editor.isEditing || editor.isDirty\" class=\"right bar\">\r\n <!-- <a *ngIf=\"!editor.isEditing\" (click)=\"editor.remove()\" class=\"delete\">!!! remove</a> -->\r\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.resetData()\" class=\"reset\">reset</a>\r\n <a *ngIf=\"editor.isEditing && !editor.isDirty\" (click)=\"editor.finishEditing()\" class=\"close\">close</a>\r\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.save()\" class=\"save\">apply</a>\r\n</div>\r\n","import { Component, Host, Input, OnChanges, OnInit, QueryList, ViewChildren } from '@angular/core';\r\n\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\nimport { BoneEditorContainerComponent } from './bone-editor-container/bone-editor-container.component';\r\nimport { EditableDirective } from '../core-components/editable.directive';\r\nimport { DeviceType } from '../core';\r\nimport { IBoneTemplate } from './IBoneTemplate';\r\nimport { BoneEditorMap } from './BoneEditorMap';\r\n\r\n// todo: rename class\r\n@Component({\r\n selector: 'bonc-skeleton-editor',\r\n templateUrl: './skeleton-editor.component.html',\r\n styleUrls: ['./skeleton-editor.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class SkeletonEditorComponent implements OnInit, OnChanges {\r\n @ViewChildren('boneEditorContainer')\r\n public boneEditorContainerList!: QueryList<BoneEditorContainerComponent>;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device = DeviceType.NotSet;\r\n\r\n public readonly templatesAreShown: boolean[] = [];\r\n\r\n constructor(@Host() public editable: EditableDirective<Bone[]>) {\r\n\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.boneEditorContainerList.forEach\r\n (\r\n editorContainer => editorContainer.editor?.save()\r\n );\r\n\r\n this.editable.save();\r\n });\r\n\r\n this.editable.canceled.subscribe(() => {\r\n this.boneEditorContainerList.forEach\r\n (\r\n editorContainer => editorContainer.editor?.resetData()\r\n );\r\n\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input({ required: true })\r\n public map!: BoneEditorMap;\r\n\r\n public ngOnChanges(): void {\r\n this.templatesAreShown.splice(0, this.templatesAreShown.length);\r\n if (this.bones === undefined)\r\n return;\r\n\r\n this.bones.forEach(() => this.templatesAreShown.push(false));\r\n this.templatesAreShown.push(false);\r\n }\r\n\r\n @Input({ required: true })\r\n public templates!: ReadonlyArray<IBoneTemplate>;\r\n\r\n\r\n public get bones(): Bone[] {\r\n return this.editable?.value ?? [];\r\n }\r\n\r\n public boneEditHandler(isEditing: boolean): void {\r\n if (isEditing)\r\n this.editable.startEditing();\r\n else {\r\n const allClosed = this.boneEditorContainerList\r\n .filter(x => x.editor !== undefined && x.editor.isEditing)\r\n .length === 0;\r\n\r\n this.editable.updateDirty();\r\n\r\n if (!this.editable.isDirty && allClosed)\r\n this.editable.close();\r\n }\r\n }\r\n\r\n public boneChangeHandler(index: number, newBoneValue: Bone): void {\r\n if (Array.isArray(this.editable.value)) {\r\n this.editable.value[index] = newBoneValue;\r\n }\r\n\r\n this.editable.save();\r\n }\r\n\r\n public removeBone(boneIndex: number): void {\r\n if (this.bones === undefined || this.bones === null)\r\n return;\r\n\r\n if (!confirm('Вы уверены, что хотите удалить компонент?'))\r\n return;\r\n\r\n this.bones.splice(boneIndex, 1);\r\n\r\n if (!this.editable.inEditMode)\r\n this.editable.startEditing();\r\n\r\n this.editable.save();\r\n }\r\n\r\n public moveDown(boneIndex: number): void {\r\n if (boneIndex >= this.bones.length - 1)\r\n return;\r\n\r\n this.swapBones(boneIndex, boneIndex + 1);\r\n }\r\n\r\n public moveUp(boneIndex: number): void {\r\n if (boneIndex <= 0)\r\n return;\r\n\r\n this.swapBones(boneIndex - 1, boneIndex);\r\n }\r\n\r\n public createBone(index: number, selectedTemplate: IBoneTemplate): void {\r\n const newBone = selectedTemplate.boneFactory();\r\n\r\n this.bones.splice(index, 0, newBone);\r\n }\r\n\r\n private swapBones(index1: number, index2: number): void {\r\n if (index1 < 0 || index2 < 0 || index1 >= this.bones.length || index2 >= this.bones.length)\r\n throw new Error(`ошибка swapBones. неправильные индексы ${index1} и ${index2}. bone count: ${this.bones.length}`);\r\n\r\n const tempBone = this.bones[index1];\r\n this.bones[index1] = this.bones[index2];\r\n this.bones[index2] = tempBone;\r\n }\r\n}\r\n\r\n\r\n","<ng-template #controls let-index='index'>\r\n <div [class.appearable]=\"index > 0 && index < bones.length\" class=\"controls\">\r\n <div *ngIf=\"index < bones.length\" class=\"up-down\">\r\n <a *ngIf=\"index > 0\" (click)=\"moveDown(index - 1)\" class=\"down\">move down</a>\r\n <a *ngIf=\"index > 0\" (click)=\"moveUp(index)\" class=\"up\">move up</a>\r\n </div>\r\n <a (click)=\"templatesAreShown[index] = true\" class=\"add\">create</a>\r\n <a *ngIf=\"index < bones.length\" (click)=\"removeBone(index)\" class=\"remove\">remove</a>\r\n </div>\r\n\r\n <div *ngIf=\"templatesAreShown[index]\" class=\"templates\">\r\n <a *ngFor=\"let template of templates\" (click)=\"templatesAreShown[index] = false; createBone(index,template);\">{{template.title}}</a>\r\n <a (click)=\"templatesAreShown[index] = false\">Close</a>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- todo: add trackby -->\r\n<ng-container *ngFor=\"let bone of bones; let i = index\">\r\n <ng-container>\r\n <ng-container *ngTemplateOutlet=\"controls; context: {index: i}\"></ng-container>\r\n </ng-container>\r\n\r\n <bonc-bone-editor-container #boneEditorContainer\r\n [map]=\"map\"\r\n [bone]=\"bone\"\r\n [locale]=\"locale\"\r\n [device]=\"device\"\r\n (removed)=\"removeBone(i)\"\r\n (editing)=\"boneEditHandler($event)\"\r\n (saved)=\"boneChangeHandler(i, $event)\">\r\n </bonc-bone-editor-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"controls; context: {index: bones.length}\"></ng-container>\r\n","import { Bone } from '@candy-kingdom/bonnie';\r\n\r\nexport interface ContentPreset<out TBone extends Bone> {\r\n title: string;\r\n isActive(data: TBone): boolean;\r\n clean(data: TBone): void;\r\n transformer(bone: TBone): void;\r\n}\r\n\r\nexport function createPreset<TBone extends Bone>(params: { title: string, style: string }): ContentPreset<TBone> {\r\n return {\r\n title: params.title,\r\n isActive: x => x.style === params.style,\r\n transformer: bone => bone.style = params.style,\r\n clean: bone => bone.style = params.style,\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\r\nimport { LottieComponent } from 'ngx-lottie';\r\n\r\n\r\nimport { BonnieModule } from '@candy-kingdom/bonnie';\r\n\r\nimport { AdminControlsComponent } from './admin-controls/';\r\nimport { EditableDirective, LinkPopupComponent } from './core-components';\r\nimport { TextFormComponent } from './forms/text-form';\r\nimport { EditableGroupComponent } from './core-components';\r\nimport { FormControlsComponent } from './form-controls';\r\nimport { SeoFormComponent } from './forms/seo-form';\r\nimport { TranslationTextareaComponent } from './translation-textarea';\r\nimport { TranslationInputComponent } from './translation-input';\r\nimport { BoneEditorContainerComponent, SkeletonEditorAnchorDirective, SkeletonEditorComponent } from './skeleton-editor';\r\nimport { UnknownBoneEditorComponent } from './bone-editors/unknown-bone-editor/unknown-bone-editor.component';\r\nimport { MediaUploaderComponent } from './media-uploader/media-uploader.component';\r\nimport { DataService } from './services/data.service';\r\nimport { AdminDataService } from './services/admin-data.service';\r\nimport { TranslationFormComponent } from './forms/translation-form';\r\nimport { SvgFormComponent } from './forms/svg-form';\r\nimport { UnknownFormComponent } from './forms/unknown-form/unknown-form.component';\r\nimport { FileUploaderComponent } from './file-uploader';\r\nimport { FileFormComponent } from './forms/file-form';\r\nimport { LottieFormComponent } from './forms/lottie-form/lottie-form.component';\r\nimport { OneImageFormComponent } from './forms/one-image-form/one-image-form.component';\r\n\r\nconst formComponents = [\r\n TranslationFormComponent,\r\n TextFormComponent,\r\n SeoFormComponent,\r\n SvgFormComponent,\r\n OneImageFormComponent,\r\n FileFormComponent,\r\n LottieFormComponent,\r\n UnknownFormComponent\r\n];\r\n\r\nconst components = [\r\n ...formComponents,\r\n TranslationInputComponent,\r\n TranslationTextareaComponent,\r\n AdminControlsComponent,\r\n EditableGroupComponent,\r\n FormControlsComponent,\r\n SkeletonEditorComponent,\r\n SkeletonEditorAnchorDirective,\r\n BoneEditorContainerComponent,\r\n UnknownBoneEditorComponent,\r\n MediaUploaderComponent,\r\n FileUploaderComponent,\r\n LinkPopupComponent\r\n];\r\n\r\nconst standaloneDirectives = [\r\n EditableDirective\r\n];\r\n\r\n@NgModule({\r\n declarations: [\r\n ...components,\r\n ],\r\n providers:\r\n [\r\n DataService,\r\n AdminDataService\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CdkTextareaAutosize,\r\n BonnieModule,\r\n LottieComponent,\r\n ...standaloneDirectives\r\n ],\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n BonnieModule,\r\n LottieFormComponent,\r\n ...components,\r\n ...standaloneDirectives\r\n ]\r\n})\r\nexport class BonnieCmsModule { } // todo: move to standalone\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EditableDirective","i1","i2","i3.TranslationInputComponent","i4.TranslationTextareaComponent","i3","i5.FormControlsComponent","i6.FileUploaderComponent","i3.FormControlsComponent","i4.FileUploaderComponent","i4.FormControlsComponent","i5.FileUploaderComponent","i2.SkeletonEditorAnchorDirective","i3.BoneEditorContainerComponent"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ElementRef, EventEmitter } from '@angular/core';
|
|
1
|
+
import { ChangeDetectorRef, ElementRef, EventEmitter } from '@angular/core';
|
|
2
2
|
import { DomSanitizer, SafeStyle } from '@angular/platform-browser';
|
|
3
3
|
import { HttpClient } from '@angular/common/http';
|
|
4
4
|
import { MediaObjectFit, PixMediaUnion } from '@candy-kingdom/bonnie';
|
|
@@ -7,6 +7,7 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
export declare class MediaUploaderComponent {
|
|
8
8
|
private sanitizer;
|
|
9
9
|
private http;
|
|
10
|
+
private cd;
|
|
10
11
|
readonly MediaObjectFit: typeof MediaObjectFit;
|
|
11
12
|
fileInput: ElementRef<HTMLInputElement>;
|
|
12
13
|
srcChange: EventEmitter<PixMediaUnion>;
|
|
@@ -19,7 +20,7 @@ export declare class MediaUploaderComponent {
|
|
|
19
20
|
fileTypeMask: string;
|
|
20
21
|
private _uploadType?;
|
|
21
22
|
private _src?;
|
|
22
|
-
constructor(sanitizer: DomSanitizer, http: HttpClient);
|
|
23
|
+
constructor(sanitizer: DomSanitizer, http: HttpClient, cd: ChangeDetectorRef);
|
|
23
24
|
set src(newSrc: PixMediaUnion | undefined);
|
|
24
25
|
get src(): PixMediaUnion | undefined;
|
|
25
26
|
set uploadType(newUploadType: MediaType | undefined);
|