@candy-kingdom/bonnie 0.15.0 → 0.16.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.
|
@@ -99,12 +99,13 @@ export class MarcyVideoComponent {
|
|
|
99
99
|
if (!matchesMediaQuery(videoSource.mediaQuery))
|
|
100
100
|
continue;
|
|
101
101
|
// SSR
|
|
102
|
-
if (typeof this.videoRef.nativeElement
|
|
102
|
+
if (typeof this.videoRef.nativeElement?.canPlayType !== 'function') {
|
|
103
103
|
// return first mp4, because all players can play them
|
|
104
104
|
const mp4Srcs = videoSource
|
|
105
105
|
.srcSet
|
|
106
106
|
.filter(x => x.mimeType === 'video/mp4')
|
|
107
107
|
.sort(descendingT(x => x.meta.width)); // bigest video
|
|
108
|
+
console.log(`ssr found video ${mp4Srcs[0].url}`);
|
|
108
109
|
// element or undefined
|
|
109
110
|
return mp4Srcs[0];
|
|
110
111
|
}
|
|
@@ -119,11 +120,13 @@ export class MarcyVideoComponent {
|
|
|
119
120
|
for (let i = 1; i < fileSrcs.length; i++) {
|
|
120
121
|
const fileSrc = fileSrcs[i];
|
|
121
122
|
const currentDiff = fileSrc.meta.width - realPixelsVideoWidth;
|
|
123
|
+
console.log(`browser video currentDiff ${currentDiff}`);
|
|
122
124
|
// too big video source width
|
|
123
125
|
if (currentDiff > 0)
|
|
124
126
|
break;
|
|
125
127
|
bestSrc = fileSrc;
|
|
126
128
|
}
|
|
129
|
+
console.log(`browser found suitable video ${bestSrc.url}`);
|
|
127
130
|
return bestSrc;
|
|
128
131
|
}
|
|
129
132
|
return undefined;
|
|
@@ -144,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
144
147
|
}], objectFit: [{
|
|
145
148
|
type: Input
|
|
146
149
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyY3ktdmlkZW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUvc3JjL2xpYi9tYXJjeS12aWRlby9tYXJjeS12aWRlby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL21hcmN5LXZpZGVvL21hcmN5LXZpZGVvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQXFCLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3SixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBUTNFLE1BQU0sT0FBTyxtQkFBbUI7SUFpQjVCLFlBRXdCLE1BQXlCLEVBQ3pCLEVBQXFCLEVBQ3BCLEVBQXVCLEVBQzVCLE1BQTBCO1FBSHRCLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQ3pCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3BCLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBcEJoQyxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUMx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LE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUU1QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxvQkFBb0IsQ0FBQztnQkFFOUQsNkJBQTZCO2dCQUM3QixJQUFJLFdBQVcsR0FBRyxDQUFDO29CQUNmLE1BQU07Z0JBRVYsT0FBTyxHQUFHLE9BQU8sQ0FBQzthQUNyQjtZQUVELE9BQU8sT0FBTyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzs4R0FqTFEsbUJBQW1CO2tHQUFuQixtQkFBbUIsMkdBRmpCLENBQUMsbUJBQW1CLENBQUMsNkhDaEJwQyxpMENBaUNBOzsyRkRmYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0ksV0FBVyxhQUdWLENBQUMsbUJBQW1CLENBQUM7OzBCQXdCdkIsUUFBUTt5Q0FqQkQsUUFBUTtzQkFEdkIsU0FBUzt1QkFBQyxPQUFPO2dCQUlGLFFBQVE7c0JBRHZCLE1BQU07Z0JBaUdJLFNBQVM7c0JBRG5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgT25EZXN0cm95LCBPcHRpb25hbCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgKiBhcyBNQ29yZSBmcm9tICcuLi9nZW5lcmF0ZWQnO1xyXG5cclxuaW1wb3J0IHsgVW5zdWJzY3JpYmVyU2VydmljZSB9IGZyb20gJy4uL2NvcmUvdW5zdWJzY3JpYmUuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lZGlhU3RhdHVzIH0gZnJvbSAnLi4vY29yZS9NZWRpYVN0YXR1cyc7XHJcbmltcG9ydCB7IE1lZGlhT2JqZWN0Rml0IH0gZnJvbSAnLi4vY29yZS9NZWRpYU9iamVjdEZpdCc7XHJcbmltcG9ydCB7IERldmljZVNlcnZpY2VCYXNlIH0gZnJvbSAnLi4vY29yZS9kZXZpY2Uuc2VydmljZS5iYXNlJztcclxuaW1wb3J0IHsgVmlkZW9TcmNEaXJlY3RpdmUgfSBmcm9tICcuL3ZpZHNyYy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBhc2NlbmRpbmdULCBtYXRjaGVzTWVkaWFRdWVyeSwgZGVzY2VuZGluZ1QgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdib24tdmlkZW8nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL21hcmN5LXZpZGVvLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL21hcmN5LXZpZGVvLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtVbnN1YnNjcmliZXJTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFyY3lWaWRlb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgTWVkaWFTdGF0dXMgPSBNZWRpYVN0YXR1cztcclxuICAgIHB1YmxpYyByZWFkb25seSBNYXJjeU9iamVjdEZpdCA9IE1lZGlhT2JqZWN0Rml0O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3ZpZGVvJylcclxuICAgIHB1YmxpYyByZWFkb25seSB2aWRlb1JlZiE6IEVsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD47XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNMb2FkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgJHN0YXR1cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWVkaWFTdGF0dXM+KE1lZGlhU3RhdHVzLk5vdFNldCk7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3JjOiBWaWRlb1NyY0RpcmVjdGl2ZTtcclxuXHJcbiAgICBwdWJsaWMgc291cmNlPzogTUNvcmUuRmlsZVNyYzxNQ29yZS5WaWRlb01ldGE+O1xyXG5cclxuICAgIHByaXZhdGUgX29iamVjdEZpdCA9IE1lZGlhT2JqZWN0Rml0Lk9yaWdpbmFsO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yXHJcbiAgICAgICAgKFxyXG4gICAgICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZGV2aWNlOiBEZXZpY2VTZXJ2aWNlQmFzZSxcclxuICAgICAgICAgICAgcHVibGljIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdTogVW5zdWJzY3JpYmVyU2VydmljZSxcclxuICAgICAgICAgICAgQE9wdGlvbmFsKCkgc3JjRGlyPzogVmlkZW9TcmNEaXJlY3RpdmVcclxuICAgICAgICApIHtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJ01hcmN5VmlkZW9Db21wb25lbnQgY3RvcicpO1xyXG5cclxuICAgICAgICBpZiAoc3JjRGlyID09PSB1bmRlZmluZWQgfHwgc3JjRGlyID09PSBudWxsKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7TWFyY3lWaWRlb0NvbXBvbmVudC5uYW1lfSBzaG91bGQgaGF2ZSBbdmlkc3JjXSBkaXJlY3RpdmUgYXMgc291cmNlIG9iamVjdGApO1xyXG5cclxuICAgICAgICB0aGlzLnNyYyA9IHNyY0RpcjtcclxuXHJcbiAgICAgICAgY2QuZGV0YWNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdNYXJjeVZpZGVvQ29tcG9uZW50IG5nT25Jbml0Jyk7XHJcblxyXG4gICAgICAgIC8vIGJpbmQgbG9hZGVkIGV2ZW50XHJcbiAgICAgICAgdGhpcy4kc3RhdHVzXHJcbiAgICAgICAgICAgIC5waXBlXHJcbiAgICAgICAgICAgIChcclxuICAgICAgICAgICAgICAgIHRoaXMuX3UudGFrZVVudGlsRGVzdHJveSxcclxuICAgICAgICAgICAgICAgIGZpbHRlcihzdGF0dXMgPT4gc3RhdHVzID09PSBNZWRpYVN0YXR1cy5Mb2FkZWQpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmlzTG9hZGVkLm5leHQoKSk7XHJcblxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ01hcmN5VmlkZW9Db21wb25lbnQgbmdBZnRlclZpZXdJbml0Jyk7XHJcblxyXG4gICAgICAgIC8vIGJpbmQgc3JjIGNoYW5nZXNcclxuICAgICAgICB0aGlzLnNyYy5zcmNDaGFuZ2VcclxuICAgICAgICAgICAgLnBpcGUodGhpcy5fdS50YWtlVW50aWxEZXN0cm95KVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdNYXJjeVZpZGVvQ29tcG9uZW50IG9uU3JjQ2hhbmdlJywgdmFsKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNvdXJjZXMoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyByZXN1YnNjcmliZSBiZWNhdXNlIGl0cyB1cGRhdGVkIHdpdGggc3JjXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmliZVRvTWVkaWFRdWVyeUNoYW5nZSgpO1xyXG4gICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVNvdXJjZXMoKTtcclxuXHJcbiAgICAgICAgLy8gaW5pdGlhbCwgZm9yIHNyYyBhZGRlZCBiZWZvcmUgaW5pdFxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9NZWRpYVF1ZXJ5Q2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb01lZGlhUXVlcnlDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zcmNcclxuICAgICAgICAgICAgLndhdGNoTWVkaWFRdWVyaWVzKClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTWFyY3lWaWRlb0NvbXBvbmVudCB3YXRjaE1lZGlhUXVlcmllcycpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTb3VyY2VzKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlU291cmNlcygpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnTWFyY3lWaWRlb0NvbXBvbmVudCB1cGRhdGVTb3VyY2VzJyk7XHJcblxyXG4gICAgICAgIHRoaXMuc291cmNlID0gdGhpcy5maW5kTW9yZVN1aXRhYmxlU291cmNlKCk7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdNYXJjeVZpZGVvQ29tcG9uZW50IG5ldyBzb3VyY2UnLCB0aGlzLnNvdXJjZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLiRzdGF0dXMudmFsdWUgPT09IE1lZGlhU3RhdHVzLk5vdFNldCAmJiB0aGlzLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJHN0YXR1cy5uZXh0KE1lZGlhU3RhdHVzLk5vdFNldCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy4kc3RhdHVzLm5leHQoTWVkaWFTdGF0dXMuTm90TG9hZGVkKTtcclxuXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgb2JqZWN0Rml0KHZhbDogTWVkaWFPYmplY3RGaXQgfCB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLl9vYmplY3RGaXQgPSB2YWwgPz8gTWVkaWFPYmplY3RGaXQuT3JpZ2luYWw7XHJcblxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgb2JqZWN0Rml0KCk6IE1lZGlhT2JqZWN0Rml0IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0Rml0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkxvYWQoKSB7XHJcbiAgICAgICAgdGhpcy4kc3RhdHVzLm5leHQoTWVkaWFTdGF0dXMuTG9hZGVkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZpbmRNb3JlU3VpdGFibGVTb3VyY2UoKTogTUNvcmUuRmlsZVNyYzxNQ29yZS5WaWRlb01ldGE+IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAodGhpcy52aWRlb1JlZiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdza2lwcGluZyBmaW5kTW9yZVN1aXRhYmxlU291cmNlLiB2aWRlb1JlZiBpcyBlbXB0eSBzdGlsbCcpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB2aWRlb1NvdXJjZXMgPSB0aGlzLnNyYy5kYXRhPy5zb3VyY2VzID8/IFtdO1xyXG5cclxuICAgICAgICBjb25zdCBjdXJyZW50VmlkZW9XaWR0aCA9IHRoaXMudmlkZW9SZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcclxuICAgICAgICBjb25zdCByZWFsUGl4ZWxzVmlkZW9XaWR0aCA9IHRoaXMuZGV2aWNlLmRldmljZVBpeGVsUmF0aW8gKiBjdXJyZW50VmlkZW9XaWR0aDtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coYE1hcmN5VmlkZW9Db21wb25lbnQgY3VycmVudFZpZGVvV2lkdGggJHtjdXJyZW50VmlkZW9XaWR0aH1gKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhgTWFyY3lWaWRlb0NvbXBvbmVudCByZWFsUGl4ZWxzVmlkZW9XaWR0aCAke3JlYWxQaXhlbHNWaWRlb1dpZHRofWApO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpZGVvU291cmNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB2aWRlb1NvdXJjZSA9IHZpZGVvU291cmNlc1tpXTtcclxuXHJcbiAgICAgICAgICAgIGlmICghbWF0Y2hlc01lZGlhUXVlcnkodmlkZW9Tb3VyY2UubWVkaWFRdWVyeSkpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgICAgIC8vIFNTUlxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlkZW9SZWYubmF0aXZlRWxlbWVudC5jYW5QbGF5VHlwZSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIGZpcnN0IG1wNCwgYmVjYXVzZSBhbGwgcGxheWVycyBjYW4gcGxheSB0aGVtXHJcbiAgICAgICAgICAgICAgICBjb25zdCBtcDRTcmNzID0gdmlkZW9Tb3VyY2VcclxuICAgICAgICAgICAgICAgICAgICAuc3JjU2V0XHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih4ID0+IHgubWltZVR5cGUgPT09ICd2aWRlby9tcDQnKVxyXG4gICAgICAgICAgICAgICAgICAgIC5zb3J0KGRlc2NlbmRpbmdUKHggPT4geC5tZXRhLndpZHRoKSk7IC8vIGJpZ2VzdCB2aWRlb1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgb3IgdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbXA0U3Jjc1swXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZmlsZVNyY3MgPSB2aWRlb1NvdXJjZVxyXG4gICAgICAgICAgICAgICAgLnNyY1NldFxyXG4gICAgICAgICAgICAgICAgLmZpbHRlcih4ID0+IHRoaXMudmlkZW9SZWYubmF0aXZlRWxlbWVudC5jYW5QbGF5VHlwZSh4Lm1pbWVUeXBlKSlcclxuICAgICAgICAgICAgICAgIC5zb3J0KGFzY2VuZGluZ1QoeCA9PiB4Lm1ldGEud2lkdGgpKSAvLyBzbWFsbGVzdCB2aWRlb1xyXG4gICAgICAgICAgICAgICAgLnNvcnQoeCA9PiB4Lm1pbWVUeXBlLmluY2x1ZGVzKCd3ZWJtJykgPyAxIDogLTEpOy8vIHdlYm0gZmlyc3RcclxuXHJcbiAgICAgICAgICAgIGlmIChmaWxlU3Jjcy5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgICAgIGxldCBiZXN0U3JjID0gZmlsZVNyY3NbMF07XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGZpbGVTcmNzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlU3JjID0gZmlsZVNyY3NbaV07XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudERpZmYgPSBmaWxlU3JjLm1ldGEud2lkdGggLSByZWFsUGl4ZWxzVmlkZW9XaWR0aDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyB0b28gYmlnIHZpZGVvIHNvdXJjZSB3aWR0aFxyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnREaWZmID4gMClcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBiZXN0U3JjID0gZmlsZVNyYztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGJlc3RTcmM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgW2NsYXNzLmtub3duUmF0aW9dPVwic3JjLnJhdGlvID4gMCAmJiBvYmplY3RGaXQgPT09IE1hcmN5T2JqZWN0Rml0Lk9yaWdpbmFsXCJcclxuICAgICBbY2xhc3MuY292ZXJdPVwib2JqZWN0Rml0ID09PSBNYXJjeU9iamVjdEZpdC5Db3ZlclwiXHJcbiAgICAgW2NsYXNzLmNvbnRhaW5dPVwib2JqZWN0Rml0ID09PSBNYXJjeU9iamVjdEZpdC5Db250YWluXCJcclxuICAgICBbY2xhc3MubG9hZGVkXT1cIigkc3RhdHVzIHwgYXN5bmMpID09PSBNZWRpYVN0YXR1cy5Mb2FkZWRcIlxyXG4gICAgIGNsYXNzPVwidmlkZW8tY29udGFpbmVyXCI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXZpY2UuaXNTU1IgOyB0aGVuIHNzclRlbXBsYXRlIGVsc2UgYnJvd3NlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjdmlkZW9UZW1wbGF0ZT5cclxuICAgIDx2aWRlbyAjdmlkZW9cclxuICAgICAgICAgICBbc3JjXT1cInNvdXJjZSAhPT0gdW5kZWZpbmVkID8gc291cmNlLnVybCA6JycgXCJcclxuICAgICAgICAgICAobG9hZCk9XCJvbkxvYWQoKVwiXHJcbiAgICAgICAgICAgKGNhbnBsYXkpPVwidmlkZW8ubXV0ZWQ9dHJ1ZTt2aWRlby5wbGF5KCk7XCJcclxuICAgICAgICAgICBwbGF5c0lubGluZVxyXG4gICAgICAgICAgIGF1dG9wbGF5XHJcbiAgICAgICAgICAgbG9vcFxyXG4gICAgICAgICAgIG11dGVkPiA8L3ZpZGVvPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjc3NyVGVtcGxhdGU+XHJcbiAgICA8bm9zY3JpcHQgKm5nSWY9XCJkZXZpY2UuaXNTU1JcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZpZGVvVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbm9zY3JpcHQ+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNicm93c2VyVGVtcGxhdGU+XHJcbiAgICA8Ym9uLWludGVyc2VjdGlvbiAjaW50ZXJzZWN0aW9uWm9uZSBbc2Vzc2lvbl09XCJzcmNcIiAoaW50ZXJzZWN0ZWQpPVwiY2QuZGV0ZWN0Q2hhbmdlcygpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2aWRlb1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Jvbi1pbnRlcnNlY3Rpb24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPGRpdiAqbmdJZj1cInNyYy5yYXRpbyA+IDAgJiYgb2JqZWN0Rml0ID09PSBNYXJjeU9iamVjdEZpdC5PcmlnaW5hbFwiIFtzdHlsZS5wYWRkaW5nLXRvcF09XCIxMDAgLyBzcmMucmF0aW8gKyclJ1wiPjwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyY3ktdmlkZW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUvc3JjL2xpYi9tYXJjeS12aWRlby9tYXJjeS12aWRlby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL21hcmN5LXZpZGVvL21hcmN5LXZpZGVvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQXFCLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3SixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBUTNFLE1BQU0sT0FBTyxtQkFBbUI7SUFpQjVCLFlBRXdCLE1BQXlCLEVBQ3pCLEVBQXFCLEVBQ3BCLEVBQXVCLEVBQzVCLE1BQTBCO1FBSHRCLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQ3pCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3BCLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBcEJoQyxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUMx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QUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFNUIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsb0JBQW9CLENBQUM7Z0JBRTlELE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLFdBQVcsRUFBRSxDQUFDLENBQUE7Z0JBRXZELDZCQUE2QjtnQkFDN0IsSUFBSSxXQUFXLEdBQUcsQ0FBQztvQkFDZixNQUFNO2dCQUVWLE9BQU8sR0FBRyxPQUFPLENBQUM7YUFDckI7WUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUUxRCxPQUFPLE9BQU8sQ0FBQztTQUNsQjtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7OEdBdkxRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDJHQUZqQixDQUFDLG1CQUFtQixDQUFDLDZIQ2hCcEMsaTBDQWlDQTs7MkZEZmEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNJLFdBQVcsYUFHVixDQUFDLG1CQUFtQixDQUFDOzswQkF3QnZCLFFBQVE7eUNBakJELFFBQVE7c0JBRHZCLFNBQVM7dUJBQUMsT0FBTztnQkFJRixRQUFRO3NCQUR2QixNQUFNO2dCQWlHSSxTQUFTO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQsIE9uRGVzdHJveSwgT3B0aW9uYWwsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0ICogYXMgTUNvcmUgZnJvbSAnLi4vZ2VuZXJhdGVkJztcclxuXHJcbmltcG9ydCB7IFVuc3Vic2NyaWJlclNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3Vuc3Vic2NyaWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZWRpYVN0YXR1cyB9IGZyb20gJy4uL2NvcmUvTWVkaWFTdGF0dXMnO1xyXG5pbXBvcnQgeyBNZWRpYU9iamVjdEZpdCB9IGZyb20gJy4uL2NvcmUvTWVkaWFPYmplY3RGaXQnO1xyXG5pbXBvcnQgeyBEZXZpY2VTZXJ2aWNlQmFzZSB9IGZyb20gJy4uL2NvcmUvZGV2aWNlLnNlcnZpY2UuYmFzZSc7XHJcbmltcG9ydCB7IFZpZGVvU3JjRGlyZWN0aXZlIH0gZnJvbSAnLi92aWRzcmMuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgYXNjZW5kaW5nVCwgbWF0Y2hlc01lZGlhUXVlcnksIGRlc2NlbmRpbmdUIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYm9uLXZpZGVvJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYXJjeS12aWRlby5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9tYXJjeS12aWRlby5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbVW5zdWJzY3JpYmVyU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcmN5VmlkZW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gICAgcHVibGljIHJlYWRvbmx5IE1lZGlhU3RhdHVzID0gTWVkaWFTdGF0dXM7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgTWFyY3lPYmplY3RGaXQgPSBNZWRpYU9iamVjdEZpdDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCd2aWRlbycpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlkZW9SZWYhOiBFbGVtZW50UmVmPEhUTUxWaWRlb0VsZW1lbnQ+O1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHJlYWRvbmx5IGlzTG9hZGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgcHVibGljIHJlYWRvbmx5ICRzdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lZGlhU3RhdHVzPihNZWRpYVN0YXR1cy5Ob3RTZXQpO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IHNyYzogVmlkZW9TcmNEaXJlY3RpdmU7XHJcblxyXG4gICAgcHVibGljIHNvdXJjZT86IE1Db3JlLkZpbGVTcmM8TUNvcmUuVmlkZW9NZXRhPjtcclxuXHJcbiAgICBwcml2YXRlIF9vYmplY3RGaXQgPSBNZWRpYU9iamVjdEZpdC5PcmlnaW5hbDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvclxyXG4gICAgICAgIChcclxuICAgICAgICAgICAgcHVibGljIHJlYWRvbmx5IGRldmljZTogRGV2aWNlU2VydmljZUJhc2UsXHJcbiAgICAgICAgICAgIHB1YmxpYyByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3U6IFVuc3Vic2NyaWJlclNlcnZpY2UsXHJcbiAgICAgICAgICAgIEBPcHRpb25hbCgpIHNyY0Rpcj86IFZpZGVvU3JjRGlyZWN0aXZlXHJcbiAgICAgICAgKSB7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdNYXJjeVZpZGVvQ29tcG9uZW50IGN0b3InKTtcclxuXHJcbiAgICAgICAgaWYgKHNyY0RpciA9PT0gdW5kZWZpbmVkIHx8IHNyY0RpciA9PT0gbnVsbClcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke01hcmN5VmlkZW9Db21wb25lbnQubmFtZX0gc2hvdWxkIGhhdmUgW3ZpZHNyY10gZGlyZWN0aXZlIGFzIHNvdXJjZSBvYmplY3RgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zcmMgPSBzcmNEaXI7XHJcblxyXG4gICAgICAgIGNkLmRldGFjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnTWFyY3lWaWRlb0NvbXBvbmVudCBuZ09uSW5pdCcpO1xyXG5cclxuICAgICAgICAvLyBiaW5kIGxvYWRlZCBldmVudFxyXG4gICAgICAgIHRoaXMuJHN0YXR1c1xyXG4gICAgICAgICAgICAucGlwZVxyXG4gICAgICAgICAgICAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLl91LnRha2VVbnRpbERlc3Ryb3ksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIoc3RhdHVzID0+IHN0YXR1cyA9PT0gTWVkaWFTdGF0dXMuTG9hZGVkKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pc0xvYWRlZC5uZXh0KCkpO1xyXG5cclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdNYXJjeVZpZGVvQ29tcG9uZW50IG5nQWZ0ZXJWaWV3SW5pdCcpO1xyXG5cclxuICAgICAgICAvLyBiaW5kIHNyYyBjaGFuZ2VzXHJcbiAgICAgICAgdGhpcy5zcmMuc3JjQ2hhbmdlXHJcbiAgICAgICAgICAgIC5waXBlKHRoaXMuX3UudGFrZVVudGlsRGVzdHJveSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTWFyY3lWaWRlb0NvbXBvbmVudCBvblNyY0NoYW5nZScsIHZhbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTb3VyY2VzKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gcmVzdWJzY3JpYmUgYmVjYXVzZSBpdHMgdXBkYXRlZCB3aXRoIHNyY1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb01lZGlhUXVlcnlDaGFuZ2UoKTtcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVTb3VyY2VzKCk7XHJcblxyXG4gICAgICAgIC8vIGluaXRpYWwsIGZvciBzcmMgYWRkZWQgYmVmb3JlIGluaXRcclxuICAgICAgICB0aGlzLnN1YnNjcmliZVRvTWVkaWFRdWVyeUNoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9NZWRpYVF1ZXJ5Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3JjXHJcbiAgICAgICAgICAgIC53YXRjaE1lZGlhUXVlcmllcygpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ01hcmN5VmlkZW9Db21wb25lbnQgd2F0Y2hNZWRpYVF1ZXJpZXMnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU291cmNlcygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZVNvdXJjZXMoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ01hcmN5VmlkZW9Db21wb25lbnQgdXBkYXRlU291cmNlcycpO1xyXG5cclxuICAgICAgICB0aGlzLnNvdXJjZSA9IHRoaXMuZmluZE1vcmVTdWl0YWJsZVNvdXJjZSgpO1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnTWFyY3lWaWRlb0NvbXBvbmVudCBuZXcgc291cmNlJywgdGhpcy5zb3VyY2UpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy4kc3RhdHVzLnZhbHVlID09PSBNZWRpYVN0YXR1cy5Ob3RTZXQgJiYgdGhpcy5zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLiRzdGF0dXMubmV4dChNZWRpYVN0YXR1cy5Ob3RTZXQpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuJHN0YXR1cy5uZXh0KE1lZGlhU3RhdHVzLk5vdExvYWRlZCk7XHJcblxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IG9iamVjdEZpdCh2YWw6IE1lZGlhT2JqZWN0Rml0IHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5fb2JqZWN0Rml0ID0gdmFsID8/IE1lZGlhT2JqZWN0Rml0Lk9yaWdpbmFsO1xyXG5cclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IG9iamVjdEZpdCgpOiBNZWRpYU9iamVjdEZpdCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdEZpdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25Mb2FkKCkge1xyXG4gICAgICAgIHRoaXMuJHN0YXR1cy5uZXh0KE1lZGlhU3RhdHVzLkxvYWRlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmaW5kTW9yZVN1aXRhYmxlU291cmNlKCk6IE1Db3JlLkZpbGVTcmM8TUNvcmUuVmlkZW9NZXRhPiB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudmlkZW9SZWYgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc2tpcHBpbmcgZmluZE1vcmVTdWl0YWJsZVNvdXJjZS4gdmlkZW9SZWYgaXMgZW1wdHkgc3RpbGwnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdmlkZW9Tb3VyY2VzID0gdGhpcy5zcmMuZGF0YT8uc291cmNlcyA/PyBbXTtcclxuXHJcbiAgICAgICAgY29uc3QgY3VycmVudFZpZGVvV2lkdGggPSB0aGlzLnZpZGVvUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgICAgICAgY29uc3QgcmVhbFBpeGVsc1ZpZGVvV2lkdGggPSB0aGlzLmRldmljZS5kZXZpY2VQaXhlbFJhdGlvICogY3VycmVudFZpZGVvV2lkdGg7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKGBNYXJjeVZpZGVvQ29tcG9uZW50IGN1cnJlbnRWaWRlb1dpZHRoICR7Y3VycmVudFZpZGVvV2lkdGh9YCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coYE1hcmN5VmlkZW9Db21wb25lbnQgcmVhbFBpeGVsc1ZpZGVvV2lkdGggJHtyZWFsUGl4ZWxzVmlkZW9XaWR0aH1gKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgdmlkZW9Tb3VyY2UgPSB2aWRlb1NvdXJjZXNbaV07XHJcblxyXG4gICAgICAgICAgICBpZiAoIW1hdGNoZXNNZWRpYVF1ZXJ5KHZpZGVvU291cmNlLm1lZGlhUXVlcnkpKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgICAgICAvLyBTU1JcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZpZGVvUmVmLm5hdGl2ZUVsZW1lbnQ/LmNhblBsYXlUeXBlICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAvLyByZXR1cm4gZmlyc3QgbXA0LCBiZWNhdXNlIGFsbCBwbGF5ZXJzIGNhbiBwbGF5IHRoZW1cclxuICAgICAgICAgICAgICAgIGNvbnN0IG1wNFNyY3MgPSB2aWRlb1NvdXJjZVxyXG4gICAgICAgICAgICAgICAgICAgIC5zcmNTZXRcclxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHggPT4geC5taW1lVHlwZSA9PT0gJ3ZpZGVvL21wNCcpXHJcbiAgICAgICAgICAgICAgICAgICAgLnNvcnQoZGVzY2VuZGluZ1QoeCA9PiB4Lm1ldGEud2lkdGgpKTsgLy8gYmlnZXN0IHZpZGVvXHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNzciBmb3VuZCB2aWRlbyAke21wNFNyY3NbMF0udXJsfWApXHJcblxyXG4gICAgICAgICAgICAgICAgLy8gZWxlbWVudCBvciB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgIHJldHVybiBtcDRTcmNzWzBdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBmaWxlU3JjcyA9IHZpZGVvU291cmNlXHJcbiAgICAgICAgICAgICAgICAuc3JjU2V0XHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKHggPT4gdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50LmNhblBsYXlUeXBlKHgubWltZVR5cGUpKVxyXG4gICAgICAgICAgICAgICAgLnNvcnQoYXNjZW5kaW5nVCh4ID0+IHgubWV0YS53aWR0aCkpIC8vIHNtYWxsZXN0IHZpZGVvXHJcbiAgICAgICAgICAgICAgICAuc29ydCh4ID0+IHgubWltZVR5cGUuaW5jbHVkZXMoJ3dlYm0nKSA/IDEgOiAtMSk7Ly8gd2VibSBmaXJzdFxyXG5cclxuICAgICAgICAgICAgaWYgKGZpbGVTcmNzLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICAgICAgbGV0IGJlc3RTcmMgPSBmaWxlU3Jjc1swXTtcclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZmlsZVNyY3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVTcmMgPSBmaWxlU3Jjc1tpXTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RGlmZiA9IGZpbGVTcmMubWV0YS53aWR0aCAtIHJlYWxQaXhlbHNWaWRlb1dpZHRoO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBicm93c2VyIHZpZGVvIGN1cnJlbnREaWZmICR7Y3VycmVudERpZmZ9YClcclxuXHJcbiAgICAgICAgICAgICAgICAvLyB0b28gYmlnIHZpZGVvIHNvdXJjZSB3aWR0aFxyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnREaWZmID4gMClcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBiZXN0U3JjID0gZmlsZVNyYztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc29sZS5sb2coYGJyb3dzZXIgZm91bmQgc3VpdGFibGUgdmlkZW8gJHtiZXN0U3JjLnVybH1gKVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGJlc3RTcmM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgW2NsYXNzLmtub3duUmF0aW9dPVwic3JjLnJhdGlvID4gMCAmJiBvYmplY3RGaXQgPT09IE1hcmN5T2JqZWN0Rml0Lk9yaWdpbmFsXCJcclxuICAgICBbY2xhc3MuY292ZXJdPVwib2JqZWN0Rml0ID09PSBNYXJjeU9iamVjdEZpdC5Db3ZlclwiXHJcbiAgICAgW2NsYXNzLmNvbnRhaW5dPVwib2JqZWN0Rml0ID09PSBNYXJjeU9iamVjdEZpdC5Db250YWluXCJcclxuICAgICBbY2xhc3MubG9hZGVkXT1cIigkc3RhdHVzIHwgYXN5bmMpID09PSBNZWRpYVN0YXR1cy5Mb2FkZWRcIlxyXG4gICAgIGNsYXNzPVwidmlkZW8tY29udGFpbmVyXCI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXZpY2UuaXNTU1IgOyB0aGVuIHNzclRlbXBsYXRlIGVsc2UgYnJvd3NlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjdmlkZW9UZW1wbGF0ZT5cclxuICAgIDx2aWRlbyAjdmlkZW9cclxuICAgICAgICAgICBbc3JjXT1cInNvdXJjZSAhPT0gdW5kZWZpbmVkID8gc291cmNlLnVybCA6JycgXCJcclxuICAgICAgICAgICAobG9hZCk9XCJvbkxvYWQoKVwiXHJcbiAgICAgICAgICAgKGNhbnBsYXkpPVwidmlkZW8ubXV0ZWQ9dHJ1ZTt2aWRlby5wbGF5KCk7XCJcclxuICAgICAgICAgICBwbGF5c0lubGluZVxyXG4gICAgICAgICAgIGF1dG9wbGF5XHJcbiAgICAgICAgICAgbG9vcFxyXG4gICAgICAgICAgIG11dGVkPiA8L3ZpZGVvPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjc3NyVGVtcGxhdGU+XHJcbiAgICA8bm9zY3JpcHQgKm5nSWY9XCJkZXZpY2UuaXNTU1JcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZpZGVvVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbm9zY3JpcHQ+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNicm93c2VyVGVtcGxhdGU+XHJcbiAgICA8Ym9uLWludGVyc2VjdGlvbiAjaW50ZXJzZWN0aW9uWm9uZSBbc2Vzc2lvbl09XCJzcmNcIiAoaW50ZXJzZWN0ZWQpPVwiY2QuZGV0ZWN0Q2hhbmdlcygpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2aWRlb1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Jvbi1pbnRlcnNlY3Rpb24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPGRpdiAqbmdJZj1cInNyYy5yYXRpbyA+IDAgJiYgb2JqZWN0Rml0ID09PSBNYXJjeU9iamVjdEZpdC5PcmlnaW5hbFwiIFtzdHlsZS5wYWRkaW5nLXRvcF09XCIxMDAgLyBzcmMucmF0aW8gKyclJ1wiPjwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -859,12 +859,13 @@ class MarcyVideoComponent {
|
|
|
859
859
|
if (!matchesMediaQuery(videoSource.mediaQuery))
|
|
860
860
|
continue;
|
|
861
861
|
// SSR
|
|
862
|
-
if (typeof this.videoRef.nativeElement
|
|
862
|
+
if (typeof this.videoRef.nativeElement?.canPlayType !== 'function') {
|
|
863
863
|
// return first mp4, because all players can play them
|
|
864
864
|
const mp4Srcs = videoSource
|
|
865
865
|
.srcSet
|
|
866
866
|
.filter(x => x.mimeType === 'video/mp4')
|
|
867
867
|
.sort(descendingT(x => x.meta.width)); // bigest video
|
|
868
|
+
console.log(`ssr found video ${mp4Srcs[0].url}`);
|
|
868
869
|
// element or undefined
|
|
869
870
|
return mp4Srcs[0];
|
|
870
871
|
}
|
|
@@ -879,11 +880,13 @@ class MarcyVideoComponent {
|
|
|
879
880
|
for (let i = 1; i < fileSrcs.length; i++) {
|
|
880
881
|
const fileSrc = fileSrcs[i];
|
|
881
882
|
const currentDiff = fileSrc.meta.width - realPixelsVideoWidth;
|
|
883
|
+
console.log(`browser video currentDiff ${currentDiff}`);
|
|
882
884
|
// too big video source width
|
|
883
885
|
if (currentDiff > 0)
|
|
884
886
|
break;
|
|
885
887
|
bestSrc = fileSrc;
|
|
886
888
|
}
|
|
889
|
+
console.log(`browser found suitable video ${bestSrc.url}`);
|
|
887
890
|
return bestSrc;
|
|
888
891
|
}
|
|
889
892
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candy-kingdom-bonnie.mjs","sources":["../../../../libs/bonnie/src/lib/generated/bone.ts","../../../../libs/bonnie/src/lib/generated/file-format.ts","../../../../libs/bonnie/src/lib/generated/file-meta.ts","../../../../libs/bonnie/src/lib/generated/file-src-base.ts","../../../../libs/bonnie/src/lib/generated/file-src.ts","../../../../libs/bonnie/src/lib/generated/i-equatable.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route-with-data.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route.ts","../../../../libs/bonnie/src/lib/generated/i-have-skeleton.ts","../../../../libs/bonnie/src/lib/generated/i-page.ts","../../../../libs/bonnie/src/lib/generated/image-meta.ts","../../../../libs/bonnie/src/lib/generated/image-source.ts","../../../../libs/bonnie/src/lib/generated/image.ts","../../../../libs/bonnie/src/lib/generated/localized-object.ts","../../../../libs/bonnie/src/lib/generated/localized-string.ts","../../../../libs/bonnie/src/lib/generated/media-source-base.ts","../../../../libs/bonnie/src/lib/generated/media-source.ts","../../../../libs/bonnie/src/lib/generated/open-graph-data.ts","../../../../libs/bonnie/src/lib/generated/page-base.ts","../../../../libs/bonnie/src/lib/generated/page-data.ts","../../../../libs/bonnie/src/lib/generated/page.ts","../../../../libs/bonnie/src/lib/generated/pix-media.ts","../../../../libs/bonnie/src/lib/generated/pix-meta.ts","../../../../libs/bonnie/src/lib/generated/publish-status.ts","../../../../libs/bonnie/src/lib/generated/sizes-item.ts","../../../../libs/bonnie/src/lib/generated/sizes-width-unit.ts","../../../../libs/bonnie/src/lib/generated/svg-meta.ts","../../../../libs/bonnie/src/lib/generated/video-meta.ts","../../../../libs/bonnie/src/lib/generated/video-source.ts","../../../../libs/bonnie/src/lib/generated/video.ts","../../../../libs/bonnie/src/lib/generated/view.ts","../../../../libs/bonnie/src/lib/generated/index.ts","../../../../libs/bonnie/src/lib/core/utils.ts","../../../../libs/bonnie/src/lib/core/unsubscribe.service.ts","../../../../libs/bonnie/src/lib/core/src.directive.ts","../../../../libs/bonnie/src/lib/core/MediaStatus.ts","../../../../libs/bonnie/src/lib/core/MediaObjectFit.ts","../../../../libs/bonnie/src/lib/core/device.service.ts","../../../../libs/bonnie/src/lib/core/device.service.base.ts","../../../../libs/bonnie/src/lib/core/intersection.component.ts","../../../../libs/bonnie/src/lib/core/encode-uri.pipe.ts","../../../../libs/bonnie/src/lib/core/emptyImage.ts","../../../../libs/bonnie/src/lib/core/emptyVideo.ts","../../../../libs/bonnie/src/lib/core/emptyBone.ts","../../../../libs/bonnie/src/lib/core/emptyLocalizedString.ts","../../../../libs/bonnie/src/lib/localization/LocalizeServiceBase.ts","../../../../libs/bonnie/src/lib/localization/localize.pipe.ts","../../../../libs/bonnie/src/lib/marcy-image/imgsrc.directive.ts","../../../../libs/bonnie/src/lib/marcy-image/toHtmlSources.ts","../../../../libs/bonnie/src/lib/marcy-image/getDefaultSrc.ts","../../../../libs/bonnie/src/lib/marcy-image/marcy-image.component.ts","../../../../libs/bonnie/src/lib/marcy-image/marcy-image.component.html","../../../../libs/bonnie/src/lib/marcy-video/vidsrc.directive.ts","../../../../libs/bonnie/src/lib/marcy-video/marcy-video.component.ts","../../../../libs/bonnie/src/lib/marcy-video/marcy-video.component.html","../../../../libs/bonnie/src/lib/marcy-media/marcy-media.component.ts","../../../../libs/bonnie/src/lib/marcy-media/marcy-media.component.html","../../../../libs/bonnie/src/lib/skeleton/bone.directive.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton-anchor.directive.ts","../../../../libs/bonnie/src/lib/skeleton/unknown-bone.component.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton.component.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton.component.html","../../../../libs/bonnie/src/lib/skeleton/BoneMap.ts","../../../../libs/bonnie/src/lib/bonnie.module.ts","../../../../libs/bonnie/src/candy-kingdom-bonnie.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 { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface Bone {\r\n style: string;\r\n mediaQuery: string;\r\n enabled: boolean;\r\n type: 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 FileFormat {\r\n extension: string;\r\n mimeType: 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 FileMeta {\r\n byteCount: number;\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 FileSrcBase {\r\n mimeType: string;\r\n url: 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 { FileMeta } from \"./file-meta\";\r\nimport { FileSrcBase } from \"./file-src-base\";\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface FileSrc<T extends FileMeta> extends FileSrcBase {\r\n meta: 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\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 { IHaveDataRoute } from \"./i-have-data-route\";\r\n\r\nexport interface IHaveDataRouteWithData<T> extends IHaveDataRoute {\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\nexport interface IHaveDataRoute {\r\n dataRoute: 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 { Bone } from \"./bone\";\r\n\r\nexport interface IHaveSkeleton {\r\n bones: Bone[];\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 { PageData } from \"./page-data\";\r\n\r\nexport interface IPage<TData extends PageData> {\r\n data: TData;\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 { PixMeta } from \"./pix-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileMeta } from \"./file-meta\";\r\n\r\nexport interface ImageMeta extends PixMeta {\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 { MediaSource } from \"./media-source\";\r\nimport { ImageMeta } from \"./image-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { MediaSourceBase } from \"./media-source-base\";\r\nimport { SizesItem } from \"./sizes-item\";\r\n\r\nexport interface ImageSource extends MediaSource<ImageMeta> {\r\n sizes: SizesItem[];\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 { PixMedia } from \"./pix-media\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { ImageSource } from \"./image-source\";\r\n\r\nexport interface Image extends PixMedia {\r\n readonly $type: 'image';\r\n sources: ImageSource[];\r\n type: 'image';\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 LocalizedObject<T> {\r\n [locale: string]: 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 { LocalizedObject } from \"./localized-object\";\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface LocalizedString extends LocalizedObject<string> {\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 { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcBase } from \"./file-src-base\";\r\n\r\nexport interface MediaSourceBase {\r\n srcSet: FileSrcBase[];\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 { FileMeta } from \"./file-meta\";\r\nimport { MediaSourceBase } from \"./media-source-base\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrc } from \"./file-src\";\r\n\r\nexport interface MediaSource<TMeta extends FileMeta> extends MediaSourceBase {\r\n srcSet: FileSrc<TMeta>[];\r\n mediaQuery: 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\nimport { LocalizedString } from \"./localized-string\";\r\nimport { LocalizedObject } from \"./localized-object\";\r\nimport { FileSrc } from \"./file-src\";\r\nimport { ImageMeta } from \"./image-meta\";\r\n\r\nexport interface OpenGraphData {\r\n title: LocalizedString;\r\n description: LocalizedString;\r\n image: LocalizedObject<FileSrc<ImageMeta>>;\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 { IHaveSkeleton } from \"./i-have-skeleton\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { PublishStatus } from \"./publish-status\";\r\nimport { LocalizedString } from \"./localized-string\";\r\nimport { OpenGraphData } from \"./open-graph-data\";\r\nimport { Bone } from \"./bone\";\r\n\r\nexport interface PageBase {\r\n id: string;\r\n url: string;\r\n route: string;\r\n order: number;\r\n publishStatus: PublishStatus;\r\n title: LocalizedString;\r\n openGraph: OpenGraphData;\r\n bones: Bone[];\r\n children: PageBase[];\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 PageData {\r\n type: 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 { PageData } from \"./page-data\";\r\nimport { PageBase } from \"./page-base\";\r\nimport { IHaveSkeleton } from \"./i-have-skeleton\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { IPage } from \"./i-page\";\r\n\r\nexport interface Page<T extends PageData> extends PageBase {\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 { IEquatable } from \"./i-equatable\";\r\nimport { MediaSourceBase } from \"./media-source-base\";\r\n\r\nexport interface PixMedia {\r\n sources: MediaSourceBase[];\r\n type: 'image' | 'video';\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 { FileMeta } from \"./file-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface PixMeta extends FileMeta {\r\n width: number;\r\n height: number;\r\n ratio: number;\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 PublishStatus {\r\n NotSet = 0,\r\n Draft = 1,\r\n Published = 2,\r\n Archived = 3,\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 { SizesWidthUnit } from \"./sizes-width-unit\";\r\n\r\nexport interface SizesItem {\r\n width: number;\r\n unit: SizesWidthUnit;\r\n mediaQuery: 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\nexport enum SizesWidthUnit {\r\n Px = \"Px\",\r\n Em = \"Em\",\r\n Vw = \"Vw\",\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 { PixMeta } from \"./pix-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileMeta } from \"./file-meta\";\r\n\r\nexport interface SvgMeta extends PixMeta {\r\n preciseWidth: number;\r\n preciseHeight: number;\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 { PixMeta } from \"./pix-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileMeta } from \"./file-meta\";\r\n\r\nexport interface VideoMeta extends PixMeta {\r\n duration: number;\r\n fullFormat: string;\r\n hasAudio: boolean;\r\n frameRate: number;\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 { MediaSource } from \"./media-source\";\r\nimport { VideoMeta } from \"./video-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { MediaSourceBase } from \"./media-source-base\";\r\n\r\nexport interface VideoSource extends MediaSource<VideoMeta> {\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 { PixMedia } from \"./pix-media\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { VideoSource } from \"./video-source\";\r\n\r\nexport interface Video extends PixMedia {\r\n readonly $type: 'video';\r\n sources: VideoSource[];\r\n type: 'video';\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 { IHaveSkeleton } from \"./i-have-skeleton\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { Bone } from \"./bone\";\r\n\r\nexport interface View {\r\n id: string;\r\n code: string;\r\n bones: Bone[];\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 './bone';\r\nexport * from './file-format';\r\nexport * from './file-meta';\r\nexport * from './file-src-base';\r\nexport * from './file-src';\r\nexport * from './i-equatable';\r\nexport * from './i-have-data-route-with-data';\r\nexport * from './i-have-data-route';\r\nexport * from './i-have-skeleton';\r\nexport * from './i-page';\r\nexport * from './image-meta';\r\nexport * from './image-source';\r\nexport * from './image';\r\nexport * from './localized-object';\r\nexport * from './localized-string';\r\nexport * from './media-source-base';\r\nexport * from './media-source';\r\nexport * from './open-graph-data';\r\nexport * from './page-base';\r\nexport * from './page-data';\r\nexport * from './page';\r\nexport * from './pix-media';\r\nexport * from './pix-meta';\r\nexport * from './publish-status';\r\nexport * from './sizes-item';\r\nexport * from './sizes-width-unit';\r\nexport * from './svg-meta';\r\nexport * from './video-meta';\r\nexport * from './video-source';\r\nexport * from './video';\r\nexport * from './view';\r\n","import * as MCore from '../generated';\r\n\r\n// https://stackoverflow.com/questions/42136098/array-groupby-in-typescript\r\n\r\nexport const groupBy = <T, K extends keyof any>(arr: T[], key: (i: T) => K) =>\r\n arr.reduce((groups, item) => {\r\n (groups[key(item)] ||= []).push(item);\r\n return groups;\r\n }, {} as Record<K, T[]>);\r\n\r\nexport function distinct<T>(value: T, index: number, array: T[]) {\r\n return array.indexOf(value) === index;\r\n}\r\n\r\nexport function ascending(a: number, b: number) {\r\n return a - b;\r\n}\r\n\r\nexport function ascendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\r\n return function (a: T, b: T) { return ascending(sel(a), sel(b)) };\r\n}\r\n\r\nexport function descending(a: number, b: number) {\r\n return b - a;\r\n}\r\n\r\nexport function descendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\r\n return function (a: T, b: T) { return descending(sel(a), sel(b)) };\r\n}\r\n\r\nexport function generateSizesString(sizes: MCore.SizesItem[]): string {\r\n const sizesString = sizes\r\n .sort(x => x.width)\r\n .map(x => `${x.mediaQuery} ${x.width}${x.unit.toLowerCase()}`.trim())\r\n .join(',');\r\n\r\n return sizesString;\r\n}\r\n\r\nexport function matchesMediaQuery(mediaQuery?: string): boolean {\r\n const isEmptyQuery = mediaQuery === null || mediaQuery === undefined || mediaQuery.trim().length === 0;\r\n\r\n // work for SSR and browser\r\n if (isEmptyQuery)\r\n return true;\r\n\r\n // other queries disallowed in SSR\r\n if (typeof window === 'undefined')\r\n return false;\r\n\r\n const mediaQueryList = window.matchMedia(mediaQuery);\r\n\r\n return mediaQueryList.matches;\r\n}\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","import { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { Observable, Subject, takeUntil } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class UnsubscriberService implements OnDestroy {\r\n private readonly _destroy$ = new Subject<void>();\r\n\r\n public readonly takeUntilDestroy = <T>\r\n (\r\n origin: Observable<T>\r\n ): Observable<T> => origin.pipe(takeUntil(this._destroy$));\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n}\r\n","import { ChangeDetectorRef, Directive, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { BehaviorSubject, Observable, fromEvent, NEVER, merge, Subject, takeUntil } from 'rxjs';\r\n\r\nimport * as MCore from '../generated';\r\nimport * as utils from './utils';\r\n\r\nimport { UnsubscriberService } from './unsubscribe.service';\r\n\r\n@Directive({\r\n selector: '[bonSrcBase]',\r\n providers: [UnsubscriberService]\r\n})\r\nexport class SrcBaseDirective<T extends MCore.Image | MCore.Video> implements OnInit {\r\n @Output()\r\n public readonly ratioChange = new EventEmitter<number>()\r\n\r\n @Output()\r\n public readonly srcChange = new EventEmitter<T | undefined>()\r\n\r\n private readonly _ratioSubject = new BehaviorSubject<number>(0);\r\n private readonly _queryChangeClearSubject = new Subject<void>();\r\n\r\n private _data?: T;\r\n\r\n constructor(private readonly _u: UnsubscriberService, private readonly cd: ChangeDetectorRef) {\r\n console.log('SrcBaseDirective ctor');\r\n this.cd.detach();\r\n }\r\n\r\n public ngOnInit(): void {\r\n console.log('SrcBaseDirective ngOnInit');\r\n\r\n this._ratioSubject\r\n .pipe(this._u.takeUntilDestroy)\r\n .subscribe(x => {\r\n this.ratioChange.next(x);\r\n this.cd.detectChanges(); // todo: verify, do i need it here\r\n });\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get ratio(): number {\r\n return this._ratioSubject.value;\r\n }\r\n\r\n public get data(): T | undefined {\r\n return this._data;\r\n }\r\n\r\n public set data(val: T | undefined) {\r\n console.log('set data', val);\r\n\r\n if (val !== undefined && val !== null && val.sources.length === 0) {\r\n console.warn(`image should have sources!`);\r\n val = undefined;\r\n }\r\n\r\n this._data = val;\r\n\r\n console.log('calling src change ', this._data);\r\n\r\n // clear mediaQuery subscriptions\r\n this._queryChangeClearSubject.next();\r\n\r\n // ratio\r\n this._ratioSubject.next(0);\r\n\r\n this.srcChange.next(this._data);\r\n\r\n if (this._data === undefined || this._data.sources.length === 0) {\r\n return;\r\n }\r\n\r\n const allRatios = this._data.sources\r\n .flatMap(x => x.srcSet)\r\n .map(x => x.meta.ratio)\r\n .filter(utils.distinct);\r\n\r\n if (allRatios.length === 1) {\r\n // same ratio for all\r\n this._ratioSubject.next(allRatios[0]);\r\n return;\r\n }\r\n\r\n this.watchMediaQueries()\r\n .subscribe(() => {this.calcRatio(); console.log('watchMediaQueries calcRatio')});\r\n\r\n this.calcRatio();\r\n }\r\n\r\n private calcRatio(): void {\r\n if (this._data === undefined || this._data === null || this._data.sources.length === 0)\r\n return;\r\n\r\n for (let i = 0; i < this._data.sources.length; i++) {\r\n const source = this._data.sources[i];\r\n const srcRatios = source.srcSet\r\n .sort(utils.descendingT(x => x.meta.width))\r\n .map(x => x.meta.ratio)\r\n .filter(utils.distinct);\r\n\r\n if (srcRatios.length === 0) {\r\n // console.warn(`each source should have srcSet with same ratio. founded: ${srcRatios.join(', ')}`);\r\n return;\r\n }\r\n\r\n if (srcRatios.length > 1) {\r\n console.warn(`each source should have srcSet with same ratio. founded: ${srcRatios.join(', ')}`);\r\n }\r\n\r\n const ratio = srcRatios[0]; // most accurate ratio in biggest image\r\n\r\n if (source.mediaQuery.length === 0) {\r\n this._ratioSubject.next(ratio);\r\n return;\r\n }\r\n\r\n if (typeof window === 'undefined' || typeof window.matchMedia === 'undefined')\r\n return;\r\n\r\n const mediaQueryList = window.matchMedia(source.mediaQuery);\r\n\r\n if (mediaQueryList.matches) {\r\n this._ratioSubject.next(ratio);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n public watchMediaQueries(): Observable<MediaQueryListEvent> {\r\n console.log('watchMediaQueries');\r\n\r\n if (this._data === undefined\r\n || this._data === null\r\n || typeof window === 'undefined'\r\n || typeof window.matchMedia === 'undefined')\r\n return NEVER.pipe(this._u.takeUntilDestroy, takeUntil(this._queryChangeClearSubject));\r\n\r\n const mediaQueries = this._data.sources\r\n .map(x => x.mediaQuery)\r\n .filter(utils.distinct)\r\n .filter(x => x.length > 0);\r\n\r\n console.log('watchMediaQueries mediaQueries', mediaQueries);\r\n\r\n const queryObservables = mediaQueries.map\r\n (\r\n media => {\r\n const queryList = window.matchMedia(media);\r\n const observable = fromEvent<MediaQueryListEvent>(queryList, 'change')\r\n .pipe(this._u.takeUntilDestroy, takeUntil(this._queryChangeClearSubject));\r\n\r\n return observable;\r\n }\r\n );\r\n\r\n const combinedObservable = merge(...queryObservables);\r\n return combinedObservable;\r\n }\r\n}\r\n\r\n\r\n","export enum MediaStatus {\r\n NotSet = 'NotSet',\r\n NotLoaded = 'NotLoaded',\r\n Loading = 'Loading',\r\n Loaded = 'Loaded'\r\n}\r\n","export enum MediaObjectFit {\r\n Original = 'Original',\r\n Cover = 'Cover',\r\n Contain = 'Contain'\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { DeviceServiceBase } from \"./device.service.base\";\r\n\r\n@Injectable()\r\nexport class DeviceService implements DeviceServiceBase {\r\n public readonly devicePixelRatio = typeof window === 'undefined' ? 1 : window.devicePixelRatio;\r\n public readonly isSSR = typeof window === 'undefined';\r\n}\r\n","export abstract class DeviceServiceBase {\r\n public abstract get isSSR(): boolean;\r\n public abstract get devicePixelRatio(): number;\r\n}","import { ElementRef, OnInit, OnDestroy, Component, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';\r\nimport { BehaviorSubject, Observable, filter, skip } from 'rxjs';\r\nimport { UnsubscriberService } from './unsubscribe.service';\r\n\r\n@Component({\r\n selector: 'bon-intersection',\r\n template: '<ng-content></ng-content>',\r\n styles: [':host{display:block}'],\r\n providers: [UnsubscriberService]\r\n})\r\nexport class IntersectionComponent implements OnInit, OnDestroy {\r\n @Output()\r\n public readonly intersected = new EventEmitter<void>();\r\n\r\n private readonly intersectionObserver?: IntersectionObserver;\r\n private readonly _intersectSubject = new BehaviorSubject<boolean>(false);\r\n\r\n private _session: any;\r\n\r\n constructor(private readonly _hostRef: ElementRef, private readonly _u: UnsubscriberService, cd: ChangeDetectorRef) {\r\n cd.detach();\r\n // no template with variables, so we don't need to call changeDetection\r\n\r\n if (typeof window === 'undefined' || typeof IntersectionObserver === 'undefined') {\r\n // call intersection without any\r\n return;\r\n }\r\n\r\n this.intersectionObserver = new IntersectionObserver(this.onIntersection.bind(this));\r\n }\r\n\r\n public ngOnInit(): void {\r\n this._intersectSubject\r\n .pipe(this._u.takeUntilDestroy, filter(x => x === true))\r\n .subscribe(x => this.intersected.next());\r\n }\r\n\r\n @Input()\r\n public set session(newSession: any) {\r\n if (this._session === newSession)\r\n return;\r\n\r\n console.log('reset intersection Observer');\r\n\r\n this._session = newSession;\r\n this.reset();\r\n }\r\n\r\n public get intersectedOnce(): boolean {\r\n return this._intersectSubject.value;\r\n }\r\n\r\n private reset(): void {\r\n if (this.intersectionObserver === undefined || this.intersectionObserver === null)\r\n return;\r\n\r\n this.intersectionObserver.unobserve(this._hostRef.nativeElement);\r\n\r\n this._intersectSubject.next(false);\r\n\r\n this.intersectionObserver.observe(this._hostRef.nativeElement);\r\n }\r\n\r\n private onIntersection(entries: IntersectionObserverEntry[], observer: IntersectionObserver): void {\r\n if (entries.length > 1) {\r\n console.warn('multi entries!');\r\n }\r\n\r\n const isIntersecting = entries[0].isIntersecting\r\n this._intersectSubject.next(isIntersecting);\r\n\r\n console.log(`intersected ${isIntersecting}`, this._hostRef.nativeElement);\r\n\r\n // only once will recieve intersection\r\n if (isIntersecting) {\r\n observer.unobserve(this._hostRef.nativeElement);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._intersectSubject.complete();\r\n this.intersectionObserver?.disconnect();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({ name: 'encodeURIComponent', pure: true })\r\nexport class EncodeURIComponentPipe implements PipeTransform {\r\n public transform(value: string): string {\r\n\r\n return encodeURIComponent(value);\r\n }\r\n}\r\n","import { Image } from \"../generated\";\r\n\r\nexport function emptyImage(): Image {\r\n return {\r\n $type: 'image', // todo: remove\r\n type: 'image',\r\n sources: [],\r\n }\r\n}\r\n\r\n\r\n","import { Video } from \"../generated\";\r\n\r\n\r\nexport function emptyVideo(): Video {\r\n return {\r\n $type: 'video', // todo: remove\r\n type: 'video',\r\n sources: [],\r\n };\r\n}\r\n","import { Bone } from \"../generated\";\r\n\r\n\r\nexport function emptyBone(): Bone {\r\n return {\r\n style: '',\r\n mediaQuery: '',\r\n enabled: true,\r\n type: ''\r\n };\r\n}\r\n","import { LocalizedString } from \"../generated\";\r\n\r\n\r\nexport function emptyLocalizedString(): LocalizedString {\r\n return {};\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { LocalizedObject, LocalizedString } from '../generated';\r\nimport { isLocalUrlString } from '../core/utils';\r\n\r\nexport abstract class LocalizeServiceBase {\r\n public abstract get locale(): string;\r\n public abstract get locale$(): Observable<string>;\r\n\r\n public getLocalized<T>(value: LocalizedObject<T>, defaultValue: T, locale?: string): T {\r\n if (value === undefined)\r\n return defaultValue;\r\n\r\n locale = locale ?? this.locale;\r\n\r\n const obj = value[locale] ?? defaultValue;\r\n return obj;\r\n }\r\n\r\n public getLocalizedText(value: LocalizedString, locale?: string): string {\r\n return this.getLocalized<string>(value, '', locale);\r\n };\r\n\r\n public isLocalUrl(value: LocalizedString, locale?: string): boolean {\r\n const url = this.getLocalizedText(value, locale);\r\n return isLocalUrlString(url);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { LocalizeServiceBase } from './LocalizeServiceBase';\r\nimport { LocalizedObject, LocalizedString } from '../generated';\r\n\r\n\r\n\r\n@Pipe({ name: 'localize', pure: false })\r\nexport class LocalizePipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) {\r\n }\r\n\r\n public transform(value: LocalizedString, locale?: string): string {\r\n if (value === undefined || value === null)\r\n return '';\r\n\r\n return this.localizeService.getLocalizedText(value, locale);\r\n }\r\n}\r\n\r\n@Pipe({ name: 'localizeObject', pure: false })\r\nexport class LocalizeObjectPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) { }\r\n\r\n public transform<T>(object: LocalizedObject<T>, locale?: string): T | undefined {\r\n if (object === undefined || object === null)\r\n return undefined;\r\n\r\n return this.localizeService.getLocalized<T | undefined>(object, undefined, locale);\r\n }\r\n}\r\n\r\n@Pipe({ name: 'localizationIsNotEmpty', pure: false })\r\nexport class LocalizationIsNotEmptyPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) { }\r\n\r\n public transform(value: LocalizedString, locale?: string): boolean {\r\n if (value === undefined || value === null)\r\n return false;\r\n\r\n const text = this.localizeService.getLocalizedText(value, locale);\r\n\r\n const isNotEmpty = text.trim().length > 0;\r\n return isNotEmpty;\r\n }\r\n}\r\n\r\n@Pipe({ name: 'localizationIsEmpty', pure: false })\r\nexport class LocalizationIsEmptyPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) { }\r\n\r\n public transform(value: LocalizedString, locale?: string): boolean {\r\n\r\n if (value === undefined || value === null)\r\n return true;\r\n\r\n const text = this.localizeService.getLocalizedText(value, locale);\r\n\r\n const isEmpty = text.trim().length === 0;\r\n return isEmpty;\r\n }\r\n}\r\n\r\n\r\n@Pipe({ name: 'localizeUrl', pure: false })\r\nexport class LocalizeUrlPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase, private readonly domSanitizer: DomSanitizer) {\r\n\r\n }\r\n\r\n public transform(value: LocalizedString, locale?: string): SafeResourceUrl {\r\n if (value === undefined || value === null)\r\n return '';\r\n\r\n const urlString = this.localizeService.getLocalizedText(value, locale);\r\n const safeUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(urlString);\r\n return safeUrl;\r\n }\r\n}\r\n\r\n@Pipe({ name: 'isLocalUrl', pure: false })\r\nexport class IsLocalUrlPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) { }\r\n\r\n public transform(value: LocalizedString, locale?: string): boolean {\r\n\r\n if (value === undefined || value === null)\r\n return false;\r\n\r\n const isLocal = this.localizeService.isLocalUrl(value, locale);\r\n return isLocal;\r\n }\r\n}\r\n\r\n@Pipe({ name: 'isNotLocalUrl', pure: false })\r\nexport class IsNotLocalUrlPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) { }\r\n\r\n public transform(value: LocalizedString, locale?: string): boolean {\r\n\r\n if (value === undefined || value === null)\r\n return false;\r\n\r\n const isLocal = this.localizeService.isLocalUrl(value, locale);\r\n return !isLocal;\r\n }\r\n}\r\n","import { Directive, Input, OnInit } from '@angular/core';\r\nimport * as MCore from '../generated';\r\nimport { SrcBaseDirective } from '../core/src.directive';\r\n\r\n@Directive({\r\n selector: '[imgsrc]'\r\n})\r\nexport class ImageSrcDirective extends SrcBaseDirective<MCore.Image> implements OnInit {\r\n\r\n @Input()\r\n public set imgsrc(value: MCore.Image | undefined) {\r\n console.log('set imgsrc', value);\r\n this.data = value;\r\n }\r\n}\r\n","import * as MCore from '../generated';\r\nimport * as utils from '../core/utils';\r\n\r\nimport { IHtmlPictureSource } from './IHtmlPictureSource';\r\n\r\nexport function toHtmlPictureSources(imageSource: MCore.ImageSource): IHtmlPictureSource[] {\r\n const sizes = utils.generateSizesString(imageSource.sizes);\r\n const groupedByMime = utils.groupBy(imageSource.srcSet, x => x.mimeType);\r\n\r\n const simpleSources: IHtmlPictureSource[] = [];\r\n\r\n for (const mime in groupedByMime) {\r\n const fileSrcs = groupedByMime[mime].sort(utils.ascendingT(x => x.meta.width));\r\n\r\n const srcSet = fileSrcs\r\n .map(x => `${x.url} ${x.meta.width}w`)\r\n .join(',');\r\n\r\n const source: IHtmlPictureSource = { mime, sizes, srcSet, media: imageSource.mediaQuery };\r\n\r\n simpleSources.push(source);\r\n }\r\n\r\n return simpleSources;\r\n}\r\n\r\n","import * as MCore from '../generated';\r\nimport * as utils from '../core/utils';\r\n\r\nexport function getDefaultSrc(image: MCore.Image | undefined): MCore.FileSrc<MCore.ImageMeta> | undefined {\r\n if (image === undefined || image === null)\r\n return undefined;\r\n\r\n const files = image.sources\r\n .flatMap(x => x.srcSet)\r\n .sort(utils.descendingT(x => x.meta.width));\r\n\r\n const prefferedFiles = files.filter(\r\n x => x.mimeType === 'image/jpeg'\r\n || x.mimeType === 'image/png'\r\n || x.mimeType === 'image/gif'\r\n );\r\n\r\n if (prefferedFiles.length > 0)\r\n return prefferedFiles[0];\r\n\r\n if (files.length > 0)\r\n return files[0];\r\n\r\n return undefined;\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, OnInit, OnDestroy, Optional } from '@angular/core';\r\nimport { BehaviorSubject, filter } from 'rxjs';\r\n\r\nimport * as MCore from '../generated';\r\n\r\nimport { UnsubscriberService } from '../core/unsubscribe.service';\r\nimport { MediaStatus } from '../core/MediaStatus';\r\nimport { MediaObjectFit } from '../core/MediaObjectFit';\r\nimport { ImageSrcDirective } from './imgsrc.directive';\r\nimport { IHtmlPictureSource } from './IHtmlPictureSource';\r\nimport { toHtmlPictureSources } from './toHtmlSources';\r\nimport { getDefaultSrc } from './getDefaultSrc';\r\nimport { DeviceServiceBase } from '../core/device.service.base';\r\n\r\n@Component({\r\n selector: 'bon-image',\r\n templateUrl: './marcy-image.component.html',\r\n styleUrls: ['./marcy-image.component.scss'],\r\n providers: [UnsubscriberService]\r\n})\r\nexport class MarcyImageComponent implements OnInit {\r\n public readonly MediaStatus = MediaStatus;\r\n public readonly MarcyObjectFit = MediaObjectFit;\r\n\r\n @Output()\r\n public readonly isLoaded: EventEmitter<void> = new EventEmitter();\r\n public readonly sources: IHtmlPictureSource[] = [];\r\n\r\n public readonly $status = new BehaviorSubject<MediaStatus>(MediaStatus.NotSet);\r\n\r\n public defaultSrc = '';\r\n\r\n private _objectFit = MediaObjectFit.Original;\r\n\r\n public readonly src: ImageSrcDirective;\r\n\r\n constructor\r\n (\r\n public readonly device: DeviceServiceBase,\r\n public readonly cd: ChangeDetectorRef,\r\n private readonly _u: UnsubscriberService,\r\n @Optional() srcDir?: ImageSrcDirective\r\n ) {\r\n\r\n console.log('MarcyImageComponent ctor');\r\n\r\n if (srcDir === undefined || srcDir === null)\r\n throw new Error(`${MarcyImageComponent.name} should have [imgsrc] directive as source object`);\r\n\r\n this.src = srcDir;\r\n\r\n // bind src changes\r\n this.src.srcChange\r\n .pipe(this._u.takeUntilDestroy)\r\n .subscribe(this.onSrcChange.bind(this))\r\n\r\n cd.detach();\r\n }\r\n\r\n public ngOnInit(): void {\r\n // bind loaded event\r\n this.$status\r\n .pipe\r\n (\r\n this._u.takeUntilDestroy,\r\n filter(status => status === MediaStatus.Loaded)\r\n )\r\n .subscribe(x => this.isLoaded.next());\r\n\r\n this.cd.detectChanges();\r\n }\r\n private onSrcChange(val: MCore.Image | undefined) {\r\n console.log('MarcyImageComponent onSrcChange', val);\r\n this.defaultSrc = getDefaultSrc(val)?.url ?? '';\r\n\r\n this.sources.splice(0, this.sources.length);\r\n\r\n if (val === undefined || val === null || val.sources.length === 0) {\r\n this.$status.next(MediaStatus.NotSet);\r\n\r\n this.cd.detectChanges();\r\n return;\r\n }\r\n\r\n const newSources = val.sources.flatMap(toHtmlPictureSources);\r\n\r\n console.log('MarcyImageComponent newSources', newSources);\r\n\r\n this.sources.push(...newSources);\r\n\r\n this.$status.next(MediaStatus.NotLoaded);\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n @Input()\r\n public set objectFit(val: MediaObjectFit | undefined) {\r\n this._objectFit = val ?? MediaObjectFit.Original;\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get objectFit(): MediaObjectFit {\r\n return this._objectFit;\r\n }\r\n\r\n public onLoad() {\r\n this.$status.next(MediaStatus.Loaded);\r\n }\r\n}\r\n","<div *ngIf=\"sources.length > 0\"\r\n [class.knownRatio]=\"src.ratio > 0 && objectFit === MarcyObjectFit.Original\"\r\n [class.cover]=\"objectFit === MarcyObjectFit.Cover\"\r\n [class.contain]=\"objectFit === MarcyObjectFit.Contain\"\r\n [class.loaded]=\"($status | async) === MediaStatus.Loaded\"\r\n class=\"picture-container\">\r\n\r\n <ng-template #pictureTemplate>\r\n <picture>\r\n <source *ngFor=\"let source of sources\"\r\n [srcset]=\"source.srcSet\"\r\n [attr.media]=\"source.media.length > 0 ? source.media : undefined\"\r\n [attr.type]=\"source.mime.length > 0 ? source.mime : undefined\"\r\n [attr.sizes]=\"source.sizes.length > 0 ? source.sizes : undefined\" />\r\n\r\n <img [src]=\"defaultSrc\" (load)=\"onLoad()\" />\r\n </picture>\r\n </ng-template>\r\n\r\n <noscript *ngIf=\"device.isSSR\">\r\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\r\n </noscript>\r\n\r\n <bon-intersection #intersectionZone *ngIf=\"!device.isSSR\" [session]=\"src\" (intersected)=\"cd.detectChanges()\">\r\n\r\n <ng-container *ngIf=\"intersectionZone.intersectedOnce\">\r\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n </bon-intersection>\r\n\r\n <div *ngIf=\"src.ratio > 0 && objectFit === MarcyObjectFit.Original\" [style.padding-top]=\"100 / src.ratio +'%'\"></div>\r\n</div>\r\n","import { Directive, Input, OnInit } from '@angular/core';\r\n\r\nimport * as MCore from '../generated';\r\n\r\nimport { SrcBaseDirective } from '../core/src.directive';\r\n\r\n@Directive({\r\n selector: '[vidsrc]'\r\n})\r\nexport class VideoSrcDirective extends SrcBaseDirective<MCore.Video> implements OnInit {\r\n\r\n @Input()\r\n public set vidsrc(value: MCore.Video | undefined) {\r\n this.data = value;\r\n\r\n console.log('set vidsrc', value);\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, OnInit, OnDestroy, Optional, ElementRef, ViewChild, AfterViewInit } from '@angular/core';\r\nimport { BehaviorSubject, filter } from 'rxjs';\r\n\r\nimport * as MCore from '../generated';\r\n\r\nimport { UnsubscriberService } from '../core/unsubscribe.service';\r\nimport { MediaStatus } from '../core/MediaStatus';\r\nimport { MediaObjectFit } from '../core/MediaObjectFit';\r\nimport { DeviceServiceBase } from '../core/device.service.base';\r\nimport { VideoSrcDirective } from './vidsrc.directive';\r\nimport { ascendingT, matchesMediaQuery, descendingT } from '../core/utils';\r\n\r\n@Component({\r\n selector: 'bon-video',\r\n templateUrl: './marcy-video.component.html',\r\n styleUrls: ['./marcy-video.component.scss'],\r\n providers: [UnsubscriberService]\r\n})\r\nexport class MarcyVideoComponent implements OnInit, AfterViewInit {\r\n public readonly MediaStatus = MediaStatus;\r\n public readonly MarcyObjectFit = MediaObjectFit;\r\n\r\n @ViewChild('video')\r\n public readonly videoRef!: ElementRef<HTMLVideoElement>;\r\n\r\n @Output()\r\n public readonly isLoaded: EventEmitter<void> = new EventEmitter();\r\n\r\n public readonly $status = new BehaviorSubject<MediaStatus>(MediaStatus.NotSet);\r\n public readonly src: VideoSrcDirective;\r\n\r\n public source?: MCore.FileSrc<MCore.VideoMeta>;\r\n\r\n private _objectFit = MediaObjectFit.Original;\r\n\r\n constructor\r\n (\r\n public readonly device: DeviceServiceBase,\r\n public readonly cd: ChangeDetectorRef,\r\n private readonly _u: UnsubscriberService,\r\n @Optional() srcDir?: VideoSrcDirective\r\n ) {\r\n\r\n console.log('MarcyVideoComponent ctor');\r\n\r\n if (srcDir === undefined || srcDir === null)\r\n throw new Error(`${MarcyVideoComponent.name} should have [vidsrc] directive as source object`);\r\n\r\n this.src = srcDir;\r\n\r\n cd.detach();\r\n }\r\n\r\n public ngOnInit(): void {\r\n console.log('MarcyVideoComponent ngOnInit');\r\n\r\n // bind loaded event\r\n this.$status\r\n .pipe\r\n (\r\n this._u.takeUntilDestroy,\r\n filter(status => status === MediaStatus.Loaded)\r\n )\r\n .subscribe(() => this.isLoaded.next());\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public ngAfterViewInit() {\r\n console.log('MarcyVideoComponent ngAfterViewInit');\r\n\r\n // bind src changes\r\n this.src.srcChange\r\n .pipe(this._u.takeUntilDestroy)\r\n .subscribe((val) => {\r\n console.log('MarcyVideoComponent onSrcChange', val);\r\n\r\n this.updateSources();\r\n\r\n // resubscribe because its updated with src\r\n this.subscribeToMediaQueryChange();\r\n })\r\n\r\n this.updateSources();\r\n\r\n // initial, for src added before init\r\n this.subscribeToMediaQueryChange();\r\n }\r\n\r\n private subscribeToMediaQueryChange(): void {\r\n this.src\r\n .watchMediaQueries()\r\n .subscribe(() => {\r\n console.log('MarcyVideoComponent watchMediaQueries');\r\n this.updateSources();\r\n });\r\n }\r\n\r\n private updateSources() {\r\n console.log('MarcyVideoComponent updateSources');\r\n\r\n this.source = this.findMoreSuitableSource();\r\n\r\n console.log('MarcyVideoComponent new source', this.source);\r\n\r\n if (this.$status.value === MediaStatus.NotSet && this.source === undefined) {\r\n return;\r\n }\r\n\r\n if (this.source === undefined) {\r\n this.$status.next(MediaStatus.NotSet);\r\n\r\n this.cd.detectChanges();\r\n return;\r\n }\r\n\r\n this.$status.next(MediaStatus.NotLoaded);\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n @Input()\r\n public set objectFit(val: MediaObjectFit | undefined) {\r\n this._objectFit = val ?? MediaObjectFit.Original;\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get objectFit(): MediaObjectFit {\r\n return this._objectFit;\r\n }\r\n\r\n public onLoad() {\r\n this.$status.next(MediaStatus.Loaded);\r\n }\r\n\r\n private findMoreSuitableSource(): MCore.FileSrc<MCore.VideoMeta> | undefined {\r\n if (this.videoRef === undefined) {\r\n console.log('skipping findMoreSuitableSource. videoRef is empty still');\r\n return;\r\n }\r\n\r\n const videoSources = this.src.data?.sources ?? [];\r\n\r\n const currentVideoWidth = this.videoRef.nativeElement.clientWidth;\r\n const realPixelsVideoWidth = this.device.devicePixelRatio * currentVideoWidth;\r\n\r\n console.log(`MarcyVideoComponent currentVideoWidth ${currentVideoWidth}`);\r\n console.log(`MarcyVideoComponent realPixelsVideoWidth ${realPixelsVideoWidth}`);\r\n\r\n for (let i = 0; i < videoSources.length; i++) {\r\n const videoSource = videoSources[i];\r\n\r\n if (!matchesMediaQuery(videoSource.mediaQuery))\r\n continue;\r\n\r\n // SSR\r\n if (typeof this.videoRef.nativeElement.canPlayType !== 'function') {\r\n // return first mp4, because all players can play them\r\n const mp4Srcs = videoSource\r\n .srcSet\r\n .filter(x => x.mimeType === 'video/mp4')\r\n .sort(descendingT(x => x.meta.width)); // bigest video\r\n\r\n // element or undefined\r\n return mp4Srcs[0];\r\n }\r\n\r\n const fileSrcs = videoSource\r\n .srcSet\r\n .filter(x => this.videoRef.nativeElement.canPlayType(x.mimeType))\r\n .sort(ascendingT(x => x.meta.width)) // smallest video\r\n .sort(x => x.mimeType.includes('webm') ? 1 : -1);// webm first\r\n\r\n if (fileSrcs.length === 0)\r\n continue;\r\n\r\n let bestSrc = fileSrcs[0];\r\n\r\n for (let i = 1; i < fileSrcs.length; i++) {\r\n const fileSrc = fileSrcs[i];\r\n\r\n const currentDiff = fileSrc.meta.width - realPixelsVideoWidth;\r\n\r\n // too big video source width\r\n if (currentDiff > 0)\r\n break;\r\n\r\n bestSrc = fileSrc;\r\n }\r\n\r\n return bestSrc;\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n","<div [class.knownRatio]=\"src.ratio > 0 && objectFit === MarcyObjectFit.Original\"\r\n [class.cover]=\"objectFit === MarcyObjectFit.Cover\"\r\n [class.contain]=\"objectFit === MarcyObjectFit.Contain\"\r\n [class.loaded]=\"($status | async) === MediaStatus.Loaded\"\r\n class=\"video-container\">\r\n\r\n <ng-container *ngIf=\"device.isSSR ; then ssrTemplate else browserTemplate\"></ng-container>\r\n\r\n <ng-template #videoTemplate>\r\n <video #video\r\n [src]=\"source !== undefined ? source.url :'' \"\r\n (load)=\"onLoad()\"\r\n (canplay)=\"video.muted=true;video.play();\"\r\n playsInline\r\n autoplay\r\n loop\r\n muted> </video>\r\n </ng-template>\r\n\r\n <ng-template #ssrTemplate>\r\n <noscript *ngIf=\"device.isSSR\">\r\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\r\n </noscript>\r\n </ng-template>\r\n\r\n <ng-template #browserTemplate>\r\n <bon-intersection #intersectionZone [session]=\"src\" (intersected)=\"cd.detectChanges()\">\r\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\r\n </bon-intersection>\r\n </ng-template>\r\n\r\n <div *ngIf=\"src.ratio > 0 && objectFit === MarcyObjectFit.Original\" [style.padding-top]=\"100 / src.ratio +'%'\"></div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, OnInit } from '@angular/core';\r\n\r\nimport * as MCore from '../generated';\r\n\r\nimport { UnsubscriberService } from '../core/unsubscribe.service';\r\nimport { MediaObjectFit } from '../core/MediaObjectFit';\r\nimport { DeviceServiceBase } from '../core/device.service.base';\r\n\r\n@Component({\r\n selector: 'bon-media',\r\n templateUrl: './marcy-media.component.html',\r\n styleUrls: ['./marcy-media.component.scss'],\r\n providers: [UnsubscriberService]\r\n})\r\nexport class MarcyMediaComponent implements OnInit {\r\n public readonly MarcyObjectFit = MediaObjectFit;\r\n\r\n @Output()\r\n public readonly isLoaded: EventEmitter<void> = new EventEmitter();\r\n\r\n private _objectFit = MediaObjectFit.Original;\r\n private _src?: MCore.Video | MCore.Image;\r\n\r\n constructor\r\n (\r\n public readonly device: DeviceServiceBase,\r\n public readonly cd: ChangeDetectorRef,\r\n private readonly _u: UnsubscriberService\r\n ) {\r\n\r\n console.log('MarcyMediaComponent ctor');\r\n\r\n cd.detach();\r\n }\r\n\r\n\r\n public ngOnInit(): void {\r\n console.log('MarcyMediaComponent ngOnInit');\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n\r\n public get src(): MCore.Video | MCore.Image | undefined {\r\n return this._src;\r\n }\r\n\r\n @Input()\r\n public set src(val: MCore.Video | MCore.Image | undefined) {\r\n console.log('set data', val);\r\n\r\n this._src = val;\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n @Input()\r\n public set objectFit(val: MediaObjectFit | undefined) {\r\n this._objectFit = val ?? MediaObjectFit.Original;\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get objectFit(): MediaObjectFit {\r\n return this._objectFit;\r\n }\r\n\r\n public onLoad() {\r\n this.isLoaded.next();\r\n }\r\n\r\n}\r\n","<bon-image *ngIf=\"src && src.type==='image'\"\r\n [imgsrc]=\"src\"\r\n [objectFit]=\"objectFit\"\r\n (isLoaded)=\"onLoad()\"></bon-image>\r\n\r\n<bon-video *ngIf=\"src && src.type==='video'\"\r\n [vidsrc]=\"src\"\r\n [objectFit]=\"objectFit\"\r\n (isLoaded)=\"onLoad()\"></bon-video>\r\n","import { ChangeDetectorRef, Directive, OnInit } from '@angular/core';\r\nimport { Bone } from '../generated';\r\nimport { UnsubscriberService } from '../core/unsubscribe.service';\r\nimport { LocalizeServiceBase } from '../localization/LocalizeServiceBase';\r\n\r\n@Directive({\r\n selector: '[bonBoneDir]',\r\n standalone: true\r\n})\r\nexport class BoneDirective<T extends Bone = Bone> implements OnInit {\r\n private _bone?: T;\r\n\r\n constructor(private readonly cd: ChangeDetectorRef,\r\n private readonly _u: UnsubscriberService,\r\n private readonly localizationService: LocalizeServiceBase) {\r\n this.cd.detach();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.localizationService.locale$\r\n .pipe(this._u.takeUntilDestroy)\r\n .subscribe(() => {\r\n // need to detect changes in our detached components\r\n this.cd.detectChanges();\r\n })\r\n }\r\n\r\n public set bone(value: T) {\r\n this._bone = value;\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get bone(): T {\r\n if (this._bone === undefined || this._bone === null)\r\n throw new Error('The property \"bone\" should be set at least once. For example in skeleton');\r\n\r\n return this._bone;\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[bonSkeletonAnchor]',\r\n standalone: true\r\n})\r\nexport class SkeletonAnchorDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n}\r\n","import { ChangeDetectorRef, Component } from '@angular/core';\r\nimport { IBoneComponent } from \"./IBoneComponent\";\r\nimport { Bone } from '../generated';\r\nimport { BoneDirective } from './bone.directive';\r\n\r\n@Component({\r\n selector: 'bon-unknown-bone',\r\n hostDirectives: [BoneDirective],\r\n template: `<h2>unknown bone {{bd.bone.type}}</h2>\r\n <div>{{bd.bone | json}}</div>`,\r\n styles: [\r\n `:host{\r\n display: block;\r\n border: 2px solid red;\r\n box-sizing: border-box;\r\n }`\r\n ]\r\n})\r\nexport class UnknownBoneComponent implements IBoneComponent {\r\n constructor(private readonly cd: ChangeDetectorRef, public readonly bd: BoneDirective<Bone>) {\r\n console.log('BoneDirective', bd);\r\n cd.detach();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.cd.detectChanges();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, Type, ViewChild } from '@angular/core';\r\nimport { SkeletonAnchorDirective } from './skeleton-anchor.directive';\r\nimport { IBoneComponent } from \"./IBoneComponent\";\r\nimport { Bone } from '../generated';\r\nimport { UnknownBoneComponent } from './unknown-bone.component';\r\n\r\n@Component({\r\n selector: 'bon-skeleton',\r\n templateUrl: './skeleton.component.html',\r\n styleUrls: ['./skeleton.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SkeletonComponent implements OnInit {\r\n @ViewChild(SkeletonAnchorDirective, { static: true })\r\n public skeletonAnchor!: SkeletonAnchorDirective;\r\n\r\n @Input({ required: true })\r\n public map?: Map<string, Type<IBoneComponent>>;\r\n\r\n private readonly _bones: Bone[] = [];\r\n\r\n private iniailized = false;\r\n\r\n constructor(private cd: ChangeDetectorRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.iniailized = true;\r\n this.fillComponentFromBones();\r\n }\r\n\r\n @Input()\r\n public set bones(newValue: Bone[] | undefined) {\r\n this._bones.splice(0, this._bones.length);\r\n this._bones.push(...newValue ?? []);\r\n\r\n this.fillComponentFromBones();\r\n }\r\n\r\n private fillComponentFromBones(): void {\r\n if (this.iniailized === false)\r\n return;\r\n\r\n const viewContainerRef = this.skeletonAnchor.viewContainerRef;\r\n viewContainerRef.clear();\r\n\r\n if (this.map === undefined || this.map === null)\r\n throw new Error('add type map with input: [map]=\"...\"');\r\n\r\n for (const bone of this._bones) {\r\n let componentType = this.map.get(bone.type);\r\n\r\n if (componentType === undefined || componentType === null) {\r\n console.warn(`Mapping type for ${bone.type} not found`);\r\n componentType = UnknownBoneComponent;\r\n }\r\n\r\n const boneComponentRef = viewContainerRef.createComponent(componentType);\r\n\r\n boneComponentRef.instance.bd.bone = bone;\r\n }\r\n }\r\n\r\n}\r\n","<ng-template bonSkeletonAnchor></ng-template>\r\n","import { Type } from \"@angular/core\";\r\nimport { IBoneComponent } from \"./IBoneComponent\";\r\n\r\n\r\nexport class BoneMap extends Map<string, Type<IBoneComponent>>\r\n{\r\n public getRequired(key: string): Type<IBoneComponent> {\r\n const value = this.get(key);\r\n\r\n if (value === undefined || value === null) {\r\n throw Error(`BoneMap doesn't contain type for key = ${key}`);\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { MarcyImageComponent } from './marcy-image/marcy-image.component';\r\nimport { IntersectionComponent } from './core/intersection.component';\r\nimport { UnsubscriberService } from './core/unsubscribe.service';\r\nimport { SrcBaseDirective } from './core/src.directive';\r\nimport { ImageSrcDirective } from './marcy-image/imgsrc.directive';\r\nimport { VideoSrcDirective } from './marcy-video/vidsrc.directive';\r\nimport { DeviceServiceBase } from './core/device.service.base';\r\nimport { DeviceService } from './core/device.service';\r\nimport { MarcyVideoComponent } from './marcy-video/marcy-video.component';\r\nimport { SkeletonAnchorDirective } from './skeleton/skeleton-anchor.directive';\r\nimport { SkeletonComponent } from './skeleton/skeleton.component';\r\nimport { LocalizationIsNotEmptyPipe, LocalizePipe } from './localization/localize.pipe';\r\nimport { UnknownBoneComponent } from './skeleton/unknown-bone.component';\r\nimport { MarcyMediaComponent } from './marcy-media/marcy-media.component';\r\nimport { BoneDirective } from './skeleton/bone.directive';\r\nimport { EncodeURIComponentPipe } from './core';\r\n\r\nconst components = [\r\n MarcyImageComponent,\r\n MarcyVideoComponent,\r\n MarcyMediaComponent,\r\n IntersectionComponent,\r\n //\r\n SkeletonComponent,\r\n UnknownBoneComponent\r\n];\r\n\r\nconst directives = [\r\n SrcBaseDirective,\r\n ImageSrcDirective,\r\n VideoSrcDirective,\r\n];\r\n\r\nconst standAloneDirectives = [\r\n SkeletonAnchorDirective,\r\n BoneDirective\r\n];\r\n\r\nconst pipes = [\r\n EncodeURIComponentPipe,\r\n LocalizePipe,\r\n LocalizationIsNotEmptyPipe\r\n]\r\n\r\n@NgModule({\r\n declarations: [\r\n ...components,\r\n ...directives,\r\n ...pipes,\r\n ],\r\n providers:\r\n [\r\n ...pipes,\r\n UnsubscriberService,\r\n DeviceService,\r\n { provide: DeviceServiceBase, useExisting: DeviceService },\r\n ],\r\n imports: [\r\n CommonModule,\r\n ...standAloneDirectives\r\n ],\r\n exports: [\r\n CommonModule,\r\n ...pipes,\r\n ...components,\r\n ...directives,\r\n ...standAloneDirectives\r\n ]\r\n})\r\nexport class BonnieModule { } // todo: move to standalone\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["utils.distinct","utils.descendingT","i1.UnsubscriberService","i1.LocalizeServiceBase","utils.generateSizesString","utils.groupBy","utils.ascendingT","i1.DeviceServiceBase","i2.UnsubscriberService","i3.ImageSrcDirective","i5.IntersectionComponent","i3.VideoSrcDirective","i3","i4.MarcyImageComponent","i5.MarcyVideoComponent","i6.ImageSrcDirective","i7.VideoSrcDirective","i2.LocalizeServiceBase","i1.BoneDirective","i2","i1.SkeletonAnchorDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"candy-kingdom-bonnie.mjs","sources":["../../../../libs/bonnie/src/lib/generated/bone.ts","../../../../libs/bonnie/src/lib/generated/file-format.ts","../../../../libs/bonnie/src/lib/generated/file-meta.ts","../../../../libs/bonnie/src/lib/generated/file-src-base.ts","../../../../libs/bonnie/src/lib/generated/file-src.ts","../../../../libs/bonnie/src/lib/generated/i-equatable.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route-with-data.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route.ts","../../../../libs/bonnie/src/lib/generated/i-have-skeleton.ts","../../../../libs/bonnie/src/lib/generated/i-page.ts","../../../../libs/bonnie/src/lib/generated/image-meta.ts","../../../../libs/bonnie/src/lib/generated/image-source.ts","../../../../libs/bonnie/src/lib/generated/image.ts","../../../../libs/bonnie/src/lib/generated/localized-object.ts","../../../../libs/bonnie/src/lib/generated/localized-string.ts","../../../../libs/bonnie/src/lib/generated/media-source-base.ts","../../../../libs/bonnie/src/lib/generated/media-source.ts","../../../../libs/bonnie/src/lib/generated/open-graph-data.ts","../../../../libs/bonnie/src/lib/generated/page-base.ts","../../../../libs/bonnie/src/lib/generated/page-data.ts","../../../../libs/bonnie/src/lib/generated/page.ts","../../../../libs/bonnie/src/lib/generated/pix-media.ts","../../../../libs/bonnie/src/lib/generated/pix-meta.ts","../../../../libs/bonnie/src/lib/generated/publish-status.ts","../../../../libs/bonnie/src/lib/generated/sizes-item.ts","../../../../libs/bonnie/src/lib/generated/sizes-width-unit.ts","../../../../libs/bonnie/src/lib/generated/svg-meta.ts","../../../../libs/bonnie/src/lib/generated/video-meta.ts","../../../../libs/bonnie/src/lib/generated/video-source.ts","../../../../libs/bonnie/src/lib/generated/video.ts","../../../../libs/bonnie/src/lib/generated/view.ts","../../../../libs/bonnie/src/lib/generated/index.ts","../../../../libs/bonnie/src/lib/core/utils.ts","../../../../libs/bonnie/src/lib/core/unsubscribe.service.ts","../../../../libs/bonnie/src/lib/core/src.directive.ts","../../../../libs/bonnie/src/lib/core/MediaStatus.ts","../../../../libs/bonnie/src/lib/core/MediaObjectFit.ts","../../../../libs/bonnie/src/lib/core/device.service.ts","../../../../libs/bonnie/src/lib/core/device.service.base.ts","../../../../libs/bonnie/src/lib/core/intersection.component.ts","../../../../libs/bonnie/src/lib/core/encode-uri.pipe.ts","../../../../libs/bonnie/src/lib/core/emptyImage.ts","../../../../libs/bonnie/src/lib/core/emptyVideo.ts","../../../../libs/bonnie/src/lib/core/emptyBone.ts","../../../../libs/bonnie/src/lib/core/emptyLocalizedString.ts","../../../../libs/bonnie/src/lib/localization/LocalizeServiceBase.ts","../../../../libs/bonnie/src/lib/localization/localize.pipe.ts","../../../../libs/bonnie/src/lib/marcy-image/imgsrc.directive.ts","../../../../libs/bonnie/src/lib/marcy-image/toHtmlSources.ts","../../../../libs/bonnie/src/lib/marcy-image/getDefaultSrc.ts","../../../../libs/bonnie/src/lib/marcy-image/marcy-image.component.ts","../../../../libs/bonnie/src/lib/marcy-image/marcy-image.component.html","../../../../libs/bonnie/src/lib/marcy-video/vidsrc.directive.ts","../../../../libs/bonnie/src/lib/marcy-video/marcy-video.component.ts","../../../../libs/bonnie/src/lib/marcy-video/marcy-video.component.html","../../../../libs/bonnie/src/lib/marcy-media/marcy-media.component.ts","../../../../libs/bonnie/src/lib/marcy-media/marcy-media.component.html","../../../../libs/bonnie/src/lib/skeleton/bone.directive.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton-anchor.directive.ts","../../../../libs/bonnie/src/lib/skeleton/unknown-bone.component.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton.component.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton.component.html","../../../../libs/bonnie/src/lib/skeleton/BoneMap.ts","../../../../libs/bonnie/src/lib/bonnie.module.ts","../../../../libs/bonnie/src/candy-kingdom-bonnie.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 { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface Bone {\r\n style: string;\r\n mediaQuery: string;\r\n enabled: boolean;\r\n type: 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 FileFormat {\r\n extension: string;\r\n mimeType: 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 FileMeta {\r\n byteCount: number;\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 FileSrcBase {\r\n mimeType: string;\r\n url: 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 { FileMeta } from \"./file-meta\";\r\nimport { FileSrcBase } from \"./file-src-base\";\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface FileSrc<T extends FileMeta> extends FileSrcBase {\r\n meta: 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\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 { IHaveDataRoute } from \"./i-have-data-route\";\r\n\r\nexport interface IHaveDataRouteWithData<T> extends IHaveDataRoute {\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\nexport interface IHaveDataRoute {\r\n dataRoute: 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 { Bone } from \"./bone\";\r\n\r\nexport interface IHaveSkeleton {\r\n bones: Bone[];\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 { PageData } from \"./page-data\";\r\n\r\nexport interface IPage<TData extends PageData> {\r\n data: TData;\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 { PixMeta } from \"./pix-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileMeta } from \"./file-meta\";\r\n\r\nexport interface ImageMeta extends PixMeta {\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 { MediaSource } from \"./media-source\";\r\nimport { ImageMeta } from \"./image-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { MediaSourceBase } from \"./media-source-base\";\r\nimport { SizesItem } from \"./sizes-item\";\r\n\r\nexport interface ImageSource extends MediaSource<ImageMeta> {\r\n sizes: SizesItem[];\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 { PixMedia } from \"./pix-media\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { ImageSource } from \"./image-source\";\r\n\r\nexport interface Image extends PixMedia {\r\n readonly $type: 'image';\r\n sources: ImageSource[];\r\n type: 'image';\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 LocalizedObject<T> {\r\n [locale: string]: 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 { LocalizedObject } from \"./localized-object\";\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface LocalizedString extends LocalizedObject<string> {\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 { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcBase } from \"./file-src-base\";\r\n\r\nexport interface MediaSourceBase {\r\n srcSet: FileSrcBase[];\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 { FileMeta } from \"./file-meta\";\r\nimport { MediaSourceBase } from \"./media-source-base\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrc } from \"./file-src\";\r\n\r\nexport interface MediaSource<TMeta extends FileMeta> extends MediaSourceBase {\r\n srcSet: FileSrc<TMeta>[];\r\n mediaQuery: 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\nimport { LocalizedString } from \"./localized-string\";\r\nimport { LocalizedObject } from \"./localized-object\";\r\nimport { FileSrc } from \"./file-src\";\r\nimport { ImageMeta } from \"./image-meta\";\r\n\r\nexport interface OpenGraphData {\r\n title: LocalizedString;\r\n description: LocalizedString;\r\n image: LocalizedObject<FileSrc<ImageMeta>>;\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 { IHaveSkeleton } from \"./i-have-skeleton\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { PublishStatus } from \"./publish-status\";\r\nimport { LocalizedString } from \"./localized-string\";\r\nimport { OpenGraphData } from \"./open-graph-data\";\r\nimport { Bone } from \"./bone\";\r\n\r\nexport interface PageBase {\r\n id: string;\r\n url: string;\r\n route: string;\r\n order: number;\r\n publishStatus: PublishStatus;\r\n title: LocalizedString;\r\n openGraph: OpenGraphData;\r\n bones: Bone[];\r\n children: PageBase[];\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 PageData {\r\n type: 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 { PageData } from \"./page-data\";\r\nimport { PageBase } from \"./page-base\";\r\nimport { IHaveSkeleton } from \"./i-have-skeleton\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { IPage } from \"./i-page\";\r\n\r\nexport interface Page<T extends PageData> extends PageBase {\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 { IEquatable } from \"./i-equatable\";\r\nimport { MediaSourceBase } from \"./media-source-base\";\r\n\r\nexport interface PixMedia {\r\n sources: MediaSourceBase[];\r\n type: 'image' | 'video';\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 { FileMeta } from \"./file-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface PixMeta extends FileMeta {\r\n width: number;\r\n height: number;\r\n ratio: number;\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 PublishStatus {\r\n NotSet = 0,\r\n Draft = 1,\r\n Published = 2,\r\n Archived = 3,\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 { SizesWidthUnit } from \"./sizes-width-unit\";\r\n\r\nexport interface SizesItem {\r\n width: number;\r\n unit: SizesWidthUnit;\r\n mediaQuery: 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\nexport enum SizesWidthUnit {\r\n Px = \"Px\",\r\n Em = \"Em\",\r\n Vw = \"Vw\",\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 { PixMeta } from \"./pix-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileMeta } from \"./file-meta\";\r\n\r\nexport interface SvgMeta extends PixMeta {\r\n preciseWidth: number;\r\n preciseHeight: number;\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 { PixMeta } from \"./pix-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileMeta } from \"./file-meta\";\r\n\r\nexport interface VideoMeta extends PixMeta {\r\n duration: number;\r\n fullFormat: string;\r\n hasAudio: boolean;\r\n frameRate: number;\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 { MediaSource } from \"./media-source\";\r\nimport { VideoMeta } from \"./video-meta\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { MediaSourceBase } from \"./media-source-base\";\r\n\r\nexport interface VideoSource extends MediaSource<VideoMeta> {\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 { PixMedia } from \"./pix-media\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { VideoSource } from \"./video-source\";\r\n\r\nexport interface Video extends PixMedia {\r\n readonly $type: 'video';\r\n sources: VideoSource[];\r\n type: 'video';\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 { IHaveSkeleton } from \"./i-have-skeleton\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { Bone } from \"./bone\";\r\n\r\nexport interface View {\r\n id: string;\r\n code: string;\r\n bones: Bone[];\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 './bone';\r\nexport * from './file-format';\r\nexport * from './file-meta';\r\nexport * from './file-src-base';\r\nexport * from './file-src';\r\nexport * from './i-equatable';\r\nexport * from './i-have-data-route-with-data';\r\nexport * from './i-have-data-route';\r\nexport * from './i-have-skeleton';\r\nexport * from './i-page';\r\nexport * from './image-meta';\r\nexport * from './image-source';\r\nexport * from './image';\r\nexport * from './localized-object';\r\nexport * from './localized-string';\r\nexport * from './media-source-base';\r\nexport * from './media-source';\r\nexport * from './open-graph-data';\r\nexport * from './page-base';\r\nexport * from './page-data';\r\nexport * from './page';\r\nexport * from './pix-media';\r\nexport * from './pix-meta';\r\nexport * from './publish-status';\r\nexport * from './sizes-item';\r\nexport * from './sizes-width-unit';\r\nexport * from './svg-meta';\r\nexport * from './video-meta';\r\nexport * from './video-source';\r\nexport * from './video';\r\nexport * from './view';\r\n","import * as MCore from '../generated';\r\n\r\n// https://stackoverflow.com/questions/42136098/array-groupby-in-typescript\r\n\r\nexport const groupBy = <T, K extends keyof any>(arr: T[], key: (i: T) => K) =>\r\n arr.reduce((groups, item) => {\r\n (groups[key(item)] ||= []).push(item);\r\n return groups;\r\n }, {} as Record<K, T[]>);\r\n\r\nexport function distinct<T>(value: T, index: number, array: T[]) {\r\n return array.indexOf(value) === index;\r\n}\r\n\r\nexport function ascending(a: number, b: number) {\r\n return a - b;\r\n}\r\n\r\nexport function ascendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\r\n return function (a: T, b: T) { return ascending(sel(a), sel(b)) };\r\n}\r\n\r\nexport function descending(a: number, b: number) {\r\n return b - a;\r\n}\r\n\r\nexport function descendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\r\n return function (a: T, b: T) { return descending(sel(a), sel(b)) };\r\n}\r\n\r\nexport function generateSizesString(sizes: MCore.SizesItem[]): string {\r\n const sizesString = sizes\r\n .sort(x => x.width)\r\n .map(x => `${x.mediaQuery} ${x.width}${x.unit.toLowerCase()}`.trim())\r\n .join(',');\r\n\r\n return sizesString;\r\n}\r\n\r\nexport function matchesMediaQuery(mediaQuery?: string): boolean {\r\n const isEmptyQuery = mediaQuery === null || mediaQuery === undefined || mediaQuery.trim().length === 0;\r\n\r\n // work for SSR and browser\r\n if (isEmptyQuery)\r\n return true;\r\n\r\n // other queries disallowed in SSR\r\n if (typeof window === 'undefined')\r\n return false;\r\n\r\n const mediaQueryList = window.matchMedia(mediaQuery);\r\n\r\n return mediaQueryList.matches;\r\n}\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","import { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { Observable, Subject, takeUntil } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class UnsubscriberService implements OnDestroy {\r\n private readonly _destroy$ = new Subject<void>();\r\n\r\n public readonly takeUntilDestroy = <T>\r\n (\r\n origin: Observable<T>\r\n ): Observable<T> => origin.pipe(takeUntil(this._destroy$));\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n}\r\n","import { ChangeDetectorRef, Directive, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { BehaviorSubject, Observable, fromEvent, NEVER, merge, Subject, takeUntil } from 'rxjs';\r\n\r\nimport * as MCore from '../generated';\r\nimport * as utils from './utils';\r\n\r\nimport { UnsubscriberService } from './unsubscribe.service';\r\n\r\n@Directive({\r\n selector: '[bonSrcBase]',\r\n providers: [UnsubscriberService]\r\n})\r\nexport class SrcBaseDirective<T extends MCore.Image | MCore.Video> implements OnInit {\r\n @Output()\r\n public readonly ratioChange = new EventEmitter<number>()\r\n\r\n @Output()\r\n public readonly srcChange = new EventEmitter<T | undefined>()\r\n\r\n private readonly _ratioSubject = new BehaviorSubject<number>(0);\r\n private readonly _queryChangeClearSubject = new Subject<void>();\r\n\r\n private _data?: T;\r\n\r\n constructor(private readonly _u: UnsubscriberService, private readonly cd: ChangeDetectorRef) {\r\n console.log('SrcBaseDirective ctor');\r\n this.cd.detach();\r\n }\r\n\r\n public ngOnInit(): void {\r\n console.log('SrcBaseDirective ngOnInit');\r\n\r\n this._ratioSubject\r\n .pipe(this._u.takeUntilDestroy)\r\n .subscribe(x => {\r\n this.ratioChange.next(x);\r\n this.cd.detectChanges(); // todo: verify, do i need it here\r\n });\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get ratio(): number {\r\n return this._ratioSubject.value;\r\n }\r\n\r\n public get data(): T | undefined {\r\n return this._data;\r\n }\r\n\r\n public set data(val: T | undefined) {\r\n console.log('set data', val);\r\n\r\n if (val !== undefined && val !== null && val.sources.length === 0) {\r\n console.warn(`image should have sources!`);\r\n val = undefined;\r\n }\r\n\r\n this._data = val;\r\n\r\n console.log('calling src change ', this._data);\r\n\r\n // clear mediaQuery subscriptions\r\n this._queryChangeClearSubject.next();\r\n\r\n // ratio\r\n this._ratioSubject.next(0);\r\n\r\n this.srcChange.next(this._data);\r\n\r\n if (this._data === undefined || this._data.sources.length === 0) {\r\n return;\r\n }\r\n\r\n const allRatios = this._data.sources\r\n .flatMap(x => x.srcSet)\r\n .map(x => x.meta.ratio)\r\n .filter(utils.distinct);\r\n\r\n if (allRatios.length === 1) {\r\n // same ratio for all\r\n this._ratioSubject.next(allRatios[0]);\r\n return;\r\n }\r\n\r\n this.watchMediaQueries()\r\n .subscribe(() => {this.calcRatio(); console.log('watchMediaQueries calcRatio')});\r\n\r\n this.calcRatio();\r\n }\r\n\r\n private calcRatio(): void {\r\n if (this._data === undefined || this._data === null || this._data.sources.length === 0)\r\n return;\r\n\r\n for (let i = 0; i < this._data.sources.length; i++) {\r\n const source = this._data.sources[i];\r\n const srcRatios = source.srcSet\r\n .sort(utils.descendingT(x => x.meta.width))\r\n .map(x => x.meta.ratio)\r\n .filter(utils.distinct);\r\n\r\n if (srcRatios.length === 0) {\r\n // console.warn(`each source should have srcSet with same ratio. founded: ${srcRatios.join(', ')}`);\r\n return;\r\n }\r\n\r\n if (srcRatios.length > 1) {\r\n console.warn(`each source should have srcSet with same ratio. founded: ${srcRatios.join(', ')}`);\r\n }\r\n\r\n const ratio = srcRatios[0]; // most accurate ratio in biggest image\r\n\r\n if (source.mediaQuery.length === 0) {\r\n this._ratioSubject.next(ratio);\r\n return;\r\n }\r\n\r\n if (typeof window === 'undefined' || typeof window.matchMedia === 'undefined')\r\n return;\r\n\r\n const mediaQueryList = window.matchMedia(source.mediaQuery);\r\n\r\n if (mediaQueryList.matches) {\r\n this._ratioSubject.next(ratio);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n public watchMediaQueries(): Observable<MediaQueryListEvent> {\r\n console.log('watchMediaQueries');\r\n\r\n if (this._data === undefined\r\n || this._data === null\r\n || typeof window === 'undefined'\r\n || typeof window.matchMedia === 'undefined')\r\n return NEVER.pipe(this._u.takeUntilDestroy, takeUntil(this._queryChangeClearSubject));\r\n\r\n const mediaQueries = this._data.sources\r\n .map(x => x.mediaQuery)\r\n .filter(utils.distinct)\r\n .filter(x => x.length > 0);\r\n\r\n console.log('watchMediaQueries mediaQueries', mediaQueries);\r\n\r\n const queryObservables = mediaQueries.map\r\n (\r\n media => {\r\n const queryList = window.matchMedia(media);\r\n const observable = fromEvent<MediaQueryListEvent>(queryList, 'change')\r\n .pipe(this._u.takeUntilDestroy, takeUntil(this._queryChangeClearSubject));\r\n\r\n return observable;\r\n }\r\n );\r\n\r\n const combinedObservable = merge(...queryObservables);\r\n return combinedObservable;\r\n }\r\n}\r\n\r\n\r\n","export enum MediaStatus {\r\n NotSet = 'NotSet',\r\n NotLoaded = 'NotLoaded',\r\n Loading = 'Loading',\r\n Loaded = 'Loaded'\r\n}\r\n","export enum MediaObjectFit {\r\n Original = 'Original',\r\n Cover = 'Cover',\r\n Contain = 'Contain'\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { DeviceServiceBase } from \"./device.service.base\";\r\n\r\n@Injectable()\r\nexport class DeviceService implements DeviceServiceBase {\r\n public readonly devicePixelRatio = typeof window === 'undefined' ? 1 : window.devicePixelRatio;\r\n public readonly isSSR = typeof window === 'undefined';\r\n}\r\n","export abstract class DeviceServiceBase {\r\n public abstract get isSSR(): boolean;\r\n public abstract get devicePixelRatio(): number;\r\n}","import { ElementRef, OnInit, OnDestroy, Component, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';\r\nimport { BehaviorSubject, Observable, filter, skip } from 'rxjs';\r\nimport { UnsubscriberService } from './unsubscribe.service';\r\n\r\n@Component({\r\n selector: 'bon-intersection',\r\n template: '<ng-content></ng-content>',\r\n styles: [':host{display:block}'],\r\n providers: [UnsubscriberService]\r\n})\r\nexport class IntersectionComponent implements OnInit, OnDestroy {\r\n @Output()\r\n public readonly intersected = new EventEmitter<void>();\r\n\r\n private readonly intersectionObserver?: IntersectionObserver;\r\n private readonly _intersectSubject = new BehaviorSubject<boolean>(false);\r\n\r\n private _session: any;\r\n\r\n constructor(private readonly _hostRef: ElementRef, private readonly _u: UnsubscriberService, cd: ChangeDetectorRef) {\r\n cd.detach();\r\n // no template with variables, so we don't need to call changeDetection\r\n\r\n if (typeof window === 'undefined' || typeof IntersectionObserver === 'undefined') {\r\n // call intersection without any\r\n return;\r\n }\r\n\r\n this.intersectionObserver = new IntersectionObserver(this.onIntersection.bind(this));\r\n }\r\n\r\n public ngOnInit(): void {\r\n this._intersectSubject\r\n .pipe(this._u.takeUntilDestroy, filter(x => x === true))\r\n .subscribe(x => this.intersected.next());\r\n }\r\n\r\n @Input()\r\n public set session(newSession: any) {\r\n if (this._session === newSession)\r\n return;\r\n\r\n console.log('reset intersection Observer');\r\n\r\n this._session = newSession;\r\n this.reset();\r\n }\r\n\r\n public get intersectedOnce(): boolean {\r\n return this._intersectSubject.value;\r\n }\r\n\r\n private reset(): void {\r\n if (this.intersectionObserver === undefined || this.intersectionObserver === null)\r\n return;\r\n\r\n this.intersectionObserver.unobserve(this._hostRef.nativeElement);\r\n\r\n this._intersectSubject.next(false);\r\n\r\n this.intersectionObserver.observe(this._hostRef.nativeElement);\r\n }\r\n\r\n private onIntersection(entries: IntersectionObserverEntry[], observer: IntersectionObserver): void {\r\n if (entries.length > 1) {\r\n console.warn('multi entries!');\r\n }\r\n\r\n const isIntersecting = entries[0].isIntersecting\r\n this._intersectSubject.next(isIntersecting);\r\n\r\n console.log(`intersected ${isIntersecting}`, this._hostRef.nativeElement);\r\n\r\n // only once will recieve intersection\r\n if (isIntersecting) {\r\n observer.unobserve(this._hostRef.nativeElement);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._intersectSubject.complete();\r\n this.intersectionObserver?.disconnect();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({ name: 'encodeURIComponent', pure: true })\r\nexport class EncodeURIComponentPipe implements PipeTransform {\r\n public transform(value: string): string {\r\n\r\n return encodeURIComponent(value);\r\n }\r\n}\r\n","import { Image } from \"../generated\";\r\n\r\nexport function emptyImage(): Image {\r\n return {\r\n $type: 'image', // todo: remove\r\n type: 'image',\r\n sources: [],\r\n }\r\n}\r\n\r\n\r\n","import { Video } from \"../generated\";\r\n\r\n\r\nexport function emptyVideo(): Video {\r\n return {\r\n $type: 'video', // todo: remove\r\n type: 'video',\r\n sources: [],\r\n };\r\n}\r\n","import { Bone } from \"../generated\";\r\n\r\n\r\nexport function emptyBone(): Bone {\r\n return {\r\n style: '',\r\n mediaQuery: '',\r\n enabled: true,\r\n type: ''\r\n };\r\n}\r\n","import { LocalizedString } from \"../generated\";\r\n\r\n\r\nexport function emptyLocalizedString(): LocalizedString {\r\n return {};\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { LocalizedObject, LocalizedString } from '../generated';\r\nimport { isLocalUrlString } from '../core/utils';\r\n\r\nexport abstract class LocalizeServiceBase {\r\n public abstract get locale(): string;\r\n public abstract get locale$(): Observable<string>;\r\n\r\n public getLocalized<T>(value: LocalizedObject<T>, defaultValue: T, locale?: string): T {\r\n if (value === undefined)\r\n return defaultValue;\r\n\r\n locale = locale ?? this.locale;\r\n\r\n const obj = value[locale] ?? defaultValue;\r\n return obj;\r\n }\r\n\r\n public getLocalizedText(value: LocalizedString, locale?: string): string {\r\n return this.getLocalized<string>(value, '', locale);\r\n };\r\n\r\n public isLocalUrl(value: LocalizedString, locale?: string): boolean {\r\n const url = this.getLocalizedText(value, locale);\r\n return isLocalUrlString(url);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { LocalizeServiceBase } from './LocalizeServiceBase';\r\nimport { LocalizedObject, LocalizedString } from '../generated';\r\n\r\n\r\n\r\n@Pipe({ name: 'localize', pure: false })\r\nexport class LocalizePipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) {\r\n }\r\n\r\n public transform(value: LocalizedString, locale?: string): string {\r\n if (value === undefined || value === null)\r\n return '';\r\n\r\n return this.localizeService.getLocalizedText(value, locale);\r\n }\r\n}\r\n\r\n@Pipe({ name: 'localizeObject', pure: false })\r\nexport class LocalizeObjectPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) { }\r\n\r\n public transform<T>(object: LocalizedObject<T>, locale?: string): T | undefined {\r\n if (object === undefined || object === null)\r\n return undefined;\r\n\r\n return this.localizeService.getLocalized<T | undefined>(object, undefined, locale);\r\n }\r\n}\r\n\r\n@Pipe({ name: 'localizationIsNotEmpty', pure: false })\r\nexport class LocalizationIsNotEmptyPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) { }\r\n\r\n public transform(value: LocalizedString, locale?: string): boolean {\r\n if (value === undefined || value === null)\r\n return false;\r\n\r\n const text = this.localizeService.getLocalizedText(value, locale);\r\n\r\n const isNotEmpty = text.trim().length > 0;\r\n return isNotEmpty;\r\n }\r\n}\r\n\r\n@Pipe({ name: 'localizationIsEmpty', pure: false })\r\nexport class LocalizationIsEmptyPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) { }\r\n\r\n public transform(value: LocalizedString, locale?: string): boolean {\r\n\r\n if (value === undefined || value === null)\r\n return true;\r\n\r\n const text = this.localizeService.getLocalizedText(value, locale);\r\n\r\n const isEmpty = text.trim().length === 0;\r\n return isEmpty;\r\n }\r\n}\r\n\r\n\r\n@Pipe({ name: 'localizeUrl', pure: false })\r\nexport class LocalizeUrlPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase, private readonly domSanitizer: DomSanitizer) {\r\n\r\n }\r\n\r\n public transform(value: LocalizedString, locale?: string): SafeResourceUrl {\r\n if (value === undefined || value === null)\r\n return '';\r\n\r\n const urlString = this.localizeService.getLocalizedText(value, locale);\r\n const safeUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(urlString);\r\n return safeUrl;\r\n }\r\n}\r\n\r\n@Pipe({ name: 'isLocalUrl', pure: false })\r\nexport class IsLocalUrlPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) { }\r\n\r\n public transform(value: LocalizedString, locale?: string): boolean {\r\n\r\n if (value === undefined || value === null)\r\n return false;\r\n\r\n const isLocal = this.localizeService.isLocalUrl(value, locale);\r\n return isLocal;\r\n }\r\n}\r\n\r\n@Pipe({ name: 'isNotLocalUrl', pure: false })\r\nexport class IsNotLocalUrlPipe implements PipeTransform {\r\n constructor(private readonly localizeService: LocalizeServiceBase) { }\r\n\r\n public transform(value: LocalizedString, locale?: string): boolean {\r\n\r\n if (value === undefined || value === null)\r\n return false;\r\n\r\n const isLocal = this.localizeService.isLocalUrl(value, locale);\r\n return !isLocal;\r\n }\r\n}\r\n","import { Directive, Input, OnInit } from '@angular/core';\r\nimport * as MCore from '../generated';\r\nimport { SrcBaseDirective } from '../core/src.directive';\r\n\r\n@Directive({\r\n selector: '[imgsrc]'\r\n})\r\nexport class ImageSrcDirective extends SrcBaseDirective<MCore.Image> implements OnInit {\r\n\r\n @Input()\r\n public set imgsrc(value: MCore.Image | undefined) {\r\n console.log('set imgsrc', value);\r\n this.data = value;\r\n }\r\n}\r\n","import * as MCore from '../generated';\r\nimport * as utils from '../core/utils';\r\n\r\nimport { IHtmlPictureSource } from './IHtmlPictureSource';\r\n\r\nexport function toHtmlPictureSources(imageSource: MCore.ImageSource): IHtmlPictureSource[] {\r\n const sizes = utils.generateSizesString(imageSource.sizes);\r\n const groupedByMime = utils.groupBy(imageSource.srcSet, x => x.mimeType);\r\n\r\n const simpleSources: IHtmlPictureSource[] = [];\r\n\r\n for (const mime in groupedByMime) {\r\n const fileSrcs = groupedByMime[mime].sort(utils.ascendingT(x => x.meta.width));\r\n\r\n const srcSet = fileSrcs\r\n .map(x => `${x.url} ${x.meta.width}w`)\r\n .join(',');\r\n\r\n const source: IHtmlPictureSource = { mime, sizes, srcSet, media: imageSource.mediaQuery };\r\n\r\n simpleSources.push(source);\r\n }\r\n\r\n return simpleSources;\r\n}\r\n\r\n","import * as MCore from '../generated';\r\nimport * as utils from '../core/utils';\r\n\r\nexport function getDefaultSrc(image: MCore.Image | undefined): MCore.FileSrc<MCore.ImageMeta> | undefined {\r\n if (image === undefined || image === null)\r\n return undefined;\r\n\r\n const files = image.sources\r\n .flatMap(x => x.srcSet)\r\n .sort(utils.descendingT(x => x.meta.width));\r\n\r\n const prefferedFiles = files.filter(\r\n x => x.mimeType === 'image/jpeg'\r\n || x.mimeType === 'image/png'\r\n || x.mimeType === 'image/gif'\r\n );\r\n\r\n if (prefferedFiles.length > 0)\r\n return prefferedFiles[0];\r\n\r\n if (files.length > 0)\r\n return files[0];\r\n\r\n return undefined;\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, OnInit, OnDestroy, Optional } from '@angular/core';\r\nimport { BehaviorSubject, filter } from 'rxjs';\r\n\r\nimport * as MCore from '../generated';\r\n\r\nimport { UnsubscriberService } from '../core/unsubscribe.service';\r\nimport { MediaStatus } from '../core/MediaStatus';\r\nimport { MediaObjectFit } from '../core/MediaObjectFit';\r\nimport { ImageSrcDirective } from './imgsrc.directive';\r\nimport { IHtmlPictureSource } from './IHtmlPictureSource';\r\nimport { toHtmlPictureSources } from './toHtmlSources';\r\nimport { getDefaultSrc } from './getDefaultSrc';\r\nimport { DeviceServiceBase } from '../core/device.service.base';\r\n\r\n@Component({\r\n selector: 'bon-image',\r\n templateUrl: './marcy-image.component.html',\r\n styleUrls: ['./marcy-image.component.scss'],\r\n providers: [UnsubscriberService]\r\n})\r\nexport class MarcyImageComponent implements OnInit {\r\n public readonly MediaStatus = MediaStatus;\r\n public readonly MarcyObjectFit = MediaObjectFit;\r\n\r\n @Output()\r\n public readonly isLoaded: EventEmitter<void> = new EventEmitter();\r\n public readonly sources: IHtmlPictureSource[] = [];\r\n\r\n public readonly $status = new BehaviorSubject<MediaStatus>(MediaStatus.NotSet);\r\n\r\n public defaultSrc = '';\r\n\r\n private _objectFit = MediaObjectFit.Original;\r\n\r\n public readonly src: ImageSrcDirective;\r\n\r\n constructor\r\n (\r\n public readonly device: DeviceServiceBase,\r\n public readonly cd: ChangeDetectorRef,\r\n private readonly _u: UnsubscriberService,\r\n @Optional() srcDir?: ImageSrcDirective\r\n ) {\r\n\r\n console.log('MarcyImageComponent ctor');\r\n\r\n if (srcDir === undefined || srcDir === null)\r\n throw new Error(`${MarcyImageComponent.name} should have [imgsrc] directive as source object`);\r\n\r\n this.src = srcDir;\r\n\r\n // bind src changes\r\n this.src.srcChange\r\n .pipe(this._u.takeUntilDestroy)\r\n .subscribe(this.onSrcChange.bind(this))\r\n\r\n cd.detach();\r\n }\r\n\r\n public ngOnInit(): void {\r\n // bind loaded event\r\n this.$status\r\n .pipe\r\n (\r\n this._u.takeUntilDestroy,\r\n filter(status => status === MediaStatus.Loaded)\r\n )\r\n .subscribe(x => this.isLoaded.next());\r\n\r\n this.cd.detectChanges();\r\n }\r\n private onSrcChange(val: MCore.Image | undefined) {\r\n console.log('MarcyImageComponent onSrcChange', val);\r\n this.defaultSrc = getDefaultSrc(val)?.url ?? '';\r\n\r\n this.sources.splice(0, this.sources.length);\r\n\r\n if (val === undefined || val === null || val.sources.length === 0) {\r\n this.$status.next(MediaStatus.NotSet);\r\n\r\n this.cd.detectChanges();\r\n return;\r\n }\r\n\r\n const newSources = val.sources.flatMap(toHtmlPictureSources);\r\n\r\n console.log('MarcyImageComponent newSources', newSources);\r\n\r\n this.sources.push(...newSources);\r\n\r\n this.$status.next(MediaStatus.NotLoaded);\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n @Input()\r\n public set objectFit(val: MediaObjectFit | undefined) {\r\n this._objectFit = val ?? MediaObjectFit.Original;\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get objectFit(): MediaObjectFit {\r\n return this._objectFit;\r\n }\r\n\r\n public onLoad() {\r\n this.$status.next(MediaStatus.Loaded);\r\n }\r\n}\r\n","<div *ngIf=\"sources.length > 0\"\r\n [class.knownRatio]=\"src.ratio > 0 && objectFit === MarcyObjectFit.Original\"\r\n [class.cover]=\"objectFit === MarcyObjectFit.Cover\"\r\n [class.contain]=\"objectFit === MarcyObjectFit.Contain\"\r\n [class.loaded]=\"($status | async) === MediaStatus.Loaded\"\r\n class=\"picture-container\">\r\n\r\n <ng-template #pictureTemplate>\r\n <picture>\r\n <source *ngFor=\"let source of sources\"\r\n [srcset]=\"source.srcSet\"\r\n [attr.media]=\"source.media.length > 0 ? source.media : undefined\"\r\n [attr.type]=\"source.mime.length > 0 ? source.mime : undefined\"\r\n [attr.sizes]=\"source.sizes.length > 0 ? source.sizes : undefined\" />\r\n\r\n <img [src]=\"defaultSrc\" (load)=\"onLoad()\" />\r\n </picture>\r\n </ng-template>\r\n\r\n <noscript *ngIf=\"device.isSSR\">\r\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\r\n </noscript>\r\n\r\n <bon-intersection #intersectionZone *ngIf=\"!device.isSSR\" [session]=\"src\" (intersected)=\"cd.detectChanges()\">\r\n\r\n <ng-container *ngIf=\"intersectionZone.intersectedOnce\">\r\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n </bon-intersection>\r\n\r\n <div *ngIf=\"src.ratio > 0 && objectFit === MarcyObjectFit.Original\" [style.padding-top]=\"100 / src.ratio +'%'\"></div>\r\n</div>\r\n","import { Directive, Input, OnInit } from '@angular/core';\r\n\r\nimport * as MCore from '../generated';\r\n\r\nimport { SrcBaseDirective } from '../core/src.directive';\r\n\r\n@Directive({\r\n selector: '[vidsrc]'\r\n})\r\nexport class VideoSrcDirective extends SrcBaseDirective<MCore.Video> implements OnInit {\r\n\r\n @Input()\r\n public set vidsrc(value: MCore.Video | undefined) {\r\n this.data = value;\r\n\r\n console.log('set vidsrc', value);\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, OnInit, OnDestroy, Optional, ElementRef, ViewChild, AfterViewInit } from '@angular/core';\r\nimport { BehaviorSubject, filter } from 'rxjs';\r\n\r\nimport * as MCore from '../generated';\r\n\r\nimport { UnsubscriberService } from '../core/unsubscribe.service';\r\nimport { MediaStatus } from '../core/MediaStatus';\r\nimport { MediaObjectFit } from '../core/MediaObjectFit';\r\nimport { DeviceServiceBase } from '../core/device.service.base';\r\nimport { VideoSrcDirective } from './vidsrc.directive';\r\nimport { ascendingT, matchesMediaQuery, descendingT } from '../core/utils';\r\n\r\n@Component({\r\n selector: 'bon-video',\r\n templateUrl: './marcy-video.component.html',\r\n styleUrls: ['./marcy-video.component.scss'],\r\n providers: [UnsubscriberService]\r\n})\r\nexport class MarcyVideoComponent implements OnInit, AfterViewInit {\r\n public readonly MediaStatus = MediaStatus;\r\n public readonly MarcyObjectFit = MediaObjectFit;\r\n\r\n @ViewChild('video')\r\n public readonly videoRef!: ElementRef<HTMLVideoElement>;\r\n\r\n @Output()\r\n public readonly isLoaded: EventEmitter<void> = new EventEmitter();\r\n\r\n public readonly $status = new BehaviorSubject<MediaStatus>(MediaStatus.NotSet);\r\n public readonly src: VideoSrcDirective;\r\n\r\n public source?: MCore.FileSrc<MCore.VideoMeta>;\r\n\r\n private _objectFit = MediaObjectFit.Original;\r\n\r\n constructor\r\n (\r\n public readonly device: DeviceServiceBase,\r\n public readonly cd: ChangeDetectorRef,\r\n private readonly _u: UnsubscriberService,\r\n @Optional() srcDir?: VideoSrcDirective\r\n ) {\r\n\r\n console.log('MarcyVideoComponent ctor');\r\n\r\n if (srcDir === undefined || srcDir === null)\r\n throw new Error(`${MarcyVideoComponent.name} should have [vidsrc] directive as source object`);\r\n\r\n this.src = srcDir;\r\n\r\n cd.detach();\r\n }\r\n\r\n public ngOnInit(): void {\r\n console.log('MarcyVideoComponent ngOnInit');\r\n\r\n // bind loaded event\r\n this.$status\r\n .pipe\r\n (\r\n this._u.takeUntilDestroy,\r\n filter(status => status === MediaStatus.Loaded)\r\n )\r\n .subscribe(() => this.isLoaded.next());\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public ngAfterViewInit() {\r\n console.log('MarcyVideoComponent ngAfterViewInit');\r\n\r\n // bind src changes\r\n this.src.srcChange\r\n .pipe(this._u.takeUntilDestroy)\r\n .subscribe((val) => {\r\n console.log('MarcyVideoComponent onSrcChange', val);\r\n\r\n this.updateSources();\r\n\r\n // resubscribe because its updated with src\r\n this.subscribeToMediaQueryChange();\r\n })\r\n\r\n this.updateSources();\r\n\r\n // initial, for src added before init\r\n this.subscribeToMediaQueryChange();\r\n }\r\n\r\n private subscribeToMediaQueryChange(): void {\r\n this.src\r\n .watchMediaQueries()\r\n .subscribe(() => {\r\n console.log('MarcyVideoComponent watchMediaQueries');\r\n this.updateSources();\r\n });\r\n }\r\n\r\n private updateSources() {\r\n console.log('MarcyVideoComponent updateSources');\r\n\r\n this.source = this.findMoreSuitableSource();\r\n\r\n console.log('MarcyVideoComponent new source', this.source);\r\n\r\n if (this.$status.value === MediaStatus.NotSet && this.source === undefined) {\r\n return;\r\n }\r\n\r\n if (this.source === undefined) {\r\n this.$status.next(MediaStatus.NotSet);\r\n\r\n this.cd.detectChanges();\r\n return;\r\n }\r\n\r\n this.$status.next(MediaStatus.NotLoaded);\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n @Input()\r\n public set objectFit(val: MediaObjectFit | undefined) {\r\n this._objectFit = val ?? MediaObjectFit.Original;\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get objectFit(): MediaObjectFit {\r\n return this._objectFit;\r\n }\r\n\r\n public onLoad() {\r\n this.$status.next(MediaStatus.Loaded);\r\n }\r\n\r\n private findMoreSuitableSource(): MCore.FileSrc<MCore.VideoMeta> | undefined {\r\n if (this.videoRef === undefined) {\r\n console.log('skipping findMoreSuitableSource. videoRef is empty still');\r\n return;\r\n }\r\n\r\n const videoSources = this.src.data?.sources ?? [];\r\n\r\n const currentVideoWidth = this.videoRef.nativeElement.clientWidth;\r\n const realPixelsVideoWidth = this.device.devicePixelRatio * currentVideoWidth;\r\n\r\n console.log(`MarcyVideoComponent currentVideoWidth ${currentVideoWidth}`);\r\n console.log(`MarcyVideoComponent realPixelsVideoWidth ${realPixelsVideoWidth}`);\r\n\r\n for (let i = 0; i < videoSources.length; i++) {\r\n const videoSource = videoSources[i];\r\n\r\n if (!matchesMediaQuery(videoSource.mediaQuery))\r\n continue;\r\n\r\n // SSR\r\n if (typeof this.videoRef.nativeElement?.canPlayType !== 'function') {\r\n // return first mp4, because all players can play them\r\n const mp4Srcs = videoSource\r\n .srcSet\r\n .filter(x => x.mimeType === 'video/mp4')\r\n .sort(descendingT(x => x.meta.width)); // bigest video\r\n\r\n console.log(`ssr found video ${mp4Srcs[0].url}`)\r\n\r\n // element or undefined\r\n return mp4Srcs[0];\r\n }\r\n\r\n const fileSrcs = videoSource\r\n .srcSet\r\n .filter(x => this.videoRef.nativeElement.canPlayType(x.mimeType))\r\n .sort(ascendingT(x => x.meta.width)) // smallest video\r\n .sort(x => x.mimeType.includes('webm') ? 1 : -1);// webm first\r\n\r\n if (fileSrcs.length === 0)\r\n continue;\r\n\r\n let bestSrc = fileSrcs[0];\r\n\r\n for (let i = 1; i < fileSrcs.length; i++) {\r\n const fileSrc = fileSrcs[i];\r\n\r\n const currentDiff = fileSrc.meta.width - realPixelsVideoWidth;\r\n\r\n console.log(`browser video currentDiff ${currentDiff}`)\r\n\r\n // too big video source width\r\n if (currentDiff > 0)\r\n break;\r\n\r\n bestSrc = fileSrc;\r\n }\r\n\r\n console.log(`browser found suitable video ${bestSrc.url}`)\r\n\r\n return bestSrc;\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n","<div [class.knownRatio]=\"src.ratio > 0 && objectFit === MarcyObjectFit.Original\"\r\n [class.cover]=\"objectFit === MarcyObjectFit.Cover\"\r\n [class.contain]=\"objectFit === MarcyObjectFit.Contain\"\r\n [class.loaded]=\"($status | async) === MediaStatus.Loaded\"\r\n class=\"video-container\">\r\n\r\n <ng-container *ngIf=\"device.isSSR ; then ssrTemplate else browserTemplate\"></ng-container>\r\n\r\n <ng-template #videoTemplate>\r\n <video #video\r\n [src]=\"source !== undefined ? source.url :'' \"\r\n (load)=\"onLoad()\"\r\n (canplay)=\"video.muted=true;video.play();\"\r\n playsInline\r\n autoplay\r\n loop\r\n muted> </video>\r\n </ng-template>\r\n\r\n <ng-template #ssrTemplate>\r\n <noscript *ngIf=\"device.isSSR\">\r\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\r\n </noscript>\r\n </ng-template>\r\n\r\n <ng-template #browserTemplate>\r\n <bon-intersection #intersectionZone [session]=\"src\" (intersected)=\"cd.detectChanges()\">\r\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\r\n </bon-intersection>\r\n </ng-template>\r\n\r\n <div *ngIf=\"src.ratio > 0 && objectFit === MarcyObjectFit.Original\" [style.padding-top]=\"100 / src.ratio +'%'\"></div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, OnInit } from '@angular/core';\r\n\r\nimport * as MCore from '../generated';\r\n\r\nimport { UnsubscriberService } from '../core/unsubscribe.service';\r\nimport { MediaObjectFit } from '../core/MediaObjectFit';\r\nimport { DeviceServiceBase } from '../core/device.service.base';\r\n\r\n@Component({\r\n selector: 'bon-media',\r\n templateUrl: './marcy-media.component.html',\r\n styleUrls: ['./marcy-media.component.scss'],\r\n providers: [UnsubscriberService]\r\n})\r\nexport class MarcyMediaComponent implements OnInit {\r\n public readonly MarcyObjectFit = MediaObjectFit;\r\n\r\n @Output()\r\n public readonly isLoaded: EventEmitter<void> = new EventEmitter();\r\n\r\n private _objectFit = MediaObjectFit.Original;\r\n private _src?: MCore.Video | MCore.Image;\r\n\r\n constructor\r\n (\r\n public readonly device: DeviceServiceBase,\r\n public readonly cd: ChangeDetectorRef,\r\n private readonly _u: UnsubscriberService\r\n ) {\r\n\r\n console.log('MarcyMediaComponent ctor');\r\n\r\n cd.detach();\r\n }\r\n\r\n\r\n public ngOnInit(): void {\r\n console.log('MarcyMediaComponent ngOnInit');\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n\r\n public get src(): MCore.Video | MCore.Image | undefined {\r\n return this._src;\r\n }\r\n\r\n @Input()\r\n public set src(val: MCore.Video | MCore.Image | undefined) {\r\n console.log('set data', val);\r\n\r\n this._src = val;\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n @Input()\r\n public set objectFit(val: MediaObjectFit | undefined) {\r\n this._objectFit = val ?? MediaObjectFit.Original;\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get objectFit(): MediaObjectFit {\r\n return this._objectFit;\r\n }\r\n\r\n public onLoad() {\r\n this.isLoaded.next();\r\n }\r\n\r\n}\r\n","<bon-image *ngIf=\"src && src.type==='image'\"\r\n [imgsrc]=\"src\"\r\n [objectFit]=\"objectFit\"\r\n (isLoaded)=\"onLoad()\"></bon-image>\r\n\r\n<bon-video *ngIf=\"src && src.type==='video'\"\r\n [vidsrc]=\"src\"\r\n [objectFit]=\"objectFit\"\r\n (isLoaded)=\"onLoad()\"></bon-video>\r\n","import { ChangeDetectorRef, Directive, OnInit } from '@angular/core';\r\nimport { Bone } from '../generated';\r\nimport { UnsubscriberService } from '../core/unsubscribe.service';\r\nimport { LocalizeServiceBase } from '../localization/LocalizeServiceBase';\r\n\r\n@Directive({\r\n selector: '[bonBoneDir]',\r\n standalone: true\r\n})\r\nexport class BoneDirective<T extends Bone = Bone> implements OnInit {\r\n private _bone?: T;\r\n\r\n constructor(private readonly cd: ChangeDetectorRef,\r\n private readonly _u: UnsubscriberService,\r\n private readonly localizationService: LocalizeServiceBase) {\r\n this.cd.detach();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.localizationService.locale$\r\n .pipe(this._u.takeUntilDestroy)\r\n .subscribe(() => {\r\n // need to detect changes in our detached components\r\n this.cd.detectChanges();\r\n })\r\n }\r\n\r\n public set bone(value: T) {\r\n this._bone = value;\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get bone(): T {\r\n if (this._bone === undefined || this._bone === null)\r\n throw new Error('The property \"bone\" should be set at least once. For example in skeleton');\r\n\r\n return this._bone;\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[bonSkeletonAnchor]',\r\n standalone: true\r\n})\r\nexport class SkeletonAnchorDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n}\r\n","import { ChangeDetectorRef, Component } from '@angular/core';\r\nimport { IBoneComponent } from \"./IBoneComponent\";\r\nimport { Bone } from '../generated';\r\nimport { BoneDirective } from './bone.directive';\r\n\r\n@Component({\r\n selector: 'bon-unknown-bone',\r\n hostDirectives: [BoneDirective],\r\n template: `<h2>unknown bone {{bd.bone.type}}</h2>\r\n <div>{{bd.bone | json}}</div>`,\r\n styles: [\r\n `:host{\r\n display: block;\r\n border: 2px solid red;\r\n box-sizing: border-box;\r\n }`\r\n ]\r\n})\r\nexport class UnknownBoneComponent implements IBoneComponent {\r\n constructor(private readonly cd: ChangeDetectorRef, public readonly bd: BoneDirective<Bone>) {\r\n console.log('BoneDirective', bd);\r\n cd.detach();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.cd.detectChanges();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, Type, ViewChild } from '@angular/core';\r\nimport { SkeletonAnchorDirective } from './skeleton-anchor.directive';\r\nimport { IBoneComponent } from \"./IBoneComponent\";\r\nimport { Bone } from '../generated';\r\nimport { UnknownBoneComponent } from './unknown-bone.component';\r\n\r\n@Component({\r\n selector: 'bon-skeleton',\r\n templateUrl: './skeleton.component.html',\r\n styleUrls: ['./skeleton.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SkeletonComponent implements OnInit {\r\n @ViewChild(SkeletonAnchorDirective, { static: true })\r\n public skeletonAnchor!: SkeletonAnchorDirective;\r\n\r\n @Input({ required: true })\r\n public map?: Map<string, Type<IBoneComponent>>;\r\n\r\n private readonly _bones: Bone[] = [];\r\n\r\n private iniailized = false;\r\n\r\n constructor(private cd: ChangeDetectorRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.iniailized = true;\r\n this.fillComponentFromBones();\r\n }\r\n\r\n @Input()\r\n public set bones(newValue: Bone[] | undefined) {\r\n this._bones.splice(0, this._bones.length);\r\n this._bones.push(...newValue ?? []);\r\n\r\n this.fillComponentFromBones();\r\n }\r\n\r\n private fillComponentFromBones(): void {\r\n if (this.iniailized === false)\r\n return;\r\n\r\n const viewContainerRef = this.skeletonAnchor.viewContainerRef;\r\n viewContainerRef.clear();\r\n\r\n if (this.map === undefined || this.map === null)\r\n throw new Error('add type map with input: [map]=\"...\"');\r\n\r\n for (const bone of this._bones) {\r\n let componentType = this.map.get(bone.type);\r\n\r\n if (componentType === undefined || componentType === null) {\r\n console.warn(`Mapping type for ${bone.type} not found`);\r\n componentType = UnknownBoneComponent;\r\n }\r\n\r\n const boneComponentRef = viewContainerRef.createComponent(componentType);\r\n\r\n boneComponentRef.instance.bd.bone = bone;\r\n }\r\n }\r\n\r\n}\r\n","<ng-template bonSkeletonAnchor></ng-template>\r\n","import { Type } from \"@angular/core\";\r\nimport { IBoneComponent } from \"./IBoneComponent\";\r\n\r\n\r\nexport class BoneMap extends Map<string, Type<IBoneComponent>>\r\n{\r\n public getRequired(key: string): Type<IBoneComponent> {\r\n const value = this.get(key);\r\n\r\n if (value === undefined || value === null) {\r\n throw Error(`BoneMap doesn't contain type for key = ${key}`);\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { MarcyImageComponent } from './marcy-image/marcy-image.component';\r\nimport { IntersectionComponent } from './core/intersection.component';\r\nimport { UnsubscriberService } from './core/unsubscribe.service';\r\nimport { SrcBaseDirective } from './core/src.directive';\r\nimport { ImageSrcDirective } from './marcy-image/imgsrc.directive';\r\nimport { VideoSrcDirective } from './marcy-video/vidsrc.directive';\r\nimport { DeviceServiceBase } from './core/device.service.base';\r\nimport { DeviceService } from './core/device.service';\r\nimport { MarcyVideoComponent } from './marcy-video/marcy-video.component';\r\nimport { SkeletonAnchorDirective } from './skeleton/skeleton-anchor.directive';\r\nimport { SkeletonComponent } from './skeleton/skeleton.component';\r\nimport { LocalizationIsNotEmptyPipe, LocalizePipe } from './localization/localize.pipe';\r\nimport { UnknownBoneComponent } from './skeleton/unknown-bone.component';\r\nimport { MarcyMediaComponent } from './marcy-media/marcy-media.component';\r\nimport { BoneDirective } from './skeleton/bone.directive';\r\nimport { EncodeURIComponentPipe } from './core';\r\n\r\nconst components = [\r\n MarcyImageComponent,\r\n MarcyVideoComponent,\r\n MarcyMediaComponent,\r\n IntersectionComponent,\r\n //\r\n SkeletonComponent,\r\n UnknownBoneComponent\r\n];\r\n\r\nconst directives = [\r\n SrcBaseDirective,\r\n ImageSrcDirective,\r\n VideoSrcDirective,\r\n];\r\n\r\nconst standAloneDirectives = [\r\n SkeletonAnchorDirective,\r\n BoneDirective\r\n];\r\n\r\nconst pipes = [\r\n EncodeURIComponentPipe,\r\n LocalizePipe,\r\n LocalizationIsNotEmptyPipe\r\n]\r\n\r\n@NgModule({\r\n declarations: [\r\n ...components,\r\n ...directives,\r\n ...pipes,\r\n ],\r\n providers:\r\n [\r\n ...pipes,\r\n UnsubscriberService,\r\n DeviceService,\r\n { provide: DeviceServiceBase, useExisting: DeviceService },\r\n ],\r\n imports: [\r\n CommonModule,\r\n ...standAloneDirectives\r\n ],\r\n exports: [\r\n CommonModule,\r\n ...pipes,\r\n ...components,\r\n ...directives,\r\n ...standAloneDirectives\r\n ]\r\n})\r\nexport class BonnieModule { } // todo: move to standalone\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["utils.distinct","utils.descendingT","i1.UnsubscriberService","i1.LocalizeServiceBase","utils.generateSizesString","utils.groupBy","utils.ascendingT","i1.DeviceServiceBase","i2.UnsubscriberService","i3.ImageSrcDirective","i5.IntersectionComponent","i3.VideoSrcDirective","i3","i4.MarcyImageComponent","i5.MarcyVideoComponent","i6.ImageSrcDirective","i7.VideoSrcDirective","i2.LocalizeServiceBase","i1.BoneDirective","i2","i1.SkeletonAnchorDirective"],"mappings":"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"}
|