@candy-kingdom/bonnie 0.23.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +0 -4
  2. package/fesm2022/candy-kingdom-bonnie.mjs +264 -334
  3. package/fesm2022/candy-kingdom-bonnie.mjs.map +1 -1
  4. package/package.json +8 -10
  5. package/types/candy-kingdom-bonnie.d.ts +596 -0
  6. package/esm2022/candy-kingdom-bonnie.mjs +0 -5
  7. package/esm2022/index.mjs +0 -9
  8. package/esm2022/lib/bonnie.module.mjs +0 -102
  9. package/esm2022/lib/core/FileSrcFileMeta.mjs +0 -2
  10. package/esm2022/lib/core/FileSrcImageMeta.mjs +0 -2
  11. package/esm2022/lib/core/MediaObjectFit.mjs +0 -7
  12. package/esm2022/lib/core/MediaStatus.mjs +0 -8
  13. package/esm2022/lib/core/device.service.base.mjs +0 -3
  14. package/esm2022/lib/core/device.service.mjs +0 -14
  15. package/esm2022/lib/core/emptyBone.mjs +0 -9
  16. package/esm2022/lib/core/emptyImage.mjs +0 -8
  17. package/esm2022/lib/core/emptyLocalizedString.mjs +0 -4
  18. package/esm2022/lib/core/emptyVideo.mjs +0 -8
  19. package/esm2022/lib/core/encode-uri.pipe.mjs +0 -14
  20. package/esm2022/lib/core/index.mjs +0 -16
  21. package/esm2022/lib/core/intersection.component.mjs +0 -69
  22. package/esm2022/lib/core/pix-media-union.mjs +0 -2
  23. package/esm2022/lib/core/src.directive.mjs +0 -128
  24. package/esm2022/lib/core/unsubscribe.service.mjs +0 -19
  25. package/esm2022/lib/core/utils.mjs +0 -48
  26. package/esm2022/lib/generated/bone.mjs +0 -6
  27. package/esm2022/lib/generated/file-format.mjs +0 -6
  28. package/esm2022/lib/generated/file-meta.mjs +0 -6
  29. package/esm2022/lib/generated/file-src-base.mjs +0 -6
  30. package/esm2022/lib/generated/file-src.mjs +0 -6
  31. package/esm2022/lib/generated/i-equatable.mjs +0 -6
  32. package/esm2022/lib/generated/i-have-data-route-with-data.mjs +0 -6
  33. package/esm2022/lib/generated/i-have-data-route.mjs +0 -6
  34. package/esm2022/lib/generated/i-have-skeleton.mjs +0 -6
  35. package/esm2022/lib/generated/i-page.mjs +0 -6
  36. package/esm2022/lib/generated/image-meta.mjs +0 -6
  37. package/esm2022/lib/generated/image-source.mjs +0 -6
  38. package/esm2022/lib/generated/image.mjs +0 -6
  39. package/esm2022/lib/generated/index.mjs +0 -36
  40. package/esm2022/lib/generated/localized-object.mjs +0 -6
  41. package/esm2022/lib/generated/localized-string.mjs +0 -6
  42. package/esm2022/lib/generated/media-source-base.mjs +0 -6
  43. package/esm2022/lib/generated/media-source.mjs +0 -6
  44. package/esm2022/lib/generated/open-graph-data.mjs +0 -6
  45. package/esm2022/lib/generated/page-base.mjs +0 -6
  46. package/esm2022/lib/generated/page-data.mjs +0 -6
  47. package/esm2022/lib/generated/page.mjs +0 -6
  48. package/esm2022/lib/generated/pix-media.mjs +0 -6
  49. package/esm2022/lib/generated/pix-meta.mjs +0 -6
  50. package/esm2022/lib/generated/publish-status.mjs +0 -12
  51. package/esm2022/lib/generated/sizes-item.mjs +0 -6
  52. package/esm2022/lib/generated/sizes-width-unit.mjs +0 -11
  53. package/esm2022/lib/generated/svg-meta.mjs +0 -6
  54. package/esm2022/lib/generated/video-meta.mjs +0 -6
  55. package/esm2022/lib/generated/video-source.mjs +0 -6
  56. package/esm2022/lib/generated/video.mjs +0 -6
  57. package/esm2022/lib/generated/view.mjs +0 -6
  58. package/esm2022/lib/localization/LocalizeServiceBase.mjs +0 -19
  59. package/esm2022/lib/localization/index.mjs +0 -3
  60. package/esm2022/lib/localization/localize.pipe.mjs +0 -128
  61. package/esm2022/lib/marcy-image/IHtmlPictureSource.mjs +0 -2
  62. package/esm2022/lib/marcy-image/getDefaultSrc.mjs +0 -17
  63. package/esm2022/lib/marcy-image/imgsrc.directive.mjs +0 -20
  64. package/esm2022/lib/marcy-image/index.mjs +0 -6
  65. package/esm2022/lib/marcy-image/marcy-image.component.mjs +0 -83
  66. package/esm2022/lib/marcy-image/toHtmlSources.mjs +0 -16
  67. package/esm2022/lib/marcy-media/index.mjs +0 -2
  68. package/esm2022/lib/marcy-media/marcy-media.component.mjs +0 -59
  69. package/esm2022/lib/marcy-video/index.mjs +0 -3
  70. package/esm2022/lib/marcy-video/marcy-video.component.mjs +0 -159
  71. package/esm2022/lib/marcy-video/vidsrc.directive.mjs +0 -20
  72. package/esm2022/lib/skeleton/BoneMap.mjs +0 -10
  73. package/esm2022/lib/skeleton/IBoneComponent.mjs +0 -2
  74. package/esm2022/lib/skeleton/bone.directive.mjs +0 -41
  75. package/esm2022/lib/skeleton/index.mjs +0 -7
  76. package/esm2022/lib/skeleton/skeleton-anchor.directive.mjs +0 -17
  77. package/esm2022/lib/skeleton/skeleton.component.mjs +0 -53
  78. package/esm2022/lib/skeleton/unknown-bone.component.mjs +0 -25
  79. package/index.d.ts +0 -8
  80. package/lib/bonnie.module.d.ts +0 -20
  81. package/lib/core/FileSrcFileMeta.d.ts +0 -2
  82. package/lib/core/FileSrcImageMeta.d.ts +0 -2
  83. package/lib/core/MediaObjectFit.d.ts +0 -5
  84. package/lib/core/MediaStatus.d.ts +0 -6
  85. package/lib/core/device.service.base.d.ts +0 -4
  86. package/lib/core/device.service.d.ts +0 -8
  87. package/lib/core/emptyBone.d.ts +0 -2
  88. package/lib/core/emptyImage.d.ts +0 -2
  89. package/lib/core/emptyLocalizedString.d.ts +0 -2
  90. package/lib/core/emptyVideo.d.ts +0 -2
  91. package/lib/core/encode-uri.pipe.d.ts +0 -7
  92. package/lib/core/index.d.ts +0 -15
  93. package/lib/core/intersection.component.d.ts +0 -20
  94. package/lib/core/pix-media-union.d.ts +0 -2
  95. package/lib/core/src.directive.d.ts +0 -23
  96. package/lib/core/unsubscribe.service.d.ts +0 -10
  97. package/lib/core/utils.d.ts +0 -10
  98. package/lib/generated/bone.d.ts +0 -10
  99. package/lib/generated/file-format.d.ts +0 -8
  100. package/lib/generated/file-meta.d.ts +0 -7
  101. package/lib/generated/file-src-base.d.ts +0 -8
  102. package/lib/generated/file-src.d.ts +0 -9
  103. package/lib/generated/i-equatable.d.ts +0 -6
  104. package/lib/generated/i-have-data-route-with-data.d.ts +0 -8
  105. package/lib/generated/i-have-data-route.d.ts +0 -7
  106. package/lib/generated/i-have-skeleton.d.ts +0 -8
  107. package/lib/generated/i-page.d.ts +0 -8
  108. package/lib/generated/image-meta.d.ts +0 -7
  109. package/lib/generated/image-source.d.ts +0 -10
  110. package/lib/generated/image.d.ts +0 -11
  111. package/lib/generated/index.d.ts +0 -35
  112. package/lib/generated/localized-object.d.ts +0 -7
  113. package/lib/generated/localized-string.d.ts +0 -7
  114. package/lib/generated/media-source-base.d.ts +0 -8
  115. package/lib/generated/media-source.d.ts +0 -11
  116. package/lib/generated/open-graph-data.d.ts +0 -13
  117. package/lib/generated/page-base.d.ts +0 -19
  118. package/lib/generated/page-data.d.ts +0 -7
  119. package/lib/generated/page.d.ts +0 -9
  120. package/lib/generated/pix-media.d.ts +0 -9
  121. package/lib/generated/pix-meta.d.ts +0 -10
  122. package/lib/generated/publish-status.d.ts +0 -10
  123. package/lib/generated/sizes-item.d.ts +0 -10
  124. package/lib/generated/sizes-width-unit.d.ts +0 -9
  125. package/lib/generated/svg-meta.d.ts +0 -9
  126. package/lib/generated/video-meta.d.ts +0 -11
  127. package/lib/generated/video-source.d.ts +0 -8
  128. package/lib/generated/video.d.ts +0 -11
  129. package/lib/generated/view.d.ts +0 -10
  130. package/lib/localization/LocalizeServiceBase.d.ts +0 -9
  131. package/lib/localization/index.d.ts +0 -2
  132. package/lib/localization/localize.pipe.d.ts +0 -55
  133. package/lib/marcy-image/IHtmlPictureSource.d.ts +0 -6
  134. package/lib/marcy-image/getDefaultSrc.d.ts +0 -2
  135. package/lib/marcy-image/imgsrc.directive.d.ts +0 -9
  136. package/lib/marcy-image/index.d.ts +0 -5
  137. package/lib/marcy-image/marcy-image.component.d.ts +0 -30
  138. package/lib/marcy-image/toHtmlSources.d.ts +0 -3
  139. package/lib/marcy-media/index.d.ts +0 -1
  140. package/lib/marcy-media/marcy-media.component.d.ts +0 -24
  141. package/lib/marcy-video/index.d.ts +0 -2
  142. package/lib/marcy-video/marcy-video.component.d.ts +0 -33
  143. package/lib/marcy-video/vidsrc.directive.d.ts +0 -9
  144. package/lib/skeleton/BoneMap.d.ts +0 -5
  145. package/lib/skeleton/IBoneComponent.d.ts +0 -4
  146. package/lib/skeleton/bone.directive.d.ts +0 -17
  147. package/lib/skeleton/index.d.ts +0 -6
  148. package/lib/skeleton/skeleton-anchor.directive.d.ts +0 -8
  149. package/lib/skeleton/skeleton.component.d.ts +0 -18
  150. package/lib/skeleton/unknown-bone.component.d.ts +0 -14
