68 Commits

Author SHA1 Message Date
Erik Thuning ea83d221b1 Chrome idiocy fix
Making sure only one subtitle track is showing at any given time.
Chrome has some heuristic that forces all tracks on the main stream
(and only there) to be visible at once if any track is set to be
visible when the page loads. Moving recall of settings into an
eventListener firing on canplay on the main stream solves the issue.
2026-02-11 15:40:23 +01:00
Erik Thuning 6d0e043133 Working on providing better indication of which subtitle track is selected 2026-02-10 16:55:42 +01:00
Erik Thuning e3403d0f73 Invalid URL timestamp values will now be ignored instead of throwing an exception 2025-12-10 12:55:12 +01:00
Erik Thuning a16225e652 Added the option of activating subtitles via URL parameter
Also simplified URL parameter handling to no longer encode a second
level of options. Multiple players on the same page will be dealt with
if it happens.
2025-12-10 12:44:13 +01:00
Erik Thuning 3907d10755 FIX: multiple events triggering when using keyboard while focus is on a button
Keyboard events were triggering regardless of which element had focus, which
led to surprising behaviour: if the play button was focused and spacebar
got pressed, two playback toggle actions were triggered - one from the
keyboard listener and one from the default button activation.

This is fixed by ignoring spacebar presses in the custom listener if a
button has focus.

Also minor stylistic change break -> return
2025-02-06 15:10:01 +01:00
Erik Thuning 2be04e1e79 Made the player root element focusable
This makes keyboard actions work reliably in the entire element.
Using -1 ensures it does not interfere with tab navigation.
2025-02-06 14:29:53 +01:00
Erik Thuning 77151ceef8 Added support for dragging the progress bar to seek in the video 2025-02-06 14:28:14 +01:00
Erik Thuning 8323ea61dd Implement automatic rotation
This change should lead to the screen automatically getting set to landscape
mode when activating fullscreen on a mobile device. Seems to only work in
chrome, which is not great, but it seems to be the only option.
2025-02-06 14:25:11 +01:00
Erik Thuning db68e2b86b Fixed a bug where the mute icon could desync from the actual mute state.
Due to source.muted not being set in the volume slider listener, it was
possible to desync the mute icon state by lowering the volume to zero and then
clicking the mute button.
2025-01-30 14:37:51 +01:00
Erik Thuning 633d9436f4 Improved volume handling on touch devices
The mute button no longer mutes when used on a touch device. Instead, it only
causes the volume slider to be displayed so the user can set the desired
volume. Also updated the volume icon to show as muted if the volume is
set to zero.
2025-01-30 14:19:27 +01:00
Erik Thuning 10e07c32bf Atempting to properly sort out the layout
No longer using the entire window for layout decisions has caused a number of
problems. Attempting to solve them by porting some of the layout logic from
the old player. Also shuffled the CSS a bit to make related things
be displayed together.
2025-01-28 14:23:15 +01:00
Erik Thuning 4832023b14 Whitespace 2025-01-28 14:19:45 +01:00
Erik Thuning cc5a87e68a FIX: duration is no longer part of the json manifest
Now reading the duration directly from the controlling stream instead
of static metadata.
2025-01-24 14:38:29 +01:00
Erik Thuning e4b85a87a1 Switched to container queries for the element layout settings
Also cleaned up some problematic/unnecessary directives:
 - align-self interfered with video elements filling the grid
