1
0
mirror of https://github.com/videojs/video.js.git synced 2025-01-06 06:50:51 +02:00
Commit Graph

1491 Commits

Author SHA1 Message Date
Marco Del Toro Barragan
c791cd8c4e fix(iOS): pause player on suspend or stalled if extra buffer is available (#6199)
On iOS, when disconnecting the headphones, we may receive a stalled or suspend event. In those case, we may actually still have buffer available for us to play through rather than actually having stalled or suspended. In those cases, we should pause the player to prevent playback issues.
2019-10-04 13:31:41 -04:00
Brandon Casey
4134a9734b test: run tests via rollup (#5601) 2019-08-30 14:56:41 -04:00
Brandon Casey
bd58039c78 perf: Save 3740 bytes gizpped by getting rid of xhr deps (#6164)
Switch to @videojs/xhr and setup babel runtime helpers properly.
2019-08-30 11:13:45 -04:00
Pat O'Neill
064fcafd44 feat: add isDisposed method to components (#6099) 2019-08-29 18:42:15 -04:00
Brandon Casey
5fa4257b91 feat: cap log history at 1000 items (#6192) 2019-08-29 17:32:34 -04:00
Brandon Casey
99b610bd92 perf: only update ui on change, wrap things in requestAnimationFrame (#6155) 2019-08-29 17:02:56 -04:00
mister-ben
f7185bad9e feat: allow a click handler to be specified in clickable component's options (#6140) 2019-08-29 16:46:49 -04:00
Brandon Casey
22782b8425 perf: Another 5ms of startup time improvements (#6145) 2019-08-29 16:44:06 -04:00
Grzegorz Blaszczyk
f324d1f23c Allows middleware to handle muted setter/getter (#6177) 2019-08-29 16:42:42 -04:00
Kevin Lee
8129f03f18 fix: allow player dimension method to accept 'auto' (#6185) 2019-08-29 16:42:22 -04:00
Grzegorz Blaszczyk
714aba0ca8 fix: make live UI button more consistent (#6201)
Use a simple moving average for setting the seekableIncrement value, which is used to determine whether we're at the live edge of nor.
2019-08-28 13:41:32 -04:00
Grzegorz Blaszczyk
3c1dd8ff44 fix: adds space between vjs-live-display and vjs-volume-control controls. (#6200)
Closes #5815
2019-08-27 15:39:52 -04:00
Grzegorz Blaszczyk
62465b841e fix: make 'Esc' works for a vertical volume bar and menus (#6046)
Improve player accessibility by adding 'Esc' functionality to the volume panel and menu popups.

Fixes #6004.
2019-08-21 14:24:35 -04:00
Pat O'Neill
51b9861d5b fix: do not handle hotkeys in contenteditable elements (#6182)
Exclude elements where `el.isContentEditable == true;` for hotkeys.
2019-08-19 14:57:15 -04:00
Brandon Casey
549552ed43 fix: remove deprecated tsml dependency (#6174) 2019-08-19 14:56:16 -04:00
Brandon Casey
5ee247762e perf: Do not add/remove listeners for each timer (#6144) 2019-08-07 16:11:24 -04:00
Brandon Casey
266cb151fa perf: Improve performance of toTitleCase, register with lower and TitleCase (#6148) 2019-08-07 16:05:41 -04:00
Brandon Casey
8610f99673 perf: Use WeakMap for dom data (#6103) 2019-08-01 14:26:59 -04:00
Brandon Casey
6a93c8afac perf: throttle more timers and use native bind (#6142) 2019-07-30 16:01:00 -04:00
Bruno
20cae21ff7 fix(component): use safe computedStyle in currentDimension (#6073)
This will prevent a null exception when a video.js is implemented in a 'display:none' iframe on Firefox (<62).

This is a fix in continuation of the PR #3664 regarding a bug in Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=548397
2019-07-29 18:17:02 -04:00
Grzegorz Blaszczyk
f2aedb72ec fix: Improves isSingleLeftClick() to handle mousemove (#6138)
Fixes #6132
2019-07-29 17:45:40 -04:00
Brandon Casey
3c932c5f8e refactor: use the new any event function (#6080) 2019-07-29 17:21:42 -04:00
Brandon Casey
2e495dd5f5 perf: save ~10ms on player.src call (#6141)
Don't use a case-insensitive regex for getting the extname. Don't try to guess the type if we're provided with one.
2019-07-29 16:40:29 -04:00
Gary Katsevman
3afa7d1ce4
fix(pip): hide PiP button in browsers not support the WICG spec (#6131) 2019-07-26 11:33:25 -04:00
Gary Katsevman
15ff8f7242
revert: "fix(play-toggle): call event.stopPropagation in the click handler (#5803)" (#6128)
PR #5083 introduces a fix to #5624, an issue with click events when
Polymer's tap gesture is being used. However, this causes an issue where
`player.on('click')` no longer triggers from the play toggle. Thus, we
revert the change. In addition, looking at Polymer 2 and 3, they
recommend against using the tap gesture.

Fixes #6092
2019-07-24 15:58:38 -04:00
Gary Katsevman
10ed08a15a
refactor(pip): rely only on WICG spec events (#6064)
The WICG spec calls out only two events, enterpictureinpicture and
leavepictureinpicture. We should try and only use those.
If pictureinpicturechange is still necessary, it can be re-added at a
later date.
2019-06-20 15:11:21 -04:00
mister-ben
5a538c3caf feat: add option to suppress initial error for non-playable sources (#6057)
Video.js checks whether sources are playable and both displays a message to the user and logs an error to the console. In Google's mobile friendly test and related tools, this message and error is triggered because their test browser's video element does not support any video formats. Some Video.js users are concerned about the æsthetics of the rendered preview within the tools and whether this might have an SEO impact.

Adds a suppressNotSupportedError option, defaulting to false. If set to true, if no sources are playable the error is deferred to the first human interaction (click or touchstart) but cleared if a loadstart occurs.
2019-06-20 14:00:12 -04:00
Pat O'Neill
70ba84eb6a fix(liveui): do not seek to live on first seek when autoplaying a live stream (#6062)
Before listening for the play/timeupdate combination when starting the LiveTracker, check if the player has already started playback.
2019-06-20 13:56:00 -04:00
Gary Katsevman
9d941c0087
fix: undeprecate options() (#6056)
Fixes #6048
2019-06-18 18:10:28 -04:00
François Beaufort
116d84af75 feat: add built-in Picture-in-Picture button (#6002)
Adds a new PictureInPictureToggle component in the controls bar of the player. It depends on videojs-font 3.2.0 (videojs/font#41) for icons.

Final spec piece from #5824.
2019-06-18 16:42:02 -04:00
Dave Kiss
204ff4619a feat: add write method to time tooltips (#6021)
This splits up the `update` method into two methods: `update` and `write`. The new write method is only responsible for updating the text content of the tooltips. This is useful if you wan't to be able to override the behavior in some way but still wanted all the behavior in `update` and not take a double dom modification hit.
2019-06-18 16:25:24 -04:00
Grzegorz Blaszczyk
f5fd94f610 fix: handle esc key properly inside of the CloseButton (#6050) 2019-06-18 16:23:26 -04:00
Gary Katsevman
ca7b63324c
fix: always pass event object to click handler (#6059) 2019-06-18 16:22:33 -04:00
Thomas
c61f3d3e49 feat: allow displaying of multiple text tracks at once (#5817)
This allows the user to display multiple tracks when
`allowMultipleShowingTracks` is passed to the `TextTrackDisplay`.
Currently, multiple tracks must be shown programmatically and cannot be
done via the subtitles menus.

In addition, this adds two new classes to cue elements:
`vjs-text-track-cue` and `vjs-text-track-cue-${track.language}`. This
allows easier targetting with CSS.

Example usage:
```js
var player = videojs('example-video', {
  textTrackDisplay: {
    allowMultipleShowingTracks: true
  }
});
```

Fixes #5798.
2019-06-18 15:42:39 -04:00
Mike
2c7644f91e fix(play-toggle): call event.stopPropagation in the click handler (#5803)
The play button stops working when recent versions of Google's Polymer is in use on the page because of the way Polymer synthesizes 'tap' events on non-touch devices. The Polymer tap code thinks the click event was ignored unless the DOM event's stopPropagation method is
called.

In chrome 70 the small play/pause control doesn't work with Polymer 1.x Gestures tap is used on document. Demo of issue: https://codepen.io/mscalora/pen/mQzQmp

Fixes #5624.
2019-06-18 15:37:43 -04:00
Gary Katsevman
3e105719ba
chore: switch to dart-sass (#6055)
This is a rebased and updated PR of #5841.

We wanted to use the sass package as that's what the docs recommend. We also wanted to disable source maps that CDN-linked code won't try to download it.

Fixes #5841, fixes #5826.
2019-06-17 17:31:32 -04:00
Gary Katsevman
2977d52592
refactor: switch to fullscreen.options (#6054) 2019-06-17 16:51:28 -04:00
Austin Morton
631ac3b68d feat(fs): support FullscreenOptions (#5856)
On browsers that implement the Unprefixed Fullscreen API, pass a FullscreenOptions dictionary to requestFullscreen.

Add `fullscreenOptions` option with default value of `{navigationUI: 'hide'}` to player.
See https://fullscreen.spec.whatwg.org/#dictdef-fullscreenoptions
2019-06-17 14:05:22 -04:00
Brandon Casey
2878c1d0d4 feat(events): add any function (#5977)
This new events function allows you to listen to a list of events and know that only one handler will ever be called for the group. With just one event, it'll function similarly to `.one`.
Examples:
Single event
```
const player = videojs('some-player-id');

player.any('a', (e) => console.log(e.type + ' triggered');

player.trigger('a');
// logs 'a triggered'

player.trigger('a');
// logs nothing as the listener has been removed.
```
Multiple Events
```
const player = videojs('some-player-id');

player.any(['a', 'b', 'c', 'd'], (e) => console.log(e.type + ' triggered');

player.trigger('d');
// logs 'd triggered'

player.trigger('a');
player.trigger('b');
player.trigger('c');
player.trigger('d');
// all triggers above log nothing as the listener is removed after the first 'd' trigger.
```
2019-06-17 14:04:25 -04:00
Gary Katsevman
c2bea31830
chore: fixup merge issue with #6001 (#6053) 2019-06-17 13:21:54 -04:00
François Beaufort
83541dceeb feat: add Picture-in-Picture API methods (#6001)
Following #5824, this PR adds support for some Picture-in-Picture methods described in the spec and article. It also makes sure that we can listen to the enterpictureinpicture and leavepictureinpicture events on the player.
2019-06-11 13:21:02 -04:00
Pat O'Neill
79eadac252 fix: make sure hotkeys are not triggered outside the player or in form fields within the player (#5969) 2019-06-10 16:15:24 -04:00
Alex Barstow
5a7fe48b07 fix: group subtitles and captions when switching tracks (#6008)
This fixes a regression created by #5741.
2019-06-10 16:15:23 -04:00
Gary Katsevman
fded30f8f8 fix(fs): feature detect el.matches() for IE11 (#6007) 2019-06-10 16:15:23 -04:00
Grzegorz Blaszczyk
075a5043b9 fix: change 'mousedown' to the 'mouseup' event in the player (#5992)
This player behavior is very useful for accessibility because the user can cancel the action by clicking outside the button area. It is recommended by the WCAG 2.1 "2.5.2 Pointer Cancellation" spec.
2019-05-21 11:51:37 -04:00
Grzegorz Blaszczyk
0f501f9fa1 feat: add 'audio/mp4' mimetype for m4a files (#5982) 2019-05-17 16:17:24 -04:00
Gary Katsevman
4585c08bdb
fix(player): silence rejected fullscreen promise (#5970)
The fullscreen API now returns a promise. If the player is inside an
iframe that doesn't allow fullscreen, the promise will reject and cause
an error to be logged. Instead, we should silence this promise.

Fixes #5918
2019-04-29 15:13:56 -04:00
Thijs Triemstra
629594ece5 fix: use performance.now() when possible (#5870) 2019-04-24 11:29:22 -04:00
Owen Edwards
f4154b9de0 Add role='application' to the video element on Chrome on Windows, to work around a JAWS screen reader bug (#5863) 2019-04-23 13:45:27 -04:00
Owen Edwards
322dae44b5 feat(middleware): allow middleware to handle volume setter and getter (#5906)
Allow middleware to handle volume setter and getter. This supports things like ducking the playback volume programmatically, without affecting the player's UI volume control.
2019-04-23 13:42:52 -04:00