├── .nvmrc ├── .svelte-kit ├── build │ ├── hooks.js │ ├── components │ │ ├── layout.svelte │ │ └── error.svelte │ ├── runtime │ │ ├── app │ │ │ ├── paths.js │ │ │ ├── env.js │ │ │ ├── navigation.js │ │ │ └── stores.js │ │ ├── env.js │ │ ├── internal │ │ │ └── singletons.js │ │ ├── paths.js │ │ └── chunks │ │ │ └── utils.js │ └── generated │ │ ├── root.svelte │ │ └── manifest.js ├── dev │ ├── components │ │ ├── layout.svelte │ │ └── error.svelte │ ├── runtime │ │ ├── app │ │ │ ├── paths.js │ │ │ ├── env.js │ │ │ ├── stores.js │ │ │ └── navigation.js │ │ ├── env.js │ │ ├── paths.js │ │ ├── chunks │ │ │ └── utils.js │ │ └── internal │ │ │ └── singletons.js │ └── generated │ │ ├── root.svelte │ │ └── manifest.js ├── output │ ├── server │ │ ├── chunks │ │ │ ├── apiCalls-537263b8.js │ │ │ ├── NotFound-9fe683d6.js │ │ │ ├── getMovie-dfbada3a.js │ │ │ ├── getCast-7cf0533a.js │ │ │ ├── getKnownFor-737a4ce8.js │ │ │ ├── getPerson-73622a35.js │ │ │ ├── getTrailer-b36b5a94.js │ │ │ ├── getSeason-d3cb4046.js │ │ │ ├── getShow-6a79cddc.js │ │ │ ├── getShow-f81111d3.js │ │ │ ├── getTvGenres-8924ea77.js │ │ │ ├── getTvGenres-912a2a2a.js │ │ │ ├── getShowGenre-bece8541.js │ │ │ ├── getTvNetworks-3869faf2.js │ │ │ ├── getMovieGenres-3625ddfd.js │ │ │ ├── getMovieGenres-daf20458.js │ │ │ ├── getEpisode-3741fea8.js │ │ │ ├── getSearch-b70547a7.js │ │ │ ├── stores-bd543f9c.js │ │ │ ├── ProgressBar-607c37c9.js │ │ │ ├── [id]-6969a75f.js │ │ │ ├── index-6445fb8c.js │ │ │ ├── [media]-0dee69ba.js │ │ │ ├── __error-7ac6427a.js │ │ │ ├── [id]-d1cca444.js │ │ │ ├── store-cc224516.js │ │ │ ├── [season_number]-873eb4f0.js │ │ │ ├── [episode_number]-47200495.js │ │ │ ├── Cast-31f4e4f3.js │ │ │ ├── [id]-de8563ca.js │ │ │ └── [id]-8c40f23a.js │ │ └── app.js │ ├── client │ │ └── _app │ │ │ ├── chunks │ │ │ ├── singletons-12a22614.js │ │ │ ├── store-07881416.js │ │ │ ├── stores-462c50b9.js │ │ │ ├── ProgressBar-f61e37f1.js │ │ │ └── Cast-6bfa9e9c.js │ │ │ ├── assets │ │ │ ├── start-464e9d0a.css │ │ │ ├── pages │ │ │ │ └── __error.svelte-8a5069d9.css │ │ │ └── Cast-cd25fbf7.css │ │ │ └── pages │ │ │ ├── NotFound.svelte-9659fd5f.js │ │ │ ├── search │ │ │ └── [id].svelte-63c2cd3f.js │ │ │ ├── index.svelte-0b7a5c7b.js │ │ │ ├── trending │ │ │ └── [media].svelte-40e542c5.js │ │ │ ├── genre │ │ │ └── [media] │ │ │ │ └── [id].svelte-5293c531.js │ │ │ ├── __error.svelte-1cf9c0b1.js │ │ │ ├── seasons │ │ │ └── [id] │ │ │ │ └── [season_number].svelte-7534c8b0.js │ │ │ └── episode │ │ │ └── [id] │ │ │ └── [season_number] │ │ │ └── [episode_number].svelte-a1e7498f.js │ └── manifest.json └── netlify │ └── entry.js ├── CNAME ├── .netlify └── package.json ├── .env example ├── .prettierignore ├── src ├── routes │ ├── NotFound.svelte │ ├── api │ │ ├── getTvNetworks.ts │ │ ├── getTvGenres.ts │ │ ├── getMovieGenres.ts │ │ └── postData.ts │ ├── episode │ │ └── [id] │ │ │ └── [season_number] │ │ │ └── [episode_number].svelte │ ├── seasons │ │ └── [id] │ │ │ └── [season_number].svelte │ ├── index.svelte │ ├── trending │ │ └── [media].svelte │ ├── search │ │ └── [id].svelte │ ├── __error.svelte │ ├── genre │ │ └── [media] │ │ │ └── [id].svelte │ ├── person │ │ └── [id].svelte │ ├── __layout.svelte │ ├── movie │ │ └── [id].svelte │ └── tv │ │ └── [id].svelte ├── lib │ ├── utilities │ │ ├── PageTransition.svelte │ │ ├── Skeleton.svelte │ │ ├── Search.svelte │ │ ├── MorePages.svelte │ │ ├── Spinner.svelte │ │ ├── InfiniteScroll.svelte │ │ ├── tooltip.ts │ │ ├── Modal.svelte │ │ ├── ProgressBar.svelte │ │ ├── Seasons.svelte │ │ ├── ToggleDarkMode.svelte │ │ ├── KnownFor.svelte │ │ ├── Pagination.svelte │ │ └── Selector.svelte │ ├── pages │ │ ├── TvList.svelte │ │ ├── MovieList.svelte │ │ ├── PersonList.svelte │ │ ├── Season.svelte │ │ ├── MainSection.svelte │ │ ├── Person.svelte │ │ ├── Episode.svelte │ │ ├── MovieMedia.svelte │ │ └── TvMedia.svelte │ ├── components │ │ ├── PersonCard.svelte │ │ ├── SeasonTitle.svelte │ │ ├── PageTitle.svelte │ │ ├── MovieCard.svelte │ │ ├── TvCard.svelte │ │ ├── Cast.svelte │ │ ├── Header.svelte │ │ └── Genre.svelte │ └── stores │ │ ├── store.ts │ │ └── theme-store.ts ├── app.html ├── app.css └── global.d.ts ├── .gitignore ├── static ├── robots.txt ├── default.jpg ├── favicon.ico ├── icons8-moon-60.png ├── icons8-sun-24.png ├── icons8-sun-48.png ├── sun_light_mode_day-512.webp ├── icons8-sun.svg └── person.svg ├── .prettierrc ├── netlify.toml ├── postcss.config.cjs ├── .eslintrc.cjs ├── svelte.config.js ├── tsconfig.json ├── package.json ├── README.md └── tailwind.config.cjs /.nvmrc: -------------------------------------------------------------------------------- 1 | 16.8.0 -------------------------------------------------------------------------------- /.svelte-kit/build/hooks.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | tmdb.athena-designs.com -------------------------------------------------------------------------------- /.netlify/package.json: -------------------------------------------------------------------------------- 1 | {"type":"commonjs"} -------------------------------------------------------------------------------- /.env example: -------------------------------------------------------------------------------- 1 | VITE_API_KEY = 999XXX999............ -------------------------------------------------------------------------------- /.svelte-kit/dev/components/layout.svelte: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.svelte-kit/build/components/layout.svelte: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/apiCalls-537263b8.js: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .svelte/** 2 | static/** 3 | build/** 4 | node_modules/** 5 | -------------------------------------------------------------------------------- /.svelte-kit/build/runtime/app/paths.js: -------------------------------------------------------------------------------- 1 | export { assets, base } from '../paths.js'; 2 | -------------------------------------------------------------------------------- /.svelte-kit/dev/runtime/app/paths.js: -------------------------------------------------------------------------------- 1 | export { assets, base } from '../paths.js'; 2 | -------------------------------------------------------------------------------- /src/routes/NotFound.svelte: -------------------------------------------------------------------------------- 1 |

Not Found

2 |

This route doesn't exist.

3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /.svelte 4 | /build 5 | /functions 6 | .env 7 | 8 | -------------------------------------------------------------------------------- /static/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/app.js: -------------------------------------------------------------------------------- 1 | export { j as init, r as render } from "./chunks/app-14a936dc.js"; 2 | -------------------------------------------------------------------------------- /static/default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tastejs/sveltekit-movie-app/HEAD/static/default.jpg -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tastejs/sveltekit-movie-app/HEAD/static/favicon.ico -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/chunks/singletons-12a22614.js: -------------------------------------------------------------------------------- 1 | let i;function r(t){i=t}export{r as i,i as r}; 2 | -------------------------------------------------------------------------------- /static/icons8-moon-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tastejs/sveltekit-movie-app/HEAD/static/icons8-moon-60.png -------------------------------------------------------------------------------- /static/icons8-sun-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tastejs/sveltekit-movie-app/HEAD/static/icons8-sun-24.png -------------------------------------------------------------------------------- /static/icons8-sun-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tastejs/sveltekit-movie-app/HEAD/static/icons8-sun-48.png -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100 6 | } 7 | -------------------------------------------------------------------------------- /static/sun_light_mode_day-512.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tastejs/sveltekit-movie-app/HEAD/static/sun_light_mode_day-512.webp -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | command = "npm run build" 3 | publish = "build/" 4 | 5 | [dev] 6 | command = "svelte-kit dev" 7 | framework = "svelte-kit" -------------------------------------------------------------------------------- /.svelte-kit/dev/runtime/env.js: -------------------------------------------------------------------------------- 1 | let prerendering = false; 2 | 3 | /** @param {boolean} value */ 4 | function set_prerendering(value) { 5 | prerendering = value; 6 | } 7 | 8 | export { prerendering, set_prerendering }; 9 | -------------------------------------------------------------------------------- /.svelte-kit/build/runtime/env.js: -------------------------------------------------------------------------------- 1 | let prerendering = false; 2 | 3 | /** @param {boolean} value */ 4 | function set_prerendering(value) { 5 | prerendering = value; 6 | } 7 | 8 | export { prerendering, set_prerendering }; 9 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/assets/start-464e9d0a.css: -------------------------------------------------------------------------------- 1 | #svelte-announcer.svelte-1pdgbjn{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;left:0;overflow:hidden;position:absolute;top:0;white-space:nowrap;width:1px} 2 | -------------------------------------------------------------------------------- /.svelte-kit/build/runtime/internal/singletons.js: -------------------------------------------------------------------------------- 1 | /** @type {import('./router').Router?} */ 2 | let router; 3 | 4 | /** @param {import('./router').Router?} _ */ 5 | function init(_) { 6 | router = _; 7 | } 8 | 9 | export { init, router }; 10 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/chunks/store-07881416.js: -------------------------------------------------------------------------------- 1 | import{C as s}from"./vendor-fc6286ba.js";const e=s(1),o=s("movie"),t=s(null),n=s(""),c=s(0),r=s(0),m=s([]),_=s([]),d=s([]);export{o as a,n as b,e as c,m as d,r as e,c as f,d as m,t as s,_ as t}; 2 | -------------------------------------------------------------------------------- /src/lib/utilities/PageTransition.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
9 | 10 |
-------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/assets/pages/__error.svelte-8a5069d9.css: -------------------------------------------------------------------------------- 1 | h1.svelte-be3lyz,p.svelte-be3lyz{margin:0 auto}h1.svelte-be3lyz{font-size:2.8em;font-weight:700;margin:0 0 .5em}p.svelte-be3lyz{margin:1em auto}@media (min-width:480px){h1.svelte-be3lyz{font-size:4em}} 2 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/NotFound-9fe683d6.js: -------------------------------------------------------------------------------- 1 | import { c as create_ssr_component } from "./app-14a936dc.js"; 2 | const NotFound = create_ssr_component(($$result, $$props, $$bindings, slots) => { 3 | return `

Not Found

4 |

This route doesn't exist.

`; 5 | }); 6 | export { NotFound as default }; 7 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %svelte.head% 8 | 9 | 10 |
%svelte.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /.svelte-kit/build/runtime/paths.js: -------------------------------------------------------------------------------- 1 | /** @type {string} */ 2 | let base = ''; 3 | 4 | /** @type {string} */ 5 | let assets = ''; 6 | 7 | /** @param {{ base: string, assets: string }} paths */ 8 | function set_paths(paths) { 9 | base = paths.base; 10 | assets = paths.assets || base; 11 | } 12 | 13 | export { assets, base, set_paths }; 14 | -------------------------------------------------------------------------------- /.svelte-kit/dev/runtime/paths.js: -------------------------------------------------------------------------------- 1 | /** @type {string} */ 2 | let base = ''; 3 | 4 | /** @type {string} */ 5 | let assets = ''; 6 | 7 | /** @param {{ base: string, assets: string }} paths */ 8 | function set_paths(paths) { 9 | base = paths.base; 10 | assets = paths.assets || base; 11 | } 12 | 13 | export { assets, base, set_paths }; 14 | -------------------------------------------------------------------------------- /.svelte-kit/dev/runtime/chunks/utils.js: -------------------------------------------------------------------------------- 1 | /** @param {HTMLDocument} doc */ 2 | function get_base_uri(doc) { 3 | let baseURI = doc.baseURI; 4 | 5 | if (!baseURI) { 6 | const baseTags = doc.getElementsByTagName('base'); 7 | baseURI = baseTags.length ? baseTags[0].href : doc.URL; 8 | } 9 | 10 | return baseURI; 11 | } 12 | 13 | export { get_base_uri as g }; 14 | -------------------------------------------------------------------------------- /.svelte-kit/build/runtime/chunks/utils.js: -------------------------------------------------------------------------------- 1 | /** @param {HTMLDocument} doc */ 2 | function get_base_uri(doc) { 3 | let baseURI = doc.baseURI; 4 | 5 | if (!baseURI) { 6 | const baseTags = doc.getElementsByTagName('base'); 7 | baseURI = baseTags.length ? baseTags[0].href : doc.URL; 8 | } 9 | 10 | return baseURI; 11 | } 12 | 13 | export { get_base_uri as g }; 14 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/chunks/stores-462c50b9.js: -------------------------------------------------------------------------------- 1 | import{Y as e}from"./vendor-fc6286ba.js";const r=()=>{const s=e("__svelte__");return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},get preloading(){return console.error("stores.preloading is deprecated; use stores.navigating instead"),{subscribe:s.navigating.subscribe}},session:s.session}},n={subscribe(s){return r().page.subscribe(s)}};export{n as p}; 2 | -------------------------------------------------------------------------------- /src/routes/api/getTvNetworks.ts: -------------------------------------------------------------------------------- 1 | const api = import.meta.env.VITE_API_KEY 2 | const api_url = `https://api.themoviedb.org/3/watch/providers/tv?api_key=${api}&language=en-US` 3 | 4 | export const get = async () => { 5 | try { 6 | const response = await (await fetch(api_url)).json() 7 | const tv_network = response.results 8 | return { 9 | body: JSON.stringify({ tv_network }) 10 | } 11 | } 12 | catch (e) { 13 | console.log('error', e) 14 | } 15 | } -------------------------------------------------------------------------------- /.svelte-kit/dev/runtime/internal/singletons.js: -------------------------------------------------------------------------------- 1 | /** @type {import('./router').Router?} */ 2 | let router; 3 | 4 | /** @type {import('./renderer').Renderer} */ 5 | let renderer; 6 | 7 | /** 8 | * @param {{ 9 | * router: import('./router').Router?; 10 | * renderer: import('./renderer').Renderer; 11 | * }} opts 12 | */ 13 | function init(opts) { 14 | router = opts.router; 15 | renderer = opts.renderer; 16 | } 17 | 18 | export { init, renderer, router }; 19 | -------------------------------------------------------------------------------- /src/routes/api/getTvGenres.ts: -------------------------------------------------------------------------------- 1 | const api = import.meta.env.VITE_API_KEY 2 | const api_url = `https://api.themoviedb.org/3/genre/tv/list?api_key=${api}&language-en-GB`; 3 | 4 | export async function get(): Promise<{ body: string }> { 5 | try { 6 | const response = await (await fetch(api_url)).json() 7 | const tv_genres = response.genres 8 | return { 9 | body: JSON.stringify({ tv_genres }) 10 | } 11 | } 12 | catch (e) { 13 | console.log('error', e) 14 | } 15 | } -------------------------------------------------------------------------------- /src/routes/api/getMovieGenres.ts: -------------------------------------------------------------------------------- 1 | const api = import.meta.env.VITE_API_KEY 2 | const api_url = `https://api.themoviedb.org/3/genre/movie/list?api_key=${api}&language-en-GB`; 3 | 4 | export async function get(): Promise<{ body: string }> { 5 | try { 6 | const response = await (await fetch(api_url)).json() 7 | const movie_genres: Genre[] = response.genres 8 | return { 9 | body: JSON.stringify({ movie_genres }) 10 | } 11 | } 12 | catch (e) { 13 | console.log('error', e) 14 | } 15 | } -------------------------------------------------------------------------------- /src/lib/pages/TvList.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
11 | {#if $data} 12 | {#each $data as datum} 13 | 14 | {/each} 15 | {:else} 16 | 17 | {/if} 18 |
19 | -------------------------------------------------------------------------------- /.svelte-kit/build/runtime/app/env.js: -------------------------------------------------------------------------------- 1 | export { prerendering } from '../env.js'; 2 | 3 | /** 4 | * @type {import('$app/env').browser} 5 | */ 6 | const browser = !import.meta.env.SSR; 7 | /** 8 | * @type {import('$app/env').dev} 9 | */ 10 | const dev = !!import.meta.env.DEV; 11 | /** 12 | * @type {import('$app/env').mode} 13 | */ 14 | const mode = import.meta.env.MODE; 15 | /** 16 | * @type {import('$app/env').amp} 17 | */ 18 | const amp = !!import.meta.env.VITE_SVELTEKIT_AMP; 19 | 20 | export { amp, browser, dev, mode }; 21 | -------------------------------------------------------------------------------- /.svelte-kit/dev/runtime/app/env.js: -------------------------------------------------------------------------------- 1 | export { prerendering } from '../env.js'; 2 | 3 | /** 4 | * @type {import('$app/env').browser} 5 | */ 6 | const browser = !import.meta.env.SSR; 7 | /** 8 | * @type {import('$app/env').dev} 9 | */ 10 | const dev = !!import.meta.env.DEV; 11 | /** 12 | * @type {import('$app/env').mode} 13 | */ 14 | const mode = import.meta.env.MODE; 15 | /** 16 | * @type {import('$app/env').amp} 17 | */ 18 | const amp = !!import.meta.env.VITE_SVELTEKIT_AMP; 19 | 20 | export { amp, browser, dev, mode }; 21 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getMovie-dfbada3a.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const post = async (request) => { 3 | try { 4 | const api_url = `https://api.themoviedb.org/3/${request.body["media"]}/${request.body["id"]}?api_key=${api}&language=en-US`; 5 | const res_mov = await fetch(api_url); 6 | const res = await res_mov.json(); 7 | return { 8 | body: JSON.stringify({ res }) 9 | }; 10 | } catch (e) { 11 | console.log("error", e); 12 | } 13 | }; 14 | export { post }; 15 | -------------------------------------------------------------------------------- /src/lib/pages/MovieList.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
11 | {#if $data} 12 | {#each $data as datum} 13 | 14 | {/each} 15 | {:else} 16 | 17 | {/if} 18 |
19 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getCast-7cf0533a.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const post = async (request) => { 3 | try { 4 | const api_url = `https://api.themoviedb.org/3/${request.body["media"]}/${request.body["id"]}/credits?api_key=${api}&language=en-US`; 5 | const res_mov = await fetch(api_url); 6 | const res = await res_mov.json(); 7 | return { 8 | body: JSON.stringify({ res }) 9 | }; 10 | } catch (e) { 11 | console.log("error", e); 12 | } 13 | }; 14 | export { post }; 15 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getKnownFor-737a4ce8.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const post = async (request) => { 3 | try { 4 | const api_url = `https://api.themoviedb.org/3/person/${request.body["person"]}/combined_credits?api_key=${api}&language=en-US`; 5 | const res_mov = await fetch(api_url); 6 | const res = await res_mov.json(); 7 | return { 8 | body: JSON.stringify({ res }) 9 | }; 10 | } catch (e) { 11 | console.log("error", e); 12 | } 13 | }; 14 | export { post }; 15 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getPerson-73622a35.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const post = async (request) => { 3 | try { 4 | const api_url = `https://api.themoviedb.org/3/${request.body["media"]}/${request.body["id"]}/credits?api_key=${api}&language=en-US`; 5 | const res_mov = await fetch(api_url); 6 | const res = await res_mov.json(); 7 | return { 8 | body: JSON.stringify({ res }) 9 | }; 10 | } catch (e) { 11 | console.log("error", e); 12 | } 13 | }; 14 | export { post }; 15 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getTrailer-b36b5a94.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const post = async (request) => { 3 | try { 4 | const api_url = `https://api.themoviedb.org/3/${request.body["media"]}/${request.body["id"]}/videos?api_key=${api}&language=en-US`; 5 | const res_mov = await fetch(api_url); 6 | const res = await res_mov.json(); 7 | return { 8 | body: JSON.stringify({ res }) 9 | }; 10 | } catch (e) { 11 | console.log("error", e); 12 | } 13 | }; 14 | export { post }; 15 | -------------------------------------------------------------------------------- /src/lib/pages/PersonList.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
11 | {#if $data} 12 | {#each $data as datum} 13 | 14 | {/each} 15 | {:else} 16 | 17 | {/if} 18 |
19 | -------------------------------------------------------------------------------- /src/lib/utilities/Skeleton.svelte: -------------------------------------------------------------------------------- 1 | {#each Array(20) as _} 2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | {/each} 12 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getSeason-d3cb4046.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const post = async (request) => { 3 | try { 4 | const api_url = `https://api.themoviedb.org/3/tv/${request.body["id"]}/season/${request.body["season_number"]}?api_key=${api}&language=en-US`; 5 | const res_api = await fetch(api_url); 6 | const res = await res_api.json(); 7 | return { 8 | body: JSON.stringify({ res }) 9 | }; 10 | } catch (e) { 11 | console.log("error", e); 12 | } 13 | }; 14 | export { post }; 15 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getShow-6a79cddc.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const post = async (request) => { 3 | try { 4 | const api_url = `https://api.themoviedb.org/3/trending/${request.body["media"]}/week?api_key=${api}&language=en-GB&page=${request.body["page"]}`; 5 | const res_mov = await fetch(api_url); 6 | const res = await res_mov.json(); 7 | return { 8 | body: JSON.stringify({ res }) 9 | }; 10 | } catch (e) { 11 | console.log("error", e); 12 | } 13 | }; 14 | export { post }; 15 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getShow-f81111d3.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const post = async (request) => { 3 | try { 4 | const api_url = `https://api.themoviedb.org/3/trending/${request.body["media"]}/week?api_key=${api}&language=en-GB&page=${request.body["page"]}`; 5 | const res_mov = await fetch(api_url); 6 | const res = await res_mov.json(); 7 | return { 8 | body: JSON.stringify({ res }) 9 | }; 10 | } catch (e) { 11 | console.log("error", e); 12 | } 13 | }; 14 | export { post }; 15 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/assets/Cast-cd25fbf7.css: -------------------------------------------------------------------------------- 1 | div.svelte-11hc8a6{-webkit-animation:svelte-11hc8a6-wave .8s ease-in-out infinite alternate;animation:svelte-11hc8a6-wave .8s ease-in-out infinite alternate}div.svelte-11hc8a6:first-of-type{-webkit-animation-delay:-.4s;animation-delay:-.4s}div.svelte-11hc8a6:nth-of-type(2){-webkit-animation-delay:-.2s;animation-delay:-.2s}@-webkit-keyframes svelte-11hc8a6-wave{0%{transform:translateY(-100%)}to{transform:translateY(100%)}}@keyframes svelte-11hc8a6-wave{0%{transform:translateY(-100%)}to{transform:translateY(100%)}} 2 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getTvGenres-8924ea77.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const GENRES_TV_API = `https://api.themoviedb.org/3/genre/tv/list?api_key=${api}&language-en-GB`; 3 | const get = async () => { 4 | try { 5 | const response = await fetch(GENRES_TV_API); 6 | const response_json = await response.json(); 7 | const tv_genres = response_json.genres; 8 | return { 9 | body: JSON.stringify({ tv_genres }) 10 | }; 11 | } catch (e) { 12 | console.log("error", e); 13 | } 14 | }; 15 | export { get }; 16 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getTvGenres-912a2a2a.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const GENRES_TV_API = `https://api.themoviedb.org/3/genre/tv/list?api_key=${api}&language-en-GB`; 3 | const get = async () => { 4 | try { 5 | const response = await fetch(GENRES_TV_API); 6 | const response_json = await response.json(); 7 | const tv_genres = response_json.genres; 8 | return { 9 | body: JSON.stringify({ tv_genres }) 10 | }; 11 | } catch (e) { 12 | console.log("error", e); 13 | } 14 | }; 15 | export { get }; 16 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getShowGenre-bece8541.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const post = async (request) => { 3 | try { 4 | const api_url = `https://api.themoviedb.org/3/discover/${request.body["media"]}?api_key=${api}&with_genres=${request.body["genre"]}&page=${request.body["page"]}`; 5 | const res_mov = await fetch(api_url); 6 | const res = await res_mov.json(); 7 | return { 8 | body: JSON.stringify({ res }) 9 | }; 10 | } catch (e) { 11 | console.log("error", e); 12 | } 13 | }; 14 | export { post }; 15 | -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | const tailwindcss = require('tailwindcss'); 2 | const autoprefixer = require('autoprefixer'); 3 | const cssnano = require('cssnano'); 4 | 5 | const mode = process.env.NODE_ENV; 6 | const dev = mode === 'development'; 7 | 8 | const config = { 9 | plugins: [ 10 | //Some plugins, like postcss-nested, need to run before Tailwind, 11 | tailwindcss(), 12 | //But others, like autoprefixer, need to run after, 13 | autoprefixer(), 14 | !dev && 15 | cssnano({ 16 | preset: 'default' 17 | }) 18 | ] 19 | }; 20 | 21 | module.exports = config; 22 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getTvNetworks-3869faf2.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const TV_NETWORKS_API = `https://api.themoviedb.org/3/watch/providers/tv?api_key=${api}&language=en-US`; 3 | const get = async () => { 4 | try { 5 | const response = await fetch(TV_NETWORKS_API); 6 | const response_json = await response.json(); 7 | const tv_network = response_json.results; 8 | return { 9 | body: JSON.stringify({ tv_network }) 10 | }; 11 | } catch (e) { 12 | console.log("error", e); 13 | } 14 | }; 15 | export { get }; 16 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: '@typescript-eslint/parser', 4 | extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], 5 | plugins: ['svelte3', '@typescript-eslint'], 6 | ignorePatterns: ['*.cjs'], 7 | overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], 8 | settings: { 9 | 'svelte3/typescript': require('typescript') 10 | }, 11 | parserOptions: { 12 | sourceType: 'module', 13 | ecmaVersion: 2018 14 | }, 15 | env: { 16 | browser: true, 17 | es2017: true, 18 | node: true 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getMovieGenres-3625ddfd.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const GENRES_MOVIE_API = `https://api.themoviedb.org/3/genre/movie/list?api_key=${api}&language-en-GB`; 3 | const get = async () => { 4 | try { 5 | const response = await fetch(GENRES_MOVIE_API); 6 | const response_json = await response.json(); 7 | const movie_genres = response_json.genres; 8 | return { 9 | body: JSON.stringify({ movie_genres }) 10 | }; 11 | } catch (e) { 12 | console.log("error", e); 13 | } 14 | }; 15 | export { get }; 16 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getMovieGenres-daf20458.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const GENRES_MOVIE_API = `https://api.themoviedb.org/3/genre/movie/list?api_key=${api}&language-en-GB`; 3 | const get = async () => { 4 | try { 5 | const response = await fetch(GENRES_MOVIE_API); 6 | const response_json = await response.json(); 7 | const movie_genres = response_json.genres; 8 | return { 9 | body: JSON.stringify({ movie_genres }) 10 | }; 11 | } catch (e) { 12 | console.log("error", e); 13 | } 14 | }; 15 | export { get }; 16 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getEpisode-3741fea8.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const post = async (request) => { 3 | try { 4 | const api_url = `https://api.themoviedb.org/3/tv/${request.body["id"]}/season/${request.body["season_number"]}/episode/${request.body["episode_number"]}?api_key=${api}&language=en-US`; 5 | const res_api = await fetch(api_url); 6 | const res = await res_api.json(); 7 | return { 8 | body: JSON.stringify({ res }) 9 | }; 10 | } catch (e) { 11 | console.log("error", e); 12 | } 13 | }; 14 | export { post }; 15 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/getSearch-b70547a7.js: -------------------------------------------------------------------------------- 1 | const api = "61e588d14c9ac42a437e560cc3d65659"; 2 | const post = async (request) => { 3 | try { 4 | const api_url = `https://api.themoviedb.org/3/search/${request.body["media"]}?api_key=${api}&language=en-US&page=${request.body["page"]}&include_adult=false&query=${request.body["query"]}`; 5 | const res_mov = await fetch(api_url); 6 | const res = await res_mov.json(); 7 | return { 8 | body: JSON.stringify({ res }) 9 | }; 10 | } catch (e) { 11 | console.log("error", e); 12 | } 13 | }; 14 | export { post }; 15 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/pages/NotFound.svelte-9659fd5f.js: -------------------------------------------------------------------------------- 1 | import{S as v,i as F,s as N,e as p,t as u,k,c as f,a as m,g as _,d as o,n as y,f as r,D as h,H as c}from"../chunks/vendor-fc6286ba.js";function E(x){let e,i,n,s,l;return{c(){e=p("h1"),i=u("Not Found"),n=k(),s=p("p"),l=u("This route doesn't exist.")},l(t){e=f(t,"H1",{});var a=m(e);i=_(a,"Not Found"),a.forEach(o),n=y(t),s=f(t,"P",{});var d=m(s);l=_(d,"This route doesn't exist."),d.forEach(o)},m(t,a){r(t,e,a),h(e,i),r(t,n,a),r(t,s,a),h(s,l)},p:c,i:c,o:c,d(t){t&&o(e),t&&o(n),t&&o(s)}}}class S extends v{constructor(e){super();F(this,e,null,E,N,{})}}export{S as default}; 2 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import preprocess from 'svelte-preprocess'; 2 | import adapter from '@sveltejs/adapter-netlify'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://github.com/sveltejs/svelte-preprocess 7 | // for more information about preprocessors 8 | preprocess: [ 9 | preprocess({ 10 | postcss: true 11 | }) 12 | ], 13 | 14 | kit: { 15 | adapter: adapter({ 16 | split: false 17 | }), 18 | // inline all stylesheets smaller than threshold 19 | inlineStyleThreshold: 7000, 20 | // hydrate the
element in src/app.html 21 | target: '#svelte' 22 | } 23 | }; 24 | 25 | export default config; 26 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/stores-bd543f9c.js: -------------------------------------------------------------------------------- 1 | import { i as getContext } from "./app-14a936dc.js"; 2 | const getStores = () => { 3 | const stores = getContext("__svelte__"); 4 | return { 5 | page: { 6 | subscribe: stores.page.subscribe 7 | }, 8 | navigating: { 9 | subscribe: stores.navigating.subscribe 10 | }, 11 | get preloading() { 12 | console.error("stores.preloading is deprecated; use stores.navigating instead"); 13 | return { 14 | subscribe: stores.navigating.subscribe 15 | }; 16 | }, 17 | session: stores.session 18 | }; 19 | }; 20 | const page = { 21 | subscribe(fn) { 22 | const store = getStores().page; 23 | return store.subscribe(fn); 24 | } 25 | }; 26 | export { page as p }; 27 | -------------------------------------------------------------------------------- /.svelte-kit/dev/components/error.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 17 | 18 |

{status}

19 | 20 |
{error.message}
21 | 22 | 23 | 24 | {#if error.frame} 25 |
{error.frame}
26 | {/if} 27 | {#if error.stack} 28 |
{error.stack}
29 | {/if} 30 | -------------------------------------------------------------------------------- /.svelte-kit/build/components/error.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 17 | 18 |

{status}

19 | 20 |
{error.message}
21 | 22 | 23 | 24 | {#if error.frame} 25 |
{error.frame}
26 | {/if} 27 | {#if error.stack} 28 |
{error.stack}
29 | {/if} 30 | -------------------------------------------------------------------------------- /src/lib/utilities/Search.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 29 | -------------------------------------------------------------------------------- /src/lib/components/PersonCard.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 | 8 | {datum.name} 13 |
14 |
17 | {datum.name} 18 |
19 |
20 |
21 |
22 | -------------------------------------------------------------------------------- /src/lib/utilities/MorePages.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | {#if total_pages > 1} 15 |
16 | 23 |
24 | {/if} 25 | -------------------------------------------------------------------------------- /src/lib/components/SeasonTitle.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
10 |
11 |

{$show_name}

12 |
13 |

Season

14 | {#each season_details as season} 15 | ${season.season_number} 21 | 22 | {/each} 23 |
24 |
25 |
26 | -------------------------------------------------------------------------------- /src/lib/stores/store.ts: -------------------------------------------------------------------------------- 1 | import type { Writable } from 'svelte/store'; 2 | import { writable } from 'svelte/store'; 3 | 4 | export const current_page: Writable = writable(1); 5 | export const trailer_key: Writable = writable('xyz'); 6 | export const video_site: Writable = writable(''); 7 | 8 | 9 | export const media_type: Writable = writable('movie'); 10 | 11 | export const tv_network: Writable = writable([]); 12 | export const selected: Writable = writable(null); 13 | export const theme_dark: Writable = writable(false); 14 | export const show_name: Writable = writable(''); 15 | export const season_count: Writable = writable(0); 16 | export const show_id: Writable = writable(0); 17 | export const data = writable([]) 18 | 19 | export const tv_genres: Writable = writable([]); 20 | export const movie_genres: Writable = writable([]); -------------------------------------------------------------------------------- /src/routes/episode/[id]/[season_number]/[episode_number].svelte: -------------------------------------------------------------------------------- 1 | 28 | 29 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/routes/seasons/[id]/[season_number].svelte: -------------------------------------------------------------------------------- 1 | 27 | 28 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /static/icons8-sun.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/lib/utilities/Spinner.svelte: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | 11 | 33 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/ProgressBar-607c37c9.js: -------------------------------------------------------------------------------- 1 | import { c as create_ssr_component, a as add_attribute, b as escape } from "./app-14a936dc.js"; 2 | const ProgressBar = create_ssr_component(($$result, $$props, $$bindings, slots) => { 3 | let { progress } = $$props; 4 | let progress_percent; 5 | let canvas; 6 | if ($$props.progress === void 0 && $$bindings.progress && progress !== void 0) 7 | $$bindings.progress(progress); 8 | progress_percent = progress * 10; 9 | return `
10 |

${escape(progress_percent)}%

`; 11 | }); 12 | export { ProgressBar as P }; 13 | -------------------------------------------------------------------------------- /src/routes/index.svelte: -------------------------------------------------------------------------------- 1 | 31 | 32 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "module": "es2020", 5 | "lib": ["es2020", "DOM"], 6 | "target": "es2019", 7 | /** 8 | svelte-preprocess cannot figure out whether you have a value or a type, so tell TypeScript 9 | to enforce using \`import type\` instead of \`import\` for Types. 10 | */ 11 | "importsNotUsedAsValues": "error", 12 | "isolatedModules": true, 13 | "resolveJsonModule": true, 14 | /** 15 | To have warnings/errors of the Svelte compiler at the correct position, 16 | enable source maps by default. 17 | */ 18 | "sourceMap": true, 19 | "esModuleInterop": true, 20 | "skipLibCheck": true, 21 | "forceConsistentCasingInFileNames": true, 22 | "baseUrl": ".", 23 | "allowJs": true, 24 | "checkJs": true, 25 | "paths": { 26 | "$lib": ["src/lib"], 27 | "$lib/*": ["src/lib/*"], 28 | "$stores":["src/lib/stores"], 29 | "$api":["src/routes/api"], 30 | "$api/*":["src/routes/api/*"] 31 | } 32 | }, 33 | "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.ts", "src/**/*.svelte"] 34 | } 35 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/pages/search/[id].svelte-63c2cd3f.js: -------------------------------------------------------------------------------- 1 | import{N as i,S as c,i as p,s as m,j as u,m as l,o as f,x as _,u as g,v as d}from"../../chunks/vendor-fc6286ba.js";import{d as r,a as h}from"../../chunks/store-07881416.js";import{M as $}from"../../chunks/MainSection-8e495d87.js";import"../../chunks/ProgressBar-f61e37f1.js";function j(n){let a,s;return a=new $({props:{total_pages:n[0]}}),{c(){u(a.$$.fragment)},l(t){l(a.$$.fragment,t)},m(t,e){f(a,t,e),s=!0},p(t,[e]){const o={};e&1&&(o.total_pages=t[0]),a.$set(o)},i(t){s||(_(a.$$.fragment,t),s=!0)},o(t){g(a.$$.fragment,t),s=!1},d(t){d(a,t)}}}async function x({fetch:n,page:a}){const t=await(await n("../api/getSearch",{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({media:i(h),page:"1",query:a.params.id})})).json();r.set(await t.res.results);const e=await t.res.total_pages;return{props:{data:r,total_pages:e}}}function y(n,a,s){let{total_pages:t}=a;return n.$$set=e=>{"total_pages"in e&&s(0,t=e.total_pages)},[t]}class M extends c{constructor(a){super();p(this,a,y,j,m,{total_pages:0})}}export{M as default,x as load}; 2 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/pages/index.svelte-0b7a5c7b.js: -------------------------------------------------------------------------------- 1 | import{S as c,i as p,s as m,j as u,m as l,o as _,x as f,u as g,v as d,L as h,M as j}from"../chunks/vendor-fc6286ba.js";import{d as r,s as i}from"../chunks/store-07881416.js";import{M as S}from"../chunks/MainSection-8e495d87.js";import"../chunks/ProgressBar-f61e37f1.js";function w(a){let e,s;return e=new S({props:{total_pages:a[0]}}),{c(){u(e.$$.fragment)},l(t){l(e.$$.fragment,t)},m(t,o){_(e,t,o),s=!0},p(t,[o]){const n={};o&1&&(n.total_pages=t[0]),e.$set(n)},i(t){s||(f(e.$$.fragment,t),s=!0)},o(t){g(e.$$.fragment,t),s=!1},d(t){d(e,t)}}}async function M({fetch:a}){r.set(void 0);const s=await(await a("./api/getShow",{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({media:"movie",page:"1"})})).json();return r.set(await s.res.results),{props:{total_pages:await s.res.total_pages}}}function $(a,e,s){let t;h(a,i,n=>s(1,t=n));let{total_pages:o}=e;return j(i,t=null,t),a.$$set=n=>{"total_pages"in n&&s(0,o=n.total_pages)},[o]}class x extends c{constructor(e){super();p(this,e,$,w,m,{total_pages:0})}}export{x as default,M as load}; 2 | -------------------------------------------------------------------------------- /src/routes/trending/[media].svelte: -------------------------------------------------------------------------------- 1 | 32 | 33 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /src/lib/components/PageTitle.svelte: -------------------------------------------------------------------------------- 1 | 29 | 30 |
31 |

{page_title}

32 |
33 | -------------------------------------------------------------------------------- /src/routes/search/[id].svelte: -------------------------------------------------------------------------------- 1 | 32 | 33 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/lib/utilities/InfiniteScroll.svelte: -------------------------------------------------------------------------------- 1 | 42 | 43 |
44 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/pages/trending/[media].svelte-40e542c5.js: -------------------------------------------------------------------------------- 1 | import{S as c,i as m,s as p,j as u,m as l,o as _,x as d,u as f,v as g,L as h,M as j}from"../../chunks/vendor-fc6286ba.js";import{d as r,a as S,s as i}from"../../chunks/store-07881416.js";import{M as w}from"../../chunks/MainSection-8e495d87.js";import"../../chunks/ProgressBar-f61e37f1.js";function y(s){let e,a;return e=new w({props:{total_pages:s[0]}}),{c(){u(e.$$.fragment)},l(t){l(e.$$.fragment,t)},m(t,n){_(e,t,n),a=!0},p(t,[n]){const o={};n&1&&(o.total_pages=t[0]),e.$set(o)},i(t){a||(d(e.$$.fragment,t),a=!0)},o(t){f(e.$$.fragment,t),a=!1},d(t){g(e,t)}}}async function x({fetch:s,page:e}){r.set(void 0),S.set(e.params.media);const t=await(await s("../../api/getShow",{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({media:e.params.media,page:"1"})})).json();return r.set(await t.res.results),{props:{total_pages:await t.res.total_pages}}}function $(s,e,a){let t;h(s,i,o=>a(1,t=o));let{total_pages:n}=e;return j(i,t=null,t),s.$$set=o=>{"total_pages"in o&&a(0,n=o.total_pages)},[n]}class B extends c{constructor(e){super();m(this,e,$,y,p,{total_pages:0})}}export{B as default,x as load}; 2 | -------------------------------------------------------------------------------- /src/routes/__error.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 20 | 21 | 22 | {title} 23 | 24 | 25 |

{title}

26 | 27 |

{message}

28 | 29 | {#if error.stack} 30 | 31 |

This page does not exist

32 | 33 |
{error.stack}
34 | {/if} 35 | 36 | 55 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/[id]-6969a75f.js: -------------------------------------------------------------------------------- 1 | import { g as get_store_value, c as create_ssr_component, v as validate_component } from "./app-14a936dc.js"; 2 | import { d as data, a as media_type } from "./store-cc224516.js"; 3 | import { M as MainSection } from "./MainSection-8f5559a2.js"; 4 | import "./ProgressBar-607c37c9.js"; 5 | async function load({ fetch, page }) { 6 | const res = await fetch("../api/getSearch", { 7 | headers: { "Content-Type": "application/json" }, 8 | method: "POST", 9 | body: JSON.stringify({ 10 | media: get_store_value(media_type), 11 | page: "1", 12 | query: page.params.id 13 | }) 14 | }); 15 | const datas = await res.json(); 16 | data.set(await datas.res.results); 17 | const total_pages = await datas.res.total_pages; 18 | return { props: { data, total_pages } }; 19 | } 20 | const U5Bidu5D = create_ssr_component(($$result, $$props, $$bindings, slots) => { 21 | let { total_pages } = $$props; 22 | if ($$props.total_pages === void 0 && $$bindings.total_pages && total_pages !== void 0) 23 | $$bindings.total_pages(total_pages); 24 | return `${validate_component(MainSection, "MainSection").$$render($$result, { total_pages }, {}, {})}`; 25 | }); 26 | export { U5Bidu5D as default, load }; 27 | -------------------------------------------------------------------------------- /src/routes/genre/[media]/[id].svelte: -------------------------------------------------------------------------------- 1 | 36 | 37 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/routes/person/[id].svelte: -------------------------------------------------------------------------------- 1 | 46 | 47 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/pages/genre/[media]/[id].svelte-5293c531.js: -------------------------------------------------------------------------------- 1 | import{S as m,i as u,s as l,j as p,m as g,o as f,x as _,u as d,v as h,L as j,M as S}from"../../../chunks/vendor-fc6286ba.js";import{d as i,a as w,s as c}from"../../../chunks/store-07881416.js";import{M as y}from"../../../chunks/MainSection-8e495d87.js";import"../../../chunks/ProgressBar-f61e37f1.js";function b(n){let e,s;return e=new y({props:{total_pages:n[0],genres:n[1]}}),{c(){p(e.$$.fragment)},l(t){g(e.$$.fragment,t)},m(t,a){f(e,t,a),s=!0},p(t,[a]){const o={};a&1&&(o.total_pages=t[0]),a&2&&(o.genres=t[1]),e.$set(o)},i(t){s||(_(e.$$.fragment,t),s=!0)},o(t){d(e.$$.fragment,t),s=!1},d(t){h(e,t)}}}const O=!0;async function P({fetch:n,page:e}){i.set(void 0);const s=e.params.id;w.set(e.params.media);const a=await(await n("../../api/getShowGenre",{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({media:e.params.media,page:"1",genre:s})})).json();return i.set(await a.res.results),{props:{total_pages:await a.res.total_pages,genres:s}}}function k(n,e,s){let t;j(n,c,r=>s(2,t=r));let{total_pages:a}=e,{genres:o}=e;return S(c,t=null,t),n.$$set=r=>{"total_pages"in r&&s(0,a=r.total_pages),"genres"in r&&s(1,o=r.genres)},[a,o]}class T extends m{constructor(e){super();u(this,e,k,b,l,{total_pages:0,genres:1})}}export{T as default,P as load,O as prerender}; 2 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/index-6445fb8c.js: -------------------------------------------------------------------------------- 1 | import { c as create_ssr_component, s as subscribe, f as set_store_value, v as validate_component } from "./app-14a936dc.js"; 2 | import { d as data, s as selected } from "./store-cc224516.js"; 3 | import { M as MainSection } from "./MainSection-8f5559a2.js"; 4 | import "./ProgressBar-607c37c9.js"; 5 | async function load({ fetch }) { 6 | data.set(void 0); 7 | const res = await fetch("./api/getShow", { 8 | headers: { "Content-Type": "application/json" }, 9 | method: "POST", 10 | body: JSON.stringify({ media: "movie", page: "1" }) 11 | }); 12 | const datas = await res.json(); 13 | data.set(await datas.res.results); 14 | const total_pages = await datas.res.total_pages; 15 | return { props: { total_pages } }; 16 | } 17 | const Routes = create_ssr_component(($$result, $$props, $$bindings, slots) => { 18 | let $selected, $$unsubscribe_selected; 19 | $$unsubscribe_selected = subscribe(selected, (value) => $selected = value); 20 | let { total_pages } = $$props; 21 | set_store_value(selected, $selected = null, $selected); 22 | if ($$props.total_pages === void 0 && $$bindings.total_pages && total_pages !== void 0) 23 | $$bindings.total_pages(total_pages); 24 | $$unsubscribe_selected(); 25 | return `${validate_component(MainSection, "MainSection").$$render($$result, { total_pages }, {}, {})}`; 26 | }); 27 | export { Routes as default, load }; 28 | -------------------------------------------------------------------------------- /src/lib/utilities/tooltip.ts: -------------------------------------------------------------------------------- 1 | export function tooltip(element) { 2 | let div; 3 | let title; 4 | function mouseOver(event) { 5 | // NOTE: remove the `title` attribute, to prevent showing the default browser tooltip 6 | // remember to set it back on `mouseleave` 7 | title = element.getAttribute('title'); 8 | element.removeAttribute('title'); 9 | 10 | div = document.createElement('div'); 11 | div.textContent = title; 12 | div.style = ` 13 | border: 1px solid #ddd; 14 | box-shadow: 1px 1px 1px #ddd; 15 | background: white; 16 | border-radius: 4px; 17 | padding: 4px; 18 | position: absolute; 19 | top: ${event.pageX + 5}px; 20 | left: ${event.pageY + 5}px; 21 | `; 22 | document.body.appendChild(div); 23 | } 24 | function mouseMove(event) { 25 | div.style.left = `${event.pageX + 5}px`; 26 | div.style.top = `${event.pageY + 5}px`; 27 | } 28 | function mouseLeave() { 29 | document.body.removeChild(div); 30 | // NOTE: restore the `title` attribute 31 | element.setAttribute('title', title); 32 | } 33 | 34 | element.addEventListener('mouseover', mouseOver); 35 | element.addEventListener('mouseleave', mouseLeave); 36 | element.addEventListener('mousemove', mouseMove); 37 | 38 | return { 39 | destroy() { 40 | element.removeEventListener('mouseover', mouseOver); 41 | element.removeEventListener('mouseleave', mouseLeave); 42 | element.removeEventListener('mousemove', mouseMove); 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/[media]-0dee69ba.js: -------------------------------------------------------------------------------- 1 | import { c as create_ssr_component, s as subscribe, f as set_store_value, v as validate_component } from "./app-14a936dc.js"; 2 | import { d as data, a as media_type, s as selected } from "./store-cc224516.js"; 3 | import { M as MainSection } from "./MainSection-8f5559a2.js"; 4 | import "./ProgressBar-607c37c9.js"; 5 | async function load({ fetch, page }) { 6 | data.set(void 0); 7 | media_type.set(page.params.media); 8 | const res = await fetch("../../api/getShow", { 9 | headers: { "Content-Type": "application/json" }, 10 | method: "POST", 11 | body: JSON.stringify({ media: page.params.media, page: "1" }) 12 | }); 13 | const datas = await res.json(); 14 | data.set(await datas.res.results); 15 | const total_pages = await datas.res.total_pages; 16 | return { props: { total_pages } }; 17 | } 18 | const U5Bmediau5D = create_ssr_component(($$result, $$props, $$bindings, slots) => { 19 | let $selected, $$unsubscribe_selected; 20 | $$unsubscribe_selected = subscribe(selected, (value) => $selected = value); 21 | let { total_pages } = $$props; 22 | set_store_value(selected, $selected = null, $selected); 23 | if ($$props.total_pages === void 0 && $$bindings.total_pages && total_pages !== void 0) 24 | $$bindings.total_pages(total_pages); 25 | $$unsubscribe_selected(); 26 | return `${validate_component(MainSection, "MainSection").$$render($$result, { total_pages }, {}, {})}`; 27 | }); 28 | export { U5Bmediau5D as default, load }; 29 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/__error-7ac6427a.js: -------------------------------------------------------------------------------- 1 | import { c as create_ssr_component, b as escape } from "./app-14a936dc.js"; 2 | var __error_svelte_svelte_type_style_lang = ""; 3 | const css = { 4 | code: "h1.svelte-be3lyz,p.svelte-be3lyz{margin:0 auto}h1.svelte-be3lyz{font-size:2.8em;font-weight:700;margin:0 0 .5em}p.svelte-be3lyz{margin:1em auto}@media(min-width:480px){h1.svelte-be3lyz{font-size:4em}}", 5 | map: null 6 | }; 7 | function load({ error, status }) { 8 | return { props: { error, status } }; 9 | } 10 | const _error = create_ssr_component(($$result, $$props, $$bindings, slots) => { 11 | let { status } = $$props; 12 | let { error } = $$props; 13 | const offline = typeof navigator !== "undefined" && navigator.onLine === false; 14 | const title = offline ? "Offline" : status; 15 | const message = offline ? "Find the internet and try again" : error.message; 16 | if ($$props.status === void 0 && $$bindings.status && status !== void 0) 17 | $$bindings.status(status); 18 | if ($$props.error === void 0 && $$bindings.error && error !== void 0) 19 | $$bindings.error(error); 20 | $$result.css.add(css); 21 | return `${$$result.head += `${$$result.title = `${escape(title)}`, ""}`, ""} 22 | 23 |

${escape(title)}

24 | 25 |

${escape(message)}

26 | 27 | ${error.stack ? ` 28 |

This page does not exist

29 | 30 |
${escape(error.stack)}
` : ``}`; 31 | }); 32 | export { _error as default, load }; 33 | -------------------------------------------------------------------------------- /src/lib/components/MovieCard.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 | 13 |
14 |
15 | {datum.title} 17 |
18 |
20 | {datum.title} 21 |
22 |
23 | {datum.release_date ? datum.release_date.substring(0, 4) : '-'} 24 |
25 |
26 |
27 | 28 |
29 |
30 | 32 |
33 |
34 |
-------------------------------------------------------------------------------- /src/lib/utilities/Modal.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | {#if shown} 14 |
15 |
16 | {#if $video_site === 'YouTube'} 17 | 27 | {:else if $video_site === 'Vimeo'} 28 |
30 | 31 |
` : ``}`; 32 | }); 33 | const IMAGE_API = "https://image.tmdb.org/t/p/w200/"; 34 | const Cast = create_ssr_component(($$result, $$props, $$bindings, slots) => { 35 | let { cast = [] } = $$props; 36 | if ($$props.cast === void 0 && $$bindings.cast && cast !== void 0) 37 | $$bindings.cast(cast); 38 | return `${cast.length ? `

Top Billed Cast 39 |

40 |
${each(cast, (person) => `
${person.profile_path ? `${` : `${`}
41 |

${escape(person.character)}

42 |

${escape(person.name)} 43 |

44 |
`)}
` : ``}`; 45 | }); 46 | export { Cast as C, Modal as M, Spinner as S }; 47 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/pages/seasons/[id]/[season_number].svelte-7534c8b0.js: -------------------------------------------------------------------------------- 1 | import{S as z,i as F,s as Q,e as u,t as k,k as E,l as R,c as m,a as v,g as I,d,n as S,b as h,f as H,D as c,O as W,h as B,K as te,H as X,j as ae,m as le,o as ne,x as ie,u as oe,v as re,L as ce}from"../../../chunks/vendor-fc6286ba.js";import{p as fe}from"../../../chunks/stores-462c50b9.js";function Y(n,s,l){const e=n.slice();return e[2]=s[l],e}function Z(n){let s,l,e,a,i=n[0].episodes,o=[];for(let t=0;t{"season_details"in i&&l(0,e=i.season_details),"tv_id"in i&&l(1,a=i.tv_id)},[e,a]}class he extends z{constructor(s){super();F(this,s,_e,de,Q,{season_details:0,tv_id:1})}}function ue(n){let s,l;return s=new he({props:{season_details:n[0],tv_id:n[1]}}),{c(){ae(s.$$.fragment)},l(e){le(s.$$.fragment,e)},m(e,a){ne(s,e,a),l=!0},p(e,[a]){const i={};a&1&&(i.season_details=e[0]),s.$set(i)},i(e){l||(ie(s.$$.fragment,e),l=!0)},o(e){oe(s.$$.fragment,e),l=!1},d(e){re(s,e)}}}async function be({fetch:n,page:s}){return{props:{season_details:await(await(await n("../../api/getSeason",{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({id:s.params.id,season_number:s.params.season_number})})).json()).res}}}function me(n,s,l){let e;ce(n,fe,o=>l(2,e=o));let{season_details:a}=s,i=e.params.id;return n.$$set=o=>{"season_details"in o&&l(0,a=o.season_details)},[a,i]}class ge extends z{constructor(s){super();F(this,s,me,ue,Q,{season_details:0})}}export{ge as default,be as load}; 2 | -------------------------------------------------------------------------------- /src/lib/utilities/Pagination.svelte: -------------------------------------------------------------------------------- 1 | 61 | 62 | {#if total_pages > 1} 63 |
64 |
67 | {#each pages as page} 68 | {#if $current_page === page} 69 | 75 | {:else if page === LEFT_PAGE} 76 | 83 | {:else if page === pages[0]} 84 | 90 | {:else if page === pages[0]} 91 | 97 | {:else if page === pages[pages.length - 1]} 98 | 104 | {:else if page === RIGHT_PAGE} 105 | 112 | {:else} 113 | 119 | {/if} 120 | {/each} 121 |
122 |
123 | {/if} 124 | 125 | 133 | -------------------------------------------------------------------------------- /src/lib/utilities/Selector.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 |
20 |
21 | 33 |
34 |
35 | 36 |
37 |
38 | 50 |
51 |
52 | 53 |
54 |
55 | 67 |
68 |
69 | {#key $selected} 70 |
71 |
72 | 82 | 87 |
88 |
89 | {/key} 90 | -------------------------------------------------------------------------------- /src/lib/pages/MovieMedia.svelte: -------------------------------------------------------------------------------- 1 | 26 | 27 | {#if movie_details.id && trailer_details} 28 |
33 |
37 |
40 |
41 | movie poster 48 |
49 |
50 |
51 |

52 | {movie_details.title} 53 | 54 | {movie_details.release_date ? movie_details.release_date.substring(0, 4) : ''} 55 | 56 |

57 | {#if movie_details.vote_average} 58 |
61 | 62 |
63 | {/if} 64 | 65 |
66 |
67 | {movie_details.release_date ? movie_details.release_date : 'No Date Available'} 68 | 69 |
70 |
71 | {#each movie_details.genres as { id, name }, i} 72 | {name} 73 | {#if i !== movie_details.genres.length - 1}|{/if} 74 | {/each} 75 |
76 | {#if 'runtime' in movie_details} 77 |
78 | {(movie_details.runtime - 79 | (movie_details.runtime % 60)) / 80 | 60}h {movie_details.runtime % 60}m 81 |
82 | {/if} 83 |
84 |
85 |
88 | {#if trailer_details.length > 0} 89 | {#each trailer_details as trailer} 90 |
91 | 101 |
102 | {/each} 103 | 104 | {:else} 105 |
106 |

No Trailer Available

107 |
108 | {/if} 109 |
110 |
111 |
{movie_details.tagline}
112 |

Overview

113 |
{movie_details.overview}
114 |
115 |
116 |
117 |
118 |
119 | 120 | 121 | 122 | {:else} 123 | 124 | {/if} 125 | -------------------------------------------------------------------------------- /src/lib/pages/TvMedia.svelte: -------------------------------------------------------------------------------- 1 | 37 | 38 | {#if tv_details.id && trailer_details} 39 |
44 |
48 |
51 |
52 | movie poster 59 |
60 |
61 |
62 |

63 | {tv_details.name} 64 | 65 | {tv_details ? tv_details.first_air_date.substring(0, 4) : ''} 66 | 67 |

68 | {#if tv_details.vote_average} 69 |
72 | 73 |
74 | {/if} 75 |
76 |
77 | {'first_air_date' in tv_details ? tv_details.first_air_date : 'No Date Available'} 78 | 79 |
80 |
81 | {#each tv_details.genres as { id, name }, i} 82 | {name} 83 | {#if i !== tv_details.genres.length - 1}|{/if} 84 | {/each} 85 |
86 |
87 |
88 |
91 | {#if trailer_details.length > 0} 92 | {#each trailer_details as trailer} 93 |
94 | 104 |
105 | {/each} 106 | 107 | {:else} 108 |
109 |

No Trailer Available

110 |
111 | {/if} 112 |
113 |
114 |
{tv_details.tagline}
115 |

Overview

116 |
{tv_details.overview}
117 |
118 |
119 |
120 |
121 |
122 | 123 | 124 | 125 | 126 | 127 | {#if $media_type === 'tv'} 128 | {#key tv_details} 129 | 130 | {/key} 131 | {/if} 132 | {:else} 133 | 134 | {/if} 135 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/chunks/Cast-6bfa9e9c.js: -------------------------------------------------------------------------------- 1 | import{S as M,i as N,s as $,e as _,k as I,c as p,a as b,d as o,n as C,b as a,f as y,D as u,H as k,O as V,F as J,l as T,t as A,g as O,h as q,K as L}from"./vendor-fc6286ba.js";function Q(n){let e,l,t,s,d,h,i,r;return{c(){e=_("section"),l=_("section"),t=_("div"),s=_("div"),d=I(),h=_("div"),i=I(),r=_("div"),this.h()},l(f){e=p(f,"SECTION",{id:!0,class:!0});var c=b(e);l=p(c,"SECTION",{class:!0});var v=b(l);t=p(v,"DIV",{class:!0});var m=b(t);s=p(m,"DIV",{class:!0}),b(s).forEach(o),d=C(m),h=p(m,"DIV",{class:!0}),b(h).forEach(o),i=C(m),r=p(m,"DIV",{class:!0}),b(r).forEach(o),m.forEach(o),v.forEach(o),c.forEach(o),this.h()},h(){a(s,"class","w-3 h-3 rounded-full bg-primary -translate-x-1/2 -translate-y-full svelte-11hc8a6"),a(h,"class","w-3 h-3 rounded-full bg-primary -translate-x-1/2 -translate-y-full svelte-11hc8a6"),a(r,"class","w-3 h-3 rounded-full bg-primary -translate-x-1/2 -translate-y-full svelte-11hc8a6"),a(t,"class","inline-flex flex-nowrap flex-row items-center justify-between mx-auto w-12 svelte-11hc8a6"),a(l,"class","flex absolute items-center h-8 top-1/2 left-1/2 transform -translate-x-1/2 "),a(e,"id","spinner"),a(e,"class","w-full h-full m-auto")},m(f,c){y(f,e,c),u(e,l),u(l,t),u(t,s),u(t,d),u(t,h),u(t,i),u(t,r)},p:k,i:k,o:k,d(f){f&&o(e)}}}class le extends M{constructor(e){super();N(this,e,null,Q,$,{})}}function B(n){let e,l,t,s,d,h,i,r,f,c;return{c(){e=_("section"),l=_("div"),t=_("iframe"),s=_("track"),h=I(),i=_("div"),r=_("i"),this.h()},l(v){e=p(v,"SECTION",{id:!0,class:!0});var m=b(e);l=p(m,"DIV",{class:!0});var D=b(l);t=p(D,"IFRAME",{class:!0,title:!0,src:!0,allow:!0});var S=b(t);s=p(S,"TRACK",{kind:!0}),S.forEach(o),D.forEach(o),h=C(m),i=p(m,"DIV",{class:!0});var E=b(i);r=p(E,"I",{class:!0,"aria-hidden":!0}),b(r).forEach(o),E.forEach(o),m.forEach(o),this.h()},h(){s.default=!0,a(s,"kind","captions"),a(t,"class","iframe absolute top-0 left-0 w-full h-full bg-contain"),a(t,"title","Trailer"),V(t.src,d="https://www.youtube.com/embed/"+n[0]+"?rel=0")||a(t,"src",d),a(t,"allow","accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"),t.allowFullscreen=!0,a(l,"class","absolute top-0 left-0 w-full h-full bg-contain"),a(r,"class","fa fa-window-close"),a(r,"aria-hidden","true"),a(i,"class","close absolute top-1 left-1 text-red-900 text-4xl xl:text-5xl hover:font-bold"),a(e,"id","trailer"),a(e,"class","top-0 left-0 bottom-0 right-0 bg-gray-800 bg-opacity-60 fixed z-50")},m(v,m){y(v,e,m),u(e,l),u(l,t),u(t,s),u(e,h),u(e,i),u(i,r),f||(c=J(i,"click",n[4]),f=!0)},p(v,m){m&1&&!V(t.src,d="https://www.youtube.com/embed/"+v[0]+"?rel=0")&&a(t,"src",d)},d(v){v&&o(e),f=!1,c()}}}function U(n){let e,l=n[2]&&B(n);return{c(){l&&l.c(),e=T()},l(t){l&&l.l(t),e=T()},m(t,s){l&&l.m(t,s),y(t,e,s)},p(t,[s]){t[2]?l?l.p(t,s):(l=B(t),l.c(),l.m(e.parentNode,e)):l&&(l.d(1),l=null)},i:k,o:k,d(t){l&&l.d(t),t&&o(e)}}}function W(n,e,l){let{trailer_id:t}=e,s=!1;function d(){l(2,s=!0)}function h(){l(2,s=!1)}const i=()=>h();return n.$$set=r=>{"trailer_id"in r&&l(0,t=r.trailer_id)},[t,h,s,d,i]}class se extends M{constructor(e){super();N(this,e,W,U,$,{trailer_id:0,show:3,hide:1})}get show(){return this.$$.ctx[3]}get hide(){return this.$$.ctx[1]}}function H(n,e,l){const t=n.slice();return t[1]=e[l],t}function K(n){let e,l,t,s,d,h=n[0],i=[];for(let r=0;r{"cast"in s&&l(0,t=s.cast)},[t]}class re extends M{constructor(e){super();N(this,e,ee,Z,$,{cast:0})}}export{re as C,se as M,le as S}; 2 | -------------------------------------------------------------------------------- /.svelte-kit/output/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | ".svelte-kit/build/runtime/internal/start.js": { 3 | "file": "start-ae56e48a.js", 4 | "src": ".svelte-kit/build/runtime/internal/start.js", 5 | "isEntry": true, 6 | "imports": [ 7 | "_vendor-fc6286ba.js", 8 | "_singletons-12a22614.js" 9 | ], 10 | "dynamicImports": [ 11 | "src/routes/__layout.svelte", 12 | "src/routes/__error.svelte", 13 | "src/routes/index.svelte", 14 | "src/routes/NotFound.svelte", 15 | "src/routes/trending/[media].svelte", 16 | "src/routes/episode/[id]/[season_number]/[episode_number].svelte", 17 | "src/routes/seasons/[id]/[season_number].svelte", 18 | "src/routes/person/[id].svelte", 19 | "src/routes/search/[id].svelte", 20 | "src/routes/genre/[media]/[id].svelte", 21 | "src/routes/movie/[id].svelte", 22 | "src/routes/tv/[id].svelte" 23 | ], 24 | "css": [ 25 | "assets/start-464e9d0a.css" 26 | ] 27 | }, 28 | "src/routes/__layout.svelte": { 29 | "file": "pages/__layout.svelte-f4eb42df.js", 30 | "src": "src/routes/__layout.svelte", 31 | "isEntry": true, 32 | "isDynamicEntry": true, 33 | "imports": [ 34 | "_vendor-fc6286ba.js", 35 | "_store-07881416.js", 36 | "_singletons-12a22614.js" 37 | ], 38 | "css": [ 39 | "assets/pages/__layout.svelte-d7d8cb99.css" 40 | ] 41 | }, 42 | "src/routes/__error.svelte": { 43 | "file": "pages/__error.svelte-1cf9c0b1.js", 44 | "src": "src/routes/__error.svelte", 45 | "isEntry": true, 46 | "isDynamicEntry": true, 47 | "imports": [ 48 | "_vendor-fc6286ba.js" 49 | ], 50 | "css": [ 51 | "assets/pages/__error.svelte-8a5069d9.css" 52 | ] 53 | }, 54 | "src/routes/index.svelte": { 55 | "file": "pages/index.svelte-0b7a5c7b.js", 56 | "src": "src/routes/index.svelte", 57 | "isEntry": true, 58 | "isDynamicEntry": true, 59 | "imports": [ 60 | "_vendor-fc6286ba.js", 61 | "_store-07881416.js", 62 | "_MainSection-8e495d87.js", 63 | "_ProgressBar-f61e37f1.js" 64 | ] 65 | }, 66 | "src/routes/NotFound.svelte": { 67 | "file": "pages/NotFound.svelte-9659fd5f.js", 68 | "src": "src/routes/NotFound.svelte", 69 | "isEntry": true, 70 | "isDynamicEntry": true, 71 | "imports": [ 72 | "_vendor-fc6286ba.js" 73 | ] 74 | }, 75 | "src/routes/trending/[media].svelte": { 76 | "file": "pages/trending/[media].svelte-40e542c5.js", 77 | "src": "src/routes/trending/[media].svelte", 78 | "isEntry": true, 79 | "isDynamicEntry": true, 80 | "imports": [ 81 | "_vendor-fc6286ba.js", 82 | "_store-07881416.js", 83 | "_MainSection-8e495d87.js", 84 | "_ProgressBar-f61e37f1.js" 85 | ] 86 | }, 87 | "src/routes/episode/[id]/[season_number]/[episode_number].svelte": { 88 | "file": "pages/episode/[id]/[season_number]/[episode_number].svelte-a1e7498f.js", 89 | "src": "src/routes/episode/[id]/[season_number]/[episode_number].svelte", 90 | "isEntry": true, 91 | "isDynamicEntry": true, 92 | "imports": [ 93 | "_vendor-fc6286ba.js" 94 | ] 95 | }, 96 | "src/routes/seasons/[id]/[season_number].svelte": { 97 | "file": "pages/seasons/[id]/[season_number].svelte-7534c8b0.js", 98 | "src": "src/routes/seasons/[id]/[season_number].svelte", 99 | "isEntry": true, 100 | "isDynamicEntry": true, 101 | "imports": [ 102 | "_vendor-fc6286ba.js", 103 | "_stores-462c50b9.js" 104 | ] 105 | }, 106 | "src/routes/person/[id].svelte": { 107 | "file": "pages/person/[id].svelte-c20e0cad.js", 108 | "src": "src/routes/person/[id].svelte", 109 | "isEntry": true, 110 | "isDynamicEntry": true, 111 | "imports": [ 112 | "_vendor-fc6286ba.js", 113 | "_store-07881416.js" 114 | ] 115 | }, 116 | "src/routes/search/[id].svelte": { 117 | "file": "pages/search/[id].svelte-63c2cd3f.js", 118 | "src": "src/routes/search/[id].svelte", 119 | "isEntry": true, 120 | "isDynamicEntry": true, 121 | "imports": [ 122 | "_vendor-fc6286ba.js", 123 | "_store-07881416.js", 124 | "_MainSection-8e495d87.js", 125 | "_ProgressBar-f61e37f1.js" 126 | ] 127 | }, 128 | "src/routes/genre/[media]/[id].svelte": { 129 | "file": "pages/genre/[media]/[id].svelte-5293c531.js", 130 | "src": "src/routes/genre/[media]/[id].svelte", 131 | "isEntry": true, 132 | "isDynamicEntry": true, 133 | "imports": [ 134 | "_vendor-fc6286ba.js", 135 | "_store-07881416.js", 136 | "_MainSection-8e495d87.js", 137 | "_ProgressBar-f61e37f1.js" 138 | ] 139 | }, 140 | "src/routes/movie/[id].svelte": { 141 | "file": "pages/movie/[id].svelte-cb05cc7d.js", 142 | "src": "src/routes/movie/[id].svelte", 143 | "isEntry": true, 144 | "isDynamicEntry": true, 145 | "imports": [ 146 | "_vendor-fc6286ba.js", 147 | "_store-07881416.js", 148 | "_ProgressBar-f61e37f1.js", 149 | "_Cast-6bfa9e9c.js" 150 | ] 151 | }, 152 | "src/routes/tv/[id].svelte": { 153 | "file": "pages/tv/[id].svelte-6c7edfff.js", 154 | "src": "src/routes/tv/[id].svelte", 155 | "isEntry": true, 156 | "isDynamicEntry": true, 157 | "imports": [ 158 | "_vendor-fc6286ba.js", 159 | "_store-07881416.js", 160 | "_ProgressBar-f61e37f1.js", 161 | "_Cast-6bfa9e9c.js", 162 | "_stores-462c50b9.js" 163 | ] 164 | }, 165 | "_vendor-fc6286ba.js": { 166 | "file": "chunks/vendor-fc6286ba.js" 167 | }, 168 | "_singletons-12a22614.js": { 169 | "file": "chunks/singletons-12a22614.js" 170 | }, 171 | "_store-07881416.js": { 172 | "file": "chunks/store-07881416.js", 173 | "imports": [ 174 | "_vendor-fc6286ba.js" 175 | ] 176 | }, 177 | "_MainSection-8e495d87.js": { 178 | "file": "chunks/MainSection-8e495d87.js", 179 | "imports": [ 180 | "_vendor-fc6286ba.js", 181 | "_store-07881416.js", 182 | "_ProgressBar-f61e37f1.js" 183 | ] 184 | }, 185 | "_ProgressBar-f61e37f1.js": { 186 | "file": "chunks/ProgressBar-f61e37f1.js", 187 | "imports": [ 188 | "_vendor-fc6286ba.js" 189 | ] 190 | }, 191 | "_stores-462c50b9.js": { 192 | "file": "chunks/stores-462c50b9.js", 193 | "imports": [ 194 | "_vendor-fc6286ba.js" 195 | ] 196 | }, 197 | "_Cast-6bfa9e9c.js": { 198 | "file": "chunks/Cast-6bfa9e9c.js", 199 | "imports": [ 200 | "_vendor-fc6286ba.js" 201 | ], 202 | "css": [ 203 | "assets/Cast-cd25fbf7.css" 204 | ] 205 | } 206 | } -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/[id]-de8563ca.js: -------------------------------------------------------------------------------- 1 | import { c as create_ssr_component, s as subscribe, b as escape, a as add_attribute, e as each, v as validate_component } from "./app-14a936dc.js"; 2 | import { a as media_type } from "./store-cc224516.js"; 3 | import { P as ProgressBar } from "./ProgressBar-607c37c9.js"; 4 | import { C as Cast, M as Modal, S as Spinner } from "./Cast-31f4e4f3.js"; 5 | const IMAGE_API = "https://image.tmdb.org/t/p/"; 6 | const MovieMedia = create_ssr_component(($$result, $$props, $$bindings, slots) => { 7 | let $media_type, $$unsubscribe_media_type; 8 | $$unsubscribe_media_type = subscribe(media_type, (value) => $media_type = value); 9 | let { movie_details } = $$props; 10 | let { trailer_id } = $$props; 11 | let { cast } = $$props; 12 | let modal; 13 | window.scrollTo({ top: -1e3, behavior: "smooth" }); 14 | if ($$props.movie_details === void 0 && $$bindings.movie_details && movie_details !== void 0) 15 | $$bindings.movie_details(movie_details); 16 | if ($$props.trailer_id === void 0 && $$bindings.trailer_id && trailer_id !== void 0) 17 | $$bindings.trailer_id(trailer_id); 18 | if ($$props.cast === void 0 && $$bindings.cast && cast !== void 0) 19 | $$bindings.cast(cast); 20 | let $$settled; 21 | let $$rendered; 22 | do { 23 | $$settled = true; 24 | $$rendered = `${movie_details.id && trailer_id ? `
${
25 |

${escape(movie_details.title)} 26 | ${escape(movie_details.release_date ? movie_details.release_date.substring(0, 4) : "")}

27 |
${escape(movie_details.release_date ? movie_details.release_date : "No Date Available")} 28 |
29 |
${each(movie_details.genres, ({ id, name }, i) => `${escape(name)} 30 | ${i !== movie_details.genres.length - 1 ? `|` : ``}`)}
31 | ${"runtime" in movie_details ? `
${escape((movie_details.runtime - movie_details.runtime % 60) / 60)}h ${escape(movie_details.runtime % 60)}m 32 |
` : ``}
33 |
${movie_details.vote_average ? `
${validate_component(ProgressBar, "ProgressBar").$$render($$result, { progress: movie_details.vote_average }, {}, {})}
` : ``} 34 | ${trailer_id !== 999 ? `
35 |

Play Trailer

` : `

No Trailer Available

`}
36 |
${escape(movie_details.tagline)}
37 |

Overview

38 |
${escape(movie_details.overview)}
39 | 40 | ${validate_component(Cast, "Cast").$$render($$result, { cast }, {}, {})} 41 | 42 | ${trailer_id !== 999 ? `${validate_component(Modal, "Modal").$$render($$result, { trailer_id, this: modal }, { 43 | this: ($$value) => { 44 | modal = $$value; 45 | $$settled = false; 46 | } 47 | }, {})}` : ``}` : `${validate_component(Spinner, "Spinner").$$render($$result, {}, {}, {})}`}`; 48 | } while (!$$settled); 49 | $$unsubscribe_media_type(); 50 | return $$rendered; 51 | }); 52 | async function load({ fetch, page }) { 53 | media_type.set("movie"); 54 | const res = await fetch("../api/getMovie", { 55 | headers: { "Content-Type": "application/json" }, 56 | method: "POST", 57 | body: JSON.stringify({ media: "movie", id: page.params.id }) 58 | }); 59 | const datas = await res.json(); 60 | const movie_details = await datas.res; 61 | const trailer = await fetch("../api/getTrailer", { 62 | headers: { "Content-Type": "application/json" }, 63 | method: "POST", 64 | body: JSON.stringify({ media: "movie", id: page.params.id }) 65 | }); 66 | const trailer_details = await trailer.json(); 67 | const trailer_id = await trailer_details.res.results.length ? trailer_details.res.results[0].key : 999; 68 | const resp = await fetch("../../api/getCast", { 69 | headers: { "Content-Type": "application/json" }, 70 | method: "POST", 71 | body: JSON.stringify({ media: "movie", id: page.params.id }) 72 | }); 73 | const casts = await resp.json(); 74 | const cast = await casts.res.cast; 75 | return { 76 | props: { movie_details, trailer_id, cast } 77 | }; 78 | } 79 | const U5Bidu5D = create_ssr_component(($$result, $$props, $$bindings, slots) => { 80 | let { movie_details } = $$props; 81 | let { trailer_id } = $$props; 82 | let { cast } = $$props; 83 | if ($$props.movie_details === void 0 && $$bindings.movie_details && movie_details !== void 0) 84 | $$bindings.movie_details(movie_details); 85 | if ($$props.trailer_id === void 0 && $$bindings.trailer_id && trailer_id !== void 0) 86 | $$bindings.trailer_id(trailer_id); 87 | if ($$props.cast === void 0 && $$bindings.cast && cast !== void 0) 88 | $$bindings.cast(cast); 89 | return `${validate_component(MovieMedia, "MovieMedia").$$render($$result, { movie_details, trailer_id, cast }, {}, {})}`; 90 | }); 91 | export { U5Bidu5D as default, load }; 92 | -------------------------------------------------------------------------------- /src/global.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | 5 | type Media = { 6 | genres: [Genre]; 7 | }; 8 | 9 | type MediaPlatform = 'movie' | 'tv'; 10 | type MediaType = 'movie' | 'tv' | 'person'; 11 | 12 | type Genre = { 13 | id: number; 14 | name: string; 15 | }; 16 | 17 | type Network = { 18 | display_priority: number; 19 | logo_path: string; 20 | provider_name: string; 21 | provider_id: number; 22 | } 23 | 24 | type Genres = { 25 | [Key in MediaPlatform]: Genre[]; 26 | }; 27 | 28 | type PersonType = { 29 | id: ?number; 30 | profile_path: ?string; 31 | character: ?string; 32 | name: ?string; 33 | known_for_department: ?string; 34 | gender: ?(1 | 2); 35 | birthday: ?string; 36 | place_of_birth: ?string; 37 | also_known_as: ?Array; 38 | biography: ?string; 39 | popularity: ?number; 40 | adult: ?boolean; 41 | imdb_id: ?string; 42 | homepage: ?(null | string); 43 | }; 44 | 45 | type MovieType = { 46 | adult: ?boolean; 47 | backdrop_path: ?(string | null); 48 | belongs_to_collection: ?(null | Array); 49 | budget: ?number; 50 | genres: ?Array; 51 | homepage: ?(string | null); 52 | id: ?number; 53 | imdb_id: ?(string | null); 54 | original_language: ?string; 55 | original_title: ?string; 56 | overview: ?(string | null); 57 | popularity: ?number; 58 | poster_path: ?(string | null); 59 | production_companies: ?ProductionCompanies[]; 60 | production_countries: ?ProductionCountries[]; 61 | release_date: ?string; 62 | revenue: ?number; 63 | runtime: ?(number | null); 64 | spoken_languages: ?SpokenLanguages[]; 65 | status: ?('Rumored' | 'Planned' | 'In Production' | 'Post Production' | 'Released' | 'Canceled'); 66 | tagline: ?(string | null); 67 | title: ?string; 68 | video: ?boolean; 69 | vote_average: ?number; 70 | vote_count: ?number; 71 | }; 72 | 73 | type TvType = { 74 | backdrop_path: ?(string | null); 75 | created_by: ?CreatedBy[]; 76 | episode_run_time: ?Array; 77 | first_air_date: ?string; 78 | genres: ?Array; 79 | homepage: ?string; 80 | id: ?number; 81 | in_production: ?boolean; 82 | languages: ?Array; 83 | last_air_date: ?string; 84 | last_episode_to_air: ?LastAiredEpisode[]; 85 | name: ?string; 86 | next_episode_to_air: ?null; 87 | networks: ?Networks[]; 88 | origin_country: ?string; 89 | number_of_episodes: ?number; 90 | number_of_seasons: ?number; 91 | origin_country: ?Array; 92 | original_language: ?string; 93 | original_name: ?string; 94 | overview: ?string; 95 | popularity: ?number; 96 | poster_path: ?(string | null); 97 | production_companies: ?ProductionCompanies[]; 98 | production_countries: ?ProductionCountries[]; 99 | seasons: ?Seasons[]; 100 | spoken_languages: ?SpokenLanguages[]; 101 | status: ?string; 102 | tagline: ?string; 103 | type: ?string; 104 | vote_average: ?number; 105 | vote_count: ?number; 106 | }; 107 | 108 | type Data = { 109 | cast: PersonType[]; 110 | }; 111 | type ProductionCompanies = { 112 | name: ?string; 113 | id: ?number; 114 | logo_path: ?(string | null); 115 | origin_country: ?string; 116 | }; 117 | 118 | type ProductionCountries = { 119 | iso_3166_1: ?string; 120 | name: ?string; 121 | }; 122 | 123 | type SpokenLanguages = { 124 | iso_639_1: ?string; 125 | name: ?string; 126 | }; 127 | type CreatedBy = { 128 | id: ?number; 129 | credit_id: ?string; 130 | name: ?string; 131 | gender: ?number; 132 | profile_path: ?(string | null); 133 | }; 134 | 135 | type LastAiredEpisode = { 136 | air_date: ?string; 137 | episode_number: ?number; 138 | id: ?number; 139 | name: ?string; 140 | overview: ?string; 141 | production_code: ?string; 142 | season_number: ?number; 143 | still_path: ?(string | null); 144 | vote_average: ?number; 145 | vote_count: ?number; 146 | }; 147 | 148 | type Networks = { 149 | name: ?string; 150 | id: ?number; 151 | logo_path: ?(string | null); 152 | }; 153 | 154 | type Seasons_type = { 155 | air_date: ?string; 156 | episode_count: ?number; 157 | id: ?number; 158 | name: ?string; 159 | overview: ?string; 160 | poster_path: ?string; 161 | season_number: ?number; 162 | }; 163 | 164 | type Season_type = { 165 | _id: ?string; 166 | air_date: ?string; 167 | episodes: ?Episodes[]; 168 | name: ?string; 169 | overview: ?string; 170 | id: ?number; 171 | poster_path: string | null; 172 | season_number: number; 173 | }; 174 | 175 | type Episodes = { 176 | air_date: ?string; 177 | episode_number: ?number; 178 | crew: Crew[]; 179 | guest_stars: Guest_stars[]; 180 | id: ?number; 181 | name: ?string; 182 | overview: ?string; 183 | production_code: ?string; 184 | season_number: ?number; 185 | still_path: ?string; 186 | vote_average: ?number; 187 | vote_count: ?number; 188 | }; 189 | 190 | type CrewType = { 191 | department: ?string; 192 | job: ?string; 193 | credit_id: ?string; 194 | adult: boolean | null; 195 | gender: 0 | 1; 196 | id: ?number; 197 | known_for_department: ?string; 198 | name: ?string; 199 | original_name: ?string; 200 | popularity: ?number; 201 | profile_path: string | null; 202 | }; 203 | 204 | type GuestType = { 205 | credit_id: ?string; 206 | order: ?number; 207 | character: ?string; 208 | adult: boolean; 209 | gender: 0 | 1 | null; 210 | id: number; 211 | known_for_department: ?string; 212 | name: ?string; 213 | original_name: ?string; 214 | popularity: ?number; 215 | profile_path: ?(string | null); 216 | }; 217 | 218 | type Trailer_type = { 219 | iso_639_1: string; 220 | iso_3166_1: string; 221 | name: string; 222 | key: string; 223 | site: string; 224 | size: number; 225 | type: string; 226 | official: boolean; 227 | published_at: string; 228 | id: string; 229 | } 230 | 231 | type CastType = { 232 | credit_id: string; 233 | original_name: string; 234 | id: number; 235 | genre_ids: Array; 236 | character: string; 237 | name: string; 238 | poster_path: string | null; 239 | vote_count: number; 240 | vote_average: number; 241 | popularity: number; 242 | episode_count: number; 243 | original_language: string; 244 | first_air_date: string; 245 | backdrop_path: string | null; 246 | overview: string; 247 | origin_country: Array; 248 | } 249 | type KnownForType = { 250 | credit_id: string; 251 | original_name: string; 252 | id: number; 253 | genre_ids: Array; 254 | character: string; 255 | name: string; 256 | poster_path: string | null; 257 | vote_count: number; 258 | vote_average: number; 259 | popularity: number; 260 | episode_count: number; 261 | original_language: string; 262 | first_air_date: string; 263 | backdrop_path: string | null; 264 | overview: string; 265 | origin_country: Array; 266 | } 267 | -------------------------------------------------------------------------------- /.svelte-kit/output/server/chunks/[id]-8c40f23a.js: -------------------------------------------------------------------------------- 1 | import { c as create_ssr_component, e as each, a as add_attribute, b as escape, v as validate_component, s as subscribe, f as set_store_value } from "./app-14a936dc.js"; 2 | import { a as media_type } from "./store-cc224516.js"; 3 | const IMAGE_API$1 = "https://image.tmdb.org/t/p/w300"; 4 | function isMovie(x) { 5 | return x.media_type === "movie"; 6 | } 7 | function isTv(x) { 8 | return x.media_type === "tv"; 9 | } 10 | const KnownFor = create_ssr_component(($$result, $$props, $$bindings, slots) => { 11 | let { knownFor } = $$props; 12 | let films = []; 13 | let tv = []; 14 | films = knownFor.filter(isMovie); 15 | tv = knownFor.filter(isTv); 16 | films.sort((a, b) => a.release_date > b.release_date ? -1 : 1); 17 | tv.sort((a, b) => a.first_air_date > b.first_air_date ? -1 : 1); 18 | if ($$props.knownFor === void 0 && $$bindings.knownFor && knownFor !== void 0) 19 | $$bindings.knownFor(knownFor); 20 | return `
${films ? `

Movies 21 |

22 | ` : ``} 27 | ${tv ? `

TV 28 |

29 | ` : ``}
`; 34 | }); 35 | const IMAGE_API = "https://image.tmdb.org/t/p/w500/"; 36 | const Person = create_ssr_component(($$result, $$props, $$bindings, slots) => { 37 | let { person } = $$props; 38 | let { knownFor } = $$props; 39 | if ($$props.person === void 0 && $$bindings.person && person !== void 0) 40 | $$bindings.person(person); 41 | if ($$props.knownFor === void 0 && $$bindings.knownFor && knownFor !== void 0) 42 | $$bindings.knownFor(knownFor); 43 | return `
${person.profile_path ? `${` : `${`} 44 |

${escape(person.name)}

45 |

Personal Info

46 |
Known For
47 |

${escape(person.known_for_department)}

48 |
Gender
49 | ${person.gender === 2 ? `

Male

` : `

Female

`} 50 |
Birthdate
51 | ${person.birthday ? `

${escape(person.birthday)}

` : `

Unknown

`} 52 |
Place of Birth
53 | ${person.place_of_birth ? `

${escape(person.place_of_birth)}

` : `

Unknown

`} 54 | ${person.also_known_as && person.also_known_as.length ? `

Also Known As

55 | ${each(person.also_known_as, (alias) => `

${escape(alias)}

`)}` : ``}
56 | 57 |
58 |
Biography
59 |

${escape(person.biography)}

60 |

Known For

61 | ${validate_component(KnownFor, "KnownFor").$$render($$result, { knownFor }, {}, {})}
`; 62 | }); 63 | async function load({ fetch, page }) { 64 | const res = await fetch("../api/getMovie", { 65 | headers: { "Content-Type": "application/json" }, 66 | method: "POST", 67 | body: JSON.stringify({ media: "person", id: page.params.id }) 68 | }); 69 | const datas = await res.json(); 70 | const person = await datas.res; 71 | const resp = await fetch("../api/getKnownFor", { 72 | headers: { "Content-Type": "application/json" }, 73 | method: "POST", 74 | body: JSON.stringify({ person: page.params.id }) 75 | }); 76 | const data = await resp.json(); 77 | const knownFor = data.res.cast; 78 | return { props: { person, knownFor } }; 79 | } 80 | const U5Bidu5D = create_ssr_component(($$result, $$props, $$bindings, slots) => { 81 | let $media_type, $$unsubscribe_media_type; 82 | $$unsubscribe_media_type = subscribe(media_type, (value) => $media_type = value); 83 | set_store_value(media_type, $media_type = "person", $media_type); 84 | let { person } = $$props; 85 | let { knownFor } = $$props; 86 | if ($$props.person === void 0 && $$bindings.person && person !== void 0) 87 | $$bindings.person(person); 88 | if ($$props.knownFor === void 0 && $$bindings.knownFor && knownFor !== void 0) 89 | $$bindings.knownFor(knownFor); 90 | $$unsubscribe_media_type(); 91 | return `${validate_component(Person, "Person").$$render($$result, { person, knownFor }, {}, {})}`; 92 | }); 93 | export { U5Bidu5D as default, load }; 94 | -------------------------------------------------------------------------------- /.svelte-kit/output/client/_app/pages/episode/[id]/[season_number]/[episode_number].svelte-a1e7498f.js: -------------------------------------------------------------------------------- 1 | import{S as fe,i as de,s as he,e as p,t as j,k as S,l as ce,c as m,a as b,g as $,d as c,n as N,b as u,O as K,f as G,D as a,h as y,K as _e,H as ue,j as ke,m as Ie,o as je,x as $e,u as De,v as Ve}from"../../../../chunks/vendor-fc6286ba.js";function pe(n,e,s){const t=n.slice();return t[1]=e[s],t}function me(n,e,s){const t=n.slice();return t[4]=e[s],t}function ve(n){let e,s,t,o,d,_,i,r,f,l,g,v=n[0].season_number+"",C,A,k=n[0].episode_number+"",w,D,E,P,x=n[0].name+"",M,Z,T,ee,z=n[0].air_date+"",R,te,F,le,se,q,L=n[0].overview+"",W,X,B,J,V=n[0].guest_stars.length&&ge(n),H=n[0].crew.length&&Ee(n);return{c(){e=p("h4"),s=j("Episode Information"),t=S(),o=p("div"),d=p("div"),_=p("img"),r=S(),f=p("div"),l=p("h4"),g=j("Season: "),C=j(v),A=j(" Episode: "),w=j(k),D=S(),E=p("h4"),P=j("Episode Name: "),M=j(x),Z=S(),T=p("h6"),ee=j("Air Date: "),R=j(z),te=S(),F=p("h6"),le=j("Overview:"),se=S(),q=p("h6"),W=j(L),X=S(),V&&V.c(),B=S(),H&&H.c(),J=ce(),this.h()},l(h){e=m(h,"H4",{class:!0});var I=b(e);s=$(I,"Episode Information"),I.forEach(c),t=N(h),o=m(h,"DIV",{class:!0});var Y=b(o);d=m(Y,"DIV",{class:!0});var re=b(d);_=m(re,"IMG",{class:!0,src:!0,alt:!0}),re.forEach(c),r=N(Y),f=m(Y,"DIV",{class:!0});var O=b(f);l=m(O,"H4",{});var Q=b(l);g=$(Q,"Season: "),C=$(Q,v),A=$(Q," Episode: "),w=$(Q,k),Q.forEach(c),D=N(O),E=m(O,"H4",{});var ae=b(E);P=$(ae,"Episode Name: "),M=$(ae,x),ae.forEach(c),Z=N(O),T=m(O,"H6",{});var ie=b(T);ee=$(ie,"Air Date: "),R=$(ie,z),ie.forEach(c),te=N(O),F=m(O,"H6",{});var oe=b(F);le=$(oe,"Overview:"),oe.forEach(c),se=N(O),q=m(O,"H6",{class:!0});var ne=b(q);W=$(ne,L),ne.forEach(c),O.forEach(c),Y.forEach(c),X=N(h),V&&V.l(h),B=N(h),H&&H.l(h),J=ce(),this.h()},h(){u(e,"class","pl-4"),u(_,"class","xl:h-44 items-start"),K(_.src,i=n[0].still_path?U+n[0].still_path:"/default.jpg")||u(_,"src",i),u(_,"alt","episode"),u(d,"class","flex flex-col xl:flex-row text-skin-base xl:rounded-lg"),u(q,"class","flex-1 pr-8 text-skin-muted mb-4"),u(f,"class","ml-2 block"),u(o,"class","bg-skin-primary flex flex-col xl:flex-row m-4 p-2 rounded-lg")},m(h,I){G(h,e,I),a(e,s),G(h,t,I),G(h,o,I),a(o,d),a(d,_),a(o,r),a(o,f),a(f,l),a(l,g),a(l,C),a(l,A),a(l,w),a(f,D),a(f,E),a(E,P),a(E,M),a(f,Z),a(f,T),a(T,ee),a(T,R),a(f,te),a(f,F),a(F,le),a(f,se),a(f,q),a(q,W),G(h,X,I),V&&V.m(h,I),G(h,B,I),H&&H.m(h,I),G(h,J,I)},p(h,I){I&1&&!K(_.src,i=h[0].still_path?U+h[0].still_path:"/default.jpg")&&u(_,"src",i),I&1&&v!==(v=h[0].season_number+"")&&y(C,v),I&1&&k!==(k=h[0].episode_number+"")&&y(w,k),I&1&&x!==(x=h[0].name+"")&&y(M,x),I&1&&z!==(z=h[0].air_date+"")&&y(R,z),I&1&&L!==(L=h[0].overview+"")&&y(W,L),h[0].guest_stars.length?V?V.p(h,I):(V=ge(h),V.c(),V.m(B.parentNode,B)):V&&(V.d(1),V=null),h[0].crew.length?H?H.p(h,I):(H=Ee(h),H.c(),H.m(J.parentNode,J)):H&&(H.d(1),H=null)},d(h){h&&c(e),h&&c(t),h&&c(o),h&&c(X),V&&V.d(h),h&&c(B),H&&H.d(h),h&&c(J)}}}function ge(n){let e,s,t,o,d,_=n[0].guest_stars,i=[];for(let r=0;r<_.length;r+=1)i[r]=be(me(n,_,r));return{c(){e=p("div"),s=p("h3"),t=j("Guest Stars"),o=S(),d=p("div");for(let r=0;r{"episode_details"in o&&s(0,t=o.episode_details)},[t]}class Ne extends fe{constructor(e){super();de(this,e,Se,He,he,{episode_details:0})}}function Ce(n){let e,s;return e=new Ne({props:{episode_details:n[0]}}),{c(){ke(e.$$.fragment)},l(t){Ie(e.$$.fragment,t)},m(t,o){je(e,t,o),s=!0},p(t,[o]){const d={};o&1&&(d.episode_details=t[0]),e.$set(d)},i(t){s||($e(e.$$.fragment,t),s=!0)},o(t){De(e.$$.fragment,t),s=!1},d(t){Ve(e,t)}}}async function Oe({fetch:n,page:e}){return{props:{episode_details:await(await(await n("../../../api/getEpisode",{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({id:e.params.id,season_number:e.params.season_number,episode_number:e.params.episode_number})})).json()).res}}}function Ae(n,e,s){let{episode_details:t}=e;return n.$$set=o=>{"episode_details"in o&&s(0,t=o.episode_details)},[t]}class Pe extends fe{constructor(e){super();de(this,e,Ae,Ce,he,{episode_details:0})}}export{Pe as default,Oe as load}; 2 | --------------------------------------------------------------------------------