diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 359dcc38..a84ab9ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,7 +41,7 @@ importers: version: 0.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@movie-web/providers': specifier: github:sussy-code/providers - version: https://codeload.github.com/sussy-code/providers/tar.gz/d261a3baab252d2474c930169e149dfa5fda8075 + version: https://codeload.github.com/sussy-code/providers/tar.gz/b1a68ce6ca608bab12bf6abcfe55c90580e46004 '@noble/hashes': specifier: ^1.4.0 version: 1.4.0 @@ -291,7 +291,7 @@ importers: version: 0.5.14(prettier@3.3.3) rollup-plugin-visualizer: specifier: ^5.12.0 - version: 5.12.0(@rollup/wasm-node@4.19.1) + version: 5.12.0(@rollup/wasm-node@4.20.0) tailwind-scrollbar: specifier: ^3.1.0 version: 3.1.0(tailwindcss@3.4.7) @@ -1202,8 +1202,8 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - '@movie-web/providers@https://codeload.github.com/sussy-code/providers/tar.gz/d261a3baab252d2474c930169e149dfa5fda8075': - resolution: {tarball: https://codeload.github.com/sussy-code/providers/tar.gz/d261a3baab252d2474c930169e149dfa5fda8075} + '@movie-web/providers@https://codeload.github.com/sussy-code/providers/tar.gz/b1a68ce6ca608bab12bf6abcfe55c90580e46004': + resolution: {tarball: https://codeload.github.com/sussy-code/providers/tar.gz/b1a68ce6ca608bab12bf6abcfe55c90580e46004} version: 2.3.0 '@noble/hashes@1.4.0': @@ -1323,6 +1323,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + '@rollup/wasm-node@4.20.0': + resolution: {integrity: sha512-NxIRJDju9ZzXwpCZ+TMYEflT/KJPgcamVrkInPwB/jSzEIEhckHGgbC9C8Fkzt77nEZZpfF/H2BedwKfjxO9qQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + '@scure/base@1.1.7': resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} @@ -5259,7 +5264,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@movie-web/providers@https://codeload.github.com/sussy-code/providers/tar.gz/d261a3baab252d2474c930169e149dfa5fda8075': + '@movie-web/providers@https://codeload.github.com/sussy-code/providers/tar.gz/b1a68ce6ca608bab12bf6abcfe55c90580e46004': dependencies: cheerio: 1.0.0-rc.12 cookie: 0.6.0 @@ -5331,56 +5336,56 @@ snapshots: '@remix-run/router@1.18.0': {} - '@rollup/plugin-babel@5.3.1(@babel/core@7.25.2)(@rollup/wasm-node@4.19.1)(@types/babel__core@7.20.5)': + '@rollup/plugin-babel@5.3.1(@babel/core@7.25.2)(@rollup/wasm-node@4.20.0)(@types/babel__core@7.20.5)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 - '@rollup/pluginutils': 3.1.0(@rollup/wasm-node@4.19.1) - rollup: '@rollup/wasm-node@4.19.1' + '@rollup/pluginutils': 3.1.0(@rollup/wasm-node@4.20.0) + rollup: '@rollup/wasm-node@4.20.0' optionalDependencies: '@types/babel__core': 7.20.5 transitivePeerDependencies: - supports-color - '@rollup/plugin-node-resolve@15.2.3(@rollup/wasm-node@4.19.1)': + '@rollup/plugin-node-resolve@15.2.3(@rollup/wasm-node@4.20.0)': dependencies: - '@rollup/pluginutils': 5.1.0(@rollup/wasm-node@4.19.1) + '@rollup/pluginutils': 5.1.0(@rollup/wasm-node@4.20.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: '@rollup/wasm-node@4.19.1' + rollup: '@rollup/wasm-node@4.20.0' - '@rollup/plugin-replace@2.4.2(@rollup/wasm-node@4.19.1)': + '@rollup/plugin-replace@2.4.2(@rollup/wasm-node@4.20.0)': dependencies: - '@rollup/pluginutils': 3.1.0(@rollup/wasm-node@4.19.1) + '@rollup/pluginutils': 3.1.0(@rollup/wasm-node@4.20.0) magic-string: 0.25.9 - rollup: '@rollup/wasm-node@4.19.1' + rollup: '@rollup/wasm-node@4.20.0' - '@rollup/plugin-terser@0.4.4(@rollup/wasm-node@4.19.1)': + '@rollup/plugin-terser@0.4.4(@rollup/wasm-node@4.20.0)': dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 terser: 5.31.3 optionalDependencies: - rollup: '@rollup/wasm-node@4.19.1' + rollup: '@rollup/wasm-node@4.20.0' - '@rollup/pluginutils@3.1.0(@rollup/wasm-node@4.19.1)': + '@rollup/pluginutils@3.1.0(@rollup/wasm-node@4.20.0)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: '@rollup/wasm-node@4.19.1' + rollup: '@rollup/wasm-node@4.20.0' - '@rollup/pluginutils@5.1.0(@rollup/wasm-node@4.19.1)': + '@rollup/pluginutils@5.1.0(@rollup/wasm-node@4.20.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: '@rollup/wasm-node@4.19.1' + rollup: '@rollup/wasm-node@4.20.0' '@rollup/wasm-node@4.19.1': dependencies: @@ -5388,6 +5393,12 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + '@rollup/wasm-node@4.20.0': + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + fsevents: 2.3.3 + '@scure/base@1.1.7': {} '@scure/bip39@1.3.0': @@ -7222,7 +7233,7 @@ snapshots: '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) '@babel/types': 7.25.2 kleur: 4.1.5 - rollup: '@rollup/wasm-node@4.19.1' + rollup: '@rollup/wasm-node@4.20.0' unplugin: 1.12.0 transitivePeerDependencies: - supports-color @@ -7721,14 +7732,14 @@ snapshots: dependencies: glob: 7.2.3 - rollup-plugin-visualizer@5.12.0(@rollup/wasm-node@4.19.1): + rollup-plugin-visualizer@5.12.0(@rollup/wasm-node@4.20.0): dependencies: open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rollup: '@rollup/wasm-node@4.19.1' + rollup: '@rollup/wasm-node@4.20.0' rrweb-cssom@0.6.0: {} @@ -8291,7 +8302,7 @@ snapshots: dependencies: esbuild: 0.21.5 postcss: 8.4.40 - rollup: '@rollup/wasm-node@4.19.1' + rollup: '@rollup/wasm-node@4.20.0' optionalDependencies: '@types/node': 20.14.13 fsevents: 2.3.3 @@ -8453,10 +8464,10 @@ snapshots: '@babel/core': 7.25.2 '@babel/preset-env': 7.25.3(@babel/core@7.25.2) '@babel/runtime': 7.25.0 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.25.2)(@rollup/wasm-node@4.19.1)(@types/babel__core@7.20.5) - '@rollup/plugin-node-resolve': 15.2.3(@rollup/wasm-node@4.19.1) - '@rollup/plugin-replace': 2.4.2(@rollup/wasm-node@4.19.1) - '@rollup/plugin-terser': 0.4.4(@rollup/wasm-node@4.19.1) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.25.2)(@rollup/wasm-node@4.20.0)(@types/babel__core@7.20.5) + '@rollup/plugin-node-resolve': 15.2.3(@rollup/wasm-node@4.20.0) + '@rollup/plugin-replace': 2.4.2(@rollup/wasm-node@4.20.0) + '@rollup/plugin-terser': 0.4.4(@rollup/wasm-node@4.20.0) '@surma/rollup-plugin-off-main-thread': 2.2.3 ajv: 8.17.1 common-tags: 1.8.2 @@ -8465,7 +8476,7 @@ snapshots: glob: 7.2.3 lodash: 4.17.21 pretty-bytes: 5.6.0 - rollup: '@rollup/wasm-node@4.19.1' + rollup: '@rollup/wasm-node@4.20.0' source-map: 0.8.0-beta.0 stringify-object: 3.3.0 strip-comments: 2.0.1 diff --git a/src/components/player/atoms/Captions.tsx b/src/components/player/atoms/Captions.tsx new file mode 100644 index 00000000..89e419e0 --- /dev/null +++ b/src/components/player/atoms/Captions.tsx @@ -0,0 +1,28 @@ +import { useEffect } from "react"; + +import { Icons } from "@/components/Icon"; +import { OverlayAnchor } from "@/components/overlays/OverlayAnchor"; +import { VideoPlayerButton } from "@/components/player/internals/Button"; +import { useOverlayRouter } from "@/hooks/useOverlayRouter"; +import { usePlayerStore } from "@/stores/player/store"; + +export function Captions() { + const router = useOverlayRouter("settings"); + const setHasOpenOverlay = usePlayerStore((s) => s.setHasOpenOverlay); + + useEffect(() => { + setHasOpenOverlay(router.isRouterActive); + }, [setHasOpenOverlay, router.isRouterActive]); + + return ( + + { + router.open(); + router.navigate("/captionsOverlay"); + }} + icon={Icons.CAPTIONS} + /> + + ); +} diff --git a/src/components/player/atoms/index.ts b/src/components/player/atoms/index.ts index 3caf8154..6be88fd6 100644 --- a/src/components/player/atoms/index.ts +++ b/src/components/player/atoms/index.ts @@ -16,3 +16,4 @@ export * from "./VolumeChangedPopout"; export * from "./NextEpisodeButton"; export * from "./Chromecast"; export * from "./CastingNotification"; +export * from "./Captions"; diff --git a/src/pages/parts/player/PlayerPart.tsx b/src/pages/parts/player/PlayerPart.tsx index 1f55013b..2d73286b 100644 --- a/src/pages/parts/player/PlayerPart.tsx +++ b/src/pages/parts/player/PlayerPart.tsx @@ -111,7 +111,10 @@ export function PlayerPart(props: PlayerPartProps) { ) : null} {status === playerStatus.PLAYBACK_ERROR || status === playerStatus.PLAYING ? ( - + <> + + + ) : null}