{"version":3,"file":"ngx-telly-player-services.mjs","sources":["../../../../libs/player/services/src/telly-events.service.ts","../../../../libs/player/services/src/telly-media.service.ts","../../../../libs/player/services/src/telly-duration-capper.service.ts","../../../../libs/player/services/src/telly-plugin-orchestrator.service.ts","../../../../libs/player/services/src/telly-fullscreen.service.ts","../../../../libs/player/services/src/provider.ts","../../../../libs/player/services/src/ngx-telly-player-services.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class TellyEventsService {\n  timer$!: Observable<number>;\n  activity$!: Observable<Event>;\n\n  destroy$ = new Subject<void>();\n  reconfigure$ = new Subject<void>();\n  hide$ = new Subject<boolean>();\n  click$ = new Subject<void>();\n}\n","import { Injectable } from '@angular/core';\nimport { TellyMedia, TellyMediaFactory } from '@ngx-telly/player/core';\n\n@Injectable()\nexport class TellyMediaService {\n  staticFactories: TellyMediaFactory[] = [];\n  dynamicFactories: Map<string, TellyMediaFactory> = new Map();\n\n  medias: Map<string, TellyMedia> = new Map();\n\n  register(media: TellyMedia) {\n    if (this.exists(media.id)) throw new Error(`TellyMedia ${media.id} already exist!`);\n    this.medias.set(media.id, media);\n  }\n\n  deregister(id: string) {\n    this.medias.delete(id);\n  }\n\n  get<T extends TellyMedia = TellyMedia>(id: string): T | undefined {\n    const media = this.medias.get(id);\n\n    if (media) {\n      return [...this.staticFactories, ...this.dynamicFactories.values()].reduce(\n        (acc, factory) => factory(acc),\n        media\n      ) as T;\n    }\n\n    return;\n  }\n\n  exists(id: string): boolean {\n    return this.medias.has(id);\n  }\n\n  registerFactory(name: string, factory?: TellyMediaFactory) {\n    if (factory) {\n      this.dynamicFactories.set(name, factory);\n    }\n  }\n\n  deregisterFactory(name: string) {\n    this.dynamicFactories.delete(name);\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { eventType, TellyMedia, VideoEvent } from \"@ngx-telly/player/core\";\nimport { merge, takeUntil } from \"rxjs\";\nimport { TellyEventsService } from \"./telly-events.service\";\n\n@Injectable()\nexport class TellyDurationCapperService {\n  events = inject(TellyEventsService);\n  cap?: number;\n\n  set(cap: number, media: TellyMedia): void {\n    media.events\n        .pipe(\n            takeUntil(merge(this.events.destroy$, this.events.reconfigure$)),\n            eventType([ VideoEvent.LoadedData, VideoEvent.Ended, VideoEvent.Seeked, VideoEvent.Seeking ])\n        )\n        .subscribe(e => {\n          switch (e.type) {\n            case VideoEvent.LoadedData:\n              this.cap = cap ?? media.duration;\n              break;\n            case VideoEvent.Seeking:\n              if (this.cap && media.time >= this.cap) {\n                media.seek(this.cap - 0.001);\n                media.play(true);\n              }\n              break;\n            case VideoEvent.Ended:\n              media.setRate(1);\n              media.indicate('End');\n              break;\n          }\n        });\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { TellyPlugin, tellyPluginToken, tellyConfigToken } from '@ngx-telly/player/core';\nimport { TellyMediaService } from './telly-media.service';\n\n@Injectable()\nexport class TellyPluginOrchestratorService {\n  private readonly plugins = this.normalizePlugins(inject(tellyPluginToken, { optional: true }));\n  private readonly config = inject(tellyConfigToken);\n  private readonly tellyMedia = inject(TellyMediaService);\n\n  registerMediaFactory() {\n    this.plugins\n      .filter(this.canRegisterMediaFactory)\n      .forEach((plugin) => {\n        const { mediaFactory } = plugin.config;\n        if (mediaFactory) this.tellyMedia.staticFactories.push(mediaFactory);\n      });\n  }\n\n  private canRegisterMediaFactory(plugin: TellyPlugin) {\n    return plugin.config.mediaFactory != null;\n  }\n\n  private normalizePlugins(plugins: TellyPlugin | TellyPlugin[] | null): TellyPlugin[] {\n    if (!plugins) return [];\n    return Array.isArray(plugins) ? plugins : [plugins];\n  }\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class TellyFullscreenService {\n  fullscreen = signal<boolean>(false);\n\n  enter() {\n    this.fullscreen.set(true);\n  }\n\n  exit() {\n    this.fullscreen.set(false);\n  }\n\n  toggle() {\n    this.fullscreen.update((x) => !x);\n  }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport {\n  TellyPlugin,\n  TellyPluginConfig,\n  tellyPluginConfigToken,\n  tellyPluginToken,\n  tellyConfigToken,\n  TellyMediaOptions,\n} from '@ngx-telly/player/core';\nimport { TellyDurationCapperService } from './telly-duration-capper.service';\nimport { TellyEventsService } from './telly-events.service';\nimport { TellyFullscreenService } from './telly-fullscreen.service';\nimport { TellyMediaService } from './telly-media.service';\nimport { TellyPluginOrchestratorService } from './telly-plugin-orchestrator.service';\n\nexport function pluginFactory(\n  plugin: new (config: Partial<TellyPluginConfig>) => TellyPlugin,\n  config: Partial<TellyPluginConfig>\n): TellyPlugin {\n  return new plugin(config);\n}\n\nexport function provideTellyPlayer(config?: Partial<TellyMediaOptions>): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    {\n      provide: tellyConfigToken,\n      useValue: config,\n      multi: false,\n    },\n    TellyMediaService,\n    TellyDurationCapperService,\n    TellyEventsService,\n    TellyPluginOrchestratorService,\n    TellyFullscreenService,\n  ]);\n}\n\nexport function provideTellyPlugin<T extends TellyPlugin>(\n  plugin: T,\n  config?: Partial<TellyPluginConfig>\n): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    {\n      provide: tellyPluginConfigToken,\n      useValue: config,\n    },\n    {\n      provide: tellyPluginToken,\n      useFactory: pluginFactory,\n      deps: [plugin, tellyPluginConfigToken],\n      multi: true,\n    },\n  ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}