@candy-kingdom/bonnie 0.17.0 → 0.19.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.
@@ -108,7 +108,7 @@ export class MarcyVideoComponent {
108
108
  .srcSet
109
109
  .filter(x => x.mimeType === 'video/mp4')
110
110
  .sort(descendingT(x => x.meta.width)); // bigest video
111
- console.log(`ssr found video ${mp4Srcs[0].url}`);
111
+ // console.log(`ssr found video ${mp4Srcs[0].url}`)
112
112
  // element or undefined
113
113
  return mp4Srcs[0];
114
114
  }
@@ -117,19 +117,19 @@ export class MarcyVideoComponent {
117
117
  .filter(x => this.videoRef.nativeElement.canPlayType(x.mimeType))
118
118
  .sort((a, b) => {
119
119
  if (a.meta.width === b.meta.width) {
120
- return isWebM(a) ? 1 : -1; // if same width prefer webM
120
+ return isWebM(a) ? -1 : 1; // if same width prefer webM
121
121
  }
122
122
  // else prefer smallest
123
- return a.meta.width <= b.meta.width ? 1 : -1;
123
+ return a.meta.width <= b.meta.width ? -1 : 1;
124
124
  }); // smallest video
125
125
  if (fileSrcs.length === 0)
126
126
  continue;
127
- console.log('sources ', fileSrcs);
127
+ // console.log('sources ', fileSrcs);
128
128
  let bestSrc = fileSrcs[0];
129
129
  for (let i = 1; i < fileSrcs.length; i++) {
130
130
  const fileSrc = fileSrcs[i];
131
131
  const currentDiff = fileSrc.meta.width - realPixelsVideoWidth;
132
- console.log(`browser video currentDiff ${currentDiff}`);
132
+ // console.log(`browser video currentDiff ${currentDiff}`)
133
133
  // too big video source width
134
134
  if (currentDiff > 0)
135
135
  break;
@@ -156,4 +156,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
156
156
  }], objectFit: [{
157
157
  type: Input
158
158
  }] } });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyY3ktdmlkZW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUvc3JjL2xpYi9tYXJjeS12aWRlby9tYXJjeS12aWRlby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL21hcmN5LXZpZGVvL21hcmN5LXZpZGVvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQXFCLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3SixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFFL0QsU0FBUyxNQUFNLENBQUMsR0FBbUM7SUFDakQsT0FBTyxHQUFHLENBQUMsUUFBUSxLQUFLLFlBQVksQ0FBQztBQUN2QyxDQUFDO0FBUUQsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFFb0IsTUFBeUIsRUFDekIsRUFBcUIsRUFDcEIsRUFBdUIsRUFDNUIsTUFBMEI7UUFIdEIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDekIsT0FBRSxHQUFGLEVB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U0FBUzt1QkFBQyxPQUFPO2dCQUlGLFFBQVE7c0JBRHZCLE1BQU07Z0JBaUdJLFNBQVM7c0JBRG5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgT25EZXN0cm95LCBPcHRpb25hbCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgKiBhcyBNQ29yZSBmcm9tICcuLi9nZW5lcmF0ZWQnO1xyXG5cclxuaW1wb3J0IHsgVW5zdWJzY3JpYmVyU2VydmljZSB9IGZyb20gJy4uL2NvcmUvdW5zdWJzY3JpYmUuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lZGlhU3RhdHVzIH0gZnJvbSAnLi4vY29yZS9NZWRpYVN0YXR1cyc7XHJcbmltcG9ydCB7IE1lZGlhT2JqZWN0Rml0IH0gZnJvbSAnLi4vY29yZS9NZWRpYU9iamVjdEZpdCc7XHJcbmltcG9ydCB7IERldmljZVNlcnZpY2VCYXNlIH0gZnJvbSAnLi4vY29yZS9kZXZpY2Uuc2VydmljZS5iYXNlJztcclxuaW1wb3J0IHsgVmlkZW9TcmNEaXJlY3RpdmUgfSBmcm9tICcuL3ZpZHNyYy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBtYXRjaGVzTWVkaWFRdWVyeSwgZGVzY2VuZGluZ1QgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcclxuXHJcbmZ1bmN0aW9uIGlzV2ViTShzcmM6IE1Db3JlLkZpbGVTcmM8TUNvcmUuSW1hZ2VNZXRhPik6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBzcmMubWltZVR5cGUgPT09ICd2aWRlby93ZWJtJztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdib24tdmlkZW8nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXJjeS12aWRlby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWFyY3ktdmlkZW8uY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtVbnN1YnNjcmliZXJTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFyY3lWaWRlb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IE1lZGlhU3RhdHVzID0gTWVkaWFTdGF0dXM7XHJcbiAgcHVibGljIHJlYWRvbmx5IE1hcmN5T2JqZWN0Rml0ID0gTWVkaWFPYmplY3RGaXQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3ZpZGVvJylcclxuICBwdWJsaWMgcmVhZG9ubHkgdmlkZW9SZWYhOiBFbGVtZW50UmVmPEhUTUxWaWRlb0VsZW1lbnQ+O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgaXNMb2FkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5ICRzdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lZGlhU3RhdHVzPihNZWRpYVN0YXR1cy5Ob3RTZXQpO1xyXG4gIHB1YmxpYyByZWFkb25seSBzcmM6IFZpZGVvU3JjRGlyZWN0aXZlO1xyXG5cclxuICBwdWJsaWMgc291cmNlPzogTUNvcmUuRmlsZVNyYzxNQ29yZS5WaWRlb01ldGE+O1xyXG5cclxuICBwcml2YXRlIF9vYmplY3RGaXQgPSBNZWRpYU9iamVjdEZpdC5PcmlnaW5hbDtcclxuXHJcbiAgY29uc3RydWN0b3JcclxuICAgIChcclxuICAgICAgcHVibGljIHJlYWRvbmx5IGRldmljZTogRGV2aWNlU2VydmljZUJhc2UsXHJcbiAgICAgIHB1YmxpYyByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3U6IFVuc3Vic2NyaWJlclNlcnZpY2UsXHJcbiAgICAgIEBPcHRpb25hbCgpIHNyY0Rpcj86IFZpZGVvU3JjRGlyZWN0aXZlXHJcbiAgICApIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZygnTWFyY3lWaWRlb0NvbXBvbmVudCBjdG9yJyk7XHJcblxyXG4gICAgaWYgKHNyY0RpciA9PT0gdW5kZWZpbmVkIHx8IHNyY0RpciA9PT0gbnVsbClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke01hcmN5VmlkZW9Db21wb25lbnQubmFtZX0gc2hvdWxkIGhhdmUgW3ZpZHNyY10gZGlyZWN0aXZlIGFzIHNvdXJjZSBvYmplY3RgKTtcclxuXHJcbiAgICB0aGlzLnNyYyA9IHNyY0RpcjtcclxuXHJcbiAgICBjZC5kZXRhY2goKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdNYXJjeVZpZGVvQ29tcG9uZW50IG5nT25Jbml0Jyk7XHJcblxyXG4gICAgLy8gYmluZCBsb2FkZWQgZXZlbnRcclxuICAgIHRoaXMuJHN0YXR1c1xyXG4gICAgICAucGlwZVxyXG4gICAgICAoXHJcbiAgICAgICAgdGhpcy5fdS50YWtlVW50aWxEZXN0cm95LFxyXG4gICAgICAgIGZpbHRlcihzdGF0dXMgPT4gc3RhdHVzID09PSBNZWRpYVN0YXR1cy5Mb2FkZWQpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmlzTG9hZGVkLm5leHQoKSk7XHJcblxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgY29uc29sZS5sb2coJ01hcmN5VmlkZW9Db21wb25lbnQgbmdBZnRlclZpZXdJbml0Jyk7XHJcblxyXG4gICAgLy8gYmluZCBzcmMgY2hhbmdlc1xyXG4gICAgdGhpcy5zcmMuc3JjQ2hhbmdlXHJcbiAgICAgIC5waXBlKHRoaXMuX3UudGFrZVVudGlsRGVzdHJveSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ01hcmN5VmlkZW9Db21wb25lbnQgb25TcmNDaGFuZ2UnLCB2YWwpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVNvdXJjZXMoKTtcclxuXHJcbiAgICAgICAgLy8gcmVzdWJzY3JpYmUgYmVjYXVzZSBpdHMgdXBkYXRlZCB3aXRoIHNyY1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9NZWRpYVF1ZXJ5Q2hhbmdlKCk7XHJcbiAgICAgIH0pXHJcblxyXG4gICAgdGhpcy51cGRhdGVTb3VyY2VzKCk7XHJcblxyXG4gICAgLy8gaW5pdGlhbCwgZm9yIHNyYyBhZGRlZCBiZWZvcmUgaW5pdFxyXG4gICAgdGhpcy5zdWJzY3JpYmVUb01lZGlhUXVlcnlDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9NZWRpYVF1ZXJ5Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zcmNcclxuICAgICAgLndhdGNoTWVkaWFRdWVyaWVzKClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ01hcmN5VmlkZW9Db21wb25lbnQgd2F0Y2hNZWRpYVF1ZXJpZXMnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNvdXJjZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNvdXJjZXMoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnTWFyY3lWaWRlb0NvbXBvbmVudCB1cGRhdGVTb3VyY2VzJyk7XHJcblxyXG4gICAgdGhpcy5zb3VyY2UgPSB0aGlzLmZpbmRNb3JlU3VpdGFibGVTb3VyY2UoKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZygnTWFyY3lWaWRlb0NvbXBvbmVudCBuZXcgc291cmNlJywgdGhpcy5zb3VyY2UpO1xyXG5cclxuICAgIGlmICh0aGlzLiRzdGF0dXMudmFsdWUgPT09IE1lZGlhU3RhdHVzLk5vdFNldCAmJiB0aGlzLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLiRzdGF0dXMubmV4dChNZWRpYVN0YXR1cy5Ob3RTZXQpO1xyXG5cclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiRzdGF0dXMubmV4dChNZWRpYVN0YXR1cy5Ob3RMb2FkZWQpO1xyXG5cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG9iamVjdEZpdCh2YWw6IE1lZGlhT2JqZWN0Rml0IHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9vYmplY3RGaXQgPSB2YWwgPz8gTWVkaWFPYmplY3RGaXQuT3JpZ2luYWw7XHJcblxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG9iamVjdEZpdCgpOiBNZWRpYU9iamVjdEZpdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0Rml0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTG9hZCgpIHtcclxuICAgIHRoaXMuJHN0YXR1cy5uZXh0KE1lZGlhU3RhdHVzLkxvYWRlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRNb3JlU3VpdGFibGVTb3VyY2UoKTogTUNvcmUuRmlsZVNyYzxNQ29yZS5WaWRlb01ldGE+IHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICh0aGlzLnZpZGVvUmVmID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgY29uc29sZS5sb2coJ3NraXBwaW5nIGZpbmRNb3JlU3VpdGFibGVTb3VyY2UuIHZpZGVvUmVmIGlzIGVtcHR5IHN0aWxsJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2aWRlb1NvdXJjZXMgPSB0aGlzLnNyYy5kYXRhPy5zb3VyY2VzID8/IFtdO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRWaWRlb1dpZHRoID0gdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xyXG4gICAgY29uc3QgcmVhbFBpeGVsc1ZpZGVvV2lkdGggPSB0aGlzLmRldmljZS5kZXZpY2VQaXhlbFJhdGlvICogY3VycmVudFZpZGVvV2lkdGg7XHJcblxyXG4gICAgY29uc29sZS5sb2coYE1hcmN5VmlkZW9Db21wb25lbnQgY3VycmVudFZpZGVvV2lkdGggJHtjdXJyZW50VmlkZW9XaWR0aH1gKTtcclxuICAgIGNvbnNvbGUubG9nKGBNYXJjeVZpZGVvQ29tcG9uZW50IHJlYWxQaXhlbHNWaWRlb1dpZHRoICR7cmVhbFBpeGVsc1ZpZGVvV2lkdGh9YCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgdmlkZW9Tb3VyY2UgPSB2aWRlb1NvdXJjZXNbaV07XHJcblxyXG4gICAgICBpZiAoIW1hdGNoZXNNZWRpYVF1ZXJ5KHZpZGVvU291cmNlLm1lZGlhUXVlcnkpKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgLy8gU1NSXHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50Py5jYW5QbGF5VHlwZSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIC8vIHJldHVybiBmaXJzdCBtcDQsIGJlY2F1c2UgYWxsIHBsYXllcnMgY2FuIHBsYXkgdGhlbVxyXG4gICAgICAgIGNvbnN0IG1wNFNyY3MgPSB2aWRlb1NvdXJjZVxyXG4gICAgICAgICAgLnNyY1NldFxyXG4gICAgICAgICAgLmZpbHRlcih4ID0+IHgubWltZVR5cGUgPT09ICd2aWRlby9tcDQnKVxyXG4gICAgICAgICAgLnNvcnQoZGVzY2VuZGluZ1QoeCA9PiB4Lm1ldGEud2lkdGgpKTsgLy8gYmlnZXN0IHZpZGVvXHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKGBzc3IgZm91bmQgdmlkZW8gJHttcDRTcmNzWzBdLnVybH1gKVxyXG5cclxuICAgICAgICAvLyBlbGVtZW50IG9yIHVuZGVmaW5lZFxyXG4gICAgICAgIHJldHVybiBtcDRTcmNzWzBdO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgY29uc3QgZmlsZVNyY3MgPSB2aWRlb1NvdXJjZVxyXG4gICAgICAgIC5zcmNTZXRcclxuICAgICAgICAuZmlsdGVyKHggPT4gdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50LmNhblBsYXlUeXBlKHgubWltZVR5cGUpKVxyXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAoYS5tZXRhLndpZHRoID09PSBiLm1ldGEud2lkdGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGlzV2ViTShhKSA/IDEgOiAtMTsgLy8gaWYgc2FtZSB3aWR0aCBwcmVmZXIgd2ViTVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGVsc2UgcHJlZmVyIHNtYWxsZXN0XHJcbiAgICAgICAgICByZXR1cm4gYS5tZXRhLndpZHRoIDw9IGIubWV0YS53aWR0aCA/IDEgOiAtMTtcclxuICAgICAgICB9KTsgLy8gc21hbGxlc3QgdmlkZW9cclxuXHJcbiAgICAgIGlmIChmaWxlU3Jjcy5sZW5ndGggPT09IDApXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZygnc291cmNlcyAnLCBmaWxlU3Jjcyk7XHJcblxyXG4gICAgICBsZXQgYmVzdFNyYyA9IGZpbGVTcmNzWzBdO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaWxlU3Jjcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGZpbGVTcmMgPSBmaWxlU3Jjc1tpXTtcclxuXHJcbiAgICAgICAgY29uc3QgY3VycmVudERpZmYgPSBmaWxlU3JjLm1ldGEud2lkdGggLSByZWFsUGl4ZWxzVmlkZW9XaWR0aDtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coYGJyb3dzZXIgdmlkZW8gY3VycmVudERpZmYgJHtjdXJyZW50RGlmZn1gKVxyXG5cclxuICAgICAgICAvLyB0b28gYmlnIHZpZGVvIHNvdXJjZSB3aWR0aFxyXG4gICAgICAgIGlmIChjdXJyZW50RGlmZiA+IDApXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgYmVzdFNyYyA9IGZpbGVTcmM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKGBicm93c2VyIGZvdW5kIHN1aXRhYmxlIHZpZGVvICR7YmVzdFNyYy51cmx9YClcclxuXHJcbiAgICAgIHJldHVybiBiZXN0U3JjO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2NsYXNzLmtub3duUmF0aW9dPVwic3JjLnJhdGlvID4gMCAmJiBvYmplY3RGaXQgPT09IE1hcmN5T2JqZWN0Rml0Lk9yaWdpbmFsXCJcclxuICAgICBbY2xhc3MuY292ZXJdPVwib2JqZWN0Rml0ID09PSBNYXJjeU9iamVjdEZpdC5Db3ZlclwiXHJcbiAgICAgW2NsYXNzLmNvbnRhaW5dPVwib2JqZWN0Rml0ID09PSBNYXJjeU9iamVjdEZpdC5Db250YWluXCJcclxuICAgICBbY2xhc3MubG9hZGVkXT1cIigkc3RhdHVzIHwgYXN5bmMpID09PSBNZWRpYVN0YXR1cy5Mb2FkZWRcIlxyXG4gICAgIGNsYXNzPVwidmlkZW8tY29udGFpbmVyXCI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXZpY2UuaXNTU1IgOyB0aGVuIHNzclRlbXBsYXRlIGVsc2UgYnJvd3NlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjdmlkZW9UZW1wbGF0ZT5cclxuICAgIDx2aWRlbyAjdmlkZW9cclxuICAgICAgICAgICBbc3JjXT1cInNvdXJjZSAhPT0gdW5kZWZpbmVkID8gc291cmNlLnVybCA6JycgXCJcclxuICAgICAgICAgICAobG9hZCk9XCJvbkxvYWQoKVwiXHJcbiAgICAgICAgICAgKGNhbnBsYXkpPVwidmlkZW8ubXV0ZWQ9dHJ1ZTt2aWRlby5wbGF5KCk7XCJcclxuICAgICAgICAgICBwbGF5c0lubGluZVxyXG4gICAgICAgICAgIGF1dG9wbGF5XHJcbiAgICAgICAgICAgbG9vcFxyXG4gICAgICAgICAgIG11dGVkPiA8L3ZpZGVvPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjc3NyVGVtcGxhdGU+XHJcbiAgICA8bm9zY3JpcHQgKm5nSWY9XCJkZXZpY2UuaXNTU1JcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZpZGVvVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbm9zY3JpcHQ+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNicm93c2VyVGVtcGxhdGU+XHJcbiAgICA8Ym9uLWludGVyc2VjdGlvbiAjaW50ZXJzZWN0aW9uWm9uZSBbc2Vzc2lvbl09XCJzcmNcIiAoaW50ZXJzZWN0ZWQpPVwiY2QuZGV0ZWN0Q2hhbmdlcygpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2aWRlb1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Jvbi1pbnRlcnNlY3Rpb24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPGRpdiAqbmdJZj1cInNyYy5yYXRpbyA+IDAgJiYgb2JqZWN0Rml0ID09PSBNYXJjeU9iamVjdEZpdC5PcmlnaW5hbFwiIFtzdHlsZS5wYWRkaW5nLXRvcF09XCIxMDAgLyBzcmMucmF0aW8gKyclJ1wiPjwvZGl2PlxyXG48L2Rpdj5cclxuIl19
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyY3ktdmlkZW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUvc3JjL2xpYi9tYXJjeS12aWRlby9tYXJjeS12aWRlby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL21hcmN5LXZpZGVvL21hcmN5LXZpZGVvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQXFCLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3SixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFFL0QsU0FBUyxNQUFNLENBQUMsR0FBbUM7SUFDakQsT0FBTyxHQUFHLENBQUMsUUFBUSxLQUFLLFlBQVksQ0FBQztBQUN2QyxDQUFDO0FBUUQsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFFb0IsTUFBeUIsRUFDekIsRUFBcUIsRUFDcEIsRUFBdUIsRUFDNUIsTUFBMEI7UUFIdEIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDekIsT0FBRSxHQUFGLEVB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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtZQUV2QixJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDdkIsU0FBUztZQUVYLHFDQUFxQztZQUVyQyxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFNUIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsb0JBQW9CLENBQUM7Z0JBRTlELDBEQUEwRDtnQkFFMUQsNkJBQTZCO2dCQUM3QixJQUFJLFdBQVcsR0FBRyxDQUFDO29CQUNqQixNQUFNO2dCQUVSLE9BQU8sR0FBRyxPQUFPLENBQUM7YUFDbkI7WUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUUxRCxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OEdBaE1VLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDJHQUZuQixDQUFDLG1CQUFtQixDQUFDLDZIQ3BCbEMsaTBDQWlDQTs7MkZEWGEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLFdBQVcsYUFHVixDQUFDLG1CQUFtQixDQUFDOzswQkF3QjNCLFFBQVE7eUNBakJHLFFBQVE7c0JBRHZCLFNBQVM7dUJBQUMsT0FBTztnQkFJRixRQUFRO3NCQUR2QixNQUFNO2dCQWlHSSxTQUFTO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQsIE9uRGVzdHJveSwgT3B0aW9uYWwsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0ICogYXMgTUNvcmUgZnJvbSAnLi4vZ2VuZXJhdGVkJztcclxuXHJcbmltcG9ydCB7IFVuc3Vic2NyaWJlclNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3Vuc3Vic2NyaWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZWRpYVN0YXR1cyB9IGZyb20gJy4uL2NvcmUvTWVkaWFTdGF0dXMnO1xyXG5pbXBvcnQgeyBNZWRpYU9iamVjdEZpdCB9IGZyb20gJy4uL2NvcmUvTWVkaWFPYmplY3RGaXQnO1xyXG5pbXBvcnQgeyBEZXZpY2VTZXJ2aWNlQmFzZSB9IGZyb20gJy4uL2NvcmUvZGV2aWNlLnNlcnZpY2UuYmFzZSc7XHJcbmltcG9ydCB7IFZpZGVvU3JjRGlyZWN0aXZlIH0gZnJvbSAnLi92aWRzcmMuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgbWF0Y2hlc01lZGlhUXVlcnksIGRlc2NlbmRpbmdUIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XHJcblxyXG5mdW5jdGlvbiBpc1dlYk0oc3JjOiBNQ29yZS5GaWxlU3JjPE1Db3JlLkltYWdlTWV0YT4pOiBib29sZWFuIHtcclxuICByZXR1cm4gc3JjLm1pbWVUeXBlID09PSAndmlkZW8vd2VibSc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYm9uLXZpZGVvJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWFyY3ktdmlkZW8uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hcmN5LXZpZGVvLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVW5zdWJzY3JpYmVyU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcmN5VmlkZW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIHB1YmxpYyByZWFkb25seSBNZWRpYVN0YXR1cyA9IE1lZGlhU3RhdHVzO1xyXG4gIHB1YmxpYyByZWFkb25seSBNYXJjeU9iamVjdEZpdCA9IE1lZGlhT2JqZWN0Rml0O1xyXG5cclxuICBAVmlld0NoaWxkKCd2aWRlbycpXHJcbiAgcHVibGljIHJlYWRvbmx5IHZpZGVvUmVmITogRWxlbWVudFJlZjxIVE1MVmlkZW9FbGVtZW50PjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGlzTG9hZGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSAkc3RhdHVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZWRpYVN0YXR1cz4oTWVkaWFTdGF0dXMuTm90U2V0KTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc3JjOiBWaWRlb1NyY0RpcmVjdGl2ZTtcclxuXHJcbiAgcHVibGljIHNvdXJjZT86IE1Db3JlLkZpbGVTcmM8TUNvcmUuVmlkZW9NZXRhPjtcclxuXHJcbiAgcHJpdmF0ZSBfb2JqZWN0Rml0ID0gTWVkaWFPYmplY3RGaXQuT3JpZ2luYWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yXHJcbiAgICAoXHJcbiAgICAgIHB1YmxpYyByZWFkb25seSBkZXZpY2U6IERldmljZVNlcnZpY2VCYXNlLFxyXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IF91OiBVbnN1YnNjcmliZXJTZXJ2aWNlLFxyXG4gICAgICBAT3B0aW9uYWwoKSBzcmNEaXI/OiBWaWRlb1NyY0RpcmVjdGl2ZVxyXG4gICAgKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ01hcmN5VmlkZW9Db21wb25lbnQgY3RvcicpO1xyXG5cclxuICAgIGlmIChzcmNEaXIgPT09IHVuZGVmaW5lZCB8fCBzcmNEaXIgPT09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtNYXJjeVZpZGVvQ29tcG9uZW50Lm5hbWV9IHNob3VsZCBoYXZlIFt2aWRzcmNdIGRpcmVjdGl2ZSBhcyBzb3VyY2Ugb2JqZWN0YCk7XHJcblxyXG4gICAgdGhpcy5zcmMgPSBzcmNEaXI7XHJcblxyXG4gICAgY2QuZGV0YWNoKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnTWFyY3lWaWRlb0NvbXBvbmVudCBuZ09uSW5pdCcpO1xyXG5cclxuICAgIC8vIGJpbmQgbG9hZGVkIGV2ZW50XHJcbiAgICB0aGlzLiRzdGF0dXNcclxuICAgICAgLnBpcGVcclxuICAgICAgKFxyXG4gICAgICAgIHRoaXMuX3UudGFrZVVudGlsRGVzdHJveSxcclxuICAgICAgICBmaWx0ZXIoc3RhdHVzID0+IHN0YXR1cyA9PT0gTWVkaWFTdGF0dXMuTG9hZGVkKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pc0xvYWRlZC5uZXh0KCkpO1xyXG5cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGNvbnNvbGUubG9nKCdNYXJjeVZpZGVvQ29tcG9uZW50IG5nQWZ0ZXJWaWV3SW5pdCcpO1xyXG5cclxuICAgIC8vIGJpbmQgc3JjIGNoYW5nZXNcclxuICAgIHRoaXMuc3JjLnNyY0NoYW5nZVxyXG4gICAgICAucGlwZSh0aGlzLl91LnRha2VVbnRpbERlc3Ryb3kpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdNYXJjeVZpZGVvQ29tcG9uZW50IG9uU3JjQ2hhbmdlJywgdmFsKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVTb3VyY2VzKCk7XHJcblxyXG4gICAgICAgIC8vIHJlc3Vic2NyaWJlIGJlY2F1c2UgaXRzIHVwZGF0ZWQgd2l0aCBzcmNcclxuICAgICAgICB0aGlzLnN1YnNjcmliZVRvTWVkaWFRdWVyeUNoYW5nZSgpO1xyXG4gICAgICB9KVxyXG5cclxuICAgIHRoaXMudXBkYXRlU291cmNlcygpO1xyXG5cclxuICAgIC8vIGluaXRpYWwsIGZvciBzcmMgYWRkZWQgYmVmb3JlIGluaXRcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9NZWRpYVF1ZXJ5Q2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvTWVkaWFRdWVyeUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3JjXHJcbiAgICAgIC53YXRjaE1lZGlhUXVlcmllcygpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdNYXJjeVZpZGVvQ29tcG9uZW50IHdhdGNoTWVkaWFRdWVyaWVzJyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTb3VyY2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTb3VyY2VzKCkge1xyXG4gICAgY29uc29sZS5sb2coJ01hcmN5VmlkZW9Db21wb25lbnQgdXBkYXRlU291cmNlcycpO1xyXG5cclxuICAgIHRoaXMuc291cmNlID0gdGhpcy5maW5kTW9yZVN1aXRhYmxlU291cmNlKCk7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ01hcmN5VmlkZW9Db21wb25lbnQgbmV3IHNvdXJjZScsIHRoaXMuc291cmNlKTtcclxuXHJcbiAgICBpZiAodGhpcy4kc3RhdHVzLnZhbHVlID09PSBNZWRpYVN0YXR1cy5Ob3RTZXQgJiYgdGhpcy5zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc291cmNlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy4kc3RhdHVzLm5leHQoTWVkaWFTdGF0dXMuTm90U2V0KTtcclxuXHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy4kc3RhdHVzLm5leHQoTWVkaWFTdGF0dXMuTm90TG9hZGVkKTtcclxuXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBvYmplY3RGaXQodmFsOiBNZWRpYU9iamVjdEZpdCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fb2JqZWN0Rml0ID0gdmFsID8/IE1lZGlhT2JqZWN0Rml0Lk9yaWdpbmFsO1xyXG5cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBvYmplY3RGaXQoKTogTWVkaWFPYmplY3RGaXQge1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdEZpdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkxvYWQoKSB7XHJcbiAgICB0aGlzLiRzdGF0dXMubmV4dChNZWRpYVN0YXR1cy5Mb2FkZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kTW9yZVN1aXRhYmxlU291cmNlKCk6IE1Db3JlLkZpbGVTcmM8TUNvcmUuVmlkZW9NZXRhPiB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAodGhpcy52aWRlb1JlZiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdza2lwcGluZyBmaW5kTW9yZVN1aXRhYmxlU291cmNlLiB2aWRlb1JlZiBpcyBlbXB0eSBzdGlsbCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmlkZW9Tb3VyY2VzID0gdGhpcy5zcmMuZGF0YT8uc291cmNlcyA/PyBbXTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50VmlkZW9XaWR0aCA9IHRoaXMudmlkZW9SZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcclxuICAgIGNvbnN0IHJlYWxQaXhlbHNWaWRlb1dpZHRoID0gdGhpcy5kZXZpY2UuZGV2aWNlUGl4ZWxSYXRpbyAqIGN1cnJlbnRWaWRlb1dpZHRoO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKGBNYXJjeVZpZGVvQ29tcG9uZW50IGN1cnJlbnRWaWRlb1dpZHRoICR7Y3VycmVudFZpZGVvV2lkdGh9YCk7XHJcbiAgICBjb25zb2xlLmxvZyhgTWFyY3lWaWRlb0NvbXBvbmVudCByZWFsUGl4ZWxzVmlkZW9XaWR0aCAke3JlYWxQaXhlbHNWaWRlb1dpZHRofWApO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlkZW9Tb3VyY2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHZpZGVvU291cmNlID0gdmlkZW9Tb3VyY2VzW2ldO1xyXG5cclxuICAgICAgaWYgKCFtYXRjaGVzTWVkaWFRdWVyeSh2aWRlb1NvdXJjZS5tZWRpYVF1ZXJ5KSlcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIC8vIFNTUlxyXG4gICAgICBpZiAodHlwZW9mIHRoaXMudmlkZW9SZWYubmF0aXZlRWxlbWVudD8uY2FuUGxheVR5cGUgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAvLyByZXR1cm4gZmlyc3QgbXA0LCBiZWNhdXNlIGFsbCBwbGF5ZXJzIGNhbiBwbGF5IHRoZW1cclxuICAgICAgICBjb25zdCBtcDRTcmNzID0gdmlkZW9Tb3VyY2VcclxuICAgICAgICAgIC5zcmNTZXRcclxuICAgICAgICAgIC5maWx0ZXIoeCA9PiB4Lm1pbWVUeXBlID09PSAndmlkZW8vbXA0JylcclxuICAgICAgICAgIC5zb3J0KGRlc2NlbmRpbmdUKHggPT4geC5tZXRhLndpZHRoKSk7IC8vIGJpZ2VzdCB2aWRlb1xyXG5cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc3NyIGZvdW5kIHZpZGVvICR7bXA0U3Jjc1swXS51cmx9YClcclxuXHJcbiAgICAgICAgLy8gZWxlbWVudCBvciB1bmRlZmluZWRcclxuICAgICAgICByZXR1cm4gbXA0U3Jjc1swXTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGNvbnN0IGZpbGVTcmNzID0gdmlkZW9Tb3VyY2VcclxuICAgICAgICAuc3JjU2V0XHJcbiAgICAgICAgLmZpbHRlcih4ID0+IHRoaXMudmlkZW9SZWYubmF0aXZlRWxlbWVudC5jYW5QbGF5VHlwZSh4Lm1pbWVUeXBlKSlcclxuICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgaWYgKGEubWV0YS53aWR0aCA9PT0gYi5tZXRhLndpZHRoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpc1dlYk0oYSkgPyAtMSA6IDE7IC8vIGlmIHNhbWUgd2lkdGggcHJlZmVyIHdlYk1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBlbHNlIHByZWZlciBzbWFsbGVzdFxyXG4gICAgICAgICAgcmV0dXJuIGEubWV0YS53aWR0aCA8PSBiLm1ldGEud2lkdGggPyAtMSA6IDE7XHJcbiAgICAgICAgfSk7IC8vIHNtYWxsZXN0IHZpZGVvXHJcblxyXG4gICAgICBpZiAoZmlsZVNyY3MubGVuZ3RoID09PSAwKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgLy8gY29uc29sZS5sb2coJ3NvdXJjZXMgJywgZmlsZVNyY3MpO1xyXG5cclxuICAgICAgbGV0IGJlc3RTcmMgPSBmaWxlU3Jjc1swXTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZmlsZVNyY3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBmaWxlU3JjID0gZmlsZVNyY3NbaV07XHJcblxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnREaWZmID0gZmlsZVNyYy5tZXRhLndpZHRoIC0gcmVhbFBpeGVsc1ZpZGVvV2lkdGg7XHJcblxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBicm93c2VyIHZpZGVvIGN1cnJlbnREaWZmICR7Y3VycmVudERpZmZ9YClcclxuXHJcbiAgICAgICAgLy8gdG9vIGJpZyB2aWRlbyBzb3VyY2Ugd2lkdGhcclxuICAgICAgICBpZiAoY3VycmVudERpZmYgPiAwKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGJlc3RTcmMgPSBmaWxlU3JjO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhgYnJvd3NlciBmb3VuZCBzdWl0YWJsZSB2aWRlbyAke2Jlc3RTcmMudXJsfWApXHJcblxyXG4gICAgICByZXR1cm4gYmVzdFNyYztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtjbGFzcy5rbm93blJhdGlvXT1cInNyYy5yYXRpbyA+IDAgJiYgb2JqZWN0Rml0ID09PSBNYXJjeU9iamVjdEZpdC5PcmlnaW5hbFwiXHJcbiAgICAgW2NsYXNzLmNvdmVyXT1cIm9iamVjdEZpdCA9PT0gTWFyY3lPYmplY3RGaXQuQ292ZXJcIlxyXG4gICAgIFtjbGFzcy5jb250YWluXT1cIm9iamVjdEZpdCA9PT0gTWFyY3lPYmplY3RGaXQuQ29udGFpblwiXHJcbiAgICAgW2NsYXNzLmxvYWRlZF09XCIoJHN0YXR1cyB8IGFzeW5jKSA9PT0gTWVkaWFTdGF0dXMuTG9hZGVkXCJcclxuICAgICBjbGFzcz1cInZpZGVvLWNvbnRhaW5lclwiPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGV2aWNlLmlzU1NSIDsgdGhlbiBzc3JUZW1wbGF0ZSBlbHNlIGJyb3dzZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI3ZpZGVvVGVtcGxhdGU+XHJcbiAgICA8dmlkZW8gI3ZpZGVvXHJcbiAgICAgICAgICAgW3NyY109XCJzb3VyY2UgIT09IHVuZGVmaW5lZCA/IHNvdXJjZS51cmwgOicnIFwiXHJcbiAgICAgICAgICAgKGxvYWQpPVwib25Mb2FkKClcIlxyXG4gICAgICAgICAgIChjYW5wbGF5KT1cInZpZGVvLm11dGVkPXRydWU7dmlkZW8ucGxheSgpO1wiXHJcbiAgICAgICAgICAgcGxheXNJbmxpbmVcclxuICAgICAgICAgICBhdXRvcGxheVxyXG4gICAgICAgICAgIGxvb3BcclxuICAgICAgICAgICBtdXRlZD4gPC92aWRlbz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI3NzclRlbXBsYXRlPlxyXG4gICAgPG5vc2NyaXB0ICpuZ0lmPVwiZGV2aWNlLmlzU1NSXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2aWRlb1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25vc2NyaXB0PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYnJvd3NlclRlbXBsYXRlPlxyXG4gICAgPGJvbi1pbnRlcnNlY3Rpb24gI2ludGVyc2VjdGlvblpvbmUgW3Nlc3Npb25dPVwic3JjXCIgKGludGVyc2VjdGVkKT1cImNkLmRldGVjdENoYW5nZXMoKVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidmlkZW9UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9ib24taW50ZXJzZWN0aW9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJzcmMucmF0aW8gPiAwICYmIG9iamVjdEZpdCA9PT0gTWFyY3lPYmplY3RGaXQuT3JpZ2luYWxcIiBbc3R5bGUucGFkZGluZy10b3BdPVwiMTAwIC8gc3JjLnJhdGlvICsnJSdcIj48L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -868,7 +868,7 @@ class MarcyVideoComponent {
868
868
  .srcSet
869
869
  .filter(x => x.mimeType === 'video/mp4')
870
870
  .sort(descendingT(x => x.meta.width)); // bigest video
871
- console.log(`ssr found video ${mp4Srcs[0].url}`);
871
+ // console.log(`ssr found video ${mp4Srcs[0].url}`)
872
872
  // element or undefined
873
873
  return mp4Srcs[0];
874
874
  }
