All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
3.76.0 - 2024-12-20
- Seek preview thumbnails exceeding the UI dimensions when default size is increased
3.75.0 - 2024-11-19
- Potential performance impact caused by forced layout reflows
3.74.0 - 2024-10-24
- Dpad keymap for Android devices
3.73.0 - 2024-09-06
Component
now has aViewMode
that can either bePersistent
orTemporary
selectbox
dropdown not closing in Safari when the UI is hidden
selectbox
now sets itsViewMode
toPersistent
whenever and as long as the select-dropdown is shownuicontainer
andsettingspanel
will no longer auto-hide if there are any components that are in thePersistent
view mode
3.72.0 - 2024-08-30
- Dutch (nl) subtitles
3.71.0 - 2024-08-28
- Link to API docs in README
3.70.0 - 2024-08-21
- Support for a new placeholder
{adBreakRemainingTime}
in AdMessageLabel that displays the remaining time in an ad break. Documentation on usage.
3.69.0 - 2024-08-14
- API doc generation and publishing. The API doc from the UI can be found here
3.67.0 - 2024-07-03
- Missing changelog entries of
3.65.0
and3.66.0
release versions
3.66.0 - 2024-07-01
- Playground demo page to include checkbox to enable/disbale ads
- Store basic configuration of playground demo page in localStorage
3.65.0 - 2024-06-24
- Eco Mode toggle button
3.64.0 - 2024-05-28
Component
instances are now assigned to theirHTMLElements
for easier accessing
- Two touch interactions needed to skip an ad or open the click through link
3.63.0 - 2024-05-17
QuickSeekButton
control bar component for jumping +/- a configurable number of seconds (10 second default)
3.62.0 - 2024-05-06
- No subtitle is shown when switching between different tracks
3.61.0 - 2024-04-23
ControlBar
not auto-hiding whenUIConfig.disableAutoHideWhenHovered
is set totrue
on some touch screen devices
3.60.0 - 2024-04-16
- Type export for
UIVariant
interface
3.59.0 - 2024-04-12
UIContainerConfig.hideImmediatelyOnMouseLeave
to immediately hide the UI when mouse leaves it
- Triggering UI release after merging a PR from a fork
3.58.0 - 2024-04-08
UIConfig#seekbarSnappingEnabled
config option to enable/disable the play head snapping to markers on the seek bar when seeking near them. Default istrue
.
3.57.0 - 2024-03-28
disableStorageApi
config option
- Subtitle settings not being retained when the UI variant switches
3.56.0 - 2024-03-26
localStorage
availability check to not create a test-entry anymore
3.55.0 - 2024-03-21
- Automatically add compare link in changelog file in relase workflow
- Missing compare link in the changelog file
3.54.0 - 2024-02-01
- FCC subtitle settings menu showing two options with the same value
- Invalid release workflow file
3.53.0 - 2024-01-03
- Automate release on every PR merge to develop
3.52.2 - 2023-11-23
- Potential name clashing in CSS animations due to missing
bmpui
prefix
3.52.1 - 2023-11-13
- Crash when receiving a
SourceLoaded
event during scrubbing
3.52.0 - 2023-09-25
- When having a spatial navigation and using a mouselike device, components will lose focus when the mouse leaves the hovered component. Spatial navigation will continue at the last active component when using arrow keys again.
3.51.0 - 2023-09-18
- On seek/timeshift operations the UI will only remove subtitle cues which do not enclose the seek target instead of removing all.
3.50.0 - 2023-07-24
- Settings panel does not close on single tap on mobile devices
- Restoring volume on unmute not working when volume was changed through the player API
- Gulp
watch
task not working
3.49.0 - 2023-07-17
onActiveUiChanged
event on theUIManager
that is dispatched when the UI manager switches to a different UI variant- Readonly
currentUi
field on theUIManager
that exposes the activeUIInstanceManager
3.48.0 - 2023-07-03
- When more than one UI with spatial navigation is managed by the UI manager, all UIs would handle key events, instead of only the active one.
3.47.0 - 2023-05-17
- Updated package dependencies.
3.46.0 - 2023-03-22
- Config option
forceSubtitlesIntoViewContainer
to handle overflowing subtitle labels
3.45.0 - 2023-03-06
- Scrubbing during a FaceTime call automatically creates a SharePlay suspension to not synchronize scrubbing to other participants.
3.44.0 - 2023-02-13
- Circular dependency in the import of
AudioTrackListBox
betweenmain.ts
anduifactory.ts
3.43.0 - 2023-02-06
UIConfig.enterFullscreenOnInitialPlayback
to enter fullscreen when clickingPlaybackToggleButton
orHugePlaybackToggleButton
to initiate the initial playback
3.42.0 - 2023-01-30
- Language localization for Spanish
3.41.0 - 2023-01-12
- Export Localization and SpatialNavigation to use in external UI configuration
3.40.0 - 2022-12-20
- Support for spatial navigation
- SmartTV UI via
UIFactory.buildDefaultTvUI
- Node.js from 10 to 16
- Typescript from ^3.9.6 to 4.3
3.39.0 - 2022-12-01
display
method onErrorMessageOverlay
to enable usage for application errors without a player error- Replay button which can be used within the controlbar and works also during playback
- Unnecessary DOM element creation on release
3.38.0 - 2022-08-30
- Duration format not getting updated from
mm:ss
tohh:mm:ss
3.37.0 - 2022-04-12
- Incorrect line alignment for subtitle cues from WebVTT tracks.
- Incorrect edges of reference for vertical writing cues in block positioning from WebVTT tracks.
- An empty line is added in vertical subtitle cues.
3.36.0 - 2022-03-15
- Seek preview is now configurable via
UIConfig.enableSeekPreview
orSeekBarConfig.enableSeekPreview
3.35.0 - 2022-03-01
- npm install failure on node 16
3.34.0 - 2022-02-16
- Incorrect aria-label on playbackbutton toggle
3.33.0 - 2022-02-01
- Support for providing custom
aria-label
whenListBox
is used.
- Updating the markers on live streams causing unhandled exception after player is destroyed.
3.32.0 - 2021-12-21
- The scrubber could jump to an old position during a seek operation when it was dragged.
- The Seekbar scrubber could jump to an old position on touch devices when the buffer updates during a seek operation.
3.31.0 - 2021-10-12
- Style reset for subtitle overlay element to prevent undesired CSS rules collisions.
3.30.0 - 2021-09-14
- Sort
AudioTracks
inside theAudioTrackSelectBox
and theAudioTrackListBox
by their identifier.
3.29.0 - 2021-08-19
- An empty line being added to subtitle boxes when VTT positioning attributes are present.
3.28.1 - 2021-06-25
- Broken build for previous release
3.28.0
3.28.0 - 2021-06-22 [YANKED]
- VTT cue positioning when position alignment is
end
orright
3.27.0 - 2021-04-11
- Support for
CueUpdate
events that were introduced in player v8.60.0
- Ad times (
remainingTime
,playedTime
andadDuration
) are not correctly rounded
3.26.0 - 2021-03-30
TouchEvent
error in seekbar controls when using the mouse on a touchscreen Windows device and IE/UWP
3.25.0 - 2021-03-16
- Build step to publish releases to npm via CI
- Support for Mobile V3
PlayerError
andSourceError
events
- Controls' focus highlighting is shown in case of non-keyboard interaction on some browsers/platforms
3.24.0 - 2021-02-16
- Support for
PlaylistTransition
event which is only present on Mobile V3
3.23.0 - 2021-01-14
- Default error message for code
1105
now uses the term "allowlist"
3.22.0 - 2020-12-22
UIConfig#disableAutoHideWhenHovered
config property to disable auto hiding of UI when an element inControlBar
is currently hovered
- Exported builder method for
modernUI
3.21.0 - 2020-12-03
'type' : 'button'
to buttons to prevent submitting forms
3.20.0 - 2020-11-25
- Wrapping possibly not enumerable properties of player object, like getters and setters
3.19.0 - 2020-11-10
- Subtitles not displayed in IE/tizen 2016 when no regions are present
3.18.0 - 2020-10-27
- Live-indicator stays active after stalling in live streams
3.17.0 - 2020-08-18
- Subtitle positioning when small screen UI is used and vtt properties are present
SettingsPanel
goes blank sometimes when switching browser tab/window
3.16.0 - 2020-07-30
- Support for
images
onTimelineMarkers
- Changed
TimelineMarkers
rendering from using nooffset
andcss-border
towidth
andtranslateX
properties.
- Inconsistent
PlaybackToggleButton
state after transitioning between multipleAdBreak
s for the same position usingBitmovinAdvertisingModule
3.15.0 - 2020-07-23
- Listen to
ViewModeAvailabilityChanged
event and toggle visibility ofFullscreenToggleButton
andPictureInPictureToggleButton
accordingly - Support
TimelineMarkers
in live streams
- TypeScript update to 3.9.6
- Dead documentation link in README.md
FullscreenToggleButton
being visible althoughViewMode.Fullscreen
is not available- Vertical text alignment in the
MetadataLabel
for theMetadataLabelContent.Title
in theSmallScreenUI
- Seekbar snapping range is now configurable
- Subtitles partially hidden by player controls
- TTML
displayAlign = after
styling case
- TTML subtitles region alignment
- Position alignment for VTT subtitles
- Default selection not highlighted in AudioTrackListBox and SubtitleListBox
- Clear subtitles list when source is unloaded
- Support for regions in VTT subtitles
- UI hiding when actively using seek or volume slider
- Empty background boxes with TTML subtitles on Chromecast
- Web Content Accessibility (WCAG) 2.0
- Keyboard controls for sliders when focused
onActive
andonInactive
not fired for rootSettingsPanelPage
whenSettingsPanel
was configured withhideDelay
of-1
- Automatic opening of the first select box when the
SettingsPanel
becomes visible on iOS devices
- UI flickering back and forth on live streams after ads
- Build errors when using the npm package
- Outdated live asset sample
- Localization
DurationChanged
event support
- Hide UI even a element in
ControlBar
is currently hovered
- Do not hide
SettingsPanel
inmodernSmallScreenUI
automatically
- Support for regions in TTML subtitles
- Thumbnail preview support for live streams
- UI no longer hides in
Prepared
,Paused
orFinished
state
- Ads UI not being hidden when the Player is unloaded during ad playback
PlaybackTimeLabelMode.RemainingTime
to display the remaining time of the content
- Improved documentation about time / number formats which can be used in
AdMessageLabel
placeholders - TypeScript update to 3.4.5
- Improved generic type inheritance of
Component
Config
s (#74)
- Incorrect calculation of
SettingsPanelPage
dimensions in transition animation - Navigation for more than two
SettingsPanelPage
s
- Support for player instances which inherits from the
BitmovinPlayer
ListBox
no longer recreates itself after the list was updated
- UI not hiding after selecting an item within a
ListBox
- Allow npm package to be imported in server side app without
navigator
error
- Wrong state for live indicator when a
startTime
value is provided within theSourceConfig
of the player
- Crash of
UIContainer.release
when initialized withhideDelay: -1
- AirPlay icon does not change into active state
- Dispatch last event of a rate-limited event sequence to
Event.subscribeRateLimited
listeners
- Inaccurate time within
SeekBarLabel
on seek preview
simple.html
to test plain UI CSS without Bootstrap
- Stopping timeshift offset updater of
SeekBar
when player is destroyed box-sizing
style ofSeekBar
andSeekBarLabel
UIContainerConfig.userInteractionEventSource
to allow tracking of user interaction events (which toggle the visibility of certain components like theControlBar
) on a custom element
- Avoid unnecessary updating of hidden
AdSkipButton
- Upgrade to Gulp 4 (#208)
- Default UI does not show any UI variant during an ad without UI requirement
- Support for
VideoQualityAdded
,VideoQualityRemoved
,AudioQualityAdded
,AudioQualityRemoved
events inAudioQualitySelectBox
/VideoQualitySelectBox
- Updated advertising UI support for player 8.1
- CSS selectors for all
SelectBox
components VolumeController
to control and manage volume and mute state by multipleComponent
s in a single placedisable()
/enable()
functionality toComponent
s- Preventing click event on a disabled
Button
- Advertising UI support
UIConditionContext.adRequiresUi
to distinguish if the current ad requires an external UI
UIConfig.playbackSpeedSelectionEnabled
is nowtrue
by default (as it was before v2.17.0)
- Deprecated
UIConditionContext#adClientType
as it's no longer supported by player v8
- Handling of
null
keys inSelectBox
(fixes subtitle deselection in IE11) - Unintended start of playback while scrubbing on seekbar
VolumeToggleButton
interfered player APIsetVolume
/mute
/unmute
calls
- Customization of output naming via CLI parameters (see
outputnames
ingulpfile.js
)
- Improved
Button
hit-boxes by changing margins to paddings Seekbar
/VolumeSlider
position markers changed from SVG to pure CSS to improve vertical alignment with barTimeout
rewritten for better efficiency
- Uncaught
PlayerAPINotAvailableError
inSeekBar
position updater when player is destroyed - Unresponsive UI when a user canceled connection establishment to a Cast receiver
- Avoid unnecessary animation when
BufferingOverlay
is hidden - Avoid unnecessary DOM modification when the text of a
Label
does not change - Positioning of
SettingsPanelPageOpenButton
in some browsers Timeout
could not be cleared from within the timeout callback function
- Positioning of
SeekBar
/VolumeSlider
markers improved - Crash of
UIManager.release
when player instance was already destroyed
Major release for Bitmovin Player 8, mainly adjusted to the changed player API. For player 7, please use UI v2.x.
- Support for image subtitles
- Paging support for
SettingsPanel
viaSettingsPanelPage
to enable navigation to sub-settings (#119) - Default
ErrorMessageTranslator
with english error messages for theErrorMessageOverlay
UIConfig.errorMessages
to allow customization of error messages via customErrorMessageTranslator
|ErrorMessageMap
play
andpause
calls during seeking now have the issuerui-seek
instead ofui
- Extracted/renamed
UIManager.Factory
toUIFactory
- Moved
UIConfig
,TimelineMarker
, andUIRecommendationConfig
fromuimanager.ts
touiconfig.ts
- Replaced local player type definitions with type definitions from the bitmovin-player NPM package
- Everything deprecated in 2.x
- Player v7 feature detections and compatibility fallbacks
SubtitleSettingsPanel
in favour ofSubtitleSettingsPanelPage
to use with the new navigation feature ofSettingsPanel
- Player v6 legacy skin (
skin-legacy
) and its UI variants - Disabled the ads UI variants because there is no ads module in player v8 yet that requires a UI (ads UI will be reintroduced with an upcoming release)
- Type definitions are now generated correctly and referenced from
package.json
- Update timeline markers when loading a new source
- Flickering playback position indicator when switching to a live-stream
2.18.0 (2018-08-08)
- UI element
ListBox
to display multiple selectable items (#121) - Icon for subtitles
- Icon for audio tracks
- Demo section within the UI variants in the playground
- Demo with separate
SettingsPanel
s for subtitles and audio tracks UIContainerConfig.hidePlayerStateExceptions
option to configure player states in which the controls will not be hidden
- SmallScreenUI: Move
RecommendationOverlay
behindTitleBar
to avoid hiddenFullscreenToggleButton
in replay screen and prevent smartphone users from exiting fullscreen - SmallScreenUI: Do not hide controls in replay screen
2.17.1 (2018-08-01)
- Rendering of single-image thumbnails
- Local storage detection in Firefox
2.17.0 (2018-07-10)
AirPlayToggleButton
tomodernSmallScreenUI
for MacOS devicesPictureInPictureToggleButton
tomodernSmallScreenUI
for MacOS devicesUIConfig.playbackSpeedSelectionEnabled
option to show/hidePlaybackSpeedSelectBox
within theSettingsPanel
PlaybackSpeedSelectBox
is no longer visible within theSettingsPanel
by default
- Apply the IE/Firefox workaround of v2.16.0 to hide the hovered dropdown panel of a
SelectBox
also when the UI hides
2.16.0 (2018-06-27)
- Revert state of
PlaybackToggleButton
to paused if a play attempt is rejected (ON_WARNING 5008
; e.g. in case of autoplay) UIManager
API to dynamically manageSeekBar
markers:getTimelineMarkers
,addTimelineMarker
,removeTimelineMarker
(#103)- Interval marking with added property
TimelineMarker.duration
(#103) - Custom CSS classes on markers in
SeekBar
andSeekBarLabel
throughTimelineMarker.cssClasses
(#103) ListSelectorConfig.filter
to filter items of auto-populatedSelectBox
implementations, e.g.SubtitleSelectBox
(#117)ListSelectorConfig.translator
to translate item labels of auto-populatedSelectBox
implementations, e.g.SubtitleSelectBox
(#117)
- Animate
HugePlaybackToggleButton
only on state changes (not when UI is initially loaded) - Hide
HugePlaybackToggleButton
play animation whenconfig.playback.autoplay
is enabled or the player is already playing - Consolidated configuration management of
UIConfig
from components intoUIManager
- Configuration from the player source now takes precedence over the configuration passed into the
UIManager
- IE & Firefox could leave the dropdown panel of an active/hovered
SelectBox
floating after the parent container (e.g.SettingsPanel
) was hidden
2.15.0 (2018-06-08)
UIManager
API to switch UI variants:UIConfig.autoUiVariantResolve
,onUiVariantResolve
event,getUiVariants
,resolveUiVariant
,switchToUiVariant
(#102)
2.14.0 (2018-05-02)
License change from LGPLv3 to MIT.
- Subscribe to the
ON_PLAYBACK_SPEED_CHANGED
event to display the correct speed in thePlaybackSpeedSelectBox
- Prefer
on
/off
overaddEventHandler
/removeEventHandler
with player version 7.8+ to avoid deprecation log messages data-bmpui-volume-level-tens
attribute onVolumeToggleButton
for more granular styling of the volume icononClass
/offClass
configuration properties inToggleButtonConfig
to allow customizing the state marker CSS class names
- Removed
bmpui-low
marker class fromVolumeToggleButton
(replaced bydata-bmpui-volume-level-tens
attribute) - Renamed
VolumeToggleButton
mute state marker CSS class names fromoff
/on
tounmuted
/muted
- Change
VolumeToggleButton
into mute state when the player volume is set to0
(avoids transitions from zero volume to muted) - Set player volume to
10
when the player is unmuted and the volume is below10
(avoids transitions from muted to zero volume) - Removed volume level animation from
VolumeSlider
- Initialize
ToggleButton
state at UI configuration SettingsPanel
attempted to checkisActive
on non-SettingsPanelItem
components (e.g.CloseButton
)- User interaction passthrough from
HugePlaybackToggleButton
to player when autoplay is blocked SeekBar
bar levels and scrubber positioning in Android 4.4 WebView
2.13.0 (2018-03-15)
- Consistent UI's prepared state detection by only looking at the player's ready state
2.12.1 (2018-02-21)
- Flickering heights of
SeekBar
andVolumeSlider
bar indicators - "Concurrent" modification of event handlers in
EventDispatcher
when a handler is unsubscribed by a handler
2.12.0 (2018-01-22)
- Execute volume control availability test on dummy media element to prevent unexpected interference with muted autoplay
- Positioning of
SeekBar
markers was broken due to style changes in 2.11.0
2.11.0 (2017-12-22)
- Update
SeekBar
playback position of live streams with DVR window while playback is paused
- Switch off live edge indicator in
PlaybackTimeLabel
when a live stream is paused
- Stop
SeekBar
smooth playback position updates onON_PLAYBACK_FINISHED
- Centered
SeekBar
andVolumeSlider
drag handles and make sure that all layers of the underlying bar have the same height
2.10.5 (2017-11-20)
PlaybackToggleButton
now also listens toON_SOURCE_LOADED
andON_SOURCE_UNLOADED
to properly update the playback state when the source changes- Update package dependencies
- Apply CEA-608 style to subtitles before they are added to the DOM to avoid "style flickering"
- Unnecessary line breaks in CEA-608 texts
2.10.4 (2017-10-30)
- Remove
nowrap
from CEA-608 style to correctly render multiline cues PlaybackToggleButton
now also listens toON_PLAYING
in addition toON_PLAY
2.10.3 (2017-10-20)
- Handling of whitespaces in CEA-608 texts
2.10.2 (2017-10-19)
- Rewritten CEA-608 text layouting
- Greatly simplified CEA-608 CSS style (
.{prefix}-ui-subtitle-overlay.{prefix}-cea608
) - Calculate CEA-608 font size only with active CEA-608 cues
- Overlapping CEA-608 texts with large player aspect ratios
2.10.1 (2017-10-13)
- Removed
VolumeControlButton
'sVolumeSlider
slide-in animation in the legacy skin to fix the slider knob at 100% bug
- Vertical
VolumeSlider
knob in legacy skin was not visible when set to a low volume - Legacy skin's
VolumeSlider
knob was always rendered at 100% when appearing after being hidden - Avoid
ItemSelectionList
DOM recreation on item selection to avoid unexpected events (e.g.mouseenter
)
2.10.0 (2017-09-14)
- Update
AudioQualitySelectBox
/VideoQualitySelectBox
entries when the period of a source changes
- Export bundled UI (
bitmovinplayer-ui.js
) as UMD module (instead of global module)
- Fix
Uncaught TypeError
whenrequire
ing UI before player - Don't write UI into global namespace (
bitmovin.playerui
) when loaded as module withrequire
2.9.0 (2017-08-24)
- Support CEA-608 subtitle positioning
- Added
ui
issuer parameter to all applicable player API calls (seek, timeshift, mute, unmute, setVolume)
- Unified player API issuer parameter to always be
ui
instead ofui-{componentName}
- Select correct audio track after updating the items in
AudioTrackSelectBox
2.8.3 (2017-08-01)
- Use new quality change API in
AudioQualitySelectBox
andVideoQualitySelectBox
for player >= 7.3.1 (selection is now synced with player-APIset[Audio|Video]Quality
calls)
2.8.2 (2017-08-01)
Release of this version went wrong and it was unpublished from NPM.
- Fix
animate-slide-in-from-bottom
SCSS mixin (fixes missingVolumeSlider
slide-in animation ofVolumeControlButton
in the legacy skin) - Fire
ON_READY
event if UI is loaded after player is ready to initialize all components correctly
2.8.1 (2017-07-26)
- Early quality selection in
AudioQualitySelectBox
/VideoQualitySelectBox
beforeON_READY
broke players <= 7.2.5
2.8.0 (2017-07-25)
- Adds a
VolumeToggleButton
to the small screen UI
- Moved all subtitle styling to CSS (default subtitle style is not overwritten any longer)
- Fix clearing of container components with
Container#removeComponents
(fixes sticky/duplicate subtitle issue) - Fix updating container components with
Container#updateComponents
(fixes empty subtitles in IE11) - Fix handling of duplicate subtitle cues (same text at same time) in
SubtitleOverlay
(fixes another sticky subtitle issue) - Fix clearing of recommendations in
RecommendationOverlay
(fixes duplicate recommendations issue) - Reset selected value in
ListSelector
when the items are cleared - Updating selected value in
PlaybackSpeedSelectBox
when player is ready - Fix video quality options for progressive streams (removed 'auto' option, preferred quality preselected)
2.7.1 (2017-07-06)
- Throttled high-frequency API calls to the player from the
VolumeSlider
andSeekBarLabel
2.7.0 (2017-06-28)
- Add support for FCC compliant closed captions. Adds options on how captions are displayed, and a SubtitleSettingsPanel with the possibility to update the settings while playing the video.
- Add UI version property to global namespace (
bitmovin.playerui.version
) - Add
UIConfig#container
config property to specify a custom place in the DOM where the UI will be put into. Can be used to place it somewhere else beside the default player figure.
2.6.0 (2017-06-27)
- Add an option to keep the UI always visible by setting the
UIContainerConfig#hideTimeout
to -1
- Thumbnail size is no longer determined by the physical image size and can now be arbitrarily set by CSS
2.5.1 (2017-06-26)
No functional changes. Improves player API declarations, code linting configuration, and adds contribution guidelines.
2.5.0 (2017-06-13)
- Add
UIConditionContext#adClientType
to be able to switch to different UI variants for different ad types - Add
UIConditionContext#isPlaying
and resolve UI variants onON_PLAY
andON_PAUSED
to be able to switch between different UI variants for playing and paused states
- NPM entry point changed from browserified standalone distributable file to CommonJS module (NPM package can now be used with Node and Browserify out-of-the-box)
- Deprecated
UIConditionContext#isAdWithUI
, useadClientType
instead (isAdWithUI
equalscontext.adClientType === 'vast'
)
- Stop rendering loop of the
ErrorMessageOverlay
background canvas when UI is released - Fix wrapped control bar in modern skin on iOS 8.2
2.4.0 (2017-06-08)
- Resolve UI variants on
ON_READY
- Improved UI variant switching by detecting the end of an ad when loading a new source during ad playback
- Fix subtitle line breaking
2.3.0 (2017-06-01)
UI does not crash any more when used with player 7.0, all other restrictions explained in 2.0.0 still apply.
- Display subtitles in
SubtitleOverlay
with HTML markup if available instead of the plain text - Update
AudioTrackSelectionBox
on newON_AUDIO_ADDED
/ON_AUDIO_REMOVED
events in player 7.1.4 / 7.2.0
- Detect live streams and time shift availability when configuring dependent components (
PlaybackTimeLabel
,PlaybackToggleButton
,SeekBar
) to adjust their mode independently from the player state changes - Skip configuration of
PictureInPictureToggleButton
andAirPlayToggleButton
and hide the components if functionality is not supported (when used with player 7.0)
- Fix settings panel closing when an option select box is open
- Fix crash of Gulp
serve
task on HTML file changes - Fix
SeekBar
in legacy skin did not hide onhide()
- Fix missing audio track selection box in Safari with player 7.1.2 and 7.1.3
- Fix error in
SubtitleOverlay
when trying to remove an already cleared subtitle cue
2.2.0 (2017-05-05)
- Add
Container#removeComponents()
to remove all child components of a container - Display multiple subtitle cues in parallel in
SubtitleOverlay
- Add
getText()
method,isEmpty()
method, andonTextChanged
event toLabel
- Add
TitleBarConfig#keepHiddenWithoutMetadata
to keepTitleBar
hidden if metadata labels are empty
- Do not display
TitleBar
in Cast UI when it does not contain any metadata (title/description)
- Clear
SubtitleOverlay
when playback is finished
2.1.1 (2017-05-03)
- Update playback position / volume indicator position in
SeekBar
/VolumeSlider
when component is shown
2.1.0 (2017-05-02)
- Add
remote-control
marker class toUIContainer
that is applied during an active remote control session (e.g. Cast session) - Display play/pause button in smallscreen UI during an active remote control session (e.g. Cast session)
- Adjust
CastStatusOverlay
font size and remove Cast icon (makes place for the playback toggle) in smallscreen UI - Move
PlaybackToggleOverlay
overCastStatusOverlay
in smallscreen UI to enable playback toggling
- Fix hiding of
HugePlaybackToggleButton
during Cast session initialization
2.0.4 (2017-04-28)
- Add
ErrorMessageOverlayConfig#messages
to translate and customize error messages in theErrorMessageOverlay
2.0.3 (2017-04-25)
No functional changes. Fixes typo in the changelog.
2.0.2 (2017-04-25)
No functional changes. Adds a prepublish
script to the NPM package so an incomplete version like 2.0.0
cannot happen to be published again.
2.0.1 (2017-04-24)
No functional changes. Fixes an incomplete NPM package published for 2.0.0
, which has been unpublished.
2.0.0 (2017-04-24)
Version 2.0 of the UI framework is built for player 7.1. If absolutely necessary, it can still be used with player 7.0, but certain restriction apply: Casting will not work correctly due to API improvements and a removed workaround, new components based on added API calls will fail (AirPlayToggleButton
, PictureInPictureToggleButton
) and need to be removed from the default UI, seeking before playback won't work due to a removed workaround, and audio/video quality changes through the API won't be picked up by the select boxes due to misnamed events.
- Add
AirPlayToggleButton
for AirPlay support on MacOS and iOS (player 7.1+) - Add
PictureInPictureToggleButton
for picture-in-picture support on MacOS and iOS (player 7.1+) - Add dynamic switching between different UIs based on various context properties (screen size, ads, mobile, fullscreen)
- Add new
UIManager
constructor(player: Player, uiVariants: UIVariant[], config?: UIConfig)
for dynamic switching - Add new
UIManager
constructor(player: Player, ui: UIContainer, config?: UIConfig)
for simple cases with only one UI instance - Automatically display smallscreen UI on mobile devices in default modern UI
- Add new
- Read metadata (title/description) from player source config if metadata in
UIConfig
is empty - Refresh metadata when a new source is loaded into the player
- Add
release()
method to components to release resources and dependencies created duringconfigure(...)
- Add
onConfigured
event toUIManager
which gets fired once UI is ready (configured and added to DOM) - Detect illegal circular references in UI component tree and throw error
- Add
VolumeSliderConfig#hideIfVolumeControlProhibited
flag to automatically hide the volume slider on platforms which prohibit programmatic volume control (currently only iOS) - Add mouse hover-state to
Component
isHovered()
returns the current hover-stateonHoverChanged
event withComponentHoverChangedEventArgs
is fired when the hover state changes
- Add
Spacer
component that just takes up space - Read timeline markers from player source config (
source.markers
) ifUIConfig
does not contain markers - Refresh timeline markers when a source is loaded/unloaded
- Read recommendations from player source config (
source.recommendations
) ifUIConfig
does not contain recommendations - Refresh
RecommendationOverlay
when a source is loaded/unloaded - Clear
MetadataLabel
when source is unloaded - Add
SeekBarConfig#smoothPlaybackPositionUpdateIntervalMs
to configure or disable smooth playback position updates on theSeekBar
- Delay displaying of the
BufferingOverlay
by 1 second to bypass short stalls without the distraction of the overlay (configurable withBufferingOverlayConfig#showDelayMs
)
- Update Cast support for new Cast implementation in player 7.1
- Permanently display UI during a Cast session
- No more use of the player's global namespace
- Hide
ErrorOverlay
when a new source is loaded - Hide
BufferingOverlay
when source is unloaded - Do not attempt to show/hide components if they are already in the target state
- Display stop icon instead of pause icon on the
PlaybackToggleButton
for live streams without timeshift - UI is no longer hidden while a control in the controlbar is hovered
- Instead of requiring two touches to start playback, the first touch now reveals UI and triggers playback at the same time (
UIContainer
withHugePlaybackToggleButton
) - Decreased
HugePlaybackButton
,ErrorMessageOverlay
BufferingOverlay
, andSubtitleOverlay
font size in smallscreen UI - Hide
RecommendationOverlay
when source is unloaded - Listen to
ON_[AUDIO|VIDEO]_DOWNLOAD_QUALITY_CHANGE
events instead of*_CHANGED
inAudioQualitySelectBox
/VideoQualitySelectBox
(download events were broken/misnamed in player 7.0)
- Remove all transitions and animations from Cast receiver UI due to low rendering performance on Chromecast devices
- Remove Cast workarounds/hacks required for old Cast implementation in player 7.0
- Remove seek-before-play workaround (now directly supported by player 7.1)
- Remove
UIManager
constructor(player: Player, playerUi: UIContainer, adsUi: UIContainer, config?: UIConfig)
, use new constructor withUIVariant[]
instead - Disable smooth seekbar update in Cast receiver UI for increased Chromecast performance
- Fix seekbar position indicator when seeking before playback
- Fix unloading/releasing of UI
- Fix wrong volume slider / seekbar positioning on UI startup and after loading a source
- Fix missing component exports to global JS namespace
- Fix timeshift support on live streams where timeshifting is not available from the beginning
- Fix wrongly detected live state of HLS streams in Chrome on Android
- Fix seekbar position update when player is already playing at UI initialization (e.g. when autoplay is enabled)
- Fix wrong
UIContainer
playback state class when creating UI in other states than idle and prepared - Correctly initialize
VolumeToggleButton
low/high volume icon state
1.0.1 (2017-02-10)
- Fix thumbnail preview on the seekbar label
- First release