{"version":3,"file":"kendo.mediaplayer.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendomediaplayer","js","this","$","undefined$1","kendo","window","END","PAUSE","PLAY","READY","TIMECHANGE","VOLUMECHANGE","FULLSCREEN_ENTER","FULLSCREEN_EXIT","MUTE","LOW_VOLUME","HIGH_VOLUME","VIDEO_QUALITY","STATE_PLAY","STATE_PAUSE","TITLEBAR","TOOLBAR","SLIDER","VOLUME_SLIDER","MEDIA","OVERLAY","YTPLAYER","DOT","STATE_PLAY_SELECTOR","FULLSCREEN_ENTER_SELECTOR","FULLSCREEN_EXIT_SELECTOR","MUTE_SELECTOR","LOW_VOLUME_SELECTOR","HIGH_VOLUME_SELECTOR","ui","ns","baseTime","Date","timeZoneSec","getTimezoneOffset","Widget","isArray","Array","timeFormats","template","keys","templates","htmlPlayer","titleBar","toolBar","youtubePlayer","toolBarTime","slider","volumeSlider","qualityDropDown","toolTip","ref","value","toString","MediaPlayer","extend","init","element","options","wrapper","fn","call","addClass","_currentIndex","_createTitlebar","_createToolbar","_createDropDown","_createSlider","_createVolumeSlider","_timers","_aria","_navigatable","fullScreen","media","notify","events","name","autoPlay","autoRepeat","volume","mute","navigatable","forwardSeek","messages","pause","play","unmute","quality","fullscreen","_msToTime","ms","time","getTime","setSeconds","_timeToSec","_titleBar","find","length","append","sliderElement","_slider","_sliderDragChangeHandler","_sliderDragChange","bind","_sliderDraggingHandler","_sliderDragging","Slider","smallStep","tickPlacement","showButtons","change","slide","tooltip","dragHandleTitle","volumeSliderElement","_volumeSlider","_volumeDraggingHandler","_volumeDragging","_volumeChangeHandler","_volumeChange","width","min","max","enabled","_resetTime","_youTubeVideo","_ytmedia","seekTo","_media","currentTime","_mediaTimeUpdate","grep","_toolBar","items","e","_currentUrl","source","url","_isYouTubeUrl","match","_setPlayerUrl","oldPlayer","stop","toggle","initialized","_initializePlayer","_videoOverlay","hide","loadVideoById","_getMediaId","_playStateToggle","cueVideoById","show","remove","attr","toolBarElement","_toolbarClickHandler","_toolbarClick","ToolBar","click","resizable","type","attributes","class","icon","fillMode","off","before","_volumeButton","_fullscreenButton","_currentTimeElement","_durationElement","_playButton","_playButtonSpan","support","cssFlexbox","wrapAll","hdIcon","dropDownElement","data","_dropDownSelectHandler","_dropDownSelect","_dropDown","DropDownList","dataTextField","dataValueField","popup","position","origin","appendTo","animation","open","effects","duration","select","setDataSource","replaceWith","list","item","index","target","children","first","isPaused","is","_isInFullScreen","muted","_isDragging","that","sender","tzOffset","_sliderChangeFired","_seekBarLastPosition","setTimeout","trigger","_preventPlay","_changeVolumeButtonImage","volumeButton","volumeElement","getCurrentTime","timeInMs","text","_timeFormat","isPlaying","_mediaEnded","_mediaPlay","_mediaReady","_mediaDurationChange","durationTime","getDuration","getHours","setOptions","_isFirstRun","_createYoutubePlayer","_mediaTimeUpdateHandler","_mediaDurationChangeHandler","prepend","_ytPlayer","css","height","YT","Player","_configurePlayer","onYouTubeIframeAPIReadyRegister","getScript","onYouTubeIframeAPIReady","i","_youtubeApiReady","_poll","callback","interval","context","clearTimeout","callLater","vars","autoplay","wmode","controls","rel","showinfo","_onYouTubePlayerReady","onYouTubePlayerReady","_onPlayerStateChangeHandler","_onPlayerStateChange","onPlayerStateChange","videoId","playerVars","onReady","onStateChange","event","getIframe","style","_updateTitle","titlebar","title","_paused","setVolume","_uiDisplay","result","_mouseClick","_mouseMoveHandler","_mouseMove","_mouseInHandler","_mouseIn","_mouseOutHandler","_mouseOut","on","_createHtmlPlayer","_mouseClickHanlder","_mediaEndedHandler","_mediaCanPlayHandler","_mediaPlayHandler","after","ontimeupdate","ondurationchange","oncanplay","onplay","onended","loop","_mouseIdle","state","animationSpeed","uiElements","add","parent","fadeIn","fadeOut","destroy","_keyDownHandler","_fullscreenHandler","_youtubeApiReadyHandler","src","_mouseMoveTimer","seek","seconds","playVideo","mobileOS","stopVideo","pauseVideo","toolbar","dropdown","enterFullScreen","get","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","document","cancelFullscreen","webkitCancelFullScreen","mozCancelFullScreen","msCancelFullscreen","exitFullscreen","msExitFullscreen","removeClass","resize","_volume","currentState","isMuted","unMute","getVolume","isEnded","getPlayerState","ended","_mediaData","_fullscreen","_keyDown","isFullScreen","mozFullScreen","webkitIsFullScreen","fullscreenSpan","preventDefault","fsButton","keyCode","SPACEBAR","ENTER","ESC","_error","_progress","plugin","jQuery"],"sources":["kendo.mediaplayer.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.slider.js'), require('kendo.toolbar.js'), require('kendo.dropdownlist.js'), require('kendo.tooltip.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.slider', 'kendo.toolbar', 'kendo.dropdownlist', 'kendo.tooltip', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendomediaplayer = global.kendomediaplayer || {}, global.kendomediaplayer.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"mediaplayer\",\n name: \"MediaPlayer\",\n category: \"web\",\n description: \"\",\n depends: [\"slider\", \"toolbar\", \"dropdownlist\", \"tooltip\", \"icons\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n END = \"end\",\n PAUSE = \"pause\",\n PLAY = \"play\",\n READY = \"ready\",\n TIMECHANGE = \"timeChange\",\n VOLUMECHANGE = \"volumeChange\",\n FULLSCREEN_ENTER = \"fullscreen\",\n FULLSCREEN_EXIT = \"fullscreen-exit\",\n MUTE = \"volume-mute\",\n LOW_VOLUME = \"volume-down\",\n HIGH_VOLUME = \"volume-up\",\n VIDEO_QUALITY = \"k-mediaplayer-quality\",\n STATE_PLAY = \"play\",\n STATE_PAUSE = \"pause\",\n TITLEBAR = \"k-mediaplayer-titlebar\",\n TITLE = \"k-title\",\n TOOLBARWRAP = \"k-mediaplayer-toolbar-wrap\",\n TOOLBAR = \"k-mediaplayer-toolbar\",\n SLIDER = \"k-mediaplayer-seekbar\",\n VOLUME_SLIDER = \"k-mediaplayer-volume\",\n MEDIA = \"k-mediaplayer-media\",\n OVERLAY = \"k-mediaplayer-overlay\",\n YTPLAYER = \"k-mediaplayer-yt\",\n DOT = \".\",\n STATE_PLAY_SELECTOR = 'span[class*=\"i-' + STATE_PLAY + '\"]',\n STATE_PAUSE_SELECTOR = 'span[class*=\"i-' + STATE_PAUSE + '\"]',\n FULLSCREEN_ENTER_SELECTOR = 'span[class*=\"i-' + FULLSCREEN_ENTER + '\"]',\n FULLSCREEN_EXIT_SELECTOR = 'span[class*=\"i-' + FULLSCREEN_EXIT + '\"]',\n MUTE_SELECTOR = 'span[class*=\"i-' + MUTE + '\"]',\n LOW_VOLUME_SELECTOR = 'span[class*=\"i-' + LOW_VOLUME + '\"]',\n HIGH_VOLUME_SELECTOR = 'span[class*=\"i-' + HIGH_VOLUME + '\"]',\n ui = kendo.ui,\n ns = \".kendoMediaPlayer\",\n baseTime = new Date(1970, 0, 1),\n timeZoneSec = baseTime.getTimezoneOffset() * 60,\n Widget = kendo.ui.Widget,\n isArray = Array.isArray,\n timeFormats = {\n shortTime: \"mm:ss\",\n longTime: \"HH:mm:ss\"\n },\n template = kendo.template,\n keys = kendo.keys,\n templates = {\n htmlPlayer: function () { return \"\"; },\n titleBar: template(function () { return \"
Video Title
\"; }),\n toolBar: function () { return \"
\"; },\n youtubePlayer: function () { return \"
\"; },\n toolBarTime: function () { return \"00:00:00 / 00:00:00\"; },\n slider: function () { return \"\"; },\n volumeSlider: function () { return \"\"; },\n qualityDropDown: function () { return \"\"; },\n toolTip: function (ref) {\n var value = ref.value;\n\n return (\"\" + (kendo.toString(new Date(value), 'HH:mm:ss')));\n }\n };\n\n var MediaPlayer = Widget.extend({\n init: function(element, options) {\n this.wrapper = $(element);\n\n Widget.fn.init.call(this, element, options);\n\n this.wrapper.addClass(\"k-mediaplayer k-widget\");\n\n options = this.options;\n\n this._currentIndex = 0;\n\n this._createTitlebar();\n\n this._createToolbar();\n\n this._createDropDown();\n\n this._createSlider();\n\n this._createVolumeSlider();\n\n this._timers = {};\n\n this._aria();\n\n this._navigatable();\n\n if (options.fullScreen) {\n this.fullScreen(true);\n }\n\n if (options.media) {\n this.media(this.options.media);\n }\n\n kendo.notify(this);\n },\n\n events: [\n END,\n PAUSE,\n PLAY,\n READY,\n TIMECHANGE,\n VOLUMECHANGE\n ],\n\n options: {\n name: \"MediaPlayer\",\n autoPlay: false,\n autoRepeat: false,\n volume: 100,\n fullScreen: false,\n mute: false,\n navigatable: false,\n forwardSeek: true,\n media: null,\n messages: {\n \"pause\": \"Pause\",\n \"play\": \"Play\",\n \"mute\": \"Mute\",\n \"unmute\": \"Unmute\",\n \"quality\": \"Quality\",\n \"fullscreen\": \"Full Screen\"\n }\n },\n\n _msToTime: function(ms) {\n var time = new Date(baseTime.getTime());\n time.setSeconds(ms);\n return time;\n },\n\n _timeToSec: function(time) {\n var curTime = new Date(time).getTime();\n return curTime / 1000;\n },\n\n _createTitlebar: function() {\n this._titleBar = this.wrapper.find(DOT + TITLEBAR);\n if (this._titleBar.length === 0) {\n this.wrapper.append(templates.titleBar);\n this._titleBar = this.wrapper.find(DOT + TITLEBAR);\n }\n },\n\n _createSlider: function() {\n var sliderElement = this.wrapper.find(DOT + SLIDER);\n if (!this._slider) {\n this._sliderDragChangeHandler = this._sliderDragChange.bind(this);\n this._sliderDraggingHandler = this._sliderDragging.bind(this);\n sliderElement = this.wrapper.find(DOT + SLIDER);\n\n this._slider = new ui.Slider(sliderElement[0], {\n smallStep: 1000,\n tickPlacement: \"none\",\n showButtons: false,\n change: this._sliderDragChangeHandler,\n slide: this._sliderDraggingHandler,\n tooltip: {\n template: templates.toolTip\n },\n dragHandleTitle: this.options.messages.time\n });\n }\n },\n\n _createVolumeSlider: function() {\n var volumeSliderElement = this.wrapper.find(DOT + VOLUME_SLIDER);\n if (!this._volumeSlider) {\n this._volumeDraggingHandler = this._volumeDragging.bind(this);\n this._volumeChangeHandler = this._volumeChange.bind(this);\n volumeSliderElement.width(87);\n this._volumeSlider = new ui.Slider(volumeSliderElement[0], {\n smallStep: 1,\n min: 0,\n max: 100,\n value: this.options.volume,\n slide: this._volumeDraggingHandler,\n change: this._volumeChangeHandler,\n tickPlacement: \"none\",\n showButtons: false,\n tooltip: { enabled: false },\n dragHandleTitle: this.options.messages.volume\n });\n }\n },\n\n _resetTime: function() {\n if (this._youTubeVideo) {\n this._ytmedia.seekTo(0, true);\n } else {\n this._media.currentTime = 0;\n }\n\n this._mediaTimeUpdate();\n $.grep(this._toolBar.options.items, function(e) { return !!e.template; }).template = templates.toolBarTime;\n },\n\n _currentUrl: function() {\n var media = this.media();\n return isArray(media.source) ? media.source[this._currentIndex].url : media.source;\n },\n\n _isYouTubeUrl: function() {\n return !!this._currentUrl().match(\"youtube.com/|youtu.be/\");\n },\n\n _setPlayerUrl: function() {\n var oldPlayer = this._youTubeVideo;\n this.stop();\n\n this._youTubeVideo = this._isYouTubeUrl();\n\n if (oldPlayer !== this._youTubeVideo) {\n this.wrapper.find(DOT + YTPLAYER).toggle();\n this.wrapper.find(DOT + MEDIA).toggle();\n }\n\n var initialized = this._media || this._ytmedia;\n\n this._initializePlayer();\n\n if (initialized) { //mute and volume settings should be persisted when switching between html and youtube players\n this.mute(this.mute());\n this.volume(this.volume());\n }\n\n if (!this._youTubeVideo) {\n this._videoOverlay.show();\n this.wrapper.find(DOT + MEDIA + \" > source\").remove();\n this.wrapper.find(DOT + MEDIA).attr(\"src\", this._currentUrl());\n\n if (this.options.autoPlay) {\n this.play();\n }\n }\n else if (this._ytmedia) {\n if (this._videoOverlay) {\n this._videoOverlay.hide();\n }\n if (this.options.autoPlay) {\n this._ytmedia.loadVideoById(this._getMediaId());\n this._playStateToggle(true);\n }\n else {\n this._ytmedia.cueVideoById(this._getMediaId());\n this._playStateToggle(true);\n }\n }\n },\n\n _createToolbar: function() {\n var toolBarElement = this.wrapper.find(DOT + TOOLBAR);\n if (toolBarElement.length === 0) {\n this._toolbarClickHandler = this._toolbarClick.bind(this);\n this.wrapper.append(templates.toolBar);\n toolBarElement = this.wrapper.find(DOT + TOOLBAR);\n toolBarElement.width(this.wrapper.find(DOT + MEDIA).width());\n this._toolBar = new ui.ToolBar(toolBarElement, {\n click: this._toolbarClickHandler,\n resizable: false,\n items: [\n {\n type: \"button\",\n attributes: { \"class\": \"k-play-button\" },\n icon: \"play\",\n fillMode: \"flat\"\n },\n {\n template: templates.toolBarTime,\n attributes: { \"class\": \"k-mediaplayer-currenttime-wrap\" }\n },\n {\n type: \"spacer\"\n },\n {\n type: \"button\",\n attributes: { \"class\": \"k-volume-button\" },\n icon: \"volume-up\",\n fillMode: \"flat\"\n },\n {\n template: templates.volumeSlider,\n attributes: { \"class\": \"k-mediaplayer-volume-wrap\" }\n },\n {\n template: templates.qualityDropDown,\n attributes: { \"class\": \"k-mediaplayer-quality-wrap\" }\n },\n {\n type: \"button\",\n attributes: { \"class\": \"k-fullscreen-button\" },\n icon: \"fullscreen\",\n fillMode: \"flat\"\n }\n ]\n });\n\n this._toolBar.wrapper.off(\"keydown\");\n toolBarElement.before(templates.slider);\n\n this._volumeButton = toolBarElement.find(\".k-volume-button\");\n this._fullscreenButton = toolBarElement.find(\".k-fullscreen-button\");\n this._volumeButton.attr(\"title\", this.options.mute ? this.options.messages.unmute : this.options.messages.mute);\n this._volumeButton.attr(\"aria-label\", this.options.mute ? this.options.messages.unmute : this.options.messages.mute);\n this._fullscreenButton.attr(\"title\", this.options.messages.fullscreen);\n this._fullscreenButton.attr(\"aria-label\", this.options.messages.fullscreen);\n\n toolBarElement.width(\"auto\");\n this._currentTimeElement = toolBarElement.find(\".k-mediaplayer-currenttime\");\n this._durationElement = toolBarElement.find(\".k-mediaplayer-duration\");\n this._playButton = toolBarElement.find(\".k-play-button\");\n this._playButtonSpan = this._playButton.find(STATE_PLAY_SELECTOR);\n\n if (this.options.autoPlay) {\n this._playStateToggle(true);\n }\n\n if ( kendo.support.cssFlexbox === false ) {\n $([\n this._volumeButton[0],\n toolBarElement.find(\".k-mediaplayer-volume-wrap\")[0],\n toolBarElement.find(\".k-mediaplayer-quality-wrap\")[0],\n this._fullscreenButton[0]\n ]).wrapAll(\"
\");\n }\n }\n },\n\n _createDropDown: function() {\n var hdIcon = kendo.ui.icon(\"hd\");\n var dropDownElement = this.wrapper.find(DOT + VIDEO_QUALITY);\n var media = this.media();\n if (typeof dropDownElement.data(\"kendoDropDownList\") === \"undefined\") {\n this._dropDownSelectHandler = this._dropDownSelect.bind(this);\n this._dropDown = new ui.DropDownList(dropDownElement, {\n dataTextField: \"quality\",\n dataValueField: \"url\",\n popup: {\n position: \"bottom\",\n origin: \"top\",\n appendTo: this.wrapper\n },\n animation: {\n open: {\n effects: \"slideIn:up\",\n duration: 1\n }\n },\n select: this._dropDownSelectHandler\n });\n\n if (media && isArray(media.source)) {\n this._dropDown.setDataSource(media.source);\n this._dropDown.select(0);\n }\n\n this._dropDown.wrapper.addClass(\"k-button k-button-md k-rounded-md k-button-flat k-button-flat-base\");\n this._dropDown.wrapper.attr(\"title\", this.options.messages.quality).hide();\n this._dropDown.wrapper.find('span[class*=\"i-caret-alt-down\"]')\n .replaceWith(hdIcon);\n this._dropDown.list.addClass(\"k-quality-list\");\n }\n },\n\n _dropDownSelect: function(e) {\n if (this._currentIndex !== e.item.index()) {\n this._currentIndex = e.item.index();\n this._setPlayerUrl();\n }\n },\n\n _toolbarClick: function(e) {\n var target = $(e.target).children().first();\n var isPaused = target.is(STATE_PLAY_SELECTOR);\n\n if (!this.media()) {\n return;\n }\n\n if (target.is(STATE_PLAY_SELECTOR) || target.is(STATE_PAUSE_SELECTOR)) {\n if (isPaused) {\n this.play();\n }\n else {\n this.pause();\n }\n }\n\n if (target.is(FULLSCREEN_ENTER_SELECTOR) || target.is(FULLSCREEN_EXIT_SELECTOR)) {\n if (this._isInFullScreen) {\n kendo.ui.icon(target, { icon: FULLSCREEN_ENTER });\n this.fullScreen(false);\n } else {\n kendo.ui.icon(target, { icon: FULLSCREEN_EXIT });\n this.fullScreen(true);\n }\n }\n\n if (target.is(MUTE_SELECTOR) || target.is(LOW_VOLUME_SELECTOR) || target.is(HIGH_VOLUME_SELECTOR)) {\n var muted = this.mute();\n this.mute(!muted);\n }\n },\n\n _sliderDragging: function() {\n if (!this.media()) {\n return;\n }\n\n this._isDragging = true;\n },\n\n _sliderDragChange: function(e) {\n var that = this;\n var slider = e.sender;\n var tzOffset = timeZoneSec * 1000;\n\n if (!this.media()) {\n return;\n }\n\n that._sliderChangeFired = true;\n that._isDragging = false;\n\n if (!this.options.forwardSeek && slider.value() > this._seekBarLastPosition) {\n setTimeout(function() {\n slider.value(that._seekBarLastPosition);\n }, 1);\n } else if (this._youTubeVideo) {\n that._ytmedia.seekTo(that._timeToSec(e.value - tzOffset));\n } else {\n that._media.currentTime = that._timeToSec(e.value - tzOffset);\n }\n that.trigger(TIMECHANGE);\n that._preventPlay = true;\n },\n\n _changeVolumeButtonImage: function(volume) {\n var volumeButton = this._volumeButton;\n var volumeElement = volumeButton.find(\"span\");\n\n if (volume === 0) {\n kendo.ui.icon(volumeElement, { icon: MUTE });\n volumeButton.attr(\"title\", this.options.messages.unmute);\n volumeButton.attr(\"aria-label\", this.options.messages.unmute);\n } else if (volume > 0 && volume < 51) {\n kendo.ui.icon(volumeElement, { icon: LOW_VOLUME });\n volumeButton.attr(\"title\", this.options.messages.mute);\n volumeButton.attr(\"aria-label\", this.options.messages.mute);\n } else {\n kendo.ui.icon(volumeElement, { icon: HIGH_VOLUME });\n volumeButton.attr(\"title\", this.options.messages.mute);\n volumeButton.attr(\"aria-label\", this.options.messages.mute);\n }\n },\n\n _volumeDragging: function(e) {\n if (!this.media()) {\n return;\n }\n this.volume(e.value);\n this._changeVolumeButtonImage(e.value);\n this.trigger(VOLUMECHANGE);\n },\n\n _volumeChange: function(e) {\n if (!this.media()) {\n return;\n }\n this.volume(e.value);\n this._changeVolumeButtonImage(e.value);\n this.trigger(VOLUMECHANGE);\n },\n\n _mediaTimeUpdate: function() {\n var currentTime = (this._youTubeVideo) ? this._ytmedia.getCurrentTime() : this._media.currentTime;\n currentTime = currentTime ? currentTime : 0;\n var timeInMs = this._msToTime(currentTime);\n this._currentTimeElement.text(kendo.toString(timeInMs, this._timeFormat));\n if (!this._isDragging) {\n this._seekBarLastPosition = (currentTime + timeZoneSec) * 1000;\n this._slider.value(this._seekBarLastPosition);\n }\n\n return this.isPlaying();\n },\n\n _playStateToggle: function(play) {\n if (typeof play === \"undefined\") {\n play = this._playButtonSpan.is(STATE_PLAY_SELECTOR);\n }\n\n if (play) {\n kendo.ui.icon(this._playButtonSpan, { icon: STATE_PAUSE });\n this._playButton.attr(\"title\", this.options.messages.pause);\n this._playButton.attr(\"aria-label\", this.options.messages.pause);\n }\n else {\n kendo.ui.icon(this._playButtonSpan, { icon: STATE_PLAY });\n this._playButton.attr(\"title\", this.options.messages.play);\n this._playButton.attr(\"aria-label\", this.options.messages.play);\n }\n },\n\n _mediaEnded: function() {\n this._playStateToggle(false);\n this._currentTimeElement.text(kendo.toString(this._msToTime(0), this._timeFormat));\n this._slider.value((0 + timeZoneSec) * 1000);\n this.trigger(END);\n },\n\n _mediaPlay: function() {\n this.trigger(PLAY);\n },\n\n _mediaReady: function() {\n this.trigger(READY);\n },\n\n _mediaDurationChange: function() {\n var durationTime = this._msToTime((this._youTubeVideo) ? this._ytmedia.getDuration() : this._media.duration);\n\n this._timeFormat = durationTime.getHours() === 0 ? timeFormats.shortTime : timeFormats.longTime;\n\n this._durationElement.text(kendo.toString(durationTime, this._timeFormat));\n this._slider.setOptions({\n min: baseTime.getTime(),\n max: durationTime.getTime()\n });\n\n if (!this._isFirstRun) {\n this._resetTime();\n this._isFirstRun = true;\n }\n },\n\n _createYoutubePlayer: function() {\n this._mediaTimeUpdateHandler = this._mediaTimeUpdate.bind(this);\n this._mediaDurationChangeHandler = this._mediaDurationChange.bind(this);\n\n this.wrapper.prepend(templates.youtubePlayer);\n this._ytPlayer = this.wrapper.find(DOT + YTPLAYER)[0];\n $(this._ytPlayer)\n .css({\n width: this.wrapper.width(),\n height: this.wrapper.height()\n });\n\n if (!window.YT || !window.YT.Player) {\n if (!window.onYouTubeIframeAPIReadyRegister) {\n window.onYouTubeIframeAPIReadyRegister = [];\n $.getScript(\"https://www.youtube.com/iframe_api\");\n window.onYouTubeIframeAPIReady =\n function() {\n if (window.onYouTubeIframeAPIReadyRegister) {\n for (var i = 0; i < window.onYouTubeIframeAPIReadyRegister.length; i++) {\n window.onYouTubeIframeAPIReadyRegister[i]._youtubeApiReady();\n }\n }\n window.onYouTubeIframeAPIReadyRegister.length = 0;\n window.onYouTubeIframeAPIReadyRegister = undefined$1;\n };\n }\n window.onYouTubeIframeAPIReadyRegister[window.onYouTubeIframeAPIReadyRegister.length] = this;\n }\n else {\n this._configurePlayer();\n }\n },\n\n _poll: function(name, callback, interval, context) {\n var that = this;\n\n if (that._timers[name] !== null) {\n clearTimeout(that._timers[name]);\n }\n\n that._timers[name] = setTimeout((function(context) {\n return function callLater() {\n if (callback.call(context)) {\n that._timers[name] = setTimeout(callLater, interval);\n }\n };\n })(context), interval);\n\n return that._timers[name];\n },\n\n _youtubeApiReady: function() {\n this._configurePlayer();\n },\n\n _configurePlayer: function() {\n var vars = {\n 'autoplay': +this.options.autoPlay,\n 'wmode': 'transparent',\n 'controls': 0,\n 'rel': 0,\n 'showinfo': 0\n };\n\n this._onYouTubePlayerReady = this._onYouTubePlayerReady.bind(this);\n window.onYouTubePlayerReady = this._onYouTubePlayerReady;\n this._onPlayerStateChangeHandler = this._onPlayerStateChange.bind(this);\n window.onPlayerStateChange = this._onPlayerStateChange;\n\n\n var player = new window.YT.Player(this.wrapper.find(DOT + YTPLAYER)[0], {\n height: this.wrapper.height(),\n width: this.wrapper.width(),\n videoId: this._getMediaId(),\n playerVars: vars,\n events: {\n 'onReady': this._onYouTubePlayerReady,\n 'onStateChange': this._onPlayerStateChangeHandler\n }\n });\n },\n\n _onYouTubePlayerReady: function(event) {\n this._ytmedia = event.target;\n this._ytmedia.getIframe().style.width = \"100%\";\n this._ytmedia.getIframe().style.height = \"100%\";\n this._youTubeVideo = true;\n this._mediaDurationChangeHandler();\n\n if (this.options.autoPlay) {\n this._playStateToggle(true);\n this._ytmedia.loadVideoById(this._getMediaId());\n }\n else {\n this._ytmedia.cueVideoById(this._getMediaId());\n }\n\n if (this.options.mute) {\n this.mute(true);\n }\n\n this.trigger(READY);\n },\n\n _updateTitle: function() {\n this.titlebar().text(this.media().title || this.media().source);\n },\n\n _onPlayerStateChange: function(event) {\n\n if (event.data === 0) {\n this._slider.value(0);\n this._paused = false;\n this._playStateToggle(true);\n this.trigger(END);\n if (this.options.autoRepeat) {\n this.play();\n }\n }\n else if (event.data === 1) {\n this._mediaDurationChange();\n this._ytmedia.setVolume(this.volume());\n if (this._sliderChangeFired) {\n this._sliderChangeFired = false;\n } else {\n this._uiDisplay(false);\n }\n this.trigger(PLAY);\n this._playStateToggle(true);\n\n this._poll(\"progress\", this._mediaTimeUpdate, 500, this);\n this._paused = false;\n }\n else if (event.data === 2) {\n if (!this._paused) {\n this._uiDisplay(true);\n this._playStateToggle(false);\n this.trigger(PAUSE);\n this._paused = true;\n }\n }\n },\n\n _getMediaId: function() {\n var result = this._currentUrl();\n var regExp = /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#\\&\\?]*).*/;\n var match = result.match(regExp);\n\n if (match && match[7].length === 11) {\n result = match[7];\n }\n\n return result;\n },\n\n _mouseClick: function() {\n if (this.isPaused()) {\n this.play();\n } else {\n this.pause();\n }\n },\n\n _initializePlayer: function() {\n if (!this._mouseMoveHandler) {\n this._mouseMoveHandler = this._mouseMove.bind(this);\n this._mouseInHandler = this._mouseIn.bind(this);\n this._mouseOutHandler = this._mouseOut.bind(this);\n\n $(this.wrapper)\n .on(\"mouseenter\" + ns, this._mouseInHandler)\n .on(\"mouseleave\" + ns, this._mouseOutHandler)\n .on(\"mousemove\" + ns, this._mouseMoveHandler);\n }\n\n if (!this._ytmedia && this._youTubeVideo) {\n this._createYoutubePlayer();\n }\n else if (!this._media && !this._youTubeVideo) {\n this._createHtmlPlayer();\n }\n },\n\n _createHtmlPlayer: function() {\n if (!this._videoOverlay) {\n this._mouseClickHanlder = this._mouseClick.bind(this);\n this.wrapper.append(\"
\");\n this._videoOverlay = this.wrapper.find(\".k-mediaplayer-overlay\")\n .on(\"click\" + ns, this._mouseClickHanlder);\n }\n\n this._mediaTimeUpdateHandler = this._mediaTimeUpdate.bind(this);\n this._mediaDurationChangeHandler = this._mediaDurationChange.bind(this);\n this._mediaEndedHandler = this._mediaEnded.bind(this);\n this._mediaCanPlayHandler = this._mediaReady.bind(this);\n this._mediaPlayHandler = this._mediaPlay.bind(this);\n this._videoOverlay.after(templates.htmlPlayer);\n this._media = this.wrapper.find(DOT + MEDIA)[0];\n $(this._media)\n .css({\n width: \"100%\",\n height: \"100%\"\n });\n\n if (this.options.mute) {\n this.mute(true);\n }\n\n this._media.ontimeupdate = this._mediaTimeUpdateHandler;\n this._media.ondurationchange = this._mediaDurationChangeHandler;\n this._media.oncanplay = this._mediaCanPlayHandler;\n this._media.onplay = this._mediaPlayHandler;\n this._media.onended = this._mediaEndedHandler;\n this._media.loop = this.options.autoRepeat;\n },\n\n _mouseIn: function() {\n this._uiDisplay(true);\n },\n\n _mouseOut: function() {\n this._poll(\"mouseIdle\", this._mouseIdle, 3000, this);\n },\n\n _mouseIdle: function() {\n this._uiDisplay(false);\n return false;\n },\n\n _mouseMove: function() {\n if (!(this._titleBar.is(':animated') || this._toolBar.element.is(':animated') || this._slider.wrapper.is(':animated'))) {\n this._uiDisplay(true);\n }\n this._poll(\"mouseIdle\", this._mouseIdle, 3000, this);\n },\n\n _uiDisplay: function(state) {\n var animationSpeed = 'slow';\n var uiElements = this._titleBar\n .add(this._toolBar.element.parent());\n\n if (state) {\n uiElements.fadeIn(animationSpeed);\n }\n else {\n uiElements.fadeOut(animationSpeed);\n if (this.options.navigatable) {\n this.wrapper.trigger(\"focus\");\n }\n }\n },\n\n setOptions: function(options) {\n Widget.fn.setOptions.call(this, options);\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n if (!this.isPaused()) {\n this.pause();\n }\n\n this.element.off(ns);\n this.element.find(DOT + OVERLAY).off(ns);\n this._timers = null;\n this._mouseMoveHandler = null;\n this._mouseOutHandler = null;\n this._mouseInHandler = null;\n this._mouseClickHanlder = null;\n this._keyDownHandler = null;\n this._fullscreenHandler = null;\n\n this._toolbarClickHandler = null;\n this._sliderDragChangeHandler = null;\n this._sliderDraggingHandler = null;\n this._volumeDraggingHandler = null;\n this._volumeChangeHandler = null;\n this._youtubeApiReadyHandler = null;\n this._onYouTubePlayerReady = null;\n this._onPlayerStateChangeHandler = null;\n this._dropDownSelectHandler = null;\n\n if (this._youTubeVideo) {\n this._ytmedia.destroy();\n }\n else {\n this._media.ontimeupdate = this._mediaTimeUpdateHandler = null;\n this._media.ondurationchange = this._mediaDurationChangeHandler = null;\n this._media.oncanplay = this._mediaCanPlayHandler = null;\n this._media.onplay = this._mediaPlayHandler = null;\n this._media.onended = this._mediaEndedHandler = null;\n this._media.src = \"\";\n this._media.remove();\n }\n\n this._mouseMoveTimer = null;\n clearTimeout(this._mouseMoveTimer);\n\n kendo.destroy(this.element);\n },\n\n seek: function(ms) {\n if (typeof ms === 'undefined') {\n return 1000 * (this._youTubeVideo) ? this._ytmedia.getCurrentTime() : (this._media ? this._media.currentTime : 0);\n }\n var seconds = ms / 1000;\n if (this._youTubeVideo) {\n if (seconds + 3 >= this._ytmedia.getDuration() | 0) {\n //avoid infinite bad request loop in youtube player.\n this._ytmedia.seekTo(this._ytmedia.getDuration() - 3 | 0, true);\n } else {\n this._ytmedia.seekTo(seconds, true);\n }\n } else {\n this._media.currentTime = seconds;\n }\n\n return this;\n },\n\n play: function() {\n if (this._youTubeVideo) {\n this._ytmedia.playVideo();\n } else {\n if (kendo.support.mobileOS) {\n this._uiDisplay(false);\n }\n this._media.play();\n }\n this._paused = false;\n\n this._playStateToggle(true);\n\n return this;\n },\n\n stop: function() {\n if (this._youTubeVideo && this._ytmedia) {\n this._ytmedia.stopVideo();\n } else if (this._media && !this._youTubeVideo) {\n if (kendo.support.mobileOS) {\n this._uiDisplay(true);\n }\n this._media.pause();\n this._media.currentTime = 0;\n }\n this._paused = true;\n\n this._playStateToggle(false);\n return this;\n },\n\n pause: function() {\n if (this._youTubeVideo) {\n this._ytmedia.pauseVideo();\n } else {\n if (kendo.support.mobileOS) {\n this._uiDisplay(true);\n }\n this._media.pause();\n }\n this._paused = true;\n this._playStateToggle(false);\n this.trigger(PAUSE);\n return this;\n },\n\n toolbar: function() {\n return this._toolBar;\n },\n\n dropdown: function() {\n return this._dropDown;\n },\n\n titlebar: function() {\n return this._titleBar;\n },\n\n fullScreen: function(enterFullScreen) {\n if (typeof enterFullScreen === 'undefined') {\n return this._isInFullScreen || false;\n }\n var element = this.element.get(0);\n if (enterFullScreen) {\n // Handles the case when the action is triggered by code and not by user iteraction\n this.element.addClass(\"k-mediaplayer-fullscreen\");\n if (element.requestFullscreen) {\n element.requestFullscreen();\n } else if (element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n } else if (element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if (element.msRequestFullscreen) {\n element.msRequestFullscreen();\n }\n this._isInFullScreen = true;\n } else {\n\n if (document.cancelFullscreen) {\n document.cancelFullscreen();\n } else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msCancelFullscreen) {\n document.msCancelFullscreen();\n } else if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n // Handles the case when the action is triggered by code and not by user iteraction\n this.element.removeClass(\"k-mediaplayer-fullscreen\");\n this._isInFullScreen = false;\n }\n this._slider.resize();\n },\n\n volume: function(value) {\n if (typeof value === 'undefined') {\n return (typeof this._volume !== 'undefined') ? this._volume : this._volume = this.options.volume;\n }\n this._volume = value;\n this.mute(value <= 0);\n\n if (this._youTubeVideo) {\n this._ytmedia.setVolume(this._volume);\n } else {\n this._media.volume = this._volume / 100;\n }\n\n this._volumeSlider.value(value);\n },\n\n mute: function(muted) {\n var currentState = this._youTubeVideo ? (this._ytmedia && this._ytmedia.isMuted()) : (this._media && this._media.muted);\n if (typeof muted === 'undefined' || muted === currentState) {\n return currentState;\n }\n if (this._youTubeVideo) {\n if (muted) {\n this._ytmedia.mute();\n }\n else {\n this._ytmedia.unMute();\n }\n }\n else {\n this._media.muted = muted;\n }\n\n if (muted) {\n this._volumeSlider.value(0);\n }\n else {\n this._volumeSlider.value((this._media && this._media.volume * 100) || (this._ytmedia && this._ytmedia.getVolume()));\n }\n this.trigger(VOLUMECHANGE);\n this._changeVolumeButtonImage(this._volumeSlider.value());\n },\n\n isEnded: function() {\n if (this._youTubeVideo) {\n return this._ytmedia.getPlayerState() === 0;\n } else {\n return this._media.ended;\n }\n },\n\n media: function(value) {\n var dropdown = this.dropdown();\n if (typeof value === 'undefined') {\n return (typeof this._mediaData !== 'undefined') ? this._mediaData : this._mediaData = this.options.media;\n }\n\n if (isArray(value.source)) {\n dropdown.setDataSource(value.source);\n dropdown.wrapper.show();\n }\n else {\n dropdown.wrapper.hide();\n }\n\n this._mediaData = value;\n\n this._updateTitle();\n\n this._setPlayerUrl();\n },\n\n isPaused: function() {\n return this._paused;\n },\n\n isPlaying: function() {\n return !this.isEnded() && !this._paused;\n },\n\n _aria: function() {\n this.wrapper.attr(\"role\", \"region\");\n //this.wrapper.attr(\"aria-labelledby\", \"mediaplayerTitleBar\");\n //add onfocus with aria active descendant\n },\n\n _navigatable: function() {\n this._fullscreenHandler = this._fullscreen.bind(this);\n $(document)\n .on(\"webkitfullscreenchange mozfullscreenchange fullscreenchange\" + ns, this._fullscreenHandler);\n\n if (this.options.navigatable) {\n this.wrapper.attr(\"tabIndex\", 0);\n this._keyDownHandler = this._keyDown.bind(this);\n this.wrapper\n .on(\"keydown\" + ns, this._keyDownHandler);\n }\n },\n\n _fullscreen: function() {\n var isFullScreen = document.fullScreen ||\n document.mozFullScreen ||\n document.webkitIsFullScreen,\n fullscreenSpan = this.wrapper.find(FULLSCREEN_ENTER_SELECTOR);\n\n this._uiDisplay(true);\n this._slider.resize();\n\n if (!isFullScreen) {\n kendo.ui.icon(fullscreenSpan, { icon: FULLSCREEN_ENTER });\n this.fullScreen(false);\n }\n },\n\n _keyDown: function(e) {\n e.preventDefault();\n var fsButton = this.wrapper.find(FULLSCREEN_ENTER_SELECTOR);\n\n if (e.keyCode === keys.SPACEBAR) {\n if (this.isPlaying()) {\n this.pause();\n }\n else {\n this.play();\n }\n }\n else if (e.keyCode === keys.ENTER && !this._isInFullScreen) {\n kendo.ui.icon(fsButton, { icon: FULLSCREEN_EXIT });\n this.fullScreen(true);\n }\n else if (e.keyCode === 77) {\n var muted = this.mute();\n this.mute(!muted);\n }\n else if (e.keyCode === keys.ESC && this._isInFullScreen) {\n kendo.ui.icon(fsButton, { icon: FULLSCREEN_ENTER });\n this.fullScreen(false);\n }\n },\n\n _error: function() {\n },\n\n _progress: function() {\n }\n\n });\n\n ui.plugin(MediaPlayer);\n\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}