import window from 'window'; import $ from '$'; import _ from '_'; import ko from 'ko'; import key from 'key'; import ssm from 'ssm'; import { $win, $htmlCL, leftPanelDisabled, leftPanelType, sUserAgent, bMobileDevice, bAnimationSupported } from 'Common/Globals'; import { isNormal, pString, detectDropdownVisibility, windowResizeCallback } from 'Common/Utils'; import { KeyState, Magics } from 'Common/Enums'; import { root, rootAdmin, rootUser, populateAuthSuffix } from 'Common/Links'; import { initOnStartOrLangChange, initNotificationLanguage } from 'Common/Translator'; import * as Events from 'Common/Events'; import * as Settings from 'Storage/Settings'; import LanguageStore from 'Stores/Language'; import ThemeStore from 'Stores/Theme'; import { routeOff, setHash } from 'Knoin/Knoin'; import { AbstractBoot } from 'Knoin/AbstractBoot'; class AbstractApp extends AbstractBoot { /** * @param {RemoteStorage|AdminRemoteStorage} Remote */ constructor() { super(); this.isLocalAutocomplete = true; this.iframe = null; this.lastErrorTime = 0; this.iframe = $('