import window from 'window'; import $ from '$'; import _ from '_'; import ko from 'ko'; import key from 'key'; import ssm from 'ssm'; import { $win, $html, $doc, startMicrotime, leftPanelDisabled, leftPanelType, sUserAgent, bMobileDevice, bAnimationSupported } from 'Common/Globals'; import { noop, isNormal, pString, inArray, microtime, timestamp, 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 {toggle as toggleCmd} from 'Common/Cmd'; import * as Events from 'Common/Events'; import * as Settings from 'Storage/Settings'; import LanguageStore from 'Stores/Language'; import ThemeStore from 'Stores/Theme'; import SocialStore from 'Stores/Social'; import {routeOff, setHash} from 'Knoin/Knoin'; import {AbstractBoot} from 'Knoin/AbstractBoot'; class AbstractApp extends AbstractBoot { /** * @param {RemoteStorage|AdminRemoteStorage} Remote */ constructor(Remote) { super(); this.googlePreviewSupportedCache = null; this.isLocalAutocomplete = true; this.iframe = null; this.lastErrorTime = 0; this.iframe = $('