{"version":3,"file":"React.js","sources":["../../../../src/ClassList.js","../../../../src/Component.js","../../../../src/Container.js","../../../../src/Control.js","../../../../src/PanelControl.js","../../../../src/PlayPause.js","../../../../src/PauseOverlay.js","../../../../src/BufferingOverlay.js","../../../../src/Utils.js","../../../../src/CurrentTime.js","../../../../src/Live.js","../../../../src/Duration.js","../../../../src/Slider.js","../../../../src/Progress.js","../../../../src/Volume.js","../../../../src/Toggle.js","../../../../src/Mute.js","../../../../src/Unmute.js","../../../../src/Fullscreen.js","../../../../src/SettingsButton.js","../../../../src/ListItem.js","../../../../src/Panel.js","../../../../src/PanelMenu.js","../../../../src/captionsettings/Home.js","../../../../src/captionsettings/Options.js","../../../../src/captionsettings/OptionsPanel.js","../../../../src/captionsettings/Color.js","../../../../src/captionsettings/BackgroundColor.js","../../../../src/captionsettings/BackgroundOpacity.js","../../../../src/captionsettings/CharacterEdgeStyle.js","../../../../src/captionsettings/FontColor.js","../../../../src/captionsettings/FontFamily.js","../../../../src/captionsettings/FontOpacity.js","../../../../src/captionsettings/FontSize.js","../../../../src/captionsettings/WindowColor.js","../../../../src/captionsettings/WindowOpacity.js","../../../../src/captionsettings/ScrollType.js","../../../../src/captionsettings/EdgeColor.js","../../../../src/captionsettings/EdgeOpacity.js","../../../../src/CaptionData.js","../../../../src/CaptionSettings.js","../../../../src/Quality.js","../../../../src/PlaybackRate.js","../../../../src/AudioTracks.js","../../../../src/SettingsPanel.js","../../../../src/ShareButton.js","../../../../src/SharePanel.js","../../../../src/CaptionToggleButton.js","../../../../src/JumpBack.js","../../../../src/JumpForward.js","../../../../src/Poster.js","../../../../src/Title.js","../../../../src/ErrorMsg.js","../../../../src/ContextMenu.js","../../../../src/Ads.js","../../../../src/Airplay.js","../../../../src/PiP.js","../../../../src/ChromeCast.js","../../../../src/Mode.js","../../../../src/ActiveState.js","../../../../src/UI.js","../../../../src/main.js"],"sourcesContent":["export default class ClassList {\n\n constructor(component, tokens = []) {\n this.component = component\n this.tokens = tokens\n }\n\n add(token, prepend = false) {\n if (this.contains(token))\n return\n\n if (prepend === true) {\n this.tokens.unshift(token)\n } else {\n this.tokens.push(token)\n }\n }\n\n contains(token) {\n return this.tokens.indexOf(token) !== -1\n }\n\n item(index) {\n return this.tokens[index] || null\n }\n\n remove(token) {\n const i = this.tokens.indexOf(token)\n if (i === -1)\n return\n this.tokens.splice(i, 1)\n }\n\n toggle(token) {\n if (this.contains(token)) {\n this.remove(token)\n } else {\n this.add(token)\n }\n }\n\n update(tokenMap) {\n for (let token in tokenMap) {\n if (tokenMap[token]) {\n this.add(token)\n } else {\n this.remove(token)\n }\n }\n\n let className = this.toString()\n if (className != this.component.state.className) {\n this.component.setState({className})\n }\n }\n\n toString() {\n return this.tokens.join(' ')\n }\n}\n","import ClassList from \"./ClassList.js\"\n\nexport default class Component extends React.Component {\n\n constructor (props, context) {\n super(props, context)\n\n this.state = {\n l10n: this.player.l10n\n }\n this.classList = new ClassList(this, this.props.classList)\n }\n\n static get contextTypes() {\n return {\n player: PropTypes.object,\n config: PropTypes.object,\n plugin: PropTypes.object\n }\n }\n\n get player() {\n return this.props.player || this.context.player\n }\n\n get config() {\n return this.props.config || this.context.config\n }\n\n get l10n() {\n return this.state.l10n\n }\n\n get plugin() {\n return this.context.plugin\n }\n\n get className() {\n let className = this.props.className || \"\"\n className += ` ${this.classList}`\n\n return className.trim()\n }\n\n get textContent() {\n return this.props.textContent || this.state.textContent\n }\n\n get children() {\n return this.props.children || []\n }\n\n get element() {\n return this.refs.element\n }\n\n get dom() {\n return this.element || ReactDOM.findNode(this)\n }\n\n get data() {\n return this.props.data || {}\n }\n\n get playerEventMap() {\n const events = []\n\n if (this.player == null)\n return events\n\n Object.values(akamai.amp.Events).forEach((type) => {\n let key = `on${type}`\n if (typeof this[key] != \"function\")\n return\n events.push({key: key, type: type})\n })\n\n return events\n }\n\n get propsList() {\n const { className, classList, data, textContent, ...props } = this.props\n return props\n }\n\n getLocalizedString(key) {\n return this.player.getLocalizedString(key)\n }\n\n onlanguagechange() {\n this.setState({l10n: this.player.l10n})\n }\n\n bindHandlers(handlers) {\n if (handlers == null || handlers.length <= 0)\n return\n\n handlers.forEach((handler) => {\n if (typeof this[handler] != \"function\")\n return\n this[handler] = this[handler].bind(this)\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n let state = this.state\n let props = this.props\n\n if (nextState != null) {\n for (let key in nextState) {\n if (nextState[key] != state[key]) {\n return true\n }\n }\n }\n\n // TODO: Is this needed?\n if (nextProps != null) {\n for (let key in nextProps) {\n if (nextProps[key] != props[key]) {\n return true\n }\n }\n }\n\n return false\n }\n\n componentWillMount() {\n this.playerEventMap.forEach((event) => {\n this[event.key] = this[event.key].bind(this)\n this.player.addEventListener(event.type, this[event.key])\n })\n }\n\n componentWillUnmount() {\n this.playerEventMap.forEach((event) => {\n this.player.removeEventListener(event.type, this[event.key])\n })\n }\n\n render() {\n return (\n
\n {this.textContent}\n {this.children}\n
\n )\n }\n}\n","import Component from \"./Component.js\"\n\nexport default class Container extends Component {\n constructor(props, context) {\n super(props, context)\n this.state.components = []\n }\n\n // TODO: HACK! This is a hack to get around IE 9-10 not inheriting static properties.\n // Remove this when these browsers are dropped, along with similar code\n // in other classes that extend Component and Container.\n static get contextTypes() {\n return super.contextTypes\n }\n\n get components() {\n return this.state.components\n }\n\n addComponent(component) {\n let components = this.state.components.slice()\n if (component.key == null)\n component.key = akamai.amp.Utils.createUID()\n components.push(component)\n this.setState({components})\n }\n\n removeComponent(component) {\n let components = this.state.components.filter((item) => item != component)\n this.setState({components})\n }\n\n clear() {\n this.setState({components: []})\n }\n\n appendChild(element) {\n let parent = this.dom\n if (parent == null)\n return\n parent.appendChild(element)\n }\n\n removeChild(element) {\n let parent = this.dom\n if (parent == null)\n return\n parent.removeChild(element)\n }\n\n get children() {\n return super.children.concat(this.state.components)\n }\n}\n","import Component from \"./Component.js\"\n\nexport default class Control extends Component {\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-icon\")\n this.classList.add(\"amp-control\")\n this.mouseFocus = false\n this.focused = false\n this.state.altText = this.altText\n\n this.bindHandlers([\"onMouseDown\", \"onMouseUp\", \"onMouseOver\", \"onMouseOut\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onClick\", \"onChange\"])\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n get aria() {\n return {\n \"aria-label\": this.title,\n role: \"button\"\n }\n }\n\n get propsList() {\n const { altText, ...props } = super.propsList\n props.className = this.className\n props.tabIndex = \"0\"\n props.onMouseDown = (event) => (this.props.onMouseDown || this.onMouseDown)(event)\n props.onMouseUp = (event) => (this.props.onMouseUp || this.onMouseUp)(event)\n props.onMouseOver = (event) => (this.props.onMouseOver || this.onMouseOver)(event)\n props.onMouseOut = (event) => (this.props.onMouseOut || this.onMouseOut)(event)\n props.onFocus = (event) => (this.props.onFocus || this.onFocus)(event)\n props.onBlur = (event) => (this.props.onBlur || this.onBlur)(event)\n props.onKeyDown = (event) => (this.props.onKeyDown || this.onKeyDown)(event)\n props.onClick = (event) => (this.props.onClick || this.onClick)(event)\n\n const aria = this.aria\n for (let key in aria) {\n props[key] = aria[key]\n }\n\n return props\n }\n\n get altText() {\n return this.props.altText || this.state.altText\n }\n\n get title() {\n return this.player.getLocalizedString(this.altText)\n }\n\n onMouseDown(event) {\n this.mouseFocus = true\n }\n\n onMouseUp(event) {\n this.mouseFocus = false\n }\n \n onMouseOver(event) {\n \t\n }\n \n onMouseOut(event) {\n \t\n }\n \n onFocus(event) {\n if (this.mouseFocus == true)\n return\n\n this.focused = true\n this.classList.update({\"amp-focus\": true})\n //Hack to Prevent overflow hidden elemnts to scroll up on tabbing\n this.player.viewComponent.scrollTop = 0\n }\n\n onBlur(event) {\n if (this.mouseFocus == true)\n return\n\n this.focused = false\n this.classList.update({\"amp-focus\": false})\n }\n\n onKeyDown(event) {\n if (this.mouseFocus == true)\n return\n\n this.onKeyPress(event)\n\n if (event.type == \"keypress\" && (event.keyCode == 13 || event.keyCode == 32))\n this.onAction()\n }\n\n onAction() {\n this.onClick()\n }\n\n onKeyPress(event) {\n\n }\n\n onClick(event) {\n\n }\n\n change(value) {\n const onChange = this.propsList.onChange || this.onChange\n if (typeof onChange != \"function\")\n return\n onChange(value)\n }\n\n render() {\n return (\n \n )\n }\n}\n","import Control from \"./Control.js\"\n\nexport default class PanelControl extends Control {\n constructor(props, context) {\n super(props, context)\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n get propsList() {\n const { panel, ...props } = super.propsList\n return props\n }\n\n get panel() {\n return this.plugin.refs[this.props.panel]\n }\n\n onClick() {\n this.panel.toggle()\n }\n\n onKeyDown(event) {\n this.panel.onKeyDown(event)\n }\n}\n","import Control from \"./Control.js\"\n\nexport default class PlayPause extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-playpause\", true)\n this.state.altText = \"MSG_PLAY\"\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onplaying() {\n this.setState({altText: \"MSG_PAUSE\"})\n }\n\n onpause() {\n this.setState({altText: \"MSG_PLAY\"})\n }\n\n onended() {\n this.setState({altText: \"MSG_REPLAY\"})\n }\n\n onClick() {\n const player = this.player\n switch (player.playState) {\n case \"ended\":\n this.plugin.replay()\n break\n\n case \"ready\":\n case \"paused\":\n \tplayer.play()\n break\n\n default:\n player.pause()\n break\n }\n }\n\n}\n","import Control from \"./Control.js\"\n\nexport default class PauseOverlay extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-pause-overlay\", true)\n this.state.altText = \"MSG_PLAY\"\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onClick() {\n const player = this.player\n switch (player.playState) {\n case \"ended\":\n this.plugin.replay()\n break\n\n default:\n player.play()\n break\n }\n }\n}\n","import Component from \"./Component.js\"\n\nexport default class BufferingOverlay extends Component {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-buffering-overlay\", true)\n this.classList.add(\"amp-icon\")\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n}\n","export default class Utils {\n\n /**\n * Takes a time in seconds and converts it to timecode.\n *\n * @param {Number} time The time in seconds to be formatted.\n * @return {String} A SMTP formatted string.\n */\n static formatTimecode(time, duration) {\n time = parseInt(time)\n if (isNaN(time)) {\n return \"00:00\"\n }\n var strTime = Utils.formatZeroFill(time % 60)\n time = parseInt(time / 60)\n strTime = Utils.formatZeroFill(time % 60) + \":\" + strTime\n time = parseInt(time / 60)\n if (time > 0) {\n strTime = Utils.formatZeroFill(time) + \":\" + strTime\n }\n if (duration >= 3600 && strTime.length === 5) {\n strTime = \"00:\" + strTime\n }\n return strTime\n }\n\n\n /**\n * Converts a time in seconds to a string and adds a zero in front of any number lower than 10.\n *\n * @param {Number} time The number to be zero filled.\n */\n static formatZeroFill(time) {\n var str = time.toString()\n if (time < 10) {\n str = \"0\" + str\n }\n return str\n }\n\n /**\n * @param {Number} number\n * The number to be rounded.\n *\n * @param {Number} precision\n * The level of precision. Positive 1 would round to 1 decimal place and -1 would round to the tens.\n *\n * @return {Number}\n * The rounded number.\n */\n static round(number, precision) {\n const factor = Math.pow(10, precision)\n return Math.round(number * factor) / factor\n }\n\n static getEventPos(event) {\n return {\n x: (event.pageX - (window.scrollX || window.pageXOffset)) || (event.targetTouches[0].pageX - window.scrollX),\n y: (event.pageY - (window.scrollY || window.pageYOffset)) || (event.targetTouches[0].pageY - window.scrollY)\n }\n }\n\n static componentEnabled(plugin, component) {\n const config = plugin.config[component]\n return ((plugin.player[component] != null && plugin.player[component].enabled !== false) || (config != null && config !== false && config.enabled !== false && config.disabled !== true))\n }\n\n static isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n)\n }\n}\n","import Component from \"./Component.js\"\nimport Utils from \"./Utils.js\"\n\nexport default class CurrentTime extends Component {\n\n constructor(props, context) {\n super(props, context)\n this.state.currentTime = this.player.currentTime\n this.state.duration = this.player.duration\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onmediachange(event) {\n this.setState({currentTime: 0})\n }\n\n ontimeupdate(event) {\n this.setState({currentTime: Math.round(event.detail)})\n }\n\n onseeking() {\n this.setState({currentTime: Math.round(this.player.currentTime)})\n }\n\n ondurationchange(event) {\n this.setState({duration: Math.round(event.detail)})\n }\n\n render() {\n return {Utils.formatTimecode(this.state.currentTime, this.state.duration)}\n }\n\n}\n","import Component from \"./Component.js\"\n\nexport default class Live extends Component {\n\n constructor(props, context) {\n super(props, context)\n this.state.isLive = true\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n \n onislive(event) {\n this.setState({isLive: event.detail})\n }\n\n liveClickHandler() {\n if (!this.state.isLive)\n this.player.goLive()\n }\n\n render() {\n return {this.getLocalizedString(this.state.isLive ? \"MSG_LIVE\" : \"MSG_GO_LIVE\")}\n }\n\n}\n","import Component from \"./Component.js\"\nimport Utils from \"./Utils.js\"\n\nexport default class Duration extends Component {\n\n constructor(props, context) {\n super(props, context)\n this.state.duration = this.player.duration\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onmediachange(event) {\n this.setState({duration: Math.round(this.player.duration)})\n }\n\n ondurationchange(event) {\n this.setState({duration: Math.round(event.detail)})\n }\n\n render() {\n return {Utils.formatTimecode(this.state.duration, this.state.duration)}\n }\n\n}\n","import Control from \"./Control.js\"\nimport Utils from \"./Utils.js\"\n\nexport default class Slider extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.state.percent = 0\n this.state.value = 0\n this.state.min = 0\n this.state.range = 0\n this.state.max = 1\n this.state.dragging = false\n this.increment = 0.1\n this.classList.add(\"amp-slider\")\n this.direction = \"\"\n\n this.bindHandlers([\"onHandleMouseDown\", \"onHandleMouseUp\", \"onHandleMouseMove\"])\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n format(value) {\n return value\n }\n\n update(values) {\n if (values.percent == null && values.value != null)\n values.percent = values.value / this.max\n\n if (values.value == null && values.percent != null)\n values.value = Math.round(values.percent * this.max)\n\n if (values.valueText == null && values.value != null)\n values.valueText = `${this.format(values.value)} ${this.getLocalizedString(\"MSG_OF\")} ${this.format(this.max)}`\n\n // Handles NaN cases that cause unpredictable seek results\n if (!Utils.isNumber(values.value))\n delete values.value\n\n if (!Utils.isNumber(values.percent))\n delete values.percent\n\n this.setState(values)\n return values\n }\n\n set percent(value) {\n value = akamai.amp.Utils.clamp(value, 0, 1)\n\n if (this.percent == value)\n return\n\n this.change(this.update({percent: value}))\n }\n\n get percent() {\n return this.state.percent\n }\n\n set value(value) {\n value = akamai.amp.Utils.clamp(value, this.min, this.max)\n\n if (this.value == value)\n return\n\n this.change(this.update({value}))\n }\n\n get value() {\n return this.state.value\n }\n\n set range(value) {\n value = akamai.amp.Utils.clamp(value, this.min, this.max)\n\n if (this.range == value)\n return\n\n this.setState({range: value})\n }\n\n get range() {\n return this.state.range\n }\n\n set min(value) {\n if (this.min == value)\n return\n\n this.setState({min: value})\n }\n\n get min() {\n return this.state.min\n }\n\n set max(value) {\n if (this.max == value)\n return\n\n this.setState({max: value})\n }\n\n get max() {\n return this.state.max\n }\n\n set dragging(value) {\n if (this.dragging == value)\n return\n\n this.setState({dragging: value})\n this.classList.update({\"amp-dragging\": value})\n this.plugin.dragging = value\n }\n\n get dragging() {\n return this.state.dragging\n }\n\n get markers() {\n return this.refs.markers\n }\n\n get aria() {\n return Object.assign(super.aria, {\n role: \"slider\",\n \"aria-valuemin\": this.state.min,\n \"aria-valuemax\": Math.round(this.state.max),\n \"aria-valuenow\": Math.round(this.state.value),\n \"aria-valuetext\": this.state.valueText\n })\n }\n\n move(event) {\n const offset = this.refs.element.getBoundingClientRect()\n const pos = Utils.getEventPos(event)\n if(this.direction === \"vertical\") {\n \tthis.percent = 1-(pos.y - offset.top) / offset.height\n }\n else {\n \tthis.percent = (pos.x - offset.left) / offset.width\n }\n \t\n }\n\n onClick(event) {\n \tif(this.player.playState != \"ready\")\n \tthis.move(event)\n }\n\n onAction() {\n\n }\n\n onKeyPress(event) {\n const code = event.keyCode\n // left arrow 37\n // up arrow 38\n // right arrow 39\n // down arrow 40\n if (code == 39 || code == 38) {\n this.percent += this.increment\n } else if (code == 37 || code == 40) {\n this.percent -= this.increment\n }\n }\n\n onHandleMouseDown(event) {\n if (this.player.playState == \"ready\")\n return\n\n event.stopPropagation()\n event.preventDefault()\n this.dragging = true\n window.addEventListener(\"mouseup\", this.onHandleMouseUp)\n window.addEventListener(\"mousemove\", this.onHandleMouseMove)\n window.addEventListener(\"touchend\", this.onHandleMouseUp)\n window.addEventListener(\"touchmove\", this.onHandleMouseMove)\n }\n\n onHandleMouseMove(event) {\n this.move(event)\n }\n\n onHandleMouseUp(event) {\n event.stopPropagation()\n event.preventDefault()\n this.dragging = false\n window.removeEventListener(\"mouseup\", this.onHandleMouseUp)\n window.removeEventListener(\"mousemove\", this.onHandleMouseMove)\n window.removeEventListener(\"touchend\", this.onHandleMouseUp)\n window.removeEventListener(\"touchmove\", this.onHandleMouseMove)\n this.change(this.update({value: this.value, percent: this.percent}))\n }\n\n render() {\n const percent = `${Utils.round(this.percent * 100, 2)}%`\n const range = `${Utils.round(this.range * 100, 2)}%`\n return (\n
\n
\n
\n
\n {this.children}\n
\n
\n )\n }\n\n}\n","import Container from \"./Container.js\"\nimport Slider from \"./Slider.js\"\nimport Utils from \"./Utils.js\"\n\nexport default class Progress extends Slider {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-progress\", true)\n this.state.altText = \"MSG_SEEK\"\n this.state.textVisible = \"visible\"\n this.bindHandlers([\"onMouseMove\", \"onaddurationchange\", \"onadtimeupdate\", \"onaddurationchange\", \"onadmanagerloaded\"])\n this.isTouch = akamai.amp.Utils.isTouch\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n get propsList() {\n const props = super.propsList\n props.onMouseMove = this.onMouseMove\n return props\n }\n\n get markers() {\n return this.refs.markers\n }\n\n format(value) {\n return Utils.formatTimecode(value, this.max)\n }\n\n onready() {\n this.player.addEventListener(\"adbreakend\", this.ondurationchange)\n this.player.addEventListener(\"adtimeupdate\", this.onadtimeupdate)\n this.player.addEventListener(\"addurationchange\", this.onaddurationchange)\n }\n\n onmediachange() {\n this.update({value: 0})\n this.range = 0\n }\n\n ontimeupdate() {\n if (this.dragging)\n return\n this.update({value: this.player.currentTime})\n }\n\n onseeking() {\n this.update({value: this.player.currentTime})\n }\n\n onprogress(event) {\n this.range = event.detail\n }\n\n oncueschange(event) {\n const cues = event.detail\n const markers = this.markers\n\n markers.clear()\n\n if (cues == null || cues.length <= 0)\n return\n\n const duration = this.player.duration\n cues.forEach((cue, index) => {\n if (cue.startTime <= 0)\n return\n markers.addComponent(
)\n })\n }\n\n ondurationchange(event) {\n this.increment = 10 / this.player.duration\n this.max = this.player.duration\n this.update({value: ((event.type == \"breakend\" && event.data.type == \"preroll\") ? 0 : this.player.currentTime)})\n }\n\n onadtimeupdate(event) {\n \tif(this.player.playState == \"ready\")\n \t\treturn\n this.update({value: event.detail})\n }\n\n onaddurationchange(event) {\n this.max = event.detail.duration\n }\n\n onMouseMove(event) {\n const offset = this.refs.element.getBoundingClientRect()\n const pos = Utils.getEventPos(event)\n const percent = (pos.x - offset.left) / offset.width\n this.setState({textPercent: akamai.amp.Utils.clamp(Utils.round(percent, 4), 0, 1)})\n }\n\n onKeyPress(event) {\n if ((this.player.ads && this.player.ads.inProgress) || this.player.playState == \"ready\") {\n return\n }\n super.onKeyPress(event)\n }\n\n onHandleMouseDown(event) {\n super.onHandleMouseDown(event)\n if (this.isTouch)\n this.setState({textVisible: \"visible\"})\n }\n\n onHandleMouseMove(event) {\n super.onHandleMouseMove(event)\n this.onMouseMove(event)\n }\n\n onHandleMouseUp(event) {\n super.onHandleMouseUp(event)\n if (this.isTouch)\n this.setState({textVisible: \"hidden\"})\n }\n\n onChange(states) {\n if (this.dragging)\n return\n this.player.currentTime = states.value\n }\n\n get children() {\n const textPercent = `${this.state.textPercent * 100}%`\n const minClampValue = this.refs.element ? ((this.refs.text.clientWidth/1.3)*100/this.refs.element.clientWidth) : 0\n const maxClampValue = 100 - minClampValue\n const textValue = `${akamai.amp.Utils.clamp(Utils.round(this.state.textPercent * 100, 2), minClampValue, maxClampValue)}%`\n\n return (\n
\n \n
{this.format(this.state.textPercent * this.player.duration)}
\n
\n )\n }\n}\n","import Slider from \"./Slider.js\"\nimport Utils from \"./Utils.js\"\n\nexport default class Volume extends Slider {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-volume\", true)\n this.state.min = 0\n this.state.max = 100\n this.state.percent = this.player.volume\n this.state.value = this.player.volume * 100\n this.state.altText = \"MSG_VOLUME\"\n this._open = true\n this.timeout = null\n\tif(this.config.volume) {\n\t\tthis.direction = this.config.volume.direction ? this.config.volume.direction : \"\"\n\t\tif(this.direction === \"vertical\") {\n\t\t\tthis.classList.add(\"amp-volume-\"+this.direction, true)\n\t\t\tthis.classList.add(\"amp-slider-\"+this.direction, true)\n\t\t\tthis.classList.remove(\"amp-slider\", true)\n\t\t}\n \t}\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n \n onready(event) {\n \tthis.open = this.direction !== \"vertical\"\n \tthis.classList.update({\"amp-open\": this._open})\n }\n \n onseeked(event) {\n \tthis.open = false\n }\n \n onmediachange(event) {\n \tthis.open = false\n }\n \n set open(value) {\n \tif(this.direction == \"vertical\") {\n \t\tthis._open = value;\n \t\tthis.classList.update({\"amp-open\": this._open})\n \t}\n }\n \n format(value) {\n return Math.round(value)\n }\n\n onvolumechange(event) {\n this.update({percent: event.detail})\n }\n \n onClick(event) {\n this.move(event)\n }\n\n onChange(value) {\n this.player.volume = value.percent\n }\n \n onMouseOver(event) {\n \tthis.plugin.dispatchEvent(new akamai.amp.Event(\"volumemouseover\"))\n \tthis.open = true\n \tclearTimeout(this.timeout)\n }\n \n onMouseOut(event) {\n \tthis.plugin.dispatchEvent(new akamai.amp.Event(\"volumemouseout\"))\n \tclearTimeout(this.timeout)\n \tthis.timeout = setTimeout(() => {\n this.open = false\n }, 350)\n }\n \n onHandleMouseDown(event) {\n event.stopPropagation()\n event.preventDefault()\n this.dragging = true\n window.addEventListener(\"mouseup\", this.onHandleMouseUp)\n window.addEventListener(\"mousemove\", this.onHandleMouseMove)\n window.addEventListener(\"touchend\", this.onHandleMouseUp)\n window.addEventListener(\"touchmove\", this.onHandleMouseMove)\n }\n\n render() {\n if (akamai.amp.Utils.isVolumeSettable() == false)\n return null\n\n super.render()\n \n const percent = `${Utils.round(this.percent * 100, 2)}%`\n const range = `${Utils.round(this.range * 100, 2)}%`\n let retval =
\n \t\t\t\t
\n \t\t\t\t
\n \t\t\t\t
\n \t\t\t\t{this.children}\n \t\t\t\t
\n \t\t\t\t
\n if(this.direction == \"vertical\") {\n \tretval =
\n \t\t\t\t\t
\n \t\t\t\t
\n \t\t\t\t
\n \t\t\t\t
\n \t\t\t\t{this.children}\n \t\t\t\t
\n \t\t\t\t
\n }\n return (\n \tretval\n \t)\n }\n}\n","import Control from \"./Control.js\"\n\nexport default class Toggle extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.state.toggled = false\n this.state.onlabel = \"\"\n this.state.offlabel = \"\"\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n set toggled(value) {\n if (value === this.state.toggled)\n return value\n\n this.setState({toggled: value})\n this.change(value)\n }\n\n get toggled() {\n return this.state.toggled\n }\n\n get propsList() {\n const props = super.propsList\n props[\"aria-checked\"] = this.state.toggled\n props[\"role\"] = \"switch\"\n return props\n }\n\n toggle() {\n return this.toggled = !this.toggled\n }\n\n onClick(event) {\n this.toggle()\n }\n}\n","import Toggle from \"./Toggle.js\"\n\nexport default class Mute extends Toggle {\n\n constructor(props, context) {\n super(props, context)\n this.state.level = \"\"\n this.classList.add(\"amp-mute\", true)\n this.state.altText = \"MSG_MUTE\"\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n get className() {\n return `${super.className} ${this.state.level}`\n }\n\n onChange() {\n const player = this.player\n player.muted = !player.muted\n }\n\n onMouseOver(event) {\n \tthis.plugin.dispatchEvent(new akamai.amp.Event(\"mutemouseover\"))\n }\n\n onMouseOut(event) {\n \tthis.plugin.dispatchEvent(new akamai.amp.Event(\"mutemouseout\"))\n }\n\n onvolumechange() {\n let level = \"\"\n\n if (this.player.muted) {\n level = \"amp-muted\"\n } else if (this.player.volume < 0.5) {\n level = \"amp-low\"\n }\n\n this.setState({level})\n }\n}\n","import Control from \"./Control.js\"\n\nexport default class Unmute extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-unmute\", true)\n this.state.altText = \"MSG_UNMUTE\"\n this.state.dismissed = false\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onmutechange(event) {\n if (event.detail === false)\n this.setState({dismissed: true})\n }\n\n onClick() {\n this.player.muted = false\n }\n\n render() {\n if (this.state.dismissed === true)\n return null\n\n return super.render()\n }\n}\n","import Control from \"./Control.js\"\n\nexport default class Fullscreen extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-fullscreen\", true)\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onfullscreenchange(event) {\n const key = (event.detail) ? \"MSG_EXIT_FULLSCREEN\" : \"MSG_ENTER_FULLSCREEN\"\n this.setState({altText: key})\n }\n\n onClick() {\n if (this.player.displayState == \"normal\") {\n this.player.enterFullScreen()\n } else {\n this.player.exitFullScreen()\n }\n }\n}\n","import PanelControl from \"./PanelControl.js\"\n\nexport default class SettingsButton extends PanelControl {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-settings\", true)\n this.state.altText = \"MSG_SETTINGS\"\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n}\n","import Control from \"./Control.js\"\n\nexport default class ListItem extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-list-item\")\n this.classList.remove(\"amp-icon\")\n this.classList.remove(\"amp-control\")\n this.state.direction = this.props.direction || \"none\"\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n focus() {\n this.refs.element.focus()\n }\n\n onKeyDown(event) {\n if (this.mouseFocus == true)\n return\n this.onKeyPress(event)\n if (event.type == \"keydown\") {\n //13, 32 space Enter\n //37, 39 left and right arrow\n //38, 40 up down\n switch (event.keyCode) {\n case 13:\n case 32:\n this.props.onClick(event) || this.onClick(event)\n break\n case 37:\n if (this.state.direction === \"left\")\n this.props.onClick(event) || this.onClick(event)\n break\n case 39:\n if (this.state.direction === \"right\")\n this.props.onClick(event) || this.onClick(event)\n break\n case 38:\n this.element.previousElementSibling !== null && this.element.previousElementSibling.focus()\n break\n case 40:\n this.element.nextElementSibling !== null && this.element.nextElementSibling.focus()\n break\n }\n\n if ( ((event.keyCode == 9 || event.keyCode == 40) && (event.shiftKey == false) && this.element.nextElementSibling === null) ||\n ((event.keyCode == 9 || event.keyCode == 38) && (event.shiftKey == true) && this.element.previousElementSibling === null) ||\n event.keyCode == 27 ) {\n let tabIndex\n if(this.refs.element.parentNode.className.indexOf(\"share\") >=0 ) {\n tabIndex = 4\n this.plugin.refs.sharePanel.close()\n }\n else {\n tabIndex = 2\n this.plugin.refs.settingsPanel.close()\n }\n let tabable = document.getElementsByClassName(\"amp-control\")\n setTimeout(() => { tabable[tabable.length - tabIndex].focus() }, 1);\n }\n\n }\n\n event.stopPropagation()\n }\n\n\n render() {\n return (\n
\n {this.children}\n
\n )\n }\n\n}\n","import Component from \"./Component.js\"\nimport ListItem from \"./ListItem.js\"\n\nexport default class Panel extends Component {\n\n constructor(props, context) {\n super(props, context)\n this.closeHandler = this.closeHandler.bind(this)\n this._open = false\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n set open(value) {\n if (value == this._open)\n return\n\n this._open = value\n this.classList.update({\"amp-open\": this._open})\n this.plugin.open = value\n\n if (this._open) {\n document.addEventListener(\"click\", this.closeHandler)\n this.context.plugin.activeState = \"active\"\n this.context.plugin.stopActiveTimeout()\n if (this.props.onopen)\n this.props.onopen(this)\n } else {\n this.context.plugin.startActiveTimeout()\n document.removeEventListener(\"click\", this.closeHandler)\n if (this.props.onclose)\n this.props.onclose(this)\n }\n\n }\n\n get open() {\n return this._open\n }\n\n get propsList() {\n const { onclose, onopen, ...props } = super.propsList\n return props\n }\n\n get title() {\n return \"TITLE\"\n }\n\n closeHandler(event) {\n if (this.element === undefined || this.element.contains(event.target))\n return\n\n this.open = false\n document.removeEventListener(\"click\", this.closeHandler)\n }\n\n toggle() {\n this.open = !this.open\n }\n\n close() {\n this.open = false\n }\n\n isOptionSelected(item, index) {\n return (index === this.state.activeIndex)\n }\n\n clickHandler(object, index) {\n this.setState({activeIndex: index})\n }\n\n backHandler(event) {\n this.props.gotoSettings(event)\n }\n\n render() {\n const items = this.listOptions.map((object, index) => {\n return \n \n {object.label}\n \n })\n\n return
\n \n \n {this.state.title}\n \n {items}\n
\n }\n}\n","import Panel from \"./Panel.js\"\n\nexport default class PanelMenu extends Panel {\n\n constructor(props, context) {\n super(props, context)\n this.state.keyDown = false\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onKeyDown(event) {\n if (event.keyCode == 13 || event.keyCode == 32) {\n this.state.keyDown = true\n this.toggle()\n }\n }\n}\n","import Panel from \"../Panel.js\"\nimport ListItem from \"../ListItem.js\"\n\nexport default class Home extends Panel {\n\n constructor(props, context) {\n super(props, context)\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n\n clickHandler(object, index) {\n this.setState({activeIndex: index})\n this.props.settingsChange({language: this.listOptions[index]})\n }\n\n render() {\n this.listOptions = [{label:\"Off\", value: \"off\"}]\n this.player.captioning.tracks.forEach((track) => {\n const lang = track.language\n this.listOptions.push({label: this.player.localization.getLanguageString(lang), value: lang})\n })\n\n const OptionsList = this.listOptions.map((object, index) => {\n let selected = (!this.player.captioning.hidden && this.player.captioning.track && object.value == this.player.captioning.track.language)\n if (this.player.captioning.hidden && index === 0) {\n selected = true\n }\n return \n \n {object.label}\n \n })\n\n return (\n
\n \n \n Subtitles/CC\n \n this.props.viewChange(event, \"options\")} className=\"amp-option-button\" >Options\n {OptionsList}\n
\n )\n }\n}\n","import Panel from \"../Panel.js\"\nimport ListItem from \"../ListItem.js\"\n\nexport default class Options extends Panel {\n\n constructor(props, context) {\n super(props, context)\n this.listOptions = [\n {label: \"Font Family\", key: \"fontFamily\", value: \"Arial\"},\n {label: \"Font Color\", key: \"fontColor\", value: \"Red\"},\n {label: \"Font Size\", key: \"size\", value: \"100%\"},\n {label: \"Font Opacity\", key: \"fontOpacity\", value: \"0%\"},\n {label: \"Background Color\", key: \"backgroundColor\", value: \"Black\"},\n {label: \"Background Opacity\", key: \"backgroundOpacity\", value: \"0%\"},\n {label: \"Window Color\", key: \"windowColor\", value: \"Red\"},\n {label: \"Window Opacity\", key: \"windowOpacity\", value: \"0%\"},\n {label: \"Character Edge Style\", key: \"edgeType\", value: \"None\"},\n {label: \"Edge Color\", key: \"edgeColor\", value: \"Red\"},\n {label: \"Edge Opacity\", key: \"edgeOpacity\", value: \"Red\"},\n {label: \"Scroll\", key: \"scroll\", value: \"Pop-out\"},\n ]\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n\n render() {\n const OptionsList = this.listOptions.map((object, index) => {\n return this.props.viewChange(event, object.key)} direction=\"right\">\n {object.label}\n \n \n {this.props.captionsettings[object.key+\"Label\"]}\n \n \n })\n\n return
\n this.props.viewChange(event, \"home\")} direction=\"left\">\n \n Options\n \n {OptionsList}\n
\n }\n}\n","import Panel from \"../Panel.js\"\n\nexport default class OptionsPanel extends Panel {\n\n constructor(props, context) {\n super(props, context)\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n\n select() {\n const options = this.listOptions\n const props = this.props.captionsettings\n const len = options.length\n for (let i = 0; i < len; i++) {\n if ((/color/i.test(this.setting) && (options[i].value.r == props[this.setting].r) && (options[i].value.g == props[this.setting].g) && (options[i].value.b == props[this.setting].b)) ||\n (/opacity/i.test(this.setting) && (options[i].value == props[this.setting.replace(\"Opacity\", \"Color\")].a)) ||\n (!/opacity|color/i.test(this.setting) && options[i].value == props[this.setting])) {\n this.state.activeIndex = i\n break\n }\n }\n }\n\n clickHandler (object, index) {\n super.clickHandler(object, index)\n this.props.settingsChange({[this.setting]: object})\n }\n\n backHandler(event) {\n this.props.viewChange(event, \"options\")\n }\n}\n","export default class Color {\n\n constructor(r, g, b, a = 1) {\n if (typeof r == \"string\") {\n const parts = r.match(/[0-9\\.]+/g)\n r = parseInt(parts[0])\n g = parseInt(parts[1])\n b = parseInt(parts[2])\n a = parts[3] != null ? parseFloat(parts[3]) : 1\n }\n\n this.r = r\n this.g = g\n this.b = b\n this.a = a\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n\n toString(radix) {\n return `rgba(${this.r}, ${this.g}, ${this.b}, ${this.a})`\n }\n}\n","import OptionsPanel from \"./OptionsPanel\"\nimport Color from \"./Color\"\n\nexport default class BackgroundColor extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Background Color\" // TODO: This needs to be localized\n this.setting = \"backgroundColor\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n}\n","import OptionsPanel from \"./OptionsPanel.js\"\n\nexport default class BackgroundOpacity extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Background Opacity\" // TODO: This needs to be localized\n this.setting = \"backgroundOpacity\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n}\n","import OptionsPanel from \"./OptionsPanel.js\"\n\nexport default class CharacterEdgeStyle extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Character Edge Style\" // TODO: This needs to be localized\n this.setting = \"edgeType\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n}\n","import OptionsPanel from \"./OptionsPanel\"\nimport Color from \"./Color\"\n\nexport default class FontColor extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Font Color\" // TODO: This needs to be localized\n this.setting = \"fontColor\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n}\n","import OptionsPanel from \"./OptionsPanel.js\"\n\nexport default class FontFamily extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Font Family\" // TODO: This needs to be localized\n this.setting = \"fontFamily\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n}\n","import OptionsPanel from \"./OptionsPanel.js\"\n\nexport default class FontOpacity extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Font Opacity\" // TODO: This needs to be localized\n this.setting = \"fontOpacity\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n\n}\n","import OptionsPanel from \"./OptionsPanel.js\"\n\nexport default class FontSize extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Font Size\" // TODO: This needs to be localized\n this.setting = \"size\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n}\n","import OptionsPanel from \"./OptionsPanel\"\nimport Color from \"./Color\"\n\nexport default class WindowColor extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Window Color\" // TODO: This needs to be localized\n this.setting = \"windowColor\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n}\n","import OptionsPanel from \"./OptionsPanel.js\"\n\nexport default class WindowOpacity extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Window Opacity\" // TODO: This needs to be localized\n this.setting = \"windowOpacity\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n}\n","import OptionsPanel from \"./OptionsPanel.js\"\n\nexport default class ScrollType extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Scroll Type\" // TODO: This needs to be localized\n this.setting = \"scroll\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n}\n","import OptionsPanel from \"./OptionsPanel\"\nimport Color from \"./Color\"\n\nexport default class EdgeColor extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Edge Color\" // TODO: This needs to be localized\n this.setting = \"edgeColor\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n}\n","import OptionsPanel from \"./OptionsPanel.js\"\n\nexport default class EdgeOpacity extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = \"Edge Opacity\" // TODO: This needs to be localized\n this.setting = \"edgeOpacity\"\n this.listOptions = props.labels[this.setting]\n this.select()\n }\n \n static get contextTypes() {\n return super.contextTypes\n }\n\n}\n","import Color from \"./captionsettings/Color\"\n\nexport default class CaptionData {\n\n constructor() {\n return {\n fontFamily: [\n {label: \"Monospaced Serif\", value: \"'Courier New', Courier, 'Nimbus Mono L', 'Cutive Mono', monospace\"},\n {label: \"Proportional Serif\", value: \"'Times New Roman', Times, Georgia, Cambria, 'PT Serif Caption', serif\"},\n {label: \"Monospaced Sans-Serif\", value: \"'Deja Vu Sans Mono', 'Lucida Console', Monaco, Consolas, 'PT Mono', monospace\"},\n {label: \"Proportional Sans-Serif\", value: \"Roboto, 'Arial Unicode Ms', Arial, Helvetica, Verdana, 'PT Sans Caption', sans-serif\"},\n {label: \"Casual\", value: \"'Comic Sans MS', Impact, Handlee, fantasy\"},\n {label: \"Cursive\", value: \"'Monotype Corsiva', 'URW Chancery L', 'Apple Chancery', 'Dancing Script', cursive\"},\n {label: \"Small Capitals\", value: \"'Arial Unicode Ms', Arial, Helvetica, Verdana, 'Marcellus SC', sans-serif; font-variant: small-caps\"}\n ],\n fontColor: [\n {label: \"White\", value: new Color(255, 255, 255)},\n {label: \"Yellow\", value: new Color(255, 255, 0)},\n {label: \"Green\", value: new Color(0, 128, 0)},\n {label: \"Cyan\", value: new Color(0, 255, 255)},\n {label: \"Blue\", value: new Color(0, 0, 255)},\n {label: \"Magenta\", value: new Color(255, 0, 255)},\n {label: \"Red\", value: new Color(255, 0, 0)},\n {label: \"Black\", value: new Color(0, 0, 0)}\n ],\n size: [\n {label: \"70%\", value: \"x-small\"},\n {label: \"100%\", value: \"small\"},\n {label: \"150%\", value: \"medium\"},\n {label: \"200%\", value: \"large\"},\n {label: \"300%\", value: \"x-large\"}\n ],\n fontOpacity: [\n {label: \"25%\", value: 0.25},\n {label: \"50%\", value: 0.5},\n {label: \"75%\", value: 0.75},\n {label: \"100%\", value: 1}\n ],\n backgroundColor: [\n {label: \"White\", value: new Color(255,255,255)},\n {label: \"Yellow\", value: new Color(255,255,0)},\n {label: \"Green\", value: new Color(0,128,0)},\n {label: \"Cyan\", value: new Color(0,255,255)},\n {label: \"Blue\", value: new Color(0,0,255)},\n {label: \"Magenta\", value: new Color(255,0,255)},\n {label: \"Red\", value: new Color(255,0,0)},\n {label: \"Black\", value: new Color(0,0,0)}\n ],\n backgroundOpacity: [\n {label: \"0%\", value: 0},\n {label: \"25%\", value: 0.25},\n {label: \"50%\", value: 0.5},\n {label: \"75%\", value: 0.75},\n {label: \"100%\", value: 1}\n ],\n edgeType: [\n {label: \"None\", value: \"text-shadow: 0px 0px 0px\"},\n {label: \"Depressed\", value: \"text-shadow: 0px 1px 0px\"},\n {label: \"Left Drop Shadow\", value: \"text-shadow: -3px 3px 2px\"},\n {label: \"Raised\", value: \"text-shadow: 0px 1px 1px\"},\n {label: \"Right Drop Shadow\", value: \"text-shadow: 3px 3px 2px\"},\n {label: \"Uniform\", value: \"text-shadow: 0px 0px 4px\"}\n ],\n edgeColor: [\n {label: \"White\", value: new Color(255, 255, 255)},\n {label: \"Yellow\", value: new Color(255, 255, 0)},\n {label: \"Green\", value: new Color(0, 128, 0)},\n {label: \"Cyan\", value: new Color(0, 255, 255)},\n {label: \"Blue\", value: new Color(0, 0, 255)},\n {label: \"Magenta\", value: new Color(255, 0, 255)},\n {label: \"Red\", value: new Color(255, 0, 0)},\n {label: \"Black\", value: new Color(0, 0, 0)}\n ],\n edgeOpacity: [\n {label: \"0%\", value: 0},\n {label: \"25%\", value: 0.25},\n {label: \"50%\", value: 0.5},\n {label: \"75%\", value: 0.75},\n {label: \"100%\", value: 1}\n ],\n fontOpacity: [\n {label: \"25%\", value: 0.25},\n {label: \"50%\", value: 0.5},\n {label: \"75%\", value: 0.75},\n {label: \"100%\", value: 1}\n ],\n scroll: [\n {label: \"Pop-out\", value: \"popout\"},\n {label: \"Roll-on\", value: \"rollon\"},\n {label: \"Paint-on\", value: \"painton\"}\n ],\n windowColor: [\n {label: \"White\", value: new Color(255, 255, 255)},\n {label: \"Yellow\", value: new Color(255, 255, 0)},\n {label: \"Green\", value: new Color(0, 128, 0)},\n {label: \"Cyan\", value: new Color(0, 255, 255)},\n {label: \"Blue\", value: new Color(0, 0, 255)},\n {label: \"Magenta\", value: new Color(255, 0, 255)},\n {label: \"Red\", value: new Color(255, 0, 0)},\n {label: \"Black\", value: new Color(0, 0, 0)}\n ],\n windowOpacity: [\n {label: \"0%\", value: 0},\n {label: \"25%\", value: 0.25},\n {label: \"50%\", value: 0.5},\n {label: \"75%\", value: 0.75},\n {label: \"100%\", value: 1}\n ]\n }\n }\n}\n","import Panel from \"./Panel.js\"\nimport Home from \"./captionsettings/Home\"\nimport Options from \"./captionsettings/Options\"\nimport BackgroundColor from \"./captionsettings/BackgroundColor\"\nimport BackgroundOpacity from \"./captionsettings/BackgroundOpacity\"\nimport CharacterEdgeStyle from \"./captionsettings/CharacterEdgeStyle\"\nimport FontColor from \"./captionsettings/FontColor\"\nimport FontFamily from \"./captionsettings/FontFamily\"\nimport FontOpacity from \"./captionsettings/FontOpacity\"\nimport FontSize from \"./captionsettings/FontSize\"\nimport WindowColor from \"./captionsettings/WindowColor\"\nimport WindowOpacity from \"./captionsettings/WindowOpacity\"\nimport ScrollType from \"./captionsettings/ScrollType\"\nimport EdgeColor from \"./captionsettings/EdgeColor\"\nimport EdgeOpacity from \"./captionsettings/EdgeOpacity\"\nimport Color from \"./captionsettings/Color\"\nimport CaptionData from \"./CaptionData\"\n\nexport default class CaptionSettings extends Panel {\n\n constructor(props, context) {\n super(props, context)\n this.state.languages = []\n this.state.keyDown = false\n\n const settings = Object.assign({}, this.player.settings.captions)\n delete settings.track\n\n for (let key in settings) {\n if (/Color$/.test(key)) {\n settings[key] = new Color(settings[key])\n settings[key.replace(\"Color\", \"Opacity\")] = settings[key].a\n }\n }\n this.state.captionsettings = settings\n\n this.state.viewChange = this.changeView.bind(this)\n this.state.settingsChange = this.changeSettings.bind(this)\n this.state.level = \"home\"\n\n this.state.labels = new CaptionData()\n\n this.initSettingLabels()\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n componentWillMount() {\n this.open = true\n }\n\n focus(event) {\n this.refs.element.firstChild.children[2].focus()\n }\n\n changeView(event, toState) {\n if (/keydown/.test(event.type) && (event.keyCode == 13 || event.keyCode == 32 || event.keyCode == 37 || event.keyCode == 39)) {\n this.keyDown = true\n }\n setTimeout(() => { this.setState({level: toState}) }, 100)\n }\n\n initSettingLabels() {\n for (let key in this.state.labels) {\n this.state.labels[key].forEach((item) => {\n if ((/color/i.test(key) && (item.value.r == this.state.captionsettings[key].r && item.value.g == this.state.captionsettings[key].g && item.value.b == this.state.captionsettings[key].b)) ||\n (/opacity/i.test(key) && (item.value == this.state.captionsettings[key.replace(\"Opacity\", \"Color\")].a)) ||\n (this.state.captionsettings[key] == item.value)) {\n this.state.captionsettings[`${key}Label`] = item.label\n }\n })\n }\n }\n\n changeSettings(object) {\n for (var key in object) {\n let setting = object[key]\n let value = setting.value\n switch (key) {\n case \"language\":\n const hidden = (setting.value == \"off\")\n if (!hidden)\n this.player.captioning.selectTrackByLanguage(setting.value)\n this.player.captioning.hidden = hidden\n break\n\n case \"backgroundColor\":\n case \"windowColor\":\n case \"fontColor\":\n case \"edgeColor\":\n value.a = this.state.captionsettings[key].a\n break\n\n case \"backgroundOpacity\":\n case \"fontOpacity\":\n case \"windowOpacity\":\n case \"edgeOpacity\":\n let color = this.state.captionsettings[key.replace(\"Opacity\", \"Color\")]\n color.a = value\n value = color\n break\n\n }\n this.state.captionsettings[key.replace(\"Opacity\", \"Color\")] = value\n this.state.captionsettings[`${key}Label`] = setting.label\n }\n\n let settings = Object.assign({}, this.state.captionsettings)\n for (let key in settings) {\n if (/Label$/.test(key) || /Opacity$/.test(key) || /language/.test(key)) {\n delete settings[key]\n }\n else if (/Color$/.test(key)) {\n settings[key] = settings[key].toString()\n }\n }\n settings.visible = !this.player.captioning.hidden\n this.player.captioning.changeSettings(settings)\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.keyDown) {\n this.refs.element.firstChild.children[1].focus()\n this.keyDown = false\n }\n }\n\n getCurrentPage() {\n\n switch (this.state.level) {\n case \"home\":\n return \n break\n case \"options\":\n return \n break\n case \"fontFamily\":\n return \n break\n case \"fontColor\":\n return \n break\n case \"size\":\n return \n break\n case \"fontOpacity\":\n return \n break\n case \"backgroundColor\":\n return \n break\n case \"backgroundOpacity\":\n return \n break\n case \"windowColor\":\n return \n break\n case \"windowOpacity\":\n return \n break\n case \"edgeType\":\n return \n break\n case \"edgeColor\":\n return \n break\n case \"edgeOpacity\":\n return \n break\n case \"scroll\":\n return \n }\n }\n\n render() {\n return
{this.getCurrentPage()}
\n }\n}\n","import Panel from \"./Panel.js\"\n\nexport default class Quality extends Panel {\n\n constructor(props, context) {\n super(props, context)\n this.listOptions = [\n { label: \"Auto\", value: \"0.25\" } // TODO: Auto needs to be localized\n ]\n this.qualityLevels = []\n this.state.title = \"Quality\" // TODO: This needs to be localized\n this.state.activeIndex = -1\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n componentWillMount() {\n super.componentWillMount()\n this.onqualitylevelsloaded({detail: this.player.qualityLevels})\n this.onqualitychanging({detail: this.player.qualityLevels[this.player.quality]})\n this.open = true\n }\n\n clickHandler(object, index) {\n this.player.quality = index - 1\n if (!index)\n this.onqualitychanging()\n }\n\n onqualitylevelsloaded(event) {\n this.qualityLevels = event.detail\n this.qualityLevels.forEach((item) => {\n this.listOptions.push({\"label\": `${Math.round(item.bitrate / 1000)} Kbps`})\n })\n this.setState({redraw: true})\n }\n\n onqualitychanging(event) {\n let index = -1, autoLevel = false\n try {\n autoLevel = this.player.qualityMode\n index = autoLevel == \"auto\" ? -1 : (event.detail ? this.qualityLevels.findIndex(levelObject => levelObject.qualityIndex == event.detail.qualityIndex && levelObject.level == event.detail.level) : this.props.quality.quality)\n } catch (e) {}\n\n this.setState({activeIndex: index})\n }\n\n isOptionSelected(item, index) {\n return (index - 1 === this.state.activeIndex)\n }\n}\n","import Panel from \"./Panel.js\"\n\nexport default class PlaybackRate extends Panel {\n\n constructor(props, context) {\n super(props, context)\n this.state.title = \"Speed\" // TODO: This needs to be localized\n this.listOptions = [\n { label: \"0.25\", value: 0.25 },\n { label: \"0.5\", value: 0.5 },\n { label: \"Normal\", value: 1 },\n { label: \"1.25\", value: 1.25 },\n { label: \"1.5\", value: 1.5 },\n { label: \"2\", value: 2 }\n ]\n\n this.state.activeIndex = 2\n this.listOptions.forEach((option, index) => {\n if (option.value == this.player.playbackRate) {\n this.state.activeIndex = index\n }\n })\n this.classList.add(\"amp-playback-rate\")\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n clickHandler(object, index) {\n this.player.playbackRate = object.value\n super.clickHandler(object, index)\n }\n\n isOptionSelected(item, index) {\n return (parseFloat(item.value) === parseFloat(this.player.playbackRate))\n }\n}\n","import Panel from \"./Panel.js\"\n\nexport default class AudioTracks extends Panel {\n\n constructor(props, context) {\n super(props, context)\n this.listOptions = []\n this.audioTracks = []\n this.activeIds = []\n this.state.title = \"Audio\" // TODO: Should be localized\n this.state.activeIndex = -1\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n componentWillMount() {\n super.componentWillMount()\n this.audioTracks = this.player.audioTracks\n this.oncanplaythrough({detail: this.audioTracks})\n this.open = true\n }\n\n clickHandler(object, index) {\n this.player.audioTracks[index].enabled = true\n this.setState({activeIndex: index-1})\n this.setState({redraw: true})\n }\n\n onmediachange(event) {\n \tthis.listOptions = []\n \tthis.activeIds = []\n }\n\n oncanplaythrough(event) {\n \tthis.audioTracks = this.player.audioTracks\n this.audioTracks.forEach((item) => {\n if (this.activeIds[item.id] == null) {\n const lang = this.player.localization.getLanguageString(item.language) || item.language\n \tconst label = item.label || lang || item.id || this.player.localization.getString(\"MSG_UNKNOWN\")\n this.activeIds[item.id] = true\n this.listOptions.push({label})\n }\n })\n this.setState({redraw: true})\n }\n\n isOptionSelected(item, index) {\n return this.player.audioTracks[index].enabled\n }\n}\n","import PanelMenu from \"./PanelMenu.js\"\nimport CaptionSettings from \"./CaptionSettings.js\"\nimport Quality from \"./Quality.js\"\nimport PlaybackRate from \"./PlaybackRate.js\"\nimport AudioTracks from \"./AudioTracks.js\"\nimport ListItem from \"./ListItem.js\"\nimport Utils from \"./Utils.js\"\n\nexport default class SettingsPanel extends PanelMenu {\n\n constructor(props, context) {\n super(props, context)\n this.state.settingsLevel = 0\n this.state.bitrateLabel = \"Auto\"\n this.state.captioningSettingState = null\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onready(event) {\n this.setState({\"autoplay\": this.player.autoplay})\n }\n\n onseeked(event) {\n \tthis.open = false\n }\n\n toggle() {\n super.toggle()\n this.state.settingsLevel = 0\n }\n\n onqualitychanging(event) {\n let brLabel = this.player.qualityMode === \"auto\" ? \"Auto\" : (Math.round(event.detail.bitrate / 1000) + \"Kbps\") // TODO: Needs to be localized\n this.state.quality = this.state.qualityLevels ? this.state.qualityLevels.findIndex(levelObject => levelObject.qualityIndex == event.detail.qualityIndex && levelObject.level == event.detail.level) : -1\n this.setState({bitrateLabel: brLabel})\n }\n\n changeState(value, event) {\n if (event.type == \"keydown\" && (event.keyCode == 13 || event.keyCode == 32 || event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) && this.mouseFocus != true) {\n if (event.keyCode == 37 && this.state.settingsLevel == 0)\n return\n this.state.keyDown = true\n }\n setTimeout(() => { this.setState({settingsLevel:value});}, 100)\n }\n\n autoplayToggle() {\n this.setState({\"autoplay\": (this.player.autoplay = !this.player.autoplay)})\n }\n\n componentWillUpdate(nextProps, nextState) {\n if(nextState.settingsLevel == 1 && this.refs.firstElem.state.captionsettings)\n this.setState({'captioningSettingState': this.refs.firstElem.state.captionsettings})\n else if ((this.refs.firstElem != null) && !isNaN(this.refs.firstElem.state.activeIndex))\n this.setState({'playbackSettingState': this.refs.firstElem.state.activeIndex})\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.state.keyDown) {\n if (typeof this.refs.firstElem.focus === \"function\") {\n this.refs.firstElem.focus()\n }\n else {\n this.refs.firstElem.refs.element.childNodes[1].focus()\n }\n this.state.keyDown = false\n }\n }\n\n currentAudioTrackLabel () {\n let audioTracks = this.player.audioTracks\n for (var i=0; i 1\n const audioTracksAvailable = this.player.audioTracks != null && this.player.audioTracks.length > 1\n let qualityRef, playbackRef\n if (!isCaptionEnabled && isQualityEnabled)\n qualityRef = \"firstElem\"\n else if (!isCaptionEnabled && !isQualityEnabled)\n playbackRef = \"firstElem\"\n\n return (
\n { isCaptionEnabled &&\n \n Subtitles\n \n {this.player.captioning.hidden ? \"Off\": this.player.localization.getLanguageString(this.player.captioning.track.language)}\n \n }\n { isQualityEnabled &&\n \n Quality\n \n {this.state.bitrateLabel}\n \n }\n { this.player.mode != \"flash\" &&\n \n Speed\n \n {this.player.playbackRate === 1 ? 'Normal' : this.player.playbackRate}\n \n }\n { audioTracksAvailable &&\n \n Audio\n \n {this.currentAudioTrackLabel()}\n \n }\n {\n \n Autoplay\n \n \n }\n
)\n break\n case 1:\n return (
\n \n
)\n break\n case 2:\n return (
\n \n
)\n break\n case 3:\n return (
\n \n
)\n break\n case 4:\n return (
\n \n
)\n break\n }\n\n }\n}\n","import PanelControl from \"./PanelControl.js\"\nimport Utils from \"./Utils.js\"\n\nexport default class ShareButton extends PanelControl {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-share\", true)\n this.state.altText = \"MSG_SHARE\"\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n}\n","import PanelMenu from \"./PanelMenu.js\"\nimport ListItem from \"./ListItem.js\"\nimport Utils from \"./Utils.js\"\n\nexport default class SharePanel extends PanelMenu {\n\n constructor(props, context) {\n super(props, context)\n this.listOptions = [\n {label: \"Facebook\", id: \"facebook\", url: \"www.facebook.html\"},\n {label: \"Twitter\", id: \"twitter\", url: \"www.twitter.com\"},\n {label: \"Email\", id: \"email\", url: \"\"},\n {label: \"Embed\", id: \"embed\", url: \"\"}\n ]\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n clickHandler(object, index, event) {\n const media = this.player.media\n this.player.dispatch(\"share\", {provider: object, link: media.link, embed: media.embed})\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.state.keyDown) {\n this.refs.element.childNodes[0].focus()\n this.state.keyDown = false\n }\n }\n\n render() {\n const OptionsList = this.listOptions.map((object,index) => {\n return \n \n {object.label}\n \n });\n\n return
\n {OptionsList}\n
\n }\n}\n","import Toggle from \"./Toggle.js\"\nimport Utils from \"./Utils.js\"\n\nexport default class CaptionToggleButton extends Toggle {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-cc\")\n this.state.altText = \"MSG_CLOSED_CAPTIONING\"\n this.state.toggled = this.player.captioning ? !this.player.captioning.hidden : false\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onmediachange() {\n setTimeout(this.forceUpdate.bind(this), 1)\n }\n\n onChange(event) {\n this.player.captioning.hidden = !this.player.captioning.hidden\n }\n\n render() {\n if (!Utils.componentEnabled(this.plugin, \"captioning\"))\n return null\n\n return super.render()\n }\n}\n","import Control from \"./Control.js\"\n\nexport default class JumpBack extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-jump-back\", true)\n this.state.altText = \"MSG_JUMP_BACK\"\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onClick() {\n const player = this.player\n if (player.playState === \"playing\" || player.playState === \"paused\") {\n this.player.currentTime = Math.max(this.player.currentTime - 10, 0)\n }\n else if (player.ended === true) {\n this.player.replay()\n }\n }\n\n}\n","import Control from \"./Control.js\"\n\nexport default class JumpForward extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-jump-forward\", true)\n this.state.altText = \"MSG_JUMP_AHEAD\"\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onClick(event) {\n \tconst player = this.player\n if (!player.ended && (player.playState == \"playing\" || player.playState == \"paused\")) {\n player.currentTime = Math.min(this.player.currentTime + 10, this.player.duration - 1)\n }\n }\n\n}\n","import Component from \"./Component.js\"\n\nexport default class Poster extends Component {\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onmediachange(event) {\n this.setState({src: this.player.evaluateBindings(this.player.media.poster)})\n }\n\n render() {\n return (\n \n )\n }\n}\n","import Component from \"./Component.js\"\n\nexport default class Title extends Component {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-title\", true)\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onmediachange(event) {\n this.setState({textContent: this.player.media.title})\n }\n}\n","import Component from \"./Component.js\"\n\nexport default class ErrorMsg extends Component {\n\n static get contextTypes() {\n return super.contextTypes\n }\n \n onerror(event) {\n this.setState({error: this.l10n.MSG_ERROR_DEFAULT})\n }\n\n render() {\n return (\n
\n
\n
\n )\n }\n}\n","import Component from \"./Component.js\"\n\nexport default class ContextMenu extends Component {\n\n constructor(props, context) {\n super(props, context)\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n render() {\n const menuItems = [\n
  • Akamai Adaptive Media Player
  • ,\n
  • {this.player.version}
  • \n ]\n\n if ((typeof akamaiGetViewerId == \"function\") && (akamaiGetViewerId() != null))\n menuItems.push(
  • Viewer ID: {akamaiGetViewerId()}
  • )\n\n const style = {\n top: `${this.props.y}px`,\n left: `${this.props.x}px`\n }\n\n return (\n
      \n {menuItems}\n
    \n )\n }\n}\n","import Component from \"./Component.js\"\nimport Utils from \"./Utils.js\"\n\nexport default class Ads extends Component {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-ads\", true)\n this.state.msg = \"\"\n this.state.time = \"\"\n this.bindHandlers([\"onadbreakstart\", \"onadbreakend\", \"onadstarted\", \"onadtimeremaining\", \"onadimpression\"])\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n get container() {\n return this.refs.container\n }\n\n onready() {\n this.controlsMode = this.plugin.mode\n this.player.addEventListener(\"adbreakstart\", this.onadbreakstart)\n this.player.addEventListener(\"adbreakend\", this.onadbreakend)\n this.player.addEventListener(\"adstarted\", this.onadstarted)\n this.player.addEventListener(\"adtimeremaining\", this.onadtimeremaining)\n this.player.addEventListener(\"adimpression\", this.onadimpression)\n }\n\n onmediachange() {\n this.onadbreakend()\n }\n\n onadimpression() {\n this.plugin.container.classList.update({\"amp-ad-overlaymode\": true})\n this.player.ads.resize()\n }\n\n onadbreakstart(event) {\n this.plugin.container.classList.update({\"amp-ad-break\": true})\n this.player.container.classList.add(\"amp-ad-break\")\n const adVO = event.detail\n this.setState({msg: \"\", time: \"\"})\n this.controlsMode = this.plugin.mode\n this.plugin.mode = this.plugin.adMode\n }\n\n onadstarted(event) {\n const adVO = event.detail || {}\n const msg = (adVO.position == null || adVO.totalAds == null) ? \"\" : `${this.getLocalizedString(\"MSG_AD\")} ${adVO.position} ${this.getLocalizedString(\"MSG_OF\")} ${adVO.totalAds}`\n this.setState({time: adVO.duration, msg})\n }\n\n onadbreakend(event) {\n this.setState({msg: \"\", time: \"\"})\n this.plugin.container.classList.update({\"amp-ad-break\": false})\n this.player.container.classList.remove(\"amp-ad-break\")\n this.plugin.mode = this.controlsMode\n }\n\n onadtimeremaining(event) {\n \tif (this.player.playState == \"ready\")\n \t return\n this.setState({time: event.detail})\n }\n\n render() {\n const time = (this.state.time != \"\") ? Utils.formatTimecode(Math.ceil(this.state.time)) : this.state.time\n\n return (\n
    \n
    \n
    \n
    {this.state.msg}
    \n
    \n
    \n
    {time}
    \n
    \n
    \n )\n }\n}\n","import Control from \"./Control.js\"\n\nexport default class Airplay extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.state.available = false\n this.state.playing = false\n this.classList.add(\"amp-airplay\", true)\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n get isAvailable() {\n return (window.WebKitPlaybackTargetAvailabilityEvent != null)\n }\n\n get available() {\n return (this.isAvailable && this.state.available)\n }\n\n set playing(value) {\n this.state.playing = value\n this.plugin.container.classList.update({\"amp-playback-target-airplay\": value})\n }\n\n get playing() {\n return this.state.playing\n }\n\n onready(event) {\n if (this.isAvailable === false)\n return\n\n const video = this.player.mediaElement\n video.setAttribute(\"x-webkit-airplay\", \"allow\")\n video.addEventListener(\"webkitplaybacktargetavailabilitychanged\", (event) => {\n this.state.available = (event.availability == \"available\")\n this.playing = video.webkitCurrentPlaybackTargetIsWireless\n this.forceUpdate()\n })\n window.addEventListener(\"webkitcurrentplaybacktargetiswireless\", (event) => {\n this.playing = video.webkitCurrentPlaybackTargetIsWireless\n })\n }\n\n onClick() {\n this.player.mediaElement.webkitShowPlaybackTargetPicker()\n }\n\n render() {\n if (this.available === false)\n return null\n\n return super.render()\n }\n}\n","import Control from \"./Control.js\"\n\nexport default class PiP extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-pip\", true)\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n get available() {\n const mediaElement = this.player.mediaElement\n if (mediaElement == null || typeof mediaElement.webkitSupportsPresentationMode != \"function\" || typeof mediaElement.webkitSetPresentationMode != \"function\")\n return false\n else\n return mediaElement.webkitSupportsPresentationMode(\"picture-in-picture\")\n }\n\n onplaying(event) {\n this.forceUpdate()\n }\n\n onClick(event) {\n const mediaElement = this.player.mediaElement\n mediaElement.webkitSetPresentationMode(mediaElement.webkitPresentationMode === \"picture-in-picture\" ? \"inline\" : \"picture-in-picture\");\n }\n\n render() {\n if (!this.available)\n return null\n\n return super.render()\n }\n}\n","import Control from \"./Control.js\"\nimport Utils from \"./Utils.js\"\n\nexport default class ChromeCast extends Control {\n\n constructor(props, context) {\n super(props, context)\n this.state.available = false\n this.classList.add(\"amp-chromecast\", true)\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onready() {\n if (!Utils.componentEnabled(this.plugin, \"chromecast\"))\n return\n\n this.setState({available: this.player.chromecast.available})\n }\n\n onplaybacktargetavailabilitychange(event) {\n if (event.detail.target === \"chromecast\") {\n this.setState({available: event.detail.available})\n }\n }\n\n get available() {\n return this.state.available\n }\n\n onClick() {\n this.player.chromecast.launch()\n }\n\n render() {\n if (this.available === false)\n return null\n\n return super.render()\n }\n}\n","export default class Mode {\n\n constructor() {\n }\n\n static get AUTO() { return \"auto\" }\n static get FIXED() { return \"fixed\" }\n static get PERSISTENT() { return \"persistent\" }\n}\n","export default class ActiveState {\n\n constructor() {\n }\n\n static get ACTIVE() { return \"active\" }\n static get INACTIVE() { return \"inactive\" }\n static get IDLE() { return \"idle\" }\n}\n","import Component from \"./Component.js\"\nimport Container from \"./Container.js\"\nimport PanelControl from \"./PanelControl.js\"\nimport PlayPause from \"./PlayPause.js\"\nimport PauseOverlay from \"./PauseOverlay.js\"\nimport BufferingOverlay from \"./BufferingOverlay.js\"\nimport CurrentTime from \"./CurrentTime.js\"\nimport Live from \"./Live.js\"\nimport Duration from \"./Duration.js\"\nimport Progress from \"./Progress.js\"\nimport Volume from \"./Volume.js\"\nimport Mute from \"./Mute.js\"\nimport Unmute from \"./Unmute.js\"\nimport Fullscreen from \"./Fullscreen.js\"\nimport SettingsButton from \"./SettingsButton.js\"\nimport SettingsPanel from \"./SettingsPanel.js\"\nimport ShareButton from \"./ShareButton.js\"\nimport SharePanel from \"./SharePanel.js\"\nimport CaptionToggleButton from \"./CaptionToggleButton.js\"\nimport JumpBack from \"./JumpBack.js\"\nimport JumpForward from \"./JumpForward.js\"\nimport Poster from \"./Poster.js\"\nimport Title from \"./Title.js\"\nimport ErrorMsg from \"./ErrorMsg.js\"\nimport Utils from \"./Utils.js\"\nimport ContextMenu from \"./ContextMenu.js\"\nimport Ads from \"./Ads.js\"\nimport Airplay from \"./Airplay.js\"\nimport PiP from \"./PiP.js\"\nimport ChromeCast from \"./ChromeCast.js\"\nimport AudioTracks from \"./AudioTracks.js\"\nimport Mode from \"./Mode.js\"\nimport ActiveState from \"./ActiveState.js\"\nimport Panel from \"./Panel.js\"\n\nexport default class UI extends Component {\n\n constructor(props) {\n super(props)\n this.feature = \"ui\"\n this.state.playState = \"ready\"\n this.state.open = false\n this.state.dragging = false\n this.state.mode = this.config.mode\n this.isTouchDevice = akamai.amp.Utils.isTouch\n this.contextMenuClick = this.contextMenuClick.bind(this)\n this.autoHide = (this.config.autoHide != null) ? this.config.autoHide : 3\n this.timeout = null\n\n const dispatcher = new akamai.amp.EventDispatcher(this)\n for (let key in dispatcher) {\n let value = dispatcher[key]\n if (typeof value == \"function\") {\n this[key] = value.bind(dispatcher)\n }\n }\n this.dispatcher = dispatcher\n\n this.bindHandlers([\"onMouseEnter\", \"onMouseLeave\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onContextMenu\", \"onClick\"])\n }\n\n getChildContext() {\n return {\n player: this.props.player,\n config: this.props.config,\n plugin: this\n }\n }\n\n get adMode() {\n return (this.config.adMode != null) ? this.config.adMode : Mode.AUTO\n }\n\n get debug() {\n return (this.config.debug != null) ? this.config.debug : this.player.config.debug\n }\n\n get container() {\n return this.refs.container\n }\n\n get ads() {\n return this.refs.ads\n }\n\n get components() {\n return this.refs\n }\n\n get controls() {\n return this.refs.controls\n }\n\n get mode() {\n return this.state.mode || Mode.AUTO\n }\n\n set mode(value) {\n value = value || Mode.AUTO\n const mode = this.state.mode\n this.container.classList.update({\n [`amp-controls-${mode}`]: false,\n [`amp-controls-${value}`]: true\n })\n this.setState({mode: value})\n\n if (value === Mode.AUTO) {\n if (this.idleUtil == null) {\n this.idleUtil = new akamai.amp.IdleUtil(this.player.viewComponent, this.autoHide * 1000)\n this.idleUtil.addEventListener(\"activechange\", (event) => {\n this.activeState = (event.detail.active !== true) ? ActiveState.INACTIVE : ActiveState.ACTIVE\n })\n }\n this.idleUtil.start()\n }\n else {\n if (this.idleUtil != null) {\n this.idleUtil.stop()\n }\n }\n\n // TODO: Remove these when controls plugin is completely removed from amp-web\n this.player.container.classList.remove(`amp-controls-${mode}`)\n this.player.container.classList.add(`amp-controls-${value}`)\n }\n\n get dragging() {\n return this.state.dragging\n }\n\n set dragging(value) {\n if (value == true) {\n this.stopActiveTimeout()\n }\n else {\n this.startActiveTimeout()\n }\n this.container.classList.update({[`amp-dragging`]: value})\n this.setState({dragging: value})\n }\n\n get open() {\n return this.state.open\n }\n\n set open(value) {\n this.container.classList.update({[`amp-open`]: value})\n this.setState({open: value})\n }\n\n onready(event) {\n\n if (this.config.mode != null)\n this.mode = this.config.mode\n\n this.container.classList.add(`amp-${this.player.mode}`)\n this.container.classList.update({\n \"amp-cc-active\": this.player.captioning && !this.player.captioning.hidden,\n \"amp-touch\": this.isTouchDevice\n })\n\n if (this.player.captioning != null) {\n this.player.captioning.addEventListener(\"visibilitychange\", this.onvisibilitychange.bind(this))\n }\n\n this.player.container.addEventListener(\"mouseenter\", this.onMouseEnter)\n this.player.container.addEventListener(\"mouseleave\", this.onMouseLeave)\n\n // Workaround for UI flicker and FOUT\n setTimeout(() => {\n this.container.element.style.display = \"block\"\n }, 10)\n }\n\n ondestroy() {\n this.stopActiveTimeout()\n this.player.container.removeEventListener(\"mouseenter\", this.onMouseEnter)\n this.player.container.removeEventListener(\"mouseleave\", this.onMouseLeave)\n }\n\n onvisibilitychange(event) {\n this.container.classList.update({\"amp-cc-active\": event.detail})\n }\n\n onplaybacktargetchange(event) {\n this.container.classList.update({\"amp-remote-playback\": (event.detail.value != \"amp\")})\n }\n\n onmediachange(event) {\n const media = this.player.media\n this.container.classList.update({\"amp-audio\": media.medium == \"audio\"})\n this.container.classList.update({\"amp-text-tracks\": media.tracks && media.tracks.length})\n }\n\n onmutemouseover(event) {\n \tthis.stopActiveTimeout()\n \tthis.refs.volume.open = true\n }\n\n onmutemouseout(event) {\n \tthis.stopActiveTimeout()\n \tthis.timeout = setTimeout(() => {\n this.refs.volume.open = false\n }, 350)\n }\n\n onvolumemouseover(event) {\n \tthis.stopActiveTimeout()\n }\n\n onfullscreenchange(event) {\n this.container.classList.update({\"amp-full-screen\": event.detail})\n }\n\n onmutechange(event) {\n this.container.classList.update({\"amp-muted\": event.detail})\n }\n\n onplaystatechange(event) {\n const updates = {\n [`amp-waiting`]: false,\n [`amp-${event.detail.previous}`]: false,\n [`amp-${event.detail.value}`]: true\n }\n this.container.classList.update(updates)\n }\n\n oncanplaythrough(event) {\n this.container.classList.update({\"amp-can-play\": true})\n }\n\n onplaying(event) {\n this.container.classList.update({\"amp-waiting\": false})\n this.container.classList.remove(\"amp-qualitychange-manual\")\n this.container.classList.remove(\"amp-qualitychange-auto\")\n\n if (!this.isTouchDevice)\n return\n\n this.startActiveTimeout()\n }\n\n onwaiting(event) {\n this.container.classList.update({\"amp-waiting\": true})\n this.player.once(\"timeupdate\", () => {\n if (this.player.seeking === false) {\n this.container.classList.update({\"amp-waiting\": false})\n }\n })\n }\n\n onbusy(event) {\n this.container.classList.update({\"amp-busy\": event.detail})\n }\n\n onseeking(event) {\n this.container.classList.update({\"amp-waiting\": true})\n }\n\n onseeked(event) {\n this.container.classList.update({\"amp-waiting\": false})\n }\n\n onerror(event) {\n this.container.classList.update({\"amp-error\": true})\n }\n\n onislive(event) {\n this.container.classList.update({\"amp-is-live\": event.detail})\n }\n\n ontemporaltypechange(event) {\n const updates = {\n [`amp-${event.detail.previous}`]: false,\n [`amp-${event.detail.value}`]: true\n }\n this.container.classList.update(updates)\n }\n\n onqualitychanging(event) {\n this.container.classList.add(`amp-qualitychange-${this.player.qualityMode}`)\n }\n\n onqualitychange(event) {\n this.container.classList.remove(`amp-qualitychange-${this.player.qualityMode}`)\n }\n\n onqualityswitched(event) {\n this.onqualitychange(event)\n }\n\n togglePlayPause() {\n if (this.player.playState == \"ready\" || this.player.paused) {\n this.player.play()\n } else {\n this.player.pause()\n }\n }\n\n set activeState(value) {\n const active = (value == ActiveState.ACTIVE)\n const inactive = (value == ActiveState.INACTIVE)\n const idle = (value == ActiveState.IDLE)\n this.container.classList.update({\"amp-active\": active, \"amp-inactive\": inactive, \"amp-idle\": idle})\n\n // TODO: Remove these when controls plugin is completely removed from amp-web\n let action = active ? \"add\" : \"remove\"\n this.player.container.classList[action](\"amp-active\")\n\n action = inactive ? \"add\" : \"remove\"\n this.player.container.classList[action](\"amp-inactive\")\n\n if (inactive === true) {\n for (let key in this.refs) {\n const value = this.refs[key]\n if (value instanceof Panel && value.open === true) {\n value.open = false\n }\n }\n this.startActiveTimeout()\n }\n }\n\n get activeState() {\n switch (true) {\n case this.container.classList.contains(\"amp-active\"):\n return ActiveState.ACTIVE\n\n case this.container.classList.contains(\"amp-inactive\"):\n return ActiveState.INACTIVE\n\n default:\n return ActiveState.IDLE\n }\n }\n\n get adInProgress() {\n return (this.player.ads && this.player.ads.inProgress)\n }\n\n startActiveTimeout() {\n if(this.refs.settingsPanel.open) {\n this.refs.settingsPanel.close()\n this.refs.volume.open = false\n }\n this.stopActiveTimeout()\n this.timeout = setTimeout(() => {\n this.activeState = ActiveState.IDLE\n }, this.autoHide * 1000)\n }\n\n stopActiveTimeout() {\n clearTimeout(this.timeout)\n }\n\n onMouseEnter(event) {\n this.stopActiveTimeout()\n this.activeState = ActiveState.ACTIVE\n }\n\n onMouseLeave(event) {\n const element = document.elementFromPoint(event.clientX, event.clientY)\n if (this.player.playState == \"ready\" || this.open || this.player.container.contains(element))\n return\n\n if (this.dragging) {\n const handler = () => {\n window.removeEventListener(\"mouseup\", handler)\n if (!akamai.amp.Utils.isMouseOverElement(this.container.element))\n this.onMouseLeave(event)\n }\n window.addEventListener(\"mouseup\", handler)\n return\n }\n\n this.activeState = ActiveState.INACTIVE\n }\n\n onClick() {\n if (this.isTouchDevice) {\n if (this.activeState == ActiveState.ACTIVE) {\n this.activeState = ActiveState.IDLE\n }\n else {\n this.activeState = ActiveState.ACTIVE\n this.startActiveTimeout()\n }\n }\n else {\n this.togglePlayPause()\n }\n }\n\n isFocused(element) {\n const container = this.container.element\n return (element == container || container.contains(element))\n }\n\n onFocus(event) {\n const focused = this.isFocused(event.target)\n this.focused = (event.target.nodeName != \"BUTTON\" && focused)\n if (focused)\n this.container.classList.add(\"amp-active\")\n }\n\n onBlur(event) {\n const focused = this.isFocused(event.target)\n this.focused = (event.target.nodeName != \"BUTTON\" && focused)\n if (!focused)\n this.onMouseLeave(event)\n }\n\n onKeyDown(event) {\n switch (event.keyCode) {\n case 77: // M\n this.player.muted = !this.player.muted\n break;\n\n case 67: // C\n this.player.captioning.hidden = !this.player.captioning.hidden\n break;\n\n case 70: // F\n this.player.displayState == this.player.displayState == 'full-screen'? this.player.exitFullScreen() : this.player.enterFullScreen()\n break;\n }\n\n if (this.focused == false)\n return\n\n switch (event.keyCode) {\n case 13: // Enter\n case 32: // Space\n this.togglePlayPause()\n break;\n\n case 39: // Left\n case 37: // Right\n if (this.refs.volume.focused === false)\n this.refs.progress.onKeyDown(event)\n break;\n\n case 38: // Up\n case 40: // Down\n if (this.refs.progress.focused === false)\n this.refs.volume.onKeyDown(event)\n break;\n }\n }\n\n contextMenuClick(event) {\n if (/selectable/.test(event.target.className))\n return false\n this.removeContextMenu(event)\n return false\n }\n\n removeContextMenu(event) {\n document.body.removeEventListener(\"click\", this.contextMenuClick)\n const parent = document.body\n parent.removeChild(this.contextMenu)\n this.contextMenu = null\n }\n\n onContextMenu(event) {\n if (this.debug === true)\n return\n\n event.preventDefault()\n\n const parent = document.body\n const contextMenu = (\n \n )\n\n if (this.contextMenu != null)\n this.removeContextMenu()\n\n this.contextMenu = document.createElement(\"div\")\n parent.appendChild(this.contextMenu)\n document.body.addEventListener(\"click\", this.contextMenuClick)\n ReactDOM.render(contextMenu, this.contextMenu)\n }\n\n replay() {\n this.player.replay()\n }\n\n render() {\n return (\n \n
    \n \n \n <Ads ref=\"ads\" />\n <PauseOverlay ref=\"pauseOverlay\" />\n <BufferingOverlay ref=\"bufferingOverlay\" />\n <Progress ref=\"progress\" />\n <Container ref=\"controls\" className=\"amp-controls amp-bar\">\n <PlayPause ref=\"playpause\" />\n <JumpBack ref=\"jumpback\"/>\n <JumpForward ref=\"jumpforward\"/>\n <div ref=\"timeDisplay\" className=\"amp-time-display\">\n <CurrentTime ref=\"currentTime\" />\n <span ref=\"timeSeparator\" className=\"amp-time-separator\" />\n <Duration ref=\"duration\" />\n <Live ref=\"live\" />\n </div>\n <Mute ref=\"mute\" />\n <Volume ref=\"volume\" />\n <div ref=\"spacerLeft\" className=\"amp-spacer\" />\n <div ref=\"spacerRight\" className=\"amp-spacer\" />\n <ShareButton ref=\"share\" panel=\"sharePanel\" />\n <CaptionToggleButton ref=\"cc\" />\n <SettingsButton ref=\"settings\" panel=\"settingsPanel\" />\n <PiP ref=\"pip\" />\n <Airplay ref=\"airplay\" />\n <ChromeCast ref=\"chromecast\" />\n <Fullscreen ref=\"fullscreen\" />\n </Container>\n <Unmute ref=\"unmute\" />\n <SharePanel ref=\"sharePanel\" />\n <SettingsPanel ref=\"settingsPanel\" />\n <ErrorMsg ref=\"error\" />\n {this.state.contextMenu}\n </Container>\n )\n }\n\n destroy() {\n ReactDOM.unmountComponentAtNode(this._container)\n }\n\n static get childContextTypes() {\n return {\n player: PropTypes.object,\n config: PropTypes.object,\n plugin: PropTypes.object\n }\n }\n\n static create(player, config, key) {\n if (config.native === true) {\n const ui = {config}\n player.once(\"ready\", () => player.mediaElement.controls = true)\n if (player.ads != null) {\n ui.ads = {\n container: document.createElement(\"div\")\n }\n player.container.appendChild(ui.ads.container)\n }\n return Promise.resolve(ui)\n }\n\n return new Promise((resolve, reject) => {\n player.once(\"ready\", () => {\n if (player.mediaElement.setPlayerProperty != null)\n player.mediaElement.setPlayerProperty(\"controlsMode\", \"none\")\n })\n\n const ui = ReactDOM.render(<UI player={player} config={config} />, player.container)\n player.adContainer = ui.ads.container\n resolve(ui)\n })\n }\n}\n","import \"./main.less\"\nimport UI from \"./UI.js\"\n\nakamai.amp.AMP.registerPlugin(\"react\", [\"html\", \"flash\", \"external\"], UI.create)\n\nexport {default as Component} from \"./Component.js\"\nexport {default as Container} from \"./Container.js\"\nexport {default as ClassList} from \"./ClassList.js\"\nexport {default as Panel} from \"./Panel.js\"\nexport {default as PanelMenu} from \"./PanelMenu.js\"\nexport {default as PanelControl} from \"./PanelControl.js\"\nexport {default as ListItem} from \"./ListItem.js\"\nexport {default as Mode} from \"./Mode.js\"\n\nexport {UI}\n"],"names":["ClassList","component","tokens","token","prepend","contains","unshift","push","indexOf","index","i","splice","remove","add","tokenMap","className","toString","state","setState","join","Component","props","context","player","l10n","classList","key","getLocalizedString","handlers","length","forEach","handler","bind","nextProps","nextState","playerEventMap","event","addEventListener","type","removeEventListener","propsList","textContent","children","config","plugin","trim","refs","element","ReactDOM","findNode","data","events","values","akamai","amp","Events","PropTypes","object","React","Container","components","slice","Utils","createUID","filter","item","parent","dom","appendChild","removeChild","concat","Control","mouseFocus","focused","altText","bindHandlers","update","viewComponent","scrollTop","onKeyPress","keyCode","onAction","onClick","value","onChange","title","tabIndex","onMouseDown","onMouseUp","onMouseOver","onMouseOut","onFocus","onBlur","onKeyDown","aria","PanelControl","panel","toggle","PlayPause","playState","replay","play","pause","PauseOverlay","BufferingOverlay","time","duration","parseInt","isNaN","strTime","formatZeroFill","str","number","precision","factor","Math","pow","round","pageX","window","scrollX","pageXOffset","targetTouches","pageY","scrollY","pageYOffset","enabled","disabled","n","parseFloat","isFinite","CurrentTime","currentTime","detail","formatTimecode","Live","isLive","goLive","liveClickHandler","Duration","Slider","percent","min","range","max","dragging","increment","direction","valueText","format","isNumber","offset","getBoundingClientRect","pos","getEventPos","y","top","height","x","left","width","move","code","stopPropagation","preventDefault","onHandleMouseUp","onHandleMouseMove","change","onMouseMove","onHandleMouseDown","clamp","markers","Object","assign","Progress","textVisible","isTouch","ondurationchange","onadtimeupdate","onaddurationchange","cues","clear","cue","startTime","addComponent","textPercent","ads","inProgress","states","minClampValue","text","clientWidth","maxClampValue","textValue","visibility","Volume","volume","_open","timeout","open","dispatchEvent","Event","setTimeout","isVolumeSettable","retval","bottom","Toggle","toggled","onlabel","offlabel","Mute","level","muted","Unmute","dismissed","Fullscreen","displayState","enterFullScreen","exitFullScreen","SettingsButton","ListItem","focus","previousElementSibling","nextElementSibling","shiftKey","parentNode","sharePanel","close","settingsPanel","tabable","document","getElementsByClassName","Panel","closeHandler","undefined","target","activeIndex","gotoSettings","items","listOptions","map","clickHandler","isOptionSelected","label","backHandler","activeState","stopActiveTimeout","onopen","startActiveTimeout","onclose","PanelMenu","keyDown","Home","settingsChange","language","captioning","tracks","track","lang","localization","getLanguageString","OptionsList","selected","hidden","viewChange","Options","captionsettings","OptionsPanel","options","len","test","setting","r","g","b","replace","a","Color","parts","match","radix","BackgroundColor","labels","select","BackgroundOpacity","CharacterEdgeStyle","FontColor","FontFamily","FontOpacity","FontSize","WindowColor","WindowOpacity","ScrollType","EdgeColor","EdgeOpacity","CaptionData","CaptionSettings","languages","settings","captions","changeView","changeSettings","initSettingLabels","firstChild","toState","selectTrackByLanguage","color","visible","prevProps","prevState","getCurrentPage","Quality","qualityLevels","onqualitylevelsloaded","onqualitychanging","quality","bitrate","redraw","autoLevel","qualityMode","findIndex","levelObject","qualityIndex","e","PlaybackRate","option","playbackRate","AudioTracks","audioTracks","activeIds","oncanplaythrough","id","getString","SettingsPanel","settingsLevel","bitrateLabel","captioningSettingState","autoplay","brLabel","firstElem","childNodes","log","isCaptionEnabled","componentEnabled","isQualityEnabled","audioTracksAvailable","qualityRef","playbackRef","changeState","mode","currentAudioTrackLabel","autoplayToggle","ShareButton","SharePanel","url","media","dispatch","provider","link","embed","CaptionToggleButton","forceUpdate","JumpBack","ended","JumpForward","Poster","src","evaluateBindings","poster","Title","ErrorMsg","error","MSG_ERROR_DEFAULT","__html","ContextMenu","menuItems","version","akamaiGetViewerId","style","Ads","msg","controlsMode","onadbreakstart","onadbreakend","onadstarted","onadtimeremaining","onadimpression","container","resize","adVO","adMode","position","totalAds","ceil","Airplay","available","playing","isAvailable","video","mediaElement","setAttribute","availability","webkitCurrentPlaybackTargetIsWireless","webkitShowPlaybackTargetPicker","WebKitPlaybackTargetAvailabilityEvent","PiP","webkitSetPresentationMode","webkitPresentationMode","webkitSupportsPresentationMode","ChromeCast","chromecast","launch","Mode","ActiveState","UI","feature","isTouchDevice","contextMenuClick","autoHide","dispatcher","EventDispatcher","onvisibilitychange","onMouseEnter","onMouseLeave","display","medium","updates","previous","once","seeking","onqualitychange","paused","IDLE","ACTIVE","elementFromPoint","clientX","clientY","isMouseOverElement","INACTIVE","togglePlayPause","isFocused","nodeName","progress","removeContextMenu","body","contextMenu","debug","createElement","render","onContextMenu","unmountComponentAtNode","_container","AUTO","controls","idleUtil","IdleUtil","active","start","stop","inactive","idle","action","native","ui","Promise","resolve","reject","setPlayerProperty","adContainer","AMP","registerPlugin","create"],"mappings":"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"}