@candy-kingdom/bonnie 0.27.1 → 0.27.3
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.
|
@@ -8,10 +8,10 @@ import { NgTemplateOutlet, JsonPipe } from '@angular/common';
|
|
|
8
8
|
class DeviceService {
|
|
9
9
|
devicePixelRatio = typeof window === "undefined" ? 1 : window.devicePixelRatio;
|
|
10
10
|
isSSR = typeof window === "undefined";
|
|
11
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
12
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DeviceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DeviceService });
|
|
13
13
|
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DeviceService, decorators: [{
|
|
15
15
|
type: Injectable
|
|
16
16
|
}] });
|
|
17
17
|
|
|
@@ -51,10 +51,10 @@ class EncodeURIComponentPipe {
|
|
|
51
51
|
transform(value) {
|
|
52
52
|
return encodeURIComponent(value);
|
|
53
53
|
}
|
|
54
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
55
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: EncodeURIComponentPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
55
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.6", ngImport: i0, type: EncodeURIComponentPipe, isStandalone: true, name: "encodeURIComponent" });
|
|
56
56
|
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: EncodeURIComponentPipe, decorators: [{
|
|
58
58
|
type: Pipe,
|
|
59
59
|
args: [{ name: "encodeURIComponent", pure: true }]
|
|
60
60
|
}] });
|
|
@@ -108,10 +108,10 @@ class IntersectionComponent {
|
|
|
108
108
|
observer.unobserve(this._hostRef.nativeElement);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
112
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
111
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: IntersectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
112
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.6", type: IntersectionComponent, isStandalone: true, selector: "bon-intersection", inputs: { session: { classPropertyName: "session", publicName: "session", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intersected: "intersected" }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, styles: [":host{display:block}\n"] });
|
|
113
113
|
}
|
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: IntersectionComponent, decorators: [{
|
|
115
115
|
type: Component,
|
|
116
116
|
args: [{ selector: "bon-intersection", template: "<ng-content></ng-content>", styles: [":host{display:block}\n"] }]
|
|
117
117
|
}], ctorParameters: () => [], propDecorators: { intersected: [{ type: i0.Output, args: ["intersected"] }], session: [{ type: i0.Input, args: [{ isSignal: true, alias: "session", required: false }] }] } });
|
|
@@ -283,10 +283,10 @@ class SrcBaseDirective {
|
|
|
283
283
|
const combinedObservable = merge(...queryObservables);
|
|
284
284
|
return combinedObservable;
|
|
285
285
|
}
|
|
286
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
287
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.
|
|
286
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: SrcBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
287
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.6", type: SrcBaseDirective, isStandalone: true, outputs: { ratioChange: "ratioChange" }, ngImport: i0 });
|
|
288
288
|
}
|
|
289
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
289
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: SrcBaseDirective, decorators: [{
|
|
290
290
|
type: Directive
|
|
291
291
|
}], ctorParameters: () => [], propDecorators: { ratioChange: [{ type: i0.Output, args: ["ratioChange"] }] } });
|
|
292
292
|
|
|
@@ -489,10 +489,10 @@ class LocalizePipe {
|
|
|
489
489
|
}
|
|
490
490
|
return this._localizeService.getLocalizedText(value, locale);
|
|
491
491
|
}
|
|
492
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
493
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
492
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: LocalizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
493
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.6", ngImport: i0, type: LocalizePipe, isStandalone: true, name: "localize", pure: false });
|
|
494
494
|
}
|
|
495
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
495
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: LocalizePipe, decorators: [{
|
|
496
496
|
type: Pipe,
|
|
497
497
|
args: [{ name: "localize", pure: false }]
|
|
498
498
|
}] });
|
|
@@ -504,10 +504,10 @@ class LocalizeObjectPipe {
|
|
|
504
504
|
}
|
|
505
505
|
return this._localizeService.getLocalized(object, undefined, locale);
|
|
506
506
|
}
|
|
507
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
508
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
507
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: LocalizeObjectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
508
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.6", ngImport: i0, type: LocalizeObjectPipe, isStandalone: true, name: "localizeObject", pure: false });
|
|
509
509
|
}
|
|
510
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
510
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: LocalizeObjectPipe, decorators: [{
|
|
511
511
|
type: Pipe,
|
|
512
512
|
args: [{ name: "localizeObject", pure: false }]
|
|
513
513
|
}] });
|
|
@@ -521,10 +521,10 @@ class LocalizationIsNotEmptyPipe {
|
|
|
521
521
|
const isNotEmpty = text.trim().length > 0;
|
|
522
522
|
return isNotEmpty;
|
|
523
523
|
}
|
|
524
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
525
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
524
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: LocalizationIsNotEmptyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
525
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.6", ngImport: i0, type: LocalizationIsNotEmptyPipe, isStandalone: true, name: "localizationIsNotEmpty", pure: false });
|
|
526
526
|
}
|
|
527
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
527
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: LocalizationIsNotEmptyPipe, decorators: [{
|
|
528
528
|
type: Pipe,
|
|
529
529
|
args: [{ name: "localizationIsNotEmpty", pure: false }]
|
|
530
530
|
}] });
|
|
@@ -538,10 +538,10 @@ class LocalizationIsEmptyPipe {
|
|
|
538
538
|
const isEmpty = text.trim().length === 0;
|
|
539
539
|
return isEmpty;
|
|
540
540
|
}
|
|
541
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
542
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
541
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: LocalizationIsEmptyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
542
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.6", ngImport: i0, type: LocalizationIsEmptyPipe, isStandalone: true, name: "localizationIsEmpty", pure: false });
|
|
543
543
|
}
|
|
544
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
544
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: LocalizationIsEmptyPipe, decorators: [{
|
|
545
545
|
type: Pipe,
|
|
546
546
|
args: [{ name: "localizationIsEmpty", pure: false }]
|
|
547
547
|
}] });
|
|
@@ -556,10 +556,10 @@ class LocalizeUrlPipe {
|
|
|
556
556
|
const safeUrl = this._domSanitizer.bypassSecurityTrustResourceUrl(urlString);
|
|
557
557
|
return safeUrl;
|
|
558
558
|
}
|
|
559
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
560
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
559
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: LocalizeUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
560
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.6", ngImport: i0, type: LocalizeUrlPipe, isStandalone: true, name: "localizeUrl", pure: false });
|
|
561
561
|
}
|
|
562
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
562
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: LocalizeUrlPipe, decorators: [{
|
|
563
563
|
type: Pipe,
|
|
564
564
|
args: [{ name: "localizeUrl", pure: false }]
|
|
565
565
|
}] });
|
|
@@ -572,10 +572,10 @@ class IsLocalUrlPipe {
|
|
|
572
572
|
const isLocal = this._localizeService.isLocalUrl(value, locale);
|
|
573
573
|
return isLocal;
|
|
574
574
|
}
|
|
575
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
576
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
575
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: IsLocalUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
576
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.6", ngImport: i0, type: IsLocalUrlPipe, isStandalone: true, name: "isLocalUrl", pure: false });
|
|
577
577
|
}
|
|
578
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
578
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: IsLocalUrlPipe, decorators: [{
|
|
579
579
|
type: Pipe,
|
|
580
580
|
args: [{ name: "isLocalUrl", pure: false }]
|
|
581
581
|
}] });
|
|
@@ -588,10 +588,10 @@ class IsNotLocalUrlPipe {
|
|
|
588
588
|
const isLocal = this._localizeService.isLocalUrl(value, locale);
|
|
589
589
|
return !isLocal;
|
|
590
590
|
}
|
|
591
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
592
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
591
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: IsNotLocalUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
592
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.6", ngImport: i0, type: IsNotLocalUrlPipe, isStandalone: true, name: "isNotLocalUrl", pure: false });
|
|
593
593
|
}
|
|
594
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
594
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: IsNotLocalUrlPipe, decorators: [{
|
|
595
595
|
type: Pipe,
|
|
596
596
|
args: [{ name: "isNotLocalUrl", pure: false }]
|
|
597
597
|
}] });
|
|
@@ -613,10 +613,10 @@ function getDefaultSrc(image) {
|
|
|
613
613
|
|
|
614
614
|
class ImageSrcDirective extends SrcBaseDirective {
|
|
615
615
|
data = model(undefined, { ...(ngDevMode ? { debugName: "data" } : {}), alias: "imgsrc" });
|
|
616
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
617
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
616
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ImageSrcDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
617
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", type: ImageSrcDirective, isStandalone: true, selector: "[imgsrc]", inputs: { data: { classPropertyName: "data", publicName: "imgsrc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { data: "imgsrcChange" }, usesInheritance: true, ngImport: i0 });
|
|
618
618
|
}
|
|
619
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
619
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ImageSrcDirective, decorators: [{
|
|
620
620
|
type: Directive,
|
|
621
621
|
args: [{
|
|
622
622
|
selector: "[imgsrc]",
|
|
@@ -675,20 +675,20 @@ class MarcyImageComponent {
|
|
|
675
675
|
onLoad() {
|
|
676
676
|
this.status.set(MediaStatus.Loaded);
|
|
677
677
|
}
|
|
678
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
679
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
678
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: MarcyImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
679
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: MarcyImageComponent, isStandalone: true, selector: "bon-image", inputs: { objectFit: { classPropertyName: "objectFit", publicName: "objectFit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isLoaded: "isLoaded" }, ngImport: i0, template: "@if (sources().length > 0) {\n <div [class.knownRatio]=\"src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"picture-container\">\n\n <ng-template #pictureTemplate>\n <picture>\n @for (source of sources(); track $index) {\n <source [srcset]=\"source.srcSet\"\n [attr.media]=\"source.media.length > 0 ? source.media : undefined\"\n [attr.type]=\"source.mime.length > 0 ? source.mime : undefined\"\n [attr.sizes]=\"source.sizes.length > 0 ? source.sizes : undefined\" />\n }\n <img [src]=\"defaultSrc()\" (load)=\"onLoad()\" alt=\"\" />\n </picture>\n </ng-template>\n\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n </noscript>\n } @else {\n <bon-intersection #intersectionZone [session]=\"src\">\n @if (intersectionZone.isIntersected()) {\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n }\n </bon-intersection>\n }\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() +'%'\"></div>\n }\n </div>\n}\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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IntersectionComponent, selector: "bon-intersection", inputs: ["session"], outputs: ["intersected"] }] });
|
|
680
680
|
}
|
|
681
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
681
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: MarcyImageComponent, decorators: [{
|
|
682
682
|
type: Component,
|
|
683
683
|
args: [{ selector: "bon-image", imports: [NgTemplateOutlet, IntersectionComponent], template: "@if (sources().length > 0) {\n <div [class.knownRatio]=\"src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"picture-container\">\n\n <ng-template #pictureTemplate>\n <picture>\n @for (source of sources(); track $index) {\n <source [srcset]=\"source.srcSet\"\n [attr.media]=\"source.media.length > 0 ? source.media : undefined\"\n [attr.type]=\"source.mime.length > 0 ? source.mime : undefined\"\n [attr.sizes]=\"source.sizes.length > 0 ? source.sizes : undefined\" />\n }\n <img [src]=\"defaultSrc()\" (load)=\"onLoad()\" alt=\"\" />\n </picture>\n </ng-template>\n\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n </noscript>\n } @else {\n <bon-intersection #intersectionZone [session]=\"src\">\n @if (intersectionZone.isIntersected()) {\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n }\n </bon-intersection>\n }\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() +'%'\"></div>\n }\n </div>\n}\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"] }]
|
|
684
684
|
}], ctorParameters: () => [], propDecorators: { isLoaded: [{ type: i0.Output, args: ["isLoaded"] }], objectFit: [{ type: i0.Input, args: [{ isSignal: true, alias: "objectFit", required: false }] }] } });
|
|
685
685
|
|
|
686
686
|
class VideoSrcDirective extends SrcBaseDirective {
|
|
687
687
|
data = model(undefined, { ...(ngDevMode ? { debugName: "data" } : {}), alias: "vidsrc" });
|
|
688
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
689
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
688
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: VideoSrcDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
689
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", type: VideoSrcDirective, isStandalone: true, selector: "[vidsrc]", inputs: { data: { classPropertyName: "data", publicName: "vidsrc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { data: "vidsrcChange" }, usesInheritance: true, ngImport: i0 });
|
|
690
690
|
}
|
|
691
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
691
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: VideoSrcDirective, decorators: [{
|
|
692
692
|
type: Directive,
|
|
693
693
|
args: [{
|
|
694
694
|
selector: "[vidsrc]",
|
|
@@ -801,10 +801,10 @@ class MarcyVideoComponent {
|
|
|
801
801
|
}
|
|
802
802
|
return undefined;
|
|
803
803
|
}
|
|
804
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
805
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
804
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: MarcyVideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
805
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: MarcyVideoComponent, isStandalone: true, selector: "bon-video", inputs: { objectFit: { classPropertyName: "objectFit", publicName: "objectFit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isLoaded: "isLoaded" }, viewQueries: [{ propertyName: "videoRef", first: true, predicate: ["video"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n [class.knownRatio]=\"\n src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\n \"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"video-container\"\n>\n @if (device.isSSR) {\n <ng-container *ngTemplateOutlet=\"ssrTemplate\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"browserTemplate\"></ng-container>\n }\n\n <ng-template #videoTemplate>\n <video\n #video\n [src]=\"source()?.url ?? ''\"\n (load)=\"onLoad()\"\n (canplay)=\"video.muted = true; video.play()\"\n playsInline\n autoplay\n loop\n muted\n ></video>\n </ng-template>\n\n <ng-template #ssrTemplate>\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </noscript>\n }\n </ng-template>\n\n <ng-template #browserTemplate>\n <bon-intersection #intersectionZone [session]=\"src\">\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </bon-intersection>\n </ng-template>\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() + '%'\"></div>\n }\n</div>\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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IntersectionComponent, selector: "bon-intersection", inputs: ["session"], outputs: ["intersected"] }] });
|
|
806
806
|
}
|
|
807
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
807
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: MarcyVideoComponent, decorators: [{
|
|
808
808
|
type: Component,
|
|
809
809
|
args: [{ selector: "bon-video", imports: [NgTemplateOutlet, IntersectionComponent], template: "<div\n [class.knownRatio]=\"\n src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\n \"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"video-container\"\n>\n @if (device.isSSR) {\n <ng-container *ngTemplateOutlet=\"ssrTemplate\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"browserTemplate\"></ng-container>\n }\n\n <ng-template #videoTemplate>\n <video\n #video\n [src]=\"source()?.url ?? ''\"\n (load)=\"onLoad()\"\n (canplay)=\"video.muted = true; video.play()\"\n playsInline\n autoplay\n loop\n muted\n ></video>\n </ng-template>\n\n <ng-template #ssrTemplate>\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </noscript>\n }\n </ng-template>\n\n <ng-template #browserTemplate>\n <bon-intersection #intersectionZone [session]=\"src\">\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </bon-intersection>\n </ng-template>\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() + '%'\"></div>\n }\n</div>\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"] }]
|
|
810
810
|
}], ctorParameters: () => [], propDecorators: { isLoaded: [{ type: i0.Output, args: ["isLoaded"] }], objectFit: [{ type: i0.Input, args: [{ isSignal: true, alias: "objectFit", required: false }] }], videoRef: [{ type: i0.ViewChild, args: ["video", { isSignal: true }] }] } });
|
|
@@ -817,10 +817,10 @@ class MarcyMediaComponent {
|
|
|
817
817
|
onLoad() {
|
|
818
818
|
this.isLoaded.emit();
|
|
819
819
|
}
|
|
820
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
821
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
820
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: MarcyMediaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
821
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: MarcyMediaComponent, isStandalone: true, selector: "bon-media", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, objectFit: { classPropertyName: "objectFit", publicName: "objectFit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isLoaded: "isLoaded" }, ngImport: i0, template: "@if (src(); as mediaSrc) {\n @if (mediaSrc.type === 'image') {\n <bon-image\n [imgsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-image>\n } @else if (mediaSrc.type === 'video') {\n <bon-video\n [vidsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-video>\n }\n}\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: MarcyImageComponent, selector: "bon-image", inputs: ["objectFit"], outputs: ["isLoaded"] }, { kind: "component", type: MarcyVideoComponent, selector: "bon-video", inputs: ["objectFit"], outputs: ["isLoaded"] }, { kind: "directive", type: VideoSrcDirective, selector: "[vidsrc]", inputs: ["vidsrc"], outputs: ["vidsrcChange"] }, { kind: "directive", type: ImageSrcDirective, selector: "[imgsrc]", inputs: ["imgsrc"], outputs: ["imgsrcChange"] }] });
|
|
822
822
|
}
|
|
823
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
823
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: MarcyMediaComponent, decorators: [{
|
|
824
824
|
type: Component,
|
|
825
825
|
args: [{ selector: "bon-media", imports: [MarcyImageComponent, MarcyVideoComponent, VideoSrcDirective, ImageSrcDirective], template: "@if (src(); as mediaSrc) {\n @if (mediaSrc.type === 'image') {\n <bon-image\n [imgsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-image>\n } @else if (mediaSrc.type === 'video') {\n <bon-video\n [vidsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-video>\n }\n}\n", styles: [":host{display:block}\n"] }]
|
|
826
826
|
}], propDecorators: { isLoaded: [{ type: i0.Output, args: ["isLoaded"] }], src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], objectFit: [{ type: i0.Input, args: [{ isSignal: true, alias: "objectFit", required: false }] }] } });
|
|
@@ -837,27 +837,22 @@ class BoneMap extends Map {
|
|
|
837
837
|
|
|
838
838
|
class BoneDirective {
|
|
839
839
|
bone = model.required(...(ngDevMode ? [{ debugName: "bone" }] : []));
|
|
840
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
841
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
840
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BoneDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
841
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", type: BoneDirective, isStandalone: true, selector: "[bonBoneDir]", inputs: { bone: { classPropertyName: "bone", publicName: "bone", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { bone: "boneChange" }, ngImport: i0 });
|
|
842
842
|
}
|
|
843
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
843
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BoneDirective, decorators: [{
|
|
844
844
|
type: Directive,
|
|
845
845
|
args: [{
|
|
846
846
|
selector: "[bonBoneDir]",
|
|
847
847
|
}]
|
|
848
848
|
}], propDecorators: { bone: [{ type: i0.Input, args: [{ isSignal: true, alias: "bone", required: true }] }, { type: i0.Output, args: ["boneChange"] }] } });
|
|
849
|
-
const BONE_DIRECTIVE_WITH_INPUTS_AND_OUTPUTS = {
|
|
850
|
-
directive: BoneDirective,
|
|
851
|
-
inputs: ["bone"],
|
|
852
|
-
outputs: ["boneChange"],
|
|
853
|
-
};
|
|
854
849
|
|
|
855
850
|
class SkeletonAnchorDirective {
|
|
856
851
|
viewContainerRef = inject(ViewContainerRef);
|
|
857
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
858
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.
|
|
852
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: SkeletonAnchorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
853
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.6", type: SkeletonAnchorDirective, isStandalone: true, selector: "[bonSkeletonAnchor]", ngImport: i0 });
|
|
859
854
|
}
|
|
860
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
855
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: SkeletonAnchorDirective, decorators: [{
|
|
861
856
|
type: Directive,
|
|
862
857
|
args: [{
|
|
863
858
|
selector: "[bonSkeletonAnchor]",
|
|
@@ -866,15 +861,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
866
861
|
|
|
867
862
|
class UnknownBoneComponent {
|
|
868
863
|
bd = inject((BoneDirective), { host: true });
|
|
869
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
870
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
864
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: UnknownBoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
865
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: UnknownBoneComponent, isStandalone: true, selector: "bon-unknown-bone", hostDirectives: [{ directive: BoneDirective, inputs: ["bone", "bone"], outputs: ["boneChange", "boneChange"] }], ngImport: i0, template: `@if (bd.bone(); as bone) {
|
|
871
866
|
<h2>unknown bone {{bone.type}}</h2>
|
|
872
867
|
<div>{{bone | json}}</div>
|
|
873
868
|
} @else{
|
|
874
869
|
bone is undefined
|
|
875
870
|
}`, isInline: true, styles: [":host{display:block;border:2px solid red;box-sizing:border-box}\n"], dependencies: [{ kind: "pipe", type: JsonPipe, name: "json" }] });
|
|
876
871
|
}
|
|
877
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
872
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: UnknownBoneComponent, decorators: [{
|
|
878
873
|
type: Component,
|
|
879
874
|
args: [{ selector: "bon-unknown-bone", imports: [JsonPipe], hostDirectives: [{ directive: BoneDirective, inputs: ["bone"], outputs: ["boneChange"] }], template: `@if (bd.bone(); as bone) {
|
|
880
875
|
<h2>unknown bone {{bone.type}}</h2>
|
|
@@ -908,10 +903,10 @@ class SkeletonComponent {
|
|
|
908
903
|
}
|
|
909
904
|
});
|
|
910
905
|
}
|
|
911
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
912
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.
|
|
906
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: SkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
907
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.6", type: SkeletonComponent, isStandalone: true, selector: "bon-skeleton", inputs: { map: { classPropertyName: "map", publicName: "map", isSignal: true, isRequired: true, transformFunction: null }, bones: { classPropertyName: "bones", publicName: "bones", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "skeletonAnchor", first: true, predicate: SkeletonAnchorDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template bonSkeletonAnchor></ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: SkeletonAnchorDirective, selector: "[bonSkeletonAnchor]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
913
908
|
}
|
|
914
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
909
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: SkeletonComponent, decorators: [{
|
|
915
910
|
type: Component,
|
|
916
911
|
args: [{ selector: "bon-skeleton", imports: [SkeletonAnchorDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template bonSkeletonAnchor></ng-template>\n", styles: [":host{display:block}\n"] }]
|
|
917
912
|
}], ctorParameters: () => [], propDecorators: { skeletonAnchor: [{ type: i0.ViewChild, args: [i0.forwardRef(() => SkeletonAnchorDirective), { isSignal: true }] }], map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required: true }] }], bones: [{ type: i0.Input, args: [{ isSignal: true, alias: "bones", required: true }] }] } });
|
|
@@ -920,5 +915,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
920
915
|
* Generated bundle index. Do not edit.
|
|
921
916
|
*/
|
|
922
917
|
|
|
923
|
-
export {
|
|
918
|
+
export { BoneDirective, BoneMap, DeviceService, DeviceServiceBase, EncodeURIComponentPipe, ImageSrcDirective, IntersectionComponent, IsLocalUrlPipe, IsNotLocalUrlPipe, LocalizationIsEmptyPipe, LocalizationIsNotEmptyPipe, LocalizeObjectPipe, LocalizePipe, LocalizeServiceBase, LocalizeUrlPipe, MarcyImageComponent, MarcyMediaComponent, MarcyVideoComponent, MediaObjectFit, MediaStatus, PublishStatus, SizesWidthUnit, SkeletonAnchorDirective, SkeletonComponent, SrcBaseDirective, UnknownBoneComponent, VideoSrcDirective, emptyBone, emptyImage, emptyLocalizedString, emptyVideo, getDefaultSrc, toHtmlPictureSources };
|
|
924
919
|
//# sourceMappingURL=candy-kingdom-bonnie.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candy-kingdom-bonnie.mjs","sources":["../../../../libs/bonnie/src/lib/core/device.service.ts","../../../../libs/bonnie/src/lib/core/device.service.base.ts","../../../../libs/bonnie/src/lib/core/emptyBone.ts","../../../../libs/bonnie/src/lib/core/emptyImage.ts","../../../../libs/bonnie/src/lib/core/emptyLocalizedString.ts","../../../../libs/bonnie/src/lib/core/emptyVideo.ts","../../../../libs/bonnie/src/lib/core/encode-uri.pipe.ts","../../../../libs/bonnie/src/lib/core/intersection.component.ts","../../../../libs/bonnie/src/lib/core/MediaObjectFit.ts","../../../../libs/bonnie/src/lib/core/MediaStatus.ts","../../../../libs/bonnie/src/lib/core/utils.ts","../../../../libs/bonnie/src/lib/core/src.directive.ts","../../../../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.ts","../../../../libs/bonnie/src/lib/generated/file-src-base.ts","../../../../libs/bonnie/src/lib/generated/i-equatable.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route-with-data.ts","../../../../libs/bonnie/src/lib/generated/i-have-skeleton.ts","../../../../libs/bonnie/src/lib/generated/i-page.ts","../../../../libs/bonnie/src/lib/generated/image.ts","../../../../libs/bonnie/src/lib/generated/image-meta.ts","../../../../libs/bonnie/src/lib/generated/image-source.ts","../../../../libs/bonnie/src/lib/generated/localized-object.ts","../../../../libs/bonnie/src/lib/generated/localized-string.ts","../../../../libs/bonnie/src/lib/generated/media-source.ts","../../../../libs/bonnie/src/lib/generated/media-source-base.ts","../../../../libs/bonnie/src/lib/generated/open-graph-data.ts","../../../../libs/bonnie/src/lib/generated/page.ts","../../../../libs/bonnie/src/lib/generated/page-base.ts","../../../../libs/bonnie/src/lib/generated/page-data.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.ts","../../../../libs/bonnie/src/lib/generated/video-meta.ts","../../../../libs/bonnie/src/lib/generated/video-source.ts","../../../../libs/bonnie/src/lib/generated/view.ts","../../../../libs/bonnie/src/lib/generated/index.ts","../../../../libs/bonnie/src/lib/localization/LocalizeServiceBase.ts","../../../../libs/bonnie/src/lib/localization/localize.pipe.ts","../../../../libs/bonnie/src/lib/marcy-image/getDefaultSrc.ts","../../../../libs/bonnie/src/lib/marcy-image/imgsrc.directive.ts","../../../../libs/bonnie/src/lib/marcy-image/toHtmlSources.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/BoneMap.ts","../../../../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/candy-kingdom-bonnie.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\n\nimport type { DeviceServiceBase } from \"./device.service.base\";\n\n@Injectable()\nexport class DeviceService implements DeviceServiceBase {\n\tpublic readonly devicePixelRatio = typeof window === \"undefined\" ? 1 : window.devicePixelRatio;\n\tpublic readonly isSSR = typeof window === \"undefined\";\n}\n","export abstract class DeviceServiceBase {\n\tpublic abstract get isSSR(): boolean;\n\tpublic abstract get devicePixelRatio(): number;\n}\n","import type { Bone } from \"../generated\";\n\nexport function emptyBone(): Bone {\n\treturn {\n\t\tstyle: \"\",\n\t\tmediaQuery: \"\",\n\t\tenabled: true,\n\t\ttype: \"\",\n\t};\n}\n","import type { Image } from \"../generated\";\n\nexport function emptyImage(): Image {\n\treturn {\n\t\t$type: \"image\", // todo: remove\n\t\ttype: \"image\",\n\t\tsources: [],\n\t};\n}\n","import type { LocalizedString } from \"../generated\";\n\nexport function emptyLocalizedString(): LocalizedString {\n\treturn {};\n}\n","import type { Video } from \"../generated\";\n\nexport function emptyVideo(): Video {\n\treturn {\n\t\t$type: \"video\", // todo: remove\n\t\ttype: \"video\",\n\t\tsources: [],\n\t};\n}\n","import { Pipe, type PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"encodeURIComponent\", pure: true })\nexport class EncodeURIComponentPipe implements PipeTransform {\n\tpublic transform(value: string): string {\n\t\treturn encodeURIComponent(value);\n\t}\n}\n","import {\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from \"@angular/core\";\n\n@Component({\n\tselector: \"bon-intersection\",\n\ttemplate: \"<ng-content></ng-content>\",\n\tstyles: [\":host{display:block}\"],\n})\nexport class IntersectionComponent {\n\tpublic readonly intersected = output<void>();\n\n\tpublic readonly session = input<unknown>();\n\n\tprivate readonly _hostRef = inject(ElementRef);\n\n\tprivate readonly _intersectionObserver?: IntersectionObserver;\n\tprivate readonly _isIntersected = signal<boolean>(false);\n\n\tpublic readonly isIntersected = this._isIntersected.asReadonly();\n\n\tprivate _session: unknown; // todo: remove\n\n\tconstructor() {\n\t\tif (typeof window === \"undefined\" || typeof IntersectionObserver === \"undefined\") {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._intersectionObserver = new IntersectionObserver(this.onIntersection.bind(this));\n\n\t\teffect(() => {\n\t\t\tif (this._isIntersected()) {\n\t\t\t\tthis.intersected.emit();\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst newSession = this.session();\n\n\t\t\tif (this._session === newSession) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log(\"reset intersection Observer\");\n\t\t\tthis._session = newSession;\n\t\t\tthis.reset();\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => this._intersectionObserver?.disconnect());\n\t}\n\n\tprivate reset(): void {\n\t\tif (this._intersectionObserver === undefined || this._intersectionObserver === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._intersectionObserver.unobserve(this._hostRef.nativeElement);\n\n\t\tthis._isIntersected.set(false);\n\n\t\tthis._intersectionObserver.observe(this._hostRef.nativeElement);\n\t}\n\n\tprivate onIntersection(\n\t\tentries: IntersectionObserverEntry[],\n\t\tobserver: IntersectionObserver,\n\t): void {\n\t\tif (entries.length > 1) {\n\t\t\tconsole.warn(\"multi entries!\");\n\t\t}\n\n\t\tconst isIntersecting = entries[0].isIntersecting;\n\t\tthis._isIntersected.set(isIntersecting);\n\n\t\tconsole.log(`intersected ${isIntersecting}`, this._hostRef.nativeElement);\n\n\t\t// only once will recieve intersection\n\t\tif (isIntersecting) {\n\t\t\tobserver.unobserve(this._hostRef.nativeElement);\n\t\t}\n\t}\n}\n","export enum MediaObjectFit {\n\tOriginal = \"Original\",\n\tCover = \"Cover\",\n\tContain = \"Contain\",\n}\n","export enum MediaStatus {\n\tNotSet = \"NotSet\",\n\tNotLoaded = \"NotLoaded\",\n\tLoading = \"Loading\",\n\tLoaded = \"Loaded\",\n}\n","import type * as M_CORE from \"../generated\";\n\n// https://stackoverflow.com/questions/42136098/array-groupby-in-typescript\n\nexport const groupBy = <T, K extends keyof any>(arr: T[], key: (i: T) => K) =>\n\tarr.reduce(\n\t\t(groups, item) => {\n\t\t\t(groups[key(item)] ||= []).push(item);\n\t\t\treturn groups;\n\t\t},\n\t\t{} as Record<K, T[]>,\n\t);\n\nexport function distinct<T>(value: T, index: number, array: T[]) {\n\treturn array.indexOf(value) === index;\n}\n\nexport function ascending(a: number, b: number) {\n\treturn a - b;\n}\n\nexport function ascendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\n\treturn (a: T, b: T) => ascending(sel(a), sel(b));\n}\n\nexport function descending(a: number, b: number) {\n\treturn b - a;\n}\n\nexport function descendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\n\treturn (a: T, b: T) => descending(sel(a), sel(b));\n}\n\nexport function generateSizesString(sizes: M_CORE.SizesItem[]): string {\n\tconst sizesString = sizes\n\t\t.sort((x) => x.width)\n\t\t.map((x) => `${x.mediaQuery} ${x.width}${x.unit.toLowerCase()}`.trim())\n\t\t.join(\",\");\n\n\treturn sizesString;\n}\n\nexport function matchesMediaQuery(mediaQuery?: string): boolean {\n\tconst isEmptyQuery =\n\t\tmediaQuery === null || mediaQuery === undefined || mediaQuery.trim().length === 0;\n\n\t// work for SSR and browser\n\tif (isEmptyQuery) {\n\t\treturn true;\n\t}\n\n\t// other queries disallowed in SSR\n\tif (typeof window === \"undefined\") {\n\t\treturn false;\n\t}\n\n\tconst mediaQueryList = window.matchMedia(mediaQuery);\n\n\treturn mediaQueryList.matches;\n}\n\nexport function isLocalUrlString(url: string): boolean {\n\tif (url === undefined || url === null || url.trim().length === 0) {\n\t\treturn true;\n\t}\n\n\tif (url.startsWith(\"//\")) {\n\t\treturn false;\n\t}\n\n\tif (url.startsWith(\"./\") || url.startsWith(\"/\")) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","import {\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tinject,\n\ttype ModelSignal,\n\toutput,\n\tsignal,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\n\nimport { fromEvent, merge, NEVER, type Observable, Subject, takeUntil } from \"rxjs\";\n\nimport type * as M_CORE from \"../generated\";\nimport * as utils from \"./utils\";\n\n@Directive()\nexport abstract class SrcBaseDirective<T extends M_CORE.Image | M_CORE.Video> {\n\tpublic readonly ratioChange = output<number>();\n\n\tprivate readonly _ratio = signal<number>(0);\n\tpublic readonly ratio = this._ratio.asReadonly();\n\n\tprivate readonly _queryChangeClearSubject = new Subject<void>();\n\n\tpublic abstract readonly data: ModelSignal<T | undefined>;\n\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst ratio = this._ratio();\n\t\t\tthis.ratioChange.emit(ratio);\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst val = this.data();\n\t\t\tthis.onSrcChange(val);\n\t\t});\n\t}\n\n\tprivate onSrcChange(val: T | undefined): void {\n\t\tif (val !== undefined && val !== null && val.sources.length === 0) {\n\t\t\tconsole.warn(\"image should have sources!\");\n\t\t\tthis.data.set(undefined);\n\t\t\treturn;\n\t\t}\n\n\t\t// clear mediaQuery subscriptions\n\t\tthis._queryChangeClearSubject.next();\n\n\t\t// ratio\n\t\tthis._ratio.set(0);\n\n\t\tif (val === undefined || val.sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst allRatios = val.sources\n\t\t\t.flatMap((x) => x.srcSet)\n\t\t\t.map((x) => x.meta.ratio)\n\t\t\t.filter(utils.distinct);\n\n\t\tif (allRatios.length === 1) {\n\t\t\t// same ratio for all\n\t\t\tthis._ratio.set(allRatios[0]);\n\t\t\treturn;\n\t\t}\n\n\t\t// todo: check if this needed to be unsubscribed\n\t\tthis.watchMediaQueries().subscribe(() => {\n\t\t\tthis.calcRatio();\n\t\t\tconsole.log(\"watchMediaQueries calcRatio\");\n\t\t});\n\n\t\tthis.calcRatio();\n\t}\n\n\tprivate calcRatio(): void {\n\t\tconst data = this.data();\n\t\tif (data === undefined || data === null || data.sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < data.sources.length; i++) {\n\t\t\tconst source = data.sources[i];\n\t\t\tconst srcRatios = source.srcSet\n\t\t\t\t.sort(utils.descendingT((x) => x.meta.width))\n\t\t\t\t.map((x) => x.meta.ratio)\n\t\t\t\t.filter(utils.distinct);\n\n\t\t\tif (srcRatios.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (srcRatios.length > 1) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`each source should have srcSet with same ratio. founded: ${srcRatios.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst ratio = srcRatios[0]; // most accurate ratio in biggest image\n\n\t\t\tif (source.mediaQuery.length === 0) {\n\t\t\t\tthis._ratio.set(ratio);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof window === \"undefined\" || typeof window.matchMedia === \"undefined\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst mediaQueryList = window.matchMedia(source.mediaQuery);\n\n\t\t\tif (mediaQueryList.matches) {\n\t\t\t\tthis._ratio.set(ratio);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic watchMediaQueries(): Observable<MediaQueryListEvent> {\n\t\tconsole.log(\"watchMediaQueries\");\n\t\tconst src = this.data();\n\n\t\tif (\n\t\t\tsrc === undefined ||\n\t\t\tsrc === null ||\n\t\t\ttypeof window === \"undefined\" ||\n\t\t\ttypeof window.matchMedia === \"undefined\"\n\t\t) {\n\t\t\treturn NEVER.pipe(\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t\ttakeUntil(this._queryChangeClearSubject),\n\t\t\t);\n\t\t}\n\n\t\tconst mediaQueries = src.sources\n\t\t\t.map((x) => x.mediaQuery)\n\t\t\t.filter(utils.distinct)\n\t\t\t.filter((x) => x.length > 0);\n\n\t\tconsole.log(\"watchMediaQueries mediaQueries\", mediaQueries);\n\t\tconst queryObservables = mediaQueries.map((media) => {\n\t\t\tconst queryList = window.matchMedia(media);\n\t\t\tconst observable = fromEvent<MediaQueryListEvent>(queryList, \"change\").pipe(\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t\ttakeUntil(this._queryChangeClearSubject),\n\t\t\t);\n\n\t\t\treturn observable;\n\t\t});\n\n\t\tconst combinedObservable = merge(...queryObservables);\n\t\treturn combinedObservable;\n\t}\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface Bone {\n\tstyle: string;\n\tmediaQuery: string;\n\tenabled: boolean;\n\ttype: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileFormat {\n\textension: string;\n\tmimeType: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileMeta {\n\tbyteCount: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\nimport type { FileSrcBase } from \"./file-src-base\";\n\nexport interface FileSrc<T extends FileMeta> extends FileSrcBase {\n\tmeta: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileSrcBase {\n\tmimeType: string;\n\turl: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport type IEquatable<_T> = {};\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface IHaveDataRoute {\n\tdataRoute: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { IHaveDataRoute } from \"./i-have-data-route\";\n\nexport interface IHaveDataRouteWithData<T> extends IHaveDataRoute {\n\tdata: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\n\nexport interface IHaveSkeleton {\n\tbones: Bone[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PageData } from \"./page-data\";\n\nexport interface IPage<TData extends PageData> {\n\tdata: TData;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { ImageSource } from \"./image-source\";\nimport type { PixMedia } from \"./pix-media\";\n\nexport interface Image extends PixMedia {\n\treadonly $type: \"image\";\n\tsources: ImageSource[];\n\ttype: \"image\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface ImageMeta extends PixMeta {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { ImageMeta } from \"./image-meta\";\nimport type { MediaSource } from \"./media-source\";\nimport type { SizesItem } from \"./sizes-item\";\n\nexport interface ImageSource extends MediaSource<ImageMeta> {\n\tsizes: SizesItem[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface LocalizedObject<T> {\n\t[locale: string]: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { LocalizedObject } from \"./localized-object\";\n\nexport interface LocalizedString extends LocalizedObject<string> {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\nimport type { FileSrc } from \"./file-src\";\nimport type { MediaSourceBase } from \"./media-source-base\";\n\nexport interface MediaSource<TMeta extends FileMeta> extends MediaSourceBase {\n\tsrcSet: FileSrc<TMeta>[];\n\tmediaQuery: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileSrcBase } from \"./file-src-base\";\n\nexport interface MediaSourceBase {\n\tsrcSet: FileSrcBase[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileSrc } from \"./file-src\";\nimport type { ImageMeta } from \"./image-meta\";\nimport type { LocalizedObject } from \"./localized-object\";\nimport type { LocalizedString } from \"./localized-string\";\n\nexport interface OpenGraphData {\n\ttitle: LocalizedString;\n\tdescription: LocalizedString;\n\timage: LocalizedObject<FileSrc<ImageMeta>>;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PageBase } from \"./page-base\";\nimport type { PageData } from \"./page-data\";\n\nexport interface Page<T extends PageData> extends PageBase {\n\tdata: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\nimport type { LocalizedString } from \"./localized-string\";\nimport type { OpenGraphData } from \"./open-graph-data\";\nimport type { PublishStatus } from \"./publish-status\";\n\nexport interface PageBase {\n\tid: string;\n\turl: string;\n\troute: string;\n\torder: number;\n\tpublishStatus: PublishStatus;\n\ttitle: LocalizedString;\n\topenGraph: OpenGraphData;\n\tbones: Bone[];\n\tchildren: PageBase[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface PageData {\n\ttype: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { MediaSourceBase } from \"./media-source-base\";\n\nexport interface PixMedia {\n\tsources: MediaSourceBase[];\n\ttype: \"image\" | \"video\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\n\nexport interface PixMeta extends FileMeta {\n\twidth: number;\n\theight: number;\n\tratio: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport enum PublishStatus {\n\tNotSet = 0,\n\tDraft = 1,\n\tPublished = 2,\n\tArchived = 3,\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { SizesWidthUnit } from \"./sizes-width-unit\";\n\nexport interface SizesItem {\n\twidth: number;\n\tunit: SizesWidthUnit;\n\tmediaQuery: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport enum SizesWidthUnit {\n\tPx = \"Px\",\n\tEm = \"Em\",\n\tVw = \"Vw\",\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface SvgMeta extends PixMeta {\n\tpreciseWidth: number;\n\tpreciseHeight: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMedia } from \"./pix-media\";\nimport type { VideoSource } from \"./video-source\";\n\nexport interface Video extends PixMedia {\n\treadonly $type: \"video\";\n\tsources: VideoSource[];\n\ttype: \"video\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface VideoMeta extends PixMeta {\n\tduration: number;\n\tfullFormat: string;\n\thasAudio: boolean;\n\tframeRate: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { MediaSource } from \"./media-source\";\nimport type { VideoMeta } from \"./video-meta\";\n\nexport interface VideoSource extends MediaSource<VideoMeta> {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\n\nexport interface View {\n\tid: string;\n\tcode: string;\n\tbones: Bone[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport * from \"./bone\";\nexport * from \"./file-format\";\nexport * from \"./file-meta\";\nexport * from \"./file-src\";\nexport * from \"./file-src-base\";\nexport * from \"./i-equatable\";\nexport * from \"./i-have-data-route\";\nexport * from \"./i-have-data-route-with-data\";\nexport * from \"./i-have-skeleton\";\nexport * from \"./i-page\";\nexport * from \"./image\";\nexport * from \"./image-meta\";\nexport * from \"./image-source\";\nexport * from \"./localized-object\";\nexport * from \"./localized-string\";\nexport * from \"./media-source\";\nexport * from \"./media-source-base\";\nexport * from \"./open-graph-data\";\nexport * from \"./page\";\nexport * from \"./page-base\";\nexport * from \"./page-data\";\nexport * from \"./pix-media\";\nexport * from \"./pix-meta\";\nexport * from \"./publish-status\";\nexport * from \"./sizes-item\";\nexport * from \"./sizes-width-unit\";\nexport * from \"./svg-meta\";\nexport * from \"./video\";\nexport * from \"./video-meta\";\nexport * from \"./video-source\";\nexport * from \"./view\";\n","import type { Signal } from \"@angular/core\";\n\nimport { isLocalUrlString } from \"../core/utils\";\nimport type { LocalizedObject, LocalizedString } from \"../generated\";\n\nexport abstract class LocalizeServiceBase {\n\tpublic abstract get locale(): Signal<string>;\n\n\tpublic getLocalized<T>(value: LocalizedObject<T>, defaultValue: T, locale?: string): T {\n\t\tif (value === undefined) {\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\tlocale = locale ?? this.locale();\n\n\t\tconst obj = value[locale] ?? defaultValue;\n\t\treturn obj;\n\t}\n\n\tpublic getLocalizedText(value: LocalizedString, locale?: string): string {\n\t\treturn this.getLocalized<string>(value, \"\", locale);\n\t}\n\n\tpublic isLocalUrl(value: LocalizedString, locale?: string): boolean {\n\t\tconst url = this.getLocalizedText(value, locale);\n\t\treturn isLocalUrlString(url);\n\t}\n}\n","import { inject, Pipe, type PipeTransform } from \"@angular/core\";\nimport { DomSanitizer, type SafeResourceUrl } from \"@angular/platform-browser\";\n\nimport type { LocalizedObject, LocalizedString } from \"../generated\";\nimport { LocalizeServiceBase } from \"./LocalizeServiceBase\";\n\n@Pipe({ name: \"localize\", pure: false })\nexport class LocalizePipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): string {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\treturn this._localizeService.getLocalizedText(value, locale);\n\t}\n}\n\n@Pipe({ name: \"localizeObject\", pure: false })\nexport class LocalizeObjectPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform<T>(object: LocalizedObject<T>, locale?: string): T | undefined {\n\t\tif (object === undefined || object === null) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this._localizeService.getLocalized<T | undefined>(object, undefined, locale);\n\t}\n}\n\n@Pipe({ name: \"localizationIsNotEmpty\", pure: false })\nexport class LocalizationIsNotEmptyPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst text = this._localizeService.getLocalizedText(value, locale);\n\n\t\tconst isNotEmpty = text.trim().length > 0;\n\t\treturn isNotEmpty;\n\t}\n}\n\n@Pipe({ name: \"localizationIsEmpty\", pure: false })\nexport class LocalizationIsEmptyPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst text = this._localizeService.getLocalizedText(value, locale);\n\n\t\tconst isEmpty = text.trim().length === 0;\n\t\treturn isEmpty;\n\t}\n}\n\n@Pipe({ name: \"localizeUrl\", pure: false })\nexport class LocalizeUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\tprivate readonly _domSanitizer = inject(DomSanitizer);\n\n\tpublic transform(value: LocalizedString, locale?: string): SafeResourceUrl {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst urlString = this._localizeService.getLocalizedText(value, locale);\n\t\tconst safeUrl = this._domSanitizer.bypassSecurityTrustResourceUrl(urlString);\n\t\treturn safeUrl;\n\t}\n}\n\n@Pipe({ name: \"isLocalUrl\", pure: false })\nexport class IsLocalUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst isLocal = this._localizeService.isLocalUrl(value, locale);\n\t\treturn isLocal;\n\t}\n}\n\n@Pipe({ name: \"isNotLocalUrl\", pure: false })\nexport class IsNotLocalUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst isLocal = this._localizeService.isLocalUrl(value, locale);\n\t\treturn !isLocal;\n\t}\n}\n","import * as utils from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\n\nexport function getDefaultSrc(\n\timage: M_CORE.Image | undefined,\n): M_CORE.FileSrc<M_CORE.ImageMeta> | undefined {\n\tif (image === undefined || image === null) {\n\t\treturn undefined;\n\t}\n\n\tconst files = image.sources.flatMap((x) => x.srcSet).sort(utils.descendingT((x) => x.meta.width));\n\n\tconst prefferedFiles = files.filter(\n\t\t(x) => x.mimeType === \"image/jpeg\" || x.mimeType === \"image/png\" || x.mimeType === \"image/gif\",\n\t);\n\n\tif (prefferedFiles.length > 0) {\n\t\treturn prefferedFiles[0];\n\t}\n\n\tif (files.length > 0) {\n\t\treturn files[0];\n\t}\n\n\treturn undefined;\n}\n","import { Directive, model } from \"@angular/core\";\n\nimport { SrcBaseDirective } from \"../core/src.directive\";\nimport type * as M_CORE from \"../generated\";\n\n@Directive({\n\tselector: \"[imgsrc]\",\n})\nexport class ImageSrcDirective extends SrcBaseDirective<M_CORE.Image> {\n\tpublic readonly data = model<M_CORE.Image | undefined>(undefined, { alias: \"imgsrc\" });\n}\n","import * as utils from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\nimport type { IHtmlPictureSource } from \"./IHtmlPictureSource\";\n\nexport function toHtmlPictureSources(imageSource: M_CORE.ImageSource): IHtmlPictureSource[] {\n\tconst sizes = utils.generateSizesString(imageSource.sizes);\n\tconst groupedByMime = utils.groupBy(imageSource.srcSet, (x) => x.mimeType);\n\n\tconst simpleSources: IHtmlPictureSource[] = [];\n\n\tfor (const mime in groupedByMime) {\n\t\tconst fileSrcs = groupedByMime[mime].sort(utils.ascendingT((x) => x.meta.width));\n\n\t\tconst srcSet = fileSrcs.map((x) => `${x.url} ${x.meta.width}w`).join(\",\");\n\n\t\tconst source: IHtmlPictureSource = { mime, sizes, srcSet, media: imageSource.mediaQuery };\n\n\t\tsimpleSources.push(source);\n\t}\n\n\treturn simpleSources;\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport { Component, effect, inject, input, output, signal } from \"@angular/core\";\n\nimport { DeviceServiceBase } from \"../core/device.service.base\";\nimport { IntersectionComponent } from \"../core/intersection.component\";\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport { MediaStatus } from \"../core/MediaStatus\";\nimport type * as M_CORE from \"../generated\";\nimport { getDefaultSrc } from \"./getDefaultSrc\";\nimport type { IHtmlPictureSource } from \"./IHtmlPictureSource\";\nimport { ImageSrcDirective } from \"./imgsrc.directive\";\nimport { toHtmlPictureSources } from \"./toHtmlSources\";\n\n@Component({\n\tselector: \"bon-image\",\n\n\timports: [NgTemplateOutlet, IntersectionComponent],\n\ttemplateUrl: \"./marcy-image.component.html\",\n\tstyleUrl: \"./marcy-image.component.scss\",\n})\nexport class MarcyImageComponent {\n\tpublic readonly MediaStatus = MediaStatus;\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly src: ImageSrcDirective;\n\n\tpublic readonly isLoaded = output<void>();\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic readonly sources = signal<IHtmlPictureSource[]>([]);\n\tpublic readonly status = signal<MediaStatus>(MediaStatus.NotSet);\n\tpublic readonly defaultSrc = signal(\"\");\n\n\tpublic readonly device = inject(DeviceServiceBase);\n\n\tconstructor() {\n\t\tconst src = inject(ImageSrcDirective, { optional: true });\n\n\t\tif (src === undefined || src === null) {\n\t\t\tthrow new Error(\n\t\t\t\t`${MarcyImageComponent.name} should have [imgsrc] directive as source object`,\n\t\t\t);\n\t\t}\n\n\t\tthis.src = src;\n\n\t\teffect(() => {\n\t\t\tthis.onSrcChange(this.src.data());\n\t\t});\n\n\t\teffect(() => {\n\t\t\tif (this.status() === MediaStatus.Loaded) {\n\t\t\t\tthis.isLoaded.emit();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate onSrcChange(val: M_CORE.Image | undefined) {\n\t\tthis.defaultSrc.set(getDefaultSrc(val)?.url ?? \"\");\n\n\t\tif (val === undefined || val === null || val.sources.length === 0) {\n\t\t\tthis.sources.set([]);\n\t\t\tthis.status.set(MediaStatus.NotSet);\n\t\t\treturn;\n\t\t}\n\n\t\tconst newSources = val.sources.flatMap(toHtmlPictureSources);\n\t\tthis.sources.set(newSources);\n\t\tthis.status.set(MediaStatus.NotLoaded);\n\t}\n\n\tpublic onLoad() {\n\t\tthis.status.set(MediaStatus.Loaded);\n\t}\n}\n","@if (sources().length > 0) {\n <div [class.knownRatio]=\"src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"picture-container\">\n\n <ng-template #pictureTemplate>\n <picture>\n @for (source of sources(); track $index) {\n <source [srcset]=\"source.srcSet\"\n [attr.media]=\"source.media.length > 0 ? source.media : undefined\"\n [attr.type]=\"source.mime.length > 0 ? source.mime : undefined\"\n [attr.sizes]=\"source.sizes.length > 0 ? source.sizes : undefined\" />\n }\n <img [src]=\"defaultSrc()\" (load)=\"onLoad()\" alt=\"\" />\n </picture>\n </ng-template>\n\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n </noscript>\n } @else {\n <bon-intersection #intersectionZone [session]=\"src\">\n @if (intersectionZone.isIntersected()) {\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n }\n </bon-intersection>\n }\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() +'%'\"></div>\n }\n </div>\n}\n","import { Directive, model } from \"@angular/core\";\n\nimport { SrcBaseDirective } from \"../core/src.directive\";\nimport type * as M_CORE from \"../generated\";\n\n@Directive({\n\tselector: \"[vidsrc]\",\n})\nexport class VideoSrcDirective extends SrcBaseDirective<M_CORE.Video> {\n\tpublic readonly data = model<M_CORE.Video | undefined>(undefined, { alias: \"vidsrc\" });\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n\tComponent,\n\ttype ElementRef,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tviewChild,\n} from \"@angular/core\";\n\nimport { DeviceServiceBase } from \"../core/device.service.base\";\nimport { IntersectionComponent } from \"../core/intersection.component\";\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport { MediaStatus } from \"../core/MediaStatus\";\nimport { descendingT, matchesMediaQuery } from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\nimport { VideoSrcDirective } from \"./vidsrc.directive\";\n\nfunction isWebM(src: M_CORE.FileSrc<M_CORE.ImageMeta>): boolean {\n\treturn src.mimeType === \"video/webm\";\n}\n\n@Component({\n\tselector: \"bon-video\",\n\n\timports: [NgTemplateOutlet, IntersectionComponent],\n\ttemplateUrl: \"./marcy-video.component.html\",\n\tstyleUrl: \"./marcy-video.component.scss\",\n})\nexport class MarcyVideoComponent {\n\tpublic readonly MediaStatus = MediaStatus;\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly src: VideoSrcDirective;\n\n\tpublic readonly isLoaded = output<void>();\n\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic readonly videoRef = viewChild<ElementRef<HTMLVideoElement>>(\"video\");\n\n\tpublic readonly status = signal<MediaStatus>(MediaStatus.NotSet);\n\tpublic readonly source = signal<M_CORE.FileSrc<M_CORE.VideoMeta> | undefined>(undefined);\n\n\tpublic readonly device = inject(DeviceServiceBase);\n\n\tprivate readonly _srcDir = inject(VideoSrcDirective, { optional: true });\n\n\tconstructor() {\n\t\tif (this._srcDir === undefined || this._srcDir === null) {\n\t\t\tthrow new Error(\n\t\t\t\t`${MarcyVideoComponent.name} should have [vidsrc] directive as source object`,\n\t\t\t);\n\t\t}\n\n\t\tthis.src = this._srcDir;\n\n\t\teffect(() => {\n\t\t\tthis.src.data();\n\t\t\tthis.videoRef();\n\t\t\tthis.updateSources();\n\t\t\tthis.subscribeToMediaQueryChange();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tif (this.status() === MediaStatus.Loaded) {\n\t\t\t\tthis.isLoaded.emit();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate subscribeToMediaQueryChange(): void {\n\t\tthis.src.watchMediaQueries().subscribe(() => {\n\t\t\tconsole.log(\"MarcyVideoComponent watchMediaQueries\");\n\t\t\tthis.updateSources();\n\t\t});\n\t}\n\n\tprivate updateSources() {\n\t\tconsole.log(\"MarcyVideoComponent updateSources\");\n\n\t\tthis.source.set(this.findMoreSuitableSource());\n\n\t\tconsole.log(\"MarcyVideoComponent new source\", this.source());\n\n\t\tconst src = this.source();\n\n\t\tif (this.status() === MediaStatus.NotSet && src === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (src === undefined) {\n\t\t\tthis.status.set(MediaStatus.NotSet);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.status.set(MediaStatus.NotLoaded);\n\t}\n\n\tpublic onLoad() {\n\t\tthis.status.set(MediaStatus.Loaded);\n\t}\n\n\tprivate findMoreSuitableSource(): M_CORE.FileSrc<M_CORE.VideoMeta> | undefined {\n\t\tconst ref = this.videoRef();\n\t\tif (ref === undefined) {\n\t\t\tconsole.log(\"skipping findMoreSuitableSource. videoRef is empty still\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst videoSources = this.src.data()?.sources ?? [];\n\n\t\tconst currentVideoWidth = ref.nativeElement.clientWidth;\n\t\tconst realPixelsVideoWidth = this.device.devicePixelRatio * currentVideoWidth;\n\n\t\tconsole.log(`MarcyVideoComponent currentVideoWidth ${currentVideoWidth}`);\n\t\tconsole.log(`MarcyVideoComponent realPixelsVideoWidth ${realPixelsVideoWidth}`);\n\n\t\tfor (let i = 0; i < videoSources.length; i++) {\n\t\t\tconst videoSource = videoSources[i];\n\n\t\t\tif (!matchesMediaQuery(videoSource.mediaQuery)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// SSR\n\t\t\tif (typeof ref.nativeElement.canPlayType !== \"function\") {\n\t\t\t\tconst mp4Srcs = videoSource.srcSet\n\t\t\t\t\t.filter((x) => x.mimeType === \"video/mp4\")\n\t\t\t\t\t.sort(descendingT((x) => x.meta.width));\n\n\t\t\t\treturn mp4Srcs[0];\n\t\t\t}\n\n\t\t\tconst fileSrcs = videoSource.srcSet\n\t\t\t\t.filter((x) => ref.nativeElement.canPlayType(x.mimeType))\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.meta.width === b.meta.width) {\n\t\t\t\t\t\treturn isWebM(a) ? -1 : 1; // if same width prefer webM\n\t\t\t\t\t}\n\n\t\t\t\t\t// else prefer smallest\n\t\t\t\t\treturn a.meta.width <= b.meta.width ? -1 : 1;\n\t\t\t\t}); // smallest video\n\n\t\t\tif (fileSrcs.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// console.log('sources ', fileSrcs);\n\n\t\t\tlet bestSrc = fileSrcs[0];\n\n\t\t\tfor (let i = 1; i < fileSrcs.length; i++) {\n\t\t\t\tconst fileSrc = fileSrcs[i];\n\n\t\t\t\tconst currentDiff = fileSrc.meta.width - realPixelsVideoWidth;\n\n\t\t\t\t// console.log(`browser video currentDiff ${currentDiff}`)\n\n\t\t\t\t// too big video source width\n\t\t\t\tif (currentDiff > 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbestSrc = fileSrc;\n\t\t\t}\n\n\t\t\tconsole.log(`browser found suitable video ${bestSrc.url}`);\n\n\t\t\treturn bestSrc;\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n","<div\n [class.knownRatio]=\"\n src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\n \"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"video-container\"\n>\n @if (device.isSSR) {\n <ng-container *ngTemplateOutlet=\"ssrTemplate\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"browserTemplate\"></ng-container>\n }\n\n <ng-template #videoTemplate>\n <video\n #video\n [src]=\"source()?.url ?? ''\"\n (load)=\"onLoad()\"\n (canplay)=\"video.muted = true; video.play()\"\n playsInline\n autoplay\n loop\n muted\n ></video>\n </ng-template>\n\n <ng-template #ssrTemplate>\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </noscript>\n }\n </ng-template>\n\n <ng-template #browserTemplate>\n <bon-intersection #intersectionZone [session]=\"src\">\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </bon-intersection>\n </ng-template>\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() + '%'\"></div>\n }\n</div>\n","import { Component, input, output } from \"@angular/core\";\n\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport type * as M_CORE from \"../generated\";\nimport { ImageSrcDirective } from \"../marcy-image\";\nimport { MarcyImageComponent } from \"../marcy-image/marcy-image.component\";\nimport { VideoSrcDirective } from \"../marcy-video\";\nimport { MarcyVideoComponent } from \"../marcy-video/marcy-video.component\";\n\n@Component({\n\tselector: \"bon-media\",\n\n\timports: [MarcyImageComponent, MarcyVideoComponent, VideoSrcDirective, ImageSrcDirective],\n\ttemplateUrl: \"./marcy-media.component.html\",\n\tstyleUrl: \"./marcy-media.component.scss\",\n})\nexport class MarcyMediaComponent {\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly isLoaded = output<void>();\n\n\tpublic readonly src = input<M_CORE.Video | M_CORE.Image | undefined>();\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic onLoad() {\n\t\tthis.isLoaded.emit();\n\t}\n}\n","@if (src(); as mediaSrc) {\n @if (mediaSrc.type === 'image') {\n <bon-image\n [imgsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-image>\n } @else if (mediaSrc.type === 'video') {\n <bon-video\n [vidsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-video>\n }\n}\n","import type { Type } from \"@angular/core\";\n\nimport type { IBoneComponent } from \"./IBoneComponent\";\n\nexport class BoneMap extends Map<string, Type<any>> {\n\tpublic getRequired(key: string): Type<IBoneComponent> {\n\t\tconst value = this.get(key);\n\n\t\tif (value === undefined || value === null) {\n\t\t\tthrow new Error(`BoneMap doesn't contain type for key = ${key}`);\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","import { Directive, model } from \"@angular/core\";\n\nimport type { Bone } from \"../generated\";\n\n@Directive({\n\tselector: \"[bonBoneDir]\",\n})\nexport class BoneDirective<T extends Bone = Bone> {\n\tpublic readonly bone = model.required<T>();\n}\n\nexport const BONE_DIRECTIVE_WITH_INPUTS_AND_OUTPUTS = {\n\tdirective: BoneDirective,\n\tinputs: [\"bone\"],\n\toutputs: [\"boneChange\"],\n};\n","import { Directive, inject, ViewContainerRef } from \"@angular/core\";\n\n@Directive({\n\tselector: \"[bonSkeletonAnchor]\",\n})\nexport class SkeletonAnchorDirective {\n\tpublic readonly viewContainerRef = inject(ViewContainerRef);\n}\n","import { JsonPipe } from \"@angular/common\";\nimport { Component, inject } from \"@angular/core\";\n\nimport type { Bone } from \"../generated\";\nimport { BoneDirective } from \"./bone.directive\";\nimport type { IBoneComponent } from \"./IBoneComponent\";\n\n@Component({\n\tselector: \"bon-unknown-bone\",\n\n\timports: [JsonPipe],\n\thostDirectives: [{ directive: BoneDirective, inputs: [\"bone\"], outputs: [\"boneChange\"] }],\n\ttemplate: `@if (bd.bone(); as bone) {\n <h2>unknown bone {{bone.type}}</h2>\n <div>{{bone | json}}</div>\n } @else{\n bone is undefined\n }`,\n\tstyles: [\n\t\t`:host{\n display: block;\n border: 2px solid red;\n box-sizing: border-box;\n }`,\n\t],\n})\nexport class UnknownBoneComponent implements IBoneComponent {\n\tpublic readonly bd = inject(BoneDirective<Bone>, { host: true });\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\teffect,\n\tinput,\n\ttype Type,\n\tviewChild,\n} from \"@angular/core\";\n\nimport type { Bone } from \"../generated\";\nimport type { IBoneComponent } from \"./IBoneComponent\";\nimport { SkeletonAnchorDirective } from \"./skeleton-anchor.directive\";\nimport { UnknownBoneComponent } from \"./unknown-bone.component\";\n\n@Component({\n\tselector: \"bon-skeleton\",\n\timports: [SkeletonAnchorDirective],\n\ttemplateUrl: \"./skeleton.component.html\",\n\tstyleUrl: \"./skeleton.component.scss\",\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonComponent {\n\tpublic readonly skeletonAnchor = viewChild.required(SkeletonAnchorDirective);\n\n\tpublic readonly map = input.required<Map<string, Type<IBoneComponent>>>();\n\n\tpublic readonly bones = input.required<Bone[]>();\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst anchor = this.skeletonAnchor();\n\t\t\tconst bones = this.bones();\n\t\t\tconst mapVal = this.map();\n\n\t\t\tconst viewContainerRef = anchor.viewContainerRef;\n\t\t\tviewContainerRef.clear();\n\n\t\t\tif (mapVal === undefined || mapVal === null) {\n\t\t\t\tthrow new Error('add type map with input: [map]=\"...\"');\n\t\t\t}\n\n\t\t\tfor (const bone of bones) {\n\t\t\t\tlet componentType = mapVal.get(bone.type);\n\n\t\t\t\tif (componentType === undefined || componentType === null) {\n\t\t\t\t\tconsole.warn(`Mapping type for ${bone.type} not found`);\n\t\t\t\t\tcomponentType = UnknownBoneComponent;\n\t\t\t\t}\n\n\t\t\t\tviewContainerRef.createComponent(componentType).setInput(\"bone\", bone);\n\t\t\t}\n\t\t});\n\t}\n}\n","<ng-template bonSkeletonAnchor></ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["utils.distinct","utils.descendingT","utils.generateSizesString","utils.groupBy","utils.ascendingT","i1.BoneDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"candy-kingdom-bonnie.mjs","sources":["../../../../libs/bonnie/src/lib/core/device.service.ts","../../../../libs/bonnie/src/lib/core/device.service.base.ts","../../../../libs/bonnie/src/lib/core/emptyBone.ts","../../../../libs/bonnie/src/lib/core/emptyImage.ts","../../../../libs/bonnie/src/lib/core/emptyLocalizedString.ts","../../../../libs/bonnie/src/lib/core/emptyVideo.ts","../../../../libs/bonnie/src/lib/core/encode-uri.pipe.ts","../../../../libs/bonnie/src/lib/core/intersection.component.ts","../../../../libs/bonnie/src/lib/core/MediaObjectFit.ts","../../../../libs/bonnie/src/lib/core/MediaStatus.ts","../../../../libs/bonnie/src/lib/core/utils.ts","../../../../libs/bonnie/src/lib/core/src.directive.ts","../../../../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.ts","../../../../libs/bonnie/src/lib/generated/file-src-base.ts","../../../../libs/bonnie/src/lib/generated/i-equatable.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route-with-data.ts","../../../../libs/bonnie/src/lib/generated/i-have-skeleton.ts","../../../../libs/bonnie/src/lib/generated/i-page.ts","../../../../libs/bonnie/src/lib/generated/image.ts","../../../../libs/bonnie/src/lib/generated/image-meta.ts","../../../../libs/bonnie/src/lib/generated/image-source.ts","../../../../libs/bonnie/src/lib/generated/localized-object.ts","../../../../libs/bonnie/src/lib/generated/localized-string.ts","../../../../libs/bonnie/src/lib/generated/media-source.ts","../../../../libs/bonnie/src/lib/generated/media-source-base.ts","../../../../libs/bonnie/src/lib/generated/open-graph-data.ts","../../../../libs/bonnie/src/lib/generated/page.ts","../../../../libs/bonnie/src/lib/generated/page-base.ts","../../../../libs/bonnie/src/lib/generated/page-data.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.ts","../../../../libs/bonnie/src/lib/generated/video-meta.ts","../../../../libs/bonnie/src/lib/generated/video-source.ts","../../../../libs/bonnie/src/lib/generated/view.ts","../../../../libs/bonnie/src/lib/generated/index.ts","../../../../libs/bonnie/src/lib/localization/LocalizeServiceBase.ts","../../../../libs/bonnie/src/lib/localization/localize.pipe.ts","../../../../libs/bonnie/src/lib/marcy-image/getDefaultSrc.ts","../../../../libs/bonnie/src/lib/marcy-image/imgsrc.directive.ts","../../../../libs/bonnie/src/lib/marcy-image/toHtmlSources.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/BoneMap.ts","../../../../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/candy-kingdom-bonnie.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\n\nimport type { DeviceServiceBase } from \"./device.service.base\";\n\n@Injectable()\nexport class DeviceService implements DeviceServiceBase {\n\tpublic readonly devicePixelRatio = typeof window === \"undefined\" ? 1 : window.devicePixelRatio;\n\tpublic readonly isSSR = typeof window === \"undefined\";\n}\n","export abstract class DeviceServiceBase {\n\tpublic abstract get isSSR(): boolean;\n\tpublic abstract get devicePixelRatio(): number;\n}\n","import type { Bone } from \"../generated\";\n\nexport function emptyBone(): Bone {\n\treturn {\n\t\tstyle: \"\",\n\t\tmediaQuery: \"\",\n\t\tenabled: true,\n\t\ttype: \"\",\n\t};\n}\n","import type { Image } from \"../generated\";\n\nexport function emptyImage(): Image {\n\treturn {\n\t\t$type: \"image\", // todo: remove\n\t\ttype: \"image\",\n\t\tsources: [],\n\t};\n}\n","import type { LocalizedString } from \"../generated\";\n\nexport function emptyLocalizedString(): LocalizedString {\n\treturn {};\n}\n","import type { Video } from \"../generated\";\n\nexport function emptyVideo(): Video {\n\treturn {\n\t\t$type: \"video\", // todo: remove\n\t\ttype: \"video\",\n\t\tsources: [],\n\t};\n}\n","import { Pipe, type PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"encodeURIComponent\", pure: true })\nexport class EncodeURIComponentPipe implements PipeTransform {\n\tpublic transform(value: string): string {\n\t\treturn encodeURIComponent(value);\n\t}\n}\n","import {\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from \"@angular/core\";\n\n@Component({\n\tselector: \"bon-intersection\",\n\ttemplate: \"<ng-content></ng-content>\",\n\tstyles: [\":host{display:block}\"],\n})\nexport class IntersectionComponent {\n\tpublic readonly intersected = output<void>();\n\n\tpublic readonly session = input<unknown>();\n\n\tprivate readonly _hostRef = inject(ElementRef);\n\n\tprivate readonly _intersectionObserver?: IntersectionObserver;\n\tprivate readonly _isIntersected = signal<boolean>(false);\n\n\tpublic readonly isIntersected = this._isIntersected.asReadonly();\n\n\tprivate _session: unknown; // todo: remove\n\n\tconstructor() {\n\t\tif (typeof window === \"undefined\" || typeof IntersectionObserver === \"undefined\") {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._intersectionObserver = new IntersectionObserver(this.onIntersection.bind(this));\n\n\t\teffect(() => {\n\t\t\tif (this._isIntersected()) {\n\t\t\t\tthis.intersected.emit();\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst newSession = this.session();\n\n\t\t\tif (this._session === newSession) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log(\"reset intersection Observer\");\n\t\t\tthis._session = newSession;\n\t\t\tthis.reset();\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => this._intersectionObserver?.disconnect());\n\t}\n\n\tprivate reset(): void {\n\t\tif (this._intersectionObserver === undefined || this._intersectionObserver === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._intersectionObserver.unobserve(this._hostRef.nativeElement);\n\n\t\tthis._isIntersected.set(false);\n\n\t\tthis._intersectionObserver.observe(this._hostRef.nativeElement);\n\t}\n\n\tprivate onIntersection(\n\t\tentries: IntersectionObserverEntry[],\n\t\tobserver: IntersectionObserver,\n\t): void {\n\t\tif (entries.length > 1) {\n\t\t\tconsole.warn(\"multi entries!\");\n\t\t}\n\n\t\tconst isIntersecting = entries[0].isIntersecting;\n\t\tthis._isIntersected.set(isIntersecting);\n\n\t\tconsole.log(`intersected ${isIntersecting}`, this._hostRef.nativeElement);\n\n\t\t// only once will recieve intersection\n\t\tif (isIntersecting) {\n\t\t\tobserver.unobserve(this._hostRef.nativeElement);\n\t\t}\n\t}\n}\n","export enum MediaObjectFit {\n\tOriginal = \"Original\",\n\tCover = \"Cover\",\n\tContain = \"Contain\",\n}\n","export enum MediaStatus {\n\tNotSet = \"NotSet\",\n\tNotLoaded = \"NotLoaded\",\n\tLoading = \"Loading\",\n\tLoaded = \"Loaded\",\n}\n","import type * as M_CORE from \"../generated\";\n\n// https://stackoverflow.com/questions/42136098/array-groupby-in-typescript\n\nexport const groupBy = <T, K extends keyof any>(arr: T[], key: (i: T) => K) =>\n\tarr.reduce(\n\t\t(groups, item) => {\n\t\t\t(groups[key(item)] ||= []).push(item);\n\t\t\treturn groups;\n\t\t},\n\t\t{} as Record<K, T[]>,\n\t);\n\nexport function distinct<T>(value: T, index: number, array: T[]) {\n\treturn array.indexOf(value) === index;\n}\n\nexport function ascending(a: number, b: number) {\n\treturn a - b;\n}\n\nexport function ascendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\n\treturn (a: T, b: T) => ascending(sel(a), sel(b));\n}\n\nexport function descending(a: number, b: number) {\n\treturn b - a;\n}\n\nexport function descendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\n\treturn (a: T, b: T) => descending(sel(a), sel(b));\n}\n\nexport function generateSizesString(sizes: M_CORE.SizesItem[]): string {\n\tconst sizesString = sizes\n\t\t.sort((x) => x.width)\n\t\t.map((x) => `${x.mediaQuery} ${x.width}${x.unit.toLowerCase()}`.trim())\n\t\t.join(\",\");\n\n\treturn sizesString;\n}\n\nexport function matchesMediaQuery(mediaQuery?: string): boolean {\n\tconst isEmptyQuery =\n\t\tmediaQuery === null || mediaQuery === undefined || mediaQuery.trim().length === 0;\n\n\t// work for SSR and browser\n\tif (isEmptyQuery) {\n\t\treturn true;\n\t}\n\n\t// other queries disallowed in SSR\n\tif (typeof window === \"undefined\") {\n\t\treturn false;\n\t}\n\n\tconst mediaQueryList = window.matchMedia(mediaQuery);\n\n\treturn mediaQueryList.matches;\n}\n\nexport function isLocalUrlString(url: string): boolean {\n\tif (url === undefined || url === null || url.trim().length === 0) {\n\t\treturn true;\n\t}\n\n\tif (url.startsWith(\"//\")) {\n\t\treturn false;\n\t}\n\n\tif (url.startsWith(\"./\") || url.startsWith(\"/\")) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","import {\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tinject,\n\ttype ModelSignal,\n\toutput,\n\tsignal,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\n\nimport { fromEvent, merge, NEVER, type Observable, Subject, takeUntil } from \"rxjs\";\n\nimport type * as M_CORE from \"../generated\";\nimport * as utils from \"./utils\";\n\n@Directive()\nexport abstract class SrcBaseDirective<T extends M_CORE.Image | M_CORE.Video> {\n\tpublic readonly ratioChange = output<number>();\n\n\tprivate readonly _ratio = signal<number>(0);\n\tpublic readonly ratio = this._ratio.asReadonly();\n\n\tprivate readonly _queryChangeClearSubject = new Subject<void>();\n\n\tpublic abstract readonly data: ModelSignal<T | undefined>;\n\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst ratio = this._ratio();\n\t\t\tthis.ratioChange.emit(ratio);\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst val = this.data();\n\t\t\tthis.onSrcChange(val);\n\t\t});\n\t}\n\n\tprivate onSrcChange(val: T | undefined): void {\n\t\tif (val !== undefined && val !== null && val.sources.length === 0) {\n\t\t\tconsole.warn(\"image should have sources!\");\n\t\t\tthis.data.set(undefined);\n\t\t\treturn;\n\t\t}\n\n\t\t// clear mediaQuery subscriptions\n\t\tthis._queryChangeClearSubject.next();\n\n\t\t// ratio\n\t\tthis._ratio.set(0);\n\n\t\tif (val === undefined || val.sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst allRatios = val.sources\n\t\t\t.flatMap((x) => x.srcSet)\n\t\t\t.map((x) => x.meta.ratio)\n\t\t\t.filter(utils.distinct);\n\n\t\tif (allRatios.length === 1) {\n\t\t\t// same ratio for all\n\t\t\tthis._ratio.set(allRatios[0]);\n\t\t\treturn;\n\t\t}\n\n\t\t// todo: check if this needed to be unsubscribed\n\t\tthis.watchMediaQueries().subscribe(() => {\n\t\t\tthis.calcRatio();\n\t\t\tconsole.log(\"watchMediaQueries calcRatio\");\n\t\t});\n\n\t\tthis.calcRatio();\n\t}\n\n\tprivate calcRatio(): void {\n\t\tconst data = this.data();\n\t\tif (data === undefined || data === null || data.sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < data.sources.length; i++) {\n\t\t\tconst source = data.sources[i];\n\t\t\tconst srcRatios = source.srcSet\n\t\t\t\t.sort(utils.descendingT((x) => x.meta.width))\n\t\t\t\t.map((x) => x.meta.ratio)\n\t\t\t\t.filter(utils.distinct);\n\n\t\t\tif (srcRatios.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (srcRatios.length > 1) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`each source should have srcSet with same ratio. founded: ${srcRatios.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst ratio = srcRatios[0]; // most accurate ratio in biggest image\n\n\t\t\tif (source.mediaQuery.length === 0) {\n\t\t\t\tthis._ratio.set(ratio);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof window === \"undefined\" || typeof window.matchMedia === \"undefined\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst mediaQueryList = window.matchMedia(source.mediaQuery);\n\n\t\t\tif (mediaQueryList.matches) {\n\t\t\t\tthis._ratio.set(ratio);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic watchMediaQueries(): Observable<MediaQueryListEvent> {\n\t\tconsole.log(\"watchMediaQueries\");\n\t\tconst src = this.data();\n\n\t\tif (\n\t\t\tsrc === undefined ||\n\t\t\tsrc === null ||\n\t\t\ttypeof window === \"undefined\" ||\n\t\t\ttypeof window.matchMedia === \"undefined\"\n\t\t) {\n\t\t\treturn NEVER.pipe(\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t\ttakeUntil(this._queryChangeClearSubject),\n\t\t\t);\n\t\t}\n\n\t\tconst mediaQueries = src.sources\n\t\t\t.map((x) => x.mediaQuery)\n\t\t\t.filter(utils.distinct)\n\t\t\t.filter((x) => x.length > 0);\n\n\t\tconsole.log(\"watchMediaQueries mediaQueries\", mediaQueries);\n\t\tconst queryObservables = mediaQueries.map((media) => {\n\t\t\tconst queryList = window.matchMedia(media);\n\t\t\tconst observable = fromEvent<MediaQueryListEvent>(queryList, \"change\").pipe(\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t\ttakeUntil(this._queryChangeClearSubject),\n\t\t\t);\n\n\t\t\treturn observable;\n\t\t});\n\n\t\tconst combinedObservable = merge(...queryObservables);\n\t\treturn combinedObservable;\n\t}\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface Bone {\n\tstyle: string;\n\tmediaQuery: string;\n\tenabled: boolean;\n\ttype: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileFormat {\n\textension: string;\n\tmimeType: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileMeta {\n\tbyteCount: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\nimport type { FileSrcBase } from \"./file-src-base\";\n\nexport interface FileSrc<T extends FileMeta> extends FileSrcBase {\n\tmeta: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileSrcBase {\n\tmimeType: string;\n\turl: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport type IEquatable<_T> = {};\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface IHaveDataRoute {\n\tdataRoute: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { IHaveDataRoute } from \"./i-have-data-route\";\n\nexport interface IHaveDataRouteWithData<T> extends IHaveDataRoute {\n\tdata: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\n\nexport interface IHaveSkeleton {\n\tbones: Bone[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PageData } from \"./page-data\";\n\nexport interface IPage<TData extends PageData> {\n\tdata: TData;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { ImageSource } from \"./image-source\";\nimport type { PixMedia } from \"./pix-media\";\n\nexport interface Image extends PixMedia {\n\treadonly $type: \"image\";\n\tsources: ImageSource[];\n\ttype: \"image\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface ImageMeta extends PixMeta {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { ImageMeta } from \"./image-meta\";\nimport type { MediaSource } from \"./media-source\";\nimport type { SizesItem } from \"./sizes-item\";\n\nexport interface ImageSource extends MediaSource<ImageMeta> {\n\tsizes: SizesItem[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface LocalizedObject<T> {\n\t[locale: string]: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { LocalizedObject } from \"./localized-object\";\n\nexport interface LocalizedString extends LocalizedObject<string> {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\nimport type { FileSrc } from \"./file-src\";\nimport type { MediaSourceBase } from \"./media-source-base\";\n\nexport interface MediaSource<TMeta extends FileMeta> extends MediaSourceBase {\n\tsrcSet: FileSrc<TMeta>[];\n\tmediaQuery: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileSrcBase } from \"./file-src-base\";\n\nexport interface MediaSourceBase {\n\tsrcSet: FileSrcBase[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileSrc } from \"./file-src\";\nimport type { ImageMeta } from \"./image-meta\";\nimport type { LocalizedObject } from \"./localized-object\";\nimport type { LocalizedString } from \"./localized-string\";\n\nexport interface OpenGraphData {\n\ttitle: LocalizedString;\n\tdescription: LocalizedString;\n\timage: LocalizedObject<FileSrc<ImageMeta>>;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PageBase } from \"./page-base\";\nimport type { PageData } from \"./page-data\";\n\nexport interface Page<T extends PageData> extends PageBase {\n\tdata: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\nimport type { LocalizedString } from \"./localized-string\";\nimport type { OpenGraphData } from \"./open-graph-data\";\nimport type { PublishStatus } from \"./publish-status\";\n\nexport interface PageBase {\n\tid: string;\n\turl: string;\n\troute: string;\n\torder: number;\n\tpublishStatus: PublishStatus;\n\ttitle: LocalizedString;\n\topenGraph: OpenGraphData;\n\tbones: Bone[];\n\tchildren: PageBase[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface PageData {\n\ttype: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { MediaSourceBase } from \"./media-source-base\";\n\nexport interface PixMedia {\n\tsources: MediaSourceBase[];\n\ttype: \"image\" | \"video\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\n\nexport interface PixMeta extends FileMeta {\n\twidth: number;\n\theight: number;\n\tratio: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport enum PublishStatus {\n\tNotSet = 0,\n\tDraft = 1,\n\tPublished = 2,\n\tArchived = 3,\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { SizesWidthUnit } from \"./sizes-width-unit\";\n\nexport interface SizesItem {\n\twidth: number;\n\tunit: SizesWidthUnit;\n\tmediaQuery: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport enum SizesWidthUnit {\n\tPx = \"Px\",\n\tEm = \"Em\",\n\tVw = \"Vw\",\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface SvgMeta extends PixMeta {\n\tpreciseWidth: number;\n\tpreciseHeight: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMedia } from \"./pix-media\";\nimport type { VideoSource } from \"./video-source\";\n\nexport interface Video extends PixMedia {\n\treadonly $type: \"video\";\n\tsources: VideoSource[];\n\ttype: \"video\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface VideoMeta extends PixMeta {\n\tduration: number;\n\tfullFormat: string;\n\thasAudio: boolean;\n\tframeRate: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { MediaSource } from \"./media-source\";\nimport type { VideoMeta } from \"./video-meta\";\n\nexport interface VideoSource extends MediaSource<VideoMeta> {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\n\nexport interface View {\n\tid: string;\n\tcode: string;\n\tbones: Bone[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport * from \"./bone\";\nexport * from \"./file-format\";\nexport * from \"./file-meta\";\nexport * from \"./file-src\";\nexport * from \"./file-src-base\";\nexport * from \"./i-equatable\";\nexport * from \"./i-have-data-route\";\nexport * from \"./i-have-data-route-with-data\";\nexport * from \"./i-have-skeleton\";\nexport * from \"./i-page\";\nexport * from \"./image\";\nexport * from \"./image-meta\";\nexport * from \"./image-source\";\nexport * from \"./localized-object\";\nexport * from \"./localized-string\";\nexport * from \"./media-source\";\nexport * from \"./media-source-base\";\nexport * from \"./open-graph-data\";\nexport * from \"./page\";\nexport * from \"./page-base\";\nexport * from \"./page-data\";\nexport * from \"./pix-media\";\nexport * from \"./pix-meta\";\nexport * from \"./publish-status\";\nexport * from \"./sizes-item\";\nexport * from \"./sizes-width-unit\";\nexport * from \"./svg-meta\";\nexport * from \"./video\";\nexport * from \"./video-meta\";\nexport * from \"./video-source\";\nexport * from \"./view\";\n","import type { Signal } from \"@angular/core\";\n\nimport { isLocalUrlString } from \"../core/utils\";\nimport type { LocalizedObject, LocalizedString } from \"../generated\";\n\nexport abstract class LocalizeServiceBase {\n\tpublic abstract get locale(): Signal<string>;\n\n\tpublic getLocalized<T>(value: LocalizedObject<T>, defaultValue: T, locale?: string): T {\n\t\tif (value === undefined) {\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\tlocale = locale ?? this.locale();\n\n\t\tconst obj = value[locale] ?? defaultValue;\n\t\treturn obj;\n\t}\n\n\tpublic getLocalizedText(value: LocalizedString, locale?: string): string {\n\t\treturn this.getLocalized<string>(value, \"\", locale);\n\t}\n\n\tpublic isLocalUrl(value: LocalizedString, locale?: string): boolean {\n\t\tconst url = this.getLocalizedText(value, locale);\n\t\treturn isLocalUrlString(url);\n\t}\n}\n","import { inject, Pipe, type PipeTransform } from \"@angular/core\";\nimport { DomSanitizer, type SafeResourceUrl } from \"@angular/platform-browser\";\n\nimport type { LocalizedObject, LocalizedString } from \"../generated\";\nimport { LocalizeServiceBase } from \"./LocalizeServiceBase\";\n\n@Pipe({ name: \"localize\", pure: false })\nexport class LocalizePipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): string {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\treturn this._localizeService.getLocalizedText(value, locale);\n\t}\n}\n\n@Pipe({ name: \"localizeObject\", pure: false })\nexport class LocalizeObjectPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform<T>(object: LocalizedObject<T>, locale?: string): T | undefined {\n\t\tif (object === undefined || object === null) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this._localizeService.getLocalized<T | undefined>(object, undefined, locale);\n\t}\n}\n\n@Pipe({ name: \"localizationIsNotEmpty\", pure: false })\nexport class LocalizationIsNotEmptyPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst text = this._localizeService.getLocalizedText(value, locale);\n\n\t\tconst isNotEmpty = text.trim().length > 0;\n\t\treturn isNotEmpty;\n\t}\n}\n\n@Pipe({ name: \"localizationIsEmpty\", pure: false })\nexport class LocalizationIsEmptyPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst text = this._localizeService.getLocalizedText(value, locale);\n\n\t\tconst isEmpty = text.trim().length === 0;\n\t\treturn isEmpty;\n\t}\n}\n\n@Pipe({ name: \"localizeUrl\", pure: false })\nexport class LocalizeUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\tprivate readonly _domSanitizer = inject(DomSanitizer);\n\n\tpublic transform(value: LocalizedString, locale?: string): SafeResourceUrl {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst urlString = this._localizeService.getLocalizedText(value, locale);\n\t\tconst safeUrl = this._domSanitizer.bypassSecurityTrustResourceUrl(urlString);\n\t\treturn safeUrl;\n\t}\n}\n\n@Pipe({ name: \"isLocalUrl\", pure: false })\nexport class IsLocalUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst isLocal = this._localizeService.isLocalUrl(value, locale);\n\t\treturn isLocal;\n\t}\n}\n\n@Pipe({ name: \"isNotLocalUrl\", pure: false })\nexport class IsNotLocalUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst isLocal = this._localizeService.isLocalUrl(value, locale);\n\t\treturn !isLocal;\n\t}\n}\n","import * as utils from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\n\nexport function getDefaultSrc(\n\timage: M_CORE.Image | undefined,\n): M_CORE.FileSrc<M_CORE.ImageMeta> | undefined {\n\tif (image === undefined || image === null) {\n\t\treturn undefined;\n\t}\n\n\tconst files = image.sources.flatMap((x) => x.srcSet).sort(utils.descendingT((x) => x.meta.width));\n\n\tconst prefferedFiles = files.filter(\n\t\t(x) => x.mimeType === \"image/jpeg\" || x.mimeType === \"image/png\" || x.mimeType === \"image/gif\",\n\t);\n\n\tif (prefferedFiles.length > 0) {\n\t\treturn prefferedFiles[0];\n\t}\n\n\tif (files.length > 0) {\n\t\treturn files[0];\n\t}\n\n\treturn undefined;\n}\n","import { Directive, model } from \"@angular/core\";\n\nimport { SrcBaseDirective } from \"../core/src.directive\";\nimport type * as M_CORE from \"../generated\";\n\n@Directive({\n\tselector: \"[imgsrc]\",\n})\nexport class ImageSrcDirective extends SrcBaseDirective<M_CORE.Image> {\n\tpublic readonly data = model<M_CORE.Image | undefined>(undefined, { alias: \"imgsrc\" });\n}\n","import * as utils from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\nimport type { IHtmlPictureSource } from \"./IHtmlPictureSource\";\n\nexport function toHtmlPictureSources(imageSource: M_CORE.ImageSource): IHtmlPictureSource[] {\n\tconst sizes = utils.generateSizesString(imageSource.sizes);\n\tconst groupedByMime = utils.groupBy(imageSource.srcSet, (x) => x.mimeType);\n\n\tconst simpleSources: IHtmlPictureSource[] = [];\n\n\tfor (const mime in groupedByMime) {\n\t\tconst fileSrcs = groupedByMime[mime].sort(utils.ascendingT((x) => x.meta.width));\n\n\t\tconst srcSet = fileSrcs.map((x) => `${x.url} ${x.meta.width}w`).join(\",\");\n\n\t\tconst source: IHtmlPictureSource = { mime, sizes, srcSet, media: imageSource.mediaQuery };\n\n\t\tsimpleSources.push(source);\n\t}\n\n\treturn simpleSources;\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport { Component, effect, inject, input, output, signal } from \"@angular/core\";\n\nimport { DeviceServiceBase } from \"../core/device.service.base\";\nimport { IntersectionComponent } from \"../core/intersection.component\";\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport { MediaStatus } from \"../core/MediaStatus\";\nimport type * as M_CORE from \"../generated\";\nimport { getDefaultSrc } from \"./getDefaultSrc\";\nimport type { IHtmlPictureSource } from \"./IHtmlPictureSource\";\nimport { ImageSrcDirective } from \"./imgsrc.directive\";\nimport { toHtmlPictureSources } from \"./toHtmlSources\";\n\n@Component({\n\tselector: \"bon-image\",\n\n\timports: [NgTemplateOutlet, IntersectionComponent],\n\ttemplateUrl: \"./marcy-image.component.html\",\n\tstyleUrl: \"./marcy-image.component.scss\",\n})\nexport class MarcyImageComponent {\n\tpublic readonly MediaStatus = MediaStatus;\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly src: ImageSrcDirective;\n\n\tpublic readonly isLoaded = output<void>();\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic readonly sources = signal<IHtmlPictureSource[]>([]);\n\tpublic readonly status = signal<MediaStatus>(MediaStatus.NotSet);\n\tpublic readonly defaultSrc = signal(\"\");\n\n\tpublic readonly device = inject(DeviceServiceBase);\n\n\tconstructor() {\n\t\tconst src = inject(ImageSrcDirective, { optional: true });\n\n\t\tif (src === undefined || src === null) {\n\t\t\tthrow new Error(\n\t\t\t\t`${MarcyImageComponent.name} should have [imgsrc] directive as source object`,\n\t\t\t);\n\t\t}\n\n\t\tthis.src = src;\n\n\t\teffect(() => {\n\t\t\tthis.onSrcChange(this.src.data());\n\t\t});\n\n\t\teffect(() => {\n\t\t\tif (this.status() === MediaStatus.Loaded) {\n\t\t\t\tthis.isLoaded.emit();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate onSrcChange(val: M_CORE.Image | undefined) {\n\t\tthis.defaultSrc.set(getDefaultSrc(val)?.url ?? \"\");\n\n\t\tif (val === undefined || val === null || val.sources.length === 0) {\n\t\t\tthis.sources.set([]);\n\t\t\tthis.status.set(MediaStatus.NotSet);\n\t\t\treturn;\n\t\t}\n\n\t\tconst newSources = val.sources.flatMap(toHtmlPictureSources);\n\t\tthis.sources.set(newSources);\n\t\tthis.status.set(MediaStatus.NotLoaded);\n\t}\n\n\tpublic onLoad() {\n\t\tthis.status.set(MediaStatus.Loaded);\n\t}\n}\n","@if (sources().length > 0) {\n <div [class.knownRatio]=\"src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"picture-container\">\n\n <ng-template #pictureTemplate>\n <picture>\n @for (source of sources(); track $index) {\n <source [srcset]=\"source.srcSet\"\n [attr.media]=\"source.media.length > 0 ? source.media : undefined\"\n [attr.type]=\"source.mime.length > 0 ? source.mime : undefined\"\n [attr.sizes]=\"source.sizes.length > 0 ? source.sizes : undefined\" />\n }\n <img [src]=\"defaultSrc()\" (load)=\"onLoad()\" alt=\"\" />\n </picture>\n </ng-template>\n\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n </noscript>\n } @else {\n <bon-intersection #intersectionZone [session]=\"src\">\n @if (intersectionZone.isIntersected()) {\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n }\n </bon-intersection>\n }\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() +'%'\"></div>\n }\n </div>\n}\n","import { Directive, model } from \"@angular/core\";\n\nimport { SrcBaseDirective } from \"../core/src.directive\";\nimport type * as M_CORE from \"../generated\";\n\n@Directive({\n\tselector: \"[vidsrc]\",\n})\nexport class VideoSrcDirective extends SrcBaseDirective<M_CORE.Video> {\n\tpublic readonly data = model<M_CORE.Video | undefined>(undefined, { alias: \"vidsrc\" });\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n\tComponent,\n\ttype ElementRef,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tviewChild,\n} from \"@angular/core\";\n\nimport { DeviceServiceBase } from \"../core/device.service.base\";\nimport { IntersectionComponent } from \"../core/intersection.component\";\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport { MediaStatus } from \"../core/MediaStatus\";\nimport { descendingT, matchesMediaQuery } from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\nimport { VideoSrcDirective } from \"./vidsrc.directive\";\n\nfunction isWebM(src: M_CORE.FileSrc<M_CORE.ImageMeta>): boolean {\n\treturn src.mimeType === \"video/webm\";\n}\n\n@Component({\n\tselector: \"bon-video\",\n\n\timports: [NgTemplateOutlet, IntersectionComponent],\n\ttemplateUrl: \"./marcy-video.component.html\",\n\tstyleUrl: \"./marcy-video.component.scss\",\n})\nexport class MarcyVideoComponent {\n\tpublic readonly MediaStatus = MediaStatus;\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly src: VideoSrcDirective;\n\n\tpublic readonly isLoaded = output<void>();\n\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic readonly videoRef = viewChild<ElementRef<HTMLVideoElement>>(\"video\");\n\n\tpublic readonly status = signal<MediaStatus>(MediaStatus.NotSet);\n\tpublic readonly source = signal<M_CORE.FileSrc<M_CORE.VideoMeta> | undefined>(undefined);\n\n\tpublic readonly device = inject(DeviceServiceBase);\n\n\tprivate readonly _srcDir = inject(VideoSrcDirective, { optional: true });\n\n\tconstructor() {\n\t\tif (this._srcDir === undefined || this._srcDir === null) {\n\t\t\tthrow new Error(\n\t\t\t\t`${MarcyVideoComponent.name} should have [vidsrc] directive as source object`,\n\t\t\t);\n\t\t}\n\n\t\tthis.src = this._srcDir;\n\n\t\teffect(() => {\n\t\t\tthis.src.data();\n\t\t\tthis.videoRef();\n\t\t\tthis.updateSources();\n\t\t\tthis.subscribeToMediaQueryChange();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tif (this.status() === MediaStatus.Loaded) {\n\t\t\t\tthis.isLoaded.emit();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate subscribeToMediaQueryChange(): void {\n\t\tthis.src.watchMediaQueries().subscribe(() => {\n\t\t\tconsole.log(\"MarcyVideoComponent watchMediaQueries\");\n\t\t\tthis.updateSources();\n\t\t});\n\t}\n\n\tprivate updateSources() {\n\t\tconsole.log(\"MarcyVideoComponent updateSources\");\n\n\t\tthis.source.set(this.findMoreSuitableSource());\n\n\t\tconsole.log(\"MarcyVideoComponent new source\", this.source());\n\n\t\tconst src = this.source();\n\n\t\tif (this.status() === MediaStatus.NotSet && src === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (src === undefined) {\n\t\t\tthis.status.set(MediaStatus.NotSet);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.status.set(MediaStatus.NotLoaded);\n\t}\n\n\tpublic onLoad() {\n\t\tthis.status.set(MediaStatus.Loaded);\n\t}\n\n\tprivate findMoreSuitableSource(): M_CORE.FileSrc<M_CORE.VideoMeta> | undefined {\n\t\tconst ref = this.videoRef();\n\t\tif (ref === undefined) {\n\t\t\tconsole.log(\"skipping findMoreSuitableSource. videoRef is empty still\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst videoSources = this.src.data()?.sources ?? [];\n\n\t\tconst currentVideoWidth = ref.nativeElement.clientWidth;\n\t\tconst realPixelsVideoWidth = this.device.devicePixelRatio * currentVideoWidth;\n\n\t\tconsole.log(`MarcyVideoComponent currentVideoWidth ${currentVideoWidth}`);\n\t\tconsole.log(`MarcyVideoComponent realPixelsVideoWidth ${realPixelsVideoWidth}`);\n\n\t\tfor (let i = 0; i < videoSources.length; i++) {\n\t\t\tconst videoSource = videoSources[i];\n\n\t\t\tif (!matchesMediaQuery(videoSource.mediaQuery)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// SSR\n\t\t\tif (typeof ref.nativeElement.canPlayType !== \"function\") {\n\t\t\t\tconst mp4Srcs = videoSource.srcSet\n\t\t\t\t\t.filter((x) => x.mimeType === \"video/mp4\")\n\t\t\t\t\t.sort(descendingT((x) => x.meta.width));\n\n\t\t\t\treturn mp4Srcs[0];\n\t\t\t}\n\n\t\t\tconst fileSrcs = videoSource.srcSet\n\t\t\t\t.filter((x) => ref.nativeElement.canPlayType(x.mimeType))\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.meta.width === b.meta.width) {\n\t\t\t\t\t\treturn isWebM(a) ? -1 : 1; // if same width prefer webM\n\t\t\t\t\t}\n\n\t\t\t\t\t// else prefer smallest\n\t\t\t\t\treturn a.meta.width <= b.meta.width ? -1 : 1;\n\t\t\t\t}); // smallest video\n\n\t\t\tif (fileSrcs.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// console.log('sources ', fileSrcs);\n\n\t\t\tlet bestSrc = fileSrcs[0];\n\n\t\t\tfor (let i = 1; i < fileSrcs.length; i++) {\n\t\t\t\tconst fileSrc = fileSrcs[i];\n\n\t\t\t\tconst currentDiff = fileSrc.meta.width - realPixelsVideoWidth;\n\n\t\t\t\t// console.log(`browser video currentDiff ${currentDiff}`)\n\n\t\t\t\t// too big video source width\n\t\t\t\tif (currentDiff > 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbestSrc = fileSrc;\n\t\t\t}\n\n\t\t\tconsole.log(`browser found suitable video ${bestSrc.url}`);\n\n\t\t\treturn bestSrc;\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n","<div\n [class.knownRatio]=\"\n src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\n \"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"video-container\"\n>\n @if (device.isSSR) {\n <ng-container *ngTemplateOutlet=\"ssrTemplate\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"browserTemplate\"></ng-container>\n }\n\n <ng-template #videoTemplate>\n <video\n #video\n [src]=\"source()?.url ?? ''\"\n (load)=\"onLoad()\"\n (canplay)=\"video.muted = true; video.play()\"\n playsInline\n autoplay\n loop\n muted\n ></video>\n </ng-template>\n\n <ng-template #ssrTemplate>\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </noscript>\n }\n </ng-template>\n\n <ng-template #browserTemplate>\n <bon-intersection #intersectionZone [session]=\"src\">\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </bon-intersection>\n </ng-template>\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() + '%'\"></div>\n }\n</div>\n","import { Component, input, output } from \"@angular/core\";\n\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport type * as M_CORE from \"../generated\";\nimport { ImageSrcDirective } from \"../marcy-image\";\nimport { MarcyImageComponent } from \"../marcy-image/marcy-image.component\";\nimport { VideoSrcDirective } from \"../marcy-video\";\nimport { MarcyVideoComponent } from \"../marcy-video/marcy-video.component\";\n\n@Component({\n\tselector: \"bon-media\",\n\n\timports: [MarcyImageComponent, MarcyVideoComponent, VideoSrcDirective, ImageSrcDirective],\n\ttemplateUrl: \"./marcy-media.component.html\",\n\tstyleUrl: \"./marcy-media.component.scss\",\n})\nexport class MarcyMediaComponent {\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly isLoaded = output<void>();\n\n\tpublic readonly src = input<M_CORE.Video | M_CORE.Image | undefined>();\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic onLoad() {\n\t\tthis.isLoaded.emit();\n\t}\n}\n","@if (src(); as mediaSrc) {\n @if (mediaSrc.type === 'image') {\n <bon-image\n [imgsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-image>\n } @else if (mediaSrc.type === 'video') {\n <bon-video\n [vidsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-video>\n }\n}\n","import type { Type } from \"@angular/core\";\n\nimport type { IBoneComponent } from \"./IBoneComponent\";\n\nexport class BoneMap extends Map<string, Type<any>> {\n\tpublic getRequired(key: string): Type<IBoneComponent> {\n\t\tconst value = this.get(key);\n\n\t\tif (value === undefined || value === null) {\n\t\t\tthrow new Error(`BoneMap doesn't contain type for key = ${key}`);\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","import { Directive, model } from \"@angular/core\";\n\nimport type { Bone } from \"../generated\";\n\n@Directive({\n\tselector: \"[bonBoneDir]\",\n})\nexport class BoneDirective<T extends Bone = Bone> {\n\tpublic readonly bone = model.required<T>();\n}\n","import { Directive, inject, ViewContainerRef } from \"@angular/core\";\n\n@Directive({\n\tselector: \"[bonSkeletonAnchor]\",\n})\nexport class SkeletonAnchorDirective {\n\tpublic readonly viewContainerRef = inject(ViewContainerRef);\n}\n","import { JsonPipe } from \"@angular/common\";\nimport { Component, inject } from \"@angular/core\";\n\nimport type { Bone } from \"../generated\";\nimport { BoneDirective } from \"./bone.directive\";\nimport type { IBoneComponent } from \"./IBoneComponent\";\n\n@Component({\n\tselector: \"bon-unknown-bone\",\n\n\timports: [JsonPipe],\n\thostDirectives: [{ directive: BoneDirective, inputs: [\"bone\"], outputs: [\"boneChange\"] }],\n\ttemplate: `@if (bd.bone(); as bone) {\n <h2>unknown bone {{bone.type}}</h2>\n <div>{{bone | json}}</div>\n } @else{\n bone is undefined\n }`,\n\tstyles: [\n\t\t`:host{\n display: block;\n border: 2px solid red;\n box-sizing: border-box;\n }`,\n\t],\n})\nexport class UnknownBoneComponent implements IBoneComponent {\n\tpublic readonly bd = inject(BoneDirective<Bone>, { host: true });\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\teffect,\n\tinput,\n\ttype Type,\n\tviewChild,\n} from \"@angular/core\";\n\nimport type { Bone } from \"../generated\";\nimport type { IBoneComponent } from \"./IBoneComponent\";\nimport { SkeletonAnchorDirective } from \"./skeleton-anchor.directive\";\nimport { UnknownBoneComponent } from \"./unknown-bone.component\";\n\n@Component({\n\tselector: \"bon-skeleton\",\n\timports: [SkeletonAnchorDirective],\n\ttemplateUrl: \"./skeleton.component.html\",\n\tstyleUrl: \"./skeleton.component.scss\",\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonComponent {\n\tpublic readonly skeletonAnchor = viewChild.required(SkeletonAnchorDirective);\n\n\tpublic readonly map = input.required<Map<string, Type<IBoneComponent>>>();\n\n\tpublic readonly bones = input.required<Bone[]>();\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst anchor = this.skeletonAnchor();\n\t\t\tconst bones = this.bones();\n\t\t\tconst mapVal = this.map();\n\n\t\t\tconst viewContainerRef = anchor.viewContainerRef;\n\t\t\tviewContainerRef.clear();\n\n\t\t\tif (mapVal === undefined || mapVal === null) {\n\t\t\t\tthrow new Error('add type map with input: [map]=\"...\"');\n\t\t\t}\n\n\t\t\tfor (const bone of bones) {\n\t\t\t\tlet componentType = mapVal.get(bone.type);\n\n\t\t\t\tif (componentType === undefined || componentType === null) {\n\t\t\t\t\tconsole.warn(`Mapping type for ${bone.type} not found`);\n\t\t\t\t\tcomponentType = UnknownBoneComponent;\n\t\t\t\t}\n\n\t\t\t\tviewContainerRef.createComponent(componentType).setInput(\"bone\", bone);\n\t\t\t}\n\t\t});\n\t}\n}\n","<ng-template bonSkeletonAnchor></ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["utils.distinct","utils.descendingT","utils.generateSizesString","utils.groupBy","utils.ascendingT","i1.BoneDirective"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -504,11 +504,6 @@ declare class BoneDirective<T extends Bone = Bone> {
|
|
|
504
504
|
static ɵfac: i0.ɵɵFactoryDeclaration<BoneDirective<any>, never>;
|
|
505
505
|
static ɵdir: i0.ɵɵDirectiveDeclaration<BoneDirective<any>, "[bonBoneDir]", never, { "bone": { "alias": "bone"; "required": true; "isSignal": true; }; }, { "bone": "boneChange"; }, never, never, true, never>;
|
|
506
506
|
}
|
|
507
|
-
declare const BONE_DIRECTIVE_WITH_INPUTS_AND_OUTPUTS: {
|
|
508
|
-
directive: typeof BoneDirective;
|
|
509
|
-
inputs: string[];
|
|
510
|
-
outputs: string[];
|
|
511
|
-
};
|
|
512
507
|
|
|
513
508
|
interface IBoneComponent {
|
|
514
509
|
bd: BoneDirective;
|
|
@@ -539,5 +534,5 @@ declare class UnknownBoneComponent implements IBoneComponent {
|
|
|
539
534
|
static ɵcmp: i0.ɵɵComponentDeclaration<UnknownBoneComponent, "bon-unknown-bone", never, {}, {}, never, never, true, [{ directive: typeof BoneDirective; inputs: { "bone": "bone"; }; outputs: { "boneChange": "boneChange"; }; }]>;
|
|
540
535
|
}
|
|
541
536
|
|
|
542
|
-
export {
|
|
537
|
+
export { BoneDirective, BoneMap, DeviceService, DeviceServiceBase, EncodeURIComponentPipe, ImageSrcDirective, IntersectionComponent, IsLocalUrlPipe, IsNotLocalUrlPipe, LocalizationIsEmptyPipe, LocalizationIsNotEmptyPipe, LocalizeObjectPipe, LocalizePipe, LocalizeServiceBase, LocalizeUrlPipe, MarcyImageComponent, MarcyMediaComponent, MarcyVideoComponent, MediaObjectFit, MediaStatus, PublishStatus, SizesWidthUnit, SkeletonAnchorDirective, SkeletonComponent, SrcBaseDirective, UnknownBoneComponent, VideoSrcDirective, emptyBone, emptyImage, emptyLocalizedString, emptyVideo, getDefaultSrc, toHtmlPictureSources };
|
|
543
538
|
export type { Bone, FileFormat, FileMeta, FileSrc, FileSrcBase, FileSrcFileMeta, FileSrcImageMeta, IBoneComponent, IEquatable, IHaveDataRoute, IHaveDataRouteWithData, IHaveSkeleton, IHtmlPictureSource, IPage, Image, ImageMeta, ImageSource, LocalizedObject, LocalizedString, MediaSource, MediaSourceBase, OpenGraphData, Page, PageBase, PageData, PixMedia, PixMediaUnion, PixMeta, SizesItem, SvgMeta, Video, VideoMeta, VideoSource, View };
|