Creates a new THEOplayer UI container element.
The player configuration. Will be passed to the ChromelessPlayer constructor to create the underlying THEOplayer instance. Can also be set later on through the UIContainer.configuration property.
StaticREADY_Fired when the backing player is created, and the UIContainer.player property is set.
Whether the player should attempt to automatically start playback.
Whether the player is casting to a remote receiver.
The player configuration.
Used to create the underlying THEOplayer instance.
The device type, either "desktop", "mobile" or "tv".
The minimum length (in seconds) of a livestream's sliding window for the stream to be DVR and its stream type to be set to "dvr".
Whether the player is ended.
Whether to automatically adjusts the player's height to fit the video's aspect ratio.
Whether the UI is in fullscreen mode.
Whether the player's audio is muted.
Whether the player is paused.
The underlying THEOplayer player instance.
This is constructed automatically as soon as a valid configuration is set.
The player's current source.
The stream type, either "vod", "live" or "dvr".
If you know in advance that the source will be a livestream, you can set this property to avoid a screen flicker when the player switches between its VOD-specific and live-only controls.
use SourceDescription.streamType instead.
Whether the user has stopped interacting with the UI and is considered to be "idle".
The timeout (in seconds) between when the user stops interacting with the UI, and when the user is considered to be "idle".
Invoked when the component is added to the document's DOM.
In connectedCallback() you should setup tasks that should only occur when
the element is connected to the document. The most common of these is
adding event listeners to nodes external to the element, like a keydown
event handler added to the window.
connectedCallback() {
super.connectedCallback();
addEventListener('keydown', this._handleKeydown);
}
Typically, anything done in connectedCallback() should be undone when the
element is disconnected, in disconnectedCallback().
Invoked when the component is removed from the document's DOM.
This callback is the main signal to the element that it may no longer be
used. disconnectedCallback() should ensure that nothing is holding a
reference to the element (such as event listeners added to nodes external
to the element), so that it is free to be garbage collected.
disconnectedCallback() {
super.disconnectedCallback();
window.removeEventListener('keydown', this._handleKeydown);
}
An element may be re-connected after being disconnected.
StaticshadowOptions used when calling attachShadow. Set this property to customize
the options for the shadowRoot; for example, to create a closed
shadowRoot: {mode: 'closed'}.
Note, these options are used in createRenderRoot. If this method
is customized, options should be respected if possible.
ProtectedcreateProtectedrenderInvoked on each update to perform rendering tasks. This method may return
any value renderable by lit-html's ChildPart - typically a
TemplateResult. Setting properties inside this method will not trigger
the element to update.
StaticstylesArray of styles to apply to the element. The styles should be defined
using the css tag function, via constructible stylesheets, or
imported from native CSS module scripts.
Note on Content Security Policy:
Element styles are implemented with <style> tags when the browser doesn't
support adopted StyleSheets. To use such <style> tags with the style-src
CSP directive, the style-src value must either include 'unsafe-inline' or
nonce-<base64-value> with <base64-value> replaced be a server-generated
nonce.
To provide a nonce to use on generated <style> elements, set
window.litNonce to a server-generated nonce in your page's HTML, before
loading application code:
<script>
// Generated and unique per request:
window.litNonce = 'a1b2c3d4';
</script>
ProtectedfirstInvoked when the element is first updated. Implement to perform one time work on the element after update.
firstUpdated() {
this.renderRoot.getElementById('my-text-area').focus();
}
Setting properties inside this method will trigger the element to update again after this update cycle completes.
The container element for a THEOplayer UI.
This element provides a basic layout structure for a general player UI, and handles the creation and management of a THEOplayer player instance for this UI.
Usage
<theoplayer-ui>element.<theoplayer-ui>. Set theirslotattribute to one of the defined slots (see below) to place them in the layout.configurationattribute or property to a valid player configuration.sourceattribute or property to a valid stream source.Customization
This element does not provide any UI elements by default, you need to add all elements as children of the
<theoplayer-ui>element. If you're looking for a simple out-of-the-box player experience instead, see<theoplayer-default-ui>.The styling can be controlled using CSS custom properties (see below).
Custom Element
<theoplayer-ui>Attributes
configurationThe THEOplayer UIPlayerConfiguration, as a JSON string.
sourceThe THEOplayer SourceDescription, as a JSON string.
fluidIf set, the player automatically adjusts its height to fit the video's aspect ratio.
mutedIf set, the player starts out as muted. Reflects
ui.player.muted.autoplayIf set, the player attempts to automatically start playing (if allowed).
device-typeThe device type, either "desktop", "mobile" or "tv". Can be used in CSS to show/hide certain device-specific UI controls.
mobileWhether the user is on a mobile device. Equivalent to
device-type == "mobile".tvWhether the user is on a TV device. Equivalent to
device-type == "tv".stream-typeThe stream type, either "vod", "live" or "dvr". Can be used to show/hide certain UI controls specific for livestreams, such as a
<theoplayer-live-button>. If you know in advance that the source will be a livestream, you can set this attribute to avoid a screen flicker when the player switches between its VOD-specific and live-only controls.user-idle(readonly)Whether the user is considered to be "idle". When the user is idle and the video is playing, all slotted UI elements will be hidden (unless they have the
no-auto-hideattribute).user-idle-timeoutThe timeout (in seconds) between when the user stops interacting with the UI, and when the user is considered to be "idle".
dvr-thresholdThe minimum length (in seconds) of a livestream's sliding window for the stream to be DVR and its stream type to be set to "dvr".
paused(readonly)Whether the player is paused. Reflects
ui.player.paused.ended(readonly)Whether the player is ended. Reflects
ui.player.ended.casting(readonly)Whether the player is casting. Reflects
ui.player.cast.casting.playing-ad(readonly)Whether the player is playing a linear ad. Reflects
ui.player.ads.playing.has-error(readonly)Whether the player has encountered a fatal error.
has-first-play(readonly)Whether the player has (previously) started playback for this stream. Can be used in CSS to show/hide certain initial controls, such as a poster image or a centered play button.
Slots
(noname, default slot)A slot for controls at the bottom of the player. Can be used for controls such as a play button (
<theoplayer-play-button>) or a seek bar (<theoplayer-time-range>).top-chromeA slot for controls at the top of the player. Can be used to display the stream's title, or for a cast button (
<theoplayer-chromecast-button>).middle-chromeA slot for controls in the middle of the player (between the top and bottom chrome).
centered-chromeA slot for controls in the center of the player, layered on top of other controls.
centered-loadingA slot for a loading indicator in the center of the player, layered on top of other controls but behind the centered chrome.
menuA slot for extra menus (see
<theoplayer-menu>).errorA slot for an error display, to show when the player encounters a fatal error (see
<theoplayer-error-display>).CSS Custom Properties
--theoplayer-min-widthThe minimum width of the player. Defaults to
300px.--theoplayer-heightThe height of the player. Defaults to
unset. Ignored when--theoplayer-aspect-ratiois set.--theoplayer-aspect-ratioThe aspect ratio of the player. Defaults to
16 / 9. When fluid is set, this is automatically set to the video's natural aspect ratio. Set this tonone(or any invalid<length>) to disable, for example when you want to use--theoplayer-heightinstead.--theoplayer-backgroundThe background color of the player. Defaults to
#000.--theoplayer-text-colorThe text color of a control. Defaults to
#fff.--theoplayer-text-font-sizeThe font size of any text inside a control. Defaults to
14px.--theoplayer-control-heightThe height of a control. Defaults to
24px.--theoplayer-control-paddingThe padding around a control. Defaults to
10px.--theoplayer-video-border-radiusThe border radius of the
<video>element. Defaults to0.--theoplayer-video-object-fitThe
object-fitof the<video>element. Defaults tocontain.--theoplayer-control-backdrop-backgroundThe background shown behind all controls. Defaults to
transparent.--theoplayer-menu-backdrop-backgroundThe background of the menu layer. Defaults to
rgba(0, 0, 0, 0.5).--theoplayer-menu-layer-paddingPadding of the menu layer. Defaults to
10px.--theoplayer-menu-min-widthMinimum width of the menu (desktop). Defaults to
200px.--theoplayer-error-backgroundThe background of the error layer shown when the player has a fatal error. Defaults to
rgba(0, 0, 0, 0.5).