{"version":3,"file":"React.js","sources":["../../../../src/ClassList.js","../../../../src/Component.js","../../../../src/Container.js","../../../../src/Interactive.js","../../../../src/Control.js","../../../../src/PanelControl.js","../../../../src/PlayPause.js","../../../../src/Button.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/Fullscreen.js","../../../../src/SettingsButton.js","../../../../src/ListItem.js","../../../../src/ListTitle.js","../../../../src/Panel.js","../../../../src/PanelMenu.js","../../../../src/captionsettings/Home.js","../../../../src/captionsettings/Options.js","../../../../src/captionsettings/OptionsPanel.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/captionsettings/Color.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/Unmute.js","../../../../src/Auth.js","../../../../src/Locales.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 Interactive extends Component {\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-component\")\n this.classList.add(\"amp-icon\")\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\n }\n\n onMouseOut(event) {\n\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 Interactive from \"./Interactive.js\"\n\nexport default class Control extends Interactive {\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-control\")\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 Interactive from \"./Interactive.js\"\n\nexport default class Button extends Interactive {\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-button\")\n this.classList.add(\"amp-bg\")\n this.classList.add(\"amp-hover\")\n }\n}\n","import Button from \"./Button.js\"\n\nexport default class PauseOverlay extends Button {\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 return akamai.amp.Utils.formatTimecode(time, duration)\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, length) {\n return akamai.amp.Utils.formatZeroFill(time, length)\n }\n\n /*\n * Converts a date into a time strimg based on a ISO 8601 formatted time string.\n *\n * @param {number|Date} time\n * The date\n *\n * @param {string} [format=\"h:mm:ss A\"]\n * The ISO 8601 format string\n *\n * @param {string} [timezone=\"\"]\n * The timezone string\n *\n * @return {string}\n * The formattted time string\n */\n static formatTime(time, format, timezone) {\n return akamai.amp.Utils.formatTime(time, format, timezone)\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 static rgbToHsl({r, g, b, a = 1}) {\n r /= 255\n g /= 255\n b /= 255\n\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n let h, s, l = (max + min) / 2\n\n if (max === min) {\n h = s = 0\n }\n else {\n const d = max - min\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break\n case g: h = (b - r) / d + 2; break\n case b: h = (r - g) / d + 4; break\n }\n h /= 6\n }\n\n h = Math.round(h * 360)\n s = Math.round(s * 100)\n l = Math.round(l * 100)\n\n return {h, s, l, a}\n }\n\n static hueToRgb(p, q, t) {\n if (t < 0) {\n t += 1\n }\n if (t > 1) {\n t -= 1\n }\n if (t < 1/6) {\n return p + (q - p) * 6 * t\n }\n if (t < 1/2) {\n return q\n }\n if (t < 2/3) {\n return p + (q - p) * (2/3 - t) * 6\n }\n return p\n }\n\n static hslToRgb({h, s, l, a = 1}) {\n let r, g, b\n\n h /= 360\n s /= 100\n l /= 100\n\n if (s === 0) {\n r = g = b = l\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s\n const p = 2 * l - q\n r = this.hueToRgb(p, q, h + 1/3)\n g = this.hueToRgb(p, q, h)\n b = this.hueToRgb(p, q, h - 1/3)\n }\n\n r = Math.round(r * 255)\n g = Math.round(g * 255)\n b = Math.round(b * 255)\n\n return {r, g, b, a}\n }\n\n static shade(rgb, brightness) {\n const hsl = Utils.rgbToHsl(rgb)\n hsl.l += (brightness * 100)\n return Utils.hslToRgb(hsl)\n }\n\n static color(css) {\n let rgb\n\n if (/^#/.test(css)) {\n rgb = {\n r: parseInt(css.slice(1, 3), 16),\n g: parseInt(css.slice(3, 5), 16),\n b: parseInt(css.slice(5, 7), 16),\n a: parseInt(css.slice(7), 16)\n }\n }\n else if (/^rgb/.test(css)) {\n const parts = css.match(/[0-9\\.]+/g)\n rgb = {\n r: parseInt(parts[0]),\n g: parseInt(parts[1]),\n b: parseInt(parts[2]),\n a: parseFloat(parts[3])\n }\n }\n\n if (isNaN(rgb.a)) {\n rgb.a = 1\n }\n\n return rgb\n }\n\n static css({r, g, b, a = 1}) {\n return `rgba(${r}, ${g}, ${b}, ${a || 1})`\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.classList.remove(\"amp-icon\")\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\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([\n \"onMouseMove\",\n \"onaddurationchange\",\n \"onadtimeupdate\",\n \"onaddurationchange\",\n \"onadmanagerloaded\",\n \"onaddtrack\",\n \"onremovetrack\"\n ])\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 const timestamp = this.config.timestamp\n\n if (timestamp != null && Utils.isNumber(value)) {\n return Utils.formatTime(this.player.toUTC(value), timestamp.format, timestamp)\n }\n else {\n return Utils.formatTimecode(value, this.max)\n }\n }\n\n updateMarkers() {\n const cues = this.player.cues\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 onready() {\n this.player.addEventListener(\"adbreakend\", this.ondurationchange)\n this.player.addEventListener(\"adtimeupdate\", this.onadtimeupdate)\n this.player.addEventListener(\"addurationchange\", this.onaddurationchange)\n if (this.player.previewTracks != null) {\n this.player.previewTracks.addEventListener(\"addtrack\", this.onaddtrack)\n this.player.previewTracks.addEventListener(\"removetrack\", this.onremovetrack)\n }\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 onaddtrack(event) {\n this.track = event.detail\n }\n\n onremovetrack(event) {\n this.track = null\n }\n\n oncueschange(event) {\n this.updateMarkers()\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 this.updateMarkers()\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 percent = this.state.textPercent\n const width = this.element ? this.element.clientWidth : 0\n const previewWidth = this.refs.preview ? this.refs.preview.clientWidth : 0\n const previewHeight = this.refs.preview ? this.refs.preview.clientHeight : 0\n const pos = percent * width\n const offset = previewWidth / 2\n const time = percent * this.player.duration\n const styles = {\n preview: {\n left: `${akamai.amp.Utils.clamp(pos - offset, 0, width - previewWidth)}px`,\n top: `-${previewHeight}px`,\n visibility: this.state.textVisible\n },\n thumb: {\n display: \"none\"\n }\n }\n\n if (this.track) {\n let cue = this.track.getCueAt(time) || {}\n styles.thumb = cue.style || {}\n }\n\n return (\n
\n \n
\n
\n
{this.format(time)}
\n
\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 if (this.config.volume) {\n this.direction = this.config.volume.direction ? this.config.volume.direction : \"\"\n if (this.direction === \"vertical\") {\n this.classList.add(\"amp-vertical\")\n }\n }\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n onready(event) {\n this.open = this.direction !== \"vertical\"\n this.classList.update({\"amp-open\": this._open})\n }\n\n onseeked(event) {\n this.open = false\n }\n\n onmediachange(event) {\n this.open = false\n }\n\n set open(value) {\n if(this.direction == \"vertical\") {\n this._open = value;\n this.classList.update({\"amp-open\": this._open})\n }\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 this.plugin.dispatchEvent(new akamai.amp.Event(\"volumemouseover\"))\n this.open = true\n this.player.timers.clearTimeout(this.timeout)\n }\n\n onMouseOut(event) {\n this.plugin.dispatchEvent(new akamai.amp.Event(\"volumemouseout\"))\n this.player.timers.clearTimeout(this.timeout)\n this.timeout = this.player.timers.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 const vertical = (this.direction == \"vertical\")\n const prop = (vertical) ? \"height\" : \"width\"\n const style = (vertical) ? {bottom: percent} : {left: percent}\n\n return (\n
\n {vertical &&
}\n
\n
\n
\n {this.children}\n
\n
\n )\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 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 Interactive from \"./Interactive.js\"\n\nexport default class ListItem extends Interactive {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-list-item\")\n this.classList.add(\"amp-menu-item\")\n this.classList.add(\"amp-hover\")\n this.classList.remove(\"amp-icon\")\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 this.player.timers.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 ListItem from \"./ListItem.js\"\n\nexport default class ListTitle extends ListItem {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-list-title\")\n this.classList.add(\"amp-menu-title\")\n this.classList.remove(\"amp-list-item\")\n this.classList.remove(\"amp-menu-item\")\n this.classList.remove(\"amp-hover\")\n this.state.direction = \"left\"\n }\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n render() {\n return (\n
\n \n {this.props.title}\n {this.children}\n
\n )\n }\n\n}\n","import Component from \"./Component.js\"\nimport ListItem from \"./ListItem.js\"\nimport ListTitle from \"./ListTitle.js\"\n\nexport default class Panel extends Component {\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-bg\")\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.stopIdleTimeout()\n if (this.props.onopen)\n this.props.onopen(this)\n } else {\n this.context.plugin.startIdleTimeout()\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 {this.getLocalizedString(object.label)}\n \n })\n\n return
\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 this.classList.add(\"amp-menu\")\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\"\nimport ListTitle from \"../ListTitle.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:this.getLocalizedString('MSG_TOGGLE_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 this.props.viewChange(event, \"options\")} className=\"amp-option-button\">{this.getLocalizedString(\"MSG_SETTINGS_OPTIONS\")}\n {OptionsList}\n
\n )\n }\n}\n","import Panel from \"../Panel.js\"\nimport ListItem from \"../ListItem.js\"\nimport ListTitle from \"../ListTitle.js\"\n\nexport default class Options extends Panel {\n\n constructor(props, context) {\n super(props, context)\n this.listOptions = [\n {label: this.getLocalizedString(\"MSG_OPTION_FONT_FAMILY\"), key: \"fontFamily\", value: \"Arial\"},\n {label: this.getLocalizedString(\"MSG_OPTION_FONT_COLOR\"), key: \"fontColor\", value: \"Red\"},\n {label: this.getLocalizedString(\"MSG_OPTION_FONT_SIZE\"), key: \"size\", value: \"100%\"},\n {label: this.getLocalizedString(\"MSG_OPTION_FONT_OPACITY\"), key: \"fontOpacity\", value: \"0%\"},\n {label: this.getLocalizedString(\"MSG_OPTION_BACKGROUND_COLOR\"), key: \"backgroundColor\", value: \"Black\"},\n {label: this.getLocalizedString(\"MSG_OPTION_BACKGROUND_OPACITY\"), key: \"backgroundOpacity\", value: \"0%\"},\n {label: this.getLocalizedString(\"MSG_OPTION_WINDOW_COLOR\"), key: \"windowColor\", value: \"Red\"},\n {label: this.getLocalizedString(\"MSG_OPTION_WINDOW_OPACITY\"), key: \"windowOpacity\", value: \"0%\"},\n {label: this.getLocalizedString(\"MSG_OPTION_EDGE_STYLE\"), key: \"edgeType\", value: \"None\"},\n {label: this.getLocalizedString(\"MSG_OPTION_EDGE_COLOR\"), key: \"edgeColor\", value: \"Red\"},\n {label: this.getLocalizedString(\"MSG_OPTION_EDGE_OPACITY\"), key: \"edgeOpacity\", value: \"Red\"},\n {label: this.getLocalizedString(\"MSG_OPTION_SCROLL_TYPE\"), 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\")} title={this.getLocalizedString(\"MSG_SETTINGS_OPTIONS\")}>\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 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","import OptionsPanel from \"./OptionsPanel\"\n\nexport default class BackgroundColor extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = this.getLocalizedString(\"MSG_OPTION_BACKGROUND_COLOR\")\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 = this.getLocalizedString(\"MSG_OPTION_BACKGROUND_OPACITY\")\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 = this.getLocalizedString(\"MSG_OPTION_EDGE_STYLE\")\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\"\n\nexport default class FontColor extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = this.getLocalizedString(\"MSG_OPTION_FONT_COLOR\")\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 = this.getLocalizedString(\"MSG_OPTION_FONT_FAMILY\")\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 = this.getLocalizedString(\"MSG_OPTION_FONT_OPACITY\")\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 = this.getLocalizedString(\"MSG_OPTION_FONT_SIZE\")\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\"\n\nexport default class WindowColor extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = this.getLocalizedString(\"MSG_OPTION_WINDOW_COLOR\")\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 = this.getLocalizedString(\"MSG_OPTION_WINDOW_OPACITY\")\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 = this.getLocalizedString(\"MSG_OPTION_SCROLL_TYPE\")\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\"\n\nexport default class EdgeColor extends OptionsPanel {\n\n constructor(props, context) {\n super(props, context)\n\n this.state.title = this.getLocalizedString(\"MSG_OPTION_EDGE_COLOR\")\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 = this.getLocalizedString(\"MSG_OPTION_EDGE_OPACITY\")\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","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 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: \"MSG_COLOR_WHITE\", value: new Color(255, 255, 255)},\n {label: \"MSG_COLOR_YELLOW\", value: new Color(255, 255, 0)},\n {label: \"MSG_COLOR_GREEN\", value: new Color(0, 128, 0)},\n {label: \"MSG_COLOR_CYAN\", value: new Color(0, 255, 255)},\n {label: \"MSG_COLOR_BLUE\", value: new Color(0, 0, 255)},\n {label: \"MSG_COLOR_MAGENTA\", value: new Color(255, 0, 255)},\n {label: \"MSG_COLOR_RED\", value: new Color(255, 0, 0)},\n {label: \"MSG_COLOR_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: \"MSG_COLOR_WHITE\", value: new Color(255,255,255)},\n {label: \"MSG_COLOR_YELLOW\", value: new Color(255,255,0)},\n {label: \"MSG_COLOR_GREEN\", value: new Color(0,128,0)},\n {label: \"MSG_COLOR_CYAN\", value: new Color(0,255,255)},\n {label: \"MSG_COLOR_BLUE\", value: new Color(0,0,255)},\n {label: \"MSG_COLOR_MAGENTA\", value: new Color(255,0,255)},\n {label: \"MSG_COLOR_RED\", value: new Color(255,0,0)},\n {label: \"MSG_COLOR_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: \"MSG_EDGE_NONE\", value: \"text-shadow: 0px 0px 0px\"},\n {label: \"MSG_EDGE_DEPRESSED\", value: \"text-shadow: 0px 1px 0px\"},\n {label: \"MSG_EDGE_LEFT_SHADOW\", value: \"text-shadow: -3px 3px 2px\"},\n {label: \"MSG_EDGE_RAISED\", value: \"text-shadow: 0px 1px 1px\"},\n {label: \"MSG_EDGE_RIGHT_SHADOW\", value: \"text-shadow: 3px 3px 2px\"},\n {label: \"MSG_EDGE_UNIFORM\", value: \"text-shadow: 0px 0px 4px\"}\n ],\n edgeColor: [\n {label: \"MSG_COLOR_WHITE\", value: new Color(255, 255, 255)},\n {label: \"MSG_COLOR_YELLOW\", value: new Color(255, 255, 0)},\n {label: \"MSG_COLOR_GREEN\", value: new Color(0, 128, 0)},\n {label: \"MSG_COLOR_CYAN\", value: new Color(0, 255, 255)},\n {label: \"MSG_COLOR_BLUE\", value: new Color(0, 0, 255)},\n {label: \"MSG_COLOR_MAGENTA\", value: new Color(255, 0, 255)},\n {label: \"MSG_COLOR_RED\", value: new Color(255, 0, 0)},\n {label: \"MSG_COLOR_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: \"MSG_SCROLL_POPOUT\", value: \"popout\"},\n {label: \"MSG_SCROLL_ROLLON\", value: \"rollon\"},\n {label: \"MSG_SCROLL_PAINTON\", value: \"painton\"}\n ],\n windowColor: [\n {label: \"MSG_COLOR_WHITE\", value: new Color(255, 255, 255)},\n {label: \"MSG_COLOR_YELLOW\", value: new Color(255, 255, 0)},\n {label: \"MSG_COLOR_GREEN\", value: new Color(0, 128, 0)},\n {label: \"MSG_COLOR_CYAN\", value: new Color(0, 255, 255)},\n {label: \"MSG_COLOR_BLUE\", value: new Color(0, 0, 255)},\n {label: \"MSG_COLOR_MAGENTA\", value: new Color(255, 0, 255)},\n {label: \"MSG_COLOR_RED\", value: new Color(255, 0, 0)},\n {label: \"MSG_COLOR_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 this.player.timers.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`] = this.getLocalizedString(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`] = this.getLocalizedString(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: this.getLocalizedString(\"MSG_QUALITY_AUTO\"), value: \"0.25\" }\n ]\n this.qualityLevels = []\n this.state.title = this.getLocalizedString(\"MSG_SETTINGS_QUALITY\");\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 = this.getLocalizedString(\"MSG_SETTINGS_SPEED\")\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 this.player.timers.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 {this.getLocalizedString(\"MSG_SETTINGS_SUBTITLES\")}\n \n {this.player.captioning.hidden ? \"Off\": this.player.localization.getLanguageString(this.player.captioning.track.language)}\n \n }\n { isQualityEnabled &&\n \n {this.getLocalizedString(\"MSG_SETTINGS_QUALITY\")}\n \n {this.state.bitrateLabel}\n \n }\n { this.player.mode != \"flash\" &&\n \n {this.getLocalizedString(\"MSG_SETTINGS_SPEED\")}\n \n {this.player.playbackRate === 1 ? this.getLocalizedString(\"MSG_SPEED_NORMAL\") : this.player.playbackRate}\n \n }\n { audioTracksAvailable &&\n \n {this.getLocalizedString(\"MSG_SETTINGS_AUDIO\")}\n \n {this.currentAudioTrackLabel()}\n \n }\n {\n \n {this.getLocalizedString(\"MSG_SETTINGS_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 this.player.timers.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(event) {\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(event) {\n this.onadbreakend()\n }\n\n onadimpression(event) {\n const ad = event.detail\n if (ad.type === \"overlay\")\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 Button from \"./Button.js\"\n\nexport default class Unmute extends Button {\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(event) {\n this.player.muted = false\n event.stopPropagation()\n }\n\n render() {\n if (this.state.dismissed === true)\n return null\n\n return (\n
    \n {super.render()}\n
    \n )\n }\n}\n","import Component from \"./Component.js\"\n\nexport default class Auth extends Component {\n\n static get contextTypes() {\n return super.contextTypes\n }\n\n constructor(props, context) {\n super(props, context)\n this.classList.add(\"amp-auth\")\n this.state.children = null\n this.player.addEventListener(akamai.amp.AuthEvents.CHOOSE_PROVIDER, this.onchooseprovider.bind(this))\n }\n\n onchooseprovider(event) {\n // create thumbnail grid\n const list = event.detail\n const items = []\n let label = \"Providers: \"\n const featured = list.featured || []\n featured.forEach((id, index) => {\n const idps = list[id]\n const onclick = this.player.auth.login.bind(this.player.auth, id)\n items.push(\n
    \n {(idps.logo != null) && {idps.name}}\n {idps.name}\n
    \n )\n })\n\n if (items.length > 0) {\n this.classList.add(\"amp-auth-chooser-featured\")\n label = \"Other \"\n }\n\n // populate select menu\n const footprints = list.footprints || []\n const options = []\n\n footprints.forEach((key) => {\n options.push()\n })\n\n list.forEach((idps) => {\n options.push()\n })\n\n const onclick = (event) => {\n const select = document.querySelector(\".amp-auth-chooser-select\")\n const idpId = select.options[select.selectedIndex].value\n this.player.auth.login(idpId)\n }\n\n this.setState({children: (\n
    \n
    Choose your provider
    \n
    \n {items}\n
    \n
    \n
    {label}
    \n \n \n
    \n
    \n )})\n }\n\n get children() {\n return this.state.children\n }\n}\n","export default {\n en: {\n MSG_SETTINGS_SPEED: \"Speed\",\n MSG_OPTION_BACKGROUND_COLOR: \"Background Color\",\n MSG_OPTION_BACKGROUND_OPACITY: \"Background Opacity\",\n MSG_OPTION_EDGE_STYLE: \"Character Edge Style\",\n MSG_OPTION_FONT_COLOR: \"Font Color\",\n MSG_OPTION_FONT_FAMILY: \"Font Family\",\n MSG_OPTION_FONT_OPACITY: \"Font Opacity\",\n MSG_OPTION_FONT_SIZE: \"Font Size\",\n MSG_OPTION_WINDOW_COLOR: \"Window Color\",\n MSG_OPTION_WINDOW_OPACITY: \"Window Opacity\",\n MSG_OPTION_SCROLL_TYPE: \"Scroll Type\",\n MSG_OPTION_EDGE_COLOR: \"Edge Color\",\n MSG_OPTION_EDGE_OPACITY: \"Edge Opacity\",\n MSG_QUALITY_AUTO: \"Auto\",\n MSG_SETTINGS_QUALITY: \"Quality\",\n MSG_SETTINGS_AUDIO: \"Audio\",\n MSG_SPEED_NORMAL: \"Normal\",\n MSG_SETTINGS_AUTOPLAY: \"Autoplay\",\n MSG_SETTINGS_SUBTITLES: \"Subtitles\",\n MSG_SETTINGS_OPTIONS: \"Options\",\n MSG_AD:\"Ad\",\n MSG_OF:\"of\",\n MSG_COLOR_WHITE:\"White\", \n MSG_COLOR_YELLOW:\"Yellow\",\n MSG_COLOR_GREEN:\"Green\", \n MSG_COLOR_CYAN:\"Cyan\",\n MSG_COLOR_BLUE:\"Blue\",\n MSG_COLOR_MAGENTA:\"Magenta\",\n MSG_COLOR_RED:\"Red\",\n MSG_COLOR_BLACK:\"Black\",\n MSG_SCROLL_POPOUT:\"Pop-out\",\n MSG_SCROLL_ROLLON:\"Roll-on\",\n MSG_SCROLL_PAINTON:\"Paint-on\",\n MSG_EDGE_NONE:\"None\", \n MSG_EDGE_DEPRESSED:\"Depressed\", \n MSG_EDGE_LEFT_SHADOW:\"Left Drop Shadow\", \n MSG_EDGE_RAISED:\"Raised\", \n MSG_EDGE_RIGHT_SHADOW:\"Right Drop Shadow\", \n MSG_EDGE_UNIFORM:\"Uniform\",\n MSG_TOGGLE_OFF: \"Off\"\n },\n es: \"#{paths.plugins}/react/es.json\",\n fr: \"#{paths.plugins}/react/fr.json\"\n}","import Component from \"./Component\"\nimport Container from \"./Container\"\nimport PanelControl from \"./PanelControl\"\nimport PlayPause from \"./PlayPause\"\nimport PauseOverlay from \"./PauseOverlay\"\nimport BufferingOverlay from \"./BufferingOverlay\"\nimport CurrentTime from \"./CurrentTime\"\nimport Live from \"./Live\"\nimport Duration from \"./Duration\"\nimport Progress from \"./Progress\"\nimport Volume from \"./Volume\"\nimport Mute from \"./Mute\"\nimport Fullscreen from \"./Fullscreen\"\nimport SettingsButton from \"./SettingsButton\"\nimport SettingsPanel from \"./SettingsPanel\"\nimport ShareButton from \"./ShareButton\"\nimport SharePanel from \"./SharePanel\"\nimport CaptionToggleButton from \"./CaptionToggleButton\"\nimport JumpBack from \"./JumpBack\"\nimport JumpForward from \"./JumpForward\"\nimport Poster from \"./Poster\"\nimport Title from \"./Title\"\nimport ErrorMsg from \"./ErrorMsg\"\nimport Utils from \"./Utils\"\nimport ContextMenu from \"./ContextMenu\"\nimport Ads from \"./Ads\"\nimport Airplay from \"./Airplay\"\nimport PiP from \"./PiP\"\nimport ChromeCast from \"./ChromeCast\"\nimport AudioTracks from \"./AudioTracks\"\nimport Mode from \"./Mode\"\nimport ActiveState from \"./ActiveState\"\nimport Panel from \"./Panel\"\nimport Unmute from \"./Unmute\"\nimport Auth from \"./Auth\"\nimport Locales from \"./Locales\"\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 this.dispatcher = new akamai.amp.EventDispatcher(this)\n \n this.bindHandlers([\"onMouseEnter\", \"onMouseLeave\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onContextMenu\", \"onClick\"])\n }\n\n addEventListener(type, func) { this.dispatcher.addEventListener(type, funct) }\n once(type, func) { this.dispatcher.once(type, func) }\n dispatchEvent(event) { this.dispatcher.dispatchEvent(event) }\n dispatch(type, detail) { this.dispatcher.dispatch(type, detail) }\n removeEventListener(type, func) { this.dispatcher.removeEventListener(type, func) }\n\n getChildContext() {\n return {\n player: this.props.player,\n config: this.props.config,\n plugin: this\n }\n }\n\n get locales() {\n const locales = [Locales]\n if (this.config.locales) {\n locales.push(this.config.locales)\n }\n return locales\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 style() {\n return this.refs.style\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 && !this.isTouchDevice) {\n this.idleUtil = akamai.amp.IdleUtil.create(this.player.viewComponent, this.autoHide * 1000, this.player.timers)\n this.idleUtil.addEventListener(\"activechange\", (event) => {\n const inactive = (this.activeState == ActiveState.INACTIVE) ? ActiveState.IDLE : ActiveState.INACTIVE\n this.activeState = (event.detail.active !== true) ? inactive : ActiveState.ACTIVE\n })\n }\n if (this.idleUtil != null) {\n this.idleUtil.start()\n }\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.stopIdleTimeout()\n }\n else {\n this.startIdleTimeout()\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 get theme() {\n return this.state.theme\n }\n\n set theme(value) {\n if (value == null) {\n this.setState({theme: value})\n this.style.textContent = \"\"\n return\n }\n\n value = Object.assign({\n text: value.foreground || \"#FFFFFF\",\n foreground: \"#DDDDDD\",\n background: \"rgba(51, 51, 51, 0.85)\"\n }, value)\n\n this.setState({theme: value})\n\n const color = Utils.color\n const css = Utils.css\n const shade = Utils.shade\n\n const text = color(value.text)\n const fg = color(value.foreground)\n const bg = color(value.background)\n const bgH = shade(bg, 0.1)\n const fgH = shade(fg, 0.1)\n\n this.style.textContent = `\n .amp-ui { color: ${value.text};}\n .amp-bg { background-color: ${value.background};}\n .amp-hover:hover { background-color: ${css(bgH)}; }\n .amp-icon { color: ${value.foreground}; }\n .amp-icon:hover { color: ${css(fgH)}; }\n .amp-slider .amp-handle { background-color: ${css(fg)}; }\n .amp-slider .amp-handle:hover { background-color: ${css(fgH)}; }\n .amp-slider .amp-track { background-color: ${css(shade(bg, -0.1))}; }\n .amp-slider .amp-range { background-color: ${css(shade(bg, -0.1))}; }\n .amp-slider .amp-value { background-color: ${css(shade(bgH, 0.02))};}\n `\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.eventType = (window.PointerEvent != null) ? \"pointer\" : \"mouse\"\n this.player.container.addEventListener(`${this.eventType}enter`, this.onMouseEnter)\n this.player.container.addEventListener(`${this.eventType}leave`, this.onMouseLeave)\n\n if (this.config.theme) {\n this.theme = this.config.theme\n }\n\n // Workaround for UI flicker and FOUT\n this.player.timers.setTimeout(() => {\n this.container.element.style.display = \"block\"\n }, 10)\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.stopIdleTimeout()\n \tthis.refs.volume.open = true\n }\n\n onmutemouseout(event) {\n \tthis.stopIdleTimeout()\n \tthis.timeout = this.player.timers.setTimeout(() => {\n this.refs.volume.open = false\n }, 350)\n }\n\n onvolumemouseover(event) {\n \tthis.stopIdleTimeout()\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 // onmediasequenceinitialized(event) {\n // const detail = event.detail\n // if (detail.autoplay === true && detail.muted === true) {\n // const container = this.player.getContainer()\n // const unmute = (event) => {\n // if (!event.target.classList.contains(\"amp-mute\")) {\n // this.player.muted = false\n // }\n // container.removeEventListener(\"click\", unmute)\n // }\n // container.addEventListener(\"click\", unmute)\n // }\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 this.startIdleTimeout()\n }\n\n onpause(event) {\n this.stopIdleTimeout()\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 if (!this.isTouchDevice && this.player.displayState != akamai.amp.DisplayState.FULL_SCREEN && value != ActiveState.ACTIVE && this.player.mouseOver)\n return\n\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.startIdleTimeout()\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 startIdleTimeout() {\n if(this.refs.settingsPanel.open) {\n this.refs.settingsPanel.close()\n this.refs.volume.open = false\n }\n this.stopIdleTimeout()\n this.timeout = this.player.timers.setTimeout(() => {\n this.activeState = ActiveState.IDLE\n }, this.autoHide * 1000)\n }\n\n stopIdleTimeout() {\n this.player.timers.clearTimeout(this.timeout)\n }\n\n isNotMouseEvent(event) {\n return (event.pointerType == null && this.isTouchDevice) || (event.pointerType != null && event.pointerType != \"mouse\")\n }\n\n onMouseEnter(event) {\n if (this.isNotMouseEvent(event))\n return\n\n this.stopIdleTimeout()\n this.activeState = ActiveState.ACTIVE\n }\n\n onMouseLeave(event) {\n if (this.isNotMouseEvent(event))\n return\n\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.player.timers.setTimeout(() => this.activeState = ActiveState.INACTIVE, 0)\n }\n\n onClick() {\n if (this.isTouchDevice) {\n if (this.activeState == ActiveState.ACTIVE) {\n this.activeState = ActiveState.IDLE\n this.stopIdleTimeout()\n }\n else {\n this.activeState = ActiveState.ACTIVE\n this.startIdleTimeout()\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.onMouseEnter(event)\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 <Unmute ref=\"unmute\" />\n <BufferingOverlay ref=\"bufferingOverlay\" />\n <Progress ref=\"progress\" />\n <Container ref=\"controls\" className=\"amp-controls amp-bar amp-bg\">\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 <SharePanel ref=\"sharePanel\" />\n <SettingsPanel ref=\"settingsPanel\" />\n <Auth ref=\"auth\" />\n <ErrorMsg ref=\"error\" />\n {this.state.contextMenu}\n <style ref=\"style\"></style>\n </Container>\n )\n }\n\n destroy() {\n this.idleUtil.destroy()\n this.dispatcher.destroy()\n this.player.container.removeEventListener(`${this.eventType}enter`, this.onMouseEnter)\n this.player.container.removeEventListener(`${this.eventType}leave`, this.onMouseLeave)\n ReactDOM.unmountComponentAtNode(this.player.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\"\nexport {default as Utils} from \"./Utils.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","Interactive","mouseFocus","focused","altText","bindHandlers","update","viewComponent","scrollTop","onKeyPress","keyCode","onAction","onClick","value","onChange","title","tabIndex","onMouseDown","onMouseUp","onMouseOver","onMouseOut","onFocus","onBlur","onKeyDown","aria","Control","PanelControl","panel","toggle","PlayPause","playState","replay","play","pause","Button","PauseOverlay","BufferingOverlay","time","duration","formatTimecode","formatZeroFill","format","timezone","formatTime","number","precision","factor","Math","pow","round","pageX","window","scrollX","pageXOffset","targetTouches","pageY","scrollY","pageYOffset","enabled","disabled","n","isNaN","parseFloat","isFinite","r","g","b","a","max","min","h","s","l","d","p","q","t","hueToRgb","rgb","brightness","hsl","rgbToHsl","hslToRgb","css","test","parseInt","parts","match","CurrentTime","currentTime","detail","Live","isLive","goLive","liveClickHandler","Duration","Slider","percent","range","dragging","increment","direction","valueText","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","timestamp","toUTC","cues","clear","cue","startTime","addComponent","ondurationchange","onadtimeupdate","onaddurationchange","previewTracks","onaddtrack","onremovetrack","track","updateMarkers","textPercent","ads","inProgress","states","clientWidth","previewWidth","preview","previewHeight","clientHeight","styles","getCueAt","thumb","style","Volume","volume","_open","timeout","open","dispatchEvent","Event","timers","clearTimeout","setTimeout","isVolumeSettable","vertical","prop","bottom","Toggle","toggled","onlabel","offlabel","Mute","level","muted","Fullscreen","displayState","enterFullScreen","exitFullScreen","SettingsButton","ListItem","focus","previousElementSibling","nextElementSibling","shiftKey","parentNode","sharePanel","close","settingsPanel","tabable","document","getElementsByClassName","ListTitle","Panel","closeHandler","undefined","target","activeIndex","gotoSettings","items","listOptions","map","clickHandler","isOptionSelected","label","backHandler","activeState","stopIdleTimeout","onopen","startIdleTimeout","onclose","PanelMenu","keyDown","Home","settingsChange","language","captioning","tracks","lang","localization","getLanguageString","OptionsList","selected","hidden","viewChange","Options","captionsettings","OptionsPanel","options","len","setting","replace","BackgroundColor","labels","select","BackgroundOpacity","CharacterEdgeStyle","FontColor","FontFamily","FontOpacity","FontSize","WindowColor","WindowOpacity","ScrollType","EdgeColor","EdgeOpacity","Color","radix","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","Ads","msg","controlsMode","onadbreakstart","onadbreakend","onadstarted","onadtimeremaining","onadimpression","ad","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","Unmute","dismissed","Auth","AuthEvents","CHOOSE_PROVIDER","onchooseprovider","list","featured","idps","onclick","auth","login","logo","name","footprints","querySelector","idpId","selectedIndex","UI","feature","isTouchDevice","contextMenuClick","autoHide","dispatcher","EventDispatcher","func","funct","once","onvisibilitychange","eventType","PointerEvent","onMouseEnter","onMouseLeave","theme","display","medium","updates","previous","seeking","onqualitychange","paused","IDLE","pointerType","isNotMouseEvent","ACTIVE","elementFromPoint","clientX","clientY","isMouseOverElement","INACTIVE","togglePlayPause","isFocused","nodeName","progress","removeContextMenu","body","contextMenu","debug","createElement","render","onContextMenu","idleUtil","destroy","unmountComponentAtNode","locales","Locales","AUTO","controls","IdleUtil","create","inactive","active","start","stop","foreground","shade","text","fg","bg","background","bgH","fgH","DisplayState","FULL_SCREEN","mouseOver","idle","action","native","ui","Promise","resolve","reject","setPlayerProperty","adContainer","AMP","registerPlugin"],"mappings":"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"}