text: import { View } from 'framework/views/view';
  import { Events } from 'framework/events';
  import { Keys } from 'const/keys';
  import { Scrollable } from 'framework/views/scrollable';
  import { StringFormat } from 'util/formatting/string-format';
  import template from 'templates/settings/settings.hbs';
  
  class SettingsView extends View {
      parent = '.app__body';
  
      template = template;
  
      events = {
          'click .settings__back-button': 'returnToApp'
      };
  
      constructor(model, options) {
          super(model, options);
          this.initScroll();
          this.listenTo(Events, 'set-page', this.setPage);
          this.onKey(Keys.DOM_VK_ESCAPE, this.returnToApp);
      }
  
      render() {
          super.render();
          this.createScroll({
              root: this.$el.find('.settings')[0],
              scroller: this.$el.find('.scroller')[0],
              bar: this.$el.find('.scroller__bar')[0]
          });
          this.pageEl = this.$el.find('.scroller');
      }
  
      setPage(e) {
          let { page, section, file } = e;
          if (page === 'file' && file && file.external) {
              page = 'file-external';
          }
          const module = require('./settings-' + page + '-view');
          const viewName = StringFormat.pascalCase(page);
          const SettingsPageView = module[`Settings${viewName}View`];
          if (this.views.page) {
              this.views.page.remove();
          }
          this.views.page = new SettingsPageView(file, { parent: this.pageEl[0] });
          this.views.page.appModel = this.model;
          this.views.page.render();
          this.file = file;
          this.page = page;
          this.pageResized();
          this.scrollToSection(section);
      }
  
      scrollToSection(section) {
          let scrollEl;
          if (section) {
              scrollEl = this.views.page.el.querySelector(`#${section}`);
          }
          if (!scrollEl) {
              scrollEl = this.views.page.el.querySelector(`h1`);
          }
          if (scrollEl) {
              scrollEl.scrollIntoView(true);
          }
      }
  
      returnToApp() {
          Events.emit('toggle-settings', false);
      }
  }
  
  Object.assign(SettingsView.prototype, Scrollable);
  
  export { SettingsView };
  