{"version":3,"file":"ng-tmdb.mjs","sources":["../../../projects/ng-tmdb/src/tokens.ts","../../../projects/ng-tmdb/src/enums/image-sizes.enum.ts","../../../projects/ng-tmdb/src/helpers/image.helper.ts","../../../projects/ng-tmdb/src/view-models/cast.view-model.ts","../../../projects/ng-tmdb/src/view-models/crew.view-model.ts","../../../projects/ng-tmdb/src/view-models/credits.view-model.ts","../../../projects/ng-tmdb/src/view-models/movie.view-model.ts","../../../projects/ng-tmdb/src/services/movie/movie.service.ts","../../../projects/ng-tmdb/src/services/person/person.service.ts","../../../projects/ng-tmdb/src/view-models/tv-show.view-model.ts","../../../projects/ng-tmdb/src/services/tv-show/tv-show.service.ts","../../../projects/ng-tmdb/src/view-models/person.view-model.ts","../../../projects/ng-tmdb/src/helpers/provide-tmdb.helper.ts","../../../projects/ng-tmdb/src/public-api.ts","../../../projects/ng-tmdb/src/ng-tmdb.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const TMDB_API_KEY = new InjectionToken<string>('TMDB_API_KEY');\nexport const TMDB_BASE_URL = new InjectionToken<string>('TMDB_BASE_URL', {\n  providedIn: 'root',\n  factory: () => 'https://api.themoviedb.org/3',\n});\n","export enum BackdropSize {\n  W300 = 'w300',\n  W780 = 'w780',\n  W1280 = 'w1280',\n  Original = 'original',\n}\n\nexport enum PosterSize {\n  W92 = 'w92',\n  W154 = 'w154',\n  W185 = 'w185',\n  W342 = 'w342',\n  W500 = 'w500',\n  W780 = 'w780',\n  Original = 'original',\n}\n\nexport enum ProfileSize {\n  W45 = 'w45',\n  W185 = 'w185',\n  H632 = 'h632',\n  Original = 'original',\n}\n","import { BackdropSize, PosterSize, ProfileSize } from '../enums/image-sizes.enum';\n\nexport class ImageHelper {\n  static baseImageUrl: string = 'https://image.tmdb.org/t/p/';\n\n  private static _getTmdbImageUrl(size: string, path: string): string {\n    return `${this.baseImageUrl}${size}${path}`;\n  }\n\n  private static _getPlaceholderUrl(\n    width: string,\n    height: string,\n    placeholderText: string\n  ): string {\n    return `https://via.placeholder.com/${width}x${height}?text=${placeholderText}`;\n  }\n\n  static getPosterPlaceholderUrl(size: PosterSize, placeholderText: string = 'No Image'): string {\n    let width = '500';\n    let height = '750';\n    switch (size) {\n      case PosterSize.W500:\n        width = '500';\n        height = '750';\n        break;\n      case PosterSize.Original:\n      default:\n        width = '500';\n        height = '750';\n        break;\n    }\n    const label = encodeURIComponent(placeholderText);\n    return this._getPlaceholderUrl(width, height, placeholderText);\n  }\n\n  static getProfilePlaceholderUrl(size: ProfileSize, placeholderText: string = 'No Image'): string {\n    let width = '185';\n    let height = '278';\n    switch (size) {\n      case ProfileSize.W185:\n        width = '185';\n        height = '278';\n        break;\n      case ProfileSize.H632:\n        width = '421';\n        height = '632';\n        break;\n      case ProfileSize.Original:\n      default:\n        width = '185';\n        height = '278';\n        break;\n    }\n    const label = encodeURIComponent(placeholderText);\n    return this._getPlaceholderUrl(width, height, placeholderText);\n  }\n\n  static getPosterUrl(\n    size: PosterSize,\n    path: string | null,\n    placeholderText: string = 'No Image'\n  ): string {\n    if (path && path.length > 0) {\n      return this._getTmdbImageUrl(size, path);\n    }\n    return this.getPosterPlaceholderUrl(size, placeholderText);\n  }\n\n  static getProfileUrl(\n    size: ProfileSize,\n    path: string | null,\n    placeholderText: string = 'No Image'\n  ): string {\n    if (path && path.length > 0) {\n      return this._getTmdbImageUrl(size, path);\n    }\n    return this.getProfilePlaceholderUrl(size, placeholderText);\n  }\n\n  static getBackdropUrl(\n    size: BackdropSize,\n    path: string | null,\n    placeholderText: string = 'No Image'\n  ): string {\n    if (path && path.length > 0) {\n      return this._getTmdbImageUrl(size, path);\n    }\n    // Placeholder size for backdrops, defaulting to 780x439 (W780)\n    let width = '780';\n    let height = '439';\n    switch (size) {\n      case 'w300':\n        width = '300';\n        height = '169';\n        break;\n      case 'w780':\n        width = '780';\n        height = '439';\n        break;\n      case 'w1280':\n        width = '1280';\n        height = '720';\n        break;\n      case 'original':\n      default:\n        width = '780';\n        height = '439';\n        break;\n    }\n    const label = encodeURIComponent(placeholderText);\n    return `https://via.placeholder.com/${width}x${height}?text=${label}`;\n  }\n}\n","import { Cast } from '../dto-models/credits.model';\nimport { ProfileSize } from '../enums/image-sizes.enum';\nimport { ImageHelper } from '../helpers/image.helper';\n\nexport class CastViewModel implements Cast {\n  adult = false;\n  gender = 0;\n  id = 0;\n  known_for_department = '';\n  name = '';\n  original_name = '';\n  popularity = 0;\n  profile_path: string | null = null;\n  cast_id = 0;\n  character = '';\n  credit_id = '';\n  order = 0;\n\n  constructor(data: Partial<Cast> = {}) {\n    Object.assign(this, data);\n  }\n\n  get hasProfileImage(): boolean {\n    return !!this.profile_path;\n  }\n\n  get profileImageUrl(): string {\n    return ImageHelper.getProfileUrl(ProfileSize.W185, this.profile_path);\n  }\n}\n","import { Crew } from '../dto-models/credits.model';\nimport { ProfileSize } from '../enums/image-sizes.enum';\nimport { ImageHelper } from '../helpers/image.helper';\n\nexport class CrewViewModel implements Crew {\n  adult = false;\n  gender = 0;\n  id = 0;\n  known_for_department = '';\n  name = '';\n  original_name = '';\n  popularity = 0;\n  profile_path: string | null = null;\n  credit_id = '';\n  department = '';\n  job = '';\n\n  constructor(data: Partial<Crew> = {}) {\n    Object.assign(this, data);\n  }\n\n  get hasProfileImage(): boolean {\n    return !!this.profile_path;\n  }\n\n  get profileImageUrl(): string {\n    return ImageHelper.getProfileUrl(ProfileSize.W185, this.profile_path);\n  }\n}\n","import { Credits } from '../dto-models/credits.model';\nimport { CastViewModel } from './cast.view-model';\nimport { CrewViewModel } from './crew.view-model';\n\nexport class CreditsViewModel implements Credits {\n  id = 0;\n  cast: CastViewModel[] = [];\n  crew: CrewViewModel[] = [];\n\n  constructor(data: Partial<Credits> = {}) {\n    this.id = data.id ?? 0;\n    this.cast = (data.cast ?? []).map((castMember) => new CastViewModel(castMember));\n    this.crew = (data.crew ?? []).map((crewMember) => new CrewViewModel(crewMember));\n  }\n\n  get directors(): CrewViewModel[] {\n    return this.crew.filter((member) => member.job === 'Director');\n  }\n\n  get writers(): CrewViewModel[] {\n    return this.crew.filter((member) => member.department === 'Writing');\n  }\n\n  topCast(limit: number = 5): CastViewModel[] {\n    return this.cast\n      .slice()\n      .sort((a, b) => a.order - b.order)\n      .slice(0, limit);\n  }\n}\n","import { Movie } from '../dto-models/movie.model';\nimport { BackdropSize, PosterSize } from '../enums/image-sizes.enum';\nimport { ImageHelper } from '../helpers/image.helper';\n\nexport class MovieViewModel implements Movie {\n  id: number = 0;\n  title: string = '';\n  overview: string = '';\n  release_date: string = '';\n  poster_path: string | null = null;\n  backdrop_path: string | null = null;\n  vote_average: number = 0;\n  vote_count: number = 0;\n  genre_ids: number[] = [];\n  original_language: string = '';\n  popularity: number = 0;\n  adult: boolean = false;\n  video: boolean = false;\n  original_title: string = '';\n\n  constructor(data: Partial<Movie> = {}) {\n    Object.assign(this, data);\n  }\n\n  get releaseYear(): number {\n    if (this.release_date && this.release_date.length >= 4) {\n      return parseInt(this.release_date.substring(0, 4), 10);\n    }\n    return NaN;\n  }\n\n  get tinyPosterUrl(): string {\n    return ImageHelper.getPosterUrl(PosterSize.W92, this.poster_path);\n  }\n\n  get smallPosterUrl(): string {\n    return ImageHelper.getPosterUrl(PosterSize.W154, this.poster_path);\n  }\n\n  get mediumPosterUrl(): string {\n    return ImageHelper.getPosterUrl(PosterSize.W500, this.poster_path);\n  }\n\n  get largePosterUrl(): string {\n    return ImageHelper.getPosterUrl(PosterSize.W780, this.poster_path);\n  }\n\n  get backdropUrl(): string {\n    return ImageHelper.getBackdropUrl(BackdropSize.W780, this.backdrop_path);\n  }\n\n  get userScore(): string {\n    return `${Math.round(this.vote_average * 10)}%`;\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { Credits } from '../../dto-models/credits.model';\nimport { Movie } from '../../dto-models/movie.model';\nimport { TMDB_API_KEY, TMDB_BASE_URL } from '../../tokens';\nimport { CreditsViewModel } from '../../view-models/credits.view-model';\nimport { MovieViewModel } from '../../view-models/movie.view-model';\n\n@Injectable({ providedIn: 'root' })\nexport class MovieService {\n  constructor(\n    private http: HttpClient,\n    @Inject(TMDB_API_KEY) private apiKey: string,\n    @Inject(TMDB_BASE_URL) private baseUrl: string\n  ) {}\n\n  getMovie(id: number): Observable<MovieViewModel> {\n    return this.http\n      .get<Movie>(`${this.baseUrl}/movie/${id}?api_key=${this.apiKey}`)\n      .pipe(map((m) => new MovieViewModel(m)));\n  }\n\n  getMovieCredits(id: number): Observable<CreditsViewModel> {\n    const url = `${this.baseUrl}/movie/${id}/credits?api_key=${this.apiKey}`;\n    return this.http.get<Credits>(url).pipe(map((credits) => new CreditsViewModel(credits)));\n  }\n\n  searchMovies(query: string, page: number = 1): Observable<MovieViewModel[]> {\n    return this.http\n      .get<{ results: Movie[] }>(\n        `${this.baseUrl}/search/movie?api_key=${this.apiKey}&query=${encodeURIComponent(\n          query\n        )}&page=${page}`\n      )\n      .pipe(map((res) => res.results.map((m) => new MovieViewModel(m))));\n  }\n\n  getPopularMovies(page: number = 1): Observable<MovieViewModel[]> {\n    return this.http\n      .get<{ results: Movie[] }>(\n        `${this.baseUrl}/movie/popular?api_key=${this.apiKey}&page=${page}`\n      )\n      .pipe(map((res) => res.results.map((m) => new MovieViewModel(m))));\n  }\n\n  getTopRatedMovies(page: number = 1): Observable<MovieViewModel[]> {\n    return this.http\n      .get<{ results: Movie[] }>(\n        `${this.baseUrl}/movie/top_rated?api_key=${this.apiKey}&page=${page}`\n      )\n      .pipe(map((res) => res.results.map((m) => new MovieViewModel(m))));\n  }\n\n  getUpcomingMovies(page: number = 1): Observable<MovieViewModel[]> {\n    return this.http\n      .get<{ results: Movie[] }>(\n        `${this.baseUrl}/movie/upcoming?api_key=${this.apiKey}&page=${page}`\n      )\n      .pipe(map((res) => res.results.map((m) => new MovieViewModel(m))));\n  }\n\n  getNowPlayingMovies(page: number = 1): Observable<MovieViewModel[]> {\n    return this.http\n      .get<{ results: Movie[] }>(\n        `${this.baseUrl}/movie/now_playing?api_key=${this.apiKey}&page=${page}`\n      )\n      .pipe(map((res) => res.results.map((m) => new MovieViewModel(m))));\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Movie } from '../../dto-models/movie.model';\nimport { Person } from '../../dto-models/person.model';\nimport { TvShow } from '../../dto-models/tv.model';\nimport { TMDB_API_KEY, TMDB_BASE_URL } from '../../tokens';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PersonService {\n  constructor(\n    private http: HttpClient,\n    @Inject(TMDB_API_KEY) private apiKey: string,\n    @Inject(TMDB_BASE_URL) private baseUrl: string\n  ) {}\n\n  getPersonDetails(personId: number): Observable<Person> {\n    return this.http.get<Person>(`${this.baseUrl}/person/${personId}?api_key=${this.apiKey}`);\n  }\n\n  getPersonMovieCredits(personId: number): Observable<{ cast: Movie[]; crew: Movie[] }> {\n    return this.http.get<{ cast: Movie[]; crew: Movie[] }>(\n      `${this.baseUrl}/person/${personId}/movie_credits?api_key=${this.apiKey}`\n    );\n  }\n\n  getPersonTvCredits(personId: number): Observable<{ cast: TvShow[]; crew: TvShow[] }> {\n    return this.http.get<{ cast: TvShow[]; crew: TvShow[] }>(\n      `${this.baseUrl}/person/${personId}/tv_credits?api_key=${this.apiKey}`\n    );\n  }\n}\n","import { CreatedBy, Network, Season, TvGenre, TvShow } from '../dto-models/tv.model';\nimport { BackdropSize, PosterSize } from '../enums/image-sizes.enum';\nimport { ImageHelper } from '../helpers/image.helper';\n\nconst PLACEHOLDER_POSTER = '/assets/img/poster-placeholder.png';\nconst PLACEHOLDER_BACKDROP = '/assets/img/backdrop-placeholder.png';\n\nexport class TvShowViewModel implements TvShow {\n  id: number = 0;\n  name: string = '';\n  original_name: string = '';\n  overview: string = '';\n  poster_path: string | null = null;\n  backdrop_path: string | null = null;\n  in_production: boolean = false;\n  number_of_seasons: number = 0;\n  number_of_episodes: number = 0;\n  genres: TvGenre[] = [];\n  created_by: CreatedBy[] = [];\n  networks: Network[] = [];\n  seasons: Season[] = [];\n  first_air_date: string = '';\n  last_air_date: string = '';\n  vote_average: number = 0;\n  vote_count: number = 0;\n  popularity: number = 0;\n  genre_ids: number[] = [];\n  origin_country: string[] = [];\n  original_language: string = '';\n  adult: boolean = false;\n\n  constructor(data: Partial<TvShow> = {}) {\n    Object.assign(this, data);\n  }\n\n  /**\n   * Returns the year of the first air date as a string.\n   */\n  get firstAirYear(): string {\n    if (!this.first_air_date) return '';\n    const year = new Date(this.first_air_date).getFullYear();\n    return isNaN(year) ? '' : String(year);\n  }\n\n  /**\n   * Returns the year of the last air date as a string.\n   */\n  get lastAirYear(): string {\n    if (!this.last_air_date) return '';\n    const year = new Date(this.last_air_date).getFullYear();\n    return isNaN(year) ? '' : String(year);\n  }\n\n  /**\n   * Builds the full poster image URL or returns a placeholder if not available.\n   */\n  get posterUrl(): string {\n    return ImageHelper.getPosterUrl(PosterSize.W500, this.poster_path);\n  }\n\n  /**\n   * Builds the full backdrop image URL or returns a placeholder if not available.\n   */\n  get backdropUrl(): string {\n    return ImageHelper.getBackdropUrl(BackdropSize.W780, this.backdrop_path);\n  }\n\n  /**\n   * Converts the vote_average into a user score percentage string.\n   */\n  get userScore(): string {\n    return `${Math.round(this.vote_average * 10)}%`;\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { Credits } from '../../dto-models/credits.model';\nimport { TvShow } from '../../dto-models/tv.model';\nimport { TMDB_API_KEY, TMDB_BASE_URL } from '../../tokens';\nimport { CreditsViewModel } from '../../view-models/credits.view-model';\nimport { TvShowViewModel } from '../../view-models/tv-show.view-model';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TvShowService {\n  constructor(\n    private http: HttpClient,\n    @Inject(TMDB_API_KEY) private apiKey: string,\n    @Inject(TMDB_BASE_URL) private baseUrl: string\n  ) {}\n\n  getTvShow(id: number): Observable<TvShowViewModel> {\n    const url = `${this.baseUrl}/tv/${id}?api_key=${this.apiKey}`;\n    return this.http.get<TvShow>(url).pipe(map((tvShow) => new TvShowViewModel(tvShow)));\n  }\n\n  searchTvShows(query: string, page: number = 1): Observable<TvShowViewModel[]> {\n    const url = `${this.baseUrl}/search/tv?api_key=${this.apiKey}&query=${encodeURIComponent(\n      query\n    )}&page=${page}`;\n    return this.http\n      .get<{ results: TvShow[] }>(url)\n      .pipe(map((response) => response.results.map((tvShow) => new TvShowViewModel(tvShow))));\n  }\n\n  getPopularTvShows(page: number = 1): Observable<TvShowViewModel[]> {\n    const url = `${this.baseUrl}/tv/popular?api_key=${this.apiKey}&page=${page}`;\n    return this.http\n      .get<{ results: TvShow[] }>(url)\n      .pipe(map((response) => response.results.map((tvShow) => new TvShowViewModel(tvShow))));\n  }\n\n  getTopRatedTvShows(page: number = 1): Observable<TvShowViewModel[]> {\n    const url = `${this.baseUrl}/tv/top_rated?api_key=${this.apiKey}&page=${page}`;\n    return this.http\n      .get<{ results: TvShow[] }>(url)\n      .pipe(map((response) => response.results.map((tvShow) => new TvShowViewModel(tvShow))));\n  }\n\n  getOnTheAirTvShows(page: number = 1): Observable<TvShowViewModel[]> {\n    const url = `${this.baseUrl}/tv/on_the_air?api_key=${this.apiKey}&page=${page}`;\n    return this.http\n      .get<{ results: TvShow[] }>(url)\n      .pipe(map((response) => response.results.map((tvShow) => new TvShowViewModel(tvShow))));\n  }\n\n  getAiringTodayTvShows(page: number = 1): Observable<TvShowViewModel[]> {\n    const url = `${this.baseUrl}/tv/airing_today?api_key=${this.apiKey}&page=${page}`;\n    return this.http\n      .get<{ results: TvShow[] }>(url)\n      .pipe(map((response) => response.results.map((tvShow) => new TvShowViewModel(tvShow))));\n  }\n\n  getTvShowCredits(id: number): Observable<CreditsViewModel> {\n    const url = `${this.baseUrl}/tv/${id}/credits?api_key=${this.apiKey}`;\n    return this.http.get<Credits>(url).pipe(map((credits) => new CreditsViewModel(credits)));\n  }\n}\n","import { Person } from '../dto-models/person.model';\nimport { ProfileSize } from '../enums/image-sizes.enum';\nimport { ImageHelper } from '../helpers/image.helper';\n\nconst TMDB_IMAGE_BASE = 'https://image.tmdb.org/t/p/w500';\nconst PLACEHOLDER_IMAGE = '/assets/images/profile-placeholder.png';\n\nexport class PersonViewModel implements Person {\n  id: number = 0;\n  name: string = '';\n  birthday: string | null = null;\n  deathday: string | null = null;\n  gender: number = 0;\n  biography: string = '';\n  popularity: number = 0;\n  place_of_birth: string = '';\n  profile_path: string | null = null;\n  known_for_department: string = '';\n  also_known_as: string[] = [];\n  adult: boolean = false;\n  imdb_id: string = '';\n  homepage: string | null = null;\n\n  constructor(data: Partial<Person> = {}) {\n    Object.assign(this, data);\n  }\n\n  get age(): number | null {\n    if (!this.birthday) return null;\n    const birth = new Date(this.birthday);\n    const endDate = this.deathday ? new Date(this.deathday) : new Date();\n    if (isNaN(birth.getTime()) || isNaN(endDate.getTime())) return null;\n    let age = endDate.getFullYear() - birth.getFullYear();\n    const m = endDate.getMonth() - birth.getMonth();\n    if (m < 0 || (m === 0 && endDate.getDate() < birth.getDate())) {\n      age--;\n    }\n    return age;\n  }\n\n  get profileUrl(): string {\n    return ImageHelper.getProfileUrl(ProfileSize.H632, this.profile_path);\n  }\n\n  get isAlive(): boolean {\n    return this.deathday == null;\n  }\n}\n","// projects/angular-tmdb/src/lib/provide-tmdb.ts\nimport { provideHttpClient } from '@angular/common/http';\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { TMDB_API_KEY, TMDB_BASE_URL } from '../tokens';\n\n/**\n * Helper function to configure TMDB providers for Angular apps.\n * Ensures HttpClient and API key/base URL are set up correctly.\n */\nexport function provideTmdb(config: { apiKey: string; baseUrl?: string }): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    provideHttpClient(),\n    { provide: TMDB_API_KEY, useValue: config.apiKey },\n    { provide: TMDB_BASE_URL, useValue: config.baseUrl ?? 'https://api.themoviedb.org/3' },\n  ]);\n}\n","/*\n * Public API Surface of angular-tmdb\n */\n// services\nexport * from './services/movie/movie.service';\nexport * from './services/person/person.service';\nexport * from './services/tv-show/tv-show.service';\n\n// view-models\nexport * from './view-models/cast.view-model';\nexport * from './view-models/credits.view-model';\nexport * from './view-models/crew.view-model';\nexport * from './view-models/movie.view-model';\nexport * from './view-models/person.view-model';\nexport * from './view-models/tv-show.view-model';\n\n// helpers\nexport * from './helpers/image.helper';\nexport * from './helpers/provide-tmdb.helper';\n// tokens\nexport * from './tokens';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}