UNPKG

shaka-player

Version:
129 lines (110 loc) 3.34 kB
/*! @license * Shaka Player * Copyright 2016 Google LLC * SPDX-License-Identifier: Apache-2.0 */ goog.provide('shaka.ui.ContentTitle'); goog.require('shaka.ads.Utils'); goog.require('shaka.ui.Controls'); goog.require('shaka.ui.Element'); goog.require('shaka.ui.Utils'); goog.require('shaka.util.Dom'); goog.require('shaka.util.TXml'); /** * @extends {shaka.ui.Element} * @final * @export */ shaka.ui.ContentTitle = class extends shaka.ui.Element { /** * @param {!HTMLElement} parent * @param {!shaka.ui.Controls} controls */ constructor(parent, controls) { super(parent, controls); /** @private {shaka.extern.IQueueManager} */ this.queueManager_ = this.controls.getQueueManager(); /** @type {!HTMLElement} */ this.title_ = shaka.util.Dom.createHTMLElement('div'); this.title_.classList.add('shaka-content-title'); this.parent.appendChild(this.title_); this.eventManager.listen(this.player, 'unloading', () => { this.title_.textContent = ''; shaka.ui.Utils.setDisplay(this.title_, false); }); this.eventManager.listen(this.player, 'loading', () => { this.title_.textContent = this.video.title || ''; this.setupInfoFromQueue_(); shaka.ui.Utils.setDisplay(this.title_, true); }); this.eventManager.listen( this.adManager, shaka.ads.Utils.AD_STARTED, () => { shaka.ui.Utils.setDisplay(this.title_, !this.ad.isLinear()); }); this.eventManager.listen( this.adManager, shaka.ads.Utils.AD_STOPPED, () => { shaka.ui.Utils.setDisplay(this.title_, true); }); this.eventManager.listen(this.player, 'metadata', (event) => { const payload = event['payload']; if (!payload) { return; } let title; if (payload['key'] == 'TIT2' && payload['data']) { title = payload['data']; } if (title) { this.title_.textContent = title; } }); this.eventManager.listen(this.player, 'sessiondata', (event) => { if (event['id'] != 'com.apple.hls.title') { return; } const title = event['value']; if (title) { this.title_.textContent = title; } }); this.eventManager.listen(this.player, 'programinformation', (event) => { if (!event['detail']) { return; } const TXml = shaka.util.TXml; /** @type {!shaka.extern.xml.Node} */ const detail = /** @type {!shaka.extern.xml.Node} */(event['detail']); const titleNode = TXml.findChild(detail, 'Title'); if (titleNode) { const title = TXml.getContents(titleNode); if (title) { this.title_.textContent = title; } } }); } /** * @private */ setupInfoFromQueue_() { const queueItemMetadata = this.queueManager_.getCurrentItem()?.metadata; if (queueItemMetadata) { const title = queueItemMetadata['title']; if (title) { this.title_.textContent = title; } } } }; /** * @implements {shaka.extern.IUIElement.Factory} * @final */ shaka.ui.ContentTitle.Factory = class { /** @override */ create(rootElement, controls) { return new shaka.ui.ContentTitle(rootElement, controls); } }; shaka.ui.Controls.registerElement( 'content_title', new shaka.ui.ContentTitle.Factory());