@@ -1,83 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, ChangeDetectorRef, Optional } from '@angular/core';
2
- import { BehaviorSubject, filter } from 'rxjs';
3
- import { UnsubscriberService } from '../core/unsubscribe.service';
4
- import { MediaStatus } from '../core/MediaStatus';
5
- import { MediaObjectFit } from '../core/MediaObjectFit';
6
- import { ImageSrcDirective } from './imgsrc.directive';
7
- import { toHtmlPictureSources } from './toHtmlSources';
8
- import { getDefaultSrc } from './getDefaultSrc';
9
- import { DeviceServiceBase } from '../core/device.service.base';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "../core/device.service.base";
12
- import * as i2 from "../core/unsubscribe.service";
13
- import * as i3 from "./imgsrc.directive";
14
- import * as i4 from "@angular/common";
15
- import * as i5 from "../core/intersection.component";
16
- export class MarcyImageComponent {
17
- constructor(device, cd, _u, srcDir) {
18
- this.device = device;
19
- this.cd = cd;
20
- this._u = _u;
21
- this.MediaStatus = MediaStatus;
22
- this.MarcyObjectFit = MediaObjectFit;
23
- this.isLoaded = new EventEmitter();
24
- this.sources = [];
25
- this.$status = new BehaviorSubject(MediaStatus.NotSet);
26
- this.defaultSrc = '';
27
- this._objectFit = MediaObjectFit.Original;
28
- console.log('MarcyImageComponent ctor');
29
- if (srcDir === undefined || srcDir === null)
30
- throw new Error(`${MarcyImageComponent.name} should have [imgsrc] directive as source object`);
31
- this.src = srcDir;
32
- // bind src changes
33
- this.src.srcChange
34
- .pipe(this._u.takeUntilDestroy)
35
- .subscribe(this.onSrcChange.bind(this));
36
- cd.detach();
37
- }
38
- ngOnInit() {
39
- // bind loaded event
40
- this.$status
41
- .pipe(this._u.takeUntilDestroy, filter(status => status === MediaStatus.Loaded))
42
- .subscribe(x => this.isLoaded.next());
43
- this.cd.detectChanges();
44
- }
45
- onSrcChange(val) {
46
- console.log('MarcyImageComponent onSrcChange', val);
47
- this.defaultSrc = getDefaultSrc(val)?.url ?? '';
48
- this.sources.splice(0, this.sources.length);
49
- if (val === undefined || val === null || val.sources.length === 0) {
50
- this.$status.next(MediaStatus.NotSet);
51
- this.cd.detectChanges();
52
- return;
53
- }
54
- const newSources = val.sources.flatMap(toHtmlPictureSources);
55
- console.log('MarcyImageComponent newSources', newSources);
56
- this.sources.push(...newSources);
57
- this.$status.next(MediaStatus.NotLoaded);
58
- this.cd.detectChanges();
59
- }
60
- set objectFit(val) {
61
- this._objectFit = val ?? MediaObjectFit.Original;
62
- this.cd.detectChanges();
63
- }
64
- get objectFit() {
65
- return this._objectFit;
66
- }
67
- onLoad() {
68
- this.$status.next(MediaStatus.Loaded);
69
- }
70
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MarcyImageComponent, deps: [{ token: i1.DeviceServiceBase }, { token: i0.ChangeDetectorRef }, { token: i2.UnsubscriberService }, { token: i3.ImageSrcDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: MarcyImageComponent, selector: "bon-image", inputs: { objectFit: "objectFit" }, outputs: { isLoaded: "isLoaded" }, providers: [UnsubscriberService], ngImport: i0, template: "<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", styles: [":host{display:block}.picture-container{overflow:hidden}.picture-container.cover picture,.picture-container.cover bon-intersection,.picture-container.contain picture,.picture-container.contain bon-intersection,.picture-container.knownRatio picture,.picture-container.knownRatio bon-intersection{width:100%;height:100%}.picture-container.cover picture>img,.picture-container.cover bon-intersection>img,.picture-container.contain picture>img,.picture-container.contain bon-intersection>img,.picture-container.knownRatio picture>img,.picture-container.knownRatio bon-intersection>img{height:100%}.picture-container.cover{height:100%}.picture-container.cover picture>img{object-fit:cover}.picture-container.contain{height:100%}.picture-container.contain picture>img{object-fit:contain}.picture-container.knownRatio{position:relative}.picture-container.knownRatio picture{position:absolute}.picture-container.knownRatio picture>img{object-fit:fill}picture{display:block;backface-visibility:hidden}picture>img{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IntersectionComponent, selector: "bon-intersection", inputs: ["session"], outputs: ["intersected"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
72
- }
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MarcyImageComponent, decorators: [{
74
- type: Component,
75
- args: [{ selector: 'bon-image', providers: [UnsubscriberService], template: "<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", styles: [":host{display:block}.picture-container{overflow:hidden}.picture-container.cover picture,.picture-container.cover bon-intersection,.picture-container.contain picture,.picture-container.contain bon-intersection,.picture-container.knownRatio picture,.picture-container.knownRatio bon-intersection{width:100%;height:100%}.picture-container.cover picture>img,.picture-container.cover bon-intersection>img,.picture-container.contain picture>img,.picture-container.contain bon-intersection>img,.picture-container.knownRatio picture>img,.picture-container.knownRatio bon-intersection>img{height:100%}.picture-container.cover{height:100%}.picture-container.cover picture>img{object-fit:cover}.picture-container.contain{height:100%}.picture-container.contain picture>img{object-fit:contain}.picture-container.knownRatio{position:relative}.picture-container.knownRatio picture{position:absolute}.picture-container.knownRatio picture>img{object-fit:fill}picture{display:block;backface-visibility:hidden}picture>img{display:block;width:100%}\n"] }]
76
- }], ctorParameters: () => [{ type: i1.DeviceServiceBase }, { type: i0.ChangeDetectorRef }, { type: i2.UnsubscriberService }, { type: i3.ImageSrcDirective, decorators: [{
77
- type: Optional
78
- }] }], propDecorators: { isLoaded: [{
79
- type: Output
80
- }], objectFit: [{
81
- type: Input
82
- }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyY3ktaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUvc3JjL2xpYi9tYXJjeS1pbWFnZS9tYXJjeS1pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL21hcmN5LWltYWdlL21hcmN5LWltYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7OztBQVFoRSxNQUFNLE9BQU8sbUJBQW1CO0lBZ0I5QixZQUVvQixNQUF5QixFQUN6QixFQUFxQixFQUNwQixFQUF1QixFQUM1QixNQUEwQjtRQUh0QixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNwQixPQUFFLEdBQUYsRUFBRSxDQUFxQjtRQW5CNUIsZ0JBQVcsR0FBRyxXQUFXLENBQUM7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TUFBTTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQXhGVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiwyR0FGbkIsQ0FBQyxtQkFBbUIsQ0FBQywwQkNsQmxDLHE3Q0FpQ0E7OzJGRGJhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxXQUFXLGFBR1YsQ0FBQyxtQkFBbUIsQ0FBQzs7MEJBdUIzQixRQUFRO3lDQWhCRyxRQUFRO3NCQUR2QixNQUFNO2dCQXdFSSxTQUFTO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCAqIGFzIE1Db3JlIGZyb20gJy4uL2dlbmVyYXRlZCc7XHJcblxyXG5pbXBvcnQgeyBVbnN1YnNjcmliZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS91bnN1YnNjcmliZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVkaWFTdGF0dXMgfSBmcm9tICcuLi9jb3JlL01lZGlhU3RhdHVzJztcclxuaW1wb3J0IHsgTWVkaWFPYmplY3RGaXQgfSBmcm9tICcuLi9jb3JlL01lZGlhT2JqZWN0Rml0JztcclxuaW1wb3J0IHsgSW1hZ2VTcmNEaXJlY3RpdmUgfSBmcm9tICcuL2ltZ3NyYy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJSHRtbFBpY3R1cmVTb3VyY2UgfSBmcm9tICcuL0lIdG1sUGljdHVyZVNvdXJjZSc7XHJcbmltcG9ydCB7IHRvSHRtbFBpY3R1cmVTb3VyY2VzIH0gZnJvbSAnLi90b0h0bWxTb3VyY2VzJztcclxuaW1wb3J0IHsgZ2V0RGVmYXVsdFNyYyB9IGZyb20gJy4vZ2V0RGVmYXVsdFNyYyc7XHJcbmltcG9ydCB7IERldmljZVNlcnZpY2VCYXNlIH0gZnJvbSAnLi4vY29yZS9kZXZpY2Uuc2VydmljZS5iYXNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYm9uLWltYWdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWFyY3ktaW1hZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hcmN5LWltYWdlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVW5zdWJzY3JpYmVyU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcmN5SW1hZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyByZWFkb25seSBNZWRpYVN0YXR1cyA9IE1lZGlhU3RhdHVzO1xyXG4gIHB1YmxpYyByZWFkb25seSBNYXJjeU9iamVjdEZpdCA9IE1lZGlhT2JqZWN0Rml0O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgaXNMb2FkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlczogSUh0bWxQaWN0dXJlU291cmNlW10gPSBbXTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5ICRzdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lZGlhU3RhdHVzPihNZWRpYVN0YXR1cy5Ob3RTZXQpO1xyXG5cclxuICBwdWJsaWMgZGVmYXVsdFNyYyA9ICcnO1xyXG5cclxuICBwcml2YXRlIF9vYmplY3RGaXQgPSBNZWRpYU9iamVjdEZpdC5PcmlnaW5hbDtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IHNyYzogSW1hZ2VTcmNEaXJlY3RpdmU7XHJcblxyXG4gIGNvbnN0cnVjdG9yXHJcbiAgICAoXHJcbiAgICAgIHB1YmxpYyByZWFkb25seSBkZXZpY2U6IERldmljZVNlcnZpY2VCYXNlLFxyXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IF91OiBVbnN1YnNjcmliZXJTZXJ2aWNlLFxyXG4gICAgICBAT3B0aW9uYWwoKSBzcmNEaXI/OiBJbWFnZVNyY0RpcmVjdGl2ZVxyXG4gICAgKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ01hcmN5SW1hZ2VDb21wb25lbnQgY3RvcicpO1xyXG5cclxuICAgIGlmIChzcmNEaXIgPT09IHVuZGVmaW5lZCB8fCBzcmNEaXIgPT09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtNYXJjeUltYWdlQ29tcG9uZW50Lm5hbWV9IHNob3VsZCBoYXZlIFtpbWdzcmNdIGRpcmVjdGl2ZSBhcyBzb3VyY2Ugb2JqZWN0YCk7XHJcblxyXG4gICAgdGhpcy5zcmMgPSBzcmNEaXI7XHJcblxyXG4gICAgLy8gYmluZCBzcmMgY2hhbmdlc1xyXG4gICAgdGhpcy5zcmMuc3JjQ2hhbmdlXHJcbiAgICAgIC5waXBlKHRoaXMuX3UudGFrZVVudGlsRGVzdHJveSlcclxuICAgICAgLnN1YnNjcmliZSh0aGlzLm9uU3JjQ2hhbmdlLmJpbmQodGhpcykpXHJcblxyXG4gICAgY2QuZGV0YWNoKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBiaW5kIGxvYWRlZCBldmVudFxyXG4gICAgdGhpcy4kc3RhdHVzXHJcbiAgICAgIC5waXBlXHJcbiAgICAgIChcclxuICAgICAgICB0aGlzLl91LnRha2VVbnRpbERlc3Ryb3ksXHJcbiAgICAgICAgZmlsdGVyKHN0YXR1cyA9PiBzdGF0dXMgPT09IE1lZGlhU3RhdHVzLkxvYWRlZClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHggPT4gdGhpcy5pc0xvYWRlZC5uZXh0KCkpO1xyXG5cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBwcml2YXRlIG9uU3JjQ2hhbmdlKHZhbDogTUNvcmUuSW1hZ2UgfCB1bmRlZmluZWQpIHtcclxuICAgIGNvbnNvbGUubG9nKCdNYXJjeUltYWdlQ29tcG9uZW50IG9uU3JjQ2hhbmdlJywgdmFsKTtcclxuICAgIHRoaXMuZGVmYXVsdFNyYyA9IGdldERlZmF1bHRTcmModmFsKT8udXJsID8/ICcnO1xyXG5cclxuICAgIHRoaXMuc291cmNlcy5zcGxpY2UoMCwgdGhpcy5zb3VyY2VzLmxlbmd0aCk7XHJcblxyXG4gICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gbnVsbCB8fCB2YWwuc291cmNlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy4kc3RhdHVzLm5leHQoTWVkaWFTdGF0dXMuTm90U2V0KTtcclxuXHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3U291cmNlcyA9IHZhbC5zb3VyY2VzLmZsYXRNYXAodG9IdG1sUGljdHVyZVNvdXJjZXMpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdNYXJjeUltYWdlQ29tcG9uZW50IG5ld1NvdXJjZXMnLCBuZXdTb3VyY2VzKTtcclxuXHJcbiAgICB0aGlzLnNvdXJjZXMucHVzaCguLi5uZXdTb3VyY2VzKTtcclxuXHJcbiAgICB0aGlzLiRzdGF0dXMubmV4dChNZWRpYVN0YXR1cy5Ob3RMb2FkZWQpO1xyXG5cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG9iamVjdEZpdCh2YWw6IE1lZGlhT2JqZWN0Rml0IHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9vYmplY3RGaXQgPSB2YWwgPz8gTWVkaWFPYmplY3RGaXQuT3JpZ2luYWw7XHJcblxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG9iamVjdEZpdCgpOiBNZWRpYU9iamVjdEZpdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0Rml0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTG9hZCgpIHtcclxuICAgIHRoaXMuJHN0YXR1cy5uZXh0KE1lZGlhU3RhdHVzLkxvYWRlZCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJzb3VyY2VzLmxlbmd0aCA+IDBcIlxyXG4gICAgIFtjbGFzcy5rbm93blJhdGlvXT1cInNyYy5yYXRpbyA+IDAgJiYgb2JqZWN0Rml0ID09PSBNYXJjeU9iamVjdEZpdC5PcmlnaW5hbFwiXHJcbiAgICAgW2NsYXNzLmNvdmVyXT1cIm9iamVjdEZpdCA9PT0gTWFyY3lPYmplY3RGaXQuQ292ZXJcIlxyXG4gICAgIFtjbGFzcy5jb250YWluXT1cIm9iamVjdEZpdCA9PT0gTWFyY3lPYmplY3RGaXQuQ29udGFpblwiXHJcbiAgICAgW2NsYXNzLmxvYWRlZF09XCIoJHN0YXR1cyB8IGFzeW5jKSA9PT0gTWVkaWFTdGF0dXMuTG9hZGVkXCJcclxuICAgICBjbGFzcz1cInBpY3R1cmUtY29udGFpbmVyXCI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjcGljdHVyZVRlbXBsYXRlPlxyXG4gICAgPHBpY3R1cmU+XHJcbiAgICAgIDxzb3VyY2UgKm5nRm9yPVwibGV0IHNvdXJjZSBvZiBzb3VyY2VzXCJcclxuICAgICAgICAgICAgICBbc3Jjc2V0XT1cInNvdXJjZS5zcmNTZXRcIlxyXG4gICAgICAgICAgICAgIFthdHRyLm1lZGlhXT1cInNvdXJjZS5tZWRpYS5sZW5ndGggPiAwID8gc291cmNlLm1lZGlhIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICBbYXR0ci50eXBlXT1cInNvdXJjZS5taW1lLmxlbmd0aCA+IDAgPyBzb3VyY2UubWltZSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgW2F0dHIuc2l6ZXNdPVwic291cmNlLnNpemVzLmxlbmd0aCA+IDAgPyBzb3VyY2Uuc2l6ZXMgOiB1bmRlZmluZWRcIiAvPlxyXG5cclxuICAgICAgPGltZyBbc3JjXT1cImRlZmF1bHRTcmNcIiAobG9hZCk9XCJvbkxvYWQoKVwiIC8+XHJcbiAgICA8L3BpY3R1cmU+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5vc2NyaXB0ICpuZ0lmPVwiZGV2aWNlLmlzU1NSXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGljdHVyZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9ub3NjcmlwdD5cclxuXHJcbiAgPGJvbi1pbnRlcnNlY3Rpb24gI2ludGVyc2VjdGlvblpvbmUgKm5nSWY9XCIhZGV2aWNlLmlzU1NSXCIgW3Nlc3Npb25dPVwic3JjXCIgKGludGVyc2VjdGVkKT1cImNkLmRldGVjdENoYW5nZXMoKVwiPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnRlcnNlY3Rpb25ab25lLmludGVyc2VjdGVkT25jZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGljdHVyZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPC9ib24taW50ZXJzZWN0aW9uPlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwic3JjLnJhdGlvID4gMCAmJiBvYmplY3RGaXQgPT09IE1hcmN5T2JqZWN0Rml0Lk9yaWdpbmFsXCIgW3N0eWxlLnBhZGRpbmctdG9wXT1cIjEwMCAvIHNyYy5yYXRpbyArJyUnXCI+PC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,16 +0,0 @@
1
- import * as utils from '../core/utils';
2
- export function toHtmlPictureSources(imageSource) {
3
- const sizes = utils.generateSizesString(imageSource.sizes);
4
- const groupedByMime = utils.groupBy(imageSource.srcSet, x => x.mimeType);
5
- const simpleSources = [];
6
- for (const mime in groupedByMime) {
7
- const fileSrcs = groupedByMime[mime].sort(utils.ascendingT(x => x.meta.width));
8
- const srcSet = fileSrcs
9
- .map(x => `${x.url} ${x.meta.width}w`)
10
- .join(',');
11
- const source = { mime, sizes, srcSet, media: imageSource.mediaQuery };
12
- simpleSources.push(source);
13
- }
14
- return simpleSources;
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9IdG1sU291cmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYm9ubmllL3NyYy9saWIvbWFyY3ktaW1hZ2UvdG9IdG1sU291cmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssS0FBSyxNQUFNLGVBQWUsQ0FBQztBQUl2QyxNQUFNLFVBQVUsb0JBQW9CLENBQUMsV0FBOEI7SUFDakUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFekUsTUFBTSxhQUFhLEdBQXlCLEVBQUUsQ0FBQztJQUUvQyxLQUFLLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRTtRQUNoQyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFL0UsTUFBTSxNQUFNLEdBQUcsUUFBUTthQUNwQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQzthQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFYixNQUFNLE1BQU0sR0FBdUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTFGLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDNUI7SUFFRCxPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgTUNvcmUgZnJvbSAnLi4vZ2VuZXJhdGVkJztcclxuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi4vY29yZS91dGlscyc7XHJcblxyXG5pbXBvcnQgeyBJSHRtbFBpY3R1cmVTb3VyY2UgfSBmcm9tICcuL0lIdG1sUGljdHVyZVNvdXJjZSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdG9IdG1sUGljdHVyZVNvdXJjZXMoaW1hZ2VTb3VyY2U6IE1Db3JlLkltYWdlU291cmNlKTogSUh0bWxQaWN0dXJlU291cmNlW10ge1xyXG4gIGNvbnN0IHNpemVzID0gdXRpbHMuZ2VuZXJhdGVTaXplc1N0cmluZyhpbWFnZVNvdXJjZS5zaXplcyk7XHJcbiAgY29uc3QgZ3JvdXBlZEJ5TWltZSA9IHV0aWxzLmdyb3VwQnkoaW1hZ2VTb3VyY2Uuc3JjU2V0LCB4ID0+IHgubWltZVR5cGUpO1xyXG5cclxuICBjb25zdCBzaW1wbGVTb3VyY2VzOiBJSHRtbFBpY3R1cmVTb3VyY2VbXSA9IFtdO1xyXG5cclxuICBmb3IgKGNvbnN0IG1pbWUgaW4gZ3JvdXBlZEJ5TWltZSkge1xyXG4gICAgY29uc3QgZmlsZVNyY3MgPSBncm91cGVkQnlNaW1lW21pbWVdLnNvcnQodXRpbHMuYXNjZW5kaW5nVCh4ID0+IHgubWV0YS53aWR0aCkpO1xyXG5cclxuICAgIGNvbnN0IHNyY1NldCA9IGZpbGVTcmNzXHJcbiAgICAgIC5tYXAoeCA9PiBgJHt4LnVybH0gJHt4Lm1ldGEud2lkdGh9d2ApXHJcbiAgICAgIC5qb2luKCcsJyk7XHJcblxyXG4gICAgY29uc3Qgc291cmNlOiBJSHRtbFBpY3R1cmVTb3VyY2UgPSB7IG1pbWUsIHNpemVzLCBzcmNTZXQsIG1lZGlhOiBpbWFnZVNvdXJjZS5tZWRpYVF1ZXJ5IH07XHJcblxyXG4gICAgc2ltcGxlU291cmNlcy5wdXNoKHNvdXJjZSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gc2ltcGxlU291cmNlcztcclxufVxyXG5cclxuIl19
@@ -1,2 +0,0 @@
1
- export * from './marcy-media.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL21hcmN5LW1lZGlhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21hcmN5LW1lZGlhLmNvbXBvbmVudCc7XHJcbiJdfQ==
@@ -1,59 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';
2
- import { UnsubscriberService } from '../core/unsubscribe.service';
3
- import { MediaObjectFit } from '../core/MediaObjectFit';
4
- import { DeviceServiceBase } from '../core/device.service.base';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../core/device.service.base";
7
- import * as i2 from "../core/unsubscribe.service";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "../marcy-image/marcy-image.component";
10
- import * as i5 from "../marcy-video/marcy-video.component";
11
- import * as i6 from "../marcy-image/imgsrc.directive";
12
- import * as i7 from "../marcy-video/vidsrc.directive";
13
- export class MarcyMediaComponent {
14
- constructor(device, cd, _u) {
15
- this.device = device;
16
- this.cd = cd;
17
- this._u = _u;
18
- this.MarcyObjectFit = MediaObjectFit;
19
- this.isLoaded = new EventEmitter();
20
- this._objectFit = MediaObjectFit.Original;
21
- console.log('MarcyMediaComponent ctor');
22
- cd.detach();
23
- }
24
- ngOnInit() {
25
- console.log('MarcyMediaComponent ngOnInit');
26
- this.cd.detectChanges();
27
- }
28
- get src() {
29
- return this._src;
30
- }
31
- set src(val) {
32
- console.log('set data', val);
33
- this._src = val;
34
- this.cd.detectChanges();
35
- }
36
- set objectFit(val) {
37
- this._objectFit = val ?? MediaObjectFit.Original;
38
- this.cd.detectChanges();
39
- }
40
- get objectFit() {
41
- return this._objectFit;
42
- }
43
- onLoad() {
44
- this.isLoaded.next();
45
- }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MarcyMediaComponent, deps: [{ token: i1.DeviceServiceBase }, { token: i0.ChangeDetectorRef }, { token: i2.UnsubscriberService }], target: i0.ɵɵFactoryTarget.Component }); }
47
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: MarcyMediaComponent, selector: "bon-media", inputs: { src: "src", objectFit: "objectFit" }, outputs: { isLoaded: "isLoaded" }, providers: [UnsubscriberService], ngImport: i0, template: "<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", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MarcyImageComponent, selector: "bon-image", inputs: ["objectFit"], outputs: ["isLoaded"] }, { kind: "component", type: i5.MarcyVideoComponent, selector: "bon-video", inputs: ["objectFit"], outputs: ["isLoaded"] }, { kind: "directive", type: i6.ImageSrcDirective, selector: "[imgsrc]", inputs: ["imgsrc"] }, { kind: "directive", type: i7.VideoSrcDirective, selector: "[vidsrc]", inputs: ["vidsrc"] }] }); }
48
- }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MarcyMediaComponent, decorators: [{
50
- type: Component,
51
- args: [{ selector: 'bon-media', providers: [UnsubscriberService], template: "<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", styles: [":host{display:block}\n"] }]
52
- }], ctorParameters: () => [{ type: i1.DeviceServiceBase }, { type: i0.ChangeDetectorRef }, { type: i2.UnsubscriberService }], propDecorators: { isLoaded: [{
53
- type: Output
54
- }], src: [{
55
- type: Input
56
- }], objectFit: [{
57
- type: Input
58
- }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyY3ktbWVkaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUvc3JjL2xpYi9tYXJjeS1tZWRpYS9tYXJjeS1tZWRpYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL21hcmN5LW1lZGlhL21hcmN5LW1lZGlhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7QUFRaEUsTUFBTSxPQUFPLG1CQUFtQjtJQVM1QixZQUV3QixNQUF5QixFQUN6QixFQUFxQixFQUNwQixFQUF1QjtRQUZ4QixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNwQixPQUFFLEdBQUYsRUFBRSxDQUFxQjtRQVpoQyxtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUdoQyxhQUFRLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUQsZUFBVSxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFVekMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRXhDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBR00sUUFBUTtRQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFHRCxJQUFXLEdBQUc7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQ1csR0FBRyxDQUFDLEdBQTBDO1FBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBRWhCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQ1csU0FBUyxDQUFDLEdBQStCO1FBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFFakQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0F2RFEsbUJBQW1CO2tHQUFuQixtQkFBbUIsdUhBRmpCLENBQUMsbUJBQW1CLENBQUMsMEJDWnBDLDhWQVNBOzsyRkRLYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0ksV0FBVyxhQUdWLENBQUMsbUJBQW1CLENBQUM7d0pBTWhCLFFBQVE7c0JBRHZCLE1BQU07Z0JBK0JJLEdBQUc7c0JBRGIsS0FBSztnQkFVSyxTQUFTO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCAqIGFzIE1Db3JlIGZyb20gJy4uL2dlbmVyYXRlZCc7XHJcblxyXG5pbXBvcnQgeyBVbnN1YnNjcmliZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS91bnN1YnNjcmliZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVkaWFPYmplY3RGaXQgfSBmcm9tICcuLi9jb3JlL01lZGlhT2JqZWN0Rml0JztcclxuaW1wb3J0IHsgRGV2aWNlU2VydmljZUJhc2UgfSBmcm9tICcuLi9jb3JlL2RldmljZS5zZXJ2aWNlLmJhc2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2Jvbi1tZWRpYScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFyY3ktbWVkaWEuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbWFyY3ktbWVkaWEuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1Vuc3Vic2NyaWJlclNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXJjeU1lZGlhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIHB1YmxpYyByZWFkb25seSBNYXJjeU9iamVjdEZpdCA9IE1lZGlhT2JqZWN0Rml0O1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHJlYWRvbmx5IGlzTG9hZGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfb2JqZWN0Rml0ID0gTWVkaWFPYmplY3RGaXQuT3JpZ2luYWw7XHJcbiAgICBwcml2YXRlIF9zcmM/OiBNQ29yZS5WaWRlbyB8IE1Db3JlLkltYWdlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yXHJcbiAgICAgICAgKFxyXG4gICAgICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZGV2aWNlOiBEZXZpY2VTZXJ2aWNlQmFzZSxcclxuICAgICAgICAgICAgcHVibGljIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdTogVW5zdWJzY3JpYmVyU2VydmljZVxyXG4gICAgICAgICkge1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnTWFyY3lNZWRpYUNvbXBvbmVudCBjdG9yJyk7XHJcblxyXG4gICAgICAgIGNkLmRldGFjaCgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ01hcmN5TWVkaWFDb21wb25lbnQgbmdPbkluaXQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHB1YmxpYyBnZXQgc3JjKCk6IE1Db3JlLlZpZGVvIHwgTUNvcmUuSW1hZ2UgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zcmM7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgc3JjKHZhbDogTUNvcmUuVmlkZW8gfCBNQ29yZS5JbWFnZSB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdzZXQgZGF0YScsIHZhbCk7XHJcblxyXG4gICAgICAgIHRoaXMuX3NyYyA9IHZhbDtcclxuXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgb2JqZWN0Rml0KHZhbDogTWVkaWFPYmplY3RGaXQgfCB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLl9vYmplY3RGaXQgPSB2YWwgPz8gTWVkaWFPYmplY3RGaXQuT3JpZ2luYWw7XHJcblxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgb2JqZWN0Rml0KCk6IE1lZGlhT2JqZWN0Rml0IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0Rml0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkxvYWQoKSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRlZC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxib24taW1hZ2UgKm5nSWY9XCJzcmMgJiYgc3JjLnR5cGU9PT0naW1hZ2UnXCJcclxuICAgICAgICAgICBbaW1nc3JjXT1cInNyY1wiXHJcbiAgICAgICAgICAgW29iamVjdEZpdF09XCJvYmplY3RGaXRcIlxyXG4gICAgICAgICAgIChpc0xvYWRlZCk9XCJvbkxvYWQoKVwiPjwvYm9uLWltYWdlPlxyXG5cclxuPGJvbi12aWRlbyAqbmdJZj1cInNyYyAmJiBzcmMudHlwZT09PSd2aWRlbydcIlxyXG4gICAgICAgICAgIFt2aWRzcmNdPVwic3JjXCJcclxuICAgICAgICAgICBbb2JqZWN0Rml0XT1cIm9iamVjdEZpdFwiXHJcbiAgICAgICAgICAgKGlzTG9hZGVkKT1cIm9uTG9hZCgpXCI+PC9ib24tdmlkZW8+XHJcbiJdfQ==
@@ -1,3 +0,0 @@
1
- export * from './marcy-video.component';
2
- export * from './vidsrc.directive';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL21hcmN5LXZpZGVvL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWFyY3ktdmlkZW8uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi92aWRzcmMuZGlyZWN0aXZlJztcclxuIl19
@@ -1,159 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, ChangeDetectorRef, Optional, ElementRef, ViewChild } from '@angular/core';
2
- import { BehaviorSubject, filter } from 'rxjs';
3
- import { UnsubscriberService } from '../core/unsubscribe.service';
4
- import { MediaStatus } from '../core/MediaStatus';
5
- import { MediaObjectFit } from '../core/MediaObjectFit';
6
- import { DeviceServiceBase } from '../core/device.service.base';
7
- import { VideoSrcDirective } from './vidsrc.directive';
8
- import { matchesMediaQuery, descendingT } from '../core/utils';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "../core/device.service.base";
11
- import * as i2 from "../core/unsubscribe.service";
12
- import * as i3 from "./vidsrc.directive";
13
- import * as i4 from "@angular/common";
14
- import * as i5 from "../core/intersection.component";
15
- function isWebM(src) {
16
- return src.mimeType === 'video/webm';
17
- }
18
- export class MarcyVideoComponent {
19
- constructor(device, cd, _u, srcDir) {
20
- this.device = device;
21
- this.cd = cd;
22
- this._u = _u;
23
- this.MediaStatus = MediaStatus;
24
- this.MarcyObjectFit = MediaObjectFit;
25
- this.isLoaded = new EventEmitter();
26
- this.$status = new BehaviorSubject(MediaStatus.NotSet);
27
- this._objectFit = MediaObjectFit.Original;
28
- console.log('MarcyVideoComponent ctor');
29
- if (srcDir === undefined || srcDir === null)
30
- throw new Error(`${MarcyVideoComponent.name} should have [vidsrc] directive as source object`);
31
- this.src = srcDir;
32
- cd.detach();
33
- }
34
- ngOnInit() {
35
- console.log('MarcyVideoComponent ngOnInit');
36
- // bind loaded event
37
- this.$status
38
- .pipe(this._u.takeUntilDestroy, filter(status => status === MediaStatus.Loaded))
39
- .subscribe(() => this.isLoaded.next());
40
- this.cd.detectChanges();
41
- }
42
- ngAfterViewInit() {
43
- console.log('MarcyVideoComponent ngAfterViewInit');
44
- // bind src changes
45
- this.src.srcChange
46
- .pipe(this._u.takeUntilDestroy)
47
- .subscribe((val) => {
48
- console.log('MarcyVideoComponent onSrcChange', val);
49
- this.updateSources();
50
- // resubscribe because its updated with src
51
- this.subscribeToMediaQueryChange();
52
- });
53
- this.updateSources();
54
- // initial, for src added before init
55
- this.subscribeToMediaQueryChange();
56
- }
57
- subscribeToMediaQueryChange() {
58
- this.src
59
- .watchMediaQueries()
60
- .subscribe(() => {
61
- console.log('MarcyVideoComponent watchMediaQueries');
62
- this.updateSources();
63
- });
64
- }
65
- updateSources() {
66
- console.log('MarcyVideoComponent updateSources');
67
- this.source = this.findMoreSuitableSource();
68
- console.log('MarcyVideoComponent new source', this.source);
69
- if (this.$status.value === MediaStatus.NotSet && this.source === undefined) {
70
- return;
71
- }
72
- if (this.source === undefined) {
73
- this.$status.next(MediaStatus.NotSet);
74
- this.cd.detectChanges();
75
- return;
76
- }
77
- this.$status.next(MediaStatus.NotLoaded);
78
- this.cd.detectChanges();
79
- }
80
- set objectFit(val) {
81
- this._objectFit = val ?? MediaObjectFit.Original;
82
- this.cd.detectChanges();
83
- }
84
- get objectFit() {
85
- return this._objectFit;
86
- }
87
- onLoad() {
88
- this.$status.next(MediaStatus.Loaded);
89
- }
90
- findMoreSuitableSource() {
91
- if (this.videoRef === undefined) {
92
- console.log('skipping findMoreSuitableSource. videoRef is empty still');
93
- return;
94
- }
95
- const videoSources = this.src.data?.sources ?? [];
96
- const currentVideoWidth = this.videoRef.nativeElement.clientWidth;
97
- const realPixelsVideoWidth = this.device.devicePixelRatio * currentVideoWidth;
98
- console.log(`MarcyVideoComponent currentVideoWidth ${currentVideoWidth}`);
99
- console.log(`MarcyVideoComponent realPixelsVideoWidth ${realPixelsVideoWidth}`);
100
- for (let i = 0; i < videoSources.length; i++) {
101
- const videoSource = videoSources[i];
102
- if (!matchesMediaQuery(videoSource.mediaQuery))
103
- continue;
104
- // SSR
105
- if (typeof this.videoRef.nativeElement?.canPlayType !== 'function') {
106
- // return first mp4, because all players can play them
107
- const mp4Srcs = videoSource
108
- .srcSet
109
- .filter(x => x.mimeType === 'video/mp4')
110
- .sort(descendingT(x => x.meta.width)); // bigest video
111
- // console.log(`ssr found video ${mp4Srcs[0].url}`)
112
- // element or undefined
113
- return mp4Srcs[0];
114
- }
115
- const fileSrcs = videoSource
116
- .srcSet
117
- .filter(x => this.videoRef.nativeElement.canPlayType(x.mimeType))
118
- .sort((a, b) => {
119
- if (a.meta.width === b.meta.width) {
120
- return isWebM(a) ? -1 : 1; // if same width prefer webM
121
- }
122
- // else prefer smallest
123
- return a.meta.width <= b.meta.width ? -1 : 1;
124
- }); // smallest video
125
- if (fileSrcs.length === 0)
126
- continue;
127
- // console.log('sources ', fileSrcs);
128
- let bestSrc = fileSrcs[0];
129
- for (let i = 1; i < fileSrcs.length; i++) {
130
- const fileSrc = fileSrcs[i];
131
- const currentDiff = fileSrc.meta.width - realPixelsVideoWidth;
132
- // console.log(`browser video currentDiff ${currentDiff}`)
133
- // too big video source width
134
- if (currentDiff > 0)
135
- break;
136
- bestSrc = fileSrc;
137
- }
138
- console.log(`browser found suitable video ${bestSrc.url}`);
139
- return bestSrc;
140
- }
141
- return undefined;
142
- }
143
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MarcyVideoComponent, deps: [{ token: i1.DeviceServiceBase }, { token: i0.ChangeDetectorRef }, { token: i2.UnsubscriberService }, { token: i3.VideoSrcDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
144
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: MarcyVideoComponent, selector: "bon-video", inputs: { objectFit: "objectFit" }, outputs: { isLoaded: "isLoaded" }, providers: [UnsubscriberService], viewQueries: [{ propertyName: "videoRef", first: true, predicate: ["video"], descendants: true }], ngImport: i0, template: "<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", styles: [":host{display:block}.video-container{background-color:#000;overflow:hidden}.video-container.cover video,.video-container.cover bon-intersection,.video-container.contain video,.video-container.contain bon-intersection,.video-container.knownRatio video,.video-container.knownRatio bon-intersection{width:100%;height:100%}.video-container.cover{height:100%}.video-container.cover video{object-fit:cover}.video-container.contain{height:100%}.video-container.contain video{object-fit:contain}.video-container.knownRatio{position:relative}.video-container.knownRatio video{position:absolute;object-fit:fill}video{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IntersectionComponent, selector: "bon-intersection", inputs: ["session"], outputs: ["intersected"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
145
- }
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MarcyVideoComponent, decorators: [{
147
- type: Component,
148
- args: [{ selector: 'bon-video', providers: [UnsubscriberService], template: "<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", styles: [":host{display:block}.video-container{background-color:#000;overflow:hidden}.video-container.cover video,.video-container.cover bon-intersection,.video-container.contain video,.video-container.contain bon-intersection,.video-container.knownRatio video,.video-container.knownRatio bon-intersection{width:100%;height:100%}.video-container.cover{height:100%}.video-container.cover video{object-fit:cover}.video-container.contain{height:100%}.video-container.contain video{object-fit:contain}.video-container.knownRatio{position:relative}.video-container.knownRatio video{position:absolute;object-fit:fill}video{display:block;width:100%}\n"] }]
149
- }], ctorParameters: () => [{ type: i1.DeviceServiceBase }, { type: i0.ChangeDetectorRef }, { type: i2.UnsubscriberService }, { type: i3.VideoSrcDirective, decorators: [{
150
- type: Optional
151
- }] }], propDecorators: { videoRef: [{
152
- type: ViewChild,
153
- args: ['video']
154
- }], isLoaded: [{
155
- type: Output
156
- }], objectFit: [{
157
- type: Input
158
- }] } });
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==
@@ -1,20 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { SrcBaseDirective } from '../core/src.directive';
3
- import * as i0 from "@angular/core";
4
- export class VideoSrcDirective extends SrcBaseDirective {
5
- set vidsrc(value) {
6
- this.data = value;
7
- console.log('set vidsrc', value);
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: VideoSrcDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: VideoSrcDirective, selector: "[vidsrc]", inputs: { vidsrc: "vidsrc" }, usesInheritance: true, ngImport: i0 }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: VideoSrcDirective, decorators: [{
13
- type: Directive,
14
- args: [{
15
- selector: '[vidsrc]'
16
- }]
17
- }], propDecorators: { vidsrc: [{
18
- type: Input
19
- }] } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkc3JjLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYm9ubmllL3NyYy9saWIvbWFyY3ktdmlkZW8vdmlkc3JjLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUl6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFLekQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGdCQUE2QjtJQUVoRSxJQUNXLE1BQU0sQ0FBQyxLQUE4QjtRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUVsQixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDOzhHQVBRLGlCQUFpQjtrR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxVQUFVO2lCQUN2Qjs4QkFJYyxNQUFNO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgKiBhcyBNQ29yZSBmcm9tICcuLi9nZW5lcmF0ZWQnO1xyXG5cclxuaW1wb3J0IHsgU3JjQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2NvcmUvc3JjLmRpcmVjdGl2ZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3ZpZHNyY10nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaWRlb1NyY0RpcmVjdGl2ZSBleHRlbmRzIFNyY0Jhc2VEaXJlY3RpdmU8TUNvcmUuVmlkZW8+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCB2aWRzcmModmFsdWU6IE1Db3JlLlZpZGVvIHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdzZXQgdmlkc3JjJywgdmFsdWUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,10 +0,0 @@
1
- export class BoneMap extends Map {
2
- getRequired(key) {
3
- const value = this.get(key);
4
- if (value === undefined || value === null) {
5
- throw Error(`BoneMap doesn't contain type for key = ${key}`);
6
- }
7
- return value;
8
- }
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9uZU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYm9ubmllL3NyYy9saWIvc2tlbGV0b24vQm9uZU1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8sT0FBUSxTQUFRLEdBQWlDO0lBRXJELFdBQVcsQ0FBQyxHQUFXO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDekMsTUFBTSxLQUFLLENBQUMsMENBQTBDLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDOUQ7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBJQm9uZUNvbXBvbmVudCB9IGZyb20gXCIuL0lCb25lQ29tcG9uZW50XCI7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEJvbmVNYXAgZXh0ZW5kcyBNYXA8c3RyaW5nLCBUeXBlPElCb25lQ29tcG9uZW50Pj5cclxue1xyXG4gIHB1YmxpYyBnZXRSZXF1aXJlZChrZXk6IHN0cmluZyk6IFR5cGU8SUJvbmVDb21wb25lbnQ+IHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoa2V5KTtcclxuXHJcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICB0aHJvdyBFcnJvcihgQm9uZU1hcCBkb2Vzbid0IGNvbnRhaW4gdHlwZSBmb3Iga2V5ID0gJHtrZXl9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUJvbmVDb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL3NrZWxldG9uL0lCb25lQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb25lRGlyZWN0aXZlIH0gZnJvbSBcIi4vYm9uZS5kaXJlY3RpdmVcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUJvbmVDb21wb25lbnQge1xyXG4gIGJkOiBCb25lRGlyZWN0aXZlO1xyXG59XHJcbiJdfQ==
@@ -1,41 +0,0 @@
1
- import { ChangeDetectorRef, Directive } from '@angular/core';
2
- import { UnsubscriberService } from '../core/unsubscribe.service';
3
- import { LocalizeServiceBase } from '../localization/LocalizeServiceBase';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../core/unsubscribe.service";
6
- import * as i2 from "../localization/LocalizeServiceBase";
7
- export class BoneDirective {
8
- constructor(cd, _u, localizationService) {
9
- this.cd = cd;
10
- this._u = _u;
11
- this.localizationService = localizationService;
12
- this.cd.detach();
13
- }
14
- ngOnInit() {
15
- this.localizationService.locale$
16
- .pipe(this._u.takeUntilDestroy)
17
- .subscribe(() => {
18
- // need to detect changes in our detached components
19
- this.cd.detectChanges();
20
- });
21
- }
22
- set bone(value) {
23
- this._bone = value;
24
- this.cd.detectChanges();
25
- }
26
- get bone() {
27
- if (this._bone === undefined || this._bone === null)
28
- throw new Error('The property "bone" should be set at least once. For example in skeleton');
29
- return this._bone;
30
- }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BoneDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.UnsubscriberService }, { token: i2.LocalizeServiceBase }], target: i0.ɵɵFactoryTarget.Directive }); }
32
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: BoneDirective, isStandalone: true, selector: "[bonBoneDir]", ngImport: i0 }); }
33
- }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BoneDirective, decorators: [{
35
- type: Directive,
36
- args: [{
37
- selector: '[bonBoneDir]',
38
- standalone: true
39
- }]
40
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.UnsubscriberService }, { type: i2.LocalizeServiceBase }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9uZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL3NrZWxldG9uL2JvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7QUFNMUUsTUFBTSxPQUFPLGFBQWE7SUFHeEIsWUFBNkIsRUFBcUIsRUFDL0IsRUFBdUIsRUFDdkIsbUJBQXdDO1FBRjlCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQy9CLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBQ3ZCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDekQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPO2FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2FBQzlCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxvREFBb0Q7WUFDcEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxJQUFXLElBQUksQ0FBQyxLQUFRO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJO1lBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMsMEVBQTBFLENBQUMsQ0FBQztRQUU5RixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzs4R0E3QlUsYUFBYTtrR0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQm9uZSB9IGZyb20gJy4uL2dlbmVyYXRlZCc7XHJcbmltcG9ydCB7IFVuc3Vic2NyaWJlclNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3Vuc3Vic2NyaWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVNlcnZpY2VCYXNlIH0gZnJvbSAnLi4vbG9jYWxpemF0aW9uL0xvY2FsaXplU2VydmljZUJhc2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYm9uQm9uZURpcl0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEJvbmVEaXJlY3RpdmU8VCBleHRlbmRzIEJvbmUgPSBCb25lPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBfYm9uZT86IFQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdTogVW5zdWJzY3JpYmVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemVTZXJ2aWNlQmFzZSkge1xyXG4gICAgdGhpcy5jZC5kZXRhY2goKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5sb2NhbGUkXHJcbiAgICAgIC5waXBlKHRoaXMuX3UudGFrZVVudGlsRGVzdHJveSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gbmVlZCB0byBkZXRlY3QgY2hhbmdlcyBpbiBvdXIgZGV0YWNoZWQgY29tcG9uZW50c1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBib25lKHZhbHVlOiBUKSB7XHJcbiAgICB0aGlzLl9ib25lID0gdmFsdWU7XHJcblxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGJvbmUoKTogVCB7XHJcbiAgICBpZiAodGhpcy5fYm9uZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX2JvbmUgPT09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHByb3BlcnR5IFwiYm9uZVwiIHNob3VsZCBiZSBzZXQgYXQgbGVhc3Qgb25jZS4gRm9yIGV4YW1wbGUgaW4gc2tlbGV0b24nKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fYm9uZTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,7 +0,0 @@
1
- export * from './bone.directive';
2
- export * from './IBoneComponent';
3
- export * from './skeleton-anchor.directive';
4
- export * from './skeleton.component';
5
- export * from './unknown-bone.component';
6
- export * from './BoneMap';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL3NrZWxldG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYm9uZS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL0lCb25lQ29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9za2VsZXRvbi1hbmNob3IuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9za2VsZXRvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Vua25vd24tYm9uZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL0JvbmVNYXAnO1xyXG5cclxuXHJcblxyXG4iXX0=
@@ -1,17 +0,0 @@
1
- import { Directive, ViewContainerRef } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class SkeletonAnchorDirective {
4
- constructor(viewContainerRef) {
5
- this.viewContainerRef = viewContainerRef;
6
- }
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SkeletonAnchorDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
8
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: SkeletonAnchorDirective, isStandalone: true, selector: "[bonSkeletonAnchor]", ngImport: i0 }); }
9
- }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SkeletonAnchorDirective, decorators: [{
11
- type: Directive,
12
- args: [{
13
- selector: '[bonSkeletonAnchor]',
14
- standalone: true
15
- }]
16
- }], ctorParameters: () => [{ type: i0.ViewContainerRef }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24tYW5jaG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYm9ubmllL3NyYy9saWIvc2tlbGV0b24vc2tlbGV0b24tYW5jaG9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU01RCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLFlBQW1CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUksQ0FBQzs4R0FEL0MsdUJBQXVCO2tHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tib25Ta2VsZXRvbkFuY2hvcl0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFNrZWxldG9uQW5jaG9yRGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikgeyB9XHJcbn1cclxuIl19
@@ -1,53 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChild } from '@angular/core';
2
- import { SkeletonAnchorDirective } from './skeleton-anchor.directive';
3
- import { UnknownBoneComponent } from './unknown-bone.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./skeleton-anchor.directive";
6
- export class SkeletonComponent {
7
- constructor(cd) {
8
- this.cd = cd;
9
- this._bones = [];
10
- this.iniailized = false;
11
- }
12
- ngOnInit() {
13
- this.iniailized = true;
14
- this.fillComponentFromBones();
15
- }
16
- set bones(newValue) {
17
- this._bones.splice(0, this._bones.length);
18
- this._bones.push(...newValue ?? []);
19
- this.fillComponentFromBones();
20
- }
21
- fillComponentFromBones() {
22
- if (this.iniailized === false)
23
- return;
24
- const viewContainerRef = this.skeletonAnchor.viewContainerRef;
25
- viewContainerRef.clear();
26
- if (this.map === undefined || this.map === null)
27
- throw new Error('add type map with input: [map]="..."');
28
- for (const bone of this._bones) {
29
- let componentType = this.map.get(bone.type);
30
- if (componentType === undefined || componentType === null) {
31
- console.warn(`Mapping type for ${bone.type} not found`);
32
- componentType = UnknownBoneComponent;
33
- }
34
- const boneComponentRef = viewContainerRef.createComponent(componentType);
35
- boneComponentRef.instance.bd.bone = bone;
36
- }
37
- }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SkeletonComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: SkeletonComponent, selector: "bon-skeleton", inputs: { map: "map", bones: "bones" }, viewQueries: [{ propertyName: "skeletonAnchor", first: true, predicate: SkeletonAnchorDirective, descendants: true, static: true }], ngImport: i0, template: "<ng-template bonSkeletonAnchor></ng-template>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.SkeletonAnchorDirective, selector: "[bonSkeletonAnchor]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40
- }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SkeletonComponent, decorators: [{
42
- type: Component,
43
- args: [{ selector: 'bon-skeleton', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template bonSkeletonAnchor></ng-template>\r\n", styles: [":host{display:block}\n"] }]
44
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { skeletonAnchor: [{
45
- type: ViewChild,
46
- args: [SkeletonAnchorDirective, { static: true }]
47
- }], map: [{
48
- type: Input,
49
- args: [{ required: true }]
50
- }], bones: [{
51
- type: Input
52
- }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ib25uaWUvc3JjL2xpYi9za2VsZXRvbi9za2VsZXRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Jvbm5pZS9zcmMvbGliL3NrZWxldG9uL3NrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFnQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQVFoRSxNQUFNLE9BQU8saUJBQWlCO0lBVzVCLFlBQW9CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBSnhCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFFN0IsZUFBVSxHQUFHLEtBQUssQ0FBQztJQUczQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUNXLEtBQUssQ0FBQyxRQUE0QjtRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLO1lBQzNCLE9BQU87UUFFVCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUM7UUFDOUQsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFekIsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUk7WUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBRTFELEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM5QixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFNUMsSUFBSSxhQUFhLEtBQUssU0FBUyxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pELE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDO2dCQUN4RCxhQUFhLEdBQUcsb0JBQW9CLENBQUM7YUFDdEM7WUFFRCxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUV6RSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDMUM7SUFDSCxDQUFDOzhHQWpEVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw0SUFDakIsdUJBQXVCLDhEQ2JwQyxtREFDQTs7MkZEV2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTTtzRkFJeEMsY0FBYztzQkFEcEIsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTdDLEdBQUc7c0JBRFQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBZ0JkLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBUeXBlLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2tlbGV0b25BbmNob3JEaXJlY3RpdmUgfSBmcm9tICcuL3NrZWxldG9uLWFuY2hvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJQm9uZUNvbXBvbmVudCB9IGZyb20gXCIuL0lCb25lQ29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEJvbmUgfSBmcm9tICcuLi9nZW5lcmF0ZWQnO1xyXG5pbXBvcnQgeyBVbmtub3duQm9uZUNvbXBvbmVudCB9IGZyb20gJy4vdW5rbm93bi1ib25lLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Jvbi1za2VsZXRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NrZWxldG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9za2VsZXRvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTa2VsZXRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChTa2VsZXRvbkFuY2hvckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwdWJsaWMgc2tlbGV0b25BbmNob3IhOiBTa2VsZXRvbkFuY2hvckRpcmVjdGl2ZTtcclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICBwdWJsaWMgbWFwPzogTWFwPHN0cmluZywgVHlwZTxJQm9uZUNvbXBvbmVudD4+O1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9ib25lczogQm9uZVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgaW5pYWlsaXplZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaWFpbGl6ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5maWxsQ29tcG9uZW50RnJvbUJvbmVzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgYm9uZXMobmV3VmFsdWU6IEJvbmVbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fYm9uZXMuc3BsaWNlKDAsIHRoaXMuX2JvbmVzLmxlbmd0aCk7XHJcbiAgICB0aGlzLl9ib25lcy5wdXNoKC4uLm5ld1ZhbHVlID8/IFtdKTtcclxuXHJcbiAgICB0aGlzLmZpbGxDb21wb25lbnRGcm9tQm9uZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsbENvbXBvbmVudEZyb21Cb25lcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmluaWFpbGl6ZWQgPT09IGZhbHNlKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IHRoaXMuc2tlbGV0b25BbmNob3Iudmlld0NvbnRhaW5lclJlZjtcclxuICAgIHZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcclxuXHJcbiAgICBpZiAodGhpcy5tYXAgPT09IHVuZGVmaW5lZCB8fCB0aGlzLm1hcCA9PT0gbnVsbClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhZGQgdHlwZSBtYXAgd2l0aCBpbnB1dDogW21hcF09XCIuLi5cIicpO1xyXG5cclxuICAgIGZvciAoY29uc3QgYm9uZSBvZiB0aGlzLl9ib25lcykge1xyXG4gICAgICBsZXQgY29tcG9uZW50VHlwZSA9IHRoaXMubWFwLmdldChib25lLnR5cGUpO1xyXG5cclxuICAgICAgaWYgKGNvbXBvbmVudFR5cGUgPT09IHVuZGVmaW5lZCB8fCBjb21wb25lbnRUeXBlID09PSBudWxsKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBNYXBwaW5nIHR5cGUgZm9yICR7Ym9uZS50eXBlfSBub3QgZm91bmRgKTtcclxuICAgICAgICBjb21wb25lbnRUeXBlID0gVW5rbm93bkJvbmVDb21wb25lbnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGJvbmVDb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcclxuXHJcbiAgICAgIGJvbmVDb21wb25lbnRSZWYuaW5zdGFuY2UuYmQuYm9uZSA9IGJvbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgYm9uU2tlbGV0b25BbmNob3I+PC9uZy10ZW1wbGF0ZT5cclxuIl19