@candy-kingdom/bonnie 0.27.2 → 0.27.4
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.
|
@@ -846,13 +846,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
846
846
|
selector: "[bonBoneDir]",
|
|
847
847
|
}]
|
|
848
848
|
}], propDecorators: { bone: [{ type: i0.Input, args: [{ isSignal: true, alias: "bone", required: true }] }, { type: i0.Output, args: ["boneChange"] }] } });
|
|
849
|
-
function boneHostDirective() {
|
|
850
|
-
return {
|
|
851
|
-
directive: (BoneDirective),
|
|
852
|
-
inputs: ["bone"],
|
|
853
|
-
outputs: ["boneChange"],
|
|
854
|
-
};
|
|
855
|
-
}
|
|
856
849
|
|
|
857
850
|
class SkeletonAnchorDirective {
|
|
858
851
|
viewContainerRef = inject(ViewContainerRef);
|
|
@@ -922,5 +915,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
922
915
|
* Generated bundle index. Do not edit.
|
|
923
916
|
*/
|
|
924
917
|
|
|
925
|
-
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,
|
|
918
|
+
export { BoneDirective, BoneMap, DeviceService, DeviceServiceBase, EncodeURIComponentPipe, ImageSrcDirective, IntersectionComponent, IsLocalUrlPipe, IsNotLocalUrlPipe, LocalizationIsEmptyPipe, LocalizationIsNotEmptyPipe, LocalizeObjectPipe, LocalizePipe, LocalizeServiceBase, LocalizeUrlPipe, MarcyImageComponent, MarcyMediaComponent, MarcyVideoComponent, MediaObjectFit, MediaStatus, PublishStatus, SizesWidthUnit, SkeletonAnchorDirective, SkeletonComponent, SrcBaseDirective, UnknownBoneComponent, VideoSrcDirective, emptyBone, emptyImage, emptyLocalizedString, emptyVideo, getDefaultSrc, toHtmlPictureSources };
|
|
926
919
|
//# sourceMappingURL=candy-kingdom-bonnie.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candy-kingdom-bonnie.mjs","sources":["../../../../libs/bonnie/src/lib/core/device.service.ts","../../../../libs/bonnie/src/lib/core/device.service.base.ts","../../../../libs/bonnie/src/lib/core/emptyBone.ts","../../../../libs/bonnie/src/lib/core/emptyImage.ts","../../../../libs/bonnie/src/lib/core/emptyLocalizedString.ts","../../../../libs/bonnie/src/lib/core/emptyVideo.ts","../../../../libs/bonnie/src/lib/core/encode-uri.pipe.ts","../../../../libs/bonnie/src/lib/core/intersection.component.ts","../../../../libs/bonnie/src/lib/core/MediaObjectFit.ts","../../../../libs/bonnie/src/lib/core/MediaStatus.ts","../../../../libs/bonnie/src/lib/core/utils.ts","../../../../libs/bonnie/src/lib/core/src.directive.ts","../../../../libs/bonnie/src/lib/generated/bone.ts","../../../../libs/bonnie/src/lib/generated/file-format.ts","../../../../libs/bonnie/src/lib/generated/file-meta.ts","../../../../libs/bonnie/src/lib/generated/file-src.ts","../../../../libs/bonnie/src/lib/generated/file-src-base.ts","../../../../libs/bonnie/src/lib/generated/i-equatable.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route-with-data.ts","../../../../libs/bonnie/src/lib/generated/i-have-skeleton.ts","../../../../libs/bonnie/src/lib/generated/i-page.ts","../../../../libs/bonnie/src/lib/generated/image.ts","../../../../libs/bonnie/src/lib/generated/image-meta.ts","../../../../libs/bonnie/src/lib/generated/image-source.ts","../../../../libs/bonnie/src/lib/generated/localized-object.ts","../../../../libs/bonnie/src/lib/generated/localized-string.ts","../../../../libs/bonnie/src/lib/generated/media-source.ts","../../../../libs/bonnie/src/lib/generated/media-source-base.ts","../../../../libs/bonnie/src/lib/generated/open-graph-data.ts","../../../../libs/bonnie/src/lib/generated/page.ts","../../../../libs/bonnie/src/lib/generated/page-base.ts","../../../../libs/bonnie/src/lib/generated/page-data.ts","../../../../libs/bonnie/src/lib/generated/pix-media.ts","../../../../libs/bonnie/src/lib/generated/pix-meta.ts","../../../../libs/bonnie/src/lib/generated/publish-status.ts","../../../../libs/bonnie/src/lib/generated/sizes-item.ts","../../../../libs/bonnie/src/lib/generated/sizes-width-unit.ts","../../../../libs/bonnie/src/lib/generated/svg-meta.ts","../../../../libs/bonnie/src/lib/generated/video.ts","../../../../libs/bonnie/src/lib/generated/video-meta.ts","../../../../libs/bonnie/src/lib/generated/video-source.ts","../../../../libs/bonnie/src/lib/generated/view.ts","../../../../libs/bonnie/src/lib/generated/index.ts","../../../../libs/bonnie/src/lib/localization/LocalizeServiceBase.ts","../../../../libs/bonnie/src/lib/localization/localize.pipe.ts","../../../../libs/bonnie/src/lib/marcy-image/getDefaultSrc.ts","../../../../libs/bonnie/src/lib/marcy-image/imgsrc.directive.ts","../../../../libs/bonnie/src/lib/marcy-image/toHtmlSources.ts","../../../../libs/bonnie/src/lib/marcy-image/marcy-image.component.ts","../../../../libs/bonnie/src/lib/marcy-image/marcy-image.component.html","../../../../libs/bonnie/src/lib/marcy-video/vidsrc.directive.ts","../../../../libs/bonnie/src/lib/marcy-video/marcy-video.component.ts","../../../../libs/bonnie/src/lib/marcy-video/marcy-video.component.html","../../../../libs/bonnie/src/lib/marcy-media/marcy-media.component.ts","../../../../libs/bonnie/src/lib/marcy-media/marcy-media.component.html","../../../../libs/bonnie/src/lib/skeleton/BoneMap.ts","../../../../libs/bonnie/src/lib/skeleton/bone.directive.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton-anchor.directive.ts","../../../../libs/bonnie/src/lib/skeleton/unknown-bone.component.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton.component.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton.component.html","../../../../libs/bonnie/src/candy-kingdom-bonnie.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\n\nimport type { DeviceServiceBase } from \"./device.service.base\";\n\n@Injectable()\nexport class DeviceService implements DeviceServiceBase {\n\tpublic readonly devicePixelRatio = typeof window === \"undefined\" ? 1 : window.devicePixelRatio;\n\tpublic readonly isSSR = typeof window === \"undefined\";\n}\n","export abstract class DeviceServiceBase {\n\tpublic abstract get isSSR(): boolean;\n\tpublic abstract get devicePixelRatio(): number;\n}\n","import type { Bone } from \"../generated\";\n\nexport function emptyBone(): Bone {\n\treturn {\n\t\tstyle: \"\",\n\t\tmediaQuery: \"\",\n\t\tenabled: true,\n\t\ttype: \"\",\n\t};\n}\n","import type { Image } from \"../generated\";\n\nexport function emptyImage(): Image {\n\treturn {\n\t\t$type: \"image\", // todo: remove\n\t\ttype: \"image\",\n\t\tsources: [],\n\t};\n}\n","import type { LocalizedString } from \"../generated\";\n\nexport function emptyLocalizedString(): LocalizedString {\n\treturn {};\n}\n","import type { Video } from \"../generated\";\n\nexport function emptyVideo(): Video {\n\treturn {\n\t\t$type: \"video\", // todo: remove\n\t\ttype: \"video\",\n\t\tsources: [],\n\t};\n}\n","import { Pipe, type PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"encodeURIComponent\", pure: true })\nexport class EncodeURIComponentPipe implements PipeTransform {\n\tpublic transform(value: string): string {\n\t\treturn encodeURIComponent(value);\n\t}\n}\n","import {\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from \"@angular/core\";\n\n@Component({\n\tselector: \"bon-intersection\",\n\ttemplate: \"<ng-content></ng-content>\",\n\tstyles: [\":host{display:block}\"],\n})\nexport class IntersectionComponent {\n\tpublic readonly intersected = output<void>();\n\n\tpublic readonly session = input<unknown>();\n\n\tprivate readonly _hostRef = inject(ElementRef);\n\n\tprivate readonly _intersectionObserver?: IntersectionObserver;\n\tprivate readonly _isIntersected = signal<boolean>(false);\n\n\tpublic readonly isIntersected = this._isIntersected.asReadonly();\n\n\tprivate _session: unknown; // todo: remove\n\n\tconstructor() {\n\t\tif (typeof window === \"undefined\" || typeof IntersectionObserver === \"undefined\") {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._intersectionObserver = new IntersectionObserver(this.onIntersection.bind(this));\n\n\t\teffect(() => {\n\t\t\tif (this._isIntersected()) {\n\t\t\t\tthis.intersected.emit();\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst newSession = this.session();\n\n\t\t\tif (this._session === newSession) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log(\"reset intersection Observer\");\n\t\t\tthis._session = newSession;\n\t\t\tthis.reset();\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => this._intersectionObserver?.disconnect());\n\t}\n\n\tprivate reset(): void {\n\t\tif (this._intersectionObserver === undefined || this._intersectionObserver === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._intersectionObserver.unobserve(this._hostRef.nativeElement);\n\n\t\tthis._isIntersected.set(false);\n\n\t\tthis._intersectionObserver.observe(this._hostRef.nativeElement);\n\t}\n\n\tprivate onIntersection(\n\t\tentries: IntersectionObserverEntry[],\n\t\tobserver: IntersectionObserver,\n\t): void {\n\t\tif (entries.length > 1) {\n\t\t\tconsole.warn(\"multi entries!\");\n\t\t}\n\n\t\tconst isIntersecting = entries[0].isIntersecting;\n\t\tthis._isIntersected.set(isIntersecting);\n\n\t\tconsole.log(`intersected ${isIntersecting}`, this._hostRef.nativeElement);\n\n\t\t// only once will recieve intersection\n\t\tif (isIntersecting) {\n\t\t\tobserver.unobserve(this._hostRef.nativeElement);\n\t\t}\n\t}\n}\n","export enum MediaObjectFit {\n\tOriginal = \"Original\",\n\tCover = \"Cover\",\n\tContain = \"Contain\",\n}\n","export enum MediaStatus {\n\tNotSet = \"NotSet\",\n\tNotLoaded = \"NotLoaded\",\n\tLoading = \"Loading\",\n\tLoaded = \"Loaded\",\n}\n","import type * as M_CORE from \"../generated\";\n\n// https://stackoverflow.com/questions/42136098/array-groupby-in-typescript\n\nexport const groupBy = <T, K extends keyof any>(arr: T[], key: (i: T) => K) =>\n\tarr.reduce(\n\t\t(groups, item) => {\n\t\t\t(groups[key(item)] ||= []).push(item);\n\t\t\treturn groups;\n\t\t},\n\t\t{} as Record<K, T[]>,\n\t);\n\nexport function distinct<T>(value: T, index: number, array: T[]) {\n\treturn array.indexOf(value) === index;\n}\n\nexport function ascending(a: number, b: number) {\n\treturn a - b;\n}\n\nexport function ascendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\n\treturn (a: T, b: T) => ascending(sel(a), sel(b));\n}\n\nexport function descending(a: number, b: number) {\n\treturn b - a;\n}\n\nexport function descendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\n\treturn (a: T, b: T) => descending(sel(a), sel(b));\n}\n\nexport function generateSizesString(sizes: M_CORE.SizesItem[]): string {\n\tconst sizesString = sizes\n\t\t.sort((x) => x.width)\n\t\t.map((x) => `${x.mediaQuery} ${x.width}${x.unit.toLowerCase()}`.trim())\n\t\t.join(\",\");\n\n\treturn sizesString;\n}\n\nexport function matchesMediaQuery(mediaQuery?: string): boolean {\n\tconst isEmptyQuery =\n\t\tmediaQuery === null || mediaQuery === undefined || mediaQuery.trim().length === 0;\n\n\t// work for SSR and browser\n\tif (isEmptyQuery) {\n\t\treturn true;\n\t}\n\n\t// other queries disallowed in SSR\n\tif (typeof window === \"undefined\") {\n\t\treturn false;\n\t}\n\n\tconst mediaQueryList = window.matchMedia(mediaQuery);\n\n\treturn mediaQueryList.matches;\n}\n\nexport function isLocalUrlString(url: string): boolean {\n\tif (url === undefined || url === null || url.trim().length === 0) {\n\t\treturn true;\n\t}\n\n\tif (url.startsWith(\"//\")) {\n\t\treturn false;\n\t}\n\n\tif (url.startsWith(\"./\") || url.startsWith(\"/\")) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","import {\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tinject,\n\ttype ModelSignal,\n\toutput,\n\tsignal,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\n\nimport { fromEvent, merge, NEVER, type Observable, Subject, takeUntil } from \"rxjs\";\n\nimport type * as M_CORE from \"../generated\";\nimport * as utils from \"./utils\";\n\n@Directive()\nexport abstract class SrcBaseDirective<T extends M_CORE.Image | M_CORE.Video> {\n\tpublic readonly ratioChange = output<number>();\n\n\tprivate readonly _ratio = signal<number>(0);\n\tpublic readonly ratio = this._ratio.asReadonly();\n\n\tprivate readonly _queryChangeClearSubject = new Subject<void>();\n\n\tpublic abstract readonly data: ModelSignal<T | undefined>;\n\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst ratio = this._ratio();\n\t\t\tthis.ratioChange.emit(ratio);\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst val = this.data();\n\t\t\tthis.onSrcChange(val);\n\t\t});\n\t}\n\n\tprivate onSrcChange(val: T | undefined): void {\n\t\tif (val !== undefined && val !== null && val.sources.length === 0) {\n\t\t\tconsole.warn(\"image should have sources!\");\n\t\t\tthis.data.set(undefined);\n\t\t\treturn;\n\t\t}\n\n\t\t// clear mediaQuery subscriptions\n\t\tthis._queryChangeClearSubject.next();\n\n\t\t// ratio\n\t\tthis._ratio.set(0);\n\n\t\tif (val === undefined || val.sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst allRatios = val.sources\n\t\t\t.flatMap((x) => x.srcSet)\n\t\t\t.map((x) => x.meta.ratio)\n\t\t\t.filter(utils.distinct);\n\n\t\tif (allRatios.length === 1) {\n\t\t\t// same ratio for all\n\t\t\tthis._ratio.set(allRatios[0]);\n\t\t\treturn;\n\t\t}\n\n\t\t// todo: check if this needed to be unsubscribed\n\t\tthis.watchMediaQueries().subscribe(() => {\n\t\t\tthis.calcRatio();\n\t\t\tconsole.log(\"watchMediaQueries calcRatio\");\n\t\t});\n\n\t\tthis.calcRatio();\n\t}\n\n\tprivate calcRatio(): void {\n\t\tconst data = this.data();\n\t\tif (data === undefined || data === null || data.sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < data.sources.length; i++) {\n\t\t\tconst source = data.sources[i];\n\t\t\tconst srcRatios = source.srcSet\n\t\t\t\t.sort(utils.descendingT((x) => x.meta.width))\n\t\t\t\t.map((x) => x.meta.ratio)\n\t\t\t\t.filter(utils.distinct);\n\n\t\t\tif (srcRatios.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (srcRatios.length > 1) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`each source should have srcSet with same ratio. founded: ${srcRatios.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst ratio = srcRatios[0]; // most accurate ratio in biggest image\n\n\t\t\tif (source.mediaQuery.length === 0) {\n\t\t\t\tthis._ratio.set(ratio);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof window === \"undefined\" || typeof window.matchMedia === \"undefined\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst mediaQueryList = window.matchMedia(source.mediaQuery);\n\n\t\t\tif (mediaQueryList.matches) {\n\t\t\t\tthis._ratio.set(ratio);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic watchMediaQueries(): Observable<MediaQueryListEvent> {\n\t\tconsole.log(\"watchMediaQueries\");\n\t\tconst src = this.data();\n\n\t\tif (\n\t\t\tsrc === undefined ||\n\t\t\tsrc === null ||\n\t\t\ttypeof window === \"undefined\" ||\n\t\t\ttypeof window.matchMedia === \"undefined\"\n\t\t) {\n\t\t\treturn NEVER.pipe(\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t\ttakeUntil(this._queryChangeClearSubject),\n\t\t\t);\n\t\t}\n\n\t\tconst mediaQueries = src.sources\n\t\t\t.map((x) => x.mediaQuery)\n\t\t\t.filter(utils.distinct)\n\t\t\t.filter((x) => x.length > 0);\n\n\t\tconsole.log(\"watchMediaQueries mediaQueries\", mediaQueries);\n\t\tconst queryObservables = mediaQueries.map((media) => {\n\t\t\tconst queryList = window.matchMedia(media);\n\t\t\tconst observable = fromEvent<MediaQueryListEvent>(queryList, \"change\").pipe(\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t\ttakeUntil(this._queryChangeClearSubject),\n\t\t\t);\n\n\t\t\treturn observable;\n\t\t});\n\n\t\tconst combinedObservable = merge(...queryObservables);\n\t\treturn combinedObservable;\n\t}\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface Bone {\n\tstyle: string;\n\tmediaQuery: string;\n\tenabled: boolean;\n\ttype: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileFormat {\n\textension: string;\n\tmimeType: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileMeta {\n\tbyteCount: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\nimport type { FileSrcBase } from \"./file-src-base\";\n\nexport interface FileSrc<T extends FileMeta> extends FileSrcBase {\n\tmeta: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileSrcBase {\n\tmimeType: string;\n\turl: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport type IEquatable<_T> = {};\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface IHaveDataRoute {\n\tdataRoute: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { IHaveDataRoute } from \"./i-have-data-route\";\n\nexport interface IHaveDataRouteWithData<T> extends IHaveDataRoute {\n\tdata: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\n\nexport interface IHaveSkeleton {\n\tbones: Bone[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PageData } from \"./page-data\";\n\nexport interface IPage<TData extends PageData> {\n\tdata: TData;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { ImageSource } from \"./image-source\";\nimport type { PixMedia } from \"./pix-media\";\n\nexport interface Image extends PixMedia {\n\treadonly $type: \"image\";\n\tsources: ImageSource[];\n\ttype: \"image\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface ImageMeta extends PixMeta {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { ImageMeta } from \"./image-meta\";\nimport type { MediaSource } from \"./media-source\";\nimport type { SizesItem } from \"./sizes-item\";\n\nexport interface ImageSource extends MediaSource<ImageMeta> {\n\tsizes: SizesItem[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface LocalizedObject<T> {\n\t[locale: string]: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { LocalizedObject } from \"./localized-object\";\n\nexport interface LocalizedString extends LocalizedObject<string> {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\nimport type { FileSrc } from \"./file-src\";\nimport type { MediaSourceBase } from \"./media-source-base\";\n\nexport interface MediaSource<TMeta extends FileMeta> extends MediaSourceBase {\n\tsrcSet: FileSrc<TMeta>[];\n\tmediaQuery: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileSrcBase } from \"./file-src-base\";\n\nexport interface MediaSourceBase {\n\tsrcSet: FileSrcBase[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileSrc } from \"./file-src\";\nimport type { ImageMeta } from \"./image-meta\";\nimport type { LocalizedObject } from \"./localized-object\";\nimport type { LocalizedString } from \"./localized-string\";\n\nexport interface OpenGraphData {\n\ttitle: LocalizedString;\n\tdescription: LocalizedString;\n\timage: LocalizedObject<FileSrc<ImageMeta>>;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PageBase } from \"./page-base\";\nimport type { PageData } from \"./page-data\";\n\nexport interface Page<T extends PageData> extends PageBase {\n\tdata: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\nimport type { LocalizedString } from \"./localized-string\";\nimport type { OpenGraphData } from \"./open-graph-data\";\nimport type { PublishStatus } from \"./publish-status\";\n\nexport interface PageBase {\n\tid: string;\n\turl: string;\n\troute: string;\n\torder: number;\n\tpublishStatus: PublishStatus;\n\ttitle: LocalizedString;\n\topenGraph: OpenGraphData;\n\tbones: Bone[];\n\tchildren: PageBase[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface PageData {\n\ttype: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { MediaSourceBase } from \"./media-source-base\";\n\nexport interface PixMedia {\n\tsources: MediaSourceBase[];\n\ttype: \"image\" | \"video\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\n\nexport interface PixMeta extends FileMeta {\n\twidth: number;\n\theight: number;\n\tratio: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport enum PublishStatus {\n\tNotSet = 0,\n\tDraft = 1,\n\tPublished = 2,\n\tArchived = 3,\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { SizesWidthUnit } from \"./sizes-width-unit\";\n\nexport interface SizesItem {\n\twidth: number;\n\tunit: SizesWidthUnit;\n\tmediaQuery: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport enum SizesWidthUnit {\n\tPx = \"Px\",\n\tEm = \"Em\",\n\tVw = \"Vw\",\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface SvgMeta extends PixMeta {\n\tpreciseWidth: number;\n\tpreciseHeight: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMedia } from \"./pix-media\";\nimport type { VideoSource } from \"./video-source\";\n\nexport interface Video extends PixMedia {\n\treadonly $type: \"video\";\n\tsources: VideoSource[];\n\ttype: \"video\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface VideoMeta extends PixMeta {\n\tduration: number;\n\tfullFormat: string;\n\thasAudio: boolean;\n\tframeRate: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { MediaSource } from \"./media-source\";\nimport type { VideoMeta } from \"./video-meta\";\n\nexport interface VideoSource extends MediaSource<VideoMeta> {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\n\nexport interface View {\n\tid: string;\n\tcode: string;\n\tbones: Bone[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport * from \"./bone\";\nexport * from \"./file-format\";\nexport * from \"./file-meta\";\nexport * from \"./file-src\";\nexport * from \"./file-src-base\";\nexport * from \"./i-equatable\";\nexport * from \"./i-have-data-route\";\nexport * from \"./i-have-data-route-with-data\";\nexport * from \"./i-have-skeleton\";\nexport * from \"./i-page\";\nexport * from \"./image\";\nexport * from \"./image-meta\";\nexport * from \"./image-source\";\nexport * from \"./localized-object\";\nexport * from \"./localized-string\";\nexport * from \"./media-source\";\nexport * from \"./media-source-base\";\nexport * from \"./open-graph-data\";\nexport * from \"./page\";\nexport * from \"./page-base\";\nexport * from \"./page-data\";\nexport * from \"./pix-media\";\nexport * from \"./pix-meta\";\nexport * from \"./publish-status\";\nexport * from \"./sizes-item\";\nexport * from \"./sizes-width-unit\";\nexport * from \"./svg-meta\";\nexport * from \"./video\";\nexport * from \"./video-meta\";\nexport * from \"./video-source\";\nexport * from \"./view\";\n","import type { Signal } from \"@angular/core\";\n\nimport { isLocalUrlString } from \"../core/utils\";\nimport type { LocalizedObject, LocalizedString } from \"../generated\";\n\nexport abstract class LocalizeServiceBase {\n\tpublic abstract get locale(): Signal<string>;\n\n\tpublic getLocalized<T>(value: LocalizedObject<T>, defaultValue: T, locale?: string): T {\n\t\tif (value === undefined) {\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\tlocale = locale ?? this.locale();\n\n\t\tconst obj = value[locale] ?? defaultValue;\n\t\treturn obj;\n\t}\n\n\tpublic getLocalizedText(value: LocalizedString, locale?: string): string {\n\t\treturn this.getLocalized<string>(value, \"\", locale);\n\t}\n\n\tpublic isLocalUrl(value: LocalizedString, locale?: string): boolean {\n\t\tconst url = this.getLocalizedText(value, locale);\n\t\treturn isLocalUrlString(url);\n\t}\n}\n","import { inject, Pipe, type PipeTransform } from \"@angular/core\";\nimport { DomSanitizer, type SafeResourceUrl } from \"@angular/platform-browser\";\n\nimport type { LocalizedObject, LocalizedString } from \"../generated\";\nimport { LocalizeServiceBase } from \"./LocalizeServiceBase\";\n\n@Pipe({ name: \"localize\", pure: false })\nexport class LocalizePipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): string {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\treturn this._localizeService.getLocalizedText(value, locale);\n\t}\n}\n\n@Pipe({ name: \"localizeObject\", pure: false })\nexport class LocalizeObjectPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform<T>(object: LocalizedObject<T>, locale?: string): T | undefined {\n\t\tif (object === undefined || object === null) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this._localizeService.getLocalized<T | undefined>(object, undefined, locale);\n\t}\n}\n\n@Pipe({ name: \"localizationIsNotEmpty\", pure: false })\nexport class LocalizationIsNotEmptyPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst text = this._localizeService.getLocalizedText(value, locale);\n\n\t\tconst isNotEmpty = text.trim().length > 0;\n\t\treturn isNotEmpty;\n\t}\n}\n\n@Pipe({ name: \"localizationIsEmpty\", pure: false })\nexport class LocalizationIsEmptyPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst text = this._localizeService.getLocalizedText(value, locale);\n\n\t\tconst isEmpty = text.trim().length === 0;\n\t\treturn isEmpty;\n\t}\n}\n\n@Pipe({ name: \"localizeUrl\", pure: false })\nexport class LocalizeUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\tprivate readonly _domSanitizer = inject(DomSanitizer);\n\n\tpublic transform(value: LocalizedString, locale?: string): SafeResourceUrl {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst urlString = this._localizeService.getLocalizedText(value, locale);\n\t\tconst safeUrl = this._domSanitizer.bypassSecurityTrustResourceUrl(urlString);\n\t\treturn safeUrl;\n\t}\n}\n\n@Pipe({ name: \"isLocalUrl\", pure: false })\nexport class IsLocalUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst isLocal = this._localizeService.isLocalUrl(value, locale);\n\t\treturn isLocal;\n\t}\n}\n\n@Pipe({ name: \"isNotLocalUrl\", pure: false })\nexport class IsNotLocalUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst isLocal = this._localizeService.isLocalUrl(value, locale);\n\t\treturn !isLocal;\n\t}\n}\n","import * as utils from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\n\nexport function getDefaultSrc(\n\timage: M_CORE.Image | undefined,\n): M_CORE.FileSrc<M_CORE.ImageMeta> | undefined {\n\tif (image === undefined || image === null) {\n\t\treturn undefined;\n\t}\n\n\tconst files = image.sources.flatMap((x) => x.srcSet).sort(utils.descendingT((x) => x.meta.width));\n\n\tconst prefferedFiles = files.filter(\n\t\t(x) => x.mimeType === \"image/jpeg\" || x.mimeType === \"image/png\" || x.mimeType === \"image/gif\",\n\t);\n\n\tif (prefferedFiles.length > 0) {\n\t\treturn prefferedFiles[0];\n\t}\n\n\tif (files.length > 0) {\n\t\treturn files[0];\n\t}\n\n\treturn undefined;\n}\n","import { Directive, model } from \"@angular/core\";\n\nimport { SrcBaseDirective } from \"../core/src.directive\";\nimport type * as M_CORE from \"../generated\";\n\n@Directive({\n\tselector: \"[imgsrc]\",\n})\nexport class ImageSrcDirective extends SrcBaseDirective<M_CORE.Image> {\n\tpublic readonly data = model<M_CORE.Image | undefined>(undefined, { alias: \"imgsrc\" });\n}\n","import * as utils from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\nimport type { IHtmlPictureSource } from \"./IHtmlPictureSource\";\n\nexport function toHtmlPictureSources(imageSource: M_CORE.ImageSource): IHtmlPictureSource[] {\n\tconst sizes = utils.generateSizesString(imageSource.sizes);\n\tconst groupedByMime = utils.groupBy(imageSource.srcSet, (x) => x.mimeType);\n\n\tconst simpleSources: IHtmlPictureSource[] = [];\n\n\tfor (const mime in groupedByMime) {\n\t\tconst fileSrcs = groupedByMime[mime].sort(utils.ascendingT((x) => x.meta.width));\n\n\t\tconst srcSet = fileSrcs.map((x) => `${x.url} ${x.meta.width}w`).join(\",\");\n\n\t\tconst source: IHtmlPictureSource = { mime, sizes, srcSet, media: imageSource.mediaQuery };\n\n\t\tsimpleSources.push(source);\n\t}\n\n\treturn simpleSources;\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport { Component, effect, inject, input, output, signal } from \"@angular/core\";\n\nimport { DeviceServiceBase } from \"../core/device.service.base\";\nimport { IntersectionComponent } from \"../core/intersection.component\";\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport { MediaStatus } from \"../core/MediaStatus\";\nimport type * as M_CORE from \"../generated\";\nimport { getDefaultSrc } from \"./getDefaultSrc\";\nimport type { IHtmlPictureSource } from \"./IHtmlPictureSource\";\nimport { ImageSrcDirective } from \"./imgsrc.directive\";\nimport { toHtmlPictureSources } from \"./toHtmlSources\";\n\n@Component({\n\tselector: \"bon-image\",\n\n\timports: [NgTemplateOutlet, IntersectionComponent],\n\ttemplateUrl: \"./marcy-image.component.html\",\n\tstyleUrl: \"./marcy-image.component.scss\",\n})\nexport class MarcyImageComponent {\n\tpublic readonly MediaStatus = MediaStatus;\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly src: ImageSrcDirective;\n\n\tpublic readonly isLoaded = output<void>();\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic readonly sources = signal<IHtmlPictureSource[]>([]);\n\tpublic readonly status = signal<MediaStatus>(MediaStatus.NotSet);\n\tpublic readonly defaultSrc = signal(\"\");\n\n\tpublic readonly device = inject(DeviceServiceBase);\n\n\tconstructor() {\n\t\tconst src = inject(ImageSrcDirective, { optional: true });\n\n\t\tif (src === undefined || src === null) {\n\t\t\tthrow new Error(\n\t\t\t\t`${MarcyImageComponent.name} should have [imgsrc] directive as source object`,\n\t\t\t);\n\t\t}\n\n\t\tthis.src = src;\n\n\t\teffect(() => {\n\t\t\tthis.onSrcChange(this.src.data());\n\t\t});\n\n\t\teffect(() => {\n\t\t\tif (this.status() === MediaStatus.Loaded) {\n\t\t\t\tthis.isLoaded.emit();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate onSrcChange(val: M_CORE.Image | undefined) {\n\t\tthis.defaultSrc.set(getDefaultSrc(val)?.url ?? \"\");\n\n\t\tif (val === undefined || val === null || val.sources.length === 0) {\n\t\t\tthis.sources.set([]);\n\t\t\tthis.status.set(MediaStatus.NotSet);\n\t\t\treturn;\n\t\t}\n\n\t\tconst newSources = val.sources.flatMap(toHtmlPictureSources);\n\t\tthis.sources.set(newSources);\n\t\tthis.status.set(MediaStatus.NotLoaded);\n\t}\n\n\tpublic onLoad() {\n\t\tthis.status.set(MediaStatus.Loaded);\n\t}\n}\n","@if (sources().length > 0) {\n <div [class.knownRatio]=\"src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"picture-container\">\n\n <ng-template #pictureTemplate>\n <picture>\n @for (source of sources(); track $index) {\n <source [srcset]=\"source.srcSet\"\n [attr.media]=\"source.media.length > 0 ? source.media : undefined\"\n [attr.type]=\"source.mime.length > 0 ? source.mime : undefined\"\n [attr.sizes]=\"source.sizes.length > 0 ? source.sizes : undefined\" />\n }\n <img [src]=\"defaultSrc()\" (load)=\"onLoad()\" alt=\"\" />\n </picture>\n </ng-template>\n\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n </noscript>\n } @else {\n <bon-intersection #intersectionZone [session]=\"src\">\n @if (intersectionZone.isIntersected()) {\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n }\n </bon-intersection>\n }\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() +'%'\"></div>\n }\n </div>\n}\n","import { Directive, model } from \"@angular/core\";\n\nimport { SrcBaseDirective } from \"../core/src.directive\";\nimport type * as M_CORE from \"../generated\";\n\n@Directive({\n\tselector: \"[vidsrc]\",\n})\nexport class VideoSrcDirective extends SrcBaseDirective<M_CORE.Video> {\n\tpublic readonly data = model<M_CORE.Video | undefined>(undefined, { alias: \"vidsrc\" });\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n\tComponent,\n\ttype ElementRef,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tviewChild,\n} from \"@angular/core\";\n\nimport { DeviceServiceBase } from \"../core/device.service.base\";\nimport { IntersectionComponent } from \"../core/intersection.component\";\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport { MediaStatus } from \"../core/MediaStatus\";\nimport { descendingT, matchesMediaQuery } from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\nimport { VideoSrcDirective } from \"./vidsrc.directive\";\n\nfunction isWebM(src: M_CORE.FileSrc<M_CORE.ImageMeta>): boolean {\n\treturn src.mimeType === \"video/webm\";\n}\n\n@Component({\n\tselector: \"bon-video\",\n\n\timports: [NgTemplateOutlet, IntersectionComponent],\n\ttemplateUrl: \"./marcy-video.component.html\",\n\tstyleUrl: \"./marcy-video.component.scss\",\n})\nexport class MarcyVideoComponent {\n\tpublic readonly MediaStatus = MediaStatus;\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly src: VideoSrcDirective;\n\n\tpublic readonly isLoaded = output<void>();\n\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic readonly videoRef = viewChild<ElementRef<HTMLVideoElement>>(\"video\");\n\n\tpublic readonly status = signal<MediaStatus>(MediaStatus.NotSet);\n\tpublic readonly source = signal<M_CORE.FileSrc<M_CORE.VideoMeta> | undefined>(undefined);\n\n\tpublic readonly device = inject(DeviceServiceBase);\n\n\tprivate readonly _srcDir = inject(VideoSrcDirective, { optional: true });\n\n\tconstructor() {\n\t\tif (this._srcDir === undefined || this._srcDir === null) {\n\t\t\tthrow new Error(\n\t\t\t\t`${MarcyVideoComponent.name} should have [vidsrc] directive as source object`,\n\t\t\t);\n\t\t}\n\n\t\tthis.src = this._srcDir;\n\n\t\teffect(() => {\n\t\t\tthis.src.data();\n\t\t\tthis.videoRef();\n\t\t\tthis.updateSources();\n\t\t\tthis.subscribeToMediaQueryChange();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tif (this.status() === MediaStatus.Loaded) {\n\t\t\t\tthis.isLoaded.emit();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate subscribeToMediaQueryChange(): void {\n\t\tthis.src.watchMediaQueries().subscribe(() => {\n\t\t\tconsole.log(\"MarcyVideoComponent watchMediaQueries\");\n\t\t\tthis.updateSources();\n\t\t});\n\t}\n\n\tprivate updateSources() {\n\t\tconsole.log(\"MarcyVideoComponent updateSources\");\n\n\t\tthis.source.set(this.findMoreSuitableSource());\n\n\t\tconsole.log(\"MarcyVideoComponent new source\", this.source());\n\n\t\tconst src = this.source();\n\n\t\tif (this.status() === MediaStatus.NotSet && src === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (src === undefined) {\n\t\t\tthis.status.set(MediaStatus.NotSet);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.status.set(MediaStatus.NotLoaded);\n\t}\n\n\tpublic onLoad() {\n\t\tthis.status.set(MediaStatus.Loaded);\n\t}\n\n\tprivate findMoreSuitableSource(): M_CORE.FileSrc<M_CORE.VideoMeta> | undefined {\n\t\tconst ref = this.videoRef();\n\t\tif (ref === undefined) {\n\t\t\tconsole.log(\"skipping findMoreSuitableSource. videoRef is empty still\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst videoSources = this.src.data()?.sources ?? [];\n\n\t\tconst currentVideoWidth = ref.nativeElement.clientWidth;\n\t\tconst realPixelsVideoWidth = this.device.devicePixelRatio * currentVideoWidth;\n\n\t\tconsole.log(`MarcyVideoComponent currentVideoWidth ${currentVideoWidth}`);\n\t\tconsole.log(`MarcyVideoComponent realPixelsVideoWidth ${realPixelsVideoWidth}`);\n\n\t\tfor (let i = 0; i < videoSources.length; i++) {\n\t\t\tconst videoSource = videoSources[i];\n\n\t\t\tif (!matchesMediaQuery(videoSource.mediaQuery)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// SSR\n\t\t\tif (typeof ref.nativeElement.canPlayType !== \"function\") {\n\t\t\t\tconst mp4Srcs = videoSource.srcSet\n\t\t\t\t\t.filter((x) => x.mimeType === \"video/mp4\")\n\t\t\t\t\t.sort(descendingT((x) => x.meta.width));\n\n\t\t\t\treturn mp4Srcs[0];\n\t\t\t}\n\n\t\t\tconst fileSrcs = videoSource.srcSet\n\t\t\t\t.filter((x) => ref.nativeElement.canPlayType(x.mimeType))\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.meta.width === b.meta.width) {\n\t\t\t\t\t\treturn isWebM(a) ? -1 : 1; // if same width prefer webM\n\t\t\t\t\t}\n\n\t\t\t\t\t// else prefer smallest\n\t\t\t\t\treturn a.meta.width <= b.meta.width ? -1 : 1;\n\t\t\t\t}); // smallest video\n\n\t\t\tif (fileSrcs.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// console.log('sources ', fileSrcs);\n\n\t\t\tlet bestSrc = fileSrcs[0];\n\n\t\t\tfor (let i = 1; i < fileSrcs.length; i++) {\n\t\t\t\tconst fileSrc = fileSrcs[i];\n\n\t\t\t\tconst currentDiff = fileSrc.meta.width - realPixelsVideoWidth;\n\n\t\t\t\t// console.log(`browser video currentDiff ${currentDiff}`)\n\n\t\t\t\t// too big video source width\n\t\t\t\tif (currentDiff > 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbestSrc = fileSrc;\n\t\t\t}\n\n\t\t\tconsole.log(`browser found suitable video ${bestSrc.url}`);\n\n\t\t\treturn bestSrc;\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n","<div\n [class.knownRatio]=\"\n src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\n \"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"video-container\"\n>\n @if (device.isSSR) {\n <ng-container *ngTemplateOutlet=\"ssrTemplate\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"browserTemplate\"></ng-container>\n }\n\n <ng-template #videoTemplate>\n <video\n #video\n [src]=\"source()?.url ?? ''\"\n (load)=\"onLoad()\"\n (canplay)=\"video.muted = true; video.play()\"\n playsInline\n autoplay\n loop\n muted\n ></video>\n </ng-template>\n\n <ng-template #ssrTemplate>\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </noscript>\n }\n </ng-template>\n\n <ng-template #browserTemplate>\n <bon-intersection #intersectionZone [session]=\"src\">\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </bon-intersection>\n </ng-template>\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() + '%'\"></div>\n }\n</div>\n","import { Component, input, output } from \"@angular/core\";\n\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport type * as M_CORE from \"../generated\";\nimport { ImageSrcDirective } from \"../marcy-image\";\nimport { MarcyImageComponent } from \"../marcy-image/marcy-image.component\";\nimport { VideoSrcDirective } from \"../marcy-video\";\nimport { MarcyVideoComponent } from \"../marcy-video/marcy-video.component\";\n\n@Component({\n\tselector: \"bon-media\",\n\n\timports: [MarcyImageComponent, MarcyVideoComponent, VideoSrcDirective, ImageSrcDirective],\n\ttemplateUrl: \"./marcy-media.component.html\",\n\tstyleUrl: \"./marcy-media.component.scss\",\n})\nexport class MarcyMediaComponent {\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly isLoaded = output<void>();\n\n\tpublic readonly src = input<M_CORE.Video | M_CORE.Image | undefined>();\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic onLoad() {\n\t\tthis.isLoaded.emit();\n\t}\n}\n","@if (src(); as mediaSrc) {\n @if (mediaSrc.type === 'image') {\n <bon-image\n [imgsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-image>\n } @else if (mediaSrc.type === 'video') {\n <bon-video\n [vidsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-video>\n }\n}\n","import type { Type } from \"@angular/core\";\n\nimport type { IBoneComponent } from \"./IBoneComponent\";\n\nexport class BoneMap extends Map<string, Type<any>> {\n\tpublic getRequired(key: string): Type<IBoneComponent> {\n\t\tconst value = this.get(key);\n\n\t\tif (value === undefined || value === null) {\n\t\t\tthrow new Error(`BoneMap doesn't contain type for key = ${key}`);\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","import { Directive, model, type Type } 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 function boneHostDirective<T extends Bone = Bone>(): {\n\tdirective: Type<BoneDirective<T>>;\n\tinputs: string[];\n\toutputs: string[];\n} {\n\treturn {\n\t\tdirective: BoneDirective<T>,\n\t\tinputs: [\"bone\"],\n\t\toutputs: [\"boneChange\"],\n\t};\n}\n","import { Directive, inject, ViewContainerRef } from \"@angular/core\";\n\n@Directive({\n\tselector: \"[bonSkeletonAnchor]\",\n})\nexport class SkeletonAnchorDirective {\n\tpublic readonly viewContainerRef = inject(ViewContainerRef);\n}\n","import { JsonPipe } from \"@angular/common\";\nimport { Component, inject } from \"@angular/core\";\n\nimport type { Bone } from \"../generated\";\nimport { BoneDirective } from \"./bone.directive\";\nimport type { IBoneComponent } from \"./IBoneComponent\";\n\n@Component({\n\tselector: \"bon-unknown-bone\",\n\n\timports: [JsonPipe],\n\thostDirectives: [{ directive: BoneDirective, inputs: [\"bone\"], outputs: [\"boneChange\"] }],\n\ttemplate: `@if (bd.bone(); as bone) {\n <h2>unknown bone {{bone.type}}</h2>\n <div>{{bone | json}}</div>\n } @else{\n bone is undefined\n }`,\n\tstyles: [\n\t\t`:host{\n display: block;\n border: 2px solid red;\n box-sizing: border-box;\n }`,\n\t],\n})\nexport class UnknownBoneComponent implements IBoneComponent {\n\tpublic readonly bd = inject(BoneDirective<Bone>, { host: true });\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\teffect,\n\tinput,\n\ttype Type,\n\tviewChild,\n} from \"@angular/core\";\n\nimport type { Bone } from \"../generated\";\nimport type { IBoneComponent } from \"./IBoneComponent\";\nimport { SkeletonAnchorDirective } from \"./skeleton-anchor.directive\";\nimport { UnknownBoneComponent } from \"./unknown-bone.component\";\n\n@Component({\n\tselector: \"bon-skeleton\",\n\timports: [SkeletonAnchorDirective],\n\ttemplateUrl: \"./skeleton.component.html\",\n\tstyleUrl: \"./skeleton.component.scss\",\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonComponent {\n\tpublic readonly skeletonAnchor = viewChild.required(SkeletonAnchorDirective);\n\n\tpublic readonly map = input.required<Map<string, Type<IBoneComponent>>>();\n\n\tpublic readonly bones = input.required<Bone[]>();\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst anchor = this.skeletonAnchor();\n\t\t\tconst bones = this.bones();\n\t\t\tconst mapVal = this.map();\n\n\t\t\tconst viewContainerRef = anchor.viewContainerRef;\n\t\t\tviewContainerRef.clear();\n\n\t\t\tif (mapVal === undefined || mapVal === null) {\n\t\t\t\tthrow new Error('add type map with input: [map]=\"...\"');\n\t\t\t}\n\n\t\t\tfor (const bone of bones) {\n\t\t\t\tlet componentType = mapVal.get(bone.type);\n\n\t\t\t\tif (componentType === undefined || componentType === null) {\n\t\t\t\t\tconsole.warn(`Mapping type for ${bone.type} not found`);\n\t\t\t\t\tcomponentType = UnknownBoneComponent;\n\t\t\t\t}\n\n\t\t\t\tviewContainerRef.createComponent(componentType).setInput(\"bone\", bone);\n\t\t\t}\n\t\t});\n\t}\n}\n","<ng-template bonSkeletonAnchor></ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["utils.distinct","utils.descendingT","utils.generateSizesString","utils.groupBy","utils.ascendingT","i1.BoneDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"candy-kingdom-bonnie.mjs","sources":["../../../../libs/bonnie/src/lib/core/device.service.ts","../../../../libs/bonnie/src/lib/core/device.service.base.ts","../../../../libs/bonnie/src/lib/core/emptyBone.ts","../../../../libs/bonnie/src/lib/core/emptyImage.ts","../../../../libs/bonnie/src/lib/core/emptyLocalizedString.ts","../../../../libs/bonnie/src/lib/core/emptyVideo.ts","../../../../libs/bonnie/src/lib/core/encode-uri.pipe.ts","../../../../libs/bonnie/src/lib/core/intersection.component.ts","../../../../libs/bonnie/src/lib/core/MediaObjectFit.ts","../../../../libs/bonnie/src/lib/core/MediaStatus.ts","../../../../libs/bonnie/src/lib/core/utils.ts","../../../../libs/bonnie/src/lib/core/src.directive.ts","../../../../libs/bonnie/src/lib/generated/bone.ts","../../../../libs/bonnie/src/lib/generated/file-format.ts","../../../../libs/bonnie/src/lib/generated/file-meta.ts","../../../../libs/bonnie/src/lib/generated/file-src.ts","../../../../libs/bonnie/src/lib/generated/file-src-base.ts","../../../../libs/bonnie/src/lib/generated/i-equatable.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route.ts","../../../../libs/bonnie/src/lib/generated/i-have-data-route-with-data.ts","../../../../libs/bonnie/src/lib/generated/i-have-skeleton.ts","../../../../libs/bonnie/src/lib/generated/i-page.ts","../../../../libs/bonnie/src/lib/generated/image.ts","../../../../libs/bonnie/src/lib/generated/image-meta.ts","../../../../libs/bonnie/src/lib/generated/image-source.ts","../../../../libs/bonnie/src/lib/generated/localized-object.ts","../../../../libs/bonnie/src/lib/generated/localized-string.ts","../../../../libs/bonnie/src/lib/generated/media-source.ts","../../../../libs/bonnie/src/lib/generated/media-source-base.ts","../../../../libs/bonnie/src/lib/generated/open-graph-data.ts","../../../../libs/bonnie/src/lib/generated/page.ts","../../../../libs/bonnie/src/lib/generated/page-base.ts","../../../../libs/bonnie/src/lib/generated/page-data.ts","../../../../libs/bonnie/src/lib/generated/pix-media.ts","../../../../libs/bonnie/src/lib/generated/pix-meta.ts","../../../../libs/bonnie/src/lib/generated/publish-status.ts","../../../../libs/bonnie/src/lib/generated/sizes-item.ts","../../../../libs/bonnie/src/lib/generated/sizes-width-unit.ts","../../../../libs/bonnie/src/lib/generated/svg-meta.ts","../../../../libs/bonnie/src/lib/generated/video.ts","../../../../libs/bonnie/src/lib/generated/video-meta.ts","../../../../libs/bonnie/src/lib/generated/video-source.ts","../../../../libs/bonnie/src/lib/generated/view.ts","../../../../libs/bonnie/src/lib/generated/index.ts","../../../../libs/bonnie/src/lib/localization/LocalizeServiceBase.ts","../../../../libs/bonnie/src/lib/localization/localize.pipe.ts","../../../../libs/bonnie/src/lib/marcy-image/getDefaultSrc.ts","../../../../libs/bonnie/src/lib/marcy-image/imgsrc.directive.ts","../../../../libs/bonnie/src/lib/marcy-image/toHtmlSources.ts","../../../../libs/bonnie/src/lib/marcy-image/marcy-image.component.ts","../../../../libs/bonnie/src/lib/marcy-image/marcy-image.component.html","../../../../libs/bonnie/src/lib/marcy-video/vidsrc.directive.ts","../../../../libs/bonnie/src/lib/marcy-video/marcy-video.component.ts","../../../../libs/bonnie/src/lib/marcy-video/marcy-video.component.html","../../../../libs/bonnie/src/lib/marcy-media/marcy-media.component.ts","../../../../libs/bonnie/src/lib/marcy-media/marcy-media.component.html","../../../../libs/bonnie/src/lib/skeleton/BoneMap.ts","../../../../libs/bonnie/src/lib/skeleton/bone.directive.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton-anchor.directive.ts","../../../../libs/bonnie/src/lib/skeleton/unknown-bone.component.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton.component.ts","../../../../libs/bonnie/src/lib/skeleton/skeleton.component.html","../../../../libs/bonnie/src/candy-kingdom-bonnie.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\n\nimport type { DeviceServiceBase } from \"./device.service.base\";\n\n@Injectable()\nexport class DeviceService implements DeviceServiceBase {\n\tpublic readonly devicePixelRatio = typeof window === \"undefined\" ? 1 : window.devicePixelRatio;\n\tpublic readonly isSSR = typeof window === \"undefined\";\n}\n","export abstract class DeviceServiceBase {\n\tpublic abstract get isSSR(): boolean;\n\tpublic abstract get devicePixelRatio(): number;\n}\n","import type { Bone } from \"../generated\";\n\nexport function emptyBone(): Bone {\n\treturn {\n\t\tstyle: \"\",\n\t\tmediaQuery: \"\",\n\t\tenabled: true,\n\t\ttype: \"\",\n\t};\n}\n","import type { Image } from \"../generated\";\n\nexport function emptyImage(): Image {\n\treturn {\n\t\t$type: \"image\", // todo: remove\n\t\ttype: \"image\",\n\t\tsources: [],\n\t};\n}\n","import type { LocalizedString } from \"../generated\";\n\nexport function emptyLocalizedString(): LocalizedString {\n\treturn {};\n}\n","import type { Video } from \"../generated\";\n\nexport function emptyVideo(): Video {\n\treturn {\n\t\t$type: \"video\", // todo: remove\n\t\ttype: \"video\",\n\t\tsources: [],\n\t};\n}\n","import { Pipe, type PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"encodeURIComponent\", pure: true })\nexport class EncodeURIComponentPipe implements PipeTransform {\n\tpublic transform(value: string): string {\n\t\treturn encodeURIComponent(value);\n\t}\n}\n","import {\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from \"@angular/core\";\n\n@Component({\n\tselector: \"bon-intersection\",\n\ttemplate: \"<ng-content></ng-content>\",\n\tstyles: [\":host{display:block}\"],\n})\nexport class IntersectionComponent {\n\tpublic readonly intersected = output<void>();\n\n\tpublic readonly session = input<unknown>();\n\n\tprivate readonly _hostRef = inject(ElementRef);\n\n\tprivate readonly _intersectionObserver?: IntersectionObserver;\n\tprivate readonly _isIntersected = signal<boolean>(false);\n\n\tpublic readonly isIntersected = this._isIntersected.asReadonly();\n\n\tprivate _session: unknown; // todo: remove\n\n\tconstructor() {\n\t\tif (typeof window === \"undefined\" || typeof IntersectionObserver === \"undefined\") {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._intersectionObserver = new IntersectionObserver(this.onIntersection.bind(this));\n\n\t\teffect(() => {\n\t\t\tif (this._isIntersected()) {\n\t\t\t\tthis.intersected.emit();\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst newSession = this.session();\n\n\t\t\tif (this._session === newSession) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log(\"reset intersection Observer\");\n\t\t\tthis._session = newSession;\n\t\t\tthis.reset();\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => this._intersectionObserver?.disconnect());\n\t}\n\n\tprivate reset(): void {\n\t\tif (this._intersectionObserver === undefined || this._intersectionObserver === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._intersectionObserver.unobserve(this._hostRef.nativeElement);\n\n\t\tthis._isIntersected.set(false);\n\n\t\tthis._intersectionObserver.observe(this._hostRef.nativeElement);\n\t}\n\n\tprivate onIntersection(\n\t\tentries: IntersectionObserverEntry[],\n\t\tobserver: IntersectionObserver,\n\t): void {\n\t\tif (entries.length > 1) {\n\t\t\tconsole.warn(\"multi entries!\");\n\t\t}\n\n\t\tconst isIntersecting = entries[0].isIntersecting;\n\t\tthis._isIntersected.set(isIntersecting);\n\n\t\tconsole.log(`intersected ${isIntersecting}`, this._hostRef.nativeElement);\n\n\t\t// only once will recieve intersection\n\t\tif (isIntersecting) {\n\t\t\tobserver.unobserve(this._hostRef.nativeElement);\n\t\t}\n\t}\n}\n","export enum MediaObjectFit {\n\tOriginal = \"Original\",\n\tCover = \"Cover\",\n\tContain = \"Contain\",\n}\n","export enum MediaStatus {\n\tNotSet = \"NotSet\",\n\tNotLoaded = \"NotLoaded\",\n\tLoading = \"Loading\",\n\tLoaded = \"Loaded\",\n}\n","import type * as M_CORE from \"../generated\";\n\n// https://stackoverflow.com/questions/42136098/array-groupby-in-typescript\n\nexport const groupBy = <T, K extends keyof any>(arr: T[], key: (i: T) => K) =>\n\tarr.reduce(\n\t\t(groups, item) => {\n\t\t\t(groups[key(item)] ||= []).push(item);\n\t\t\treturn groups;\n\t\t},\n\t\t{} as Record<K, T[]>,\n\t);\n\nexport function distinct<T>(value: T, index: number, array: T[]) {\n\treturn array.indexOf(value) === index;\n}\n\nexport function ascending(a: number, b: number) {\n\treturn a - b;\n}\n\nexport function ascendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\n\treturn (a: T, b: T) => ascending(sel(a), sel(b));\n}\n\nexport function descending(a: number, b: number) {\n\treturn b - a;\n}\n\nexport function descendingT<T>(sel: (x: T) => number): (a: T, b: T) => number {\n\treturn (a: T, b: T) => descending(sel(a), sel(b));\n}\n\nexport function generateSizesString(sizes: M_CORE.SizesItem[]): string {\n\tconst sizesString = sizes\n\t\t.sort((x) => x.width)\n\t\t.map((x) => `${x.mediaQuery} ${x.width}${x.unit.toLowerCase()}`.trim())\n\t\t.join(\",\");\n\n\treturn sizesString;\n}\n\nexport function matchesMediaQuery(mediaQuery?: string): boolean {\n\tconst isEmptyQuery =\n\t\tmediaQuery === null || mediaQuery === undefined || mediaQuery.trim().length === 0;\n\n\t// work for SSR and browser\n\tif (isEmptyQuery) {\n\t\treturn true;\n\t}\n\n\t// other queries disallowed in SSR\n\tif (typeof window === \"undefined\") {\n\t\treturn false;\n\t}\n\n\tconst mediaQueryList = window.matchMedia(mediaQuery);\n\n\treturn mediaQueryList.matches;\n}\n\nexport function isLocalUrlString(url: string): boolean {\n\tif (url === undefined || url === null || url.trim().length === 0) {\n\t\treturn true;\n\t}\n\n\tif (url.startsWith(\"//\")) {\n\t\treturn false;\n\t}\n\n\tif (url.startsWith(\"./\") || url.startsWith(\"/\")) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","import {\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tinject,\n\ttype ModelSignal,\n\toutput,\n\tsignal,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\n\nimport { fromEvent, merge, NEVER, type Observable, Subject, takeUntil } from \"rxjs\";\n\nimport type * as M_CORE from \"../generated\";\nimport * as utils from \"./utils\";\n\n@Directive()\nexport abstract class SrcBaseDirective<T extends M_CORE.Image | M_CORE.Video> {\n\tpublic readonly ratioChange = output<number>();\n\n\tprivate readonly _ratio = signal<number>(0);\n\tpublic readonly ratio = this._ratio.asReadonly();\n\n\tprivate readonly _queryChangeClearSubject = new Subject<void>();\n\n\tpublic abstract readonly data: ModelSignal<T | undefined>;\n\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst ratio = this._ratio();\n\t\t\tthis.ratioChange.emit(ratio);\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst val = this.data();\n\t\t\tthis.onSrcChange(val);\n\t\t});\n\t}\n\n\tprivate onSrcChange(val: T | undefined): void {\n\t\tif (val !== undefined && val !== null && val.sources.length === 0) {\n\t\t\tconsole.warn(\"image should have sources!\");\n\t\t\tthis.data.set(undefined);\n\t\t\treturn;\n\t\t}\n\n\t\t// clear mediaQuery subscriptions\n\t\tthis._queryChangeClearSubject.next();\n\n\t\t// ratio\n\t\tthis._ratio.set(0);\n\n\t\tif (val === undefined || val.sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst allRatios = val.sources\n\t\t\t.flatMap((x) => x.srcSet)\n\t\t\t.map((x) => x.meta.ratio)\n\t\t\t.filter(utils.distinct);\n\n\t\tif (allRatios.length === 1) {\n\t\t\t// same ratio for all\n\t\t\tthis._ratio.set(allRatios[0]);\n\t\t\treturn;\n\t\t}\n\n\t\t// todo: check if this needed to be unsubscribed\n\t\tthis.watchMediaQueries().subscribe(() => {\n\t\t\tthis.calcRatio();\n\t\t\tconsole.log(\"watchMediaQueries calcRatio\");\n\t\t});\n\n\t\tthis.calcRatio();\n\t}\n\n\tprivate calcRatio(): void {\n\t\tconst data = this.data();\n\t\tif (data === undefined || data === null || data.sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < data.sources.length; i++) {\n\t\t\tconst source = data.sources[i];\n\t\t\tconst srcRatios = source.srcSet\n\t\t\t\t.sort(utils.descendingT((x) => x.meta.width))\n\t\t\t\t.map((x) => x.meta.ratio)\n\t\t\t\t.filter(utils.distinct);\n\n\t\t\tif (srcRatios.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (srcRatios.length > 1) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`each source should have srcSet with same ratio. founded: ${srcRatios.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst ratio = srcRatios[0]; // most accurate ratio in biggest image\n\n\t\t\tif (source.mediaQuery.length === 0) {\n\t\t\t\tthis._ratio.set(ratio);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof window === \"undefined\" || typeof window.matchMedia === \"undefined\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst mediaQueryList = window.matchMedia(source.mediaQuery);\n\n\t\t\tif (mediaQueryList.matches) {\n\t\t\t\tthis._ratio.set(ratio);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic watchMediaQueries(): Observable<MediaQueryListEvent> {\n\t\tconsole.log(\"watchMediaQueries\");\n\t\tconst src = this.data();\n\n\t\tif (\n\t\t\tsrc === undefined ||\n\t\t\tsrc === null ||\n\t\t\ttypeof window === \"undefined\" ||\n\t\t\ttypeof window.matchMedia === \"undefined\"\n\t\t) {\n\t\t\treturn NEVER.pipe(\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t\ttakeUntil(this._queryChangeClearSubject),\n\t\t\t);\n\t\t}\n\n\t\tconst mediaQueries = src.sources\n\t\t\t.map((x) => x.mediaQuery)\n\t\t\t.filter(utils.distinct)\n\t\t\t.filter((x) => x.length > 0);\n\n\t\tconsole.log(\"watchMediaQueries mediaQueries\", mediaQueries);\n\t\tconst queryObservables = mediaQueries.map((media) => {\n\t\t\tconst queryList = window.matchMedia(media);\n\t\t\tconst observable = fromEvent<MediaQueryListEvent>(queryList, \"change\").pipe(\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t\ttakeUntil(this._queryChangeClearSubject),\n\t\t\t);\n\n\t\t\treturn observable;\n\t\t});\n\n\t\tconst combinedObservable = merge(...queryObservables);\n\t\treturn combinedObservable;\n\t}\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface Bone {\n\tstyle: string;\n\tmediaQuery: string;\n\tenabled: boolean;\n\ttype: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileFormat {\n\textension: string;\n\tmimeType: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileMeta {\n\tbyteCount: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\nimport type { FileSrcBase } from \"./file-src-base\";\n\nexport interface FileSrc<T extends FileMeta> extends FileSrcBase {\n\tmeta: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface FileSrcBase {\n\tmimeType: string;\n\turl: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport type IEquatable<_T> = {};\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface IHaveDataRoute {\n\tdataRoute: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { IHaveDataRoute } from \"./i-have-data-route\";\n\nexport interface IHaveDataRouteWithData<T> extends IHaveDataRoute {\n\tdata: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\n\nexport interface IHaveSkeleton {\n\tbones: Bone[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PageData } from \"./page-data\";\n\nexport interface IPage<TData extends PageData> {\n\tdata: TData;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { ImageSource } from \"./image-source\";\nimport type { PixMedia } from \"./pix-media\";\n\nexport interface Image extends PixMedia {\n\treadonly $type: \"image\";\n\tsources: ImageSource[];\n\ttype: \"image\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface ImageMeta extends PixMeta {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { ImageMeta } from \"./image-meta\";\nimport type { MediaSource } from \"./media-source\";\nimport type { SizesItem } from \"./sizes-item\";\n\nexport interface ImageSource extends MediaSource<ImageMeta> {\n\tsizes: SizesItem[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface LocalizedObject<T> {\n\t[locale: string]: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { LocalizedObject } from \"./localized-object\";\n\nexport interface LocalizedString extends LocalizedObject<string> {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\nimport type { FileSrc } from \"./file-src\";\nimport type { MediaSourceBase } from \"./media-source-base\";\n\nexport interface MediaSource<TMeta extends FileMeta> extends MediaSourceBase {\n\tsrcSet: FileSrc<TMeta>[];\n\tmediaQuery: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileSrcBase } from \"./file-src-base\";\n\nexport interface MediaSourceBase {\n\tsrcSet: FileSrcBase[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileSrc } from \"./file-src\";\nimport type { ImageMeta } from \"./image-meta\";\nimport type { LocalizedObject } from \"./localized-object\";\nimport type { LocalizedString } from \"./localized-string\";\n\nexport interface OpenGraphData {\n\ttitle: LocalizedString;\n\tdescription: LocalizedString;\n\timage: LocalizedObject<FileSrc<ImageMeta>>;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PageBase } from \"./page-base\";\nimport type { PageData } from \"./page-data\";\n\nexport interface Page<T extends PageData> extends PageBase {\n\tdata: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\nimport type { LocalizedString } from \"./localized-string\";\nimport type { OpenGraphData } from \"./open-graph-data\";\nimport type { PublishStatus } from \"./publish-status\";\n\nexport interface PageBase {\n\tid: string;\n\turl: string;\n\troute: string;\n\torder: number;\n\tpublishStatus: PublishStatus;\n\ttitle: LocalizedString;\n\topenGraph: OpenGraphData;\n\tbones: Bone[];\n\tchildren: PageBase[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface PageData {\n\ttype: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { MediaSourceBase } from \"./media-source-base\";\n\nexport interface PixMedia {\n\tsources: MediaSourceBase[];\n\ttype: \"image\" | \"video\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileMeta } from \"./file-meta\";\n\nexport interface PixMeta extends FileMeta {\n\twidth: number;\n\theight: number;\n\tratio: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport enum PublishStatus {\n\tNotSet = 0,\n\tDraft = 1,\n\tPublished = 2,\n\tArchived = 3,\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { SizesWidthUnit } from \"./sizes-width-unit\";\n\nexport interface SizesItem {\n\twidth: number;\n\tunit: SizesWidthUnit;\n\tmediaQuery: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport enum SizesWidthUnit {\n\tPx = \"Px\",\n\tEm = \"Em\",\n\tVw = \"Vw\",\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface SvgMeta extends PixMeta {\n\tpreciseWidth: number;\n\tpreciseHeight: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMedia } from \"./pix-media\";\nimport type { VideoSource } from \"./video-source\";\n\nexport interface Video extends PixMedia {\n\treadonly $type: \"video\";\n\tsources: VideoSource[];\n\ttype: \"video\";\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { PixMeta } from \"./pix-meta\";\n\nexport interface VideoMeta extends PixMeta {\n\tduration: number;\n\tfullFormat: string;\n\thasAudio: boolean;\n\tframeRate: number;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { MediaSource } from \"./media-source\";\nimport type { VideoMeta } from \"./video-meta\";\n\nexport interface VideoSource extends MediaSource<VideoMeta> {}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Bone } from \"./bone\";\n\nexport interface View {\n\tid: string;\n\tcode: string;\n\tbones: Bone[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport * from \"./bone\";\nexport * from \"./file-format\";\nexport * from \"./file-meta\";\nexport * from \"./file-src\";\nexport * from \"./file-src-base\";\nexport * from \"./i-equatable\";\nexport * from \"./i-have-data-route\";\nexport * from \"./i-have-data-route-with-data\";\nexport * from \"./i-have-skeleton\";\nexport * from \"./i-page\";\nexport * from \"./image\";\nexport * from \"./image-meta\";\nexport * from \"./image-source\";\nexport * from \"./localized-object\";\nexport * from \"./localized-string\";\nexport * from \"./media-source\";\nexport * from \"./media-source-base\";\nexport * from \"./open-graph-data\";\nexport * from \"./page\";\nexport * from \"./page-base\";\nexport * from \"./page-data\";\nexport * from \"./pix-media\";\nexport * from \"./pix-meta\";\nexport * from \"./publish-status\";\nexport * from \"./sizes-item\";\nexport * from \"./sizes-width-unit\";\nexport * from \"./svg-meta\";\nexport * from \"./video\";\nexport * from \"./video-meta\";\nexport * from \"./video-source\";\nexport * from \"./view\";\n","import type { Signal } from \"@angular/core\";\n\nimport { isLocalUrlString } from \"../core/utils\";\nimport type { LocalizedObject, LocalizedString } from \"../generated\";\n\nexport abstract class LocalizeServiceBase {\n\tpublic abstract get locale(): Signal<string>;\n\n\tpublic getLocalized<T>(value: LocalizedObject<T>, defaultValue: T, locale?: string): T {\n\t\tif (value === undefined) {\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\tlocale = locale ?? this.locale();\n\n\t\tconst obj = value[locale] ?? defaultValue;\n\t\treturn obj;\n\t}\n\n\tpublic getLocalizedText(value: LocalizedString, locale?: string): string {\n\t\treturn this.getLocalized<string>(value, \"\", locale);\n\t}\n\n\tpublic isLocalUrl(value: LocalizedString, locale?: string): boolean {\n\t\tconst url = this.getLocalizedText(value, locale);\n\t\treturn isLocalUrlString(url);\n\t}\n}\n","import { inject, Pipe, type PipeTransform } from \"@angular/core\";\nimport { DomSanitizer, type SafeResourceUrl } from \"@angular/platform-browser\";\n\nimport type { LocalizedObject, LocalizedString } from \"../generated\";\nimport { LocalizeServiceBase } from \"./LocalizeServiceBase\";\n\n@Pipe({ name: \"localize\", pure: false })\nexport class LocalizePipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): string {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\treturn this._localizeService.getLocalizedText(value, locale);\n\t}\n}\n\n@Pipe({ name: \"localizeObject\", pure: false })\nexport class LocalizeObjectPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform<T>(object: LocalizedObject<T>, locale?: string): T | undefined {\n\t\tif (object === undefined || object === null) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this._localizeService.getLocalized<T | undefined>(object, undefined, locale);\n\t}\n}\n\n@Pipe({ name: \"localizationIsNotEmpty\", pure: false })\nexport class LocalizationIsNotEmptyPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst text = this._localizeService.getLocalizedText(value, locale);\n\n\t\tconst isNotEmpty = text.trim().length > 0;\n\t\treturn isNotEmpty;\n\t}\n}\n\n@Pipe({ name: \"localizationIsEmpty\", pure: false })\nexport class LocalizationIsEmptyPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst text = this._localizeService.getLocalizedText(value, locale);\n\n\t\tconst isEmpty = text.trim().length === 0;\n\t\treturn isEmpty;\n\t}\n}\n\n@Pipe({ name: \"localizeUrl\", pure: false })\nexport class LocalizeUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\tprivate readonly _domSanitizer = inject(DomSanitizer);\n\n\tpublic transform(value: LocalizedString, locale?: string): SafeResourceUrl {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst urlString = this._localizeService.getLocalizedText(value, locale);\n\t\tconst safeUrl = this._domSanitizer.bypassSecurityTrustResourceUrl(urlString);\n\t\treturn safeUrl;\n\t}\n}\n\n@Pipe({ name: \"isLocalUrl\", pure: false })\nexport class IsLocalUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst isLocal = this._localizeService.isLocalUrl(value, locale);\n\t\treturn isLocal;\n\t}\n}\n\n@Pipe({ name: \"isNotLocalUrl\", pure: false })\nexport class IsNotLocalUrlPipe implements PipeTransform {\n\tprivate readonly _localizeService = inject(LocalizeServiceBase);\n\n\tpublic transform(value: LocalizedString, locale?: string): boolean {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst isLocal = this._localizeService.isLocalUrl(value, locale);\n\t\treturn !isLocal;\n\t}\n}\n","import * as utils from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\n\nexport function getDefaultSrc(\n\timage: M_CORE.Image | undefined,\n): M_CORE.FileSrc<M_CORE.ImageMeta> | undefined {\n\tif (image === undefined || image === null) {\n\t\treturn undefined;\n\t}\n\n\tconst files = image.sources.flatMap((x) => x.srcSet).sort(utils.descendingT((x) => x.meta.width));\n\n\tconst prefferedFiles = files.filter(\n\t\t(x) => x.mimeType === \"image/jpeg\" || x.mimeType === \"image/png\" || x.mimeType === \"image/gif\",\n\t);\n\n\tif (prefferedFiles.length > 0) {\n\t\treturn prefferedFiles[0];\n\t}\n\n\tif (files.length > 0) {\n\t\treturn files[0];\n\t}\n\n\treturn undefined;\n}\n","import { Directive, model } from \"@angular/core\";\n\nimport { SrcBaseDirective } from \"../core/src.directive\";\nimport type * as M_CORE from \"../generated\";\n\n@Directive({\n\tselector: \"[imgsrc]\",\n})\nexport class ImageSrcDirective extends SrcBaseDirective<M_CORE.Image> {\n\tpublic readonly data = model<M_CORE.Image | undefined>(undefined, { alias: \"imgsrc\" });\n}\n","import * as utils from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\nimport type { IHtmlPictureSource } from \"./IHtmlPictureSource\";\n\nexport function toHtmlPictureSources(imageSource: M_CORE.ImageSource): IHtmlPictureSource[] {\n\tconst sizes = utils.generateSizesString(imageSource.sizes);\n\tconst groupedByMime = utils.groupBy(imageSource.srcSet, (x) => x.mimeType);\n\n\tconst simpleSources: IHtmlPictureSource[] = [];\n\n\tfor (const mime in groupedByMime) {\n\t\tconst fileSrcs = groupedByMime[mime].sort(utils.ascendingT((x) => x.meta.width));\n\n\t\tconst srcSet = fileSrcs.map((x) => `${x.url} ${x.meta.width}w`).join(\",\");\n\n\t\tconst source: IHtmlPictureSource = { mime, sizes, srcSet, media: imageSource.mediaQuery };\n\n\t\tsimpleSources.push(source);\n\t}\n\n\treturn simpleSources;\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport { Component, effect, inject, input, output, signal } from \"@angular/core\";\n\nimport { DeviceServiceBase } from \"../core/device.service.base\";\nimport { IntersectionComponent } from \"../core/intersection.component\";\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport { MediaStatus } from \"../core/MediaStatus\";\nimport type * as M_CORE from \"../generated\";\nimport { getDefaultSrc } from \"./getDefaultSrc\";\nimport type { IHtmlPictureSource } from \"./IHtmlPictureSource\";\nimport { ImageSrcDirective } from \"./imgsrc.directive\";\nimport { toHtmlPictureSources } from \"./toHtmlSources\";\n\n@Component({\n\tselector: \"bon-image\",\n\n\timports: [NgTemplateOutlet, IntersectionComponent],\n\ttemplateUrl: \"./marcy-image.component.html\",\n\tstyleUrl: \"./marcy-image.component.scss\",\n})\nexport class MarcyImageComponent {\n\tpublic readonly MediaStatus = MediaStatus;\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly src: ImageSrcDirective;\n\n\tpublic readonly isLoaded = output<void>();\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic readonly sources = signal<IHtmlPictureSource[]>([]);\n\tpublic readonly status = signal<MediaStatus>(MediaStatus.NotSet);\n\tpublic readonly defaultSrc = signal(\"\");\n\n\tpublic readonly device = inject(DeviceServiceBase);\n\n\tconstructor() {\n\t\tconst src = inject(ImageSrcDirective, { optional: true });\n\n\t\tif (src === undefined || src === null) {\n\t\t\tthrow new Error(\n\t\t\t\t`${MarcyImageComponent.name} should have [imgsrc] directive as source object`,\n\t\t\t);\n\t\t}\n\n\t\tthis.src = src;\n\n\t\teffect(() => {\n\t\t\tthis.onSrcChange(this.src.data());\n\t\t});\n\n\t\teffect(() => {\n\t\t\tif (this.status() === MediaStatus.Loaded) {\n\t\t\t\tthis.isLoaded.emit();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate onSrcChange(val: M_CORE.Image | undefined) {\n\t\tthis.defaultSrc.set(getDefaultSrc(val)?.url ?? \"\");\n\n\t\tif (val === undefined || val === null || val.sources.length === 0) {\n\t\t\tthis.sources.set([]);\n\t\t\tthis.status.set(MediaStatus.NotSet);\n\t\t\treturn;\n\t\t}\n\n\t\tconst newSources = val.sources.flatMap(toHtmlPictureSources);\n\t\tthis.sources.set(newSources);\n\t\tthis.status.set(MediaStatus.NotLoaded);\n\t}\n\n\tpublic onLoad() {\n\t\tthis.status.set(MediaStatus.Loaded);\n\t}\n}\n","@if (sources().length > 0) {\n <div [class.knownRatio]=\"src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"picture-container\">\n\n <ng-template #pictureTemplate>\n <picture>\n @for (source of sources(); track $index) {\n <source [srcset]=\"source.srcSet\"\n [attr.media]=\"source.media.length > 0 ? source.media : undefined\"\n [attr.type]=\"source.mime.length > 0 ? source.mime : undefined\"\n [attr.sizes]=\"source.sizes.length > 0 ? source.sizes : undefined\" />\n }\n <img [src]=\"defaultSrc()\" (load)=\"onLoad()\" alt=\"\" />\n </picture>\n </ng-template>\n\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n </noscript>\n } @else {\n <bon-intersection #intersectionZone [session]=\"src\">\n @if (intersectionZone.isIntersected()) {\n <ng-container *ngTemplateOutlet=\"pictureTemplate\"></ng-container>\n }\n </bon-intersection>\n }\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() +'%'\"></div>\n }\n </div>\n}\n","import { Directive, model } from \"@angular/core\";\n\nimport { SrcBaseDirective } from \"../core/src.directive\";\nimport type * as M_CORE from \"../generated\";\n\n@Directive({\n\tselector: \"[vidsrc]\",\n})\nexport class VideoSrcDirective extends SrcBaseDirective<M_CORE.Video> {\n\tpublic readonly data = model<M_CORE.Video | undefined>(undefined, { alias: \"vidsrc\" });\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n\tComponent,\n\ttype ElementRef,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tviewChild,\n} from \"@angular/core\";\n\nimport { DeviceServiceBase } from \"../core/device.service.base\";\nimport { IntersectionComponent } from \"../core/intersection.component\";\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport { MediaStatus } from \"../core/MediaStatus\";\nimport { descendingT, matchesMediaQuery } from \"../core/utils\";\nimport type * as M_CORE from \"../generated\";\nimport { VideoSrcDirective } from \"./vidsrc.directive\";\n\nfunction isWebM(src: M_CORE.FileSrc<M_CORE.ImageMeta>): boolean {\n\treturn src.mimeType === \"video/webm\";\n}\n\n@Component({\n\tselector: \"bon-video\",\n\n\timports: [NgTemplateOutlet, IntersectionComponent],\n\ttemplateUrl: \"./marcy-video.component.html\",\n\tstyleUrl: \"./marcy-video.component.scss\",\n})\nexport class MarcyVideoComponent {\n\tpublic readonly MediaStatus = MediaStatus;\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly src: VideoSrcDirective;\n\n\tpublic readonly isLoaded = output<void>();\n\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic readonly videoRef = viewChild<ElementRef<HTMLVideoElement>>(\"video\");\n\n\tpublic readonly status = signal<MediaStatus>(MediaStatus.NotSet);\n\tpublic readonly source = signal<M_CORE.FileSrc<M_CORE.VideoMeta> | undefined>(undefined);\n\n\tpublic readonly device = inject(DeviceServiceBase);\n\n\tprivate readonly _srcDir = inject(VideoSrcDirective, { optional: true });\n\n\tconstructor() {\n\t\tif (this._srcDir === undefined || this._srcDir === null) {\n\t\t\tthrow new Error(\n\t\t\t\t`${MarcyVideoComponent.name} should have [vidsrc] directive as source object`,\n\t\t\t);\n\t\t}\n\n\t\tthis.src = this._srcDir;\n\n\t\teffect(() => {\n\t\t\tthis.src.data();\n\t\t\tthis.videoRef();\n\t\t\tthis.updateSources();\n\t\t\tthis.subscribeToMediaQueryChange();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tif (this.status() === MediaStatus.Loaded) {\n\t\t\t\tthis.isLoaded.emit();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate subscribeToMediaQueryChange(): void {\n\t\tthis.src.watchMediaQueries().subscribe(() => {\n\t\t\tconsole.log(\"MarcyVideoComponent watchMediaQueries\");\n\t\t\tthis.updateSources();\n\t\t});\n\t}\n\n\tprivate updateSources() {\n\t\tconsole.log(\"MarcyVideoComponent updateSources\");\n\n\t\tthis.source.set(this.findMoreSuitableSource());\n\n\t\tconsole.log(\"MarcyVideoComponent new source\", this.source());\n\n\t\tconst src = this.source();\n\n\t\tif (this.status() === MediaStatus.NotSet && src === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (src === undefined) {\n\t\t\tthis.status.set(MediaStatus.NotSet);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.status.set(MediaStatus.NotLoaded);\n\t}\n\n\tpublic onLoad() {\n\t\tthis.status.set(MediaStatus.Loaded);\n\t}\n\n\tprivate findMoreSuitableSource(): M_CORE.FileSrc<M_CORE.VideoMeta> | undefined {\n\t\tconst ref = this.videoRef();\n\t\tif (ref === undefined) {\n\t\t\tconsole.log(\"skipping findMoreSuitableSource. videoRef is empty still\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst videoSources = this.src.data()?.sources ?? [];\n\n\t\tconst currentVideoWidth = ref.nativeElement.clientWidth;\n\t\tconst realPixelsVideoWidth = this.device.devicePixelRatio * currentVideoWidth;\n\n\t\tconsole.log(`MarcyVideoComponent currentVideoWidth ${currentVideoWidth}`);\n\t\tconsole.log(`MarcyVideoComponent realPixelsVideoWidth ${realPixelsVideoWidth}`);\n\n\t\tfor (let i = 0; i < videoSources.length; i++) {\n\t\t\tconst videoSource = videoSources[i];\n\n\t\t\tif (!matchesMediaQuery(videoSource.mediaQuery)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// SSR\n\t\t\tif (typeof ref.nativeElement.canPlayType !== \"function\") {\n\t\t\t\tconst mp4Srcs = videoSource.srcSet\n\t\t\t\t\t.filter((x) => x.mimeType === \"video/mp4\")\n\t\t\t\t\t.sort(descendingT((x) => x.meta.width));\n\n\t\t\t\treturn mp4Srcs[0];\n\t\t\t}\n\n\t\t\tconst fileSrcs = videoSource.srcSet\n\t\t\t\t.filter((x) => ref.nativeElement.canPlayType(x.mimeType))\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.meta.width === b.meta.width) {\n\t\t\t\t\t\treturn isWebM(a) ? -1 : 1; // if same width prefer webM\n\t\t\t\t\t}\n\n\t\t\t\t\t// else prefer smallest\n\t\t\t\t\treturn a.meta.width <= b.meta.width ? -1 : 1;\n\t\t\t\t}); // smallest video\n\n\t\t\tif (fileSrcs.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// console.log('sources ', fileSrcs);\n\n\t\t\tlet bestSrc = fileSrcs[0];\n\n\t\t\tfor (let i = 1; i < fileSrcs.length; i++) {\n\t\t\t\tconst fileSrc = fileSrcs[i];\n\n\t\t\t\tconst currentDiff = fileSrc.meta.width - realPixelsVideoWidth;\n\n\t\t\t\t// console.log(`browser video currentDiff ${currentDiff}`)\n\n\t\t\t\t// too big video source width\n\t\t\t\tif (currentDiff > 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbestSrc = fileSrc;\n\t\t\t}\n\n\t\t\tconsole.log(`browser found suitable video ${bestSrc.url}`);\n\n\t\t\treturn bestSrc;\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n","<div\n [class.knownRatio]=\"\n src.ratio() > 0 && objectFit() === MarcyObjectFit.Original\n \"\n [class.cover]=\"objectFit() === MarcyObjectFit.Cover\"\n [class.contain]=\"objectFit() === MarcyObjectFit.Contain\"\n [class.loaded]=\"status() === MediaStatus.Loaded\"\n class=\"video-container\"\n>\n @if (device.isSSR) {\n <ng-container *ngTemplateOutlet=\"ssrTemplate\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"browserTemplate\"></ng-container>\n }\n\n <ng-template #videoTemplate>\n <video\n #video\n [src]=\"source()?.url ?? ''\"\n (load)=\"onLoad()\"\n (canplay)=\"video.muted = true; video.play()\"\n playsInline\n autoplay\n loop\n muted\n ></video>\n </ng-template>\n\n <ng-template #ssrTemplate>\n @if (device.isSSR) {\n <noscript>\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </noscript>\n }\n </ng-template>\n\n <ng-template #browserTemplate>\n <bon-intersection #intersectionZone [session]=\"src\">\n <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n </bon-intersection>\n </ng-template>\n\n @if (src.ratio() > 0 && objectFit() === MarcyObjectFit.Original) {\n <div [style.padding-top]=\"100 / src.ratio() + '%'\"></div>\n }\n</div>\n","import { Component, input, output } from \"@angular/core\";\n\nimport { MediaObjectFit } from \"../core/MediaObjectFit\";\nimport type * as M_CORE from \"../generated\";\nimport { ImageSrcDirective } from \"../marcy-image\";\nimport { MarcyImageComponent } from \"../marcy-image/marcy-image.component\";\nimport { VideoSrcDirective } from \"../marcy-video\";\nimport { MarcyVideoComponent } from \"../marcy-video/marcy-video.component\";\n\n@Component({\n\tselector: \"bon-media\",\n\n\timports: [MarcyImageComponent, MarcyVideoComponent, VideoSrcDirective, ImageSrcDirective],\n\ttemplateUrl: \"./marcy-media.component.html\",\n\tstyleUrl: \"./marcy-media.component.scss\",\n})\nexport class MarcyMediaComponent {\n\tpublic readonly MarcyObjectFit = MediaObjectFit;\n\n\tpublic readonly isLoaded = output<void>();\n\n\tpublic readonly src = input<M_CORE.Video | M_CORE.Image | undefined>();\n\tpublic readonly objectFit = input<MediaObjectFit>(MediaObjectFit.Original);\n\n\tpublic onLoad() {\n\t\tthis.isLoaded.emit();\n\t}\n}\n","@if (src(); as mediaSrc) {\n @if (mediaSrc.type === 'image') {\n <bon-image\n [imgsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-image>\n } @else if (mediaSrc.type === 'video') {\n <bon-video\n [vidsrc]=\"mediaSrc\"\n [objectFit]=\"objectFit()\"\n (isLoaded)=\"onLoad()\"\n ></bon-video>\n }\n}\n","import type { Type } from \"@angular/core\";\n\nimport type { IBoneComponent } from \"./IBoneComponent\";\n\nexport class BoneMap extends Map<string, Type<any>> {\n\tpublic getRequired(key: string): Type<IBoneComponent> {\n\t\tconst value = this.get(key);\n\n\t\tif (value === undefined || value === null) {\n\t\t\tthrow new Error(`BoneMap doesn't contain type for key = ${key}`);\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","import { Directive, model } from \"@angular/core\";\n\nimport type { Bone } from \"../generated\";\n\n@Directive({\n\tselector: \"[bonBoneDir]\",\n})\nexport class BoneDirective<T extends Bone = Bone> {\n\tpublic readonly bone = model.required<T>();\n}\n","import { Directive, inject, ViewContainerRef } from \"@angular/core\";\n\n@Directive({\n\tselector: \"[bonSkeletonAnchor]\",\n})\nexport class SkeletonAnchorDirective {\n\tpublic readonly viewContainerRef = inject(ViewContainerRef);\n}\n","import { JsonPipe } from \"@angular/common\";\nimport { Component, inject } from \"@angular/core\";\n\nimport type { Bone } from \"../generated\";\nimport { BoneDirective } from \"./bone.directive\";\nimport type { IBoneComponent } from \"./IBoneComponent\";\n\n@Component({\n\tselector: \"bon-unknown-bone\",\n\n\timports: [JsonPipe],\n\thostDirectives: [{ directive: BoneDirective, inputs: [\"bone\"], outputs: [\"boneChange\"] }],\n\ttemplate: `@if (bd.bone(); as bone) {\n <h2>unknown bone {{bone.type}}</h2>\n <div>{{bone | json}}</div>\n } @else{\n bone is undefined\n }`,\n\tstyles: [\n\t\t`:host{\n display: block;\n border: 2px solid red;\n box-sizing: border-box;\n }`,\n\t],\n})\nexport class UnknownBoneComponent implements IBoneComponent {\n\tpublic readonly bd = inject(BoneDirective<Bone>, { host: true });\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\teffect,\n\tinput,\n\ttype Type,\n\tviewChild,\n} from \"@angular/core\";\n\nimport type { Bone } from \"../generated\";\nimport type { IBoneComponent } from \"./IBoneComponent\";\nimport { SkeletonAnchorDirective } from \"./skeleton-anchor.directive\";\nimport { UnknownBoneComponent } from \"./unknown-bone.component\";\n\n@Component({\n\tselector: \"bon-skeleton\",\n\timports: [SkeletonAnchorDirective],\n\ttemplateUrl: \"./skeleton.component.html\",\n\tstyleUrl: \"./skeleton.component.scss\",\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonComponent {\n\tpublic readonly skeletonAnchor = viewChild.required(SkeletonAnchorDirective);\n\n\tpublic readonly map = input.required<Map<string, Type<IBoneComponent>>>();\n\n\tpublic readonly bones = input.required<Bone[]>();\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst anchor = this.skeletonAnchor();\n\t\t\tconst bones = this.bones();\n\t\t\tconst mapVal = this.map();\n\n\t\t\tconst viewContainerRef = anchor.viewContainerRef;\n\t\t\tviewContainerRef.clear();\n\n\t\t\tif (mapVal === undefined || mapVal === null) {\n\t\t\t\tthrow new Error('add type map with input: [map]=\"...\"');\n\t\t\t}\n\n\t\t\tfor (const bone of bones) {\n\t\t\t\tlet componentType = mapVal.get(bone.type);\n\n\t\t\t\tif (componentType === undefined || componentType === null) {\n\t\t\t\t\tconsole.warn(`Mapping type for ${bone.type} not found`);\n\t\t\t\t\tcomponentType = UnknownBoneComponent;\n\t\t\t\t}\n\n\t\t\t\tviewContainerRef.createComponent(componentType).setInput(\"bone\", bone);\n\t\t\t}\n\t\t});\n\t}\n}\n","<ng-template bonSkeletonAnchor></ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["utils.distinct","utils.descendingT","utils.generateSizesString","utils.groupBy","utils.ascendingT","i1.BoneDirective"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -504,11 +504,6 @@ declare class BoneDirective<T extends Bone = Bone> {
|
|
|
504
504
|
static ɵfac: i0.ɵɵFactoryDeclaration<BoneDirective<any>, never>;
|
|
505
505
|
static ɵdir: i0.ɵɵDirectiveDeclaration<BoneDirective<any>, "[bonBoneDir]", never, { "bone": { "alias": "bone"; "required": true; "isSignal": true; }; }, { "bone": "boneChange"; }, never, never, true, never>;
|
|
506
506
|
}
|
|
507
|
-
declare function boneHostDirective<T extends Bone = Bone>(): {
|
|
508
|
-
directive: Type<BoneDirective<T>>;
|
|
509
|
-
inputs: string[];
|
|
510
|
-
outputs: string[];
|
|
511
|
-
};
|
|
512
507
|
|
|
513
508
|
interface IBoneComponent {
|
|
514
509
|
bd: BoneDirective;
|
|
@@ -539,5 +534,5 @@ declare class UnknownBoneComponent implements IBoneComponent {
|
|
|
539
534
|
static ɵcmp: i0.ɵɵComponentDeclaration<UnknownBoneComponent, "bon-unknown-bone", never, {}, {}, never, never, true, [{ directive: typeof BoneDirective; inputs: { "bone": "bone"; }; outputs: { "boneChange": "boneChange"; }; }]>;
|
|
540
535
|
}
|
|
541
536
|
|
|
542
|
-
export { 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,
|
|
537
|
+
export { BoneDirective, BoneMap, DeviceService, DeviceServiceBase, EncodeURIComponentPipe, ImageSrcDirective, IntersectionComponent, IsLocalUrlPipe, IsNotLocalUrlPipe, LocalizationIsEmptyPipe, LocalizationIsNotEmptyPipe, LocalizeObjectPipe, LocalizePipe, LocalizeServiceBase, LocalizeUrlPipe, MarcyImageComponent, MarcyMediaComponent, MarcyVideoComponent, MediaObjectFit, MediaStatus, PublishStatus, SizesWidthUnit, SkeletonAnchorDirective, SkeletonComponent, SrcBaseDirective, UnknownBoneComponent, VideoSrcDirective, emptyBone, emptyImage, emptyLocalizedString, emptyVideo, getDefaultSrc, toHtmlPictureSources };
|
|
543
538
|
export type { Bone, FileFormat, FileMeta, FileSrc, FileSrcBase, FileSrcFileMeta, FileSrcImageMeta, IBoneComponent, IEquatable, IHaveDataRoute, IHaveDataRouteWithData, IHaveSkeleton, IHtmlPictureSource, IPage, Image, ImageMeta, ImageSource, LocalizedObject, LocalizedString, MediaSource, MediaSourceBase, OpenGraphData, Page, PageBase, PageData, PixMedia, PixMediaUnion, PixMeta, SizesItem, SvgMeta, Video, VideoMeta, VideoSource, View };
|