1
0
Fork 0
mirror of https://github.com/sussy-code/smov.git synced 2024-12-24 15:17:41 +01:00
smov/src/components/player
mrjvs ca2bab30a4 make download button use real link, and improve PC download text
Co-authored-by: Jip Frijlink <JipFr@users.noreply.github.com>
2023-10-22 20:17:28 +02:00
..
atoms make download button use real link, and improve PC download text 2023-10-22 20:17:28 +02:00
base subtitle scraping + new subtitle setting to fix capitalization 2023-10-22 17:58:49 +02:00
display Fix type error, only show pip if pip is available 2023-10-21 20:17:18 +02:00
hooks thumbnail fixes + next episode fixes + cursor now hides when controls are dismissed + back link can go back to search + hovering over controls no longer dismisses controls + improved colors for context menus + progress ring shown in episode selector + scrape progress ring shows progress again 2023-10-21 16:13:16 +02:00
internals Add download view 2023-10-22 18:57:35 +02:00
utils Fix subtitles not showing up in safari, using a blob 2023-10-18 16:54:52 +02:00
index.tsx move video to old and setup new video structure 2023-07-23 15:00:08 +02:00
Player.tsx caption rendering is back! 2023-10-18 14:30:52 +02:00
README.md fundementals for video player rewrite 2023-09-30 20:57:00 +02:00

Video player component

Video player is quite a complex component, so here is a rundown of all the parts

Composable parts

These parts can be used to build any shape of a video player.

  • /atoms- any ui element that controls the player. (Seekbar, Pause button, quality selection, etc)
  • /base - base components that are used to build a player. Like the main container

internal parts

These parts are internally used, they aren't exported. Do not use them outside of player internals.

/display

The display interface, abstraction on how to actually play the content (e.g Video element, chrome casting, etc)

  • It must be completely seperate from any react code
  • It must not interact with state, pass async data back with events

/internals

Internal components that are always rendered on every player.

  • Only components that are always present on the player instance, they must never unmount

/utils

miscellaneous logic, put anything that is unique to the video player internals.

/hooks

Hooks only used for video player.

  • only exception is usePlayer, as its used outside of the player to control the player

~/src/stores/player

State for the video player.

  • Only parts related to the video player may utilize the state