define(['connectionManager', 'dom', 'loading', 'playbackManager', 'keyboardnavigation', 'dialogHelper', 'apphost', 'css!./style', 'material-icons', 'paper-icon-button-light'], function (connectionManager, dom, loading, playbackManager, keyboardnavigation, dialogHelper, appHost) { 'use strict'; function BookPlayer() { let self = this; self.name = 'Book Player'; self.type = 'mediaplayer'; self.id = 'bookplayer'; self.priority = 1; self.play = function (options) { loading.show(); let elem = createMediaElement(); return setCurrentSrc(elem, options); }; self.stop = function () { let elem = self._mediaElement; let rendition = self._rendition; if (elem && rendition) { rendition.destroy(); elem.remove(); self._mediaElement = null; } }; function onWindowKeyUp(e) { let key = keyboardnavigation.getKeyName(e); let rendition = self._rendition; let book = rendition.book; switch (key) { case 'l': case 'ArrowRight': case 'Right': book.package.metadata.direction === 'rtl' ? rendition.prev() : rendition.next(); break; case 'j': case 'ArrowLeft': case 'Left': book.package.metadata.direction === 'rtl' ? rendition.next() : rendition.prev(); break; case 'Escape': dialogHelper.close(self._mediaElement); break; } } function onDialogClosed() { self.stop(); } function createMediaElement() { let elem = self._mediaElement; if (elem) { return elem; } elem = document.getElementById('bookPlayer'); if (!elem) { elem = dialogHelper.createDialog({ exitAnimationDuration: 400, size: 'fullscreen', autoFocus: false, scrollY: false, exitAnimation: 'fadeout', removeOnClose: true }); elem.id = 'bookPlayer'; let html = ''; html += '