## Description
It is useful to have methods for appending and removing `<source>`
elements to the `<video>` element, as they are sometimes required to
enable certain playback features, for example, using [Airplay with
MSE](https://webkit.org/blog/15036/how-to-use-media-source-extensions-with-airplay).
## Specific Changes proposed
Add new methods-- `addSourceElement()` and `removeSourceElement()` to
the player and tech. The former will take a source object and create and
append a new `<source>` element to the `<video>` element, and the latter
will take a source url and remove any `<source>` element with a matching
`src`.
## Requirements Checklist
- [ ] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [ ] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [ ] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [ ] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
Double clicking the document pip window requests fullscreen but this
fails. The gesture on the pip window can't initiate fullscreen.
Fixes#8877
## Specific Changes proposed
Change the default double click action to just exit pip. This is the
same behaviour as before without the error, as requestFullScreen() calls
exitPictureInPicture();
---------
Co-authored-by: Gary Katsevman <git@gkatsev.com>
## Description
Time controls continue to cause confusion as they are included by
default but hidden by default. e.g. #8534 Adding CSS to display them is
not intuitive.
## Specific Changes proposed
Changing the default styles would be problematic before a major version.
This PR proposes adding an optional `vjs-normalise-time-controls` class
a user can add to the player, as an opt in.
This will default all time controls to being shown, except when live
content is playing. Users would then have to remove the time controls in
player options, or with `hide()` or `dispose()`.
## Requirements Checklist
- [ ] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [ ] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [ ] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
Co-authored-by: Adam Waldron <acwald@gmail.com>
## Description
Passing the back key causes an error in spatial navigation if the event
target does not have a `closeable` function.
## Specific Changes proposed
Add a check before calling.
## Description
Small fix to use backup styles only when inset is not supported.
## Specific Changes proposed
Use backup styles only when inset is not supported.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
## Description
In the specific case of using an old chrome version this minor changes
will allow the captions to be shown.
## Specific Changes proposed
Small fix when using videojs in an old browser that does not support the
css 'inset' property.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [ ] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [ ] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [ ] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
---------
Co-authored-by: Walter Seymour <walterseymour15@gmail.com>
Co-authored-by: Gary Katsevman <git@gkatsev.com>
…isplay component
## Description
By default a Video.js player has an ErrorDisplay, but in the event it is
created without one, an error will be thrown when starting spatial
navigation.
## Specific Changes proposed
Only add an event listener to `player.errorDisplay` if it exists.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [x] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
Generated types are mangled for `Component.toggleClass()`, because tsc
doesn't understand `~` namespaces. The second arg is then not marked as
optional.
## Specific Changes proposed
Refactor JSDoc
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [ ] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
The current implementation of `requestNamedAnimationFrame` prevents
multiple updates on a frame but by disregarding all but the first
request per frame. This throttling behaviour is apparent when playing a
very short video - if a `timeupdate` occurs just before the `ended`
event, the progress bar position on the `timeupdate` is set at say 98%
and 100% from the `ended` is discarded. Although #8633 removed the
throttle from the `ended` handler itself, the throttle and non-throttled
update can still both execute between frames.
## Specific Changes proposed
Changes the implementation to apply only the last callback instead. If
any exist they will be cancelled. There will still be only one update,
but now it's the last.
Updates tests to reflect the changed behaviour.
Fixes#8782
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [x] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
tsc doesn't understand mixins and ignores jsdoc not followed by code.
The jsdoc for the plugin methods `usingPlugin()` and `hasPlugin()` in
Player are being ignored. To get them included in type outputs we need
to have otherwise unnecessary stubs codes, as we already have for `on()`
etc, which adds unnecessary, even if a small amount of, code to the
outputs.
## Specific Changes proposed
* Slight refactor of Player to include those stubs.
* Adds a rollup plugin to delete lines between certain comments, so
those stubs are deleted from the outputs.
* Applies those comments to the `on()` etc stubs in Component and the
new plugin stubs in Player.
Any code surrounded by these comments, and the comments themselves, is
deleted from the dist and test builds:
```js
/* start-delete-from-build */
console.log('hi');
/* start-delete-from-build */
```
Compared to main, video.min.js is 53 bytes smaller.
## Requirements Checklist
- [ ] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [ ] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [ ] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [ ] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
Removes an old unmaintained dependency that isn't needed any more.
## Specific Changes proposed
Replace safe-json-parse with `JSON.parse`
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
Some of the existing rules would be interpreted differently in a future
version of SASS. In the current version, they trigger a deprecation
warning. See
https://sass-lang.com/documentation/breaking-changes/mixed-decls/
## Specific Changes proposed
Re-orders rules to maintain current output and remove warnings. The
output of video-js.css and video-js.min.css remains the same.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
This PR will make the refocus available not only to the buttons of the
error modal but also to the close button of the error modal on the event
of 'aftermodalfill'.
## Specific Changes proposed
Allow the spatial-navigation to refocus the error modal when error modal
appears.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [ ] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [ ] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [ ] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
The spatial-navigation is unable to focus certain elements of the error
modal when this appears, this PR will fix that
## Specific Changes proposed
Allow the spatial-navigation to focus certain non-component elements in
the error modal
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [ ] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [ ] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [ ] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
The bug:
Focus is lost when playback error is displayed.
This small PR will update the spatial-navigation logic so when the error
modal is shown the spatial-navigation will try to focus the components
present in the error modal, in most cases this will be the vjs close
button.
## Specific Changes proposed
Keep navigation working when player shows the error modal by focusing a
component in that modal.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [ ] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [ ] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [ ] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
The refactored text track controls aren't listening for tap events.
## Specific Changes proposed
Add tap handler to done and reset buttons.
Fixes#8808
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
Chrome 53 doesn't like the minified output. Specifically, it throws
`Uncaught SyntaxError: Unexpected token (` on the ternary in the
minified version of `normalizeListenArgs()`
e78bcc7b2d/src/js/mixins/evented.js (L165-L195)
Line breaks added for clarify
```js
Tt = (e, t, s) => {
var i = t.length < 3 || t[0] === e || t[0] === e.eventBusEl_;
let r, n, a;
return i ? (r = e.eventBusEl_, 3 <= t.length && t.shift(), [n, a] = t) : [r, n, a] = t, ft(r, e, s), yt(n, e, s), bt(a, e, s), a = _(e, a), {
isTargetingSelf: I,
target: r,
type: n,
listener: a
}
},
```
Chrome would be happy with this if `[r, n, a] = t` were `([r, n, a] =
t)`.
## Specific Changes proposed
Refactor `normalizeListenArgs()` slightly to use multiple statements to
coerce uglify-js to include parentheses.
Also updates uglify-js, but that in itself isn't the fix.
Fixes#8783
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser - Browserstack
Chrome 53
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
---------
Co-authored-by: Gary Katsevman <git@gkatsev.com>
## Description
Transient button sets an event listener on the player directly instead
of on itself, which doesn't get cleaned up when disposed.
Fixes#8795
## Specific Changes proposed
Call `on` on the component with player as the first arg, instead of
calling `on` on the player directly.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
- Removes erroneous `@return {Component}` from `ReadyCallback` in
Component
- Remove `@this {Component}` from `ReadyCallback` in Component, because
this is not accurate for classes that extend Component
- Adds `@returns {void}` to `ReadyCallback` in Component
- Produces a more accurate typedef
- Isn't strictly accurate in jsdoc/javascript but does this matter since
it's well understood. Absence of `@return` is interpreted by tsc as
returning `{any}`, `@returns {undefined}` would require an explicit
`return undefined` in ts.
- Adds a `{PlayerReadyCallback}` in Player with `@this {Player}` used in
the `new Player()` and `videos()` constructors.
- Are we ok adding this new typedef
- Is inconsistent with `player.ready()` which uses `ReadyCallback`
without `@this` - but this can't be changed without adding an otherwise
unnecessary override just to pander to tsc.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
See issue #8653
## Specific Changes proposed
When in `middleware.js` the function `clearCacheForPlayer` runs, before
setting a value to null in middlware caches, it checks if the key exists
in the first place.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [x] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [x] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [ ] Reviewed by Two Core Contributors
---------
Co-authored-by: Giuseppe Piscopo <g.piscopo@braincrumbz.com>
Co-authored-by: mister-ben <git@misterben.me>
## Description
Adds a `TransientButton` component for the types of button that are
shown on top of the video briefly during playback and reappear when
there is user activity. e.g. Unmute buttons, skip intro. It aims is to
be a generic button type to be extended. Some basic styles are provided
but kept light to not complicate customisation.
It's important to insert a transient button before the control bar for
the tab order to make sense.
_Optionally_ takes focus when shown.
## Specific Changes proposed
Adds `TransientButton` component.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [x] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [x] Example:
https://deploy-preview-8629--videojs-preview.netlify.app/sandbox/transient-button.html
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
Fix#8769 for mismatched track kind should be plural descriptions
according to definition of `AudioTrackKind`
https://github.com/videojs/video.js/issues/8769
## Specific Changes proposed
Corrects `description` to `descriptions`
## Description
This fix addresses an issue that was introduced in this
[refactor](35de64ceb0 (diff-9fd94576fe3b609171a426feb961b0954d70c8c14e598024d49ae9c8836a71ca)).
At the moment, all key down events that are supposed to interact with
the `menu-item` component are now being ignored, meaning you are unable
to interact with most of the menu items in the control bar (e.g.
captions settings). This PR fixes that by only ignoring key down events
that are normally ignored by the `menu-item`.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [ ] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [ ] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [ ] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Specific Changes proposed
- update font version to 4.2.0 to use updated Twitter icon
- update to Twitter X icon in SVG
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [ ] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [ ] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [ ] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
The fix for the previous issue with the new text track settings
introduced that ids would be re-used across players as there was no
prefix for the settings that don't have a `<label>` for their
`<select>`.
This change uses a generated guid for items without that label.
Fixes#8761
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
## Description
Prevents a duplicate id in text track settings.
Fixes#8754
## Specific Changes proposed
The text edge settings were erroneously duplicating the id generated for
the background colour. Changes to a unique name.
Adds a general test for duplicate ids.
## Requirements Checklist
- [x] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [x] Change has been verified in an actual browser (Chrome, Firefox,
IE)
- [x] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on
JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0))
- [x] Has no DOM changes which impact accessiblilty or trigger warnings
(e.g. Chrome issues tab)
- [x] Has no changes to JSDoc which cause `npm run docs:api` to error
- [ ] Reviewed by Two Core Contributors
* fix(dom): handle slotted parent transform position
* fix(test): add test to cover getPointerPosition
* run all tests
---------
Co-authored-by: mister-ben <git@misterben.me>
Adapts the `player.height` to the `controlBar.currentHeight` when the
`audioOnlyMode` is `enabled`. This ensures that the player height and control
bar height are always in sync when the player is resized.
- add `updatePlayerHeightOnAudioOnlyMode_` function that will update the player
height according to the control bar height when the player is resized
- modify `enableAudioOnlyUI_`
- add a `controlBarHeight` to `audioOnlyCache_` to keep track of the control
bar height changes when the player is resized
- add a `playerresize` listener
- modify `disableAudioOnlyUI_` to remove the `playerresize` listener
Addresses an issue where activating the `restoreEl` option for an element at the root of a shadow DOM threw a "TypeError: el.parentNode.hasAttribute is not a function". The bug was due to the `parentNode` being a shadow root, which does not have the `hasAttribute` method.
The fix implemented checks for the existence of the `hasAttribute` method on `parentNode`.
* feat(player): add spatialNavigation feature
Adds spatialNavigation feature to enhance user experience
- Implemented spatial navigation in slider component
- Enhanced player functionality for improved navigation
* feat(player): add spatialNavigation class
Adds spatialNavigation class to manage spatial-navigation-polyfill
- Set class SpatialNavigation on its own file
- Imported SpatialNavigation class on component class
* feat(player): update spatialNavigation class
Adds 3 methods to spatialNavigation class to manage spatial-navigation-polyfill
- Added start() to: Start listen of keydown events
- Added stop() to: Stop listen key down events
- Added getComponents() to: Get current focusable components
* feat(player): modify spatialNavigation class & modify component class
Modify spatialNavigation class:
-Remove unrequired version of function ‘getComponents’
Modify component class:
-Add function ‘getIsFocusable’
* Added methods getPositions, handleFocus and handleBLur for spatial navigation needs
* feat(player): modify Component class, BigPlayButton class & ClickableComponent class
Modify Component class:
-Add method getIsAvailableToBeFocused
-Modify method getIsFocusable to only focus on finding focusable candidates
Modify spatialNavigation class:
-Remove unrequired method ‘getIsFocusable’
Modify component class:
-Remove unrequired method ‘getIsFocusable’
* Added import in player.js, Created base methods inside spatial-navigation.js
* feat(player): modify Component class & SpatialNavigation class
Modify Component class:
-Modify method getIsAvailableToBeFocused to be more strict on candidates
Modify spatialNavigation class:
-Modify method getComponents to get all focusable components
* feat(player): modify Component class
Modify Component class:
-Add documentation to ‘isVisible’ function
* added keydown event logic for spatial-navigation
* feat(player): modify SpatialNavigation class
Modify SpatialNavigation class:
-Modify documentation of functions
* feat(player): modify SpatialNavigation class
Modify SpatialNavigation class:
-Add ‘clear’ & ‘remove’ methods
* feat(player): modify SpatialNavigation class
Modify SpatialNavigation class:
-Add documentation of functions
* feat(player): modify SpatialNavigation class
Modify SpatialNavigation class:
-Add function ‘getCurretComponent’‘’
* feat(player): modify SpatialNavigation class
Modify SpatialNavigation class:
-Add documentation for ‘findBestCandidate’ method
* Added logic for moving focus to the best candidate
* Implemented move, findBestCandidate, isInDirection, and calculateDistance methods for spatial navigation logic
* Added a new player option enableKeydownListener, Added gap: 1px to control-bar for spatial-navigation-polyfill needs
* feat(player): modify SpatialNavigation class & Component class
Modify SpatialNavigation class:
-Add function ‘handlePlayerBlur’
-Add function ‘handlePlayerFocus’
Modify Component class:
-Modify ‘handleBlur’
-Modify ‘handleFocus’
* Removed enableKeydownListener flag, as user should start the SpatialNavigation manually
* Added functionality to track changes in the focusableComponents list (custom event focusableComponentsChanged)
* feat(player): modify SpatialNavigation class, ModalDialog & Component class
Modify SpatialNavigation class:
-Add ‘lastFocusedComponent’
-Add function ‘refocusComponent’
Modify ModalDialog class:
-Add condition on ‘close’ function
Modify Component class:
-Modify ‘handleBlur’ to store blurred component
* feat(player): modify ModalDialog
Modify ModalDialog:
-Add condition to close Modal on Backspace
* Refactor SpatialNavigation to use player.spatialNavigation
* Added a new custom event endOfFocusableComponents
* Added new styles for focused elements in case spatial navigation is enabled
* feat(player): modify SpatialNavigation class:
-Add condition so getComponents can get as candidates the UI elements from the playlist-ui
* Changed to window.SpatialNabigation to this.player_.spatialNavigation
* feat(player): modify text-track-settings, created test-track-settings-colors.js, text-track-settings-font.js,text-track-fieldset.js & text-track-select.js:
Modify text-track-settings class:
- Add changes so newly created components can work as content of the modal.
- Create new components as a refactor of the contents of text-track-settings
* changed handleKeyDown inside component.js, getComponents method is now iterating player.children
* feat(player): create TrackSettingsControls Component & Modify TextTrackSettings
Create TrackSettingsControls Component:
-Create Component to show buttons reset & done as components.
Modify TextTrackSettings:
-Add Component TrackSettingsControls in TextTrackSettings
* feat(player): Modify ModalDialog
Modify ModalDialog:
-Add condition for stop propagation of event inside of ModalDialog when spatialNavigation is enabled
* getIsFocusable and getIsAvailableToBeFocused methods are now accepting el as a parameter, added a new methods findSuitableDOMChild and focus for spatialNavigation class
* feat(player): Modify TextTrackSettings:
Modify TextTrackSettings:
-Remove unrequired methods to create DOM elements since now those are created by Components.
* feat(player): Modify CaptionSettingsMenuItem:
Modify CaptionSettingsMenuItem:
-Add condition to focus component of TextTrackSelect when modal is open
* feat(player): Modify TextTrackSelect & TextTrackFieldset:
Modify TextTrackSelect :
Modify TextTrackFieldset:
-Add comments to certain functions to explain the code
* feat(player): Modify TrackSettingsControls:
Modify TrackSettingsControls:
-Remove unrequired comments & add comments to certain functions to explain the code
* feat(player): Modify SpatialNavigation, Component & ModalDialog:
Modify SpatialNavigation:
Modify Component:
Modify ModalDialog:
-Add & update comments of documentation.
* Handle ENTER keydown in Modals when spatial navigation is enabled
* feat(player): Modify ModalDialog, spatialNavigation, TrackSettingsControls, TextTrackFieldset, TextTrackSelect, TrackSettingsColors, TrackSettingsFont:
Modify ModalDialog:
Modify spatialNavigation:
Modify TrackSettingsControls:
Modify TextTrackFieldset:
Modify TextTrackSelect:
Modify TrackSettingsColors:
Modify TrackSettingsFont:
-Add & update comments of documentation.
* Implement additional RCU controls
* feat(player): Modify Component class:
Modify Component :
-Remove unrequired condition inside of handleFocus method.
* feat(player): Modify ModalDialog & CaptionSettingsMenuItem
Modify ModalDialog:
Modify CaptionSettingsMenuItem:
-Modify spatialNavigation condition to be more specific regarding spatialNavigation implementation.
* feat(player): Modify SpatialNavigation class:
Modify SpatialNavigation :
-Fix bug where ‘enter’ press was not working properly on select component inside of the ‘vjs-text-track-settings’ modal.
* feat(player): Modify SpatialNavigation class:
Modify SpatialNavigation :
-Minor improvements on the loops of certain functions to stop when they have found the element they are looking for.
-Implement minor spacing formatting on switch statement.
* Update src/js/component.js
More understandable documentation.
Co-authored-by: Dzianis Dashkevich <98566601+dzianis-dashkevich@users.noreply.github.com>
* Update src/js/component.js
More understandable documentation.
Co-authored-by: Dzianis Dashkevich <98566601+dzianis-dashkevich@users.noreply.github.com>
* feat(player): Modify SpatialNavigation & Component class:
Modify Component class :
Modify SpatialNavigation class :
-Modify ‘getIsFocusable’ function to use ‘this.el_’ instead of ‘el’ parameter
* feat(player): Modify SpatialNavigation class:
Modify SpatialNavigation class :
-Refactor onKeyDown function to use static data & return when pause is true.
* feat(player): Modify SpatialNavigation class:
Modify SpatialNavigation class :
-Refactor to use ‘.el()’ instead of ‘.el_’
* Update src/js/spatial-navigation.js
Co-authored-by: Walter Seymour <walterseymour15@gmail.com>
* feat(player): Modify ModalDialog class & MenuItem class:
Modify ModalDialog class :
Modify MenuItem class :
-Correct typo of ‘isSpatialNavlistening’ to ‘isSpatialNavListening’.
* removed unused property, remove this.focus, which was added for testing purposes
* Changed parameters to private, removed redundant code, removed initialFocusedComponent parameter, change STEP_SECONDS to static
* feat(player): solve remaining conflict:
Modify Spatial Navigation class :
- Solve conflict
* feat(player): Rename TrackSettingsColors & TrackSettingsFont
* feat(player): Remove unrequired functions calls from components TextTrackSettingsColors & TextTrackSettingsFont.
* feat(player): Update spatial-navigation.js's keypress return keyword.
* bind focus and blur just if spatial navigation is enabled, add 1px gap if spatial navigation is enabled
* feat(player): Modify calls on 'isListening' & 'isPaused' for ModalDialog & TextTrackMenuItem
* feat(player): remove unrequired object on component 'TrackSettingsControls'
* Removed 1px gap
* feat(player): Rename function ‘getComponents’ to ‘updateFocusableComponents’
* Changed SpatialNavigation class to extend EventTarget, removed redundant methods for events
* fix(player): fix call of 'getIsAvailableToBeFocused' that was throwing an error.
* removed Static maps for key presses and extended keycode with the missing keys
* refactor(player): Modify functions of 'getIsDisabled', 'getIsExpresslyInert' & 'getIsFocusable' to be more in pair when stablished code of the player.
* Conditional assignment for keycode.codes.back based on platform, changed Backspace to Back key for Modal closing
* Extend the object for reverse lookup, prenet Up/down keys to open a menu if spatial navigation is anabled
* refactor(player): Refactor 'SpatialNavKeycodes' file to not patch 'keycode' dependency
* fix(pllayer): fix issue related to 'back' not being used properly in function 'isEventKey'
* feat(player): Rename imports of 'spatial-navigation-keycode' to have their extension
* feat(player): Add example of use of 'Client app uses a global spatial-navigation solution'
* feat(player): rename 'spatial-navigation-keycode.js' filename
* Fix on src chnage issue, ESC button closing modal, expand vjs-modal-dialog
* change file name and object name
* fix: Update ids of labels to use 'guid' so unit test works properly
* fix: update localized text in text-track-settings-font & text-track-settings
* Mark some methods as private
* fix: modify content of modal 'text-track-settings' to change language properly
* fix: add missing '.' in jsdoc of text-track components
* feature: add unit test for 'text-track-select' component
* Add test for Spatial Navigation
* test(player): Add minor test related to 'handleBlur' & 'handleFocus'
* feat(player): Remove unrequired files from 'react-video-nav-app'
* test(player): Add small test to check if 'getPositions' returns required properties
* test(player): add test to verify 'getPositions()' properties are not empty
* Add missing tests for performMediaAction_ and move
* test(player): add test to for 'component.js' related to 'handleBlur'
* test(player): add minor test in component related to test keypress propagation event
* test(player): add test for component related to 'getIsAvailableToBeFocused' function
* test(player): add test for Modal Dialog related to call function of spatial navigation
* test(player): add tests for 'spatial-navigation-key-codes'
* test(player): add tests for keycodes related to 'should return event name if keyCode is not available'
* test(player): add minor test for case when not required parametters are passed
* test(player): add test for 'caption-settings-menu-item'
* feat(player): remove 'react-video-nav-app'
* Move handleFocus and handleBlur from components.js to spatial-navigation.js
* refactor(player): refactor 'searchForTrackSelect' to be handled in the spatial navigation
* remove unrequired code in function 'searchForTrackSelect'
* update documentation comment to be in pair to its current use
* remove spatial navigation keydown from modal dialog and move it to spatial navigation class, modify the modal-dialog test accordingly
* remove useless tests
* Remove caption-settings-menu-item.test.js
* Add minor test to 'searchForTrackSelect' in spatial-navigation.test.js
* Add unit test for back key and listening to events
---------
Co-authored-by: CarlosVillasenor <carlosdeveloper9@gmail.com>
Co-authored-by: Dzianis Dashkevich <98566601+dzianis-dashkevich@users.noreply.github.com>
Co-authored-by: Walter Seymour <walterseymour15@gmail.com>
Co-authored-by: Carlos Villasenor Castillo <cvillasenor@Carloss-MacBook-Pro.local>
https://github.com/videojs/http-streaming/pull/1408 updated 608 captions to default to be left aligned. This may be unwanted by some folks and we should provide an easier way to force them to be centered.
This PR adds a player level class that will override the text alignment to be `center`. It also overrides the `width` to `80%` because otherwise the cue box isn't set up correctly to be 10% from the right of the display area (a side effect of hardcoding a width value and using inset in the generation of the cues).