diff --git a/dist/javascripts/app.js b/dist/javascripts/app.js index 5c33a6b59..a3c88ee9f 100644 --- a/dist/javascripts/app.js +++ b/dist/javascripts/app.js @@ -1,71264 +1,4 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./app/assets/javascripts/index.js"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./app/assets/javascripts/app.js": -/*!***************************************!*\ - !*** ./app/assets/javascripts/app.js ***! - \***************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ "./node_modules/angular/index.js"); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _routes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./routes */ "./app/assets/javascripts/routes.js"); -/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./state */ "./app/assets/javascripts/state.js"); -/* harmony import */ var _controllers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./controllers */ "./app/assets/javascripts/controllers/index.js"); -/* harmony import */ var _directives_functional__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./directives/functional */ "./app/assets/javascripts/directives/functional/index.js"); -/* harmony import */ var _directives_views__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./directives/views */ "./app/assets/javascripts/directives/views/index.js"); -/* harmony import */ var _filters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./filters */ "./app/assets/javascripts/filters/index.js"); -/* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./services */ "./app/assets/javascripts/services/index.js"); - - - - - - - - - - -angular__WEBPACK_IMPORTED_MODULE_0___default.a.module('app', ['ngSanitize']); // Config - -angular__WEBPACK_IMPORTED_MODULE_0___default.a.module('app').config(_routes__WEBPACK_IMPORTED_MODULE_1__["configRoutes"]).constant('appVersion', "3.0.25"); // Controllers - -angular__WEBPACK_IMPORTED_MODULE_0___default.a.module('app').directive('root', function () { - return new _controllers__WEBPACK_IMPORTED_MODULE_3__["Root"](); -}).directive('tagsPanel', function () { - return new _controllers__WEBPACK_IMPORTED_MODULE_3__["TagsPanel"](); -}).directive('notesPanel', function () { - return new _controllers__WEBPACK_IMPORTED_MODULE_3__["NotesPanel"](); -}).directive('editorPanel', function () { - return new _controllers__WEBPACK_IMPORTED_MODULE_3__["EditorPanel"](); -}).directive('footer', function () { - return new _controllers__WEBPACK_IMPORTED_MODULE_3__["Footer"](); -}).directive('lockScreen', function () { - return new _controllers__WEBPACK_IMPORTED_MODULE_3__["LockScreen"](); -}); // Directives - Functional - -angular__WEBPACK_IMPORTED_MODULE_0___default.a.module('app').directive('snAutofocus', ['$timeout', _directives_functional__WEBPACK_IMPORTED_MODULE_4__["autofocus"]]).directive('clickOutside', ['$document', _directives_functional__WEBPACK_IMPORTED_MODULE_4__["clickOutside"]]).directive('delayHide', _directives_functional__WEBPACK_IMPORTED_MODULE_4__["delayHide"]).directive('elemReady', _directives_functional__WEBPACK_IMPORTED_MODULE_4__["elemReady"]).directive('fileChange', _directives_functional__WEBPACK_IMPORTED_MODULE_4__["fileChange"]).directive('infiniteScroll', ['$rootScope', '$window', '$timeout', _directives_functional__WEBPACK_IMPORTED_MODULE_4__["infiniteScroll"]]).directive('lowercase', _directives_functional__WEBPACK_IMPORTED_MODULE_4__["lowercase"]).directive('selectOnClick', ['$window', _directives_functional__WEBPACK_IMPORTED_MODULE_4__["selectOnClick"]]).directive('snEnter', _directives_functional__WEBPACK_IMPORTED_MODULE_4__["snEnter"]); // Directives - Views - -angular__WEBPACK_IMPORTED_MODULE_0___default.a.module('app').directive('accountMenu', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["AccountMenu"](); -}).directive('actionsMenu', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["ActionsMenu"](); -}).directive('componentModal', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["ComponentModal"](); -}).directive('componentView', ["$rootScope", "componentManager", "desktopManager", "$timeout", function ($rootScope, componentManager, desktopManager, $timeout) { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["ComponentView"]($rootScope, componentManager, desktopManager, $timeout); -}]).directive('conflictResolutionModal', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["ConflictResolutionModal"](); -}).directive('editorMenu', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["EditorMenu"](); -}).directive('inputModal', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["InputModal"](); -}).directive('menuRow', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["MenuRow"](); -}).directive('panelResizer', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["PanelResizer"](); -}).directive('passwordWizard', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["PasswordWizard"](); -}).directive('permissionsModal', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["PermissionsModal"](); -}).directive('privilegesAuthModal', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["PrivilegesAuthModal"](); -}).directive('privilegesManagementModal', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["PrivilegesManagementModal"](); -}).directive('revisionPreviewModal', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["RevisionPreviewModal"](); -}).directive('sessionHistoryMenu', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["SessionHistoryMenu"](); -}).directive('syncResolutionMenu', function () { - return new _directives_views__WEBPACK_IMPORTED_MODULE_5__["SyncResolutionMenu"](); -}); // Filters - -angular__WEBPACK_IMPORTED_MODULE_0___default.a.module('app').filter('trusted', ['$sce', _filters__WEBPACK_IMPORTED_MODULE_6__["trusted"]]); // Services - -angular__WEBPACK_IMPORTED_MODULE_0___default.a.module('app').service('appState', _state__WEBPACK_IMPORTED_MODULE_2__["AppState"]).service('preferencesManager', _services__WEBPACK_IMPORTED_MODULE_7__["PreferencesManager"]).service('actionsManager', _services__WEBPACK_IMPORTED_MODULE_7__["ActionsManager"]).service('archiveManager', _services__WEBPACK_IMPORTED_MODULE_7__["ArchiveManager"]).service('authManager', _services__WEBPACK_IMPORTED_MODULE_7__["AuthManager"]).service('componentManager', _services__WEBPACK_IMPORTED_MODULE_7__["ComponentManager"]).service('dbManager', _services__WEBPACK_IMPORTED_MODULE_7__["DBManager"]).service('desktopManager', _services__WEBPACK_IMPORTED_MODULE_7__["DesktopManager"]).service('httpManager', _services__WEBPACK_IMPORTED_MODULE_7__["HttpManager"]).service('keyboardManager', _services__WEBPACK_IMPORTED_MODULE_7__["KeyboardManager"]).service('migrationManager', _services__WEBPACK_IMPORTED_MODULE_7__["MigrationManager"]).service('modelManager', _services__WEBPACK_IMPORTED_MODULE_7__["ModelManager"]).service('nativeExtManager', _services__WEBPACK_IMPORTED_MODULE_7__["NativeExtManager"]).service('passcodeManager', _services__WEBPACK_IMPORTED_MODULE_7__["PasscodeManager"]).service('privilegesManager', _services__WEBPACK_IMPORTED_MODULE_7__["PrivilegesManager"]).service('sessionHistory', _services__WEBPACK_IMPORTED_MODULE_7__["SessionHistory"]).service('singletonManager', _services__WEBPACK_IMPORTED_MODULE_7__["SingletonManager"]).service('statusManager', _services__WEBPACK_IMPORTED_MODULE_7__["StatusManager"]).service('storageManager', _services__WEBPACK_IMPORTED_MODULE_7__["StorageManager"]).service('syncManager', _services__WEBPACK_IMPORTED_MODULE_7__["SyncManager"]).service('alertManager', _services__WEBPACK_IMPORTED_MODULE_7__["AlertManager"]).service('themeManager', _services__WEBPACK_IMPORTED_MODULE_7__["ThemeManager"]); - -/***/ }), - -/***/ "./app/assets/javascripts/controllers/abstract/pure_ctrl.js": -/*!******************************************************************!*\ - !*** ./app/assets/javascripts/controllers/abstract/pure_ctrl.js ***! - \******************************************************************/ -/*! exports provided: PureCtrl */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PureCtrl", function() { return PureCtrl; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); - - - -var PureCtrl = -/*#__PURE__*/ -function () { - function PureCtrl($timeout) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, PureCtrl); - - if (!$timeout) { - throw 'Invalid PureCtrl construction.'; - } - - this.$timeout = $timeout; - this.state = {}; - this.props = {}; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(PureCtrl, [{ - key: "setState", - value: function setState(state) { - var _this = this; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function setState$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - return _context.abrupt("return", new Promise(function (resolve) { - _this.$timeout(function () { - _this.state = Object.freeze(Object.assign({}, _this.state, state)); - resolve(); - }); - })); - - case 1: - case "end": - return _context.stop(); - } - } - }); - } - }, { - key: "initProps", - value: function initProps(props) { - if (Object.keys(this.props).length > 0) { - throw 'Already init-ed props.'; - } - - this.props = Object.freeze(Object.assign({}, this.props, props)); - } - }]); - - return PureCtrl; -}(); - -/***/ }), - -/***/ "./app/assets/javascripts/controllers/constants.js": -/*!*********************************************************!*\ - !*** ./app/assets/javascripts/controllers/constants.js ***! - \*********************************************************/ -/*! exports provided: PANEL_NAME_NOTES, PANEL_NAME_TAGS */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PANEL_NAME_NOTES", function() { return PANEL_NAME_NOTES; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PANEL_NAME_TAGS", function() { return PANEL_NAME_TAGS; }); -var PANEL_NAME_NOTES = 'notes'; -var PANEL_NAME_TAGS = 'tags'; - -/***/ }), - -/***/ "./app/assets/javascripts/controllers/editor.js": -/*!******************************************************!*\ - !*** ./app/assets/javascripts/controllers/editor.js ***! - \******************************************************/ -/*! exports provided: EditorPanel */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EditorPanel", function() { return EditorPanel; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js"); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js"); -/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js"); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js"); -/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7__); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! angular */ "./node_modules/angular/index.js"); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_8__); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! snjs */ "./node_modules/snjs/dist/snjs.js"); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(snjs__WEBPACK_IMPORTED_MODULE_9__); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/utils */ "./app/assets/javascripts/utils.js"); -/* harmony import */ var _services_keyboardManager__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/services/keyboardManager */ "./app/assets/javascripts/services/keyboardManager.js"); -/* harmony import */ var _services_privilegesManager__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/services/privilegesManager */ "./app/assets/javascripts/services/privilegesManager.js"); -/* harmony import */ var _editor_pug__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! %/editor.pug */ "./app/assets/templates/editor.pug"); -/* harmony import */ var _editor_pug__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_editor_pug__WEBPACK_IMPORTED_MODULE_13__); -/* harmony import */ var _Controllers__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Controllers */ "./app/assets/javascripts/controllers/index.js"); -/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/state */ "./app/assets/javascripts/state.js"); -/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/strings */ "./app/assets/javascripts/strings.js"); -/* harmony import */ var _services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/services/preferencesManager */ "./app/assets/javascripts/services/preferencesManager.js"); - - - - - - - - - - - - - - - - - - -var NOTE_PREVIEW_CHAR_LIMIT = 80; -var MINIMUM_STATUS_DURATION = 400; -var SAVE_TIMEOUT_DEBOUNCE = 350; -var SAVE_TIMEOUT_NO_DEBOUNCE = 100; -var EDITOR_DEBOUNCE = 200; -var APP_DATA_KEY_PINNED = 'pinned'; -var APP_DATA_KEY_LOCKED = 'locked'; -var APP_DATA_KEY_ARCHIVED = 'archived'; -var APP_DATA_KEY_PREFERS_PLAIN_EDITOR = 'prefersPlainEditor'; -var ELEMENT_ID_NOTE_TEXT_EDITOR = 'note-text-editor'; -var ELEMENT_ID_NOTE_TITLE_EDITOR = 'note-title-editor'; -var ELEMENT_ID_EDITOR_CONTENT = 'editor-content'; -var ELEMENT_ID_NOTE_TAGS_COMPONENT_CONTAINER = 'note-tags-component-container'; -var DESKTOP_MONOSPACE_FAMILY = "Menlo,Consolas,'DejaVu Sans Mono',monospace"; -var WEB_MONOSPACE_FAMILY = "monospace"; -var SANS_SERIF_FAMILY = "inherit"; - -var EditorCtrl = -/*#__PURE__*/ -function (_PureCtrl) { - EditorCtrl.$inject = ["$timeout", "$rootScope", "alertManager", "appState", "authManager", "actionsManager", "componentManager", "desktopManager", "keyboardManager", "modelManager", "preferencesManager", "privilegesManager", "sessionHistory", "syncManager"]; - - _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(EditorCtrl, _PureCtrl); - - /* @ngInject */ - function EditorCtrl($timeout, $rootScope, alertManager, appState, authManager, actionsManager, componentManager, desktopManager, keyboardManager, modelManager, preferencesManager, privilegesManager, sessionHistory - /** Unused below, required to load globally */ - , syncManager) { - var _this; - - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, EditorCtrl); - - _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(EditorCtrl).call(this, $timeout)); - - _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this), "editorMenuOnSelect", function (component) { - if (!component || component.area === 'editor-editor') { - /** If plain editor or other editor */ - _this.setMenuState('showEditorMenu', false); - - var editor = component; - - if (_this.state.selectedEditor && editor !== _this.state.selectedEditor) { - _this.disassociateComponentWithCurrentNote(_this.state.selectedEditor); - } - - if (editor) { - var prefersPlain = _this.state.note.getAppDataItem(APP_DATA_KEY_PREFERS_PLAIN_EDITOR) === true; - - if (prefersPlain) { - _this.state.note.setAppDataItem(APP_DATA_KEY_PREFERS_PLAIN_EDITOR, false); - - _this.modelManager.setItemDirty(_this.state.note); - } - - _this.associateComponentWithCurrentNote(editor); - } else { - /** Note prefers plain editor */ - if (!_this.state.note.getAppDataItem(APP_DATA_KEY_PREFERS_PLAIN_EDITOR)) { - _this.state.note.setAppDataItem(APP_DATA_KEY_PREFERS_PLAIN_EDITOR, true); - - _this.modelManager.setItemDirty(_this.state.note); - } - - _this.reloadFont(); - } - - _this.setState({ - selectedEditor: editor - }); - } else if (component.area === 'editor-stack') { - _this.toggleStackComponentForCurrentItem(component); - } - /** Dirtying can happen above */ - - - _this.syncManager.sync(); - }); - - _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this), "onPanelResizeFinish", function (width, left, isMaxWidth) { - if (isMaxWidth) { - _this.preferencesManager.setUserPrefValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_WIDTH"], null); - } else { - if (width !== undefined && width !== null) { - _this.preferencesManager.setUserPrefValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_WIDTH"], width); - - _this.leftResizeControl.setWidth(width); - } - } - - if (left !== undefined && left !== null) { - _this.preferencesManager.setUserPrefValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_LEFT"], left); - - _this.rightResizeControl.setLeft(left); - } - - _this.preferencesManager.syncUserPreferences(); - }); - - _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this), "onEditorLoad", function (editor) { - _this.desktopManager.redoSearch(); - }); - - _this.$rootScope = $rootScope; - _this.alertManager = alertManager; - _this.appState = appState; - _this.actionsManager = actionsManager; - _this.authManager = authManager; - _this.componentManager = componentManager; - _this.desktopManager = desktopManager; - _this.keyboardManager = keyboardManager; - _this.modelManager = modelManager; - _this.preferencesManager = preferencesManager; - _this.privilegesManager = privilegesManager; - _this.syncManager = syncManager; - _this.state = { - componentStack: [], - editorDebounce: EDITOR_DEBOUNCE, - isDesktop: Object(_utils__WEBPACK_IMPORTED_MODULE_10__["isDesktopApplication"])(), - spellcheck: true - }; - _this.leftResizeControl = {}; - _this.rightResizeControl = {}; - - _this.addAppStateObserver(); - - _this.addSyncEventHandler(); - - _this.addSyncStatusObserver(); - - _this.addMappingObservers(); - - _this.registerComponentHandler(); - - _this.registerKeyboardShortcuts(); - /** Used by .pug template */ - - - _this.prefKeyMonospace = _services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_MONOSPACE_ENABLED"]; - _this.prefKeySpellcheck = _services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_SPELLCHECK"]; - _this.prefKeyMarginResizers = _services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_RESIZERS_ENABLED"]; - return _this; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(EditorCtrl, [{ - key: "addAppStateObserver", - value: function addAppStateObserver() { - var _this2 = this; - - this.appState.addObserver(function (eventName, data) { - if (eventName === _state__WEBPACK_IMPORTED_MODULE_15__["APP_STATE_EVENT_NOTE_CHANGED"]) { - _this2.handleNoteSelectionChange(_this2.appState.getSelectedNote(), data.previousNote); - } else if (eventName === _state__WEBPACK_IMPORTED_MODULE_15__["APP_STATE_EVENT_PREFERENCES_CHANGED"]) { - _this2.loadPreferences(); - } - }); - } - }, { - key: "handleNoteSelectionChange", - value: function handleNoteSelectionChange(note, previousNote) { - var associatedEditor; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function handleNoteSelectionChange$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - this.setState({ - note: this.appState.getSelectedNote(), - showExtensions: false, - showOptionsMenu: false, - altKeyDown: false, - noteStatus: null - }); - - if (note) { - _context.next = 3; - break; - } - - return _context.abrupt("return"); - - case 3: - associatedEditor = this.editorForNote(note); - - if (associatedEditor && associatedEditor !== this.state.selectedEditor) { - /** - * Setting note to not ready will remove the editor from view in a flash, - * so we only want to do this if switching between external editors - */ - this.setState({ - noteReady: false, - selectedEditor: associatedEditor - }); - } else if (!associatedEditor) { - /** No editor */ - this.setState({ - selectedEditor: null - }); - } - - _context.next = 7; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.setState({ - noteReady: true - })); - - case 7: - this.reloadTagsString(); - this.loadPreferences(); - - if (note.dummy) { - this.focusEditor(); - } - - if (previousNote && previousNote !== note) { - if (previousNote.dummy) { - this.performNoteDeletion(previousNote); - } - } - - this.reloadComponentContext(); - - case 12: - case "end": - return _context.stop(); - } - } - }, null, this); - } - }, { - key: "addMappingObservers", - value: function addMappingObservers() { - var _this3 = this; - - this.modelManager.addItemSyncObserver('editor-note-observer', 'Note', function (allItems, validItems, deletedItems, source) { - if (!_this3.state.note) { - return; - } - - if (_this3.state.note.deleted || _this3.state.note.content.trashed) { - return; - } - - if (!snjs__WEBPACK_IMPORTED_MODULE_9__["SFModelManager"].isMappingSourceRetrieved(source)) { - return; - } - - var matchingNote = allItems.find(function (item) { - return item.uuid === _this3.state.note.uuid; - }); - - if (!matchingNote) { - return; - } - - _this3.reloadTagsString(); - }); - this.modelManager.addItemSyncObserver('editor-tag-observer', 'Tag', function (allItems, validItems, deletedItems, source) { - if (!_this3.state.note) { - return; - } - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = allItems[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var tag = _step.value; - - if (!_this3.state.note.savedTagsString || tag.deleted || tag.hasRelationshipWithItem(_this3.state.note)) { - _this3.reloadTagsString(); - - break; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - }); - this.modelManager.addItemSyncObserver('editor-component-observer', 'SN|Component', function (allItems, validItems, deletedItems, source) { - if (!_this3.state.note) { - return; - } - /** Reload componentStack in case new ones were added or removed */ - - - _this3.reloadComponentStackArray(); - /** Observe editor changes to see if the current note should update its editor */ - - - var editors = allItems.filter(function (item) { - return item.isEditor(); - }); - - if (editors.length === 0) { - return; - } - /** Find the most recent editor for note */ - - - var editor = _this3.editorForNote(_this3.state.note); - - _this3.setState({ - selectedEditor: editor - }); - - if (!editor) { - _this3.reloadFont(); - } - }); - } - }, { - key: "addSyncEventHandler", - value: function addSyncEventHandler() { - var _this4 = this; - - this.syncManager.addEventHandler(function (eventName, data) { - if (!_this4.state.note) { - return; - } - - if (eventName === 'sync:taking-too-long') { - _this4.setState({ - syncTakingTooLong: true - }); - } else if (eventName === 'sync:completed') { - _this4.setState({ - syncTakingTooLong: false - }); - - if (_this4.state.note.dirty) { - /** if we're still dirty, don't change status, a sync is likely upcoming. */ - } else { - var savedItem = data.savedItems.find(function (item) { - return item.uuid === _this4.state.note.uuid; - }); - var isInErrorState = _this4.state.saveError; - - if (isInErrorState || savedItem) { - _this4.showAllChangesSavedStatus(); - } - } - } else if (eventName === 'sync:error') { - /** - * Only show error status in editor if the note is dirty. - * Otherwise, it means the originating sync came from somewhere else - * and we don't want to display an error here. - */ - if (_this4.state.note.dirty) { - _this4.showErrorStatus(); - } - } - }); - } - }, { - key: "addSyncStatusObserver", - value: function addSyncStatusObserver() { - var _this5 = this; - - this.syncStatusObserver = this.syncManager.registerSyncStatusObserver(function (status) { - if (status.localError) { - _this5.$timeout(function () { - _this5.showErrorStatus({ - message: "Offline Saving Issue", - desc: "Changes not saved" - }); - }, 500); - } - }); - } - }, { - key: "editorForNote", - value: function editorForNote(note) { - return this.componentManager.editorForNote(note); - } - }, { - key: "setMenuState", - value: function setMenuState(menu, state) { - this.setState(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default()({}, menu, state)); - this.closeAllMenus({ - exclude: menu - }); - } - }, { - key: "toggleMenu", - value: function toggleMenu(menu) { - this.setMenuState(menu, !this.state[menu]); - } - }, { - key: "closeAllMenus", - value: function closeAllMenus() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - exclude = _ref.exclude; - - var allMenus = ['showOptionsMenu', 'showEditorMenu', 'showExtensions', 'showSessionHistory']; - var menuState = {}; - - for (var _i = 0, _allMenus = allMenus; _i < _allMenus.length; _i++) { - var candidate = _allMenus[_i]; - - if (candidate !== exclude) { - menuState[candidate] = false; - } - } - - this.setState(menuState); - } - }, { - key: "hasAvailableExtensions", - value: function hasAvailableExtensions() { - return this.actionsManager.extensionsInContextOfItem(this.state.note).length > 0; - } - }, { - key: "performFirefoxPinnedTabFix", - value: function performFirefoxPinnedTabFix() { - /** - * For Firefox pinned tab issue: - * When a new browser session is started, and SN is in a pinned tab, - * SN is unusable until the tab is reloaded. - */ - if (document.hidden) { - window.location.reload(); - } - } - }, { - key: "saveNote", - value: function saveNote(_ref2) { - var _this6 = this; - - var bypassDebouncer = _ref2.bypassDebouncer, - updateClientModified = _ref2.updateClientModified, - dontUpdatePreviews = _ref2.dontUpdatePreviews; - this.performFirefoxPinnedTabFix(); - var note = this.state.note; - note.dummy = false; - - if (note.deleted) { - this.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_16__["STRING_DELETED_NOTE"] - }); - return; - } - - if (!this.modelManager.findItem(note.uuid)) { - this.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_16__["STRING_INVALID_NOTE"] - }); - return; - } - - this.showSavingStatus(); - - if (!dontUpdatePreviews) { - var text = note.text || ''; - var truncate = text.length > NOTE_PREVIEW_CHAR_LIMIT; - var substring = text.substring(0, NOTE_PREVIEW_CHAR_LIMIT); - var previewPlain = substring + (truncate ? _strings__WEBPACK_IMPORTED_MODULE_16__["STRING_ELLIPSES"] : ''); - note.content.preview_plain = previewPlain; - note.content.preview_html = null; - } - - this.modelManager.setItemDirty(note, true, updateClientModified); - - if (this.saveTimeout) { - this.$timeout.cancel(this.saveTimeout); - } - - var noDebounce = bypassDebouncer || this.authManager.offline(); - var syncDebouceMs = noDebounce ? SAVE_TIMEOUT_NO_DEBOUNCE : SAVE_TIMEOUT_DEBOUNCE; - this.saveTimeout = this.$timeout(function () { - _this6.syncManager.sync().then(function (response) { - if (response && response.error && !_this6.didShowErrorAlert) { - _this6.didShowErrorAlert = true; - - _this6.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_16__["STRING_GENERIC_SAVE_ERROR"] - }); - } - }); - }, syncDebouceMs); - } - }, { - key: "showSavingStatus", - value: function showSavingStatus() { - this.setStatus({ - message: "Saving..." - }, false); - } - }, { - key: "showAllChangesSavedStatus", - value: function showAllChangesSavedStatus() { - this.setState({ - saveError: false, - syncTakingTooLong: false - }); - var status = "All changes saved"; - - if (this.authManager.offline()) { - status += " (offline)"; - } - - this.setStatus({ - message: status - }); - } - }, { - key: "showErrorStatus", - value: function showErrorStatus(error) { - if (!error) { - error = { - message: "Sync Unreachable", - desc: "Changes saved offline" - }; - } - - this.setState({ - saveError: true, - syncTakingTooLong: false - }); - this.setStatus(error); - } - }, { - key: "setStatus", - value: function setStatus(status) { - var _this7 = this; - - var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var waitForMs; - - if (!this.state.noteStatus || !this.state.noteStatus.date) { - waitForMs = 0; - } else { - waitForMs = MINIMUM_STATUS_DURATION - (new Date() - this.state.noteStatus.date); - } - - if (!wait || waitForMs < 0) { - waitForMs = 0; - } - - if (this.statusTimeout) { - this.$timeout.cancel(this.statusTimeout); - } - - this.statusTimeout = this.$timeout(function () { - status.date = new Date(); - - _this7.setState({ - noteStatus: status - }); - }, waitForMs); - } - }, { - key: "contentChanged", - value: function contentChanged() { - this.saveNote({ - updateClientModified: true - }); - } - }, { - key: "onTitleEnter", - value: function onTitleEnter($event) { - $event.target.blur(); - this.onTitleChange(); - this.focusEditor(); - } - }, { - key: "onTitleChange", - value: function onTitleChange() { - this.saveNote({ - dontUpdatePreviews: true, - updateClientModified: true - }); - } - }, { - key: "focusEditor", - value: function focusEditor() { - var element = document.getElementById(ELEMENT_ID_NOTE_TEXT_EDITOR); - - if (element) { - this.lastEditorFocusEventSource = _state__WEBPACK_IMPORTED_MODULE_15__["EVENT_SOURCE_SCRIPT"]; - element.focus(); - } - } - }, { - key: "focusTitle", - value: function focusTitle() { - document.getElementById(ELEMENT_ID_NOTE_TITLE_EDITOR).focus(); - } - }, { - key: "clickedTextArea", - value: function clickedTextArea() { - this.setMenuState('showOptionsMenu', false); - } - }, { - key: "onNameFocus", - value: function onNameFocus() { - this.editingName = true; - } - }, { - key: "onContentFocus", - value: function onContentFocus() { - this.appState.editorDidFocus(this.lastEditorFocusEventSource); - this.lastEditorFocusEventSource = null; - } - }, { - key: "onNameBlur", - value: function onNameBlur() { - this.editingName = false; - } - }, { - key: "selectedMenuItem", - value: function selectedMenuItem(hide) { - if (hide) { - this.setMenuState('showOptionsMenu', false); - } - } - }, { - key: "deleteNote", - value: function deleteNote(permanently) { - var _this8 = this; - - var run, requiresPrivilege; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function deleteNote$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (!this.state.note.dummy) { - _context2.next = 3; - break; - } - - this.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_16__["STRING_DELETE_PLACEHOLDER_ATTEMPT"] - }); - return _context2.abrupt("return"); - - case 3: - run = function run() { - if (_this8.state.note.locked) { - _this8.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_16__["STRING_DELETE_LOCKED_ATTEMPT"] - }); - - return; - } - - var title = _this8.state.note.safeTitle().length ? "'".concat(_this8.state.note.title, "'") : "this note"; - var text = Object(_strings__WEBPACK_IMPORTED_MODULE_16__["StringDeleteNote"])({ - title: title, - permanently: permanently - }); - - _this8.alertManager.confirm({ - text: text, - destructive: true, - onConfirm: function onConfirm() { - if (permanently) { - _this8.performNoteDeletion(_this8.state.note); - } else { - _this8.state.note.content.trashed = true; - - _this8.saveNote({ - bypassDebouncer: true, - dontUpdatePreviews: true - }); - } - - _this8.appState.setSelectedNote(null); - - _this8.setMenuState('showOptionsMenu', false); - } - }); - }; - - _context2.next = 6; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.privilegesManager.actionRequiresPrivilege(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_12__["PrivilegesManager"].ActionDeleteNote)); - - case 6: - requiresPrivilege = _context2.sent; - - if (requiresPrivilege) { - this.privilegesManager.presentPrivilegesModal(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_12__["PrivilegesManager"].ActionDeleteNote, function () { - run(); - }); - } else { - run(); - } - - case 8: - case "end": - return _context2.stop(); - } - } - }, null, this); - } - }, { - key: "performNoteDeletion", - value: function performNoteDeletion(note) { - this.modelManager.setItemToBeDeleted(note); - - if (note === this.state.note) { - this.setState({ - note: null - }); - } - - if (note.dummy) { - this.modelManager.removeItemLocally(note); - return; - } - - this.syncManager.sync(); - } - }, { - key: "restoreTrashedNote", - value: function restoreTrashedNote() { - this.state.note.content.trashed = false; - this.saveNote({ - bypassDebouncer: true, - dontUpdatePreviews: true - }); - this.appState.setSelectedNote(null); - } - }, { - key: "deleteNotePermanantely", - value: function deleteNotePermanantely() { - this.deleteNote(true); - } - }, { - key: "getTrashCount", - value: function getTrashCount() { - return this.modelManager.trashedItems().length; - } - }, { - key: "emptyTrash", - value: function emptyTrash() { - var _this9 = this; - - var count = this.getTrashCount(); - this.alertManager.confirm({ - text: Object(_strings__WEBPACK_IMPORTED_MODULE_16__["StringEmptyTrash"])({ - count: count - }), - destructive: true, - onConfirm: function onConfirm() { - _this9.modelManager.emptyTrash(); - - _this9.syncManager.sync(); - } - }); - } - }, { - key: "togglePin", - value: function togglePin() { - this.state.note.setAppDataItem(APP_DATA_KEY_PINNED, !this.state.note.pinned); - this.saveNote({ - bypassDebouncer: true, - dontUpdatePreviews: true - }); - } - }, { - key: "toggleLockNote", - value: function toggleLockNote() { - this.state.note.setAppDataItem(APP_DATA_KEY_LOCKED, !this.state.note.locked); - this.saveNote({ - bypassDebouncer: true, - dontUpdatePreviews: true - }); - } - }, { - key: "toggleProtectNote", - value: function toggleProtectNote() { - var _this10 = this; - - this.state.note.content.protected = !this.state.note.content.protected; - this.saveNote({ - bypassDebouncer: true, - dontUpdatePreviews: true - }); - /** Show privilegesManager if protection is not yet set up */ - - this.privilegesManager.actionHasPrivilegesConfigured(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_12__["PrivilegesManager"].ActionViewProtectedNotes).then(function (configured) { - if (!configured) { - _this10.privilegesManager.presentPrivilegesManagementModal(); - } - }); - } - }, { - key: "toggleNotePreview", - value: function toggleNotePreview() { - this.state.note.content.hidePreview = !this.state.note.content.hidePreview; - this.saveNote({ - bypassDebouncer: true, - dontUpdatePreviews: true - }); - } - }, { - key: "toggleArchiveNote", - value: function toggleArchiveNote() { - this.state.note.setAppDataItem(APP_DATA_KEY_ARCHIVED, !this.state.note.archived); - this.saveNote({ - bypassDebouncer: true, - dontUpdatePreviews: true - }); - } - }, { - key: "reloadTagsString", - value: function reloadTagsString() { - this.setState({ - tagsString: this.state.note.tagsString() - }); - } - }, { - key: "addTag", - value: function addTag(tag) { - var strings = this.state.note.tags.map(function (currentTag) { - return currentTag.title; - }); - strings.push(tag.title); - this.updateTags(strings); - this.reloadTagsString(); - } - }, { - key: "removeTag", - value: function removeTag(tag) { - var strings = this.state.note.tags.map(function (currentTag) { - return currentTag.title; - }).filter(function (title) { - return title !== tag.title; - }); - this.updateTags(strings); - this.reloadTagsString(); - } - }, { - key: "updateTag", - value: function updateTag(stringTags) { - var toRemove = []; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = this.state.note.tags[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var tag = _step2.value; - - if (stringTags.indexOf(tag.title) === -1) { - toRemove.push(tag); - } - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - for (var _i2 = 0, _toRemove = toRemove; _i2 < _toRemove.length; _i2++) { - var tagToRemove = _toRemove[_i2]; - tagToRemove.removeItemAsRelationship(this.state.note); - } - - this.modelManager.setItemsDirty(toRemove); - var tags = []; - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = stringTags[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var tagString = _step3.value; - - var existingRelationship = _.find(this.state.note.tags, { - title: tagString - }); - - if (!existingRelationship) { - tags.push(this.modelManager.findOrCreateTagByTitle(tagString)); - } - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3.return != null) { - _iterator3.return(); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - - for (var _i3 = 0, _tags = tags; _i3 < _tags.length; _i3++) { - var _tag = _tags[_i3]; - - _tag.addItemAsRelationship(this.state.note); - } - - this.modelManager.setItemsDirty(tags); - this.syncManager.sync(); - } - }, { - key: "updateTagsFromTagsString", - value: function updateTagsFromTagsString() { - if (this.state.tagsString === this.state.note.tagsString()) { - return; - } - - var strings = this.state.tagsString.split('#').filter(function (string) { - return string.length > 0; - }).map(function (string) { - return string.trim(); - }); - this.state.note.dummy = false; - this.updateTags(strings); - } - }, { - key: "loadPreferences", - value: function loadPreferences() { - var monospaceEnabled = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_MONOSPACE_ENABLED"], true); - var spellcheck = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_SPELLCHECK"], true); - var marginResizersEnabled = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_RESIZERS_ENABLED"], true); - this.setState({ - monospaceEnabled: monospaceEnabled, - spellcheck: spellcheck, - marginResizersEnabled: marginResizersEnabled - }); - - if (!document.getElementById(ELEMENT_ID_EDITOR_CONTENT)) { - /** Elements have not yet loaded due to ng-if around wrapper */ - return; - } - - this.reloadFont(); - - if (this.state.marginResizersEnabled) { - var width = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_WIDTH"], null); - - if (width != null) { - this.leftResizeControl.setWidth(width); - this.rightResizeControl.setWidth(width); - } - - var left = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_LEFT"], null); - - if (left != null) { - this.leftResizeControl.setLeft(left); - this.rightResizeControl.setLeft(left); - } - } - } - }, { - key: "reloadFont", - value: function reloadFont() { - var editor = document.getElementById(ELEMENT_ID_NOTE_TEXT_EDITOR); - - if (!editor) { - return; - } - - if (this.state.monospaceEnabled) { - if (this.state.isDesktop) { - editor.style.fontFamily = DESKTOP_MONOSPACE_FAMILY; - } else { - editor.style.fontFamily = WEB_MONOSPACE_FAMILY; - } - } else { - editor.style.fontFamily = SANS_SERIF_FAMILY; - } - } - }, { - key: "toggleKey", - value: function toggleKey(key) { - var _this11 = this; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function toggleKey$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - this[key] = !this[key]; - this.preferencesManager.setUserPrefValue(key, this[key], true); - this.reloadFont(); - - if (!(key === _services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_SPELLCHECK"])) { - _context3.next = 10; - break; - } - - _context3.next = 6; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.setState({ - noteReady: false - })); - - case 6: - this.setState({ - noteReady: true - }); - this.reloadFont(); - _context3.next = 11; - break; - - case 10: - if (key === _services_preferencesManager__WEBPACK_IMPORTED_MODULE_17__["PREF_EDITOR_RESIZERS_ENABLED"] && this[key] === true) { - this.$timeout(function () { - _this11.leftResizeControl.flash(); - - _this11.rightResizeControl.flash(); - }); - } - - case 11: - case "end": - return _context3.stop(); - } - } - }, null, this); - } - /** @components */ - - }, { - key: "registerComponentHandler", - value: function registerComponentHandler() { - var _this12 = this; - - this.componentManager.registerHandler({ - identifier: 'editor', - areas: ['note-tags', 'editor-stack', 'editor-editor'], - activationHandler: function activationHandler(component) { - if (component.area === 'note-tags') { - _this12.setState({ - tagsComponent: component.active ? component : null - }); - } else if (component.area === 'editor-editor') { - if (component === _this12.state.selectedEditor && !component.active) { - _this12.setState({ - selectedEditor: null - }); - } else if (_this12.state.selectedEditor) { - if (_this12.state.selectedEditor.active && _this12.state.note) { - if (component.isExplicitlyEnabledForItem(_this12.state.note) && !_this12.state.selectedEditor.isExplicitlyEnabledForItem(_this12.state.note)) { - _this12.setState({ - selectedEditor: component - }); - } - } - } else if (_this12.state.note) { - var enableable = component.isExplicitlyEnabledForItem(_this12.state.note) || component.isDefaultEditor(); - - if (component.active && enableable) { - _this12.setState({ - selectedEditor: component - }); - } else { - /** - * Not a candidate, and no qualified editor. - * Disable the current editor. - */ - _this12.setState({ - selectedEditor: null - }); - } - } - } else if (component.area === 'editor-stack') { - _this12.reloadComponentContext(); - } - }, - contextRequestHandler: function contextRequestHandler(component) { - if (component === _this12.state.selectedEditor || component === _this12.state.tagsComponent || _this12.state.componentStack.includes(component)) { - return _this12.state.note; - } - }, - focusHandler: function focusHandler(component, focused) { - if (component.isEditor() && focused) { - _this12.closeAllMenus(); - } - }, - actionHandler: function actionHandler(component, action, data) { - if (action === 'set-size') { - var setSize = function setSize(element, size) { - var widthString = typeof size.width === 'string' ? size.width : "".concat(data.width, "px"); - var heightString = typeof size.height === 'string' ? size.height : "".concat(data.height, "px"); - element.setAttribute('style', "width: ".concat(widthString, "; height: ").concat(heightString, ";")); - }; - - if (data.type === 'container') { - if (component.area === 'note-tags') { - var container = document.getElementById(ELEMENT_ID_NOTE_TAGS_COMPONENT_CONTAINER); - setSize(container, data); - } - } - } else if (action === 'associate-item') { - if (data.item.content_type === 'Tag') { - var tag = _this12.modelManager.findItem(data.item.uuid); - - _this12.addTag(tag); - } - } else if (action === 'deassociate-item') { - var _tag2 = _this12.modelManager.findItem(data.item.uuid); - - _this12.removeTag(_tag2); - } else if (action === 'save-items') { - var includesNote = data.items.map(function (item) { - return item.uuid; - }).includes(_this12.state.note.uuid); - - if (includesNote) { - _this12.showSavingStatus(); - } - } - } - }); - } - }, { - key: "reloadComponentStackArray", - value: function reloadComponentStackArray() { - var components = this.componentManager.componentsForArea('editor-stack').sort(function (a, b) { - return a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; - }); - this.setState({ - state: components - }); - } - }, { - key: "reloadComponentContext", - value: function reloadComponentContext() { - this.reloadComponentStackArray(); - - if (this.state.note) { - var _iteratorNormalCompletion4 = true; - var _didIteratorError4 = false; - var _iteratorError4 = undefined; - - try { - for (var _iterator4 = this.state.componentStack[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { - var component = _step4.value; - - if (component.active) { - this.componentManager.setComponentHidden(component, !component.isExplicitlyEnabledForItem(this.state.note)); - } - } - } catch (err) { - _didIteratorError4 = true; - _iteratorError4 = err; - } finally { - try { - if (!_iteratorNormalCompletion4 && _iterator4.return != null) { - _iterator4.return(); - } - } finally { - if (_didIteratorError4) { - throw _iteratorError4; - } - } - } - } - - this.componentManager.contextItemDidChangeInArea('note-tags'); - this.componentManager.contextItemDidChangeInArea('editor-stack'); - this.componentManager.contextItemDidChangeInArea('editor-editor'); - } - }, { - key: "toggleStackComponentForCurrentItem", - value: function toggleStackComponentForCurrentItem(component) { - if (component.hidden || !component.active) { - this.componentManager.setComponentHidden(component, false); - this.associateComponentWithCurrentNote(component); - - if (!component.active) { - this.componentManager.activateComponent(component); - } - - this.componentManager.contextItemDidChangeInArea('editor-stack'); - } else { - this.componentManager.setComponentHidden(component, true); - this.disassociateComponentWithCurrentNote(component); - } - } - }, { - key: "disassociateComponentWithCurrentNote", - value: function disassociateComponentWithCurrentNote(component) { - var _this13 = this; - - component.associatedItemIds = component.associatedItemIds.filter(function (id) { - return id !== _this13.state.note.uuid; - }); - - if (!component.disassociatedItemIds.includes(this.state.note.uuid)) { - component.disassociatedItemIds.push(this.state.note.uuid); - } - - this.modelManager.setItemDirty(component); - this.syncManager.sync(); - } - }, { - key: "associateComponentWithCurrentNote", - value: function associateComponentWithCurrentNote(component) { - var _this14 = this; - - component.disassociatedItemIds = component.disassociatedItemIds.filter(function (id) { - return id !== _this14.state.note.uuid; - }); - - if (!component.associatedItemIds.includes(this.state.note.uuid)) { - component.associatedItemIds.push(this.state.note.uuid); - } - - this.modelManager.setItemDirty(component); - this.syncManager.sync(); - } - }, { - key: "registerKeyboardShortcuts", - value: function registerKeyboardShortcuts() { - var _this15 = this; - - this.altKeyObserver = this.keyboardManager.addKeyObserver({ - modifiers: [_services_keyboardManager__WEBPACK_IMPORTED_MODULE_11__["KeyboardManager"].KeyModifierAlt], - onKeyDown: function onKeyDown() { - _this15.setState({ - altKeyDown: true - }); - }, - onKeyUp: function onKeyUp() { - _this15.setState({ - altKeyDown: false - }); - } - }); - this.trashKeyObserver = this.keyboardManager.addKeyObserver({ - key: _services_keyboardManager__WEBPACK_IMPORTED_MODULE_11__["KeyboardManager"].KeyBackspace, - notElementIds: [ELEMENT_ID_NOTE_TEXT_EDITOR, ELEMENT_ID_NOTE_TITLE_EDITOR], - modifiers: [_services_keyboardManager__WEBPACK_IMPORTED_MODULE_11__["KeyboardManager"].KeyModifierMeta], - onKeyDown: function onKeyDown() { - _this15.deleteNote(); - } - }); - this.deleteKeyObserver = this.keyboardManager.addKeyObserver({ - key: _services_keyboardManager__WEBPACK_IMPORTED_MODULE_11__["KeyboardManager"].KeyBackspace, - modifiers: [_services_keyboardManager__WEBPACK_IMPORTED_MODULE_11__["KeyboardManager"].KeyModifierMeta, _services_keyboardManager__WEBPACK_IMPORTED_MODULE_11__["KeyboardManager"].KeyModifierShift, _services_keyboardManager__WEBPACK_IMPORTED_MODULE_11__["KeyboardManager"].KeyModifierAlt], - onKeyDown: function onKeyDown(event) { - event.preventDefault(); - - _this15.deleteNote(true); - } - }); - } - }, { - key: "onSystemEditorLoad", - value: function onSystemEditorLoad() { - var _this16 = this; - - if (this.loadedTabListener) { - return; - } - - this.loadedTabListener = true; - /** - * Insert 4 spaces when a tab key is pressed, - * only used when inside of the text editor. - * If the shift key is pressed first, this event is - * not fired. - */ - - var editor = document.getElementById(ELEMENT_ID_NOTE_TEXT_EDITOR); - this.tabObserver = this.keyboardManager.addKeyObserver({ - element: editor, - key: _services_keyboardManager__WEBPACK_IMPORTED_MODULE_11__["KeyboardManager"].KeyTab, - onKeyDown: function onKeyDown(event) { - if (_this16.state.note.locked || event.shiftKey) { - return; - } - - event.preventDefault(); - /** Using document.execCommand gives us undo support */ - - var insertSuccessful = document.execCommand('insertText', false, '\t'); - - if (!insertSuccessful) { - /** document.execCommand works great on Chrome/Safari but not Firefox */ - var start = editor.selectionStart; - var end = editor.selectionEnd; - var spaces = ' '; - /** Insert 4 spaces */ - - editor.value = editor.value.substring(0, start) + spaces + editor.value.substring(end); - /** Place cursor 4 spaces away from where the tab key was pressed */ - - editor.selectionStart = editor.selectionEnd = start + 4; - } - - var note = _this16.state.note; - note.text = editor.value; - - _this16.setState({ - note: note - }); - - _this16.saveNote({ - bypassDebouncer: true - }); - } - }); - /** - * Handles when the editor is destroyed, - * (and not when our controller is destroyed.) - */ - - angular__WEBPACK_IMPORTED_MODULE_8___default.a.element(editor).on('$destroy', function () { - if (_this16.tabObserver) { - _this16.keyboardManager.removeKeyObserver(_this16.tabObserver); - - _this16.loadedTabListener = false; - } - }); - } - }]); - - return EditorCtrl; -}(_Controllers__WEBPACK_IMPORTED_MODULE_14__["PureCtrl"]); - -var EditorPanel = function EditorPanel() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, EditorPanel); - - this.restrict = 'E'; - this.scope = {}; - this.template = _editor_pug__WEBPACK_IMPORTED_MODULE_13___default.a; - this.replace = true; - this.controller = EditorCtrl; - this.controllerAs = 'self'; - this.bindToController = true; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/controllers/footer.js": -/*!******************************************************!*\ - !*** ./app/assets/javascripts/controllers/footer.js ***! - \******************************************************/ -/*! exports provided: Footer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Footer", function() { return Footer; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js"); -/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _services_privilegesManager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/services/privilegesManager */ "./app/assets/javascripts/services/privilegesManager.js"); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils */ "./app/assets/javascripts/utils.js"); -/* harmony import */ var _footer_pug__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! %/footer.pug */ "./app/assets/templates/footer.pug"); -/* harmony import */ var _footer_pug__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_footer_pug__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/state */ "./app/assets/javascripts/state.js"); -/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/strings */ "./app/assets/javascripts/strings.js"); - - - - - - - - - - -var FooterCtrl = -/*#__PURE__*/ -function () { - FooterCtrl.$inject = ["$rootScope", "$timeout", "alertManager", "appState", "authManager", "componentManager", "modelManager", "nativeExtManager", "passcodeManager", "privilegesManager", "statusManager", "syncManager"]; - - /* @ngInject */ - function FooterCtrl($rootScope, $timeout, alertManager, appState, authManager, componentManager, modelManager, nativeExtManager, passcodeManager, privilegesManager, statusManager, syncManager) { - var _this = this; - - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, FooterCtrl); - - _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, "toggleSyncResolutionMenu", function () { - _this.showSyncResolution = !_this.showSyncResolution; - }); - - _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, "closeAccountMenu", function () { - _this.showAccountMenu = false; - }); - - this.$rootScope = $rootScope; - this.$timeout = $timeout; - this.alertManager = alertManager; - this.appState = appState; - this.authManager = authManager; - this.componentManager = componentManager; - this.modelManager = modelManager; - this.nativeExtManager = nativeExtManager; - this.passcodeManager = passcodeManager; - this.privilegesManager = privilegesManager; - this.statusManager = statusManager; - this.syncManager = syncManager; - this.rooms = []; - this.themesWithIcons = []; - this.showSyncResolution = false; - this.addAppStateObserver(); - this.updateOfflineStatus(); - this.addSyncEventHandler(); - this.findErrors(); - this.registerMappingObservers(); - this.registerComponentHandler(); - this.addRootScopeListeners(); - this.authManager.checkForSecurityUpdate().then(function (available) { - _this.securityUpdateAvailable = available; - }); - this.statusManager.addStatusObserver(function (string) { - _this.$timeout(function () { - _this.arbitraryStatusMessage = string; - }); - }); - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(FooterCtrl, [{ - key: "addRootScopeListeners", - value: function addRootScopeListeners() { - var _this2 = this; - - this.$rootScope.$on("security-update-status-changed", function () { - _this2.securityUpdateAvailable = _this2.authManager.securityUpdateAvailable; - }); - this.$rootScope.$on("reload-ext-data", function () { - _this2.reloadExtendedData(); - }); - this.$rootScope.$on("new-update-available", function () { - _this2.$timeout(function () { - _this2.onNewUpdateAvailable(); - }); - }); - } - }, { - key: "addAppStateObserver", - value: function addAppStateObserver() { - var _this3 = this; - - this.appState.addObserver(function (eventName, data) { - if (eventName === _state__WEBPACK_IMPORTED_MODULE_7__["APP_STATE_EVENT_EDITOR_FOCUSED"]) { - if (data.eventSource === _state__WEBPACK_IMPORTED_MODULE_7__["EVENT_SOURCE_USER_INTERACTION"]) { - _this3.closeAllRooms(); - - _this3.closeAccountMenu(); - } - } else if (eventName === _state__WEBPACK_IMPORTED_MODULE_7__["APP_STATE_EVENT_BEGAN_BACKUP_DOWNLOAD"]) { - _this3.backupStatus = _this3.statusManager.addStatusFromString("Saving local backup..."); - } else if (eventName === _state__WEBPACK_IMPORTED_MODULE_7__["APP_STATE_EVENT_ENDED_BACKUP_DOWNLOAD"]) { - if (data.success) { - _this3.backupStatus = _this3.statusManager.replaceStatusWithString(_this3.backupStatus, "Successfully saved backup."); - } else { - _this3.backupStatus = _this3.statusManager.replaceStatusWithString(_this3.backupStatus, "Unable to save local backup."); - } - - _this3.$timeout(function () { - _this3.backupStatus = _this3.statusManager.removeStatus(_this3.backupStatus); - }, 2000); - } - }); - } - }, { - key: "addSyncEventHandler", - value: function addSyncEventHandler() { - var _this4 = this; - - this.syncManager.addEventHandler(function (syncEvent, data) { - _this4.$timeout(function () { - if (syncEvent === "local-data-loaded") { - if (_this4.offline && _this4.modelManager.noteCount() === 0) { - _this4.showAccountMenu = true; - } - } else if (syncEvent === "enter-out-of-sync") { - _this4.outOfSync = true; - } else if (syncEvent === "exit-out-of-sync") { - _this4.outOfSync = false; - } else if (syncEvent === 'sync:completed') { - _this4.syncUpdated(); - - _this4.findErrors(); - - _this4.updateOfflineStatus(); - } else if (syncEvent === 'sync:error') { - _this4.findErrors(); - - _this4.updateOfflineStatus(); - } - }); - }); - } - }, { - key: "registerMappingObservers", - value: function registerMappingObservers() { - var _this5 = this; - - this.modelManager.addItemSyncObserver('room-bar', 'SN|Component', function (allItems, validItems, deletedItems, source) { - _this5.rooms = _this5.modelManager.components.filter(function (candidate) { - return candidate.area === 'rooms' && !candidate.deleted; - }); - - if (_this5.queueExtReload) { - _this5.queueExtReload = false; - - _this5.reloadExtendedData(); - } - }); - this.modelManager.addItemSyncObserver('footer-bar-themes', 'SN|Theme', function (allItems, validItems, deletedItems, source) { - var themes = _this5.modelManager.validItemsForContentType('SN|Theme').filter(function (candidate) { - return !candidate.deleted && candidate.content.package_info && candidate.content.package_info.dock_icon; - }).sort(function (a, b) { - return a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; - }); - - var differ = themes.length !== _this5.themesWithIcons.length; - _this5.themesWithIcons = themes; - - if (differ) { - _this5.reloadDockShortcuts(); - } - }); - } - }, { - key: "registerComponentHandler", - value: function registerComponentHandler() { - var _this6 = this; - - this.componentManager.registerHandler({ - identifier: "roomBar", - areas: ["rooms", "modal"], - activationHandler: function activationHandler(component) {}, - actionHandler: function actionHandler(component, action, data) { - if (action === "set-size") { - component.setLastSize(data); - } - }, - focusHandler: function focusHandler(component, focused) { - if (component.isEditor() && focused) { - _this6.closeAllRooms(); - - _this6.closeAccountMenu(); - } - } - }); - } - }, { - key: "reloadExtendedData", - value: function reloadExtendedData() { - var _this7 = this; - - if (this.reloadInProgress) { - return; - } - - this.reloadInProgress = true; - /** - * A reload consists of opening the extensions manager, - * then closing it after a short delay. - */ - - var extWindow = this.rooms.find(function (room) { - return room.package_info.identifier === _this7.nativeExtManager.extManagerId; - }); - - if (!extWindow) { - this.queueExtReload = true; - this.reloadInProgress = false; - return; - } - - this.selectRoom(extWindow); - this.$timeout(function () { - _this7.selectRoom(extWindow); - - _this7.reloadInProgress = false; - - _this7.$rootScope.$broadcast('ext-reload-complete'); - }, 2000); - } - }, { - key: "getUser", - value: function getUser() { - return this.authManager.user; - } - }, { - key: "updateOfflineStatus", - value: function updateOfflineStatus() { - this.offline = this.authManager.offline(); - } - }, { - key: "openSecurityUpdate", - value: function openSecurityUpdate() { - this.authManager.presentPasswordWizard('upgrade-security'); - } - }, { - key: "findErrors", - value: function findErrors() { - this.error = this.syncManager.syncStatus.error; - } - }, { - key: "accountMenuPressed", - value: function accountMenuPressed() { - this.showAccountMenu = !this.showAccountMenu; - this.closeAllRooms(); - } - }, { - key: "hasPasscode", - value: function hasPasscode() { - return this.passcodeManager.hasPasscode(); - } - }, { - key: "lockApp", - value: function lockApp() { - this.$rootScope.lockApplication(); - } - }, { - key: "refreshData", - value: function refreshData() { - var _this8 = this; - - this.isRefreshing = true; - this.syncManager.sync({ - force: true, - performIntegrityCheck: true - }).then(function (response) { - _this8.$timeout(function () { - _this8.isRefreshing = false; - }, 200); - - if (response && response.error) { - _this8.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_8__["STRING_GENERIC_SYNC_ERROR"] - }); - } else { - _this8.syncUpdated(); - } - }); - } - }, { - key: "syncUpdated", - value: function syncUpdated() { - this.lastSyncDate = Object(_utils__WEBPACK_IMPORTED_MODULE_5__["dateToLocalizedString"])(new Date()); - } - }, { - key: "onNewUpdateAvailable", - value: function onNewUpdateAvailable() { - this.newUpdateAvailable = true; - } - }, { - key: "clickedNewUpdateAnnouncement", - value: function clickedNewUpdateAnnouncement() { - this.newUpdateAvailable = false; - this.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_8__["STRING_NEW_UPDATE_READY"] - }); - } - }, { - key: "reloadDockShortcuts", - value: function reloadDockShortcuts() { - var shortcuts = []; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = this.themesWithIcons[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var theme = _step.value; - var name = theme.content.package_info.name; - var icon = theme.content.package_info.dock_icon; - - if (!icon) { - continue; - } - - shortcuts.push({ - name: name, - component: theme, - icon: icon - }); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - this.dockShortcuts = shortcuts.sort(function (a, b) { - /** Circles first, then images */ - var aType = a.icon.type; - var bType = b.icon.type; - - if (aType === bType) { - return 0; - } else if (aType === 'circle' && bType === 'svg') { - return -1; - } else if (bType === 'circle' && aType === 'svg') { - return 1; - } - }); - } - }, { - key: "initSvgForShortcut", - value: function initSvgForShortcut(shortcut) { - var id = 'dock-svg-' + shortcut.component.uuid; - var element = document.getElementById(id); - var parser = new DOMParser(); - var svg = shortcut.component.content.package_info.dock_icon.source; - var doc = parser.parseFromString(svg, 'image/svg+xml'); - element.appendChild(doc.documentElement); - } - }, { - key: "selectShortcut", - value: function selectShortcut(shortcut) { - this.componentManager.toggleComponent(shortcut.component); - } - }, { - key: "onRoomDismiss", - value: function onRoomDismiss(room) { - room.showRoom = false; - } - }, { - key: "closeAllRooms", - value: function closeAllRooms() { - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = this.rooms[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var room = _step2.value; - room.showRoom = false; - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - } - }, { - key: "selectRoom", - value: function selectRoom(room) { - var _this9 = this; - - var run, requiresPrivilege; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function selectRoom$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - run = function run() { - _this9.$timeout(function () { - room.showRoom = !room.showRoom; - }); - }; - - if (room.showRoom) { - _context.next = 8; - break; - } - - _context.next = 4; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.privilegesManager.actionRequiresPrivilege(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_4__["PrivilegesManager"].ActionManageExtensions)); - - case 4: - requiresPrivilege = _context.sent; - - if (requiresPrivilege) { - this.privilegesManager.presentPrivilegesModal(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_4__["PrivilegesManager"].ActionManageExtensions, run); - } else { - run(); - } - - _context.next = 9; - break; - - case 8: - run(); - - case 9: - case "end": - return _context.stop(); - } - } - }, null, this); - } - }, { - key: "clickOutsideAccountMenu", - value: function clickOutsideAccountMenu() { - if (this.privilegesManager.authenticationInProgress()) { - return; - } - - this.showAccountMenu = false; - } - }]); - - return FooterCtrl; -}(); - -var Footer = function Footer() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Footer); - - this.restrict = 'E'; - this.scope = {}; - this.template = _footer_pug__WEBPACK_IMPORTED_MODULE_6___default.a; - this.controller = FooterCtrl; - this.replace = true; - this.controllerAs = 'ctrl'; - this.bindToController = true; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/controllers/index.js": -/*!*****************************************************!*\ - !*** ./app/assets/javascripts/controllers/index.js ***! - \*****************************************************/ -/*! exports provided: PureCtrl, EditorPanel, Footer, NotesPanel, TagsPanel, Root, LockScreen */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _abstract_pure_ctrl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./abstract/pure_ctrl */ "./app/assets/javascripts/controllers/abstract/pure_ctrl.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PureCtrl", function() { return _abstract_pure_ctrl__WEBPACK_IMPORTED_MODULE_0__["PureCtrl"]; }); - -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor */ "./app/assets/javascripts/controllers/editor.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EditorPanel", function() { return _editor__WEBPACK_IMPORTED_MODULE_1__["EditorPanel"]; }); - -/* harmony import */ var _footer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./footer */ "./app/assets/javascripts/controllers/footer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Footer", function() { return _footer__WEBPACK_IMPORTED_MODULE_2__["Footer"]; }); - -/* harmony import */ var _notes_notes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./notes/notes */ "./app/assets/javascripts/controllers/notes/notes.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NotesPanel", function() { return _notes_notes__WEBPACK_IMPORTED_MODULE_3__["NotesPanel"]; }); - -/* harmony import */ var _tags__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tags */ "./app/assets/javascripts/controllers/tags.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TagsPanel", function() { return _tags__WEBPACK_IMPORTED_MODULE_4__["TagsPanel"]; }); - -/* harmony import */ var _root__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./root */ "./app/assets/javascripts/controllers/root.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Root", function() { return _root__WEBPACK_IMPORTED_MODULE_5__["Root"]; }); - -/* harmony import */ var _lockScreen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lockScreen */ "./app/assets/javascripts/controllers/lockScreen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LockScreen", function() { return _lockScreen__WEBPACK_IMPORTED_MODULE_6__["LockScreen"]; }); - - - - - - - - - -/***/ }), - -/***/ "./app/assets/javascripts/controllers/lockScreen.js": -/*!**********************************************************!*\ - !*** ./app/assets/javascripts/controllers/lockScreen.js ***! - \**********************************************************/ -/*! exports provided: LockScreen */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LockScreen", function() { return LockScreen; }); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _lock_screen_pug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! %/lock-screen.pug */ "./app/assets/templates/lock-screen.pug"); -/* harmony import */ var _lock_screen_pug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lock_screen_pug__WEBPACK_IMPORTED_MODULE_2__); - - - -var ELEMENT_ID_PASSCODE_INPUT = 'passcode-input'; - -var LockScreenCtrl = -/*#__PURE__*/ -function () { - LockScreenCtrl.$inject = ["$scope", "alertManager", "authManager", "passcodeManager"]; - - /* @ngInject */ - function LockScreenCtrl($scope, alertManager, authManager, passcodeManager) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, LockScreenCtrl); - - this.$scope = $scope; - this.alertManager = alertManager; - this.authManager = authManager; - this.passcodeManager = passcodeManager; - this.formData = {}; - this.addVisibilityObserver(); - this.addDestroyHandler(); - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(LockScreenCtrl, [{ - key: "addDestroyHandler", - value: function addDestroyHandler() { - var _this = this; - - this.$scope.$on('$destroy', function () { - _this.passcodeManager.removeVisibilityObserver(_this.visibilityObserver); - }); - } - }, { - key: "addVisibilityObserver", - value: function addVisibilityObserver() { - var _this2 = this; - - this.visibilityObserver = this.passcodeManager.addVisibilityObserver(function (visible) { - if (visible) { - var input = _this2.passcodeInput; - - if (input) { - input.focus(); - } - } - }); - } - }, { - key: "submitPasscodeForm", - value: function submitPasscodeForm($event) { - var _this3 = this; - - if (!this.formData.passcode || this.formData.passcode.length === 0) { - return; - } - - this.passcodeInput.blur(); - this.passcodeManager.unlock(this.formData.passcode, function (success) { - if (!success) { - _this3.alertManager.alert({ - text: "Invalid passcode. Please try again.", - onClose: function onClose() { - _this3.passcodeInput.focus(); - } - }); - } else { - _this3.onSuccess()(); - } - }); - } - }, { - key: "forgotPasscode", - value: function forgotPasscode() { - this.formData.showRecovery = true; - } - }, { - key: "beginDeleteData", - value: function beginDeleteData() { - var _this4 = this; - - this.alertManager.confirm({ - text: "Are you sure you want to clear all local data?", - destructive: true, - onConfirm: function onConfirm() { - _this4.authManager.signout(true).then(function () { - window.location.reload(); - }); - } - }); - } - }, { - key: "passcodeInput", - get: function get() { - return document.getElementById(ELEMENT_ID_PASSCODE_INPUT); - } - }]); - - return LockScreenCtrl; -}(); - -var LockScreen = function LockScreen() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, LockScreen); - - this.restrict = 'E'; - this.template = _lock_screen_pug__WEBPACK_IMPORTED_MODULE_2___default.a; - this.controller = LockScreenCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - onSuccess: '&' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/controllers/notes/note_utils.js": -/*!****************************************************************!*\ - !*** ./app/assets/javascripts/controllers/notes/note_utils.js ***! - \****************************************************************/ -/*! exports provided: SORT_KEY_CREATED_AT, SORT_KEY_UPDATED_AT, SORT_KEY_CLIENT_UPDATED_AT, SORT_KEY_TITLE, filterAndSortNotes, filterNotes, sortNotes */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SORT_KEY_CREATED_AT", function() { return SORT_KEY_CREATED_AT; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SORT_KEY_UPDATED_AT", function() { return SORT_KEY_UPDATED_AT; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SORT_KEY_CLIENT_UPDATED_AT", function() { return SORT_KEY_CLIENT_UPDATED_AT; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SORT_KEY_TITLE", function() { return SORT_KEY_TITLE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filterAndSortNotes", function() { return filterAndSortNotes; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filterNotes", function() { return filterNotes; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortNotes", function() { return sortNotes; }); -var SORT_KEY_CREATED_AT = 'created_at'; -var SORT_KEY_UPDATED_AT = 'updated_at'; -var SORT_KEY_CLIENT_UPDATED_AT = 'client_updated_at'; -var SORT_KEY_TITLE = 'title'; -function filterAndSortNotes(_ref) { - var notes = _ref.notes, - selectedTag = _ref.selectedTag, - showArchived = _ref.showArchived, - hidePinned = _ref.hidePinned, - filterText = _ref.filterText, - sortBy = _ref.sortBy, - reverse = _ref.reverse; - var filtered = filterNotes({ - notes: notes, - selectedTag: selectedTag, - showArchived: showArchived, - hidePinned: hidePinned, - filterText: filterText - }); - var sorted = sortNotes({ - notes: filtered, - sortBy: sortBy, - reverse: reverse - }); - return sorted; -} -function filterNotes(_ref2) { - var notes = _ref2.notes, - selectedTag = _ref2.selectedTag, - showArchived = _ref2.showArchived, - hidePinned = _ref2.hidePinned, - filterText = _ref2.filterText; - return notes.filter(function (note) { - var canShowArchived = showArchived; - var canShowPinned = !hidePinned; - var isTrash = selectedTag.content.isTrashTag; - - if (!isTrash && note.content.trashed) { - return false; - } - - var isSmartTag = selectedTag.isSmartTag(); - - if (isSmartTag) { - canShowArchived = canShowArchived || selectedTag.content.isArchiveTag || isTrash; - } - - if (note.archived && !canShowArchived || note.pinned && !canShowPinned) { - return false; - } - - return noteMatchesQuery({ - note: note, - query: filterText - }); - }); -} - -function noteMatchesQuery(_ref3) { - var note = _ref3.note, - query = _ref3.query; - - if (query.length === 0) { - return true; - } - - var title = note.safeTitle().toLowerCase(); - var text = note.safeText().toLowerCase(); - var lowercaseText = query.toLowerCase(); - var quotedText = stringBetweenQuotes(lowercaseText); - - if (quotedText) { - return title.includes(quotedText) || text.includes(quotedText); - } - - if (stringIsUuid(lowercaseText)) { - return note.uuid === lowercaseText; - } - - var words = lowercaseText.split(" "); - var matchesTitle = words.every(function (word) { - return title.indexOf(word) >= 0; - }); - var matchesBody = words.every(function (word) { - return text.indexOf(word) >= 0; - }); - return matchesTitle || matchesBody; -} - -function stringBetweenQuotes(text) { - var matches = text.match(/"(.*?)"/); - return matches ? matches[1] : null; -} - -function stringIsUuid(text) { - var matches = text.match(/\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b/); - return matches ? true : false; -} - -function sortNotes(_ref4) { - var _ref4$notes = _ref4.notes, - notes = _ref4$notes === void 0 ? [] : _ref4$notes, - sortBy = _ref4.sortBy, - reverse = _ref4.reverse; - - var sortValueFn = function sortValueFn(a, b) { - var pinCheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (a.dummy) { - return -1; - } - - if (b.dummy) { - return 1; - } - - if (!pinCheck) { - if (a.pinned && b.pinned) { - return sortValueFn(a, b, true); - } - - if (a.pinned) { - return -1; - } - - if (b.pinned) { - return 1; - } - } - - var aValue = a[sortBy] || ''; - var bValue = b[sortBy] || ''; - var vector = 1; - - if (reverse) { - vector *= -1; - } - - if (sortBy === SORT_KEY_TITLE) { - aValue = aValue.toLowerCase(); - bValue = bValue.toLowerCase(); - - if (aValue.length === 0 && bValue.length === 0) { - return 0; - } else if (aValue.length === 0 && bValue.length !== 0) { - return 1 * vector; - } else if (aValue.length !== 0 && bValue.length === 0) { - return -1 * vector; - } else { - vector *= -1; - } - } - - if (aValue > bValue) { - return -1 * vector; - } else if (aValue < bValue) { - return 1 * vector; - } - - return 0; - }; - - var result = notes.sort(function (a, b) { - return sortValueFn(a, b); - }); - return result; -} - -/***/ }), - -/***/ "./app/assets/javascripts/controllers/notes/notes.js": -/*!***********************************************************!*\ - !*** ./app/assets/javascripts/controllers/notes/notes.js ***! - \***********************************************************/ -/*! exports provided: NotesPanel */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NotesPanel", function() { return NotesPanel; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js"); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js"); -/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js"); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js"); -/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7__); -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js"); -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_8__); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! angular */ "./node_modules/angular/index.js"); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_9__); -/* harmony import */ var _notes_pug__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! %/notes.pug */ "./app/assets/templates/notes.pug"); -/* harmony import */ var _notes_pug__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_notes_pug__WEBPACK_IMPORTED_MODULE_10__); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! snjs */ "./node_modules/snjs/dist/snjs.js"); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(snjs__WEBPACK_IMPORTED_MODULE_11__); -/* harmony import */ var _services_keyboardManager__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/services/keyboardManager */ "./app/assets/javascripts/services/keyboardManager.js"); -/* harmony import */ var _Controllers__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Controllers */ "./app/assets/javascripts/controllers/index.js"); -/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/state */ "./app/assets/javascripts/state.js"); -/* harmony import */ var _services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/services/preferencesManager */ "./app/assets/javascripts/services/preferencesManager.js"); -/* harmony import */ var _controllers_constants__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/controllers/constants */ "./app/assets/javascripts/controllers/constants.js"); -/* harmony import */ var _note_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./note_utils */ "./app/assets/javascripts/controllers/notes/note_utils.js"); - - - - - - - - - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - - - - - - - - - - - -/** - * This is the height of a note cell with nothing but the title, - * which *is* a display option - */ - -var MIN_NOTE_CELL_HEIGHT = 51.0; -var DEFAULT_LIST_NUM_NOTES = 20; -var ELEMENT_ID_SEARCH_BAR = 'search-bar'; -var ELEMENT_ID_SCROLL_CONTAINER = 'notes-scrollable'; - -var NotesCtrl = -/*#__PURE__*/ -function (_PureCtrl) { - NotesCtrl.$inject = ["$timeout", "$rootScope", "appState", "authManager", "desktopManager", "keyboardManager", "modelManager", "preferencesManager", "privilegesManager", "syncManager"]; - - _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(NotesCtrl, _PureCtrl); - - /* @ngInject */ - function NotesCtrl($timeout, $rootScope, appState, authManager, desktopManager, keyboardManager, modelManager, preferencesManager, privilegesManager, syncManager) { - var _this; - - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, NotesCtrl); - - _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(NotesCtrl).call(this, $timeout)); - - _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this), "onPanelResize", function (newWidth, lastLeft, isAtMaxWidth, isCollapsed) { - _this.preferencesManager.setUserPrefValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__["PREF_NOTES_PANEL_WIDTH"], newWidth); - - _this.preferencesManager.syncUserPreferences(); - - _this.appState.panelDidResize({ - name: _controllers_constants__WEBPACK_IMPORTED_MODULE_16__["PANEL_NAME_NOTES"], - collapsed: isCollapsed - }); - }); - - _this.$rootScope = $rootScope; - _this.appState = appState; - _this.authManager = authManager; - _this.desktopManager = desktopManager; - _this.keyboardManager = keyboardManager; - _this.modelManager = modelManager; - _this.preferencesManager = preferencesManager; - _this.privilegesManager = privilegesManager; - _this.syncManager = syncManager; - _this.state = { - notes: [], - renderedNotes: [], - selectedNote: null, - tag: null, - sortBy: null, - showArchived: null, - hidePinned: null, - sortReverse: null, - panelTitle: null, - mutable: { - showMenu: false - }, - noteFilter: { - text: '' - } - }; - _this.panelController = {}; - - window.onresize = function (event) { - _this.resetPagination({ - keepCurrentIfLarger: true - }); - }; - - _this.addAppStateObserver(); - - _this.addSignInObserver(); - - _this.addSyncEventHandler(); - - _this.addMappingObserver(); - - _this.reloadPreferences(); - - _this.resetPagination(); - - _this.registerKeyboardShortcuts(); - - angular__WEBPACK_IMPORTED_MODULE_9___default.a.element(document).ready(function () { - _this.reloadPreferences(); - }); - return _this; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(NotesCtrl, [{ - key: "addAppStateObserver", - value: function addAppStateObserver() { - var _this2 = this; - - this.appState.addObserver(function (eventName, data) { - if (eventName === _state__WEBPACK_IMPORTED_MODULE_14__["APP_STATE_EVENT_TAG_CHANGED"]) { - _this2.handleTagChange(_this2.appState.getSelectedTag(), data.previousTag); - } else if (eventName === _state__WEBPACK_IMPORTED_MODULE_14__["APP_STATE_EVENT_NOTE_CHANGED"]) { - _this2.handleNoteSelection(_this2.appState.getSelectedNote()); - } else if (eventName === _state__WEBPACK_IMPORTED_MODULE_14__["APP_STATE_EVENT_PREFERENCES_CHANGED"]) { - _this2.reloadPreferences(); - - _this2.reloadNotes(); - } else if (eventName === _state__WEBPACK_IMPORTED_MODULE_14__["APP_STATE_EVENT_EDITOR_FOCUSED"]) { - _this2.setShowMenuFalse(); - } - }); - } - }, { - key: "addSignInObserver", - value: function addSignInObserver() { - var _this3 = this; - - this.authManager.addEventHandler(function (event) { - if (event === snjs__WEBPACK_IMPORTED_MODULE_11__["SFAuthManager"].DidSignInEvent) { - /** Delete dummy note if applicable */ - if (_this3.state.selectedNote && _this3.state.selectedNote.dummy) { - _this3.modelManager.removeItemLocally(_this3.state.selectedNote); - - _this3.selectNote(null).then(function () { - _this3.reloadNotes(); - }); - /** - * We want to see if the user will download any items from the server. - * If the next sync completes and our notes are still 0, - * we need to create a dummy. - */ - - - _this3.createDummyOnSynCompletionIfNoNotes = true; - } - } - }); - } - }, { - key: "addSyncEventHandler", - value: function addSyncEventHandler() { - var _this4 = this; - - this.syncManager.addEventHandler(function (syncEvent, data) { - if (syncEvent === 'local-data-loaded') { - if (_this4.state.notes.length === 0) { - _this4.createNewNote(); - } - } else if (syncEvent === 'sync:completed') { - if (_this4.createDummyOnSynCompletionIfNoNotes && _this4.state.notes.length === 0) { - _this4.createDummyOnSynCompletionIfNoNotes = false; - - _this4.createNewNote(); - } - } - }); - } - }, { - key: "addMappingObserver", - value: function addMappingObserver() { - var _this5 = this; - - this.modelManager.addItemSyncObserver('note-list', '*', function _callee(allItems, validItems, deletedItems, source, sourceKey) { - var selectedNote, discarded, notIncluded, notes, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, note; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this5.reloadNotes()); - - case 2: - selectedNote = _this5.state.selectedNote; - - if (selectedNote) { - discarded = selectedNote.deleted || selectedNote.content.trashed; - notIncluded = !_this5.state.notes.includes(selectedNote); - - if (notIncluded || discarded) { - _this5.selectNextOrCreateNew(); - } - } else { - _this5.selectFirstNote(); - } - /** Note has changed values, reset its flags */ - - - notes = allItems.filter(function (item) { - return item.content_type === 'Note'; - }); - _iteratorNormalCompletion = true; - _didIteratorError = false; - _iteratorError = undefined; - _context.prev = 8; - - for (_iterator = notes[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - note = _step.value; - - _this5.loadFlagsForNote(note); - - note.cachedCreatedAtString = note.createdAtString(); - note.cachedUpdatedAtString = note.updatedAtString(); - } - - _context.next = 16; - break; - - case 12: - _context.prev = 12; - _context.t0 = _context["catch"](8); - _didIteratorError = true; - _iteratorError = _context.t0; - - case 16: - _context.prev = 16; - _context.prev = 17; - - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - - case 19: - _context.prev = 19; - - if (!_didIteratorError) { - _context.next = 22; - break; - } - - throw _iteratorError; - - case 22: - return _context.finish(19); - - case 23: - return _context.finish(16); - - case 24: - case "end": - return _context.stop(); - } - } - }, null, null, [[8, 12, 16, 24], [17,, 19, 23]]); - }); - } - }, { - key: "handleTagChange", - value: function handleTagChange(tag, previousTag) { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function handleTagChange$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (!(this.state.selectedNote && this.state.selectedNote.dummy)) { - _context2.next = 5; - break; - } - - this.modelManager.removeItemLocally(this.state.selectedNote); - - if (previousTag) { - lodash__WEBPACK_IMPORTED_MODULE_8___default.a.remove(previousTag.notes, this.state.selectedNote); - } - - _context2.next = 5; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.selectNote(null)); - - case 5: - _context2.next = 7; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.setState({ - tag: tag - })); - - case 7: - this.resetScrollPosition(); - this.setShowMenuFalse(); - this.setNoteFilterText(''); - this.desktopManager.searchText(); - this.resetPagination(); - _context2.next = 14; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.reloadNotes()); - - case 14: - if (this.state.notes.length > 0) { - this.selectFirstNote(); - } else if (this.syncManager.initialDataLoaded()) { - if (!tag.isSmartTag() || tag.content.isAllTag) { - this.createNewNote(); - } else if (this.state.selectedNote && !this.state.notes.includes(this.state.selectedNote)) { - this.selectNote(null); - } - } - - case 15: - case "end": - return _context2.stop(); - } - } - }, null, this); - } - }, { - key: "resetScrollPosition", - value: function resetScrollPosition() { - var scrollable = document.getElementById(ELEMENT_ID_SCROLL_CONTAINER); - - if (scrollable) { - scrollable.scrollTop = 0; - scrollable.scrollLeft = 0; - } - } - /** - * @template - * @internal - */ - - }, { - key: "selectNote", - value: function selectNote(note) { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function selectNote$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - this.appState.setSelectedNote(note); - - case 1: - case "end": - return _context3.stop(); - } - } - }, null, this); - } - }, { - key: "removeNoteFromList", - value: function removeNoteFromList(note) { - var notes; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function removeNoteFromList$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - notes = this.state.notes; - - lodash__WEBPACK_IMPORTED_MODULE_8___default.a.pull(notes, note); - - _context4.next = 4; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.setState({ - notes: notes, - renderedNotes: notes.slice(0, this.notesToDisplay) - })); - - case 4: - case "end": - return _context4.stop(); - } - } - }, null, this); - } - }, { - key: "reloadNotes", - value: function reloadNotes() { - var notes, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, note; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function reloadNotes$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - if (this.state.tag) { - _context5.next = 2; - break; - } - - return _context5.abrupt("return"); - - case 2: - notes = Object(_note_utils__WEBPACK_IMPORTED_MODULE_17__["filterAndSortNotes"])({ - notes: this.state.tag.notes, - selectedTag: this.state.tag, - showArchived: this.state.showArchived, - hidePinned: this.state.hidePinned, - filterText: this.state.noteFilter.text, - sortBy: this.state.sortBy, - reverse: this.state.sortReverse - }); - _iteratorNormalCompletion2 = true; - _didIteratorError2 = false; - _iteratorError2 = undefined; - _context5.prev = 6; - - for (_iterator2 = notes[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - note = _step2.value; - - if (note.errorDecrypting) { - this.loadFlagsForNote(note); - } - - note.shouldShowTags = this.shouldShowTagsForNote(note); - } - - _context5.next = 14; - break; - - case 10: - _context5.prev = 10; - _context5.t0 = _context5["catch"](6); - _didIteratorError2 = true; - _iteratorError2 = _context5.t0; - - case 14: - _context5.prev = 14; - _context5.prev = 15; - - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { - _iterator2.return(); - } - - case 17: - _context5.prev = 17; - - if (!_didIteratorError2) { - _context5.next = 20; - break; - } - - throw _iteratorError2; - - case 20: - return _context5.finish(17); - - case 21: - return _context5.finish(14); - - case 22: - _context5.next = 24; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.setState({ - notes: notes, - renderedNotes: notes.slice(0, this.notesToDisplay) - })); - - case 24: - this.reloadPanelTitle(); - - case 25: - case "end": - return _context5.stop(); - } - } - }, null, this, [[6, 10, 14, 22], [15,, 17, 21]]); - } - }, { - key: "setShowMenuFalse", - value: function setShowMenuFalse() { - this.setState({ - mutable: _objectSpread({}, this.state.mutable, { - showMenu: false - }) - }); - } - }, { - key: "handleNoteSelection", - value: function handleNoteSelection(note) { - var previousNote; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function handleNoteSelection$(_context6) { - while (1) { - switch (_context6.prev = _context6.next) { - case 0: - if (!(this.state.selectedNote === note)) { - _context6.next = 2; - break; - } - - return _context6.abrupt("return"); - - case 2: - previousNote = this.state.selectedNote; - - if (previousNote && previousNote.dummy) { - this.modelManager.removeItemLocally(previousNote); - this.removeNoteFromList(previousNote); - } - - _context6.next = 6; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.setState({ - selectedNote: note - })); - - case 6: - if (note) { - _context6.next = 8; - break; - } - - return _context6.abrupt("return"); - - case 8: - this.selectedIndex = Math.max(0, this.displayableNotes().indexOf(note)); - - if (note.content.conflict_of) { - note.content.conflict_of = null; - this.modelManager.setItemDirty(note); - this.syncManager.sync(); - } - - if (this.isFiltering()) { - this.desktopManager.searchText(this.state.noteFilter.text); - } - - case 11: - case "end": - return _context6.stop(); - } - } - }, null, this); - } - }, { - key: "reloadPreferences", - value: function reloadPreferences() { - var viewOptions = {}; - var prevSortValue = this.state.sortBy; - var sortBy = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__["PREF_SORT_NOTES_BY"], _note_utils__WEBPACK_IMPORTED_MODULE_17__["SORT_KEY_CREATED_AT"]); - - if (sortBy === _note_utils__WEBPACK_IMPORTED_MODULE_17__["SORT_KEY_UPDATED_AT"]) { - /** Use client_updated_at instead */ - sortBy = _note_utils__WEBPACK_IMPORTED_MODULE_17__["SORT_KEY_CLIENT_UPDATED_AT"]; - } - - viewOptions.sortBy = sortBy; - viewOptions.sortReverse = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__["PREF_SORT_NOTES_REVERSE"], false); - viewOptions.showArchived = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__["PREF_NOTES_SHOW_ARCHIVED"], false); - viewOptions.hidePinned = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__["PREF_NOTES_HIDE_PINNED"], false); - viewOptions.hideNotePreview = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__["PREF_NOTES_HIDE_NOTE_PREVIEW"], false); - viewOptions.hideDate = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__["PREF_NOTES_HIDE_DATE"], false); - viewOptions.hideTags = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__["PREF_NOTES_HIDE_TAGS"], false); - this.setState(_objectSpread({}, viewOptions)); - - if (prevSortValue && prevSortValue !== sortBy) { - this.selectFirstNote(); - } - - var width = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__["PREF_NOTES_PANEL_WIDTH"]); - - if (width) { - this.panelController.setWidth(width); - - if (this.panelController.isCollapsed()) { - this.appState.panelDidResize({ - name: _controllers_constants__WEBPACK_IMPORTED_MODULE_16__["PANEL_NAME_NOTES"], - collapsed: this.panelController.isCollapsed() - }); - } - } - } - }, { - key: "paginate", - value: function paginate() { - this.notesToDisplay += this.pageSize; - this.reloadNotes(); - - if (this.searchSubmitted) { - this.desktopManager.searchText(this.state.noteFilter.text); - } - } - }, { - key: "resetPagination", - value: function resetPagination() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - keepCurrentIfLarger = _ref.keepCurrentIfLarger; - - var clientHeight = document.documentElement.clientHeight; - this.pageSize = clientHeight / MIN_NOTE_CELL_HEIGHT; - - if (this.pageSize === 0) { - this.pageSize = DEFAULT_LIST_NUM_NOTES; - } - - if (keepCurrentIfLarger && this.notesToDisplay > this.pageSize) { - return; - } - - this.notesToDisplay = this.pageSize; - } - }, { - key: "reloadPanelTitle", - value: function reloadPanelTitle() { - var title; - - if (this.isFiltering()) { - var resultCount = this.state.notes.length; - title = "".concat(resultCount, " search results"); - } else if (this.state.tag) { - title = "".concat(this.state.tag.title); - } - - this.setState({ - panelTitle: title - }); - } - }, { - key: "optionsSubtitle", - value: function optionsSubtitle() { - var base = ""; - - if (this.state.sortBy === 'created_at') { - base += " Date Added"; - } else if (this.state.sortBy === 'client_updated_at') { - base += " Date Modified"; - } else if (this.state.sortBy === 'title') { - base += " Title"; - } - - if (this.state.showArchived) { - base += " | + Archived"; - } - - if (this.state.hidePinned) { - base += " | – Pinned"; - } - - if (this.state.sortReverse) { - base += " | Reversed"; - } - - return base; - } - }, { - key: "loadFlagsForNote", - value: function loadFlagsForNote(note) { - var flags = []; - - if (note.pinned) { - flags.push({ - text: "Pinned", - class: 'info' - }); - } - - if (note.archived) { - flags.push({ - text: "Archived", - class: 'warning' - }); - } - - if (note.content.protected) { - flags.push({ - text: "Protected", - class: 'success' - }); - } - - if (note.locked) { - flags.push({ - text: "Locked", - class: 'neutral' - }); - } - - if (note.content.trashed) { - flags.push({ - text: "Deleted", - class: 'danger' - }); - } - - if (note.content.conflict_of) { - flags.push({ - text: "Conflicted Copy", - class: 'danger' - }); - } - - if (note.errorDecrypting) { - flags.push({ - text: "Missing Keys", - class: 'danger' - }); - } - - if (note.deleted) { - flags.push({ - text: "Deletion Pending Sync", - class: 'danger' - }); - } - - note.flags = flags; - return flags; - } - }, { - key: "displayableNotes", - value: function displayableNotes() { - return this.state.notes; - } - }, { - key: "getFirstNonProtectedNote", - value: function getFirstNonProtectedNote() { - var displayableNotes = this.displayableNotes(); - var index = 0; - var note = displayableNotes[index]; - - while (note && note.content.protected) { - index++; - - if (index >= displayableNotes.length) { - break; - } - - note = displayableNotes[index]; - } - - return note; - } - }, { - key: "selectFirstNote", - value: function selectFirstNote() { - var note = this.getFirstNonProtectedNote(); - - if (note) { - this.selectNote(note); - } - } - }, { - key: "selectNextNote", - value: function selectNextNote() { - var displayableNotes = this.displayableNotes(); - var currentIndex = displayableNotes.indexOf(this.state.selectedNote); - - if (currentIndex + 1 < displayableNotes.length) { - this.selectNote(displayableNotes[currentIndex + 1]); - } - } - }, { - key: "selectNextOrCreateNew", - value: function selectNextOrCreateNew() { - var note = this.getFirstNonProtectedNote(); - - if (note) { - this.selectNote(note); - } else if (!this.state.tag || !this.state.tag.isSmartTag()) { - this.createNewNote(); - } else { - this.selectNote(null); - } - } - }, { - key: "selectPreviousNote", - value: function selectPreviousNote() { - var displayableNotes = this.displayableNotes(); - var currentIndex = displayableNotes.indexOf(this.state.selectedNote); - - if (currentIndex - 1 >= 0) { - this.selectNote(displayableNotes[currentIndex - 1]); - return true; - } else { - return false; - } - } - }, { - key: "createNewNote", - value: function createNewNote() { - if (this.state.selectedNote && this.state.selectedNote.dummy) { - return; - } - - var title = "Note" + (this.state.notes ? " " + (this.state.notes.length + 1) : ""); - var newNote = this.modelManager.createItem({ - content_type: 'Note', - content: { - text: '', - title: title - } - }); - newNote.client_updated_at = new Date(); - newNote.dummy = true; - this.modelManager.addItem(newNote); - this.modelManager.setItemDirty(newNote); - var selectedTag = this.appState.getSelectedTag(); - - if (!selectedTag.isSmartTag()) { - selectedTag.addItemAsRelationship(newNote); - this.modelManager.setItemDirty(selectedTag); - } - - this.selectNote(newNote); - } - }, { - key: "isFiltering", - value: function isFiltering() { - return this.state.noteFilter.text && this.state.noteFilter.text.length > 0; - } - }, { - key: "setNoteFilterText", - value: function setNoteFilterText(text) { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function setNoteFilterText$(_context7) { - while (1) { - switch (_context7.prev = _context7.next) { - case 0: - _context7.next = 2; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.setState({ - noteFilter: _objectSpread({}, this.state.noteFilter, { - text: text - }) - })); - - case 2: - case "end": - return _context7.stop(); - } - } - }, null, this); - } - }, { - key: "clearFilterText", - value: function clearFilterText() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function clearFilterText$(_context8) { - while (1) { - switch (_context8.prev = _context8.next) { - case 0: - _context8.next = 2; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.setNoteFilterText('')); - - case 2: - this.onFilterEnter(); - this.filterTextChanged(); - this.resetPagination(); - - case 5: - case "end": - return _context8.stop(); - } - } - }, null, this); - } - }, { - key: "filterTextChanged", - value: function filterTextChanged() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function filterTextChanged$(_context9) { - while (1) { - switch (_context9.prev = _context9.next) { - case 0: - if (this.searchSubmitted) { - this.searchSubmitted = false; - } - - _context9.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.reloadNotes()); - - case 3: - if (!this.state.notes.includes(this.state.selectedNote)) { - this.selectFirstNote(); - } - - case 4: - case "end": - return _context9.stop(); - } - } - }, null, this); - } - }, { - key: "onFilterEnter", - value: function onFilterEnter() { - /** - * For Desktop, performing a search right away causes - * input to lose focus. We wait until user explicity hits - * enter before highlighting desktop search results. - */ - this.searchSubmitted = true; - this.desktopManager.searchText(this.state.noteFilter.text); - } - }, { - key: "selectedMenuItem", - value: function selectedMenuItem() { - this.setShowMenuFalse(); - } - }, { - key: "togglePrefKey", - value: function togglePrefKey(key) { - this.preferencesManager.setUserPrefValue(key, !this.state[key]); - this.preferencesManager.syncUserPreferences(); - } - }, { - key: "selectedSortByCreated", - value: function selectedSortByCreated() { - this.setSortBy(_note_utils__WEBPACK_IMPORTED_MODULE_17__["SORT_KEY_CREATED_AT"]); - } - }, { - key: "selectedSortByUpdated", - value: function selectedSortByUpdated() { - this.setSortBy(_note_utils__WEBPACK_IMPORTED_MODULE_17__["SORT_KEY_CLIENT_UPDATED_AT"]); - } - }, { - key: "selectedSortByTitle", - value: function selectedSortByTitle() { - this.setSortBy(_note_utils__WEBPACK_IMPORTED_MODULE_17__["SORT_KEY_TITLE"]); - } - }, { - key: "toggleReverseSort", - value: function toggleReverseSort() { - this.selectedMenuItem(); - this.preferencesManager.setUserPrefValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__["PREF_SORT_NOTES_REVERSE"], !this.state.sortReverse); - this.preferencesManager.syncUserPreferences(); - } - }, { - key: "setSortBy", - value: function setSortBy(type) { - this.preferencesManager.setUserPrefValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_15__["PREF_SORT_NOTES_BY"], type); - this.preferencesManager.syncUserPreferences(); - } - }, { - key: "shouldShowTagsForNote", - value: function shouldShowTagsForNote(note) { - if (this.state.hideTags || note.content.protected) { - return false; - } - - if (this.state.tag.content.isAllTag) { - return note.tags && note.tags.length > 0; - } - - if (this.state.tag.isSmartTag()) { - return true; - } - /** - * Inside a tag, only show tags string if - * note contains tags other than this.state.tag - */ - - - return note.tags && note.tags.length > 1; - } - }, { - key: "getSearchBar", - value: function getSearchBar() { - return document.getElementById(ELEMENT_ID_SEARCH_BAR); - } - }, { - key: "registerKeyboardShortcuts", - value: function registerKeyboardShortcuts() { - var _this6 = this; - - /** - * In the browser we're not allowed to override cmd/ctrl + n, so we have to - * use Control modifier as well. These rules don't apply to desktop, but - * probably better to be consistent. - */ - this.newNoteKeyObserver = this.keyboardManager.addKeyObserver({ - key: 'n', - modifiers: [_services_keyboardManager__WEBPACK_IMPORTED_MODULE_12__["KeyboardManager"].KeyModifierMeta, _services_keyboardManager__WEBPACK_IMPORTED_MODULE_12__["KeyboardManager"].KeyModifierCtrl], - onKeyDown: function onKeyDown(event) { - event.preventDefault(); - - _this6.createNewNote(); - } - }); - this.nextNoteKeyObserver = this.keyboardManager.addKeyObserver({ - key: _services_keyboardManager__WEBPACK_IMPORTED_MODULE_12__["KeyboardManager"].KeyDown, - elements: [document.body, this.getSearchBar()], - onKeyDown: function onKeyDown(event) { - var searchBar = _this6.getSearchBar(); - - if (searchBar === document.activeElement) { - searchBar.blur(); - } - - _this6.selectNextNote(); - } - }); - this.nextNoteKeyObserver = this.keyboardManager.addKeyObserver({ - key: _services_keyboardManager__WEBPACK_IMPORTED_MODULE_12__["KeyboardManager"].KeyUp, - element: document.body, - onKeyDown: function onKeyDown(event) { - _this6.selectPreviousNote(); - } - }); - this.searchKeyObserver = this.keyboardManager.addKeyObserver({ - key: "f", - modifiers: [_services_keyboardManager__WEBPACK_IMPORTED_MODULE_12__["KeyboardManager"].KeyModifierMeta, _services_keyboardManager__WEBPACK_IMPORTED_MODULE_12__["KeyboardManager"].KeyModifierShift], - onKeyDown: function onKeyDown(event) { - var searchBar = _this6.getSearchBar(); - - if (searchBar) { - searchBar.focus(); - } - - ; - } - }); - } - }]); - - return NotesCtrl; -}(_Controllers__WEBPACK_IMPORTED_MODULE_13__["PureCtrl"]); - -var NotesPanel = function NotesPanel() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, NotesPanel); - - this.scope = {}; - this.template = _notes_pug__WEBPACK_IMPORTED_MODULE_10___default.a; - this.replace = true; - this.controller = NotesCtrl; - this.controllerAs = 'self'; - this.bindToController = true; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/controllers/root.js": -/*!****************************************************!*\ - !*** ./app/assets/javascripts/controllers/root.js ***! - \****************************************************/ -/*! exports provided: Root */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Root", function() { return Root; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js"); -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! snjs */ "./node_modules/snjs/dist/snjs.js"); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(snjs__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils */ "./app/assets/javascripts/utils.js"); -/* harmony import */ var _root_pug__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! %/root.pug */ "./app/assets/templates/root.pug"); -/* harmony import */ var _root_pug__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_root_pug__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/state */ "./app/assets/javascripts/state.js"); -/* harmony import */ var _controllers_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/controllers/constants */ "./app/assets/javascripts/controllers/constants.js"); -/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/strings */ "./app/assets/javascripts/strings.js"); - - - - - - - - - - -/** How often to automatically sync, in milliseconds */ - -var AUTO_SYNC_INTERVAL = 30000; - -var RootCtrl = -/*#__PURE__*/ -function () { - RootCtrl.$inject = ["$location", "$rootScope", "$scope", "$timeout", "alertManager", "appState", "authManager", "dbManager", "modelManager", "passcodeManager", "preferencesManager", "themeManager", "statusManager", "storageManager", "syncManager"]; - - /* @ngInject */ - function RootCtrl($location, $rootScope, $scope, $timeout, alertManager, appState, authManager, dbManager, modelManager, passcodeManager, preferencesManager, themeManager - /** Unused below, required to load globally */ - , statusManager, storageManager, syncManager) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, RootCtrl); - - this.$rootScope = $rootScope; - this.$scope = $scope; - this.$location = $location; - this.$timeout = $timeout; - this.dbManager = dbManager; - this.syncManager = syncManager; - this.statusManager = statusManager; - this.storageManager = storageManager; - this.appState = appState; - this.authManager = authManager; - this.modelManager = modelManager; - this.alertManager = alertManager; - this.preferencesManager = preferencesManager; - this.passcodeManager = passcodeManager; - this.defineRootScopeFunctions(); - this.handleAutoSignInFromParams(); - this.initializeStorageManager(); - this.addAppStateObserver(); - this.addDragDropHandlers(); - this.defaultLoad(); - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(RootCtrl, [{ - key: "defineRootScopeFunctions", - value: function defineRootScopeFunctions() { - var _this = this; - - this.$rootScope.lockApplication = function () { - /** Reloading wipes current objects from memory */ - window.location.reload(); - }; - - this.$rootScope.safeApply = function (fn) { - var phase = _this.$scope.$root.$$phase; - - if (phase === '$apply' || phase === '$digest') { - _this.$scope.$eval(fn); - } else { - _this.$scope.$apply(fn); - } - }; - } - }, { - key: "defaultLoad", - value: function defaultLoad() { - var _this2 = this; - - this.$scope.platform = Object(_utils__WEBPACK_IMPORTED_MODULE_5__["getPlatformString"])(); - - if (this.passcodeManager.isLocked()) { - this.$scope.needsUnlock = true; - } else { - this.loadAfterUnlock(); - } - - this.$scope.onSuccessfulUnlock = function () { - _this2.$timeout(function () { - _this2.$scope.needsUnlock = false; - - _this2.loadAfterUnlock(); - }); - }; - - this.$scope.onUpdateAvailable = function () { - _this2.$rootScope.$broadcast('new-update-available'); - }; - } - }, { - key: "initializeStorageManager", - value: function initializeStorageManager() { - this.storageManager.initialize(this.passcodeManager.hasPasscode(), this.authManager.isEphemeralSession()); - } - }, { - key: "addAppStateObserver", - value: function addAppStateObserver() { - var _this3 = this; - - this.appState.addObserver(function (eventName, data) { - if (eventName === _state__WEBPACK_IMPORTED_MODULE_7__["APP_STATE_EVENT_PANEL_RESIZED"]) { - if (data.panel === _controllers_constants__WEBPACK_IMPORTED_MODULE_8__["PANEL_NAME_NOTES"]) { - _this3.notesCollapsed = data.collapsed; - } - - if (data.panel === _controllers_constants__WEBPACK_IMPORTED_MODULE_8__["PANEL_NAME_TAGS"]) { - _this3.tagsCollapsed = data.collapsed; - } - - var appClass = ""; - - if (_this3.notesCollapsed) { - appClass += "collapsed-notes"; - } - - if (_this3.tagsCollapsed) { - appClass += " collapsed-tags"; - } - - _this3.$scope.appClass = appClass; - } - }); - } - }, { - key: "loadAfterUnlock", - value: function loadAfterUnlock() { - this.openDatabase(); - this.authManager.loadInitialData(); - this.preferencesManager.load(); - this.addSyncStatusObserver(); - this.configureKeyRequestHandler(); - this.addSyncEventHandler(); - this.addSignOutObserver(); - this.loadLocalData(); - } - }, { - key: "openDatabase", - value: function openDatabase() { - var _this4 = this; - - this.dbManager.setLocked(false); - this.dbManager.openDatabase({ - onUpgradeNeeded: function onUpgradeNeeded() { - /** - * New database, delete syncToken so that items - * can be refetched entirely from server - */ - _this4.syncManager.clearSyncToken(); - - _this4.syncManager.sync(); - } - }); - } - }, { - key: "addSyncStatusObserver", - value: function addSyncStatusObserver() { - var _this5 = this; - - this.syncStatusObserver = this.syncManager.registerSyncStatusObserver(function (status) { - if (status.retrievedCount > 20) { - var text = "Downloading ".concat(status.retrievedCount, " items. Keep app open."); - _this5.syncStatus = _this5.statusManager.replaceStatusWithString(_this5.syncStatus, text); - _this5.showingDownloadStatus = true; - } else if (_this5.showingDownloadStatus) { - _this5.showingDownloadStatus = false; - var _text = "Download Complete."; - _this5.syncStatus = _this5.statusManager.replaceStatusWithString(_this5.syncStatus, _text); - setTimeout(function () { - _this5.syncStatus = _this5.statusManager.removeStatus(_this5.syncStatus); - }, 2000); - } else if (status.total > 20) { - _this5.uploadSyncStatus = _this5.statusManager.replaceStatusWithString(_this5.uploadSyncStatus, "Syncing ".concat(status.current, "/").concat(status.total, " items...")); - } else if (_this5.uploadSyncStatus) { - _this5.uploadSyncStatus = _this5.statusManager.removeStatus(_this5.uploadSyncStatus); - } - }); - } - }, { - key: "configureKeyRequestHandler", - value: function configureKeyRequestHandler() { - var _this6 = this; - - this.syncManager.setKeyRequestHandler(function _callee() { - var offline, authParams, keys; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - offline = _this6.authManager.offline(); - - if (!offline) { - _context.next = 5; - break; - } - - _context.t0 = _this6.passcodeManager.passcodeAuthParams(); - _context.next = 8; - break; - - case 5: - _context.next = 7; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this6.authManager.getAuthParams()); - - case 7: - _context.t0 = _context.sent; - - case 8: - authParams = _context.t0; - - if (!offline) { - _context.next = 13; - break; - } - - _context.t1 = _this6.passcodeManager.keys(); - _context.next = 16; - break; - - case 13: - _context.next = 15; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this6.authManager.keys()); - - case 15: - _context.t1 = _context.sent; - - case 16: - keys = _context.t1; - return _context.abrupt("return", { - keys: keys, - offline: offline, - auth_params: authParams - }); - - case 18: - case "end": - return _context.stop(); - } - } - }); - }); - } - }, { - key: "addSyncEventHandler", - value: function addSyncEventHandler() { - var _this7 = this; - - var lastShownDate; - this.syncManager.addEventHandler(function (syncEvent, data) { - _this7.$rootScope.$broadcast(syncEvent, data || {}); - - if (syncEvent === 'sync-session-invalid') { - /** Don't show repeatedly; at most 30 seconds in between */ - var SHOW_INTERVAL = 30; - var lastShownSeconds = (new Date() - lastShownDate) / 1000; - - if (!lastShownDate || lastShownSeconds > SHOW_INTERVAL) { - lastShownDate = new Date(); - setTimeout(function () { - _this7.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_9__["STRING_SESSION_EXPIRED"] - }); - }, 500); - } - } else if (syncEvent === 'sync-exception') { - _this7.alertManager.alert({ - text: Object(_strings__WEBPACK_IMPORTED_MODULE_9__["StringSyncException"])(data) - }); - } - }); - } - }, { - key: "loadLocalData", - value: function loadLocalData() { - var _this8 = this; - - var encryptionEnabled = this.authManager.user || this.passcodeManager.hasPasscode(); - this.syncStatus = this.statusManager.addStatusFromString(encryptionEnabled ? "Decrypting items..." : "Loading items..."); - - var incrementalCallback = function incrementalCallback(current, total) { - var notesString = "".concat(current, "/").concat(total, " items..."); - var status = encryptionEnabled ? "Decrypting ".concat(notesString) : "Loading ".concat(notesString); - _this8.syncStatus = _this8.statusManager.replaceStatusWithString(_this8.syncStatus, status); - }; - - this.syncManager.loadLocalItems({ - incrementalCallback: incrementalCallback - }).then(function () { - _this8.$timeout(function () { - _this8.$rootScope.$broadcast("initial-data-loaded"); - - _this8.syncStatus = _this8.statusManager.replaceStatusWithString(_this8.syncStatus, "Syncing..."); - - _this8.syncManager.sync({ - performIntegrityCheck: true - }).then(function () { - _this8.syncStatus = _this8.statusManager.removeStatus(_this8.syncStatus); - }); - - setInterval(function () { - _this8.syncManager.sync(); - }, AUTO_SYNC_INTERVAL); - }); - }); - } - }, { - key: "addSignOutObserver", - value: function addSignOutObserver() { - var _this9 = this; - - this.authManager.addEventHandler(function (event) { - if (event === snjs__WEBPACK_IMPORTED_MODULE_4__["SFAuthManager"].DidSignOutEvent) { - _this9.modelManager.handleSignout(); - - _this9.syncManager.handleSignout(); - } - }); - } - }, { - key: "addDragDropHandlers", - value: function addDragDropHandlers() { - var _this10 = this; - - /** - * Disable dragging and dropping of files (but allow text) into main SN interface. - * both 'dragover' and 'drop' are required to prevent dropping of files. - * This will not prevent extensions from receiving drop events. - */ - window.addEventListener('dragover', function (event) { - if (event.dataTransfer.files.length > 0) { - event.preventDefault(); - } - }, false); - window.addEventListener('drop', function (event) { - if (event.dataTransfer.files.length > 0) { - event.preventDefault(); - - _this10.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_9__["STRING_DEFAULT_FILE_ERROR"] - }); - } - }, false); - } - }, { - key: "handleAutoSignInFromParams", - value: function handleAutoSignInFromParams() { - var _this11 = this; - - var urlParam = function urlParam(key) { - return _this11.$location.search()[key]; - }; - - var autoSignInFromParams = function autoSignInFromParams() { - var server, email, pw; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function autoSignInFromParams$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - server = urlParam('server'); - email = urlParam('email'); - pw = urlParam('pw'); - - if (_this11.authManager.offline()) { - _context2.next = 18; - break; - } - - _context2.next = 6; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this11.syncManager.getServerURL()); - - case 6: - _context2.t1 = _context2.sent; - _context2.t2 = server; - _context2.t0 = _context2.t1 === _context2.t2; - - if (!_context2.t0) { - _context2.next = 11; - break; - } - - _context2.t0 = _this11.authManager.user.email === email; - - case 11: - if (!_context2.t0) { - _context2.next = 15; - break; - } - - return _context2.abrupt("return"); - - case 15: - /** Sign out */ - _this11.authManager.signout(true).then(function () { - window.location.reload(); - }); - - case 16: - _context2.next = 19; - break; - - case 18: - _this11.authManager.login(server, email, pw, false, false, {}).then(function (response) { - window.location.reload(); - }); - - case 19: - case "end": - return _context2.stop(); - } - } - }); - }; - - if (urlParam('server')) { - autoSignInFromParams(); - } - } - }]); - - return RootCtrl; -}(); - -var Root = function Root() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Root); - - this.template = _root_pug__WEBPACK_IMPORTED_MODULE_6___default.a; - this.controller = RootCtrl; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/controllers/tags.js": -/*!****************************************************!*\ - !*** ./app/assets/javascripts/controllers/tags.js ***! - \****************************************************/ -/*! exports provided: TagsPanel */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TagsPanel", function() { return TagsPanel; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js"); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js"); -/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js"); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js"); -/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7__); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! snjs */ "./node_modules/snjs/dist/snjs.js"); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(snjs__WEBPACK_IMPORTED_MODULE_8__); -/* harmony import */ var _tags_pug__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! %/tags.pug */ "./app/assets/templates/tags.pug"); -/* harmony import */ var _tags_pug__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_tags_pug__WEBPACK_IMPORTED_MODULE_9__); -/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/state */ "./app/assets/javascripts/state.js"); -/* harmony import */ var _controllers_constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/controllers/constants */ "./app/assets/javascripts/controllers/constants.js"); -/* harmony import */ var _services_preferencesManager__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/services/preferencesManager */ "./app/assets/javascripts/services/preferencesManager.js"); -/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/strings */ "./app/assets/javascripts/strings.js"); -/* harmony import */ var _Controllers__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Controllers */ "./app/assets/javascripts/controllers/index.js"); - - - - - - - - - - - - - - - - -var TagsPanelCtrl = -/*#__PURE__*/ -function (_PureCtrl) { - TagsPanelCtrl.$inject = ["$rootScope", "$timeout", "alertManager", "appState", "componentManager", "modelManager", "preferencesManager", "syncManager"]; - - _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(TagsPanelCtrl, _PureCtrl); - - /* @ngInject */ - function TagsPanelCtrl($rootScope, $timeout, alertManager, appState, componentManager, modelManager, preferencesManager, syncManager) { - var _this; - - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, TagsPanelCtrl); - - _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(TagsPanelCtrl).call(this, $timeout)); - - _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this), "onPanelResize", function (newWidth, lastLeft, isAtMaxWidth, isCollapsed) { - _this.preferencesManager.setUserPrefValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_12__["PREF_TAGS_PANEL_WIDTH"], newWidth, true); - - _this.appState.panelDidResize({ - name: _controllers_constants__WEBPACK_IMPORTED_MODULE_11__["PANEL_NAME_TAGS"], - collapsed: isCollapsed - }); - }); - - _this.$rootScope = $rootScope; - _this.alertManager = alertManager; - _this.appState = appState; - _this.componentManager = componentManager; - _this.modelManager = modelManager; - _this.preferencesManager = preferencesManager; - _this.syncManager = syncManager; - _this.panelController = {}; - - _this.addSyncEventHandler(); - - _this.addAppStateObserver(); - - _this.addMappingObserver(); - - _this.loadPreferences(); - - _this.registerComponentHandler(); - - _this.state = { - smartTags: _this.modelManager.getSmartTags(), - noteCounts: {} - }; - return _this; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(TagsPanelCtrl, [{ - key: "$onInit", - value: function $onInit() { - this.selectTag(this.state.smartTags[0]); - } - }, { - key: "addSyncEventHandler", - value: function addSyncEventHandler() { - var _this2 = this; - - this.syncManager.addEventHandler(function _callee(syncEvent, data) { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!(syncEvent === 'local-data-loaded' || syncEvent === 'sync:completed' || syncEvent === 'local-data-incremental-load')) { - _context.next = 4; - break; - } - - _context.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this2.setState({ - tags: _this2.modelManager.tags, - smartTags: _this2.modelManager.getSmartTags() - })); - - case 3: - _this2.reloadNoteCounts(); - - case 4: - case "end": - return _context.stop(); - } - } - }); - }); - } - }, { - key: "addAppStateObserver", - value: function addAppStateObserver() { - var _this3 = this; - - this.appState.addObserver(function (eventName, data) { - if (eventName === _state__WEBPACK_IMPORTED_MODULE_10__["APP_STATE_EVENT_PREFERENCES_CHANGED"]) { - _this3.loadPreferences(); - } else if (eventName === _state__WEBPACK_IMPORTED_MODULE_10__["APP_STATE_EVENT_TAG_CHANGED"]) { - _this3.setState({ - selectedTag: _this3.appState.getSelectedTag() - }); - } - }); - } - }, { - key: "addMappingObserver", - value: function addMappingObserver() { - var _this4 = this; - - this.modelManager.addItemSyncObserver('tags-list-tags', 'Tag', function (allItems, validItems, deletedItems, source, sourceKey) { - _this4.reloadNoteCounts(); - - if (!_this4.state.selectedTag) { - return; - } - /** If the selected tag has been deleted, revert to All view. */ - - - var selectedTag = allItems.find(function (tag) { - return tag.uuid === _this4.state.selectedTag.uuid; - }); - - if (selectedTag && selectedTag.deleted) { - _this4.selectTag(_this4.state.smartTags[0]); - } - }); - } - }, { - key: "reloadNoteCounts", - value: function reloadNoteCounts() { - var allTags = []; - - if (this.state.tags) { - allTags = allTags.concat(this.state.tags); - } - - if (this.state.smartTags) { - allTags = allTags.concat(this.state.smartTags); - } - - var noteCounts = {}; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = allTags[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var tag = _step.value; - var validNotes = snjs__WEBPACK_IMPORTED_MODULE_8__["SNNote"].filterDummyNotes(tag.notes).filter(function (note) { - return !note.archived && !note.content.trashed; - }); - noteCounts[tag.uuid] = validNotes.length; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - this.setState({ - noteCounts: noteCounts - }); - } - }, { - key: "loadPreferences", - value: function loadPreferences() { - var width = this.preferencesManager.getValue(_services_preferencesManager__WEBPACK_IMPORTED_MODULE_12__["PREF_TAGS_PANEL_WIDTH"]); - - if (width) { - this.panelController.setWidth(width); - - if (this.panelController.isCollapsed()) { - this.appState.panelDidResize({ - name: _controllers_constants__WEBPACK_IMPORTED_MODULE_11__["PANEL_NAME_TAGS"], - collapsed: this.panelController.isCollapsed() - }); - } - } - } - }, { - key: "registerComponentHandler", - value: function registerComponentHandler() { - var _this5 = this; - - this.componentManager.registerHandler({ - identifier: 'tags', - areas: ['tags-list'], - activationHandler: function activationHandler(component) { - _this5.component = component; - }, - contextRequestHandler: function contextRequestHandler(component) { - return null; - }, - actionHandler: function actionHandler(component, action, data) { - if (action === 'select-item') { - if (data.item.content_type === 'Tag') { - var tag = _this5.modelManager.findItem(data.item.uuid); - - if (tag) { - _this5.selectTag(tag); - } - } else if (data.item.content_type === 'SN|SmartTag') { - var smartTag = new snjs__WEBPACK_IMPORTED_MODULE_8__["SNSmartTag"](data.item); - - _this5.selectTag(smartTag); - } - } else if (action === 'clear-selection') { - _this5.selectTag(_this5.state.smartTags[0]); - } - } - }); - } - }, { - key: "selectTag", - value: function selectTag(tag) { - var _this6 = this; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function selectTag$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (tag.isSmartTag()) { - Object.defineProperty(tag, 'notes', { - get: function get() { - return _this6.modelManager.notesMatchingSmartTag(tag); - } - }); - } - - if (tag.content.conflict_of) { - tag.content.conflict_of = null; - this.modelManager.setItemDirty(tag); - this.syncManager.sync(); - } - - this.appState.setSelectedTag(tag); - - case 3: - case "end": - return _context2.stop(); - } - } - }, null, this); - } - }, { - key: "clickedAddNewTag", - value: function clickedAddNewTag() { - if (this.state.editingTag) { - return; - } - - var newTag = this.modelManager.createItem({ - content_type: 'Tag' - }); - this.setState({ - previousTag: this.state.selectedTag, - selectedTag: newTag, - editingTag: newTag, - newTag: newTag - }); - this.modelManager.addItem(newTag); - } - }, { - key: "tagTitleDidChange", - value: function tagTitleDidChange(tag) { - this.setState({ - editingTag: tag - }); - } - }, { - key: "saveTag", - value: function saveTag($event, tag) { - var matchingTag, alreadyExists; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function saveTag$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - $event.target.blur(); - _context3.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.setState({ - editingTag: null - })); - - case 3: - if (!(!tag.title || tag.title.length === 0)) { - _context3.next = 7; - break; - } - - if (this.state.editingTag) { - tag.title = this.editingOriginalName; - this.editingOriginalName = null; - } else if (this.state.newTag) { - this.modelManager.removeItemLocally(tag); - this.setState({ - selectedTag: this.state.previousTag - }); - } - - this.setState({ - newTag: null - }); - return _context3.abrupt("return"); - - case 7: - this.editingOriginalName = null; - matchingTag = this.modelManager.findTag(tag.title); - alreadyExists = matchingTag && matchingTag !== tag; - - if (!(this.state.newTag === tag && alreadyExists)) { - _context3.next = 15; - break; - } - - this.alertManager.alert({ - text: "A tag with this name already exists." - }); - this.modelManager.removeItemLocally(tag); - this.setState({ - newTag: null - }); - return _context3.abrupt("return"); - - case 15: - this.modelManager.setItemDirty(tag); - this.syncManager.sync(); - this.modelManager.resortTag(tag); - this.selectTag(tag); - this.setState({ - newTag: null - }); - - case 20: - case "end": - return _context3.stop(); - } - } - }, null, this); - } - }, { - key: "selectedRenameTag", - value: function selectedRenameTag($event, tag) { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function selectedRenameTag$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - this.editingOriginalName = tag.title; - _context4.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.setState({ - editingTag: tag - })); - - case 3: - document.getElementById('tag-' + tag.uuid).focus(); - - case 4: - case "end": - return _context4.stop(); - } - } - }, null, this); - } - }, { - key: "selectedDeleteTag", - value: function selectedDeleteTag(tag) { - this.removeTag(tag); - this.selectTag(this.state.smartTags[0]); - } - }, { - key: "removeTag", - value: function removeTag(tag) { - var _this7 = this; - - this.alertManager.confirm({ - text: _strings__WEBPACK_IMPORTED_MODULE_13__["STRING_DELETE_TAG"], - destructive: true, - onConfirm: function onConfirm() { - _this7.modelManager.setItemToBeDeleted(tag); - - _this7.syncManager.sync(); - } - }); - } - }]); - - return TagsPanelCtrl; -}(_Controllers__WEBPACK_IMPORTED_MODULE_14__["PureCtrl"]); - -var TagsPanel = function TagsPanel() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, TagsPanel); - - this.restrict = 'E'; - this.scope = {}; - this.template = _tags_pug__WEBPACK_IMPORTED_MODULE_9___default.a; - this.replace = true; - this.controller = TagsPanelCtrl; - this.controllerAs = 'self'; - this.bindToController = true; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/functional/autofocus.js": -/*!*******************************************************************!*\ - !*** ./app/assets/javascripts/directives/functional/autofocus.js ***! - \*******************************************************************/ -/*! exports provided: autofocus */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "autofocus", function() { return autofocus; }); -autofocus.$inject = ["$timeout"]; - -/* @ngInject */ -function autofocus($timeout) { - return { - restrict: 'A', - scope: { - shouldFocus: '=' - }, - link: function link($scope, $element) { - $timeout(function () { - if ($scope.shouldFocus) { - $element[0].focus(); - } - }); - } - }; -} - -/***/ }), - -/***/ "./app/assets/javascripts/directives/functional/click-outside.js": -/*!***********************************************************************!*\ - !*** ./app/assets/javascripts/directives/functional/click-outside.js ***! - \***********************************************************************/ -/*! exports provided: clickOutside */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clickOutside", function() { return clickOutside; }); -clickOutside.$inject = ["$document"]; - -/* @ngInject */ -function clickOutside($document) { - return { - restrict: 'A', - replace: false, - link: function link($scope, $element, attrs) { - var didApplyClickOutside = false; - $element.bind('click', function (e) { - didApplyClickOutside = false; - - if (attrs.isOpen) { - e.stopPropagation(); - } - }); - $document.bind('click', function () { - // Ignore click if on SKAlert - if (event.target.closest(".sk-modal")) { - return; - } - - if (!didApplyClickOutside) { - $scope.$apply(attrs.clickOutside); - didApplyClickOutside = true; - } - }); - } - }; -} - -/***/ }), - -/***/ "./app/assets/javascripts/directives/functional/delay-hide.js": -/*!********************************************************************!*\ - !*** ./app/assets/javascripts/directives/functional/delay-hide.js ***! - \********************************************************************/ -/*! exports provided: delayHide */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delayHide", function() { return delayHide; }); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ "./node_modules/angular/index.js"); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__); -delayHide.$inject = ["$timeout"]; - -/* @ngInject */ - -function delayHide($timeout) { - return { - restrict: 'A', - scope: { - show: '=', - delay: '@' - }, - link: function link(scope, elem, attrs) { - showElement(false); // This is where all the magic happens! - // Whenever the scope variable updates we simply - // show if it evaluates to 'true' and hide if 'false' - - scope.$watch('show', function (newVal) { - newVal ? showSpinner() : hideSpinner(); - }); - - function showSpinner() { - if (scope.hidePromise) { - $timeout.cancel(scope.hidePromise); - scope.hidePromise = null; - } - - showElement(true); - } - - function hideSpinner() { - scope.hidePromise = $timeout(showElement.bind(this, false), getDelay()); - } - - function showElement(show) { - show ? elem.css({ - display: '' - }) : elem.css({ - display: 'none' - }); - } - - function getDelay() { - var delay = parseInt(scope.delay); - return angular__WEBPACK_IMPORTED_MODULE_0___default.a.isNumber(delay) ? delay : 200; - } - } - }; -} - -/***/ }), - -/***/ "./app/assets/javascripts/directives/functional/elemReady.js": -/*!*******************************************************************!*\ - !*** ./app/assets/javascripts/directives/functional/elemReady.js ***! - \*******************************************************************/ -/*! exports provided: elemReady */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elemReady", function() { return elemReady; }); -elemReady.$inject = ["$parse"]; - -/* @ngInject */ -function elemReady($parse) { - return { - restrict: 'A', - link: function link($scope, elem, attrs) { - elem.ready(function () { - $scope.$apply(function () { - var func = $parse(attrs.elemReady); - func($scope); - }); - }); - } - }; -} - -/***/ }), - -/***/ "./app/assets/javascripts/directives/functional/file-change.js": -/*!*********************************************************************!*\ - !*** ./app/assets/javascripts/directives/functional/file-change.js ***! - \*********************************************************************/ -/*! exports provided: fileChange */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fileChange", function() { return fileChange; }); -/* @ngInject */ -function fileChange() { - return { - restrict: 'A', - scope: { - handler: '&' - }, - link: function link(scope, element) { - element.on('change', function (event) { - scope.$apply(function () { - scope.handler({ - files: event.target.files - }); - }); - }); - } - }; -} - -/***/ }), - -/***/ "./app/assets/javascripts/directives/functional/index.js": -/*!***************************************************************!*\ - !*** ./app/assets/javascripts/directives/functional/index.js ***! - \***************************************************************/ -/*! exports provided: autofocus, clickOutside, delayHide, elemReady, fileChange, infiniteScroll, lowercase, selectOnClick, snEnter */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _autofocus__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./autofocus */ "./app/assets/javascripts/directives/functional/autofocus.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "autofocus", function() { return _autofocus__WEBPACK_IMPORTED_MODULE_0__["autofocus"]; }); - -/* harmony import */ var _click_outside__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./click-outside */ "./app/assets/javascripts/directives/functional/click-outside.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "clickOutside", function() { return _click_outside__WEBPACK_IMPORTED_MODULE_1__["clickOutside"]; }); - -/* harmony import */ var _delay_hide__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./delay-hide */ "./app/assets/javascripts/directives/functional/delay-hide.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayHide", function() { return _delay_hide__WEBPACK_IMPORTED_MODULE_2__["delayHide"]; }); - -/* harmony import */ var _elemReady__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./elemReady */ "./app/assets/javascripts/directives/functional/elemReady.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elemReady", function() { return _elemReady__WEBPACK_IMPORTED_MODULE_3__["elemReady"]; }); - -/* harmony import */ var _file_change__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./file-change */ "./app/assets/javascripts/directives/functional/file-change.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fileChange", function() { return _file_change__WEBPACK_IMPORTED_MODULE_4__["fileChange"]; }); - -/* harmony import */ var _infiniteScroll__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./infiniteScroll */ "./app/assets/javascripts/directives/functional/infiniteScroll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "infiniteScroll", function() { return _infiniteScroll__WEBPACK_IMPORTED_MODULE_5__["infiniteScroll"]; }); - -/* harmony import */ var _lowercase__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lowercase */ "./app/assets/javascripts/directives/functional/lowercase.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lowercase", function() { return _lowercase__WEBPACK_IMPORTED_MODULE_6__["lowercase"]; }); - -/* harmony import */ var _selectOnClick__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./selectOnClick */ "./app/assets/javascripts/directives/functional/selectOnClick.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "selectOnClick", function() { return _selectOnClick__WEBPACK_IMPORTED_MODULE_7__["selectOnClick"]; }); - -/* harmony import */ var _snEnter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./snEnter */ "./app/assets/javascripts/directives/functional/snEnter.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "snEnter", function() { return _snEnter__WEBPACK_IMPORTED_MODULE_8__["snEnter"]; }); - - - - - - - - - - - -/***/ }), - -/***/ "./app/assets/javascripts/directives/functional/infiniteScroll.js": -/*!************************************************************************!*\ - !*** ./app/assets/javascripts/directives/functional/infiniteScroll.js ***! - \************************************************************************/ -/*! exports provided: infiniteScroll */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "infiniteScroll", function() { return infiniteScroll; }); -infiniteScroll.$inject = ["$rootScope", "$window", "$timeout"]; - -/* @ngInject */ -function infiniteScroll($rootScope, $window, $timeout) { - return { - link: function link(scope, elem, attrs) { - var offset = parseInt(attrs.threshold) || 0; - var e = elem[0]; - elem.on('scroll', function () { - if (scope.$eval(attrs.canLoad) && e.scrollTop + e.offsetHeight >= e.scrollHeight - offset) { - scope.$apply(attrs.infiniteScroll); - } - }); - } - }; -} - -/***/ }), - -/***/ "./app/assets/javascripts/directives/functional/lowercase.js": -/*!*******************************************************************!*\ - !*** ./app/assets/javascripts/directives/functional/lowercase.js ***! - \*******************************************************************/ -/*! exports provided: lowercase */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lowercase", function() { return lowercase; }); -/* @ngInject */ -function lowercase() { - return { - require: 'ngModel', - link: function link(scope, element, attrs, modelCtrl) { - var lowercase = function lowercase(inputValue) { - if (inputValue === undefined) inputValue = ''; - var lowercased = inputValue.toLowerCase(); - - if (lowercased !== inputValue) { - modelCtrl.$setViewValue(lowercased); - modelCtrl.$render(); - } - - return lowercased; - }; - - modelCtrl.$parsers.push(lowercase); - lowercase(scope[attrs.ngModel]); - } - }; -} - -/***/ }), - -/***/ "./app/assets/javascripts/directives/functional/selectOnClick.js": -/*!***********************************************************************!*\ - !*** ./app/assets/javascripts/directives/functional/selectOnClick.js ***! - \***********************************************************************/ -/*! exports provided: selectOnClick */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "selectOnClick", function() { return selectOnClick; }); -selectOnClick.$inject = ["$window"]; - -/* @ngInject */ -function selectOnClick($window) { - return { - restrict: 'A', - link: function link(scope, element, attrs) { - element.on('focus', function () { - if (!$window.getSelection().toString()) { - /** Required for mobile Safari */ - this.setSelectionRange(0, this.value.length); - } - }); - } - }; -} - -/***/ }), - -/***/ "./app/assets/javascripts/directives/functional/snEnter.js": -/*!*****************************************************************!*\ - !*** ./app/assets/javascripts/directives/functional/snEnter.js ***! - \*****************************************************************/ -/*! exports provided: snEnter */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "snEnter", function() { return snEnter; }); -/* @ngInject */ -function snEnter() { - return function (scope, element, attrs) { - element.bind('keydown keypress', function (event) { - if (event.which === 13) { - scope.$apply(function () { - scope.$eval(attrs.snEnter, { - event: event - }); - }); - event.preventDefault(); - } - }); - }; -} - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/accountMenu.js": -/*!****************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/accountMenu.js ***! - \****************************************************************/ -/*! exports provided: AccountMenu */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AccountMenu", function() { return AccountMenu; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js"); -/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js"); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js"); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/utils */ "./app/assets/javascripts/utils.js"); -/* harmony import */ var _services_privilegesManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/services/privilegesManager */ "./app/assets/javascripts/services/privilegesManager.js"); -/* harmony import */ var _directives_account_menu_pug__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! %/directives/account-menu.pug */ "./app/assets/templates/directives/account-menu.pug"); -/* harmony import */ var _directives_account_menu_pug__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_directives_account_menu_pug__WEBPACK_IMPORTED_MODULE_9__); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! snjs */ "./node_modules/snjs/dist/snjs.js"); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(snjs__WEBPACK_IMPORTED_MODULE_10__); -/* harmony import */ var _Controllers__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Controllers */ "./app/assets/javascripts/controllers/index.js"); -/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/strings */ "./app/assets/javascripts/strings.js"); - - - - - - - - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - - - - - - - -var ELEMENT_ID_IMPORT_PASSWORD_INPUT = 'import-password-request'; - -var AccountMenuCtrl = -/*#__PURE__*/ -function (_PureCtrl) { - AccountMenuCtrl.$inject = ["$scope", "$rootScope", "$timeout", "alertManager", "archiveManager", "appVersion", "authManager", "modelManager", "passcodeManager", "privilegesManager", "storageManager", "syncManager"]; - - _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(AccountMenuCtrl, _PureCtrl); - - /* @ngInject */ - function AccountMenuCtrl($scope, $rootScope, $timeout, alertManager, archiveManager, appVersion, authManager, modelManager, passcodeManager, privilegesManager, storageManager, syncManager) { - var _this; - - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, AccountMenuCtrl); - - _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(AccountMenuCtrl).call(this, $timeout)); - _this.$scope = $scope; - _this.$rootScope = $rootScope; - _this.$timeout = $timeout; - _this.alertManager = alertManager; - _this.archiveManager = archiveManager; - _this.authManager = authManager; - _this.modelManager = modelManager; - _this.passcodeManager = passcodeManager; - _this.privilegesManager = privilegesManager; - _this.storageManager = storageManager; - _this.syncManager = syncManager; - _this.state = { - appVersion: 'v' + (window.electronAppVersion || appVersion), - user: _this.authManager.user, - canAddPasscode: !_this.authManager.isEphemeralSession(), - passcodeAutoLockOptions: _this.passcodeManager.getAutoLockIntervalOptions(), - formData: { - mergeLocal: true, - ephemeral: false - }, - mutable: { - backupEncrypted: _this.encryptedBackupsAvailable() - } - }; - _this.syncStatus = _this.syncManager.syncStatus; - - _this.syncManager.getServerURL().then(function (url) { - _this.setState({ - server: url, - formData: _objectSpread({}, _this.state.formData, { - url: url - }) - }); - }); - - _this.authManager.checkForSecurityUpdate().then(function (available) { - _this.setState({ - securityUpdateAvailable: available - }); - }); - - _this.reloadAutoLockInterval(); - - return _this; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(AccountMenuCtrl, [{ - key: "$onInit", - value: function $onInit() { - this.initProps({ - closeFunction: this.closeFunction - }); - } - }, { - key: "close", - value: function close() { - var _this2 = this; - - this.$timeout(function () { - _this2.props.closeFunction()(); - }); - } - }, { - key: "encryptedBackupsAvailable", - value: function encryptedBackupsAvailable() { - return !Object(_utils__WEBPACK_IMPORTED_MODULE_7__["isNullOrUndefined"])(this.authManager.user) || this.passcodeManager.hasPasscode(); - } - }, { - key: "submitMfaForm", - value: function submitMfaForm() { - var params = _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()({}, this.state.formData.mfa.payload.mfa_key, this.state.formData.userMfaCode); - - this.login(params); - } - }, { - key: "submitAuthForm", - value: function submitAuthForm() { - if (!this.state.formData.email || !this.state.formData.user_password) { - return; - } - - if (this.state.formData.showLogin) { - this.login(); - } else { - this.register(); - } - } - }, { - key: "login", - value: function login(extraParams) { - var response, hasError, error; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function login$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - /** Prevent a timed sync from occuring while signing in. */ - this.syncManager.lockSyncing(); - this.state.formData.status = _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_GENERATING_LOGIN_KEYS"]; - this.state.formData.authenticating = true; - _context.next = 5; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.authManager.login(this.state.formData.url, this.state.formData.email, this.state.formData.user_password, this.state.formData.ephemeral, this.state.formData.strictSignin, extraParams)); - - case 5: - response = _context.sent; - hasError = !response || response.error; - - if (hasError) { - _context.next = 13; - break; - } - - _context.next = 10; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.onAuthSuccess()); - - case 10: - this.syncManager.unlockSyncing(); - this.syncManager.sync({ - performIntegrityCheck: true - }); - return _context.abrupt("return"); - - case 13: - this.syncManager.unlockSyncing(); - this.state.formData.status = null; - error = response ? response.error : { - message: "An unknown error occured." - }; - - if (error.tag === 'mfa-required' || error.tag === 'mfa-invalid') { - this.state.formData.showLogin = false; - this.state.formData.mfa = error; - } else { - this.state.formData.showLogin = true; - this.state.formData.mfa = null; - - if (error.message) { - this.alertManager.alert({ - text: error.message - }); - } - } - - this.state.formData.authenticating = false; - - case 18: - case "end": - return _context.stop(); - } - } - }, null, this); - } - }, { - key: "register", - value: function register() { - var confirmation, response, error; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function register$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - confirmation = this.state.formData.password_conf; - - if (!(confirmation !== this.state.formData.user_password)) { - _context2.next = 4; - break; - } - - this.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_NON_MATCHING_PASSWORDS"] - }); - return _context2.abrupt("return"); - - case 4: - this.state.formData.confirmPassword = false; - this.state.formData.status = _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_GENERATING_REGISTER_KEYS"]; - this.state.formData.authenticating = true; - _context2.next = 9; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.authManager.register(this.state.formData.url, this.state.formData.email, this.state.formData.user_password, this.state.formData.ephemeral)); - - case 9: - response = _context2.sent; - - if (!(!response || response.error)) { - _context2.next = 17; - break; - } - - this.state.formData.status = null; - error = response ? response.error : { - message: "An unknown error occured." - }; - this.state.formData.authenticating = false; - this.alertManager.alert({ - text: error.message - }); - _context2.next = 20; - break; - - case 17: - _context2.next = 19; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.onAuthSuccess()); - - case 19: - this.syncManager.sync(); - - case 20: - case "end": - return _context2.stop(); - } - } - }, null, this); - } - }, { - key: "mergeLocalChanged", - value: function mergeLocalChanged() { - var _this3 = this; - - if (!this.state.formData.mergeLocal) { - this.alertManager.confirm({ - text: _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_ACCOUNT_MENU_UNCHECK_MERGE"], - destructive: true, - onCancel: function onCancel() { - _this3.state.formData.mergeLocal = true; - } - }); - } - } - }, { - key: "onAuthSuccess", - value: function onAuthSuccess() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function onAuthSuccess$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - if (!this.state.formData.mergeLocal) { - _context3.next = 6; - break; - } - - this.$rootScope.$broadcast('major-data-change'); - _context3.next = 4; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.clearDatabaseAndRewriteAllItems({ - alternateUuids: true - })); - - case 4: - _context3.next = 9; - break; - - case 6: - this.modelManager.removeAllItemsFromMemory(); - _context3.next = 9; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.storageManager.clearAllModels()); - - case 9: - this.state.formData.authenticating = false; - this.syncManager.refreshErroredItems(); - this.close(); - - case 12: - case "end": - return _context3.stop(); - } - } - }, null, this); - } - }, { - key: "openPasswordWizard", - value: function openPasswordWizard(type) { - this.close(); - this.authManager.presentPasswordWizard(type); - } - }, { - key: "openPrivilegesModal", - value: function openPrivilegesModal() { - var _this4 = this; - - var run, needsPrivilege; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function openPrivilegesModal$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - this.close(); - - run = function run() { - _this4.privilegesManager.presentPrivilegesManagementModal(); - }; - - _context4.next = 4; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.privilegesManager.actionRequiresPrivilege(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_8__["PrivilegesManager"].ActionManagePrivileges)); - - case 4: - needsPrivilege = _context4.sent; - - if (needsPrivilege) { - this.privilegesManager.presentPrivilegesModal(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_8__["PrivilegesManager"].ActionManagePrivileges, function () { - run(); - }); - } else { - run(); - } - - case 6: - case "end": - return _context4.stop(); - } - } - }, null, this); - } - /** - * Allows IndexedDB unencrypted logs to be deleted - * `clearAllModels` will remove data from backing store, - * but not from working memory See: - * https://github.com/standardnotes/desktop/issues/131 - */ - - }, { - key: "clearDatabaseAndRewriteAllItems", - value: function clearDatabaseAndRewriteAllItems() { - var _ref, - alternateUuids, - _args5 = arguments; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function clearDatabaseAndRewriteAllItems$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - _ref = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : {}, alternateUuids = _ref.alternateUuids; - _context5.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.storageManager.clearAllModels()); - - case 3: - _context5.next = 5; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.syncManager.markAllItemsDirtyAndSaveOffline(alternateUuids)); - - case 5: - case "end": - return _context5.stop(); - } - } - }, null, this); - } - }, { - key: "destroyLocalData", - value: function destroyLocalData() { - var _this5 = this; - - this.alertManager.confirm({ - text: _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_SIGN_OUT_CONFIRMATION"], - destructive: true, - onConfirm: function onConfirm() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function onConfirm$(_context6) { - while (1) { - switch (_context6.prev = _context6.next) { - case 0: - _context6.next = 2; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this5.authManager.signout(true)); - - case 2: - window.location.reload(); - - case 3: - case "end": - return _context6.stop(); - } - } - }); - } - }); - } - }, { - key: "submitImportPassword", - value: function submitImportPassword() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function submitImportPassword$(_context7) { - while (1) { - switch (_context7.prev = _context7.next) { - case 0: - _context7.next = 2; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.performImport(this.state.importData.data, this.state.importData.password)); - - case 2: - case "end": - return _context7.stop(); - } - } - }, null, this); - } - }, { - key: "readFile", - value: function readFile(file) { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function readFile$(_context8) { - while (1) { - switch (_context8.prev = _context8.next) { - case 0: - return _context8.abrupt("return", new Promise(function (resolve, reject) { - var reader = new FileReader(); - - reader.onload = function (e) { - try { - var data = JSON.parse(e.target.result); - resolve(data); - } catch (e) { - this.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_INVALID_IMPORT_FILE"] - }); - } - }; - - reader.readAsText(file); - })); - - case 1: - case "end": - return _context8.stop(); - } - } - }); - } - /** - * @template - */ - - }, { - key: "importFileSelected", - value: function importFileSelected(files) { - var _this6 = this; - - var run, needsPrivilege; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function importFileSelected$(_context10) { - while (1) { - switch (_context10.prev = _context10.next) { - case 0: - run = function run() { - var file, data, element; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function run$(_context9) { - while (1) { - switch (_context9.prev = _context9.next) { - case 0: - file = files[0]; - _context9.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this6.readFile(file)); - - case 3: - data = _context9.sent; - - if (data) { - _context9.next = 6; - break; - } - - return _context9.abrupt("return"); - - case 6: - if (!data.auth_params) { - _context9.next = 13; - break; - } - - _context9.next = 9; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this6.setState({ - importData: _objectSpread({}, _this6.state.importData, { - requestPassword: true, - data: data - }) - })); - - case 9: - element = document.getElementById(ELEMENT_ID_IMPORT_PASSWORD_INPUT); - - if (element) { - element.scrollIntoView(false); - } - - _context9.next = 15; - break; - - case 13: - _context9.next = 15; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this6.performImport(data, null)); - - case 15: - case "end": - return _context9.stop(); - } - } - }); - }; - - _context10.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.privilegesManager.actionRequiresPrivilege(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_8__["PrivilegesManager"].ActionManageBackups)); - - case 3: - needsPrivilege = _context10.sent; - - if (needsPrivilege) { - this.privilegesManager.presentPrivilegesModal(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_8__["PrivilegesManager"].ActionManageBackups, run); - } else { - run(); - } - - case 5: - case "end": - return _context10.stop(); - } - } - }, null, this); - } - }, { - key: "performImport", - value: function performImport(data, password) { - var errorCount, message; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function performImport$(_context11) { - while (1) { - switch (_context11.prev = _context11.next) { - case 0: - _context11.next = 2; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.setState({ - importData: _objectSpread({}, this.state.importData, { - loading: true - }) - })); - - case 2: - _context11.next = 4; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.importJSONData(data, password)); - - case 4: - errorCount = _context11.sent; - this.setState({ - importData: null - }); - - if (errorCount > 0) { - message = Object(_strings__WEBPACK_IMPORTED_MODULE_12__["StringImportError"])({ - errorCount: errorCount - }); - this.alertManager.alert({ - text: message - }); - } else { - this.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_IMPORT_SUCCESS"] - }); - } - - case 7: - case "end": - return _context11.stop(); - } - } - }, null, this); - } - }, { - key: "importJSONData", - value: function importJSONData(data, password) { - var errorCount, keys, throws, _items, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item, items, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, _item; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function importJSONData$(_context12) { - while (1) { - switch (_context12.prev = _context12.next) { - case 0: - errorCount = 0; - - if (!data.auth_params) { - _context12.next = 36; - break; - } - - _context12.next = 4; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(snjs__WEBPACK_IMPORTED_MODULE_10__["protocolManager"].computeEncryptionKeysForUser(password, data.auth_params)); - - case 4: - keys = _context12.sent; - _context12.prev = 5; - throws = false; - _context12.next = 9; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(snjs__WEBPACK_IMPORTED_MODULE_10__["protocolManager"].decryptMultipleItems(data.items, keys, throws)); - - case 9: - _items = []; - _iteratorNormalCompletion = true; - _didIteratorError = false; - _iteratorError = undefined; - _context12.prev = 13; - - for (_iterator = data.items[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - item = _step.value; - item.enc_item_key = null; - item.auth_hash = null; - - if (item.errorDecrypting) { - errorCount++; - } else { - _items.push(item); - } - } - - _context12.next = 21; - break; - - case 17: - _context12.prev = 17; - _context12.t0 = _context12["catch"](13); - _didIteratorError = true; - _iteratorError = _context12.t0; - - case 21: - _context12.prev = 21; - _context12.prev = 22; - - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - - case 24: - _context12.prev = 24; - - if (!_didIteratorError) { - _context12.next = 27; - break; - } - - throw _iteratorError; - - case 27: - return _context12.finish(24); - - case 28: - return _context12.finish(21); - - case 29: - data.items = _items; - _context12.next = 36; - break; - - case 32: - _context12.prev = 32; - _context12.t1 = _context12["catch"](5); - this.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_ERROR_DECRYPTING_IMPORT"] - }); - return _context12.abrupt("return"); - - case 36: - _context12.next = 38; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.modelManager.importItems(data.items)); - - case 38: - items = _context12.sent; - _iteratorNormalCompletion2 = true; - _didIteratorError2 = false; - _iteratorError2 = undefined; - _context12.prev = 42; - - for (_iterator2 = items[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - _item = _step2.value; - - /** - * Don't want to activate any components during import process in - * case of exceptions breaking up the import proccess - */ - if (_item.content_type === 'SN|Component') { - _item.active = false; - } - } - - _context12.next = 50; - break; - - case 46: - _context12.prev = 46; - _context12.t2 = _context12["catch"](42); - _didIteratorError2 = true; - _iteratorError2 = _context12.t2; - - case 50: - _context12.prev = 50; - _context12.prev = 51; - - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { - _iterator2.return(); - } - - case 53: - _context12.prev = 53; - - if (!_didIteratorError2) { - _context12.next = 56; - break; - } - - throw _iteratorError2; - - case 56: - return _context12.finish(53); - - case 57: - return _context12.finish(50); - - case 58: - this.syncManager.sync(); - return _context12.abrupt("return", errorCount); - - case 60: - case "end": - return _context12.stop(); - } - } - }, null, this, [[5, 32], [13, 17, 21, 29], [22,, 24, 28], [42, 46, 50, 58], [51,, 53, 57]]); - } - }, { - key: "downloadDataArchive", - value: function downloadDataArchive() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function downloadDataArchive$(_context13) { - while (1) { - switch (_context13.prev = _context13.next) { - case 0: - this.archiveManager.downloadBackup(this.state.mutable.backupEncrypted); - - case 1: - case "end": - return _context13.stop(); - } - } - }, null, this); - } - }, { - key: "notesAndTagsCount", - value: function notesAndTagsCount() { - return this.modelManager.allItemsMatchingTypes(['Note', 'Tag']).length; - } - }, { - key: "encryptionStatusForNotes", - value: function encryptionStatusForNotes() { - var length = this.notesAndTagsCount(); - return length + "/" + length + " notes and tags encrypted"; - } - }, { - key: "encryptionEnabled", - value: function encryptionEnabled() { - return this.passcodeManager.hasPasscode() || !this.authManager.offline(); - } - }, { - key: "encryptionSource", - value: function encryptionSource() { - if (!this.authManager.offline()) { - return "Account keys"; - } else if (this.passcodeManager.hasPasscode()) { - return "Local Passcode"; - } else { - return null; - } - } - }, { - key: "encryptionStatusString", - value: function encryptionStatusString() { - if (!this.authManager.offline()) { - return _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_E2E_ENABLED"]; - } else if (this.passcodeManager.hasPasscode()) { - return _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_LOCAL_ENC_ENABLED"]; - } else { - return _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_ENC_NOT_ENABLED"]; - } - } - }, { - key: "reloadAutoLockInterval", - value: function reloadAutoLockInterval() { - var interval; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function reloadAutoLockInterval$(_context14) { - while (1) { - switch (_context14.prev = _context14.next) { - case 0: - _context14.next = 2; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.passcodeManager.getAutoLockInterval()); - - case 2: - interval = _context14.sent; - this.setState({ - selectedAutoLockInterval: interval - }); - - case 4: - case "end": - return _context14.stop(); - } - } - }, null, this); - } - }, { - key: "selectAutoLockInterval", - value: function selectAutoLockInterval(interval) { - var _this7 = this; - - var run, needsPrivilege; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function selectAutoLockInterval$(_context16) { - while (1) { - switch (_context16.prev = _context16.next) { - case 0: - run = function run() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function run$(_context15) { - while (1) { - switch (_context15.prev = _context15.next) { - case 0: - _context15.next = 2; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this7.passcodeManager.setAutoLockInterval(interval)); - - case 2: - _this7.reloadAutoLockInterval(); - - case 3: - case "end": - return _context15.stop(); - } - } - }); - }; - - _context16.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.privilegesManager.actionRequiresPrivilege(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_8__["PrivilegesManager"].ActionManagePasscode)); - - case 3: - needsPrivilege = _context16.sent; - - if (needsPrivilege) { - this.privilegesManager.presentPrivilegesModal(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_8__["PrivilegesManager"].ActionManagePasscode, function () { - run(); - }); - } else { - run(); - } - - case 5: - case "end": - return _context16.stop(); - } - } - }, null, this); - } - }, { - key: "hasPasscode", - value: function hasPasscode() { - return this.passcodeManager.hasPasscode(); - } - }, { - key: "addPasscodeClicked", - value: function addPasscodeClicked() { - this.state.formData.showPasscodeForm = true; - } - }, { - key: "submitPasscodeForm", - value: function submitPasscodeForm() { - var _this8 = this; - - var passcode = this.state.formData.passcode; - - if (passcode !== this.state.formData.confirmPasscode) { - this.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_NON_MATCHING_PASSCODES"] - }); - return; - } - - var func = this.state.formData.changingPasscode ? this.passcodeManager.changePasscode.bind(this.passcodeManager) : this.passcodeManager.setPasscode.bind(this.passcodeManager); - func(passcode, function _callee() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function _callee$(_context17) { - while (1) { - switch (_context17.prev = _context17.next) { - case 0: - _this8.setState({ - formData: _objectSpread({}, _this8.state.formData, { - passcode: null, - confirmPasscode: null, - showPasscodeForm: false - }) - }); - - _context17.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this8.authManager.offline()); - - case 3: - if (!_context17.sent) { - _context17.next = 6; - break; - } - - _this8.$rootScope.$broadcast('major-data-change'); - - _this8.clearDatabaseAndRewriteAllItems(); - - case 6: - case "end": - return _context17.stop(); - } - } - }); - }); - } - }, { - key: "changePasscodePressed", - value: function changePasscodePressed() { - var _this9 = this; - - var run, needsPrivilege; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function changePasscodePressed$(_context18) { - while (1) { - switch (_context18.prev = _context18.next) { - case 0: - run = function run() { - _this9.state.formData.changingPasscode = true; - - _this9.addPasscodeClicked(); - }; - - _context18.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.privilegesManager.actionRequiresPrivilege(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_8__["PrivilegesManager"].ActionManagePasscode)); - - case 3: - needsPrivilege = _context18.sent; - - if (needsPrivilege) { - this.privilegesManager.presentPrivilegesModal(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_8__["PrivilegesManager"].ActionManagePasscode, run); - } else { - run(); - } - - case 5: - case "end": - return _context18.stop(); - } - } - }, null, this); - } - }, { - key: "removePasscodePressed", - value: function removePasscodePressed() { - var _this10 = this; - - var run, needsPrivilege; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function removePasscodePressed$(_context19) { - while (1) { - switch (_context19.prev = _context19.next) { - case 0: - run = function run() { - var signedIn = !_this10.authManager.offline(); - var message = _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_REMOVE_PASSCODE_CONFIRMATION"]; - - if (!signedIn) { - message += _strings__WEBPACK_IMPORTED_MODULE_12__["STRING_REMOVE_PASSCODE_OFFLINE_ADDENDUM"]; - } - - _this10.alertManager.confirm({ - text: message, - destructive: true, - onConfirm: function onConfirm() { - _this10.passcodeManager.clearPasscode(); - - if (_this10.authManager.offline()) { - _this10.syncManager.markAllItemsDirtyAndSaveOffline(); - } - } - }); - }; - - _context19.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.privilegesManager.actionRequiresPrivilege(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_8__["PrivilegesManager"].ActionManagePasscode)); - - case 3: - needsPrivilege = _context19.sent; - - if (needsPrivilege) { - this.privilegesManager.presentPrivilegesModal(_services_privilegesManager__WEBPACK_IMPORTED_MODULE_8__["PrivilegesManager"].ActionManagePasscode, run); - } else { - run(); - } - - case 5: - case "end": - return _context19.stop(); - } - } - }, null, this); - } - }, { - key: "isDesktopApplication", - value: function isDesktopApplication() { - return Object(_utils__WEBPACK_IMPORTED_MODULE_7__["isDesktopApplication"])(); - } - }]); - - return AccountMenuCtrl; -}(_Controllers__WEBPACK_IMPORTED_MODULE_11__["PureCtrl"]); - -var AccountMenu = function AccountMenu() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, AccountMenu); - - this.restrict = 'E'; - this.template = _directives_account_menu_pug__WEBPACK_IMPORTED_MODULE_9___default.a; - this.controller = AccountMenuCtrl; - this.controllerAs = 'self'; - this.bindToController = true; - this.scope = { - closeFunction: '&' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/actionsMenu.js": -/*!****************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/actionsMenu.js ***! - \****************************************************************/ -/*! exports provided: ActionsMenu */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionsMenu", function() { return ActionsMenu; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js"); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js"); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var _directives_actions_menu_pug__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! %/directives/actions-menu.pug */ "./app/assets/templates/directives/actions-menu.pug"); -/* harmony import */ var _directives_actions_menu_pug__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_directives_actions_menu_pug__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var _Controllers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Controllers */ "./app/assets/javascripts/controllers/index.js"); - - - - - - - - - -var ActionsMenuCtrl = -/*#__PURE__*/ -function (_PureCtrl) { - ActionsMenuCtrl.$inject = ["$scope", "$timeout", "actionsManager"]; - - _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(ActionsMenuCtrl, _PureCtrl); - - /* @ngInject */ - function ActionsMenuCtrl($scope, $timeout, actionsManager) { - var _this; - - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ActionsMenuCtrl); - - _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(ActionsMenuCtrl).call(this, $timeout)); - _this.$timeout = $timeout; - _this.actionsManager = actionsManager; - return _this; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ActionsMenuCtrl, [{ - key: "$onInit", - value: function $onInit() { - this.initProps({ - item: this.item - }); - this.loadExtensions(); - } - }, { - key: "loadExtensions", - value: function loadExtensions() { - var extensions, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, extension; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function loadExtensions$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - extensions = this.actionsManager.extensions.sort(function (a, b) { - return a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; - }); - _iteratorNormalCompletion = true; - _didIteratorError = false; - _iteratorError = undefined; - _context.prev = 4; - _iterator = extensions[Symbol.iterator](); - - case 6: - if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { - _context.next = 15; - break; - } - - extension = _step.value; - extension.loading = true; - _context.next = 11; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.actionsManager.loadExtensionInContextOfItem(extension, this.props.item)); - - case 11: - extension.loading = false; - - case 12: - _iteratorNormalCompletion = true; - _context.next = 6; - break; - - case 15: - _context.next = 21; - break; - - case 17: - _context.prev = 17; - _context.t0 = _context["catch"](4); - _didIteratorError = true; - _iteratorError = _context.t0; - - case 21: - _context.prev = 21; - _context.prev = 22; - - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - - case 24: - _context.prev = 24; - - if (!_didIteratorError) { - _context.next = 27; - break; - } - - throw _iteratorError; - - case 27: - return _context.finish(24); - - case 28: - return _context.finish(21); - - case 29: - this.setState({ - extensions: extensions - }); - - case 30: - case "end": - return _context.stop(); - } - } - }, null, this, [[4, 17, 21, 29], [22,, 24, 28]]); - } - }, { - key: "executeAction", - value: function executeAction(action, extension) { - var result; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function executeAction$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (!(action.verb === 'nested')) { - _context2.next = 3; - break; - } - - if (!action.subrows) { - action.subrows = this.subRowsForAction(action, extension); - } else { - action.subrows = null; - } - - return _context2.abrupt("return"); - - case 3: - action.running = true; - _context2.next = 6; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.actionsManager.executeAction(action, extension, this.props.item)); - - case 6: - result = _context2.sent; - - if (!action.error) { - _context2.next = 9; - break; - } - - return _context2.abrupt("return"); - - case 9: - action.running = false; - this.handleActionResult(action, result); - _context2.next = 13; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.actionsManager.loadExtensionInContextOfItem(extension, this.props.item)); - - case 13: - this.setState({ - extensions: this.state.extensions - }); - - case 14: - case "end": - return _context2.stop(); - } - } - }, null, this); - } - }, { - key: "handleActionResult", - value: function handleActionResult(action, result) { - switch (action.verb) { - case 'render': - { - var item = result.item; - this.actionsManager.presentRevisionPreviewModal(item.uuid, item.content); - } - } - } - }, { - key: "subRowsForAction", - value: function subRowsForAction(parentAction, extension) { - var _this2 = this; - - if (!parentAction.subactions) { - return null; - } - - return parentAction.subactions.map(function (subaction) { - return { - onClick: function onClick() { - _this2.executeAction(subaction, extension, parentAction); - }, - label: subaction.label, - subtitle: subaction.desc, - spinnerClass: subaction.running ? 'info' : null - }; - }); - } - }]); - - return ActionsMenuCtrl; -}(_Controllers__WEBPACK_IMPORTED_MODULE_7__["PureCtrl"]); - -var ActionsMenu = function ActionsMenu() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ActionsMenu); - - this.restrict = 'E'; - this.template = _directives_actions_menu_pug__WEBPACK_IMPORTED_MODULE_6___default.a; - this.replace = true; - this.controller = ActionsMenuCtrl; - this.controllerAs = 'self'; - this.bindToController = true; - this.scope = { - item: '=' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/componentModal.js": -/*!*******************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/componentModal.js ***! - \*******************************************************************/ -/*! exports provided: ComponentModalCtrl, ComponentModal */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentModalCtrl", function() { return ComponentModalCtrl; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentModal", function() { return ComponentModal; }); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _directives_component_modal_pug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! %/directives/component-modal.pug */ "./app/assets/templates/directives/component-modal.pug"); -/* harmony import */ var _directives_component_modal_pug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_directives_component_modal_pug__WEBPACK_IMPORTED_MODULE_2__); - - - -var ComponentModalCtrl = -/*#__PURE__*/ -function () { - ComponentModalCtrl.$inject = ["$scope", "$element"]; - - /* @ngInject */ - function ComponentModalCtrl($scope, $element) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ComponentModalCtrl); - - this.$element = $element; - this.$scope = $scope; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ComponentModalCtrl, [{ - key: "dismiss", - value: function dismiss(callback) { - this.$element.remove(); - this.$scope.$destroy(); - - if (this.onDismiss && this.onDismiss()) { - this.onDismiss()(this.component); - } - - callback && callback(); - } - }]); - - return ComponentModalCtrl; -}(); -var ComponentModal = function ComponentModal() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ComponentModal); - - this.restrict = 'E'; - this.template = _directives_component_modal_pug__WEBPACK_IMPORTED_MODULE_2___default.a; - this.controller = ComponentModalCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - show: '=', - component: '=', - callback: '=', - onDismiss: '&' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/componentView.js": -/*!******************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/componentView.js ***! - \******************************************************************/ -/*! exports provided: ComponentView */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentView", function() { return ComponentView; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _directives_component_view_pug__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! %/directives/component-view.pug */ "./app/assets/templates/directives/component-view.pug"); -/* harmony import */ var _directives_component_view_pug__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_directives_component_view_pug__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./app/assets/javascripts/utils.js"); - - - - - -/** - * The maximum amount of time we'll wait for a component - * to load before displaying error - */ - -var MAX_LOAD_THRESHOLD = 4000; -var VISIBILITY_CHANGE_LISTENER_KEY = 'visibilitychange'; - -var ComponentViewCtrl = -/*#__PURE__*/ -function () { - ComponentViewCtrl.$inject = ["$scope", "$rootScope", "$timeout", "componentManager", "desktopManager", "themeManager"]; - - /* @ngInject */ - function ComponentViewCtrl($scope, $rootScope, $timeout, componentManager, desktopManager, themeManager) { - var _this = this; - - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ComponentViewCtrl); - - this.$rootScope = $rootScope; - this.$timeout = $timeout; - this.themeManager = themeManager; - this.desktopManager = desktopManager; - this.componentManager = componentManager; - this.componentValid = true; - $scope.$watch('ctrl.component', function (component, prevComponent) { - _this.componentValueDidSet(component, prevComponent); - }); - $scope.$on('ext-reload-complete', function () { - _this.reloadStatus(false); - }); - $scope.$on('$destroy', function () { - _this.destroy(); - }); - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ComponentViewCtrl, [{ - key: "$onInit", - value: function $onInit() { - this.registerComponentHandlers(); - this.registerPackageUpdateObserver(); - } - }, { - key: "registerPackageUpdateObserver", - value: function registerPackageUpdateObserver() { - var _this2 = this; - - this.updateObserver = this.desktopManager.registerUpdateObserver(function (component) { - if (component === _this2.component && component.active) { - _this2.reloadComponent(); - } - }); - } - }, { - key: "registerComponentHandlers", - value: function registerComponentHandlers() { - var _this3 = this; - - this.themeHandlerIdentifier = 'component-view-' + Math.random(); - this.componentManager.registerHandler({ - identifier: this.themeHandlerIdentifier, - areas: ['themes'], - activationHandler: function activationHandler(component) { - _this3.reloadThemeStatus(); - } - }); - this.identifier = 'component-view-' + Math.random(); - this.componentManager.registerHandler({ - identifier: this.identifier, - areas: [this.component.area], - activationHandler: function activationHandler(component) { - if (component !== _this3.component) { - return; - } - - _this3.$timeout(function () { - _this3.handleActivation(); - }); - }, - actionHandler: function actionHandler(component, action, data) { - if (action === 'set-size') { - _this3.componentManager.handleSetSizeEvent(component, data); - } - } - }); - } - }, { - key: "onVisibilityChange", - value: function onVisibilityChange() { - if (document.visibilityState === 'hidden') { - return; - } - - if (this.issueLoading) { - this.reloadComponent(); - } - } - }, { - key: "reloadComponent", - value: function reloadComponent() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function reloadComponent$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - this.componentValid = false; - _context.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.componentManager.reloadComponent(this.component)); - - case 3: - this.reloadStatus(); - - case 4: - case "end": - return _context.stop(); - } - } - }, null, this); - } - }, { - key: "reloadStatus", - value: function reloadStatus() { - var _this4 = this; - - var doManualReload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - this.reloading = true; - var component = this.component; - var previouslyValid = this.componentValid; - var offlineRestricted = component.offlineOnly && !Object(_utils__WEBPACK_IMPORTED_MODULE_4__["isDesktopApplication"])(); - - var hasUrlError = function () { - if (Object(_utils__WEBPACK_IMPORTED_MODULE_4__["isDesktopApplication"])()) { - return !component.local_url && !component.hasValidHostedUrl(); - } else { - return !component.hasValidHostedUrl(); - } - }(); - - this.expired = component.valid_until && component.valid_until <= new Date(); - - if (!component.lockReadonly) { - component.readonly = this.expired; - } - - this.componentValid = !offlineRestricted && !hasUrlError; - - if (!this.componentValid) { - this.loading = false; - } - - if (offlineRestricted) { - this.error = 'offline-restricted'; - } else if (hasUrlError) { - this.error = 'url-missing'; - } else { - this.error = null; - } - - if (this.componentValid !== previouslyValid) { - if (this.componentValid) { - this.componentManager.reloadComponent(component, true); - } - } - - if (this.expired && doManualReload) { - this.$rootScope.$broadcast('reload-ext-dat'); - } - - this.reloadThemeStatus(); - this.$timeout(function () { - _this4.reloading = false; - }, 500); - } - }, { - key: "handleActivation", - value: function handleActivation() { - var _this5 = this; - - if (!this.component.active) { - return; - } - - var iframe = this.componentManager.iframeForComponent(this.component); - - if (!iframe) { - return; - } - - this.loading = true; - - if (this.loadTimeout) { - this.$timeout.cancel(this.loadTimeout); - } - - this.loadTimeout = this.$timeout(function () { - _this5.handleIframeLoadTimeout(); - }, MAX_LOAD_THRESHOLD); - - iframe.onload = function (event) { - _this5.handleIframeLoad(iframe); - }; - } - }, { - key: "handleIframeLoadTimeout", - value: function handleIframeLoadTimeout() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function handleIframeLoadTimeout$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (this.loading) { - this.loading = false; - this.issueLoading = true; - - if (!this.didAttemptReload) { - this.didAttemptReload = true; - this.reloadComponent(); - } else { - document.addEventListener(VISIBILITY_CHANGE_LISTENER_KEY, this.onVisibilityChange.bind(this)); - } - } - - case 1: - case "end": - return _context2.stop(); - } - } - }, null, this); - } - }, { - key: "handleIframeLoad", - value: function handleIframeLoad(iframe) { - var _this6 = this; - - var desktopError, avoidFlickerTimeout; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function handleIframeLoad$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - desktopError = false; - - if (Object(_utils__WEBPACK_IMPORTED_MODULE_4__["isDesktopApplication"])()) { - try { - /** Accessing iframe.contentWindow.origin only allowed in desktop app. */ - if (!iframe.contentWindow.origin || iframe.contentWindow.origin === 'null') { - desktopError = true; - } - } catch (e) {} - } - - this.$timeout.cancel(this.loadTimeout); - _context3.next = 5; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.componentManager.registerComponentWindow(this.component, iframe.contentWindow)); - - case 5: - avoidFlickerTimeout = 7; - this.$timeout(function () { - _this6.loading = false; - _this6.issueLoading = desktopError ? true : false; - _this6.onLoad && _this6.onLoad(_this6.component); - }, avoidFlickerTimeout); - - case 7: - case "end": - return _context3.stop(); - } - } - }, null, this); - } - }, { - key: "componentValueDidSet", - value: function componentValueDidSet(component, prevComponent) { - var dontSync = true; - - if (prevComponent && component !== prevComponent) { - this.componentManager.deactivateComponent(prevComponent, dontSync); - } - - if (component) { - this.componentManager.activateComponent(component, dontSync); - this.reloadStatus(); - } - } - }, { - key: "reloadThemeStatus", - value: function reloadThemeStatus() { - if (this.component.acceptsThemes()) { - return; - } - - if (this.themeManager.hasActiveTheme()) { - if (!this.dismissedNoThemesMessage) { - this.showNoThemesMessage = true; - } - } else { - this.showNoThemesMessage = false; - } - } - }, { - key: "dismissNoThemesMessage", - value: function dismissNoThemesMessage() { - this.showNoThemesMessage = false; - this.dismissedNoThemesMessage = true; - } - }, { - key: "disableActiveTheme", - value: function disableActiveTheme() { - this.themeManager.deactivateAllThemes(); - this.dismissNoThemesMessage(); - } - }, { - key: "getUrl", - value: function getUrl() { - var url = this.componentManager.urlForComponent(this.component); - this.component.runningLocally = url === this.component.local_url; - return url; - } - }, { - key: "destroy", - value: function destroy() { - this.componentManager.deregisterHandler(this.themeHandlerIdentifier); - this.componentManager.deregisterHandler(this.identifier); - - if (this.component && !this.manualDealloc) { - var dontSync = true; - this.componentManager.deactivateComponent(this.component, dontSync); - } - - this.desktopManager.deregisterUpdateObserver(this.updateObserver); - document.removeEventListener(VISIBILITY_CHANGE_LISTENER_KEY, this.onVisibilityChange.bind(this)); - } - }]); - - return ComponentViewCtrl; -}(); - -var ComponentView = function ComponentView() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ComponentView); - - this.restrict = 'E'; - this.template = _directives_component_view_pug__WEBPACK_IMPORTED_MODULE_3___default.a; - this.scope = { - component: '=', - onLoad: '=?', - manualDealloc: '=?' - }; - this.controller = ComponentViewCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/conflictResolutionModal.js": -/*!****************************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/conflictResolutionModal.js ***! - \****************************************************************************/ -/*! exports provided: ConflictResolutionModal */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConflictResolutionModal", function() { return ConflictResolutionModal; }); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _directives_conflict_resolution_modal_pug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! %/directives/conflict-resolution-modal.pug */ "./app/assets/templates/directives/conflict-resolution-modal.pug"); -/* harmony import */ var _directives_conflict_resolution_modal_pug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_directives_conflict_resolution_modal_pug__WEBPACK_IMPORTED_MODULE_2__); - - - - -var ConflictResolutionCtrl = -/*#__PURE__*/ -function () { - ConflictResolutionCtrl.$inject = ["$element", "alertManager", "archiveManager", "modelManager", "syncManager"]; - - /* @ngInject */ - function ConflictResolutionCtrl($element, alertManager, archiveManager, modelManager, syncManager) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ConflictResolutionCtrl); - - this.$element = $element; - this.alertManager = alertManager; - this.archiveManager = archiveManager; - this.modelManager = modelManager; - this.syncManager = syncManager; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ConflictResolutionCtrl, [{ - key: "$onInit", - value: function $onInit() { - this.contentType = this.item1.content_type; - this.item1Content = this.createContentString(this.item1); - this.item2Content = this.createContentString(this.item2); - } - }, { - key: "createContentString", - value: function createContentString(item) { - var data = Object.assign({ - created_at: item.created_at, - updated_at: item.updated_at - }, item.content); - return JSON.stringify(data, null, 2); - } - }, { - key: "keepItem1", - value: function keepItem1() { - var _this = this; - - this.alertManager.confirm({ - text: "Are you sure you want to delete the item on the right?", - destructive: true, - onConfirm: function onConfirm() { - _this.modelManager.setItemToBeDeleted(_this.item2); - - _this.syncManager.sync().then(function () { - _this.applyCallback(); - }); - - _this.dismiss(); - } - }); - } - }, { - key: "keepItem2", - value: function keepItem2() { - var _this2 = this; - - this.alertManager.confirm({ - text: "Are you sure you want to delete the item on the left?", - destructive: true, - onConfirm: function onConfirm() { - _this2.modelManager.setItemToBeDeleted(_this2.item1); - - _this2.syncManager.sync().then(function () { - _this2.applyCallback(); - }); - - _this2.dismiss(); - } - }); - } - }, { - key: "keepBoth", - value: function keepBoth() { - this.applyCallback(); - this.dismiss(); - } - }, { - key: "export", - value: function _export() { - this.archiveManager.downloadBackupOfItems([this.item1, this.item2], true); - } - }, { - key: "applyCallback", - value: function applyCallback() { - this.callback && this.callback(); - } - }, { - key: "dismiss", - value: function dismiss() { - this.$element.remove(); - } - }]); - - return ConflictResolutionCtrl; -}(); - -var ConflictResolutionModal = function ConflictResolutionModal() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ConflictResolutionModal); - - this.restrict = 'E'; - this.template = _directives_conflict_resolution_modal_pug__WEBPACK_IMPORTED_MODULE_2___default.a; - this.controller = ConflictResolutionCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - item1: '=', - item2: '=', - callback: '=' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/editorMenu.js": -/*!***************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/editorMenu.js ***! - \***************************************************************/ -/*! exports provided: EditorMenu */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EditorMenu", function() { return EditorMenu; }); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js"); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js"); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils */ "./app/assets/javascripts/utils.js"); -/* harmony import */ var _directives_editor_menu_pug__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! %/directives/editor-menu.pug */ "./app/assets/templates/directives/editor-menu.pug"); -/* harmony import */ var _directives_editor_menu_pug__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_directives_editor_menu_pug__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var _Controllers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Controllers */ "./app/assets/javascripts/controllers/index.js"); - - - - - - - - - -var EditorMenuCtrl = -/*#__PURE__*/ -function (_PureCtrl) { - EditorMenuCtrl.$inject = ["$timeout", "componentManager", "modelManager", "syncManager"]; - - _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(EditorMenuCtrl, _PureCtrl); - - /* @ngInject */ - function EditorMenuCtrl($timeout, componentManager, modelManager, syncManager) { - var _this; - - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, EditorMenuCtrl); - - _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(EditorMenuCtrl).call(this, $timeout)); - _this.$timeout = $timeout; - _this.componentManager = componentManager; - _this.modelManager = modelManager; - _this.syncManager = syncManager; - _this.state = { - isDesktop: Object(_utils__WEBPACK_IMPORTED_MODULE_5__["isDesktopApplication"])() - }; - return _this; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(EditorMenuCtrl, [{ - key: "$onInit", - value: function $onInit() { - var editors = this.componentManager.componentsForArea('editor-editor').sort(function (a, b) { - return a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; - }); - var defaultEditor = editors.filter(function (e) { - return e.isDefaultEditor(); - })[0]; - this.setState({ - editors: editors, - defaultEditor: defaultEditor - }); - } - }, { - key: "selectComponent", - value: function selectComponent(component) { - var _this2 = this; - - if (component) { - if (component.content.conflict_of) { - component.content.conflict_of = null; - this.modelManager.setItemDirty(component, true); - this.syncManager.sync(); - } - } - - this.$timeout(function () { - _this2.callback()(component); - }); - } - }, { - key: "toggleDefaultForEditor", - value: function toggleDefaultForEditor(editor) { - if (this.defaultEditor === editor) { - this.removeEditorDefault(editor); - } else { - this.makeEditorDefault(editor); - } - } - }, { - key: "offlineAvailableForComponent", - value: function offlineAvailableForComponent(component) { - return component.local_url && this.state.isDesktop; - } - }, { - key: "makeEditorDefault", - value: function makeEditorDefault(component) { - var currentDefault = this.componentManager.componentsForArea('editor-editor').filter(function (e) { - return e.isDefaultEditor(); - })[0]; - - if (currentDefault) { - currentDefault.setAppDataItem('defaultEditor', false); - this.modelManager.setItemDirty(currentDefault); - } - - component.setAppDataItem('defaultEditor', true); - this.modelManager.setItemDirty(component); - this.syncManager.sync(); - this.setState({ - defaultEditor: component - }); - } - }, { - key: "removeEditorDefault", - value: function removeEditorDefault(component) { - component.setAppDataItem('defaultEditor', false); - this.modelManager.setItemDirty(component); - this.syncManager.sync(); - this.setState({ - defaultEditor: null - }); - } - }, { - key: "shouldDisplayRunningLocallyLabel", - value: function shouldDisplayRunningLocallyLabel(component) { - if (!component.runningLocally) { - return false; - } - - if (component === this.selectedEditor) { - return true; - } else { - return false; - } - } - }]); - - return EditorMenuCtrl; -}(_Controllers__WEBPACK_IMPORTED_MODULE_7__["PureCtrl"]); - -var EditorMenu = function EditorMenu() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, EditorMenu); - - this.restrict = 'E'; - this.template = _directives_editor_menu_pug__WEBPACK_IMPORTED_MODULE_6___default.a; - this.controller = EditorMenuCtrl; - this.controllerAs = 'self'; - this.bindToController = true; - this.scope = { - callback: '&', - selectedEditor: '=', - currentItem: '=' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/index.js": -/*!**********************************************************!*\ - !*** ./app/assets/javascripts/directives/views/index.js ***! - \**********************************************************/ -/*! exports provided: AccountMenu, ActionsMenu, ComponentModal, ComponentView, ConflictResolutionModal, EditorMenu, InputModal, MenuRow, PanelResizer, PasswordWizard, PermissionsModal, PrivilegesAuthModal, PrivilegesManagementModal, RevisionPreviewModal, SessionHistoryMenu, SyncResolutionMenu */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _accountMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accountMenu */ "./app/assets/javascripts/directives/views/accountMenu.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AccountMenu", function() { return _accountMenu__WEBPACK_IMPORTED_MODULE_0__["AccountMenu"]; }); - -/* harmony import */ var _actionsMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actionsMenu */ "./app/assets/javascripts/directives/views/actionsMenu.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ActionsMenu", function() { return _actionsMenu__WEBPACK_IMPORTED_MODULE_1__["ActionsMenu"]; }); - -/* harmony import */ var _componentModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./componentModal */ "./app/assets/javascripts/directives/views/componentModal.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentModal", function() { return _componentModal__WEBPACK_IMPORTED_MODULE_2__["ComponentModal"]; }); - -/* harmony import */ var _componentView__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./componentView */ "./app/assets/javascripts/directives/views/componentView.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentView", function() { return _componentView__WEBPACK_IMPORTED_MODULE_3__["ComponentView"]; }); - -/* harmony import */ var _conflictResolutionModal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./conflictResolutionModal */ "./app/assets/javascripts/directives/views/conflictResolutionModal.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ConflictResolutionModal", function() { return _conflictResolutionModal__WEBPACK_IMPORTED_MODULE_4__["ConflictResolutionModal"]; }); - -/* harmony import */ var _editorMenu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./editorMenu */ "./app/assets/javascripts/directives/views/editorMenu.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EditorMenu", function() { return _editorMenu__WEBPACK_IMPORTED_MODULE_5__["EditorMenu"]; }); - -/* harmony import */ var _inputModal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./inputModal */ "./app/assets/javascripts/directives/views/inputModal.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "InputModal", function() { return _inputModal__WEBPACK_IMPORTED_MODULE_6__["InputModal"]; }); - -/* harmony import */ var _menuRow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./menuRow */ "./app/assets/javascripts/directives/views/menuRow.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MenuRow", function() { return _menuRow__WEBPACK_IMPORTED_MODULE_7__["MenuRow"]; }); - -/* harmony import */ var _panelResizer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./panelResizer */ "./app/assets/javascripts/directives/views/panelResizer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanelResizer", function() { return _panelResizer__WEBPACK_IMPORTED_MODULE_8__["PanelResizer"]; }); - -/* harmony import */ var _passwordWizard__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./passwordWizard */ "./app/assets/javascripts/directives/views/passwordWizard.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PasswordWizard", function() { return _passwordWizard__WEBPACK_IMPORTED_MODULE_9__["PasswordWizard"]; }); - -/* harmony import */ var _permissionsModal__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./permissionsModal */ "./app/assets/javascripts/directives/views/permissionsModal.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PermissionsModal", function() { return _permissionsModal__WEBPACK_IMPORTED_MODULE_10__["PermissionsModal"]; }); - -/* harmony import */ var _privilegesAuthModal__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./privilegesAuthModal */ "./app/assets/javascripts/directives/views/privilegesAuthModal.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PrivilegesAuthModal", function() { return _privilegesAuthModal__WEBPACK_IMPORTED_MODULE_11__["PrivilegesAuthModal"]; }); - -/* harmony import */ var _privilegesManagementModal__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./privilegesManagementModal */ "./app/assets/javascripts/directives/views/privilegesManagementModal.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PrivilegesManagementModal", function() { return _privilegesManagementModal__WEBPACK_IMPORTED_MODULE_12__["PrivilegesManagementModal"]; }); - -/* harmony import */ var _revisionPreviewModal__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./revisionPreviewModal */ "./app/assets/javascripts/directives/views/revisionPreviewModal.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RevisionPreviewModal", function() { return _revisionPreviewModal__WEBPACK_IMPORTED_MODULE_13__["RevisionPreviewModal"]; }); - -/* harmony import */ var _sessionHistoryMenu__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./sessionHistoryMenu */ "./app/assets/javascripts/directives/views/sessionHistoryMenu.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SessionHistoryMenu", function() { return _sessionHistoryMenu__WEBPACK_IMPORTED_MODULE_14__["SessionHistoryMenu"]; }); - -/* harmony import */ var _syncResolutionMenu__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./syncResolutionMenu */ "./app/assets/javascripts/directives/views/syncResolutionMenu.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncResolutionMenu", function() { return _syncResolutionMenu__WEBPACK_IMPORTED_MODULE_15__["SyncResolutionMenu"]; }); - - - - - - - - - - - - - - - - - - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/inputModal.js": -/*!***************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/inputModal.js ***! - \***************************************************************/ -/*! exports provided: InputModal */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputModal", function() { return InputModal; }); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _directives_input_modal_pug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! %/directives/input-modal.pug */ "./app/assets/templates/directives/input-modal.pug"); -/* harmony import */ var _directives_input_modal_pug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_directives_input_modal_pug__WEBPACK_IMPORTED_MODULE_2__); - - - - -var InputModalCtrl = -/*#__PURE__*/ -function () { - InputModalCtrl.$inject = ["$scope", "$element"]; - - /* @ngInject */ - function InputModalCtrl($scope, $element) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, InputModalCtrl); - - this.$element = $element; - this.formData = {}; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(InputModalCtrl, [{ - key: "dismiss", - value: function dismiss() { - this.$element.remove(); - this.$scope.$destroy(); - } - }, { - key: "submit", - value: function submit() { - this.callback()(this.formData.input); - this.dismiss(); - } - }]); - - return InputModalCtrl; -}(); - -var InputModal = function InputModal() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, InputModal); - - this.restrict = 'E'; - this.template = _directives_input_modal_pug__WEBPACK_IMPORTED_MODULE_2___default.a; - this.controller = InputModalCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - type: '=', - title: '=', - message: '=', - placeholder: '=', - callback: '&' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/menuRow.js": -/*!************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/menuRow.js ***! - \************************************************************/ -/*! exports provided: MenuRow */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MenuRow", function() { return MenuRow; }); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _directives_menu_row_pug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! %/directives/menu-row.pug */ "./app/assets/templates/directives/menu-row.pug"); -/* harmony import */ var _directives_menu_row_pug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_directives_menu_row_pug__WEBPACK_IMPORTED_MODULE_2__); - - - - -var MenuRowCtrl = -/*#__PURE__*/ -function () { - function MenuRowCtrl() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MenuRowCtrl); - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(MenuRowCtrl, [{ - key: "onClick", - value: function onClick($event) { - if (this.disabled) { - return; - } - - $event.stopPropagation(); - this.action(); - } - }, { - key: "clickAccessoryButton", - value: function clickAccessoryButton($event) { - if (this.disabled) { - return; - } - - $event.stopPropagation(); - this.buttonAction(); - } - }]); - - return MenuRowCtrl; -}(); - -var MenuRow = function MenuRow() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MenuRow); - - this.restrict = 'E'; - this.transclude = true; - this.template = _directives_menu_row_pug__WEBPACK_IMPORTED_MODULE_2___default.a; - this.controller = MenuRowCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - action: '&', - buttonAction: '&', - buttonClass: '=', - buttonText: '=', - desc: '=', - disabled: '=', - circle: '=', - circleAlign: '=', - faded: '=', - hasButton: '=', - label: '=', - spinnerClass: '=', - stylekitClass: '=', - subRows: '=', - subtitle: '=' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/panelResizer.js": -/*!*****************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/panelResizer.js ***! - \*****************************************************************/ -/*! exports provided: PanelResizer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PanelResizer", function() { return PanelResizer; }); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ "./node_modules/angular/index.js"); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _directives_panel_resizer_pug__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! %/directives/panel-resizer.pug */ "./app/assets/templates/directives/panel-resizer.pug"); -/* harmony import */ var _directives_panel_resizer_pug__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_directives_panel_resizer_pug__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils */ "./app/assets/javascripts/utils.js"); - - - - - -var PANEL_SIDE_RIGHT = 'right'; -var PANEL_SIDE_LEFT = 'left'; -var MOUSE_EVENT_MOVE = 'mousemove'; -var MOUSE_EVENT_DOWN = 'mousedown'; -var MOUSE_EVENT_UP = 'mouseup'; -var WINDOW_EVENT_RESIZE = 'resize'; -var PANEL_CSS_CLASS_HOVERABLE = 'hoverable'; -var PANEL_CSS_CLASS_ALWAYS_VISIBLE = 'always-visible'; -var PANEL_CSS_CLASS_DRAGGING = 'dragging'; -var PANEL_CSS_CLASS_NO_SELECTION = 'no-selection'; -var PANEL_CSS_CLASS_COLLAPSED = 'collapsed'; -var PANEL_CSS_CLASS_ANIMATE_OPACITY = 'animate-opacity'; - -var PanelResizerCtrl = -/*#__PURE__*/ -function () { - PanelResizerCtrl.$inject = ["$compile", "$element", "$scope", "$timeout"]; - - /* @ngInject */ - function PanelResizerCtrl($compile, $element, $scope, $timeout) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, PanelResizerCtrl); - - this.$compile = $compile; - this.$element = $element; - this.$scope = $scope; - this.$timeout = $timeout; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(PanelResizerCtrl, [{ - key: "$onInit", - value: function $onInit() { - this.configureControl(); - this.configureDefaults(); - this.addDoubleClickHandler(); - this.reloadDefaultValues(); - this.addMouseDownListener(); - this.addMouseMoveListener(); - this.addMouseUpListener(); - } - }, { - key: "configureControl", - value: function configureControl() { - var _this = this; - - this.control.setWidth = function (value) { - _this.setWidth(value, true); - }; - - this.control.setLeft = function (value) { - _this.setLeft(value); - }; - - this.control.flash = function () { - _this.flash(); - }; - - this.control.isCollapsed = function () { - return _this.isCollapsed(); - }; - } - }, { - key: "configureDefaults", - value: function configureDefaults() { - this.panel = document.getElementById(this.panelId); - - if (!this.panel) { - console.error('Panel not found for', this.panelId); - } - - this.resizerColumn = this.$element[0]; - this.currentMinWidth = this.minWidth || this.resizerColumn.offsetWidth; - this.pressed = false; - this.startWidth = this.panel.scrollWidth; - this.lastDownX = 0; - this.collapsed = false; - this.lastWidth = this.startWidth; - this.startLeft = this.panel.offsetLeft; - this.lastLeft = this.startLeft; - this.appFrame = null; - this.widthBeforeLastDblClick = 0; - - if (this.property === PANEL_SIDE_RIGHT) { - this.configureRightPanel(); - } - - if (this.alwaysVisible) { - this.resizerColumn.classList.add(PANEL_CSS_CLASS_ALWAYS_VISIBLE); - } - - if (this.hoverable) { - this.resizerColumn.classList.add(PANEL_CSS_CLASS_HOVERABLE); - } - } - }, { - key: "configureRightPanel", - value: function configureRightPanel() { - var _this2 = this; - - var handleResize = Object(_utils__WEBPACK_IMPORTED_MODULE_4__["debounce"])(function (event) { - _this2.reloadDefaultValues(); - - _this2.handleWidthEvent(); - - _this2.$timeout(function () { - _this2.finishSettingWidth(); - }); - }, 250); - window.addEventListener(WINDOW_EVENT_RESIZE, handleResize); - this.$scope.$on('$destroy', function () { - window.removeEventListener(WINDOW_EVENT_RESIZE, handleResize); - }); - } - }, { - key: "getParentRect", - value: function getParentRect() { - return this.panel.parentNode.getBoundingClientRect(); - } - }, { - key: "reloadDefaultValues", - value: function reloadDefaultValues() { - this.startWidth = this.isAtMaxWidth() ? this.getParentRect().width : this.panel.scrollWidth; - this.lastWidth = this.startWidth; - this.appFrame = document.getElementById('app').getBoundingClientRect(); - } - }, { - key: "addDoubleClickHandler", - value: function addDoubleClickHandler() { - var _this3 = this; - - this.resizerColumn.ondblclick = function () { - _this3.$timeout(function () { - var preClickCollapseState = _this3.isCollapsed(); - - if (preClickCollapseState) { - _this3.setWidth(_this3.widthBeforeLastDblClick || _this3.defaultWidth); - } else { - _this3.widthBeforeLastDblClick = _this3.lastWidth; - - _this3.setWidth(_this3.currentMinWidth); - } - - _this3.finishSettingWidth(); - - var newCollapseState = !preClickCollapseState; - - _this3.onResizeFinish()(_this3.lastWidth, _this3.lastLeft, _this3.isAtMaxWidth(), newCollapseState); - }); - }; - } - }, { - key: "addMouseDownListener", - value: function addMouseDownListener() { - var _this4 = this; - - this.resizerColumn.addEventListener(MOUSE_EVENT_DOWN, function (event) { - _this4.addInvisibleOverlay(); - - _this4.pressed = true; - _this4.lastDownX = event.clientX; - _this4.startWidth = _this4.panel.scrollWidth; - _this4.startLeft = _this4.panel.offsetLeft; - - _this4.panel.classList.add(PANEL_CSS_CLASS_NO_SELECTION); - - if (_this4.hoverable) { - _this4.resizerColumn.classList.add(PANEL_CSS_CLASS_DRAGGING); - } - }); - } - }, { - key: "addMouseMoveListener", - value: function addMouseMoveListener() { - var _this5 = this; - - document.addEventListener(MOUSE_EVENT_MOVE, function (event) { - if (!_this5.pressed) { - return; - } - - event.preventDefault(); - - if (_this5.property && _this5.property === PANEL_SIDE_LEFT) { - _this5.handleLeftEvent(event); - } else { - _this5.handleWidthEvent(event); - } - }); - } - }, { - key: "handleWidthEvent", - value: function handleWidthEvent(event) { - var x; - - if (event) { - x = event.clientX; - } else { - /** Coming from resize event */ - x = 0; - this.lastDownX = 0; - } - - var deltaX = x - this.lastDownX; - var newWidth = this.startWidth + deltaX; - this.setWidth(newWidth, false); - - if (this.onResize()) { - this.onResize()(this.lastWidth, this.panel); - } - } - }, { - key: "handleLeftEvent", - value: function handleLeftEvent(event) { - var panelRect = this.panel.getBoundingClientRect(); - var x = event.clientX || panelRect.x; - var deltaX = x - this.lastDownX; - var newLeft = this.startLeft + deltaX; - - if (newLeft < 0) { - newLeft = 0; - deltaX = -this.startLeft; - } - - var parentRect = this.getParentRect(); - var newWidth = this.startWidth - deltaX; - - if (newWidth < this.currentMinWidth) { - newWidth = this.currentMinWidth; - } - - if (newWidth > parentRect.width) { - newWidth = parentRect.width; - } - - if (newLeft + newWidth > parentRect.width) { - newLeft = parentRect.width - newWidth; - } - - this.setLeft(newLeft, false); - this.setWidth(newWidth, false); - } - }, { - key: "addMouseUpListener", - value: function addMouseUpListener() { - var _this6 = this; - - document.addEventListener(MOUSE_EVENT_UP, function (event) { - _this6.removeInvisibleOverlay(); - - if (_this6.pressed) { - _this6.pressed = false; - - _this6.resizerColumn.classList.remove(PANEL_CSS_CLASS_DRAGGING); - - _this6.panel.classList.remove(PANEL_CSS_CLASS_NO_SELECTION); - - var isMaxWidth = _this6.isAtMaxWidth(); - - if (_this6.onResizeFinish) { - _this6.onResizeFinish()(_this6.lastWidth, _this6.lastLeft, isMaxWidth, _this6.isCollapsed()); - } - - _this6.finishSettingWidth(); - } - }); - } - }, { - key: "isAtMaxWidth", - value: function isAtMaxWidth() { - return Math.round(this.lastWidth + this.lastLeft) === Math.round(this.getParentRect().width); - } - }, { - key: "isCollapsed", - value: function isCollapsed() { - return this.lastWidth <= this.currentMinWidth; - } - }, { - key: "setWidth", - value: function setWidth(width, finish) { - if (width < this.currentMinWidth) { - width = this.currentMinWidth; - } - - var parentRect = this.getParentRect(); - - if (width > parentRect.width) { - width = parentRect.width; - } - - var maxWidth = this.appFrame.width - this.panel.getBoundingClientRect().x; - - if (width > maxWidth) { - width = maxWidth; - } - - if (Math.round(width + this.lastLeft) === Math.round(parentRect.width)) { - this.panel.style.width = "calc(100% - ".concat(this.lastLeft, "px)"); - this.panel.style.flexBasis = "calc(100% - ".concat(this.lastLeft, "px)"); - } else { - this.panel.style.flexBasis = width + 'px'; - this.panel.style.width = width + 'px'; - } - - this.lastWidth = width; - - if (finish) { - this.finishSettingWidth(); - } - } - }, { - key: "setLeft", - value: function setLeft(left) { - this.panel.style.left = left + 'px'; - this.lastLeft = left; - } - }, { - key: "finishSettingWidth", - value: function finishSettingWidth() { - if (!this.collapsable) { - return; - } - - this.collapsed = this.isCollapsed(); - - if (this.collapsed) { - this.resizerColumn.classList.add(PANEL_CSS_CLASS_COLLAPSED); - } else { - this.resizerColumn.classList.remove(PANEL_CSS_CLASS_COLLAPSED); - } - } - /** - * If an iframe is displayed adjacent to our panel, and the mouse exits over the iframe, - * document[onmouseup] is not triggered because the document is no longer the same over - * the iframe. We add an invisible overlay while resizing so that the mouse context - * remains in our main document. - */ - - }, { - key: "addInvisibleOverlay", - value: function addInvisibleOverlay() { - if (this.overlay) { - return; - } - - this.overlay = this.$compile("
")(this.$scope); - angular__WEBPACK_IMPORTED_MODULE_2___default.a.element(document.body).prepend(this.overlay); - } - }, { - key: "removeInvisibleOverlay", - value: function removeInvisibleOverlay() { - if (this.overlay) { - this.overlay.remove(); - this.overlay = null; - } - } - }, { - key: "flash", - value: function flash() { - var _this7 = this; - - var FLASH_DURATION = 3000; - this.resizerColumn.classList.add(PANEL_CSS_CLASS_ANIMATE_OPACITY); - this.$timeout(function () { - _this7.resizerColumn.classList.remove(PANEL_CSS_CLASS_ANIMATE_OPACITY); - }, FLASH_DURATION); - } - }]); - - return PanelResizerCtrl; -}(); - -var PanelResizer = function PanelResizer() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, PanelResizer); - - this.restrict = 'E'; - this.template = _directives_panel_resizer_pug__WEBPACK_IMPORTED_MODULE_3___default.a; - this.controller = PanelResizerCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - alwaysVisible: '=', - collapsable: '=', - control: '=', - defaultWidth: '=', - hoverable: '=', - index: '=', - minWidth: '=', - onResize: '&', - onResizeFinish: '&', - panelId: '=', - property: '=' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/passwordWizard.js": -/*!*******************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/passwordWizard.js ***! - \*******************************************************************/ -/*! exports provided: PasswordWizard */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PasswordWizard", function() { return PasswordWizard; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! snjs */ "./node_modules/snjs/dist/snjs.js"); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(snjs__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _directives_password_wizard_pug__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! %/directives/password-wizard.pug */ "./app/assets/templates/directives/password-wizard.pug"); -/* harmony import */ var _directives_password_wizard_pug__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_directives_password_wizard_pug__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/strings */ "./app/assets/javascripts/strings.js"); - - - - - - -var DEFAULT_CONTINUE_TITLE = "Continue"; -var Steps = { - IntroStep: 0, - BackupStep: 1, - SignoutStep: 2, - PasswordStep: 3, - SyncStep: 4, - FinishStep: 5 -}; - -var PasswordWizardCtrl = -/*#__PURE__*/ -function () { - PasswordWizardCtrl.$inject = ["$element", "$scope", "$timeout", "alertManager", "archiveManager", "authManager", "modelManager", "syncManager"]; - - /* @ngInject */ - function PasswordWizardCtrl($element, $scope, $timeout, alertManager, archiveManager, authManager, modelManager, syncManager) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, PasswordWizardCtrl); - - this.$element = $element; - this.$timeout = $timeout; - this.$scope = $scope; - this.alertManager = alertManager; - this.archiveManager = archiveManager; - this.authManager = authManager; - this.modelManager = modelManager; - this.syncManager = syncManager; - this.registerWindowUnloadStopper(); - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(PasswordWizardCtrl, [{ - key: "$onInit", - value: function $onInit() { - this.syncStatus = this.syncManager.syncStatus; - this.formData = {}; - this.configureDefaults(); - } - }, { - key: "configureDefaults", - value: function configureDefaults() { - if (this.type === 'change-pw') { - this.title = "Change Password"; - this.changePassword = true; - } else if (this.type === 'upgrade-security') { - this.title = "Security Update"; - this.securityUpdate = true; - } - - this.continueTitle = DEFAULT_CONTINUE_TITLE; - this.step = Steps.IntroStep; - } - /** Confirms with user before closing tab */ - - }, { - key: "registerWindowUnloadStopper", - value: function registerWindowUnloadStopper() { - window.onbeforeunload = function (e) { - return true; - }; - - this.$scope.$on("$destroy", function () { - window.onbeforeunload = null; - }); - } - }, { - key: "titleForStep", - value: function titleForStep(step) { - switch (step) { - case Steps.BackupStep: - return "Download a backup of your data"; - - case Steps.SignoutStep: - return "Sign out of all your devices"; - - case Steps.PasswordStep: - return this.changePassword ? "Password information" : "Enter your current password"; - - case Steps.SyncStep: - return "Encrypt and sync data with new keys"; - - case Steps.FinishStep: - return "Sign back in to your devices"; - - default: - return null; - } - } - }, { - key: "nextStep", - value: function nextStep() { - var _this = this; - - var next, preprocessor; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function nextStep$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!(this.lockContinue || this.isContinuing)) { - _context.next = 2; - break; - } - - return _context.abrupt("return"); - - case 2: - this.isContinuing = true; - - if (!(this.step === Steps.FinishStep)) { - _context.next = 6; - break; - } - - this.dismiss(); - return _context.abrupt("return"); - - case 6: - next = function next() { - _this.step++; - - _this.initializeStep(_this.step); - - _this.isContinuing = false; - }; - - preprocessor = this.preprocessorForStep(this.step); - - if (!preprocessor) { - _context.next = 13; - break; - } - - _context.next = 11; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(preprocessor().then(next).catch(function () { - _this.isContinuing = false; - })); - - case 11: - _context.next = 14; - break; - - case 13: - next(); - - case 14: - case "end": - return _context.stop(); - } - } - }, null, this); - } - }, { - key: "preprocessorForStep", - value: function preprocessorForStep(step) { - var _this2 = this; - - if (step === Steps.PasswordStep) { - return function _callee() { - var success; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function _callee$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _this2.showSpinner = true; - _this2.continueTitle = "Generating Keys..."; - _context2.next = 4; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this2.validateCurrentPassword()); - - case 4: - success = _context2.sent; - _this2.showSpinner = false; - _this2.continueTitle = DEFAULT_CONTINUE_TITLE; - return _context2.abrupt("return", success); - - case 8: - case "end": - return _context2.stop(); - } - } - }); - }; - } - } - }, { - key: "initializeStep", - value: function initializeStep(step) { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function initializeStep$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - if (!(step === Steps.SyncStep)) { - _context3.next = 5; - break; - } - - _context3.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.initializeSyncingStep()); - - case 3: - _context3.next = 6; - break; - - case 5: - if (step === Steps.FinishStep) { - this.continueTitle = "Finish"; - } - - case 6: - case "end": - return _context3.stop(); - } - } - }, null, this); - } - }, { - key: "initializeSyncingStep", - value: function initializeSyncingStep() { - var passwordSuccess, syncSuccess; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function initializeSyncingStep$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - this.lockContinue = true; - this.formData.status = "Processing encryption keys..."; - this.formData.processing = true; - _context4.next = 5; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.processPasswordChange()); - - case 5: - passwordSuccess = _context4.sent; - this.formData.statusError = !passwordSuccess; - this.formData.processing = passwordSuccess; - - if (passwordSuccess) { - _context4.next = 11; - break; - } - - this.formData.status = "Unable to process your password. Please try again."; - return _context4.abrupt("return"); - - case 11: - this.formData.status = "Encrypting and syncing data with new keys..."; - _context4.next = 14; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.resyncData()); - - case 14: - syncSuccess = _context4.sent; - this.formData.statusError = !syncSuccess; - this.formData.processing = !syncSuccess; - - if (syncSuccess) { - this.lockContinue = false; - - if (this.changePassword) { - this.formData.status = "Successfully changed password and synced all items."; - } else if (this.securityUpdate) { - this.formData.status = "Successfully performed security update and synced all items."; - } - } else { - this.formData.status = _strings__WEBPACK_IMPORTED_MODULE_5__["STRING_FAILED_PASSWORD_CHANGE"]; - } - - case 18: - case "end": - return _context4.stop(); - } - } - }, null, this); - } - }, { - key: "validateCurrentPassword", - value: function validateCurrentPassword() { - var currentPassword, newPass, authParams, password, keys, success; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function validateCurrentPassword$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - currentPassword = this.formData.currentPassword; - newPass = this.securityUpdate ? currentPassword : this.formData.newPassword; - - if (!(!currentPassword || currentPassword.length === 0)) { - _context5.next = 5; - break; - } - - this.alertManager.alert({ - text: "Please enter your current password." - }); - return _context5.abrupt("return", false); - - case 5: - if (!this.changePassword) { - _context5.next = 13; - break; - } - - if (!(!newPass || newPass.length === 0)) { - _context5.next = 9; - break; - } - - this.alertManager.alert({ - text: "Please enter a new password." - }); - return _context5.abrupt("return", false); - - case 9: - if (!(newPass !== this.formData.newPasswordConfirmation)) { - _context5.next = 13; - break; - } - - this.alertManager.alert({ - text: "Your new password does not match its confirmation." - }); - this.formData.status = null; - return _context5.abrupt("return", false); - - case 13: - if (this.authManager.user.email) { - _context5.next = 17; - break; - } - - this.alertManager.alert({ - text: "We don't have your email stored. Please log out then log back in to fix this issue." - }); - this.formData.status = null; - return _context5.abrupt("return", false); - - case 17: - _context5.next = 19; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.authManager.getAuthParams()); - - case 19: - authParams = _context5.sent; - password = this.formData.currentPassword; - _context5.next = 23; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(snjs__WEBPACK_IMPORTED_MODULE_3__["protocolManager"].computeEncryptionKeysForUser(password, authParams)); - - case 23: - keys = _context5.sent; - _context5.t0 = keys.mk; - _context5.next = 27; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.authManager.keys()); - - case 27: - _context5.t1 = _context5.sent.mk; - success = _context5.t0 === _context5.t1; - - if (success) { - this.currentServerPw = keys.pw; - } else { - this.alertManager.alert({ - text: "The current password you entered is not correct. Please try again." - }); - } - - return _context5.abrupt("return", success); - - case 31: - case "end": - return _context5.stop(); - } - } - }, null, this); - } - }, { - key: "resyncData", - value: function resyncData() { - var response; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function resyncData$(_context6) { - while (1) { - switch (_context6.prev = _context6.next) { - case 0: - _context6.next = 2; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.modelManager.setAllItemsDirty()); - - case 2: - _context6.next = 4; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.syncManager.sync()); - - case 4: - response = _context6.sent; - - if (!(!response || response.error)) { - _context6.next = 10; - break; - } - - this.alertManager.alert({ - text: _strings__WEBPACK_IMPORTED_MODULE_5__["STRING_FAILED_PASSWORD_CHANGE"] - }); - return _context6.abrupt("return", false); - - case 10: - return _context6.abrupt("return", true); - - case 11: - case "end": - return _context6.stop(); - } - } - }, null, this); - } - }, { - key: "processPasswordChange", - value: function processPasswordChange() { - var newUserPassword, currentServerPw, results, newKeys, newAuthParams, response; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function processPasswordChange$(_context7) { - while (1) { - switch (_context7.prev = _context7.next) { - case 0: - newUserPassword = this.securityUpdate ? this.formData.currentPassword : this.formData.newPassword; - currentServerPw = this.currentServerPw; - _context7.next = 4; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(snjs__WEBPACK_IMPORTED_MODULE_3__["protocolManager"].generateInitialKeysAndAuthParamsForUser(this.authManager.user.email, newUserPassword)); - - case 4: - results = _context7.sent; - newKeys = results.keys; - newAuthParams = results.authParams; - /** - * Perform a sync beforehand to pull in any last minutes changes before we change - * the encryption key (and thus cant decrypt new changes). - */ - - _context7.next = 9; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.syncManager.sync()); - - case 9: - _context7.t0 = _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a; - _context7.t1 = this.authManager; - _context7.next = 13; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.syncManager.getServerURL()); - - case 13: - _context7.t2 = _context7.sent; - _context7.t3 = this.authManager.user.email; - _context7.t4 = currentServerPw; - _context7.t5 = newKeys; - _context7.t6 = newAuthParams; - _context7.t7 = _context7.t1.changePassword.call(_context7.t1, _context7.t2, _context7.t3, _context7.t4, _context7.t5, _context7.t6); - _context7.next = 21; - return _context7.t0.awrap.call(_context7.t0, _context7.t7); - - case 21: - response = _context7.sent; - - if (!response.error) { - _context7.next = 27; - break; - } - - this.alertManager.alert({ - text: response.error.message ? response.error.message : "There was an error changing your password. Please try again." - }); - return _context7.abrupt("return", false); - - case 27: - return _context7.abrupt("return", true); - - case 28: - case "end": - return _context7.stop(); - } - } - }, null, this); - } - }, { - key: "downloadBackup", - value: function downloadBackup(encrypted) { - this.archiveManager.downloadBackup(encrypted); - } - }, { - key: "dismiss", - value: function dismiss() { - if (this.lockContinue) { - this.alertManager.alert({ - text: "Cannot close window until pending tasks are complete." - }); - } else { - this.$element.remove(); - this.$scope.$destroy(); - } - } - }]); - - return PasswordWizardCtrl; -}(); - -var PasswordWizard = function PasswordWizard() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, PasswordWizard); - - this.restrict = 'E'; - this.template = _directives_password_wizard_pug__WEBPACK_IMPORTED_MODULE_4___default.a; - this.controller = PasswordWizardCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - type: '=' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/permissionsModal.js": -/*!*********************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/permissionsModal.js ***! - \*********************************************************************/ -/*! exports provided: PermissionsModal */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PermissionsModal", function() { return PermissionsModal; }); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _directives_permissions_modal_pug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! %/directives/permissions-modal.pug */ "./app/assets/templates/directives/permissions-modal.pug"); -/* harmony import */ var _directives_permissions_modal_pug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_directives_permissions_modal_pug__WEBPACK_IMPORTED_MODULE_2__); - - - - -var PermissionsModalCtrl = -/*#__PURE__*/ -function () { - PermissionsModalCtrl.$inject = ["$element"]; - - /* @ngInject */ - function PermissionsModalCtrl($element) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, PermissionsModalCtrl); - - this.$element = $element; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(PermissionsModalCtrl, [{ - key: "dismiss", - value: function dismiss() { - this.$element.remove(); - } - }, { - key: "accept", - value: function accept() { - this.callback(true); - this.dismiss(); - } - }, { - key: "deny", - value: function deny() { - this.callback(false); - this.dismiss(); - } - }]); - - return PermissionsModalCtrl; -}(); - -var PermissionsModal = function PermissionsModal() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, PermissionsModal); - - this.restrict = 'E'; - this.template = _directives_permissions_modal_pug__WEBPACK_IMPORTED_MODULE_2___default.a; - this.controller = PermissionsModalCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - show: '=', - component: '=', - permissionsString: '=', - callback: '=' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/privilegesAuthModal.js": -/*!************************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/privilegesAuthModal.js ***! - \************************************************************************/ -/*! exports provided: PrivilegesAuthModal */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PrivilegesAuthModal", function() { return PrivilegesAuthModal; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _directives_privileges_auth_modal_pug__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! %/directives/privileges-auth-modal.pug */ "./app/assets/templates/directives/privileges-auth-modal.pug"); -/* harmony import */ var _directives_privileges_auth_modal_pug__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_directives_privileges_auth_modal_pug__WEBPACK_IMPORTED_MODULE_3__); - - - - - -var PrivilegesAuthModalCtrl = -/*#__PURE__*/ -function () { - PrivilegesAuthModalCtrl.$inject = ["$element", "$timeout", "privilegesManager"]; - - /* @ngInject */ - function PrivilegesAuthModalCtrl($element, $timeout, privilegesManager) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, PrivilegesAuthModalCtrl); - - this.$element = $element; - this.$timeout = $timeout; - this.privilegesManager = privilegesManager; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(PrivilegesAuthModalCtrl, [{ - key: "$onInit", - value: function $onInit() { - var _this = this; - - this.authParameters = {}; - this.sessionLengthOptions = this.privilegesManager.getSessionLengthOptions(); - this.privilegesManager.getSelectedSessionLength().then(function (length) { - _this.$timeout(function () { - _this.selectedSessionLength = length; - }); - }); - this.privilegesManager.netCredentialsForAction(this.action).then(function (credentials) { - _this.$timeout(function () { - _this.requiredCredentials = credentials.sort(); - }); - }); - } - }, { - key: "selectSessionLength", - value: function selectSessionLength(length) { - this.selectedSessionLength = length; - } - }, { - key: "promptForCredential", - value: function promptForCredential(credential) { - return this.privilegesManager.displayInfoForCredential(credential).prompt; - } - }, { - key: "cancel", - value: function cancel() { - this.dismiss(); - this.onCancel && this.onCancel(); - } - }, { - key: "isCredentialInFailureState", - value: function isCredentialInFailureState(credential) { - if (!this.failedCredentials) { - return false; - } - - return this.failedCredentials.find(function (candidate) { - return candidate === credential; - }) != null; - } - }, { - key: "validate", - value: function validate() { - var failed = []; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = this.requiredCredentials[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var cred = _step.value; - var value = this.authParameters[cred]; - - if (!value || value.length === 0) { - failed.push(cred); - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - this.failedCredentials = failed; - return failed.length === 0; - } - }, { - key: "submit", - value: function submit() { - var _this2 = this; - - var result; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function submit$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (this.validate()) { - _context.next = 2; - break; - } - - return _context.abrupt("return"); - - case 2: - _context.next = 4; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.privilegesManager.authenticateAction(this.action, this.authParameters)); - - case 4: - result = _context.sent; - this.$timeout(function () { - if (result.success) { - _this2.privilegesManager.setSessionLength(_this2.selectedSessionLength); - - _this2.onSuccess(); - - _this2.dismiss(); - } else { - _this2.failedCredentials = result.failedCredentials; - } - }); - - case 6: - case "end": - return _context.stop(); - } - } - }, null, this); - } - }, { - key: "dismiss", - value: function dismiss() { - this.$element.remove(); - } - }]); - - return PrivilegesAuthModalCtrl; -}(); - -var PrivilegesAuthModal = function PrivilegesAuthModal() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, PrivilegesAuthModal); - - this.restrict = 'E'; - this.template = _directives_privileges_auth_modal_pug__WEBPACK_IMPORTED_MODULE_3___default.a; - this.controller = PrivilegesAuthModalCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - action: '=', - onSuccess: '=', - onCancel: '=' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/privilegesManagementModal.js": -/*!******************************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/privilegesManagementModal.js ***! - \******************************************************************************/ -/*! exports provided: PrivilegesManagementModal */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PrivilegesManagementModal", function() { return PrivilegesManagementModal; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _services_privilegesManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/services/privilegesManager */ "./app/assets/javascripts/services/privilegesManager.js"); -/* harmony import */ var _directives_privileges_management_modal_pug__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! %/directives/privileges-management-modal.pug */ "./app/assets/templates/directives/privileges-management-modal.pug"); -/* harmony import */ var _directives_privileges_management_modal_pug__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_directives_privileges_management_modal_pug__WEBPACK_IMPORTED_MODULE_4__); - - - - - - -var PrivilegesManagementModalCtrl = -/*#__PURE__*/ -function () { - PrivilegesManagementModalCtrl.$inject = ["$timeout", "$element", "privilegesManager", "authManager", "passcodeManager"]; - - /* @ngInject */ - function PrivilegesManagementModalCtrl($timeout, $element, privilegesManager, authManager, passcodeManager) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, PrivilegesManagementModalCtrl); - - this.$element = $element; - this.$timeout = $timeout; - this.privilegesManager = privilegesManager; - this.hasPasscode = passcodeManager.hasPasscode(); - this.hasAccount = !authManager.offline(); - this.reloadPrivileges(); - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(PrivilegesManagementModalCtrl, [{ - key: "displayInfoForCredential", - value: function displayInfoForCredential(credential) { - var info = this.privilegesManager.displayInfoForCredential(credential); - - if (credential === _services_privilegesManager__WEBPACK_IMPORTED_MODULE_3__["PrivilegesManager"].CredentialLocalPasscode) { - info.availability = this.hasPasscode; - } else if (credential === _services_privilegesManager__WEBPACK_IMPORTED_MODULE_3__["PrivilegesManager"].CredentialAccountPassword) { - info.availability = this.hasAccount; - } else { - info.availability = true; - } - - return info; - } - }, { - key: "displayInfoForAction", - value: function displayInfoForAction(action) { - return this.privilegesManager.displayInfoForAction(action).label; - } - }, { - key: "isCredentialRequiredForAction", - value: function isCredentialRequiredForAction(action, credential) { - if (!this.privileges) { - return false; - } - - return this.privileges.isCredentialRequiredForAction(action, credential); - } - }, { - key: "clearSession", - value: function clearSession() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function clearSession$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.privilegesManager.clearSession()); - - case 2: - this.reloadPrivileges(); - - case 3: - case "end": - return _context.stop(); - } - } - }, null, this); - } - }, { - key: "reloadPrivileges", - value: function reloadPrivileges() { - var _this = this; - - var sessionEndDate, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, cred, privs; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function reloadPrivileges$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - this.availableActions = this.privilegesManager.getAvailableActions(); - this.availableCredentials = this.privilegesManager.getAvailableCredentials(); - _context2.next = 4; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.privilegesManager.getSessionExpirey()); - - case 4: - sessionEndDate = _context2.sent; - this.sessionExpirey = sessionEndDate.toLocaleString(); - this.sessionExpired = new Date() >= sessionEndDate; - this.credentialDisplayInfo = {}; - _iteratorNormalCompletion = true; - _didIteratorError = false; - _iteratorError = undefined; - _context2.prev = 11; - - for (_iterator = this.availableCredentials[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - cred = _step.value; - this.credentialDisplayInfo[cred] = this.displayInfoForCredential(cred); - } - - _context2.next = 19; - break; - - case 15: - _context2.prev = 15; - _context2.t0 = _context2["catch"](11); - _didIteratorError = true; - _iteratorError = _context2.t0; - - case 19: - _context2.prev = 19; - _context2.prev = 20; - - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - - case 22: - _context2.prev = 22; - - if (!_didIteratorError) { - _context2.next = 25; - break; - } - - throw _iteratorError; - - case 25: - return _context2.finish(22); - - case 26: - return _context2.finish(19); - - case 27: - _context2.next = 29; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.privilegesManager.getPrivileges()); - - case 29: - privs = _context2.sent; - this.$timeout(function () { - _this.privileges = privs; - }); - - case 31: - case "end": - return _context2.stop(); - } - } - }, null, this, [[11, 15, 19, 27], [20,, 22, 26]]); - } - }, { - key: "checkboxValueChanged", - value: function checkboxValueChanged(action, credential) { - this.privileges.toggleCredentialForAction(action, credential); - this.privilegesManager.savePrivileges(); - } - }, { - key: "cancel", - value: function cancel() { - this.dismiss(); - this.onCancel && this.onCancel(); - } - }, { - key: "dismiss", - value: function dismiss() { - this.$element.remove(); - } - }]); - - return PrivilegesManagementModalCtrl; -}(); - -var PrivilegesManagementModal = function PrivilegesManagementModal() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, PrivilegesManagementModal); - - this.restrict = 'E'; - this.template = _directives_privileges_management_modal_pug__WEBPACK_IMPORTED_MODULE_4___default.a; - this.controller = PrivilegesManagementModalCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = {}; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/revisionPreviewModal.js": -/*!*************************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/revisionPreviewModal.js ***! - \*************************************************************************/ -/*! exports provided: RevisionPreviewModal */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RevisionPreviewModal", function() { return RevisionPreviewModal; }); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! snjs */ "./node_modules/snjs/dist/snjs.js"); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(snjs__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _directives_revision_preview_modal_pug__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! %/directives/revision-preview-modal.pug */ "./app/assets/templates/directives/revision-preview-modal.pug"); -/* harmony import */ var _directives_revision_preview_modal_pug__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_directives_revision_preview_modal_pug__WEBPACK_IMPORTED_MODULE_3__); - - - - - -var RevisionPreviewModalCtrl = -/*#__PURE__*/ -function () { - RevisionPreviewModalCtrl.$inject = ["$element", "$scope", "$timeout", "alertManager", "componentManager", "modelManager", "syncManager"]; - - /* @ngInject */ - function RevisionPreviewModalCtrl($element, $scope, $timeout, alertManager, componentManager, modelManager, syncManager) { - var _this = this; - - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, RevisionPreviewModalCtrl); - - this.$element = $element; - this.$scope = $scope; - this.$timeout = $timeout; - this.alertManager = alertManager; - this.componentManager = componentManager; - this.modelManager = modelManager; - this.syncManager = syncManager; - this.createNote(); - this.configureEditor(); - $scope.$on('$destroy', function () { - if (_this.identifier) { - _this.componentManager.deregisterHandler(_this.identifier); - } - }); - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(RevisionPreviewModalCtrl, [{ - key: "createNote", - value: function createNote() { - this.note = new snjs__WEBPACK_IMPORTED_MODULE_2__["SFItem"]({ - content: this.content, - content_type: "Note" - }); - } - }, { - key: "configureEditor", - value: function configureEditor() { - var _this2 = this; - - /** - * Set UUID so editoForNote can find proper editor, but then generate new uuid - * for note as not to save changes to original, if editor makes changes. - */ - this.note.uuid = this.uuid; - var editorForNote = this.componentManager.editorForNote(this.note); - this.note.uuid = snjs__WEBPACK_IMPORTED_MODULE_2__["protocolManager"].crypto.generateUUIDSync(); - - if (editorForNote) { - /** - * Create temporary copy, as a lot of componentManager is uuid based, so might - * interfere with active editor. Be sure to copy only the content, as the top level - * editor object has non-copyable properties like .window, which cannot be transfered - */ - var editorCopy = new snjs__WEBPACK_IMPORTED_MODULE_2__["SNComponent"]({ - content: editorForNote.content - }); - editorCopy.readonly = true; - editorCopy.lockReadonly = true; - this.identifier = editorCopy.uuid; - this.componentManager.registerHandler({ - identifier: this.identifier, - areas: ['editor-editor'], - contextRequestHandler: function contextRequestHandler(component) { - if (component === _this2.editor) { - return _this2.note; - } - }, - componentForSessionKeyHandler: function componentForSessionKeyHandler(key) { - if (key === _this2.editor.sessionKey) { - return _this2.editor; - } - } - }); - this.editor = editorCopy; - } - } - }, { - key: "restore", - value: function restore(asCopy) { - var _this3 = this; - - var run = function run() { - var item; - - if (asCopy) { - var contentCopy = Object.assign({}, _this3.content); - - if (contentCopy.title) { - contentCopy.title += " (copy)"; - } - - item = _this3.modelManager.createItem({ - content_type: 'Note', - content: contentCopy - }); - - _this3.modelManager.addItem(item); - } else { - var uuid = _this3.uuid; - item = _this3.modelManager.findItem(uuid); - item.content = Object.assign({}, _this3.content); - - _this3.modelManager.mapResponseItemsToLocalModels([item], snjs__WEBPACK_IMPORTED_MODULE_2__["SFModelManager"].MappingSourceRemoteActionRetrieved); - } - - _this3.modelManager.setItemDirty(item); - - _this3.syncManager.sync(); - - _this3.dismiss(); - }; - - if (!asCopy) { - this.alertManager.confirm({ - text: "Are you sure you want to replace the current note's contents with what you see in this preview?", - destructive: true, - onConfirm: run - }); - } else { - run(); - } - } - }, { - key: "dismiss", - value: function dismiss() { - this.$element.remove(); - this.$scope.$destroy(); - } - }]); - - return RevisionPreviewModalCtrl; -}(); - -var RevisionPreviewModal = function RevisionPreviewModal() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, RevisionPreviewModal); - - this.restrict = 'E'; - this.template = _directives_revision_preview_modal_pug__WEBPACK_IMPORTED_MODULE_3___default.a; - this.controller = RevisionPreviewModalCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - uuid: '=', - content: '=' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/sessionHistoryMenu.js": -/*!***********************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/sessionHistoryMenu.js ***! - \***********************************************************************/ -/*! exports provided: SessionHistoryMenu */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SessionHistoryMenu", function() { return SessionHistoryMenu; }); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _directives_session_history_menu_pug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! %/directives/session-history-menu.pug */ "./app/assets/templates/directives/session-history-menu.pug"); -/* harmony import */ var _directives_session_history_menu_pug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_directives_session_history_menu_pug__WEBPACK_IMPORTED_MODULE_2__); - - - - -var SessionHistoryMenuCtrl = -/*#__PURE__*/ -function () { - SessionHistoryMenuCtrl.$inject = ["$timeout", "actionsManager", "alertManager", "sessionHistory"]; - - /* @ngInject */ - function SessionHistoryMenuCtrl($timeout, actionsManager, alertManager, sessionHistory) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, SessionHistoryMenuCtrl); - - this.$timeout = $timeout; - this.alertManager = alertManager; - this.actionsManager = actionsManager; - this.sessionHistory = sessionHistory; - this.diskEnabled = this.sessionHistory.diskEnabled; - this.autoOptimize = this.sessionHistory.autoOptimize; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(SessionHistoryMenuCtrl, [{ - key: "$onInit", - value: function $onInit() { - this.reloadHistory(); - } - }, { - key: "reloadHistory", - value: function reloadHistory() { - var history = this.sessionHistory.historyForItem(this.item); - this.entries = history.entries.slice(0).sort(function (a, b) { - return a.item.updated_at < b.item.updated_at ? 1 : -1; - }); - this.history = history; - } - }, { - key: "openRevision", - value: function openRevision(revision) { - this.actionsManager.presentRevisionPreviewModal(revision.item.uuid, revision.item.content); - } - }, { - key: "classForRevision", - value: function classForRevision(revision) { - var vector = revision.operationVector(); - - if (vector === 0) { - return 'default'; - } else if (vector === 1) { - return 'success'; - } else if (vector === -1) { - return 'danger'; - } - } - }, { - key: "clearItemHistory", - value: function clearItemHistory() { - var _this = this; - - this.alertManager.confirm({ - text: "Are you sure you want to delete the local session history for this note?", - destructive: true, - onConfirm: function onConfirm() { - _this.sessionHistory.clearHistoryForItem(_this.item).then(function () { - _this.$timeout(function () { - _this.reloadHistory(); - }); - }); - } - }); - } - }, { - key: "clearAllHistory", - value: function clearAllHistory() { - var _this2 = this; - - this.alertManager.confirm({ - text: "Are you sure you want to delete the local session history for all notes?", - destructive: true, - onConfirm: function onConfirm() { - _this2.sessionHistory.clearAllHistory().then(function () { - _this2.$timeout(function () { - _this2.reloadHistory(); - }); - }); - } - }); - } - }, { - key: "toggleDiskSaving", - value: function toggleDiskSaving() { - var _this3 = this; - - var run = function run() { - _this3.sessionHistory.toggleDiskSaving().then(function () { - _this3.$timeout(function () { - _this3.diskEnabled = _this3.sessionHistory.diskEnabled; - }); - }); - }; - - if (!this.sessionHistory.diskEnabled) { - this.alertManager.confirm({ - text: "Are you sure you want to save history to disk? This will decrease general \n performance, especially as you type. You are advised to disable this feature \n if you experience any lagging.", - destructive: true, - onConfirm: run - }); - } else { - run(); - } - } - }, { - key: "toggleAutoOptimize", - value: function toggleAutoOptimize() { - var _this4 = this; - - this.sessionHistory.toggleAutoOptimize().then(function () { - _this4.$timeout(function () { - _this4.autoOptimize = _this4.sessionHistory.autoOptimize; - }); - }); - } - }]); - - return SessionHistoryMenuCtrl; -}(); - -var SessionHistoryMenu = function SessionHistoryMenu() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, SessionHistoryMenu); - - this.restrict = 'E'; - this.template = _directives_session_history_menu_pug__WEBPACK_IMPORTED_MODULE_2___default.a; - this.controller = SessionHistoryMenuCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - item: '=' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/directives/views/syncResolutionMenu.js": -/*!***********************************************************************!*\ - !*** ./app/assets/javascripts/directives/views/syncResolutionMenu.js ***! - \***********************************************************************/ -/*! exports provided: SyncResolutionMenu */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncResolutionMenu", function() { return SyncResolutionMenu; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _directives_sync_resolution_menu_pug__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! %/directives/sync-resolution-menu.pug */ "./app/assets/templates/directives/sync-resolution-menu.pug"); -/* harmony import */ var _directives_sync_resolution_menu_pug__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_directives_sync_resolution_menu_pug__WEBPACK_IMPORTED_MODULE_3__); - - - - - -var SyncResolutionMenuCtrl = -/*#__PURE__*/ -function () { - SyncResolutionMenuCtrl.$inject = ["$timeout", "archiveManager", "syncManager"]; - - /* @ngInject */ - function SyncResolutionMenuCtrl($timeout, archiveManager, syncManager) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, SyncResolutionMenuCtrl); - - this.$timeout = $timeout; - this.archiveManager = archiveManager; - this.syncManager = syncManager; - this.status = {}; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(SyncResolutionMenuCtrl, [{ - key: "downloadBackup", - value: function downloadBackup(encrypted) { - this.archiveManager.downloadBackup(encrypted); - this.status.backupFinished = true; - } - }, { - key: "skipBackup", - value: function skipBackup() { - this.status.backupFinished = true; - } - }, { - key: "performSyncResolution", - value: function performSyncResolution() { - var _this = this; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function performSyncResolution$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - this.status.resolving = true; - _context.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.syncManager.resolveOutOfSync()); - - case 3: - this.$timeout(function () { - _this.status.resolving = false; - _this.status.attemptedResolution = true; - - if (_this.syncManager.isOutOfSync()) { - _this.status.fail = true; - } else { - _this.status.success = true; - } - }); - - case 4: - case "end": - return _context.stop(); - } - } - }, null, this); - } - }, { - key: "close", - value: function close() { - var _this2 = this; - - this.$timeout(function () { - _this2.closeFunction()(); - }); - } - }]); - - return SyncResolutionMenuCtrl; -}(); - -var SyncResolutionMenu = function SyncResolutionMenu() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, SyncResolutionMenu); - - this.restrict = 'E'; - this.template = _directives_sync_resolution_menu_pug__WEBPACK_IMPORTED_MODULE_3___default.a; - this.controller = SyncResolutionMenuCtrl; - this.controllerAs = 'ctrl'; - this.bindToController = true; - this.scope = { - closeFunction: '&' - }; -}; - -/***/ }), - -/***/ "./app/assets/javascripts/filters/index.js": -/*!*************************************************!*\ - !*** ./app/assets/javascripts/filters/index.js ***! - \*************************************************/ -/*! exports provided: trusted */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _trusted__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./trusted */ "./app/assets/javascripts/filters/trusted.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "trusted", function() { return _trusted__WEBPACK_IMPORTED_MODULE_0__["trusted"]; }); - - - -/***/ }), - -/***/ "./app/assets/javascripts/filters/trusted.js": -/*!***************************************************!*\ - !*** ./app/assets/javascripts/filters/trusted.js ***! - \***************************************************/ -/*! exports provided: trusted */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "trusted", function() { return trusted; }); -trusted.$inject = ["$sce"]; - -/* @ngInject */ -function trusted($sce) { - return function (url) { - return $sce.trustAsResourceUrl(url); - }; -} - -/***/ }), - -/***/ "./app/assets/javascripts/index.js": -/*!*****************************************!*\ - !*** ./app/assets/javascripts/index.js ***! - \*****************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var sn_stylekit_dist_stylekit_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! sn-stylekit/dist/stylekit.css */ "./node_modules/sn-stylekit/dist/stylekit.css"); -/* harmony import */ var sn_stylekit_dist_stylekit_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(sn_stylekit_dist_stylekit_css__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _stylesheets_index_css_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../stylesheets/index.css.scss */ "./app/assets/stylesheets/index.css.scss"); -/* harmony import */ var _stylesheets_index_css_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_stylesheets_index_css_scss__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! angular */ "./node_modules/angular/index.js"); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _vendor_assets_javascripts_angular_sanitize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../vendor/assets/javascripts/angular-sanitize */ "./vendor/assets/javascripts/angular-sanitize.js"); -/* harmony import */ var _vendor_assets_javascripts_angular_sanitize__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_vendor_assets_javascripts_angular_sanitize__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _vendor_assets_javascripts_zip_deflate__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../vendor/assets/javascripts/zip/deflate */ "./vendor/assets/javascripts/zip/deflate.js"); -/* harmony import */ var _vendor_assets_javascripts_zip_deflate__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_vendor_assets_javascripts_zip_deflate__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _vendor_assets_javascripts_zip_inflate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../vendor/assets/javascripts/zip/inflate */ "./vendor/assets/javascripts/zip/inflate.js"); -/* harmony import */ var _vendor_assets_javascripts_zip_inflate__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_vendor_assets_javascripts_zip_inflate__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var _vendor_assets_javascripts_zip_zip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../vendor/assets/javascripts/zip/zip */ "./vendor/assets/javascripts/zip/zip.js"); -/* harmony import */ var _vendor_assets_javascripts_zip_zip__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_vendor_assets_javascripts_zip_zip__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var _vendor_assets_javascripts_zip_z_worker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../vendor/assets/javascripts/zip/z-worker */ "./vendor/assets/javascripts/zip/z-worker.js"); -/* harmony import */ var _vendor_assets_javascripts_zip_z_worker__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_vendor_assets_javascripts_zip_z_worker__WEBPACK_IMPORTED_MODULE_7__); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! snjs */ "./node_modules/snjs/dist/snjs.js"); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(snjs__WEBPACK_IMPORTED_MODULE_8__); -/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./app */ "./app/assets/javascripts/app.js"); -//= require_tree ./app -// css - - // Vendor - - - - - - - - // Set the app domain before starting the app - -snjs__WEBPACK_IMPORTED_MODULE_8__["SFItem"].AppDomain = 'org.standardnotes.sn'; // entry point -// eslint-disable-next-line import/first - - - -/***/ }), - -/***/ "./app/assets/javascripts/models/noteHistoryEntry.js": -/*!***********************************************************!*\ - !*** ./app/assets/javascripts/models/noteHistoryEntry.js ***! - \***********************************************************/ -/*! exports provided: NoteHistoryEntry */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NoteHistoryEntry", function() { return NoteHistoryEntry; }); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js"); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js"); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! snjs */ "./node_modules/snjs/dist/snjs.js"); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(snjs__WEBPACK_IMPORTED_MODULE_5__); - - - - - - -var NoteHistoryEntry = -/*#__PURE__*/ -function (_SFItemHistoryEntry) { - _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(NoteHistoryEntry, _SFItemHistoryEntry); - - function NoteHistoryEntry() { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, NoteHistoryEntry); - - return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(NoteHistoryEntry).apply(this, arguments)); - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(NoteHistoryEntry, [{ - key: "previewTitle", - value: function previewTitle() { - return this.item.updated_at.toLocaleString(); - } - }, { - key: "previewSubTitle", - value: function previewSubTitle() { - if (!this.hasPreviousEntry) { - return "".concat(this.textCharDiffLength, " characters loaded"); - } else if (this.textCharDiffLength < 0) { - return "".concat(this.textCharDiffLength * -1, " characters removed"); - } else if (this.textCharDiffLength > 0) { - return "".concat(this.textCharDiffLength, " characters added"); - } else { - return "Title or metadata changed"; - } - } - }]); - - return NoteHistoryEntry; -}(snjs__WEBPACK_IMPORTED_MODULE_5__["SFItemHistoryEntry"]); - -/***/ }), - -/***/ "./app/assets/javascripts/routes.js": -/*!******************************************!*\ - !*** ./app/assets/javascripts/routes.js ***! - \******************************************/ -/*! exports provided: configRoutes */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "configRoutes", function() { return configRoutes; }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ "./app/assets/javascripts/utils.js"); -configRoutes.$inject = ["$locationProvider"]; - -/* @ngInject */ - -function configRoutes($locationProvider) { - if (!Object(_utils__WEBPACK_IMPORTED_MODULE_0__["isDesktopApplication"])()) { - if (window.history && window.history.pushState) { - $locationProvider.html5Mode({ - enabled: true, - requireBase: false - }); - } - } else { - $locationProvider.html5Mode(false); - } -} - -/***/ }), - -/***/ "./app/assets/javascripts/services/actionsManager.js": -/*!***********************************************************!*\ - !*** ./app/assets/javascripts/services/actionsManager.js ***! - \***********************************************************/ -/*! exports provided: ActionsManager */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionsManager", function() { return ActionsManager; }); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); -/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js"); -/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! angular */ "./node_modules/angular/index.js"); -/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! snjs */ "./node_modules/snjs/dist/snjs.js"); -/* harmony import */ var snjs__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(snjs__WEBPACK_IMPORTED_MODULE_5__); - - - - - - -var ActionsManager = -/*#__PURE__*/ -function () { - ActionsManager.$inject = ["$compile", "$rootScope", "$timeout", "alertManager", "authManager", "httpManager", "modelManager", "syncManager"]; - - /* @ngInject */ - function ActionsManager($compile, $rootScope, $timeout, alertManager, authManager, httpManager, modelManager, syncManager) { - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ActionsManager); - - this.$compile = $compile; - this.$rootScope = $rootScope; - this.$timeout = $timeout; - this.alertManager = alertManager; - this.authManager = authManager; - this.httpManager = httpManager; - this.modelManager = modelManager; - this.syncManager = syncManager; - /* Used when decrypting old items with new keys. This array is only kept in memory. */ - - this.previousPasswords = []; - } - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ActionsManager, [{ - key: "extensionsInContextOfItem", - value: function extensionsInContextOfItem(item) { - return this.extensions.filter(function (ext) { - return lodash__WEBPACK_IMPORTED_MODULE_3___default.a.includes(ext.supported_types, item.content_type) || ext.actionsWithContextForItem(item).length > 0; - }); - } - /** - * Loads an extension in the context of a certain item. - * The server then has the chance to respond with actions that are - * relevant just to this item. The response extension is not saved, - * just displayed as a one-time thing. - */ - - }, { - key: "loadExtensionInContextOfItem", - value: function loadExtensionInContextOfItem(extension, item) { - var _this = this; - - var params, emptyFunc; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function loadExtensionInContextOfItem$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - params = { - content_type: item.content_type, - item_uuid: item.uuid - }; - - emptyFunc = function emptyFunc() {}; - - return _context.abrupt("return", this.httpManager.getAbsolute(extension.url, params, emptyFunc).then(function (response) { - _this.updateExtensionFromRemoteResponse(extension, response); - - return extension; - }).catch(function (response) { - console.error("Error loading extension", response); - return null; - })); - - case 3: - case "end": - return _context.stop(); - } - } - }, null, this); - } - }, { - key: "updateExtensionFromRemoteResponse", - value: function updateExtensionFromRemoteResponse(extension, response) { - if (response.description) { - extension.description = response.description; - } - - if (response.supported_types) { - extension.supported_types = response.supported_types; - } - - if (response.actions) { - extension.actions = response.actions.map(function (action) { - return new snjs__WEBPACK_IMPORTED_MODULE_5__["Action"](action); - }); - } else { - extension.actions = []; - } - } - }, { - key: "executeAction", - value: function executeAction(action, extension, item) { - var result; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function executeAction$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - action.running = true; - _context2.t0 = action.verb; - _context2.next = _context2.t0 === 'get' ? 4 : _context2.t0 === 'render' ? 8 : _context2.t0 === 'show' ? 12 : _context2.t0 === 'post' ? 16 : 20; - break; - - case 4: - _context2.next = 6; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.handleGetAction(action)); - - case 6: - result = _context2.sent; - return _context2.abrupt("break", 21); - - case 8: - _context2.next = 10; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.handleRenderAction(action)); - - case 10: - result = _context2.sent; - return _context2.abrupt("break", 21); - - case 12: - _context2.next = 14; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.handleShowAction(action)); - - case 14: - result = _context2.sent; - return _context2.abrupt("break", 21); - - case 16: - _context2.next = 18; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.handlePostAction(action, item, extension)); - - case 18: - result = _context2.sent; - return _context2.abrupt("break", 21); - - case 20: - return _context2.abrupt("break", 21); - - case 21: - action.lastExecuted = new Date(); - action.running = false; - return _context2.abrupt("return", result); - - case 24: - case "end": - return _context2.stop(); - } - } - }, null, this); - } - }, { - key: "decryptResponse", - value: function decryptResponse(response, keys) { - var _this2 = this; - - var responseItem, triedPasswords, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, passwordCandidate, keyResults, nestedResponse; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function decryptResponse$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - responseItem = response.item; - _context3.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(snjs__WEBPACK_IMPORTED_MODULE_5__["protocolManager"].decryptItem(responseItem, keys)); - - case 3: - if (responseItem.errorDecrypting) { - _context3.next = 5; - break; - } - - return _context3.abrupt("return", { - response: response, - item: responseItem - }); - - case 5: - if (response.auth_params) { - _context3.next = 8; - break; - } - - /** - * In some cases revisions were missing auth params. - * Instruct the user to email us to get this remedied. - */ - this.alertManager.alert({ - text: "We were unable to decrypt this revision using your current keys, \n and this revision is missing metadata that would allow us to try different \n keys to decrypt it. This can likely be fixed with some manual intervention. \n Please email hello@standardnotes.org for assistance." - }); - return _context3.abrupt("return", {}); - - case 8: - /* Try previous passwords */ - triedPasswords = []; - _iteratorNormalCompletion = true; - _didIteratorError = false; - _iteratorError = undefined; - _context3.prev = 12; - _iterator = this.previousPasswords[Symbol.iterator](); - - case 14: - if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { - _context3.next = 32; - break; - } - - passwordCandidate = _step.value; - - if (!triedPasswords.includes(passwordCandidate)) { - _context3.next = 18; - break; - } - - return _context3.abrupt("continue", 29); - - case 18: - triedPasswords.push(passwordCandidate); - _context3.next = 21; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(snjs__WEBPACK_IMPORTED_MODULE_5__["protocolManager"].computeEncryptionKeysForUser(passwordCandidate, response.auth_params)); - - case 21: - keyResults = _context3.sent; - - if (keyResults) { - _context3.next = 24; - break; - } - - return _context3.abrupt("continue", 29); - - case 24: - _context3.next = 26; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.decryptResponse(response, keyResults)); - - case 26: - nestedResponse = _context3.sent; - - if (!nestedResponse.item) { - _context3.next = 29; - break; - } - - return _context3.abrupt("return", nestedResponse); - - case 29: - _iteratorNormalCompletion = true; - _context3.next = 14; - break; - - case 32: - _context3.next = 38; - break; - - case 34: - _context3.prev = 34; - _context3.t0 = _context3["catch"](12); - _didIteratorError = true; - _iteratorError = _context3.t0; - - case 38: - _context3.prev = 38; - _context3.prev = 39; - - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - - case 41: - _context3.prev = 41; - - if (!_didIteratorError) { - _context3.next = 44; - break; - } - - throw _iteratorError; - - case 44: - return _context3.finish(41); - - case 45: - return _context3.finish(38); - - case 46: - return _context3.abrupt("return", new Promise(function (resolve, reject) { - _this2.presentPasswordModal(function (password) { - _this2.previousPasswords.push(password); - - var result = _this2.decryptResponse(response, keys); - - resolve(result); - }); - })); - - case 47: - case "end": - return _context3.stop(); - } - } - }, null, this, [[12, 34, 38, 46], [39,, 41, 45]]); - } - }, { - key: "handlePostAction", - value: function handlePostAction(action, item, extension) { - var _this3 = this; - - var decrypted, itemParams, params, emptyFunc; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function handlePostAction$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - decrypted = action.access_type === 'decrypted'; - _context4.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.outgoingParamsForItem(item, extension, decrypted)); - - case 3: - itemParams = _context4.sent; - params = { - items: [itemParams] - }; - - emptyFunc = function emptyFunc() {}; - - return _context4.abrupt("return", this.httpManager.postAbsolute(action.url, params, emptyFunc).then(function (response) { - action.error = false; - return { - response: response - }; - }).catch(function (response) { - action.error = true; - console.error("Action error response:", response); - - _this3.alertManager.alert({ - text: "An issue occurred while processing this action. Please try again." - }); - - return { - response: response - }; - })); - - case 7: - case "end": - return _context4.stop(); - } - } - }, null, this); - } - }, { - key: "handleShowAction", - value: function handleShowAction(action) { - var win; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function handleShowAction$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - win = window.open(action.url, '_blank'); - - if (win) { - win.focus(); - } - - return _context5.abrupt("return", { - response: null - }); - - case 3: - case "end": - return _context5.stop(); - } - } - }); - } - }, { - key: "handleGetAction", - value: function handleGetAction(action) { - var _this4 = this; - - var emptyFunc, _onConfirm; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function handleGetAction$(_context8) { - while (1) { - switch (_context8.prev = _context8.next) { - case 0: - emptyFunc = function emptyFunc() {}; - - _onConfirm = function onConfirm() { - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function onConfirm$(_context7) { - while (1) { - switch (_context7.prev = _context7.next) { - case 0: - return _context7.abrupt("return", _this4.httpManager.getAbsolute(action.url, {}, emptyFunc).then(function _callee(response) { - var items, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, mappedItem; - - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function _callee$(_context6) { - while (1) { - switch (_context6.prev = _context6.next) { - case 0: - action.error = false; - _context6.t0 = _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a; - _context6.t1 = _this4; - _context6.t2 = response; - _context6.next = 6; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this4.authManager.keys()); - - case 6: - _context6.t3 = _context6.sent; - _context6.t4 = _context6.t1.decryptResponse.call(_context6.t1, _context6.t2, _context6.t3); - _context6.next = 10; - return _context6.t0.awrap.call(_context6.t0, _context6.t4); - - case 10: - _context6.next = 12; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this4.modelManager.mapResponseItemsToLocalModels([response.item], snjs__WEBPACK_IMPORTED_MODULE_5__["SFModelManager"].MappingSourceRemoteActionRetrieved)); - - case 12: - items = _context6.sent; - _iteratorNormalCompletion2 = true; - _didIteratorError2 = false; - _iteratorError2 = undefined; - _context6.prev = 16; - - for (_iterator2 = items[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - mappedItem = _step2.value; - - _this4.modelManager.setItemDirty(mappedItem, true); - } - - _context6.next = 24; - break; - - case 20: - _context6.prev = 20; - _context6.t5 = _context6["catch"](16); - _didIteratorError2 = true; - _iteratorError2 = _context6.t5; - - case 24: - _context6.prev = 24; - _context6.prev = 25; - - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { - _iterator2.return(); - } - - case 27: - _context6.prev = 27; - - if (!_didIteratorError2) { - _context6.next = 30; - break; - } - - throw _iteratorError2; - - case 30: - return _context6.finish(27); - - case 31: - return _context6.finish(24); - - case 32: - _this4.syncManager.sync(); - - return _context6.abrupt("return", { - response: response, - item: response.item - }); - - case 34: - case "end": - return _context6.stop(); - } - } - }, null, null, [[16, 20, 24, 32], [25,, 27, 31]]); - }).catch(function (response) { - var error = response && response.error || { - message: "An issue occurred while processing this action. Please try again." - }; - - _this4.alertManager.alert({ - text: error.message - }); - - action.error = true; - return { - error: error - }; - })); - - case 1: - case "end": - return _context7.stop(); - } - } - }); - }; - - return _context8.abrupt("return", new Promise(function (resolve, reject) { - _this4.alertManager.confirm({ - text: "Are you sure you want to replace the current note contents with this action's results?", - onConfirm: function onConfirm() { - _onConfirm().then(resolve); - } - }); - })); - - case 3: - case "end": - return _context8.stop(); - } - } - }); - } - }, { - key: "handleRenderAction", - value: function handleRenderAction(action) { - var _this5 = this; - - var emptyFunc; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function handleRenderAction$(_context10) { - while (1) { - switch (_context10.prev = _context10.next) { - case 0: - emptyFunc = function emptyFunc() {}; - - return _context10.abrupt("return", this.httpManager.getAbsolute(action.url, {}, emptyFunc).then(function _callee2(response) { - var result, item; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function _callee2$(_context9) { - while (1) { - switch (_context9.prev = _context9.next) { - case 0: - action.error = false; - _context9.t0 = _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a; - _context9.t1 = _this5; - _context9.t2 = response; - _context9.next = 6; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(_this5.authManager.keys()); - - case 6: - _context9.t3 = _context9.sent; - _context9.t4 = _context9.t1.decryptResponse.call(_context9.t1, _context9.t2, _context9.t3); - _context9.next = 10; - return _context9.t0.awrap.call(_context9.t0, _context9.t4); - - case 10: - result = _context9.sent; - item = _this5.modelManager.createItem(result.item); - return _context9.abrupt("return", { - response: result.response, - item: item - }); - - case 13: - case "end": - return _context9.stop(); - } - } - }); - }).catch(function (response) { - var error = response && response.error || { - message: "An issue occurred while processing this action. Please try again." - }; - - _this5.alertManager.alert({ - text: error.message - }); - - action.error = true; - return { - error: error - }; - })); - - case 2: - case "end": - return _context10.stop(); - } - } - }, null, this); - } - }, { - key: "outgoingParamsForItem", - value: function outgoingParamsForItem(item, extension) { - var decrypted, - keys, - itemParams, - _args11 = arguments; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function outgoingParamsForItem$(_context11) { - while (1) { - switch (_context11.prev = _context11.next) { - case 0: - decrypted = _args11.length > 2 && _args11[2] !== undefined ? _args11[2] : false; - _context11.next = 3; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.authManager.keys()); - - case 3: - keys = _context11.sent; - - if (decrypted) { - keys = null; - } - - _context11.t0 = snjs__WEBPACK_IMPORTED_MODULE_5__["SFItemParams"]; - _context11.t1 = item; - _context11.t2 = keys; - _context11.next = 10; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(this.authManager.getAuthParams()); - - case 10: - _context11.t3 = _context11.sent; - itemParams = new _context11.t0(_context11.t1, _context11.t2, _context11.t3); - return _context11.abrupt("return", itemParams.paramsForExtension()); - - case 13: - case "end": - return _context11.stop(); - } - } - }, null, this); - } - }, { - key: "presentRevisionPreviewModal", - value: function presentRevisionPreviewModal(uuid, content) { - var scope = this.$rootScope.$new(true); - scope.uuid = uuid; - scope.content = content; - var el = this.$compile("form = {{user | json}}
- leader = {{leader | json}}
- This renders because the controller does not fail to - instantiate, by using explicit annotation style (see - script.js for details) -
-This renders because the controller does not fail to - instantiate, by using explicit annotation style - (see script.js for details) -
-The controller could not be instantiated, due to relying - on automatic function annotations (which are disabled in - strict mode). As such, the content of this section is not - interpolated, and there should be an error in your web console. -
-
-
-
-
-
-
-
Cached Values
-Cache Info
-{{ $ctrl.log | json }}',
- * controller: function() {
- * var previousValue;
- * this.log = [];
- * this.$doCheck = function() {
- * var currentValue = this.date && this.date.valueOf();
- * if (previousValue !== currentValue) {
- * this.log.push('doCheck: date mutated: ' + this.date);
- * previousValue = currentValue;
- * }
- * };
- * }
- * });
- * {{ items }}
- * {{ $ctrl.log | json }}',
- * controller: function() {
- * this.log = [];
- *
- * this.$doCheck = function() {
- * if (this.items_ref !== this.items) {
- * this.log.push('doCheck: items changed');
- * this.items_ref = this.items;
- * }
- * if (!angular.equals(this.items_clone, this.items)) {
- * this.log.push('doCheck: items mutated');
- * this.items_clone = angular.copy(this.items);
- * }
- * };
- * }
- * });
- *