{"version":3,"file":"Stats.js","sources":["../../../../src/Locales.js","../../../../src/Stats.js","../../../../src/main.js"],"sourcesContent":["export default {\n headers:{\n currentlySegment:\"Playing Fragment\",\n nextFragment:\"Loading Fragment\",\n mae:\"Media Acceleration\",\n currentBitrate:\"Current Bitrate\",\n bitrates:\"Available Bitrates\",\n source:\"Source\",\n adaptiveBitrate:\"Adaptive Bitrate\"\n },\n playback:{\n src:\"Content URL\",\n type:\"Content Type\",\n version:\"Playback\"\n },\n mae:{\n cdnDownloadBytes: \"CDN Download\",\n cdnDownloadQUICMediaBytes:\"QUIC Download\",\n cdnDownloadTCPMediaBytes:\"TCP Download\",\n peerCount:\"Connected Peers\",\n peerDownloadBytes:\"Total Peer Download\",\n peerUploadBytes:\"Total Peer Upload\",\n sessionUri:\"Session URI\",\n keyNotFound:\"Key not found\",\n sessionNotFound:\"Session not found\" \n }\n}\n","import locales from './Locales.js';\n\nexport default class Stats extends akamai.amp.Plugin {\n constructor(player, config) {\n super(player, config);\n\n this.player = player;\n this.config = config;\n this.item = {};\n this.hasMae = false;\n this.playback = {};\n this.player.addEventListener(\"ready\", this.readyHandler.bind(this));\n }\n\n /**\n * Player events\n * @param {*} event \n */\n readyHandler(event) {\n let playerCore;\n\n if (!this.player.react) {\n throw Error(\"React is not available\");\n }\n else {\n this.player.once(\"canplaythrough\", function () {\n playerCore = this.getPlaybackCore();\n this.hasMae = typeof (this.player.mae) != 'undefined';\n this.init(this, playerCore);\n\n switch (playerCore) {\n case 'hls':\n this.player.hls.addEventListener(Hls.Events.FRAG_CHANGED, this.hlsNotificationHandler.bind(this));\n this.player.hls.addEventListener(Hls.Events.FRAG_PARSED, this.hlsNotificationHandler.bind(this));\n this.player.hls.addEventListener(Hls.Events.LEVEL_SWITCHED, this.hlsNotificationHandler.bind(this));\n this.player.addEventListener(\"mediachange\", this.reset.bind(this));\n break;\n case 'dash':\n let instance = amp.dash.getInstance();\n instance.on(dashjs.MediaPlayer.events.FRAGMENT_LOADING_STARTED, this.dashNotificationHandler.bind(this));\n instance.on(dashjs.MediaPlayer.events.FRAGMENT_LOADING_COMPLETED, this.dashNotificationHandler.bind(this));\n instance.on(dashjs.MediaPlayer.events.QUALITY_CHANGE_RENDERED, this.dashNotificationHandler.bind(this));\n this.player.addEventListener(\"mediachange\", this.reset.bind(this));\n break;\n default:\n break;\n }\n }.bind(this));\n }\n }\n\n dashNotificationHandler(event) {\n let fragment, _ref;\n switch (event.type) {\n case 'fragmentLoadingCompleted':\n fragment = ((_ref = event.request) !== null ? _ref.url : \"Not found\");\n this.item.setState({ \"currentFragment\": fragment });\n break;\n case 'fragmentLoadingStarted':\n fragment = ((_ref = event.request) !== null ? _ref.url : \"Not found\");\n this.item.setState({ \"nextFragment\": fragment });\n break;\n case 'qualityChangeRendered':\n ((_ref = event).mediaType != 'audio' ? this.item.setState({ \"currentBitrate\": (this.player.getQualityLevels()[_ref.newQuality].bitrate / 1E3).toFixed(0) }) : void 0);\n break;\n\n default:\n break;\n }\n }\n\n hlsNotificationHandler(event) {\n let fragment, level, _ref;\n switch (event.type) {\n case \"hlsFragChanged\":\n fragment = ((_ref = event.data) !== null ? _ref.frag : event.details.frag);\n this.item.setState({ \"currentFragment\": fragment.relurl });\n break;\n case \"hlsFragParsed\":\n fragment = ((_ref = event.data) !== null ? _ref.frag : event.details.frag);\n this.item.setState({ \"nextFragment\": fragment.relurl });\n break;\n case \"qualitychanging\":\n level = ((_ref = event.data) !== null ? _ref : event.details);\n this.item.setState({ \"currentBitrate\": (level.bitrate / 1E3).toFixed(0) });\n break;\n case \"hlsLevelSwitched\":\n level = ((_ref = event.data) !== null ? typeof(_ref.level) == \"undefined\" ? _ref.data.level : _ref.level : event.details.level);\n this.item.setState({ \"currentBitrate\": (this.player.getQualityLevels()[level].bitrate / 1E3).toFixed(0) });\n break;\n case \"canplaythrough\":\n this.item.setState({ \"levels\": this.player.getQualityLevels() });\n break;\n default:\n break;\n }\n }\n\n reset(_this) {\n this.player.once(\"canplaythrough\", function () {\n let playback = {\n version: `${_this.player.getVersion()} - ${_this.player.getPlayerType()}`,\n src: _this.player.getSrc(),\n type: _this.player.getMedia().type\n };\n\n let levels = _this.player.getQualityLevels(),\n quality = levels[_this.player.getQuality()].bitrate;\n\n if (this.hasMae) {\n this.item.setState({ 'mae': _this.player.mae });\n }\n this.item.setState({ \"playback\": playback });\n this.item.setState({ \"currentBitrate\": (quality / 1E3).toFixed(0) });\n this.item.setState({ \"levels\": levels });\n }.bind(this));\n }\n\n getPlaybackCore() {\n let playbackCore = \"default\";\n\n try {\n if (this.player.playerCore !== null && typeof (this.player.playerCore.activePlaybackCore.getPlaybackCoreName) == 'function');\n playbackCore = this.player.playerCore.activePlaybackCore.getPlaybackCoreName();\n } catch (error) {\n throw Error(\"PlayerCore is not defined\");\n }\n\n return playbackCore;\n }\n\n init(_this, _playerCore) {\n let statsBtn, overlay, component, quality = 0, levels = _this.player.getQualityLevels();\n\n let playback = {\n version: `${_this.player.getVersion()} - ${_this.player.getPlayerType()}`,\n src: _this.player.getSrc(),\n type: _this.player.getMedia().type\n };\n\n quality = 'default' === _playerCore ? levels[_this.player.getQuality()].bitrate : 0;\n\n let StatsItem = React.createClass({\n getInitialState: function () {\n return { levels: levels, playback: playback, hasMae: _this.hasMae, mae: _this.player.mae };\n },\n componentDidMount: function () {\n this.setState({\n chkbox: true,\n message: \"

Paragrahp

Paragraph 2

\",\n currentBitrate: (quality / 1E3).toFixed(0),\n currentFragment: \"Not available\",\n nextFragment: \"Not available\"\n });\n },\n createRenditions: function (levels) {\n return levels.map(function (level) {\n return
  • {(level.bitrate / 1000).toFixed(0)}kbps
  • ;\n });\n },\n createItems: function (item) {\n return
  • {locales.playback[item[0]]}: {item[1]}
  • ;\n },\n createMaeItems: function (item) {\n return
  • {locales.mae[item[0]]}: {item[1]}
  • ;\n },\n createMaeStats: function (isMae, instance) {\n return isMae ?

    {locales.headers.mae}

    \n \n
    : ;\n },\n createGeneralStats: function (data) {\n return
    \n

    {locales.headers.source}

    \n \n

    {locales.headers.adaptiveBitrate}

    \n \n
    ;\n },\n render: function () {\n return (\n
    \n \n \n\n \n \n\n
    {this.createGeneralStats(this.state.playback)}
    \n
    {this.createMaeStats(this.state.hasMae, this.state.mae)}
    \n
    \n );\n }\n });\n\n\n statsBtn = React.createElement(\"button\", {\n className: \"amp-stats amp-icon amp-control\",\n id: \"component\",\n key: \"statsbtn\",\n onClick: function (event) {\n this.onStatsOverlay();\n }.bind(this)\n });\n\n overlay = React.createElement(\"div\", {\n className: \"amp-stats amp-overlay\",\n id: \"amp-stats-overlay\",\n key: \"stats\",\n }\n );\n\n this.player.react.components.container.addComponent(overlay);\n\n if ('undefined' !== typeof(this.config.data) ? this.config.data.button : !0) {\n this.player.react.controls.addComponent(statsBtn);\n }\n\n component = React.createElement(StatsItem);\n\n this.item = ReactDOM.render(component, document.getElementById('amp-stats-overlay'));\n document.addEventListener('keydown', this.onKeyDownHandler.bind(this));\n }\n\n onStatsOverlay(event) {\n if (this.player.getDisplayState() !== 'stats-active') {\n this.player.setDisplayState(\"stats-active\");\n }\n else {\n this.player.setDisplayState(\"stats-inactive\");\n }\n }\n /**\n * DOM Events\n */\n onKeyDownHandler(event) {\n const keyCode = event.keyCode;\n\n if (keyCode === 'Shift') {\n return;\n }\n if (event.shiftKey && 83 === keyCode) {\n this.onStatsOverlay();\n }\n };\n\n}\n\n","import \"./Stats.less\"\nimport Stats from \"./Stats.js\"\n\nakamai.amp.AMP.registerPlugin(\"stats\", akamai.amp.Plugin.createFactory(Stats))\n\nexport {Stats}"],"names":["Stats","player","config","item","hasMae","playback","addEventListener","readyHandler","bind","event","playerCore","react","Error","once","getPlaybackCore","mae","init","hls","Hls","Events","FRAG_CHANGED","hlsNotificationHandler","FRAG_PARSED","LEVEL_SWITCHED","reset","instance","amp","dash","getInstance","on","dashjs","MediaPlayer","events","FRAGMENT_LOADING_STARTED","dashNotificationHandler","FRAGMENT_LOADING_COMPLETED","QUALITY_CHANGE_RENDERED","fragment","_ref","type","request","url","setState","mediaType","getQualityLevels","newQuality","bitrate","toFixed","level","data","frag","details","relurl","_this","getVersion","getPlayerType","getSrc","getMedia","levels","quality","getQuality","playbackCore","activePlaybackCore","getPlaybackCoreName","error","_playerCore","statsBtn","overlay","component","StatsItem","React","createClass","map","isMae","headers","version","privateStats","clientID","key","locales","keyNotFound","sessionID","sessionNotFound","entries","getSessionStatsReport","createMaeItems","peerDownloadBytes","cdnDownloadBytes","source","createItems","currentlySegment","state","currentFragment","nextFragment","adaptiveBitrate","currentBitrate","bitrates","createRenditions","chkbox","createGeneralStats","createMaeStats","createElement","onStatsOverlay","components","container","addComponent","button","controls","ReactDOM","render","document","getElementById","onKeyDownHandler","getDisplayState","setDisplayState","keyCode","shiftKey","akamai","Plugin","AMP","registerPlugin","createFactory"],"mappings":"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"}