@candy-kingdom/bonnie 0.27.0 → 0.27.1

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.
@@ -79,8 +79,9 @@ class IntersectionComponent {
79
79
  });
80
80
  effect(() => {
81
81
  const newSession = this.session();
82
- if (this._session === newSession)
82
+ if (this._session === newSession) {
83
83
  return;
84
+ }
84
85
  console.log("reset intersection Observer");
85
86
  this._session = newSession;
86
87
  this.reset();
@@ -88,8 +89,9 @@ class IntersectionComponent {
88
89
  inject(DestroyRef).onDestroy(() => this._intersectionObserver?.disconnect());
89
90
  }
90
91
  reset() {
91
- if (this._intersectionObserver === undefined || this._intersectionObserver === null)
92
+ if (this._intersectionObserver === undefined || this._intersectionObserver === null) {
92
93
  return;
94
+ }
93
95
  this._intersectionObserver.unobserve(this._hostRef.nativeElement);
94
96
  this._isIntersected.set(false);
95
97
  this._intersectionObserver.observe(this._hostRef.nativeElement);
@@ -159,21 +161,26 @@ function generateSizesString(sizes) {
159
161
  function matchesMediaQuery(mediaQuery) {
160
162
  const isEmptyQuery = mediaQuery === null || mediaQuery === undefined || mediaQuery.trim().length === 0;
161
163
  // work for SSR and browser
162
- if (isEmptyQuery)
164
+ if (isEmptyQuery) {
163
165
  return true;
166
+ }
164
167
  // other queries disallowed in SSR
165
- if (typeof window === "undefined")
168
+ if (typeof window === "undefined") {
166
169
  return false;
170
+ }
167
171
  const mediaQueryList = window.matchMedia(mediaQuery);
168
172
  return mediaQueryList.matches;
169
173
  }
170
174
  function isLocalUrlString(url) {
171
- if (url === undefined || url === null || url.trim().length === 0)
175
+ if (url === undefined || url === null || url.trim().length === 0) {
172
176
  return true;
173
- if (url.startsWith("//"))
177
+ }
178
+ if (url.startsWith("//")) {
174
179
  return false;
175
- if (url.startsWith("./") || url.startsWith("/"))
180
+ }
181
+ if (url.startsWith("./") || url.startsWith("/")) {
176
182
  return true;
183
+ }
177
184
  return false;
178
185
  }
179
186
 
@@ -195,7 +202,7 @@ class SrcBaseDirective {
195
202
  }
196
203
  onSrcChange(val) {
197
204
  if (val !== undefined && val !== null && val.sources.length === 0) {
198
- console.warn(`image should have sources!`);
205
+ console.warn("image should have sources!");
199
206
  this.data.set(undefined);
200
207
  return;
201
208
  }
@@ -224,8 +231,9 @@ class SrcBaseDirective {
224
231
  }
225
232
  calcRatio() {
226
233
  const data = this.data();
227
- if (data === undefined || data === null || data.sources.length === 0)
234
+ if (data === undefined || data === null || data.sources.length === 0) {
228
235
  return;
236
+ }
229
237
  for (let i = 0; i < data.sources.length; i++) {
230
238
  const source = data.sources[i];
231
239
  const srcRatios = source.srcSet
@@ -243,8 +251,9 @@ class SrcBaseDirective {
243
251
  this._ratio.set(ratio);
244
252
  return;
245
253
  }
246
- if (typeof window === "undefined" || typeof window.matchMedia === "undefined")
254
+ if (typeof window === "undefined" || typeof window.matchMedia === "undefined") {
247
255
  return;
256
+ }
248
257
  const mediaQueryList = window.matchMedia(source.mediaQuery);
249
258
  if (mediaQueryList.matches) {
250
259
  this._ratio.set(ratio);
@@ -258,8 +267,9 @@ class SrcBaseDirective {
258
267
  if (src === undefined ||
259
268
  src === null ||
260
269
  typeof window === "undefined" ||
261
- typeof window.matchMedia === "undefined")
270
+ typeof window.matchMedia === "undefined") {
262
271
  return NEVER.pipe(takeUntilDestroyed(this._destroyRef), takeUntil(this._queryChangeClearSubject));
272
+ }
263
273
  const mediaQueries = src.sources
264
274
  .map((x) => x.mediaQuery)
265
275
  .filter(distinct)
@@ -455,8 +465,9 @@ var SizesWidthUnit;
455
465
 
456
466
  class LocalizeServiceBase {
457
467
  getLocalized(value, defaultValue, locale) {
458
- if (value === undefined)
468
+ if (value === undefined) {
459
469
  return defaultValue;
470
+ }
460
471
  locale = locale ?? this.locale();
461
472
  const obj = value[locale] ?? defaultValue;
462
473
  return obj;
@@ -473,8 +484,9 @@ class LocalizeServiceBase {
473
484
  class LocalizePipe {
474
485
  _localizeService = inject(LocalizeServiceBase);
475
486
  transform(value, locale) {
476
- if (value === undefined || value === null)
487
+ if (value === undefined || value === null) {
477
488
  return "";
489
+ }
478
490
  return this._localizeService.getLocalizedText(value, locale);
479
491
  }
480
492
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LocalizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
@@ -487,8 +499,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
487
499
  class LocalizeObjectPipe {
488
500
  _localizeService = inject(LocalizeServiceBase);
489
501
  transform(object, locale) {
490
- if (object === undefined || object === null)
502
+ if (object === undefined || object === null) {
491
503
  return undefined;
504
+ }
492
505
  return this._localizeService.getLocalized(object, undefined, locale);
493
506
  }
494
507
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LocalizeObjectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
@@ -501,8 +514,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
501
514
  class LocalizationIsNotEmptyPipe {
502
515
  _localizeService = inject(LocalizeServiceBase);
503
516
  transform(value, locale) {
504
- if (value === undefined || value === null)
517
+ if (value === undefined || value === null) {
505
518
  return false;
519
+ }
506
520
  const text = this._localizeService.getLocalizedText(value, locale);
507
521
  const isNotEmpty = text.trim().length > 0;
508
522
  return isNotEmpty;
@@ -517,8 +531,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
517
531
  class LocalizationIsEmptyPipe {
518
532
  _localizeService = inject(LocalizeServiceBase);
519
533
  transform(value, locale) {
520
- if (value === undefined || value === null)
534
+ if (value === undefined || value === null) {
521
535
  return true;
536
+ }
522
537
  const text = this._localizeService.getLocalizedText(value, locale);
523
538
  const isEmpty = text.trim().length === 0;
524
539
  return isEmpty;
@@ -534,8 +549,9 @@ class LocalizeUrlPipe {
534
549
  _localizeService = inject(LocalizeServiceBase);
535
550
  _domSanitizer = inject(DomSanitizer);
536
551
  transform(value, locale) {
537
- if (value === undefined || value === null)
552
+ if (value === undefined || value === null) {
538
553
  return "";
554
+ }
539
555
  const urlString = this._localizeService.getLocalizedText(value, locale);
540
556
  const safeUrl = this._domSanitizer.bypassSecurityTrustResourceUrl(urlString);
541
557
  return safeUrl;
@@ -550,8 +566,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
550
566
  class IsLocalUrlPipe {
551
567
  _localizeService = inject(LocalizeServiceBase);
552
568
  transform(value, locale) {
553
- if (value === undefined || value === null)
569
+ if (value === undefined || value === null) {
554
570
  return false;
571
+ }
555
572
  const isLocal = this._localizeService.isLocalUrl(value, locale);
556
573
  return isLocal;
557
574
  }
@@ -565,8 +582,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
565
582
  class IsNotLocalUrlPipe {
566
583
  _localizeService = inject(LocalizeServiceBase);
567
584
  transform(value, locale) {
568
- if (value === undefined || value === null)
585
+ if (value === undefined || value === null) {
569
586
  return false;
587
+ }
570
588
  const isLocal = this._localizeService.isLocalUrl(value, locale);
571
589
  return !isLocal;
572
590
  }
@@ -579,14 +597,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
579
597
  }] });
580
598
 
581
599
  function getDefaultSrc(image) {
582
- if (image === undefined || image === null)
600
+ if (image === undefined || image === null) {
583
601
  return undefined;
602
+ }
584
603
  const files = image.sources.flatMap((x) => x.srcSet).sort(descendingT((x) => x.meta.width));
585
604
  const prefferedFiles = files.filter((x) => x.mimeType === "image/jpeg" || x.mimeType === "image/png" || x.mimeType === "image/gif");
586
- if (prefferedFiles.length > 0)
605
+ if (prefferedFiles.length > 0) {
587
606
  return prefferedFiles[0];
588
- if (files.length > 0)
607
+ }
608
+ if (files.length > 0) {
589
609
  return files[0];
610
+ }
590
611
  return undefined;
591
612
  }
592
613
 
@@ -627,8 +648,9 @@ class MarcyImageComponent {
627
648
  device = inject(DeviceServiceBase);
628
649
  constructor() {
629
650
  const src = inject(ImageSrcDirective, { optional: true });
630
- if (src === undefined || src === null)
651
+ if (src === undefined || src === null) {
631
652
  throw new Error(`${MarcyImageComponent.name} should have [imgsrc] directive as source object`);
653
+ }
632
654
  this.src = src;
633
655
  effect(() => {
634
656
  this.onSrcChange(this.src.data());
@@ -688,8 +710,9 @@ class MarcyVideoComponent {
688
710
  device = inject(DeviceServiceBase);
689
711
  _srcDir = inject(VideoSrcDirective, { optional: true });
690
712
  constructor() {
691
- if (this._srcDir === undefined || this._srcDir === null)
713
+ if (this._srcDir === undefined || this._srcDir === null) {
692
714
  throw new Error(`${MarcyVideoComponent.name} should have [vidsrc] directive as source object`);
715
+ }
693
716
  this.src = this._srcDir;
694
717
  effect(() => {
695
718
  this.src.data();
@@ -739,8 +762,9 @@ class MarcyVideoComponent {
739
762
  console.log(`MarcyVideoComponent realPixelsVideoWidth ${realPixelsVideoWidth}`);
740
763
  for (let i = 0; i < videoSources.length; i++) {
741
764
  const videoSource = videoSources[i];
742
- if (!matchesMediaQuery(videoSource.mediaQuery))
765
+ if (!matchesMediaQuery(videoSource.mediaQuery)) {
743
766
  continue;
767
+ }
744
768
  // SSR
745
769
  if (typeof ref.nativeElement.canPlayType !== "function") {
746
770
  const mp4Srcs = videoSource.srcSet
@@ -757,8 +781,9 @@ class MarcyVideoComponent {
757
781
  // else prefer smallest
758
782
  return a.meta.width <= b.meta.width ? -1 : 1;
759
783
  }); // smallest video
760
- if (fileSrcs.length === 0)
784
+ if (fileSrcs.length === 0) {
761
785
  continue;
786
+ }
762
787
  // console.log('sources ', fileSrcs);
763
788
  let bestSrc = fileSrcs[0];
764
789
  for (let i = 1; i < fileSrcs.length; i++) {
@@ -766,8 +791,9 @@ class MarcyVideoComponent {
766
791
  const currentDiff = fileSrc.meta.width - realPixelsVideoWidth;
767
792
  // console.log(`browser video currentDiff ${currentDiff}`)
768
793
  // too big video source width
769
- if (currentDiff > 0)
794
+ if (currentDiff > 0) {
770
795
  break;
796
+ }
771
797
  bestSrc = fileSrc;
772
798
  }
773
799
  console.log(`browser found suitable video ${bestSrc.url}`);
@@ -803,7 +829,7 @@ class BoneMap extends Map {
803
829
  getRequired(key) {
804
830
  const value = this.get(key);
805
831
  if (value === undefined || value === null) {
806
- throw Error(`BoneMap doesn't contain type for key = ${key}`);
832
+ throw new Error(`BoneMap doesn't contain type for key = ${key}`);
807
833
  }
808
834
  return value;
809
835
  }
@@ -820,6 +846,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
820
846
  selector: "[bonBoneDir]",
821
847
  }]
822
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
+ };
823
854
 
824
855
  class SkeletonAnchorDirective {
825
856
  viewContainerRef = inject(ViewContainerRef);
@@ -864,8 +895,9 @@ class SkeletonComponent {
864
895
  const mapVal = this.map();
865
896
  const viewContainerRef = anchor.viewContainerRef;
866
897
  viewContainerRef.clear();
867
- if (mapVal === undefined || mapVal === null)
898
+ if (mapVal === undefined || mapVal === null) {
868
899
  throw new Error('add type map with input: [map]="..."');
900
+ }
869
901
  for (const bone of bones) {
870
902
  let componentType = mapVal.get(bone.type);
871
903
  if (componentType === undefined || componentType === null) {
@@ -888,5 +920,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
888
920
  * Generated bundle index. Do not edit.
889
921
  */
890
922
 
891
- 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 };
923
+ export { BONE_DIRECTIVE_WITH_INPUTS_AND_OUTPUTS, 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 };
892
924
  //# 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) return;\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) return;\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) return true;\n\n\t// other queries disallowed in SSR\n\tif (typeof window === \"undefined\") return false;\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) return true;\n\n\tif (url.startsWith(\"//\")) return false;\n\n\tif (url.startsWith(\"./\") || url.startsWith(\"/\")) return true;\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) return;\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\") return;\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\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) return defaultValue;\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) return \"\";\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) return undefined;\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) return false;\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) return true;\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) return \"\";\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) return false;\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) return false;\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) return undefined;\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) return prefferedFiles[0];\n\n\tif (files.length > 0) return files[0];\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\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\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)) continue;\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) continue;\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) break;\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 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\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\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@candy-kingdom/bonnie",
3
- "version": "0.27.0",
3
+ "version": "0.27.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ulmer-morozov/candy-kingdom.git",
@@ -504,6 +504,11 @@ 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
+ };
507
512
 
508
513
  interface IBoneComponent {
509
514
  bd: BoneDirective;
@@ -534,5 +539,5 @@ declare class UnknownBoneComponent implements IBoneComponent {
534
539
  static ɵcmp: i0.ɵɵComponentDeclaration<UnknownBoneComponent, "bon-unknown-bone", never, {}, {}, never, never, true, [{ directive: typeof BoneDirective; inputs: { "bone": "bone"; }; outputs: { "boneChange": "boneChange"; }; }]>;
535
540
  }
536
541
 
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 };
542
+ export { BONE_DIRECTIVE_WITH_INPUTS_AND_OUTPUTS, 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 };
538
543
  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 };