2025-01-23 16:30:19 +01:00
Erik Thuning ef3b6910bf Fixed CSS grid gap assignments to use modern syntax 2025-01-23 15:56:57 +01:00
Erik Thuning f57c52ec51 Fixed the layout breaking in portrait mode
Removed minimum width and height because they are unnecessary
2025-01-22 14:41:00 +01:00
Erik Thuning 6e0da80d9d FIX: Token not included in munged source
When munging the source for a video to add at subdomain, the wrong string was
being acted on, so the playback token was lost in translation.
2025-01-22 13:22:50 +01:00
Erik Thuning 0b22fab6a2 Made sure sources get ordered in a predictable way 2024-09-06 14:58:42 +02:00
Erik Thuning 1182bed672 Added the ability for streams to be hidden in the player given
the correct setting in the presentation manifest
2024-04-05 15:13:00 +02:00
Erik Thuning 5ae4fb9ff4 Unknown languages now lead to English UI. Updated documentation
on how internationalization works.
2023-08-16 14:24:12 +02:00
Erik Thuning 811cfd6305 Made the button to copy a link to the current time always visible by default 2023-08-16 14:16:31 +02:00
Erik Thuning 4446f9d67b Removed concole.log statements 2023-08-16 14:16:11 +02:00
Erik Thuning 63810bb5a1 Removed debugging code.
Background returned to black, style inlined and style.css deleted as a consequence.
2023-08-16 14:09:39 +02:00
Erik Thuning 30e0944aaa Implemented UI language switching
based on the containing document's html.lang attribute.
2023-08-16 14:06:36 +02:00
Erik Thuning df2dab7adc Expanded documentation for parseGETParameters 2023-08-16 09:18:14 +02:00
Erik Thuning 1b29fadaa0 Updated timelink copy to be able to link back to the existing embed place 2023-04-05 11:01:59 +02:00
Erik Thuning 1de19dd5f6 Implemented the timelink copy feature 2023-04-04 17:07:28 +02:00
Erik Thuning 515245e32e Declared some existing fields in the cnstructor for extra clarity 2023-04-04 16:52:32 +02:00
Erik Thuning fb659bda2a Changed autoblurring to only affect selection popups 2023-01-20 14:45:27 +01:00
Erik Thuning 5da12d47f8 Implemented a spinner that pops up when any stream is buffering 2023-01-20 14:40:05 +01:00
Erik Thuning f4081d0523 Consistency fix 2023-01-17 09:16:20 +01:00
Erik Thuning 667144adcb Added basic keyboard controls for seeking and play/pause 2023-01-16 16:52:35 +01:00
Erik Thuning ab0f6613e7 Fixed attempting to activate subs from memory if there are none 2023-01-13 16:22:22 +01:00
Erik Thuning 299631e5cd Disabled autoblurring of elements 2023-01-10 13:49:04 +01:00
Erik Thuning 2e993a8735 Tweaked comment formatting 2023-01-10 13:26:41 +01:00
Erik Thuning 4820ba10c9 The button to copy a link to current time is now hidden by default.
It can be made visible via an attribute on the multi-player element.
2023-01-10 13:23:32 +01:00
Erik Thuning 1cf2e39a43 Progressbar css tweaks 2023-01-10 13:23:08 +01:00
Erik Thuning b8467ee8ec Code hygiene 2023-01-09 16:59:36 +01:00
Erik Thuning 069d746871 Implemented seeking and settings persistence 2023-01-09 16:58:19 +01:00
Erik Thuning c4569c46b5 Added readme 2022-12-08 16:58:34 +01:00
Erik Thuning cec90328dc Working around the inability to play more than 6 streams at once.
Remote sources (those starting with https?://) now get a random subdomain
prepended by default. This can be switched off by setting the 'nomunge'
attribute on the player element to a truthy value.
2022-11-04 11:43:59 +01:00
Erik Thuning 099399a92f Semicolon discipline 2022-11-04 10:58:24 +01:00
Erik Thuning a5fe0ee7df var -> const 2022-11-04 10:55:22 +01:00
Erik Thuning 0a56ad07b4 Implemented support for multiple subtitle tracks 2022-11-04 10:54:41 +01:00
Erik Thuning 110376146f var -> let 2022-11-03 14:55:43 +01:00
Erik Thuning ae550b641a Minor fixes 2022-10-31 16:27:31 +01:00
Erik Thuning 13a5d4059a Buffered segments are now shown on the progress bar 2022-10-31 11:43:54 +01:00
Erik Thuning 0aac98ddc2 The progress bar now displays progress as the video plays 2022-10-31 11:25:03 +01:00
Erik Thuning 0a6f09a287 Disabling responsive layout until we can look at the element instead of the screen 2022-10-31 10:57:53 +01:00
Erik Thuning 2948002b63 Refactored progress tracking to use an event. Removed a debug print. 2022-10-27 16:09:29 +02:00