@@ -877,19 +877,19 @@ class MarcyVideoComponent {
877
877
  .filter(x => this.videoRef.nativeElement.canPlayType(x.mimeType))
878
878
  .sort((a, b) => {
879
879
  if (a.meta.width === b.meta.width) {
880
- return isWebM(a) ? 1 : -1; // if same width prefer webM
880
+ return isWebM(a) ? -1 : 1; // if same width prefer webM
881
881
  }
882
882
  // else prefer smallest
883
- return a.meta.width <= b.meta.width ? 1 : -1;
883
+ return a.meta.width <= b.meta.width ? -1 : 1;
884
884
  }); // smallest video
885
885
  if (fileSrcs.length === 0)
886
886
  continue;
887
- console.log('sources ', fileSrcs);
887
+ // console.log('sources ', fileSrcs);
888
888
  let bestSrc = fileSrcs[0];
889
889
  for (let i = 1; i < fileSrcs.length; i++) {
890
890
  const fileSrc = fileSrcs[i];
891
891
  const currentDiff = fileSrc.meta.width - realPixelsVideoWidth;
892
- console.log(`browser video currentDiff ${currentDiff}`);
892
+ // console.log(`browser video currentDiff ${currentDiff}`)
893
893
  // too big video source width
894
894
  if (currentDiff > 0)
895
895
  break;
@@ -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 { matchesMediaQuery, descendingT } from '../core/utils';\r\n\r\nfunction isWebM(src: MCore.FileSrc<MCore.ImageMeta>): boolean {\r\n return src.mimeType === 'video/webm';\r\n}\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\r\n const fileSrcs = videoSource\r\n .srcSet\r\n .filter(x => this.videoRef.nativeElement.canPlayType(x.mimeType))\r\n .sort((a, b) => {\r\n if (a.meta.width === b.meta.width) {\r\n return isWebM(a) ? 1 : -1; // if same width prefer webM\r\n }\r\n\r\n // else prefer smallest\r\n return a.meta.width <= b.meta.width ? 1 : -1;\r\n }); // smallest video\r\n\r\n if (fileSrcs.length === 0)\r\n continue;\r\n\r\n console.log('sources ', fileSrcs);\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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"}
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 { matchesMediaQuery, descendingT } from '../core/utils';\r\n\r\nfunction isWebM(src: MCore.FileSrc<MCore.ImageMeta>): boolean {\r\n return src.mimeType === 'video/webm';\r\n}\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\r\n const fileSrcs = videoSource\r\n .srcSet\r\n .filter(x => this.videoRef.nativeElement.canPlayType(x.mimeType))\r\n .sort((a, b) => {\r\n if (a.meta.width === b.meta.width) {\r\n return isWebM(a) ? -1 : 1; // if same width prefer webM\r\n }\r\n\r\n // else prefer smallest\r\n return a.meta.width <= b.meta.width ? -1 : 1;\r\n }); // smallest video\r\n\r\n if (fileSrcs.length === 0)\r\n continue;\r\n\r\n // console.log('sources ', fileSrcs);\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@candy-kingdom/bonnie",
3
- "version": "0.17.0",
3
+ "version": "0.19.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.0.0",
6
6
  "@angular/core": "^17.0.0"