;'use strict';(function(exports){const TRANSITION_TIMEOUT=600;var PanelController=function(app,rootPanelClass){this.RootPanelClass=rootPanelClass||this.ROOT_PANEL_CLASS;this._currentPanel=null;this.app=app;this.rootPanel=null;this.userDictionaryListPanel=null;};PanelController.prototype.ROOT_PANEL_CLASS=GeneralPanel;PanelController.prototype.start=function(){this.rootPanel=new this.RootPanelClass(this.app);this.rootPanel.start();if(typeof UserDictionaryListPanel==='function'){this.userDictionaryListPanel=new UserDictionaryListPanel(this.app);this.userDictionaryListPanel.start();} Promise.resolve(this.rootPanel.beforeShow()).then(this.rootPanel.show.bind(this.rootPanel)).catch(e=>e&&console.error(e));};PanelController.prototype.stop=function(){this._currentPanel=null;this.rootPanel.stop();this.rootPanel=null;if(this.userDictionaryListPanel){this.userDictionaryListPanel.stop();this.userDictionaryListPanel=null;}};PanelController.prototype._createTransitionPromise=function(target){return new Promise(function(resolve){var transitionEnd=function(){clearTimeout(timeout);target.removeEventListener('transitionend',transitionEnd);resolve();};var timeout=setTimeout(transitionEnd,TRANSITION_TIMEOUT);target.addEventListener('transitionend',transitionEnd);});};PanelController.prototype.navigateToRoot=function(){Promise.resolve(this._currentPanel.beforeHide()).then(()=>this.rootPanel.beforeShow()).then(()=>{var transitionPromise=this._createTransitionPromise(this._currentPanel.container);this._currentPanel.container.classList.remove('current');this.rootPanel.container.classList.remove('prev');this.rootPanel.container.classList.add('current');return transitionPromise;}).then(this._currentPanel.hide.bind(this._currentPanel)).then(this.rootPanel.show.bind(this.rootPanel)).then(()=>{this._currentPanel=null;}).catch(e=>e&&console.error(e));};PanelController.prototype.navigateToPanel=function(panel,options){this._currentPanel=panel;Promise.resolve(this.rootPanel.beforeHide()).then(()=>panel.beforeShow(options)).then(()=>{var transitionPromise=this._createTransitionPromise(panel.container);panel.container.classList.add('current');this.rootPanel.container.classList.remove('current');this.rootPanel.container.classList.add('prev');return transitionPromise;}).then(this.rootPanel.hide.bind(this.rootPanel)).then(panel.show.bind(panel)).catch(e=>e&&console.error(e));};var DialogController=function(){this.userDictionaryEditDialog=null;};DialogController.prototype.start=function(){if(typeof UserDictionaryEditDialog==='function'){this.userDictionaryEditDialog=new UserDictionaryEditDialog(this);this.userDictionaryEditDialog.start();}};DialogController.prototype.stop=function(){if(this.userDictionaryEditDialog){this.userDictionaryEditDialog.stop();this.userDictionaryEditDialog=null;}};DialogController.prototype._createTransitionPromise=PanelController.prototype._createTransitionPromise;DialogController.prototype.openDialog=function(dialog,options){if(!('onsubmit'in dialog)){return Promise.reject('Dialog does not have a onsubmit callback');} var resultPromiseResolve,resultPromiseReject;var resultPromise=new Promise(function(resolve,reject){resultPromiseResolve=resolve;resultPromiseReject=reject;});dialog.onsubmit=results=>{resultPromiseResolve(results);Promise.resolve(dialog.beforeHide()).then(()=>{var transitionPromise=this._createTransitionPromise(dialog.container);dialog.container.classList.remove('displayed');return transitionPromise;}).then(()=>{dialog.onsubmit=undefined;return dialog.hide();}).catch(e=>e&&console.log(e));};Promise.resolve(dialog.beforeShow(options)).then(()=>{var transitionPromise=this._createTransitionPromise(dialog.container);dialog.container.classList.add('displayed');return transitionPromise;}).then(dialog.show.bind(dialog)).catch(e=>resultPromiseReject(e));return resultPromise;};exports.PanelController=PanelController;exports.DialogController=DialogController;})(window);