1
0
mirror of https://github.com/videojs/video.js.git synced 2025-01-23 11:04:59 +02:00

1625 Commits

Author SHA1 Message Date
Gary Katsevman
1d4bad8199
fix: regression with AD audio track menu items (#7559)
In #7337, a lot of code was updated to no longer user innerHTML, but we
accidentally caused an issue with Audio Description (AD) tracks where
the track title was included twice. Once before and once after the AD
icon.

This is because we were calling `super.createEl()` but MenuItem created
a specific element and didn't just pass things the arguments along.
Instead, we should use `Dom.createEl()` directly.

Fixes #7556
2021-12-08 15:30:20 -05:00
Gary Katsevman
3c213455ee
fix: volume control showing up on iOS (#7550)
This is a follow-up to #7514. But turns out, that we still had a timing
issue around when we were doing the check and when the volume control
was created.

Instead, we should make `featuresVolumeControl` not be a lazy property,
so, that we do that check as early as possible. Also, we should
default this property to `false` in this case, so, that we assume we
can't until we confirm we can.

Additionally, added a null check for Html5, to be extra defensive since
the timeout isn't tied to a player.
2021-12-01 17:33:11 -05:00
Gary Katsevman
df927de320
fix: don't always use fastSeek when available. (#7527)
We were always setting `scrubbing(true)` on mouse down. This means, that
we'd use `fastSeek` even when seeking while clicking, rather than only
when scrubbing.

The main fix involves knowing in `handleMouseMove` whether we were
called directly as a `mousemove` handler or whether it was called from
`handleMouseDown`. This means that when `handleMouseMove` is called via
`handleMouseDown` we can skip setting `scrubbing(true)` and only do it
when we are scrubbing directly.
2021-11-17 15:59:01 -05:00
Gary Katsevman
1d96d1cf20
fix: try again on volume feature detection on iOS (#7514)
On latest iOS, we are seeing times when the volume feature detection is
showing that we are able to change the volume, though, that is not the
case. Instead, on iOS, when we detect that we can control the volume, we
set a short timer to retest and reset the featuresVolumeControl property.

Fixes #7040
2021-11-17 12:27:08 -05:00
Gary Katsevman
115a04745f
fix: turn off other tracks with native audio track (#7519)
Audio Tracks are supposed to allow multiple tracks at the same time.
Safari 15 has added, at least partial support for this.

In #7163, we stopped turning other tracks of manually since we already
were doing so in the AudioTrackList. However, this only worked for
non-native AudioTracks. Before Safari 15, Safari automatically turned
off the other tracks for us so things continued to work.

With this change, when native audio tracks are used, we will turn off
the other tracks, partially reverting #7163.

We currently do not have any tests or are set up for writing tests for
these proxy tracks. Adding such tests will take too long for not a lot
of benefit, unfortunately.

Fixes #7494.
2021-11-16 11:23:03 -05:00
Gary Katsevman
6c67c3084b
fix: improve enabling liveui when switching sources (#7510)
We try and enable the liveui on canplay, however, we only do it the first time after the LiveTracker is enabled. This means that if you change sources, we may not catch that the liveui should be enabled. This is particularly important for browsers where native playback is used, like Safari, as the metadata may not be available until canplay.

This is a follow-up from #7114 which enabled listening to canplay but didn't account for switching videos in the same player.
2021-11-10 22:21:11 -05:00
iChengbo
ca2f5a3cae
docs: fix a comment of the player's loadedmetadata event (#7506) 2021-11-10 14:07:24 -05:00
Robert J. Berger
749105d32c
feat: Add userAction.click to prevent pause/play when player is clicked (#7495)
Pass `false` as `userAction.click` to disable the default click-to-play behavior. Alternatively, pass in a function, to enable custom behavior.

Fixes #7123.
2021-11-10 14:06:25 -05:00
André
78cf834e6f
fix: volume button empty space (#7466)
When responsive mode is used and the player layout is small or smaller, an empty space appears to the right of the mute button on hover.

Fixes #7465
2021-11-10 14:04:08 -05:00
Ikko Ashimine
8e8b7be190
docs: fix typo in html-track-element.js (#7504)
vesion -> version
2021-11-09 10:17:47 -05:00
Gary Katsevman
bcd80f922e
fix: don't let the player be translated except captions (#7474)
This is another follow-up to #6699.

Potentially, it means we could get rid of #6977
2021-11-09 10:17:04 -05:00
Gary Katsevman
e9e894ffa0
fix: enable liveui on more livestreams (#7502)
Some live streams with a 30s live window can actually fluctuate between below and above the 30s threshold we have. Instead, we should have a slightly lower default to have those streams get the liveui.
2021-11-09 10:13:51 -05:00
Owen Edwards
f326cf3449
fix: set the 'lang' attribute on text track display elements, if the language of the track is known (#7493)
Fixes #7487

Co-authored-by: Gary Katsevman <git@gkatsev.com>
2021-11-02 15:59:03 -04:00
Ileana Padilla
1d91831992
fix: remove rule on small layout (#7449) 2021-09-28 14:37:44 -04:00
Gary Katsevman
6d39ee24b1
fix: remove deprecation of getComponent feature (#7410)
Since Video.js 6, we've removed the deprecated functionality, we no longer need to have a deprecation warning.
2021-09-02 14:35:34 -04:00
John Caruso
1f4d95b050
fix: prevent cached inactivityTimeout from being overwritten with 0 (#7383)
If multiple `mouseenter` events fire on the controlBar before a `mouseleave` event occurs, the cached inactivityTimeout value will get overwitten with a 0. This prevents the control bar from being hidden when the inactivity timeout is reached because the hide call is skipped when inactivityTimeout <= 0.

The circumstances around multiple `mouseenter` events firing before a `mouseleave` event are when a menubutton on the toolbar has its `update()` method called: the menu popup is disposed but a `mouseleave` event isn't fired for it.

Fixes #7313
2021-08-19 15:33:37 -04:00
Brandon Casey
eb8f802391
refactor: remove most usage of innerHTML (#7337) 2021-07-28 16:42:23 -04:00
Brandon Casey
ada25c4c76
fix: evented should cleanup dom data (#7350) 2021-07-28 15:55:35 -04:00
Gary Katsevman
774f9e7f45
feat(hooks): Error hooks (#7349)
Adding beforeerror and error hooks that make it easier to know when errors occurred on all players and allows intercepting and modifying errors.
2021-07-28 13:32:38 -04:00
Gary Katsevman
ad9546cad8
feat(time-ranges): make TimeRanges iteratable if Symbol.iterator exists (#7330) 2021-07-27 12:33:45 -04:00
Brandon Casey
2ad4d60dac
fix: prevent control bar clicks/taps with while user inactive (#7329) 2021-07-27 12:33:16 -04:00
Chocobozzz
956379c570
fix: use click event for tech click event (#7302)
Flash is not really a thing anymore.
Prevent some weird behaviour when pressing left click outside the player, move the custor inside the player and release the button
2021-07-27 12:01:02 -04:00
Gary Katsevman
b483a7613f
fix: don't add anchor to DOM for getAbsoluteURL (#7336) 2021-07-22 16:01:12 -04:00
Gary Katsevman
b3acf66364
fix: remove IE8 url parsing workaround (#7334) 2021-07-22 13:14:26 -04:00
Travis Bader
2990cc7d65 fix(dom): in removeClass, check element for null in case of a disposed player (#6701) 2021-07-15 11:16:21 -04:00
Gary Katsevman
14da28dabe
fix: remove loading spinner on ended (#7311)
If we've ended, there's no point in having the loading spinner. In
addition, there are cases where we get a waiting event immediately
before ended, and this works around that.

Fixes videojs/http-streaming#1156
2021-07-06 15:42:43 -04:00
Gary Katsevman
508a424b02
fix: all !important properties of vjs-lock-showing (#7312) 2021-07-06 15:42:24 -04:00
Gary Katsevman
3921b7febf
fix: properly return promise from requestFullscreen and exitFullscreen (#7299)
Mapping the promise returned from the helpers to the executor's resolve, and reject
methods. We also need to catch the error in the promise chain that's
created inside exitFullscreenHelper_.

Fixes #7298.
2021-07-06 14:56:02 -04:00
Alex Barstow
c74c27d99b
feat: add ended getter middleware (#7287)
One thing to note is that this won't affect the play toggle from changing to the replay button on ended because it only listens to the ended event. Otherwise, this works fine.
2021-06-30 12:50:05 -04:00
Roman Pougatchev
f9fb1d3f51
fix: throw error on muted resolution rejection during autoplay (#7293)
Previously, when autoplay was set to any or muted, we would accidentally swallow the autoplay rejection when we reset the muted state back to what it was. Instead, we want to re-throw the error.
To get it working, we also had to update our tests to try/catch in our fake promise.
2021-06-30 12:28:41 -04:00
Alec Winograd
a221be1d83
fix(event): event polyfill detection compatibility with react-native-web (#7286)
Fixes #7259
2021-06-24 16:54:02 -04:00
Gary Katsevman
688879858c
fix: do a null check on playbackRates player method (#7273) 2021-06-14 14:58:53 -04:00
mister-ben
b86f083a88
feat: Add option to use full window mode instead of using tech's fullscreen (#7218)
iPhone's native fullscreen isn't always desirable as you can't overlay controls or anything else. Adds an option to prefer "full window" mode over the video el's fullscreen.

If the preferFullWindow option is set to true, on a browser that does not support the proper fullscreen API but does support fullscreen on the video element (i.e. iPhone), then requestFullscreenHelper_() should call enterFullWindow() instead of fullscreen on the tech.
2021-06-08 11:54:33 -04:00
Alex Barstow
b4ad93a10e
feat: Add normalizeAutoplay option to treat autoplay: true as autoplay: "play" (#7190)
This PR adds a new option to treat autoplay: true the same as autoplay: 'play'. In general we want video.js to handle as much of the autoplay logic itself as possible, since the browser's treatment of the video element's autoplay attribute is less predictable. For now the default option value is false, but it may be made the default behavior in a future major version.
2021-06-08 11:03:51 -04:00
mister-ben
35ad17a0ef
feat: Add helper classes for 9:16 and 1:1 (#7219)
Fluid mode's automatic detection is nice, but there can be a layout jump once the video dimensions are known. We have the vjs-16-9 and vjs-9-16 classes already, but square and portrait are also common now.
2021-06-08 11:02:57 -04:00
Gary Katsevman
6259ef79e9
feat(player): Add playbackRates() method (#7228)
Adds a new playbackRates() method that takes an Array of numbers
representing the rates that are wanted to show up in the playback rates
menu. When new rates are given, a playbackrateschange event will trigger, which
will be used by the PlaybackRatesMenuButton to update itself.

An empty array will hide the menu. No value will return the currently
set playback rates. Other values will be ignored.

Fixes #7198
2021-06-08 11:01:56 -04:00
Tim Fischbach
8082c5a3d0
fix: allow Video.js to be required in an env without setTimeout (#7247)
Some JavaScript environments don't implement setTimeout, which causes Video.js to fail on require. Instead, move our Dom.isReal() check earlier to before we call setTimeout.
2021-06-02 15:51:20 -04:00
FredTsang
41d5eb3b52
fix(player): accept data for fullscreenchange and error events from the tech (#7254) 2021-06-02 15:49:23 -04:00
Dtthatcher
11ac0b9bf2
chore(component): update comment around triggering ready in component (#7256) 2021-06-02 15:48:07 -04:00
Boris Petrov
c70c29885a
fix(seek-bar): remove event listener on dispose (#7258)
We were accidentally listening to `liveedgechange` when the seek-bar disposed. Instead, we should remove that event handler.
2021-06-02 15:44:40 -04:00
mister-ben
b3503c93dd
chore: Update sass and remove now deprecated / for division. (#7253)
Fixes #7244
2021-06-02 13:13:00 -04:00
weiz18
90ce2d7143
fix(utils): add try and catch for computedStyle (#7214) 2021-05-11 12:58:45 -04:00
Aaron Mertzenich
06cdb6f49f
fix: incorrect focus styles on selected MenuItem (#7202)
Adds a :not() pseudo class to ensure that the MenuItem background color doesn't get incorrectly reset on mouse focus.

Fixes #7200
2021-05-11 12:54:43 -04:00
FredTsang
e9953e59fa
fix: exit full window mode with Esc key (#7224) 2021-05-11 12:54:15 -04:00
mister-ben
0e46624f1a
fix: Better text for exit fullscreen (#7183) 2021-05-10 18:51:32 -04:00
Brandon Casey
39485fc4c9
fix: user and programmatic seeks with live streams (#7210) 2021-05-10 18:42:17 -04:00
mister-ben
d4a08deb10
fix: Don't hide menus with one item and a title (#7215)
Menus with one item are hidden if they have a title, because adding the title increments the hide threshold, but the title is not counted as an item. e.g. the chapters menu if there is a single chapter.
2021-05-10 18:28:31 -04:00
Owen Edwards
17919ce77b
fix: make Playback Rate control work better with screen readers (#7193)
Add an aria-describedby to the playback rate button.

Improves behavior of #7121.
2021-04-20 19:11:29 -04:00
Gary Katsevman
2c6e4397bb
fix: silence play promise in the play toggle. (#7189)
Fixes #6998
2021-04-16 14:06:19 -04:00
Brandon Casey
4707ce82c0
fix: always have an enabled audio track when switching (#7163) 2021-04-06 16:22:54 -04:00