{"version":3,"file":"React.js","sources":["../../../../src/ClassList.js","../../../../src/Component.js","../../../../src/Container.js","../../../../src/Control.js","../../../../src/PanelControl.js","../../../../src/PlayPause.js","../../../../src/PauseOverlay.js","../../../../src/BufferingOverlay.js","../../../../src/Utils.js","../../../../src/CurrentTime.js","../../../../src/Live.js","../../../../src/Duration.js","../../../../src/Slider.js","../../../../src/Progress.js","../../../../src/Volume.js","../../../../src/Toggle.js","../../../../src/Mute.js","../../../../src/Unmute.js","../../../../src/Fullscreen.js","../../../../src/SettingsButton.js","../../../../src/ListItem.js","../../../../src/Panel.js","../../../../src/PanelMenu.js","../../../../src/captionsettings/Home.js","../../../../src/captionsettings/Options.js","../../../../src/captionsettings/OptionsPanel.js","../../../../src/captionsettings/Color.js","../../../../src/captionsettings/BackgroundColor.js","../../../../src/captionsettings/BackgroundOpacity.js","../../../../src/captionsettings/CharacterEdgeStyle.js","../../../../src/captionsettings/FontColor.js","../../../../src/captionsettings/FontFamily.js","../../../../src/captionsettings/FontOpacity.js","../../../../src/captionsettings/FontSize.js","../../../../src/captionsettings/WindowColor.js","../../../../src/captionsettings/WindowOpacity.js","../../../../src/captionsettings/ScrollType.js","../../../../src/captionsettings/EdgeColor.js","../../../../src/captionsettings/EdgeOpacity.js","../../../../src/CaptionData.js","../../../../src/CaptionSettings.js","../../../../src/Quality.js","../../../../src/PlaybackRate.js","../../../../src/AudioTracks.js","../../../../src/SettingsPanel.js","../../../../src/ShareButton.js","../../../../src/SharePanel.js","../../../../src/CaptionToggleButton.js","../../../../src/JumpBack.js","../../../../src/JumpForward.js","../../../../src/Poster.js","../../../../src/Title.js","../../../../src/ErrorMsg.js","../../../../src/ContextMenu.js","../../../../src/Ads.js","../../../../src/Airplay.js","../../../../src/PiP.js","../../../../src/ChromeCast.js","../../../../src/Mode.js","../../../../src/ActiveState.js","../../../../src/UI.js","../../../../src/main.js"],"sourcesContent":["export default class ClassList {\n\n constructor(component, tokens = []) {\n this.component = component\n this.tokens = tokens\n }\n\n add(token, prepend = false) {\n if (this.contains(token))\n return\n\n if (prepend === true) {\n this.tokens.unshift(token)\n } else {\n this.tokens.push(token)\n }\n }\n\n contains(token) {\n return this.tokens.indexOf(token) !== -1\n }\n\n item(index) {\n return this.tokens[index] || null\n }\n\n remove(token) {\n const i = this.tokens.indexOf(token)\n if (i === -1)\n return\n this.tokens.splice(i, 1)\n }\n\n toggle(token) {\n if (this.contains(token)) {\n this.remove(token)\n } else {\n this.add(token)\n }\n }\n\n update(tokenMap) {\n for (let token in tokenMap) {\n if (tokenMap[token]) {\n this.add(token)\n } else {\n this.remove(token)\n }\n }\n\n let className = this.toString()\n if (className != this.component.state.className) {\n this.component.setState({className})\n }\n }\n\n toString() {\n return this.tokens.join(' ')\n }\n}\n","import ClassList from \"./ClassList.js\"\n\nexport default class Component extends React.Component {\n\n constructor (props, context) {\n super(props, context)\n\n this.state = {\n l10n: this.player.l10n\n }\n this.classList = new ClassList(this, this.props.classList)\n }\n\n static get contextTypes() {\n return {\n player: PropTypes.object,\n config: PropTypes.object,\n plugin: PropTypes.object\n }\n }\n\n get player() {\n return this.props.player || this.context.player\n }\n\n get config() {\n return this.props.config || this.context.config\n }\n\n get l10n() {\n return this.state.l10n\n }\n\n get plugin() {\n return this.context.plugin\n }\n\n get className() {\n let className = this.props.className || \"\"\n className += ` ${this.classList}`\n\n return className.trim()\n }\n\n get textContent() {\n return this.props.textContent || this.state.textContent\n }\n\n get children() {\n return this.props.children || []\n }\n\n get element() {\n return this.refs.element\n }\n\n get dom() {\n return this.element || ReactDOM.findNode(this)\n }\n\n get data() {\n return this.props.data || {}\n }\n\n get playerEventMap() {\n const events = []\n\n if (this.player == null)\n return events\n\n Object.values(akamai.amp.Events).forEach((type) => {\n let key = `on${type}`\n if (typeof this[key] != \"function\")\n return\n events.push({key: key, type: type})\n })\n\n return events\n }\n\n get propsList() {\n const { className, classList, data, textContent, ...props } = this.props\n return props\n }\n\n getLocalizedString(key) {\n return this.player.getLocalizedString(key)\n }\n\n onlanguagechange() {\n this.setState({l10n: this.player.l10n})\n }\n\n bindHandlers(handlers) {\n if (handlers == null || handlers.length <= 0)\n return\n\n handlers.forEach((handler) => {\n if (typeof this[handler] != \"function\")\n return\n this[handler] = this[handler].bind(this)\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n let state = this.state\n let props = this.props\n\n if (nextState != null) {\n for (let key in nextState) {\n if (nextState[key] != state[key]) {\n return true\n }\n }\n }\n\n // TODO: Is this needed?\n if (nextProps != null) {\n for (let key in nextProps) {\n if (nextProps[key] != props[key]) {\n return true\n }\n }\n }\n\n return false\n }\n\n componentWillMount() {\n this.playerEventMap.forEach((event) => {\n this[event.key] = this[event.key].bind(this)\n this.player.addEventListener(event.type, this[event.key])\n })\n }\n\n componentWillUnmount() {\n this.playerEventMap.forEach((event) => {\n this.player.removeEventListener(event.type, this[event.key])\n })\n }\n\n render() {\n return (\n