64 Commits

Author SHA1 Message Date
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
Erik Thuning
1a661ac4e9 Trying to make the distinction between a video element ('source')
and its parent div ('stream') less confusing
2022-10-27 15:43:48 +02:00
Erik Thuning
3d8d2b44e8 Implemented elapsed counter 2022-10-27 14:30:26 +02:00
Erik Thuning
a84e1ff781 Formatting 2022-10-27 14:30:05 +02:00
Erik Thuning
3be3acc90f Finished stream switching logic, no idea why it works this way 2022-10-26 21:10:08 +02:00