Merge branch 'develop' into feature/desktop-integration
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -41,3 +41,4 @@ dump.rdb
|
|||||||
/dist/javascripts
|
/dist/javascripts
|
||||||
/dist/stylesheets
|
/dist/stylesheets
|
||||||
/dist/fonts
|
/dist/fonts
|
||||||
|
/dist/@types
|
||||||
|
|||||||
76
CODE_OF_CONDUCT.md
Normal file
76
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
In the interest of fostering an open and welcoming environment, we as
|
||||||
|
contributors and maintainers pledge to making participation in our project and
|
||||||
|
our community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||||
|
level of experience, education, socio-economic status, nationality, personal
|
||||||
|
appearance, race, religion, or sexual identity and orientation.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to creating a positive environment
|
||||||
|
include:
|
||||||
|
|
||||||
|
* Using welcoming and inclusive language
|
||||||
|
* Being respectful of differing viewpoints and experiences
|
||||||
|
* Gracefully accepting constructive criticism
|
||||||
|
* Focusing on what is best for the community
|
||||||
|
* Showing empathy towards other community members
|
||||||
|
|
||||||
|
Examples of unacceptable behavior by participants include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||||
|
advances
|
||||||
|
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or electronic
|
||||||
|
address, without explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Our Responsibilities
|
||||||
|
|
||||||
|
Project maintainers are responsible for clarifying the standards of acceptable
|
||||||
|
behavior and are expected to take appropriate and fair corrective action in
|
||||||
|
response to any instances of unacceptable behavior.
|
||||||
|
|
||||||
|
Project maintainers have the right and responsibility to remove, edit, or
|
||||||
|
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||||
|
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||||
|
permanently any contributor for other behaviors that they deem inappropriate,
|
||||||
|
threatening, offensive, or harmful.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies both within project spaces and in public spaces
|
||||||
|
when an individual is representing the project or its community. Examples of
|
||||||
|
representing a project or community include using an official project e-mail
|
||||||
|
address, posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event. Representation of a project may be
|
||||||
|
further defined and clarified by project maintainers.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported by contacting the project team at help@standardnotes.org. All
|
||||||
|
complaints will be reviewed and investigated and will result in a response that
|
||||||
|
is deemed necessary and appropriate to the circumstances. The project team is
|
||||||
|
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||||
|
Further details of specific enforcement policies may be posted separately.
|
||||||
|
|
||||||
|
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||||
|
faith may face temporary or permanent repercussions as determined by other
|
||||||
|
members of the project's leadership.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||||
|
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see
|
||||||
|
https://www.contributor-covenant.org/faq
|
||||||
@@ -4,11 +4,11 @@
|
|||||||
"module": "commonjs",
|
"module": "commonjs",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
|
"noEmit": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"emitDeclarationOnly": true,
|
|
||||||
"newLine": "lf",
|
"newLine": "lf",
|
||||||
"declarationDir": "../../../dist/@types",
|
"declarationDir": "../../../dist/@types",
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
|
|||||||
@@ -152,10 +152,20 @@ export class AppState {
|
|||||||
*/
|
*/
|
||||||
async createEditor(title?: string) {
|
async createEditor(title?: string) {
|
||||||
const activeEditor = this.getActiveEditor();
|
const activeEditor = this.getActiveEditor();
|
||||||
|
const activeTagUuid = this.selectedTag
|
||||||
|
? this.selectedTag.isSmartTag()
|
||||||
|
? undefined
|
||||||
|
: this.selectedTag.uuid
|
||||||
|
: undefined;
|
||||||
|
|
||||||
if (!activeEditor || this.multiEditorEnabled) {
|
if (!activeEditor || this.multiEditorEnabled) {
|
||||||
this.application.editorGroup.createEditor(undefined, title);
|
this.application.editorGroup.createEditor(
|
||||||
|
undefined,
|
||||||
|
title,
|
||||||
|
activeTagUuid
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
await activeEditor.reset(title);
|
await activeEditor.reset(title, activeTagUuid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { SNNote, ContentType, PayloadSource } from 'snjs';
|
import { SNNote, ContentType, PayloadSource, UuidString, TagMutator } from 'snjs';
|
||||||
import { WebApplication } from './application';
|
import { WebApplication } from './application';
|
||||||
|
|
||||||
export class Editor {
|
export class Editor {
|
||||||
@@ -12,15 +12,16 @@ export class Editor {
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
application: WebApplication,
|
application: WebApplication,
|
||||||
noteUuid?: string,
|
noteUuid: string | undefined,
|
||||||
noteTitle?: string
|
noteTitle: string | undefined,
|
||||||
|
noteTag: UuidString | undefined
|
||||||
) {
|
) {
|
||||||
this.application = application;
|
this.application = application;
|
||||||
if (noteUuid) {
|
if (noteUuid) {
|
||||||
this.note = application.findItem(noteUuid) as SNNote;
|
this.note = application.findItem(noteUuid) as SNNote;
|
||||||
this.streamItems();
|
this.streamItems();
|
||||||
} else {
|
} else {
|
||||||
this.reset(noteTitle)
|
this.reset(noteTitle, noteTag)
|
||||||
.then(() => this.streamItems())
|
.then(() => this.streamItems())
|
||||||
.catch(console.error);
|
.catch(console.error);
|
||||||
}
|
}
|
||||||
@@ -65,7 +66,10 @@ export class Editor {
|
|||||||
* Reverts the editor to a blank state, removing any existing note from view,
|
* Reverts the editor to a blank state, removing any existing note from view,
|
||||||
* and creating a placeholder note.
|
* and creating a placeholder note.
|
||||||
*/
|
*/
|
||||||
async reset(noteTitle = '') {
|
async reset(
|
||||||
|
noteTitle = '',
|
||||||
|
noteTag?: UuidString,
|
||||||
|
) {
|
||||||
const note = await this.application.createTemplateItem(
|
const note = await this.application.createTemplateItem(
|
||||||
ContentType.Note,
|
ContentType.Note,
|
||||||
{
|
{
|
||||||
@@ -74,6 +78,11 @@ export class Editor {
|
|||||||
references: []
|
references: []
|
||||||
}
|
}
|
||||||
) as SNNote;
|
) as SNNote;
|
||||||
|
if (noteTag) {
|
||||||
|
await this.application.changeItem<TagMutator>(noteTag, (m) => {
|
||||||
|
m.addItemAsRelationship(note);
|
||||||
|
});
|
||||||
|
}
|
||||||
if (!this.isTemplateNote || this.note.title !== note.title) {
|
if (!this.isTemplateNote || this.note.title !== note.title) {
|
||||||
this.setNote(note as SNNote, true);
|
this.setNote(note as SNNote, true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { removeFromArray } from 'snjs';
|
import { removeFromArray, UuidString } from 'snjs';
|
||||||
import { Editor } from './editor';
|
import { Editor } from './editor';
|
||||||
import { WebApplication } from './application';
|
import { WebApplication } from './application';
|
||||||
|
|
||||||
@@ -21,8 +21,12 @@ export class EditorGroup {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createEditor(noteUuid?: string, noteTitle?: string) {
|
createEditor(
|
||||||
const editor = new Editor(this.application, noteUuid, noteTitle);
|
noteUuid?: string,
|
||||||
|
noteTitle?: string,
|
||||||
|
noteTag?: UuidString
|
||||||
|
) {
|
||||||
|
const editor = new Editor(this.application, noteUuid, noteTitle, noteTag);
|
||||||
this.editors.push(editor);
|
this.editors.push(editor);
|
||||||
this.notifyObservers();
|
this.notifyObservers();
|
||||||
}
|
}
|
||||||
@@ -72,4 +76,4 @@ export class EditorGroup {
|
|||||||
observer();
|
observer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ class ApplicationViewCtrl extends PureViewCtrl {
|
|||||||
async onAppLaunch() {
|
async onAppLaunch() {
|
||||||
super.onAppLaunch();
|
super.onAppLaunch();
|
||||||
this.setState({ needsUnlock: false });
|
this.setState({ needsUnlock: false });
|
||||||
this.handleAutoSignInFromParams();
|
this.handleDemoSignInFromParams();
|
||||||
}
|
}
|
||||||
|
|
||||||
onUpdateAvailable() {
|
onUpdateAvailable() {
|
||||||
@@ -142,28 +142,19 @@ class ApplicationViewCtrl extends PureViewCtrl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async handleAutoSignInFromParams() {
|
async handleDemoSignInFromParams() {
|
||||||
const params = this.$location!.search();
|
if (
|
||||||
const server = params.server;
|
this.$location!.search().demo === 'true' &&
|
||||||
const email = params.email;
|
!this.application.hasAccount()
|
||||||
const password = params.pw;
|
) {
|
||||||
if (!server || !email || !password) return;
|
await this.application!.setHost(
|
||||||
|
'https://syncing-server-demo.standardnotes.org'
|
||||||
const user = this.application!.getUser();
|
);
|
||||||
if (user) {
|
this.application!.signIn(
|
||||||
if (user.email === email && await this.application!.getHost() === server) {
|
'demo@standardnotes.org',
|
||||||
/** Already signed in, return */
|
'password',
|
||||||
return;
|
);
|
||||||
} else {
|
|
||||||
/** Sign out */
|
|
||||||
await this.application!.signOut();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
await this.application!.setHost(server);
|
|
||||||
this.application!.signIn(
|
|
||||||
email,
|
|
||||||
password,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -593,7 +593,7 @@ class EditorViewCtrl extends PureViewCtrl<{}, EditorState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
focusTitle() {
|
focusTitle() {
|
||||||
document.getElementById(ElementIds.NoteTitleEditor)!.focus();
|
document.getElementById(ElementIds.NoteTitleEditor)?.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
clickedTextArea() {
|
clickedTextArea() {
|
||||||
|
|||||||
@@ -2,4 +2,4 @@ editor-view(
|
|||||||
ng-repeat='editor in self.editors'
|
ng-repeat='editor in self.editors'
|
||||||
application='self.application'
|
application='self.application'
|
||||||
editor='editor'
|
editor='editor'
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ module Web
|
|||||||
media_src: %w('self'),
|
media_src: %w('self'),
|
||||||
object_src: %w('self'),
|
object_src: %w('self'),
|
||||||
plugin_types: %w(),
|
plugin_types: %w(),
|
||||||
script_src: %w('self' 'unsafe-inline' 'wasm-eval' 'unsafe-eval'),
|
script_src: %w('self' 'unsafe-inline' 'unsafe-eval'),
|
||||||
style_src: %w(* 'unsafe-inline'),
|
style_src: %w(* 'unsafe-inline'),
|
||||||
upgrade_insecure_requests: false, # see https://www.w3.org/TR/upgrade-insecure-requests/
|
upgrade_insecure_requests: false, # see https://www.w3.org/TR/upgrade-insecure-requests/
|
||||||
}
|
}
|
||||||
|
|||||||
2
dist/@types/app/assets/javascripts/app.d.ts
vendored
2
dist/@types/app/assets/javascripts/app.d.ts
vendored
@@ -1,2 +0,0 @@
|
|||||||
import { Bridge } from './services/bridge';
|
|
||||||
export declare type StartApplication = (defaultSyncServerHost: string, bridge: Bridge) => Promise<void>;
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { PasswordWizardType } from './types';
|
|
||||||
import { SNApplication, Challenge, ChallengeOrchestrator, ProtectedAction } from 'snjs';
|
|
||||||
import { AppState, DesktopManager, LockManager, ArchiveManager, NativeExtManager, StatusManager, ThemeManager, PreferencesManager, KeyboardManager } from './services';
|
|
||||||
declare type WebServices = {
|
|
||||||
appState: AppState;
|
|
||||||
desktopService: DesktopManager;
|
|
||||||
lockService: LockManager;
|
|
||||||
archiveService: ArchiveManager;
|
|
||||||
nativeExtService: NativeExtManager;
|
|
||||||
statusService: StatusManager;
|
|
||||||
themeService: ThemeManager;
|
|
||||||
prefsService: PreferencesManager;
|
|
||||||
keyboardService: KeyboardManager;
|
|
||||||
};
|
|
||||||
export declare class WebApplication extends SNApplication {
|
|
||||||
private $compile?;
|
|
||||||
private scope?;
|
|
||||||
private onDeinit?;
|
|
||||||
private webServices;
|
|
||||||
private currentAuthenticationElement?;
|
|
||||||
constructor($compile: ng.ICompileService, $timeout: ng.ITimeoutService, scope: ng.IScope, onDeinit: (app: WebApplication) => void);
|
|
||||||
/** @override */
|
|
||||||
deinit(): void;
|
|
||||||
setWebServices(services: WebServices): void;
|
|
||||||
/** @access public */
|
|
||||||
getAppState(): AppState;
|
|
||||||
/** @access public */
|
|
||||||
getDesktopService(): DesktopManager;
|
|
||||||
/** @access public */
|
|
||||||
getLockService(): LockManager;
|
|
||||||
/** @access public */
|
|
||||||
getArchiveService(): ArchiveManager;
|
|
||||||
/** @access public */
|
|
||||||
getNativeExtService(): NativeExtManager;
|
|
||||||
/** @access public */
|
|
||||||
getStatusService(): StatusManager;
|
|
||||||
/** @access public */
|
|
||||||
getThemeService(): ThemeManager;
|
|
||||||
/** @access public */
|
|
||||||
getPrefsService(): PreferencesManager;
|
|
||||||
/** @access public */
|
|
||||||
getKeyboardService(): KeyboardManager;
|
|
||||||
checkForSecurityUpdate(): Promise<boolean>;
|
|
||||||
presentPasswordWizard(type: PasswordWizardType): void;
|
|
||||||
promptForChallenge(challenge: Challenge, orchestrator: ChallengeOrchestrator): void;
|
|
||||||
performProtocolUpgrade(): Promise<void>;
|
|
||||||
presentPrivilegesModal(action: ProtectedAction, onSuccess?: any, onCancel?: any): Promise<void>;
|
|
||||||
presentPrivilegesManagementModal(): void;
|
|
||||||
authenticationInProgress(): boolean;
|
|
||||||
presentPasswordModal(callback: () => void): void;
|
|
||||||
presentRevisionPreviewModal(uuid: string, content: any): void;
|
|
||||||
}
|
|
||||||
export {};
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { WebApplication } from './application';
|
|
||||||
declare type AppManagerChangeCallback = () => void;
|
|
||||||
export declare class ApplicationManager {
|
|
||||||
$compile: ng.ICompileService;
|
|
||||||
$rootScope: ng.IRootScopeService;
|
|
||||||
$timeout: ng.ITimeoutService;
|
|
||||||
applications: WebApplication[];
|
|
||||||
changeObservers: AppManagerChangeCallback[];
|
|
||||||
activeApplication?: WebApplication;
|
|
||||||
constructor($compile: ng.ICompileService, $rootScope: ng.IRootScopeService, $timeout: ng.ITimeoutService);
|
|
||||||
private createDefaultApplication;
|
|
||||||
/** @callback */
|
|
||||||
onApplicationDeinit(application: WebApplication): void;
|
|
||||||
private createNewApplication;
|
|
||||||
get application(): WebApplication | undefined;
|
|
||||||
getApplications(): WebApplication[];
|
|
||||||
/**
|
|
||||||
* Notifies observer when the active application has changed.
|
|
||||||
* Any application which is no longer active is destroyed, and
|
|
||||||
* must be removed from the interface.
|
|
||||||
*/
|
|
||||||
addApplicationChangeObserver(callback: AppManagerChangeCallback): void;
|
|
||||||
private notifyObserversOfAppChange;
|
|
||||||
}
|
|
||||||
export {};
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { WebApplication } from './../../application';
|
|
||||||
import { ApplicationEvent } from 'snjs';
|
|
||||||
export declare type CtrlState = Partial<Record<string, any>>;
|
|
||||||
export declare type CtrlProps = Partial<Record<string, any>>;
|
|
||||||
export declare class PureCtrl {
|
|
||||||
$timeout: ng.ITimeoutService;
|
|
||||||
/** Passed through templates */
|
|
||||||
application?: WebApplication;
|
|
||||||
props: CtrlProps;
|
|
||||||
state: CtrlState;
|
|
||||||
private unsubApp;
|
|
||||||
private unsubState;
|
|
||||||
private stateTimeout;
|
|
||||||
constructor($timeout: ng.ITimeoutService);
|
|
||||||
$onInit(): void;
|
|
||||||
deinit(): void;
|
|
||||||
$onDestroy(): void;
|
|
||||||
get appState(): import("../../services/state").AppState;
|
|
||||||
/** @private */
|
|
||||||
resetState(): Promise<void>;
|
|
||||||
/** @override */
|
|
||||||
getInitialState(): {};
|
|
||||||
setState(state: CtrlState): Promise<unknown>;
|
|
||||||
updateUI(func: () => void): Promise<void>;
|
|
||||||
initProps(props: CtrlProps): void;
|
|
||||||
addAppStateObserver(): void;
|
|
||||||
onAppStateEvent(eventName: any, data: any): void;
|
|
||||||
addAppEventObserver(): void;
|
|
||||||
onAppEvent(eventName: ApplicationEvent): void;
|
|
||||||
/** @override */
|
|
||||||
onAppStart(): Promise<void>;
|
|
||||||
onAppLaunch(): Promise<void>;
|
|
||||||
onAppKeyChange(): Promise<void>;
|
|
||||||
onAppSync(): void;
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../types';
|
|
||||||
export declare class ApplicationView extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
export declare const PANEL_NAME_NOTES = "notes";
|
|
||||||
export declare const PANEL_NAME_TAGS = "tags";
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
/// <reference types="pug" />
|
|
||||||
export class EditorPanel {
|
|
||||||
restrict: string;
|
|
||||||
scope: {};
|
|
||||||
template: import("pug").compileTemplate;
|
|
||||||
replace: boolean;
|
|
||||||
controller: typeof EditorCtrl;
|
|
||||||
controllerAs: string;
|
|
||||||
bindToController: boolean;
|
|
||||||
}
|
|
||||||
declare class EditorCtrl {
|
|
||||||
constructor($timeout: any, $rootScope: any, alertManager: any, appState: any, authManager: any, actionsManager: any, componentManager: any, desktopManager: any, keyboardManager: any, modelManager: any, preferencesManager: any, privilegesManager: any, sessionHistory: any, syncManager: any);
|
|
||||||
$rootScope: any;
|
|
||||||
alertManager: any;
|
|
||||||
appState: any;
|
|
||||||
actionsManager: any;
|
|
||||||
authManager: any;
|
|
||||||
componentManager: any;
|
|
||||||
desktopManager: any;
|
|
||||||
keyboardManager: any;
|
|
||||||
modelManager: any;
|
|
||||||
preferencesManager: any;
|
|
||||||
privilegesManager: any;
|
|
||||||
syncManager: any;
|
|
||||||
state: {
|
|
||||||
componentStack: never[];
|
|
||||||
editorDebounce: number;
|
|
||||||
isDesktop: any;
|
|
||||||
spellcheck: boolean;
|
|
||||||
mutable: {
|
|
||||||
tagsString: string;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
leftResizeControl: {};
|
|
||||||
rightResizeControl: {};
|
|
||||||
/** Used by .pug template */
|
|
||||||
prefKeyMonospace: any;
|
|
||||||
prefKeySpellcheck: any;
|
|
||||||
prefKeyMarginResizers: any;
|
|
||||||
addAppStateObserver(): void;
|
|
||||||
handleNoteSelectionChange(note: any, previousNote: any): Promise<void>;
|
|
||||||
addMappingObservers(): void;
|
|
||||||
addSyncEventHandler(): void;
|
|
||||||
addSyncStatusObserver(): void;
|
|
||||||
syncStatusObserver: any;
|
|
||||||
editorForNote(note: any): any;
|
|
||||||
setMenuState(menu: any, state: any): void;
|
|
||||||
toggleMenu(menu: any): void;
|
|
||||||
closeAllMenus({ exclude }?: {
|
|
||||||
exclude: any;
|
|
||||||
}): void;
|
|
||||||
editorMenuOnSelect: (component: any) => void;
|
|
||||||
hasAvailableExtensions(): boolean;
|
|
||||||
performFirefoxPinnedTabFix(): void;
|
|
||||||
saveNote({ bypassDebouncer, updateClientModified, dontUpdatePreviews }: {
|
|
||||||
bypassDebouncer: any;
|
|
||||||
updateClientModified: any;
|
|
||||||
dontUpdatePreviews: any;
|
|
||||||
}): void;
|
|
||||||
saveTimeout: any;
|
|
||||||
didShowErrorAlert: boolean | undefined;
|
|
||||||
showSavingStatus(): void;
|
|
||||||
showAllChangesSavedStatus(): void;
|
|
||||||
showErrorStatus(error: any): void;
|
|
||||||
setStatus(status: any, wait?: boolean): void;
|
|
||||||
statusTimeout: any;
|
|
||||||
contentChanged(): void;
|
|
||||||
onTitleEnter($event: any): void;
|
|
||||||
onTitleChange(): void;
|
|
||||||
focusEditor(): void;
|
|
||||||
lastEditorFocusEventSource: any;
|
|
||||||
focusTitle(): void;
|
|
||||||
clickedTextArea(): void;
|
|
||||||
onNameFocus(): void;
|
|
||||||
editingName: boolean | undefined;
|
|
||||||
onContentFocus(): void;
|
|
||||||
onNameBlur(): void;
|
|
||||||
selectedMenuItem(hide: any): void;
|
|
||||||
deleteNote(permanently: any): Promise<void>;
|
|
||||||
performNoteDeletion(note: any): void;
|
|
||||||
restoreTrashedNote(): void;
|
|
||||||
deleteNotePermanantely(): void;
|
|
||||||
getTrashCount(): any;
|
|
||||||
emptyTrash(): void;
|
|
||||||
togglePin(): void;
|
|
||||||
toggleLockNote(): void;
|
|
||||||
toggleProtectNote(): void;
|
|
||||||
toggleNotePreview(): void;
|
|
||||||
toggleArchiveNote(): void;
|
|
||||||
reloadTagsString(): void;
|
|
||||||
addTag(tag: any): void;
|
|
||||||
removeTag(tag: any): void;
|
|
||||||
saveTags({ strings }?: {
|
|
||||||
strings: any;
|
|
||||||
}): void;
|
|
||||||
onPanelResizeFinish: (width: any, left: any, isMaxWidth: any) => void;
|
|
||||||
loadPreferences(): void;
|
|
||||||
reloadFont(): void;
|
|
||||||
toggleKey(key: any): Promise<void>;
|
|
||||||
/** @components */
|
|
||||||
onEditorLoad: (editor: any) => void;
|
|
||||||
registerComponentHandler(): void;
|
|
||||||
reloadComponentStackArray(): void;
|
|
||||||
reloadComponentContext(): void;
|
|
||||||
toggleStackComponentForCurrentItem(component: any): void;
|
|
||||||
disassociateComponentWithCurrentNote(component: any): void;
|
|
||||||
associateComponentWithCurrentNote(component: any): void;
|
|
||||||
registerKeyboardShortcuts(): void;
|
|
||||||
altKeyObserver: any;
|
|
||||||
trashKeyObserver: any;
|
|
||||||
deleteKeyObserver: any;
|
|
||||||
onSystemEditorLoad(): void;
|
|
||||||
loadedTabListener: boolean | undefined;
|
|
||||||
tabObserver: any;
|
|
||||||
}
|
|
||||||
export {};
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../types';
|
|
||||||
export declare class Footer extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
export { PureCtrl } from './abstract/pure_ctrl';
|
|
||||||
export { EditorPanel } from './editor';
|
|
||||||
export { Footer } from './footer';
|
|
||||||
export { NotesPanel } from './notes/notes';
|
|
||||||
export { TagsPanel } from './tags';
|
|
||||||
export { Root } from './root';
|
|
||||||
export { ApplicationView } from './applicationView';
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
import { SNNote, SNTag } from 'snjs';
|
|
||||||
export declare enum NoteSortKey {
|
|
||||||
CreatedAt = "created_at",
|
|
||||||
UpdatedAt = "updated_at",
|
|
||||||
ClientUpdatedAt = "client_updated_at",
|
|
||||||
Title = "title"
|
|
||||||
}
|
|
||||||
export declare function filterAndSortNotes(notes: SNNote[], selectedTag: SNTag, showArchived: boolean, hidePinned: boolean, filterText: string, sortBy: string, reverse: boolean): SNNote[];
|
|
||||||
export declare function filterNotes(notes: SNNote[], selectedTag: SNTag, showArchived: boolean, hidePinned: boolean, filterText: string): SNNote[];
|
|
||||||
export declare function sortNotes(notes: SNNote[] | undefined, sortBy: string, reverse: boolean): SNNote[];
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class NotesPanel extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../types';
|
|
||||||
export declare class Root extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../types';
|
|
||||||
export declare class TagsPanel extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
29
dist/@types/app/assets/javascripts/database.d.ts
vendored
29
dist/@types/app/assets/javascripts/database.d.ts
vendored
@@ -1,29 +0,0 @@
|
|||||||
import { SNAlertService } from "snjs/dist/@types";
|
|
||||||
export declare class Database {
|
|
||||||
databaseName: string;
|
|
||||||
private alertService;
|
|
||||||
private locked;
|
|
||||||
private db?;
|
|
||||||
constructor(databaseName: string, alertService: SNAlertService);
|
|
||||||
deinit(): void;
|
|
||||||
/**
|
|
||||||
* Relinquishes the lock and allows db operations to proceed
|
|
||||||
*/
|
|
||||||
unlock(): void;
|
|
||||||
/**
|
|
||||||
* Opens the database natively, or returns the existing database object if already opened.
|
|
||||||
* @param onNewDatabase - Callback to invoke when a database has been created
|
|
||||||
* as part of the open process. This can happen on new application sessions, or if the
|
|
||||||
* browser deleted the database without the user being aware.
|
|
||||||
*/
|
|
||||||
openDatabase(onNewDatabase?: () => void): Promise<IDBDatabase | undefined>;
|
|
||||||
getAllPayloads(): Promise<any[]>;
|
|
||||||
savePayload(payload: any): Promise<void>;
|
|
||||||
savePayloads(payloads: any[]): Promise<void>;
|
|
||||||
private putItems;
|
|
||||||
deletePayload(uuid: string): Promise<void>;
|
|
||||||
clearAllPayloads(): Promise<void>;
|
|
||||||
private showAlert;
|
|
||||||
private showGenericError;
|
|
||||||
private displayOfflineAlert;
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function autofocus($timeout: ng.ITimeoutService): {
|
|
||||||
restrict: string;
|
|
||||||
scope: {
|
|
||||||
shouldFocus: string;
|
|
||||||
};
|
|
||||||
link: ($scope: ng.IScope, $element: JQLite) => void;
|
|
||||||
};
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function clickOutside($document: ng.IDocumentService): {
|
|
||||||
restrict: string;
|
|
||||||
replace: boolean;
|
|
||||||
link($scope: ng.IScope, $element: JQLite, attrs: any): void;
|
|
||||||
};
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function delayHide($timeout: ng.ITimeoutService): {
|
|
||||||
restrict: string;
|
|
||||||
scope: {
|
|
||||||
show: string;
|
|
||||||
delay: string;
|
|
||||||
};
|
|
||||||
link: (scope: ng.IScope, elem: JQLite) => void;
|
|
||||||
};
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function elemReady($parse: ng.IParseService): {
|
|
||||||
restrict: string;
|
|
||||||
link: ($scope: ng.IScope, elem: JQLite, attrs: any) => void;
|
|
||||||
};
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function fileChange(): {
|
|
||||||
restrict: string;
|
|
||||||
scope: {
|
|
||||||
handler: string;
|
|
||||||
};
|
|
||||||
link: (scope: ng.IScope, element: JQLite) => void;
|
|
||||||
};
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
export { autofocus } from './autofocus';
|
|
||||||
export { clickOutside } from './click-outside';
|
|
||||||
export { delayHide } from './delay-hide';
|
|
||||||
export { elemReady } from './elemReady';
|
|
||||||
export { fileChange } from './file-change';
|
|
||||||
export { infiniteScroll } from './infiniteScroll';
|
|
||||||
export { lowercase } from './lowercase';
|
|
||||||
export { selectOnFocus } from './selectOnFocus';
|
|
||||||
export { snEnter } from './snEnter';
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function infiniteScroll(): {
|
|
||||||
link: (scope: ng.IScope, elem: JQLite, attrs: any) => void;
|
|
||||||
};
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function lowercase(): {
|
|
||||||
require: string;
|
|
||||||
link: (scope: ng.IScope, _: JQLite, attrs: any, ctrl: any) => void;
|
|
||||||
};
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function selectOnClick($window: ng.IWindowService): {
|
|
||||||
restrict: string;
|
|
||||||
link: (scope: import("angular").IScope, element: JQLite) => void;
|
|
||||||
};
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function selectOnFocus($window: ng.IWindowService): {
|
|
||||||
restrict: string;
|
|
||||||
link: (scope: ng.IScope, element: JQLite) => void;
|
|
||||||
};
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function snEnter(): (scope: ng.IScope, element: JQLite, attrs: any) => void;
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class AccountMenu extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class ActionsMenu extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class ChallengeModal extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { WebApplication } from '@/ui_models/application';
|
|
||||||
import { SNComponent, LiveItem } from 'snjs';
|
|
||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare type ComponentModalScope = {
|
|
||||||
componentUuid: string;
|
|
||||||
onDismiss: () => void;
|
|
||||||
application: WebApplication;
|
|
||||||
};
|
|
||||||
export declare class ComponentModalCtrl implements ComponentModalScope {
|
|
||||||
$element: JQLite;
|
|
||||||
componentUuid: string;
|
|
||||||
onDismiss: () => void;
|
|
||||||
application: WebApplication;
|
|
||||||
liveComponent: LiveItem<SNComponent>;
|
|
||||||
component: SNComponent;
|
|
||||||
constructor($element: JQLite);
|
|
||||||
$onInit(): void;
|
|
||||||
$onDestroy(): void;
|
|
||||||
dismiss(): void;
|
|
||||||
}
|
|
||||||
export declare class ComponentModal extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class ComponentView extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class EditorMenu extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from '../../types';
|
|
||||||
export declare class HistoryMenu extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
export { AccountMenu } from './accountMenu';
|
|
||||||
export { ActionsMenu } from './actionsMenu';
|
|
||||||
export { ComponentModal } from './componentModal';
|
|
||||||
export { ComponentView } from './componentView';
|
|
||||||
export { EditorMenu } from './editorMenu';
|
|
||||||
export { InputModal } from './inputModal';
|
|
||||||
export { MenuRow } from './menuRow';
|
|
||||||
export { PanelResizer } from './panelResizer';
|
|
||||||
export { PasswordWizard } from './passwordWizard';
|
|
||||||
export { PermissionsModal } from './permissionsModal';
|
|
||||||
export { PrivilegesAuthModal } from './privilegesAuthModal';
|
|
||||||
export { PrivilegesManagementModal } from './privilegesManagementModal';
|
|
||||||
export { RevisionPreviewModal } from './revisionPreviewModal';
|
|
||||||
export { HistoryMenu } from './historyMenu';
|
|
||||||
export { SyncResolutionMenu } from './syncResolutionMenu';
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { WebDirective } from './../../types';
|
|
||||||
export interface InputModalScope extends Partial<ng.IScope> {
|
|
||||||
type: string;
|
|
||||||
title: string;
|
|
||||||
message: string;
|
|
||||||
callback: (value: string) => void;
|
|
||||||
}
|
|
||||||
export declare class InputModal extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class MenuRow extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class PanelResizer extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class PasswordWizard extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class PermissionsModal extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class PrivilegesAuthModal extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class PrivilegesManagementModal extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class RevisionPreviewModal extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class SessionHistoryMenu extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class SyncResolutionMenu extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
export { trusted } from './trusted';
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function trusted($sce: ng.ISCEService): (url: string) => any;
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
import 'sn-stylekit/dist/stylekit.css';
|
|
||||||
import '../stylesheets/index.css.scss';
|
|
||||||
import 'angular';
|
|
||||||
import '../../../vendor/assets/javascripts/angular-sanitize';
|
|
||||||
import '../../../vendor/assets/javascripts/zip/deflate';
|
|
||||||
import '../../../vendor/assets/javascripts/zip/inflate';
|
|
||||||
import '../../../vendor/assets/javascripts/zip/zip';
|
|
||||||
import '../../../vendor/assets/javascripts/zip/z-worker';
|
|
||||||
import './app';
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
import { DeviceInterface, SNApplication } from 'snjs';
|
|
||||||
import { Platform } from './services/platform';
|
|
||||||
export declare class WebDeviceInterface extends DeviceInterface {
|
|
||||||
private platform;
|
|
||||||
private database;
|
|
||||||
constructor(namespace: string, timeout: any, platform: Platform);
|
|
||||||
setApplication(application: SNApplication): void;
|
|
||||||
deinit(): void;
|
|
||||||
getRawStorageValue(key: string): Promise<string | null>;
|
|
||||||
getAllRawStorageKeyValues(): Promise<{
|
|
||||||
key: string;
|
|
||||||
value: any;
|
|
||||||
}[]>;
|
|
||||||
setRawStorageValue(key: string, value: any): Promise<void>;
|
|
||||||
removeRawStorageValue(key: string): Promise<void>;
|
|
||||||
removeAllRawStorageValues(): Promise<void>;
|
|
||||||
openDatabase(): Promise<{
|
|
||||||
isNewDatabase?: boolean | undefined;
|
|
||||||
} | undefined>;
|
|
||||||
private getDatabaseKeyPrefix;
|
|
||||||
private keyForPayloadId;
|
|
||||||
getAllRawDatabasePayloads(): Promise<any[]>;
|
|
||||||
saveRawDatabasePayload(payload: any): Promise<void>;
|
|
||||||
saveRawDatabasePayloads(payloads: any[]): Promise<void>;
|
|
||||||
removeRawDatabasePayloadWithId(id: string): Promise<void>;
|
|
||||||
removeAllRawDatabasePayloads(): Promise<void>;
|
|
||||||
getKeychainValue(): Promise<unknown>;
|
|
||||||
setKeychainValue(value: any): Promise<void>;
|
|
||||||
clearKeychainValue(): Promise<void>;
|
|
||||||
openUrl(url: string): void;
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
export declare enum RootScopeMessages {
|
|
||||||
ReloadExtendedData = "reload-ext-data",
|
|
||||||
NewUpdateAvailable = "new-update-available"
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
export declare function configRoutes($locationProvider: ng.ILocationProvider): void;
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
import { SNAlertService, ButtonType } from 'snjs';
|
|
||||||
/** @returns a promise resolving to true if the user confirmed, false if they canceled */
|
|
||||||
export declare function confirmDialog({ text, title, confirmButtonText, cancelButtonText, confirmButtonStyle, }: {
|
|
||||||
text: string;
|
|
||||||
title?: string;
|
|
||||||
confirmButtonText?: string;
|
|
||||||
cancelButtonText?: string;
|
|
||||||
confirmButtonStyle?: 'danger' | 'info';
|
|
||||||
}): Promise<boolean>;
|
|
||||||
export declare function alertDialog({ title, text, closeButtonText, }: {
|
|
||||||
title?: string;
|
|
||||||
text: string;
|
|
||||||
closeButtonText?: string;
|
|
||||||
}): Promise<void>;
|
|
||||||
export declare class AlertService implements SNAlertService {
|
|
||||||
/**
|
|
||||||
* @deprecated use the standalone `alertDialog` function instead
|
|
||||||
*/
|
|
||||||
alert(text: string, title?: string, closeButtonText?: string): Promise<void>;
|
|
||||||
confirm(text: string, title?: string, confirmButtonText?: string, confirmButtonType?: ButtonType, cancelButtonText?: string): Promise<boolean>;
|
|
||||||
blockingDialog(text: string, title?: string): () => void;
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
import { WebApplication } from '@/ui_models/application';
|
|
||||||
export declare class ArchiveManager {
|
|
||||||
private readonly application;
|
|
||||||
private textFile?;
|
|
||||||
constructor(application: WebApplication);
|
|
||||||
downloadBackup(encrypted: boolean): Promise<void>;
|
|
||||||
private formattedDate;
|
|
||||||
private itemsData;
|
|
||||||
private get zip();
|
|
||||||
private loadZip;
|
|
||||||
private downloadZippedItems;
|
|
||||||
private hrefForData;
|
|
||||||
private downloadData;
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
import { ApplicationService } from 'snjs';
|
|
||||||
export declare class AutolockService extends ApplicationService {
|
|
||||||
private unsubState?;
|
|
||||||
private pollFocusInterval;
|
|
||||||
private lastFocusState?;
|
|
||||||
private lockAfterDate?;
|
|
||||||
private lockTimeout?;
|
|
||||||
onAppLaunch(): Promise<void>;
|
|
||||||
observeVisibility(): void;
|
|
||||||
deinit(): void;
|
|
||||||
private lockApplication;
|
|
||||||
setAutoLockInterval(interval: number): Promise<void>;
|
|
||||||
getAutoLockInterval(): Promise<any>;
|
|
||||||
deleteAutolockPreference(): Promise<void>;
|
|
||||||
/**
|
|
||||||
* Verify document is in focus every so often as visibilitychange event is
|
|
||||||
* not triggered on a typical window blur event but rather on tab changes.
|
|
||||||
*/
|
|
||||||
beginWebFocusPolling(): void;
|
|
||||||
getAutoLockIntervalOptions(): {
|
|
||||||
value: number;
|
|
||||||
label: string;
|
|
||||||
}[];
|
|
||||||
documentVisibilityChanged(visible: boolean): Promise<void>;
|
|
||||||
beginAutoLockTimer(): Promise<void>;
|
|
||||||
cancelAutoLockTimer(): void;
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
import { PurePayload, Environment } from 'snjs';
|
|
||||||
/** Platform-specific (i-e Electron/browser) behavior is handled by a Bridge object. */
|
|
||||||
export interface Bridge {
|
|
||||||
readonly appVersion: string;
|
|
||||||
environment: Environment;
|
|
||||||
getKeychainValue(): Promise<unknown>;
|
|
||||||
setKeychainValue(value: any): Promise<void>;
|
|
||||||
clearKeychainValue(): Promise<void>;
|
|
||||||
extensionsServerHost?: string;
|
|
||||||
syncComponents(payloads: PurePayload[]): void;
|
|
||||||
onMajorDataChange(): void;
|
|
||||||
onInitialDataLoad(): void;
|
|
||||||
onSearch(text?: string): void;
|
|
||||||
downloadBackup(): void;
|
|
||||||
}
|
|
||||||
export declare class BrowserBridge implements Bridge {
|
|
||||||
appVersion: string;
|
|
||||||
constructor(appVersion: string);
|
|
||||||
environment: Environment;
|
|
||||||
getKeychainValue(): Promise<unknown>;
|
|
||||||
setKeychainValue(value: any): Promise<void>;
|
|
||||||
clearKeychainValue(): Promise<void>;
|
|
||||||
/** No-ops */
|
|
||||||
syncComponents(): void;
|
|
||||||
onMajorDataChange(): void;
|
|
||||||
onInitialDataLoad(): void;
|
|
||||||
onSearch(): void;
|
|
||||||
downloadBackup(): void;
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { SNComponent, PurePayload } from 'snjs';
|
|
||||||
import { WebApplication } from '@/ui_models/application';
|
|
||||||
import { ApplicationService, ApplicationEvent } from 'snjs';
|
|
||||||
import { Bridge } from './bridge';
|
|
||||||
declare type UpdateObserverCallback = (component: SNComponent) => void;
|
|
||||||
declare type ComponentActivationCallback = (payload: PurePayload) => void;
|
|
||||||
declare type ComponentActivationObserver = {
|
|
||||||
id: string;
|
|
||||||
callback: ComponentActivationCallback;
|
|
||||||
};
|
|
||||||
export declare class DesktopManager extends ApplicationService {
|
|
||||||
private bridge;
|
|
||||||
$rootScope: ng.IRootScopeService;
|
|
||||||
$timeout: ng.ITimeoutService;
|
|
||||||
componentActivationObservers: ComponentActivationObserver[];
|
|
||||||
updateObservers: {
|
|
||||||
callback: UpdateObserverCallback;
|
|
||||||
}[];
|
|
||||||
isDesktop: boolean;
|
|
||||||
dataLoaded: boolean;
|
|
||||||
lastSearchedText?: string;
|
|
||||||
private removeComponentObserver?;
|
|
||||||
constructor($rootScope: ng.IRootScopeService, $timeout: ng.ITimeoutService, application: WebApplication, bridge: Bridge);
|
|
||||||
get webApplication(): WebApplication;
|
|
||||||
deinit(): void;
|
|
||||||
onAppEvent(eventName: ApplicationEvent): Promise<void>;
|
|
||||||
saveBackup(): void;
|
|
||||||
getExtServerHost(): string | undefined;
|
|
||||||
/**
|
|
||||||
* Sending a component in its raw state is really slow for the desktop app
|
|
||||||
* Keys are not passed into ItemParams, so the result is not encrypted
|
|
||||||
*/
|
|
||||||
convertComponentForTransmission(component: SNComponent): Promise<PurePayload>;
|
|
||||||
syncComponentsInstallation(components: SNComponent[]): void;
|
|
||||||
registerUpdateObserver(callback: UpdateObserverCallback): () => void;
|
|
||||||
searchText(text?: string): void;
|
|
||||||
redoSearch(): void;
|
|
||||||
desktop_windowGainedFocus(): void;
|
|
||||||
desktop_windowLostFocus(): void;
|
|
||||||
desktop_onComponentInstallationComplete(componentData: any, error: any): Promise<void>;
|
|
||||||
desktop_registerComponentActivationObserver(callback: ComponentActivationCallback): {
|
|
||||||
id: string;
|
|
||||||
callback: ComponentActivationCallback;
|
|
||||||
};
|
|
||||||
desktop_deregisterComponentActivationObserver(observer: ComponentActivationObserver): void;
|
|
||||||
notifyComponentActivation(component: SNComponent): Promise<void>;
|
|
||||||
desktop_requestBackupFile(): Promise<string | undefined>;
|
|
||||||
desktop_didBeginBackup(): void;
|
|
||||||
desktop_didFinishBackup(success: boolean): void;
|
|
||||||
}
|
|
||||||
export {};
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
export declare function startErrorReporting(): void;
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
export { AlertService } from './alertService';
|
|
||||||
export { ArchiveManager } from './archiveManager';
|
|
||||||
export { DesktopManager } from './desktopManager';
|
|
||||||
export { KeyboardManager } from './keyboardManager';
|
|
||||||
export { AutolockService } from './autolock_service';
|
|
||||||
export { NativeExtManager } from './nativeExtManager';
|
|
||||||
export { PreferencesManager } from './preferencesManager';
|
|
||||||
export { StatusManager } from './statusManager';
|
|
||||||
export { ThemeManager } from './themeManager';
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
export declare enum KeyboardKey {
|
|
||||||
Tab = "Tab",
|
|
||||||
Backspace = "Backspace",
|
|
||||||
Up = "ArrowUp",
|
|
||||||
Down = "ArrowDown"
|
|
||||||
}
|
|
||||||
export declare enum KeyboardModifier {
|
|
||||||
Shift = "Shift",
|
|
||||||
Ctrl = "Control",
|
|
||||||
/** ⌘ key on Mac, ⊞ key on Windows */
|
|
||||||
Meta = "Meta",
|
|
||||||
Alt = "Alt"
|
|
||||||
}
|
|
||||||
declare enum KeyboardKeyEvent {
|
|
||||||
Down = "KeyEventDown",
|
|
||||||
Up = "KeyEventUp"
|
|
||||||
}
|
|
||||||
declare type KeyboardObserver = {
|
|
||||||
key?: KeyboardKey | string;
|
|
||||||
modifiers?: KeyboardModifier[];
|
|
||||||
onKeyDown?: (event: KeyboardEvent) => void;
|
|
||||||
onKeyUp?: (event: KeyboardEvent) => void;
|
|
||||||
element?: HTMLElement;
|
|
||||||
elements?: HTMLElement[];
|
|
||||||
notElement?: HTMLElement;
|
|
||||||
notElementIds?: string[];
|
|
||||||
};
|
|
||||||
export declare class KeyboardManager {
|
|
||||||
private observers;
|
|
||||||
private handleKeyDown;
|
|
||||||
private handleKeyUp;
|
|
||||||
constructor();
|
|
||||||
deinit(): void;
|
|
||||||
modifiersForEvent(event: KeyboardEvent): KeyboardModifier[];
|
|
||||||
eventMatchesKeyAndModifiers(event: KeyboardEvent, key: KeyboardKey | string, modifiers?: KeyboardModifier[]): boolean;
|
|
||||||
notifyObserver(event: KeyboardEvent, keyEvent: KeyboardKeyEvent): void;
|
|
||||||
addKeyObserver(observer: KeyboardObserver): () => void;
|
|
||||||
}
|
|
||||||
export {};
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
export declare enum StorageKey {
|
|
||||||
DisableErrorReporting = "DisableErrorReporting"
|
|
||||||
}
|
|
||||||
export declare const storage: {
|
|
||||||
get(key: StorageKey): any;
|
|
||||||
set(key: StorageKey, value: unknown): void;
|
|
||||||
remove(key: StorageKey): void;
|
|
||||||
};
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
import { WebApplication } from '@/ui_models/application';
|
|
||||||
export declare class LockManager {
|
|
||||||
private application;
|
|
||||||
private unsubState;
|
|
||||||
private pollFocusInterval;
|
|
||||||
private lastFocusState?;
|
|
||||||
private lockAfterDate?;
|
|
||||||
private lockTimeout?;
|
|
||||||
constructor(application: WebApplication);
|
|
||||||
observeVisibility(): void;
|
|
||||||
deinit(): void;
|
|
||||||
setAutoLockInterval(interval: number): Promise<void>;
|
|
||||||
getAutoLockInterval(): Promise<any>;
|
|
||||||
/**
|
|
||||||
* Verify document is in focus every so often as visibilitychange event is
|
|
||||||
* not triggered on a typical window blur event but rather on tab changes.
|
|
||||||
*/
|
|
||||||
beginWebFocusPolling(): void;
|
|
||||||
getAutoLockIntervalOptions(): {
|
|
||||||
value: number;
|
|
||||||
label: string;
|
|
||||||
}[];
|
|
||||||
documentVisibilityChanged(visible: boolean): Promise<void>;
|
|
||||||
beginAutoLockTimer(): Promise<void>;
|
|
||||||
cancelAutoLockTimer(): void;
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
import { SNPredicate, ApplicationService } from 'snjs';
|
|
||||||
import { PayloadContent } from 'snjs/dist/@types/protocol/payloads/generator';
|
|
||||||
/** A class for handling installation of system extensions */
|
|
||||||
export declare class NativeExtManager extends ApplicationService {
|
|
||||||
extManagerId: string;
|
|
||||||
batchManagerId: string;
|
|
||||||
/** @override */
|
|
||||||
onAppLaunch(): Promise<void>;
|
|
||||||
get extManagerPred(): SNPredicate;
|
|
||||||
get batchManagerPred(): SNPredicate;
|
|
||||||
get extMgrUrl(): any;
|
|
||||||
get batchMgrUrl(): any;
|
|
||||||
reload(): void;
|
|
||||||
resolveExtensionsManager(): Promise<void>;
|
|
||||||
extensionsManagerTemplateContent(): PayloadContent;
|
|
||||||
resolveBatchManager(): Promise<void>;
|
|
||||||
batchManagerTemplateContent(): PayloadContent;
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
/** Platform-specific (i-e desktop/web) behavior is handled by a Platform object. */
|
|
||||||
export interface Platform {
|
|
||||||
getKeychainValue(): Promise<unknown>;
|
|
||||||
setKeychainValue(value: any): Promise<void>;
|
|
||||||
clearKeychainValue(): Promise<void>;
|
|
||||||
}
|
|
||||||
export declare class WebPlatform implements Platform {
|
|
||||||
getKeychainValue(): Promise<unknown>;
|
|
||||||
setKeychainValue(value: any): Promise<void>;
|
|
||||||
clearKeychainValue(): Promise<void>;
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
import { WebApplication } from '@/ui_models/application';
|
|
||||||
import { ApplicationService, WebPrefKey, ApplicationEvent } from 'snjs';
|
|
||||||
export declare class PreferencesManager extends ApplicationService {
|
|
||||||
private userPreferences;
|
|
||||||
private loadingPrefs;
|
|
||||||
private unubscribeStreamItems?;
|
|
||||||
private needsSingletonReload;
|
|
||||||
/** @override */
|
|
||||||
onAppLaunch(): Promise<void>;
|
|
||||||
onAppEvent(event: ApplicationEvent): Promise<void>;
|
|
||||||
deinit(): void;
|
|
||||||
get webApplication(): WebApplication;
|
|
||||||
streamPreferences(): void;
|
|
||||||
private reloadSingleton;
|
|
||||||
syncUserPreferences(): void;
|
|
||||||
getValue(key: WebPrefKey, defaultValue?: any): any;
|
|
||||||
setUserPrefValue(key: WebPrefKey, value: any, sync?: boolean): Promise<void>;
|
|
||||||
}
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { SNTag, SNNote, SNUserPrefs } from 'snjs';
|
|
||||||
import { WebApplication } from '@/ui_models/application';
|
|
||||||
import { Editor } from '@/ui_models/editor';
|
|
||||||
export declare enum AppStateEvent {
|
|
||||||
TagChanged = 1,
|
|
||||||
ActiveEditorChanged = 2,
|
|
||||||
PreferencesChanged = 3,
|
|
||||||
PanelResized = 4,
|
|
||||||
EditorFocused = 5,
|
|
||||||
BeganBackupDownload = 6,
|
|
||||||
EndedBackupDownload = 7,
|
|
||||||
DesktopExtsReady = 8,
|
|
||||||
WindowDidFocus = 9,
|
|
||||||
WindowDidBlur = 10
|
|
||||||
}
|
|
||||||
export declare enum EventSource {
|
|
||||||
UserInteraction = 1,
|
|
||||||
Script = 2
|
|
||||||
}
|
|
||||||
declare type ObserverCallback = (event: AppStateEvent, data?: any) => Promise<void>;
|
|
||||||
export declare class AppState {
|
|
||||||
$rootScope: ng.IRootScopeService;
|
|
||||||
$timeout: ng.ITimeoutService;
|
|
||||||
application: WebApplication;
|
|
||||||
observers: ObserverCallback[];
|
|
||||||
locked: boolean;
|
|
||||||
unsubApp: any;
|
|
||||||
rootScopeCleanup1: any;
|
|
||||||
rootScopeCleanup2: any;
|
|
||||||
onVisibilityChange: any;
|
|
||||||
selectedTag?: SNTag;
|
|
||||||
userPreferences?: SNUserPrefs;
|
|
||||||
multiEditorEnabled: boolean;
|
|
||||||
constructor($rootScope: ng.IRootScopeService, $timeout: ng.ITimeoutService, application: WebApplication);
|
|
||||||
deinit(): void;
|
|
||||||
/**
|
|
||||||
* Creates a new editor if one doesn't exist. If one does, we'll replace the
|
|
||||||
* editor's note with an empty one.
|
|
||||||
*/
|
|
||||||
createEditor(title?: string): void;
|
|
||||||
openEditor(noteUuid: string): Promise<unknown>;
|
|
||||||
getActiveEditor(): Editor;
|
|
||||||
getEditors(): Editor[];
|
|
||||||
closeEditor(editor: Editor): void;
|
|
||||||
closeActiveEditor(): void;
|
|
||||||
closeAllEditors(): void;
|
|
||||||
editorForNote(note: SNNote): Editor | undefined;
|
|
||||||
streamNotesAndTags(): void;
|
|
||||||
addAppEventObserver(): void;
|
|
||||||
isLocked(): boolean;
|
|
||||||
registerVisibilityObservers(): void;
|
|
||||||
/** @returns A function that unregisters this observer */
|
|
||||||
addObserver(callback: ObserverCallback): () => void;
|
|
||||||
notifyEvent(eventName: AppStateEvent, data?: any): Promise<unknown>;
|
|
||||||
setSelectedTag(tag: SNTag): void;
|
|
||||||
/** Returns the tags that are referncing this note */
|
|
||||||
getNoteTags(note: SNNote): SNTag[];
|
|
||||||
/** Returns the notes this tag references */
|
|
||||||
getTagNotes(tag: SNTag): SNNote[];
|
|
||||||
getSelectedTag(): SNTag | undefined;
|
|
||||||
setUserPreferences(preferences: SNUserPrefs): void;
|
|
||||||
panelDidResize(name: string, collapsed: boolean): void;
|
|
||||||
editorDidFocus(eventSource: EventSource): void;
|
|
||||||
beganBackupDownload(): void;
|
|
||||||
endedBackupDownload(success: boolean): void;
|
|
||||||
/**
|
|
||||||
* When the desktop appplication extension server is ready.
|
|
||||||
*/
|
|
||||||
desktopExtensionsReady(): void;
|
|
||||||
}
|
|
||||||
export {};
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
declare type StatusCallback = (string: string) => void;
|
|
||||||
export declare class StatusManager {
|
|
||||||
private _message;
|
|
||||||
private observers;
|
|
||||||
get message(): string;
|
|
||||||
setMessage(message: string): void;
|
|
||||||
onStatusChange(callback: StatusCallback): () => void;
|
|
||||||
private notifyObservers;
|
|
||||||
}
|
|
||||||
export {};
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
import { WebApplication } from '@/ui_models/application';
|
|
||||||
import { ApplicationService, ApplicationEvent } from 'snjs';
|
|
||||||
export declare class ThemeManager extends ApplicationService {
|
|
||||||
private activeThemes;
|
|
||||||
private unregisterDesktop;
|
|
||||||
private unregisterStream;
|
|
||||||
onAppEvent(event: ApplicationEvent): Promise<void>;
|
|
||||||
get webApplication(): WebApplication;
|
|
||||||
deinit(): void;
|
|
||||||
/** @override */
|
|
||||||
onAppStart(): Promise<void>;
|
|
||||||
private activateCachedThemes;
|
|
||||||
private registerObservers;
|
|
||||||
private clearAppThemeState;
|
|
||||||
private deactivateAllThemes;
|
|
||||||
private activateTheme;
|
|
||||||
private deactivateTheme;
|
|
||||||
private cacheThemes;
|
|
||||||
private decacheThemes;
|
|
||||||
private getCachedThemes;
|
|
||||||
}
|
|
||||||
46
dist/@types/app/assets/javascripts/strings.d.ts
vendored
46
dist/@types/app/assets/javascripts/strings.d.ts
vendored
@@ -1,46 +0,0 @@
|
|||||||
/** @generic */
|
|
||||||
export declare const STRING_SESSION_EXPIRED = "Your session has expired. New changes will not be pulled in. Please sign in to refresh your session.";
|
|
||||||
export declare const STRING_DEFAULT_FILE_ERROR = "Please use FileSafe or the Bold Editor to attach images and files. Learn more at standardnotes.org/filesafe.";
|
|
||||||
export declare const STRING_GENERIC_SYNC_ERROR = "There was an error syncing. Please try again. If all else fails, try signing out and signing back in.";
|
|
||||||
export declare function StringSyncException(data: any): string;
|
|
||||||
/** @footer */
|
|
||||||
export declare const STRING_NEW_UPDATE_READY = "A new update is ready to install. Please use the top-level 'Updates' menu to manage installation.";
|
|
||||||
/** @tags */
|
|
||||||
export declare const STRING_DELETE_TAG = "Are you sure you want to delete this tag? Note: deleting a tag will not delete its notes.";
|
|
||||||
/** @editor */
|
|
||||||
export declare const STRING_SAVING_WHILE_DOCUMENT_HIDDEN = "Attempting to save an item while the application is hidden. To protect data integrity, please refresh the application window and try again.";
|
|
||||||
export declare const STRING_DELETED_NOTE = "The note you are attempting to edit has been deleted, and is awaiting sync. Changes you make will be disregarded.";
|
|
||||||
export declare const STRING_INVALID_NOTE = "The note you are attempting to save can not be found or has been deleted. Changes you make will not be synced. Please copy this note's text and start a new note.";
|
|
||||||
export declare const STRING_ELLIPSES = "...";
|
|
||||||
export declare const STRING_GENERIC_SAVE_ERROR = "There was an error saving your note. Please try again.";
|
|
||||||
export declare const STRING_DELETE_PLACEHOLDER_ATTEMPT = "This note is a placeholder and cannot be deleted. To remove from your list, simply navigate to a different note.";
|
|
||||||
export declare const STRING_ARCHIVE_LOCKED_ATTEMPT = "This note is locked. If you'd like to archive it, unlock it, and try again.";
|
|
||||||
export declare const STRING_UNARCHIVE_LOCKED_ATTEMPT = "This note is locked. If you'd like to archive it, unlock it, and try again.";
|
|
||||||
export declare const STRING_DELETE_LOCKED_ATTEMPT = "This note is locked. If you'd like to delete it, unlock it, and try again.";
|
|
||||||
export declare function StringDeleteNote(title: string, permanently: boolean): string;
|
|
||||||
export declare function StringEmptyTrash(count: number): string;
|
|
||||||
/** @account */
|
|
||||||
export declare const STRING_ACCOUNT_MENU_UNCHECK_MERGE = "Unchecking this option means any of the notes you have written while you were signed out will be deleted. Are you sure you want to discard these notes?";
|
|
||||||
export declare const STRING_SIGN_OUT_CONFIRMATION = "Are you sure you want to end your session? This will delete all local items and extensions.";
|
|
||||||
export declare const STRING_ERROR_DECRYPTING_IMPORT = "There was an error decrypting your items. Make sure the password you entered is correct and try again.";
|
|
||||||
export declare const STRING_E2E_ENABLED = "End-to-end encryption is enabled. Your data is encrypted on your device first, then synced to your private cloud.";
|
|
||||||
export declare const STRING_LOCAL_ENC_ENABLED = "Encryption is enabled. Your data is encrypted using your passcode before it is saved to your device storage.";
|
|
||||||
export declare const STRING_ENC_NOT_ENABLED = "Encryption is not enabled. Sign in, register, or add a passcode lock to enable encryption.";
|
|
||||||
export declare const STRING_IMPORT_SUCCESS = "Your data has been successfully imported.";
|
|
||||||
export declare const STRING_REMOVE_PASSCODE_CONFIRMATION = "Are you sure you want to remove your application passcode?";
|
|
||||||
export declare const STRING_REMOVE_PASSCODE_OFFLINE_ADDENDUM = " This will remove encryption from your local data.";
|
|
||||||
export declare const STRING_NON_MATCHING_PASSCODES = "The two passcodes you entered do not match. Please try again.";
|
|
||||||
export declare const STRING_NON_MATCHING_PASSWORDS = "The two passwords you entered do not match. Please try again.";
|
|
||||||
export declare const STRING_GENERATING_LOGIN_KEYS = "Generating Login Keys...";
|
|
||||||
export declare const STRING_GENERATING_REGISTER_KEYS = "Generating Account Keys...";
|
|
||||||
export declare const STRING_INVALID_IMPORT_FILE = "Unable to open file. Ensure it is a proper JSON file and try again.";
|
|
||||||
export declare function StringImportError(errorCount: number): string;
|
|
||||||
export declare const STRING_UNSUPPORTED_BACKUP_FILE_VERSION = "This backup file was created using an unsupported version of the application and cannot be imported here. Please update your application and try again.";
|
|
||||||
/** @password_change */
|
|
||||||
export declare const STRING_FAILED_PASSWORD_CHANGE = "There was an error re-encrypting your items. Your password was changed, but not all your items were properly re-encrypted and synced. You should try syncing again. If all else fails, you should restore your notes from backup.";
|
|
||||||
export declare const STRING_CONFIRM_APP_QUIT_DURING_UPGRADE: string;
|
|
||||||
export declare const STRING_CONFIRM_APP_QUIT_DURING_PASSCODE_CHANGE: string;
|
|
||||||
export declare const STRING_CONFIRM_APP_QUIT_DURING_PASSCODE_REMOVAL: string;
|
|
||||||
export declare const STRING_UPGRADE_ACCOUNT_CONFIRM_TITLE = "Encryption upgrade available";
|
|
||||||
export declare const STRING_UPGRADE_ACCOUNT_CONFIRM_TEXT: string;
|
|
||||||
export declare const STRING_UPGRADE_ACCOUNT_CONFIRM_BUTTON = "Upgrade";
|
|
||||||
44
dist/@types/app/assets/javascripts/types.d.ts
vendored
44
dist/@types/app/assets/javascripts/types.d.ts
vendored
@@ -1,44 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { SNComponent } from 'snjs';
|
|
||||||
export declare class WebDirective implements ng.IDirective {
|
|
||||||
controller?: string | ng.Injectable<ng.IControllerConstructor>;
|
|
||||||
controllerAs?: string;
|
|
||||||
bindToController?: boolean | {
|
|
||||||
[boundProperty: string]: string;
|
|
||||||
};
|
|
||||||
restrict?: string;
|
|
||||||
replace?: boolean;
|
|
||||||
scope?: boolean | {
|
|
||||||
[boundProperty: string]: string;
|
|
||||||
};
|
|
||||||
template?: string | ((tElement: any, tAttrs: any) => string);
|
|
||||||
transclude?: boolean;
|
|
||||||
}
|
|
||||||
export declare enum PasswordWizardType {
|
|
||||||
ChangePassword = 1,
|
|
||||||
AccountUpgrade = 2
|
|
||||||
}
|
|
||||||
export interface PasswordWizardScope extends Partial<ng.IScope> {
|
|
||||||
type: PasswordWizardType;
|
|
||||||
application: any;
|
|
||||||
}
|
|
||||||
export interface PermissionsModalScope extends Partial<ng.IScope> {
|
|
||||||
application: any;
|
|
||||||
component: SNComponent;
|
|
||||||
permissionsString: string;
|
|
||||||
callback: (approved: boolean) => void;
|
|
||||||
}
|
|
||||||
export interface AccountSwitcherScope extends Partial<ng.IScope> {
|
|
||||||
application: any;
|
|
||||||
}
|
|
||||||
export declare type PanelPuppet = {
|
|
||||||
onReady?: () => void;
|
|
||||||
ready?: boolean;
|
|
||||||
setWidth?: (width: number) => void;
|
|
||||||
setLeft?: (left: number) => void;
|
|
||||||
isCollapsed?: () => boolean;
|
|
||||||
flash?: () => void;
|
|
||||||
};
|
|
||||||
export declare type FooterStatus = {
|
|
||||||
string: string;
|
|
||||||
};
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { SNTag, SNNote, SNUserPrefs, DeinitSource, UuidString } from 'snjs';
|
|
||||||
import { WebApplication } from '@/ui_models/application';
|
|
||||||
import { Editor } from '@/ui_models/editor';
|
|
||||||
export declare enum AppStateEvent {
|
|
||||||
TagChanged = 1,
|
|
||||||
ActiveEditorChanged = 2,
|
|
||||||
PreferencesChanged = 3,
|
|
||||||
PanelResized = 4,
|
|
||||||
EditorFocused = 5,
|
|
||||||
BeganBackupDownload = 6,
|
|
||||||
EndedBackupDownload = 7,
|
|
||||||
WindowDidFocus = 9,
|
|
||||||
WindowDidBlur = 10
|
|
||||||
}
|
|
||||||
export declare enum EventSource {
|
|
||||||
UserInteraction = 1,
|
|
||||||
Script = 2
|
|
||||||
}
|
|
||||||
declare type ObserverCallback = (event: AppStateEvent, data?: any) => Promise<void>;
|
|
||||||
declare class ActionsMenuState {
|
|
||||||
hiddenExtensions: Record<UuidString, boolean>;
|
|
||||||
constructor();
|
|
||||||
toggleExtensionVisibility(uuid: UuidString): void;
|
|
||||||
deinit(): void;
|
|
||||||
}
|
|
||||||
export declare class AppState {
|
|
||||||
$rootScope: ng.IRootScopeService;
|
|
||||||
$timeout: ng.ITimeoutService;
|
|
||||||
application: WebApplication;
|
|
||||||
observers: ObserverCallback[];
|
|
||||||
locked: boolean;
|
|
||||||
unsubApp: any;
|
|
||||||
rootScopeCleanup1: any;
|
|
||||||
rootScopeCleanup2: any;
|
|
||||||
onVisibilityChange: any;
|
|
||||||
selectedTag?: SNTag;
|
|
||||||
userPreferences?: SNUserPrefs;
|
|
||||||
multiEditorEnabled: boolean;
|
|
||||||
showBetaWarning: boolean;
|
|
||||||
actionsMenu: ActionsMenuState;
|
|
||||||
constructor($rootScope: ng.IRootScopeService, $timeout: ng.ITimeoutService, application: WebApplication);
|
|
||||||
deinit(source: DeinitSource): void;
|
|
||||||
disableBetaWarning(): void;
|
|
||||||
enableBetaWarning(): void;
|
|
||||||
clearBetaWarning(): void;
|
|
||||||
private determineBetaWarningValue;
|
|
||||||
/**
|
|
||||||
* Creates a new editor if one doesn't exist. If one does, we'll replace the
|
|
||||||
* editor's note with an empty one.
|
|
||||||
*/
|
|
||||||
createEditor(title?: string): Promise<void>;
|
|
||||||
openEditor(noteUuid: string): Promise<unknown>;
|
|
||||||
getActiveEditor(): Editor;
|
|
||||||
getEditors(): Editor[];
|
|
||||||
closeEditor(editor: Editor): void;
|
|
||||||
closeActiveEditor(): void;
|
|
||||||
closeAllEditors(): void;
|
|
||||||
editorForNote(note: SNNote): Editor | undefined;
|
|
||||||
streamNotesAndTags(): void;
|
|
||||||
addAppEventObserver(): void;
|
|
||||||
isLocked(): boolean;
|
|
||||||
registerVisibilityObservers(): void;
|
|
||||||
/** @returns A function that unregisters this observer */
|
|
||||||
addObserver(callback: ObserverCallback): () => void;
|
|
||||||
notifyEvent(eventName: AppStateEvent, data?: any): Promise<unknown>;
|
|
||||||
setSelectedTag(tag: SNTag): void;
|
|
||||||
/** Returns the tags that are referncing this note */
|
|
||||||
getNoteTags(note: SNNote): SNTag[];
|
|
||||||
/** Returns the notes this tag references */
|
|
||||||
getTagNotes(tag: SNTag): SNNote[];
|
|
||||||
getSelectedTag(): SNTag | undefined;
|
|
||||||
setUserPreferences(preferences: SNUserPrefs): void;
|
|
||||||
panelDidResize(name: string, collapsed: boolean): void;
|
|
||||||
editorDidFocus(eventSource: EventSource): void;
|
|
||||||
beganBackupDownload(): void;
|
|
||||||
endedBackupDownload(success: boolean): void;
|
|
||||||
}
|
|
||||||
export {};
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { PermissionDialog } from 'snjs/dist/@types/services/component_manager';
|
|
||||||
import { ComponentGroup } from './component_group';
|
|
||||||
import { EditorGroup } from '@/ui_models/editor_group';
|
|
||||||
import { PasswordWizardType } from '@/types';
|
|
||||||
import { SNApplication, Challenge, ProtectedAction, SNComponent } from 'snjs';
|
|
||||||
import { WebDeviceInterface } from '@/web_device_interface';
|
|
||||||
import { DesktopManager, AutolockService, ArchiveManager, NativeExtManager, StatusManager, ThemeManager, PreferencesManager, KeyboardManager } from '@/services';
|
|
||||||
import { AppState } from '@/ui_models/app_state';
|
|
||||||
import { Bridge } from '@/services/bridge';
|
|
||||||
import { DeinitSource } from 'snjs/dist/@types/types';
|
|
||||||
declare type WebServices = {
|
|
||||||
appState: AppState;
|
|
||||||
desktopService: DesktopManager;
|
|
||||||
autolockService: AutolockService;
|
|
||||||
archiveService: ArchiveManager;
|
|
||||||
nativeExtService: NativeExtManager;
|
|
||||||
statusManager: StatusManager;
|
|
||||||
themeService: ThemeManager;
|
|
||||||
prefsService: PreferencesManager;
|
|
||||||
keyboardService: KeyboardManager;
|
|
||||||
};
|
|
||||||
export declare class WebApplication extends SNApplication {
|
|
||||||
private $compile;
|
|
||||||
private bridge;
|
|
||||||
private scope?;
|
|
||||||
private webServices;
|
|
||||||
private currentAuthenticationElement?;
|
|
||||||
editorGroup: EditorGroup;
|
|
||||||
componentGroup: ComponentGroup;
|
|
||||||
constructor(deviceInterface: WebDeviceInterface, identifier: string, $compile: ng.ICompileService, scope: ng.IScope, defaultSyncServerHost: string, bridge: Bridge);
|
|
||||||
/** @override */
|
|
||||||
deinit(source: DeinitSource): void;
|
|
||||||
onStart(): void;
|
|
||||||
setWebServices(services: WebServices): void;
|
|
||||||
getAppState(): AppState;
|
|
||||||
getDesktopService(): DesktopManager;
|
|
||||||
getAutolockService(): AutolockService;
|
|
||||||
getArchiveService(): ArchiveManager;
|
|
||||||
getNativeExtService(): NativeExtManager;
|
|
||||||
getStatusManager(): StatusManager;
|
|
||||||
getThemeService(): ThemeManager;
|
|
||||||
getPrefsService(): PreferencesManager;
|
|
||||||
getKeyboardService(): KeyboardManager;
|
|
||||||
checkForSecurityUpdate(): Promise<boolean>;
|
|
||||||
presentPasswordWizard(type: PasswordWizardType): void;
|
|
||||||
promptForChallenge(challenge: Challenge): void;
|
|
||||||
presentPrivilegesModal(action: ProtectedAction, onSuccess?: any, onCancel?: any): Promise<void>;
|
|
||||||
presentPrivilegesManagementModal(): void;
|
|
||||||
authenticationInProgress(): boolean;
|
|
||||||
get applicationElement(): JQLite;
|
|
||||||
presentPasswordModal(callback: () => void): void;
|
|
||||||
presentRevisionPreviewModal(uuid: string, content: any): void;
|
|
||||||
openAccountSwitcher(): void;
|
|
||||||
openModalComponent(component: SNComponent): void;
|
|
||||||
presentPermissionsDialog(dialog: PermissionDialog): void;
|
|
||||||
}
|
|
||||||
export {};
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { SNApplicationGroup } from 'snjs';
|
|
||||||
import { Bridge } from '@/services/bridge';
|
|
||||||
export declare class ApplicationGroup extends SNApplicationGroup {
|
|
||||||
private defaultSyncServerHost;
|
|
||||||
private bridge;
|
|
||||||
$compile: ng.ICompileService;
|
|
||||||
$rootScope: ng.IRootScopeService;
|
|
||||||
$timeout: ng.ITimeoutService;
|
|
||||||
constructor($compile: ng.ICompileService, $rootScope: ng.IRootScopeService, $timeout: ng.ITimeoutService, defaultSyncServerHost: string, bridge: Bridge);
|
|
||||||
initialize(callback?: any): Promise<void>;
|
|
||||||
private createApplication;
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
import { SNComponent, ComponentArea } from 'snjs';
|
|
||||||
import { WebApplication } from './application';
|
|
||||||
import { UuidString } from 'snjs/dist/@types/types';
|
|
||||||
export declare class ComponentGroup {
|
|
||||||
private application;
|
|
||||||
changeObservers: any[];
|
|
||||||
activeComponents: UuidString[];
|
|
||||||
constructor(application: WebApplication);
|
|
||||||
get componentManager(): import("snjs/dist/@types").SNComponentManager;
|
|
||||||
deinit(): void;
|
|
||||||
activateComponent(component: SNComponent): Promise<void>;
|
|
||||||
deactivateComponent(component: SNComponent, notify?: boolean): Promise<void>;
|
|
||||||
deactivateComponentForArea(area: ComponentArea): Promise<void>;
|
|
||||||
activeComponentForArea(area: ComponentArea): SNComponent;
|
|
||||||
activeComponentsForArea(area: ComponentArea): SNComponent[];
|
|
||||||
allComponentsForArea(area: ComponentArea): SNComponent[];
|
|
||||||
private allActiveComponents;
|
|
||||||
/**
|
|
||||||
* Notifies observer when the active editor has changed.
|
|
||||||
*/
|
|
||||||
addChangeObserver(callback: () => void): () => void;
|
|
||||||
private notifyObservers;
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
import { SNNote, PayloadSource } from 'snjs';
|
|
||||||
import { WebApplication } from './application';
|
|
||||||
export declare class Editor {
|
|
||||||
note: SNNote;
|
|
||||||
private application;
|
|
||||||
private _onNoteChange?;
|
|
||||||
private _onNoteValueChange?;
|
|
||||||
private removeStreamObserver?;
|
|
||||||
isTemplateNote: boolean;
|
|
||||||
constructor(application: WebApplication, noteUuid?: string, noteTitle?: string);
|
|
||||||
private streamItems;
|
|
||||||
deinit(): void;
|
|
||||||
private handleNoteStream;
|
|
||||||
insertTemplatedNote(): Promise<import("snjs/dist/@types").SNItem>;
|
|
||||||
/**
|
|
||||||
* Reverts the editor to a blank state, removing any existing note from view,
|
|
||||||
* and creating a placeholder note.
|
|
||||||
*/
|
|
||||||
reset(noteTitle?: string): Promise<void>;
|
|
||||||
/**
|
|
||||||
* Register to be notified when the editor's note changes.
|
|
||||||
*/
|
|
||||||
onNoteChange(callback: () => void): void;
|
|
||||||
clearNoteChangeListener(): void;
|
|
||||||
/**
|
|
||||||
* Register to be notified when the editor's note's values change
|
|
||||||
* (and thus a new object reference is created)
|
|
||||||
*/
|
|
||||||
onNoteValueChange(callback: (note: SNNote, source?: PayloadSource) => void): void;
|
|
||||||
/**
|
|
||||||
* Sets the editor contents by setting its note.
|
|
||||||
*/
|
|
||||||
setNote(note: SNNote, isTemplate?: boolean): void;
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
import { Editor } from './editor';
|
|
||||||
import { WebApplication } from './application';
|
|
||||||
declare type EditorGroupChangeCallback = () => void;
|
|
||||||
export declare class EditorGroup {
|
|
||||||
editors: Editor[];
|
|
||||||
private application;
|
|
||||||
changeObservers: EditorGroupChangeCallback[];
|
|
||||||
constructor(application: WebApplication);
|
|
||||||
deinit(): void;
|
|
||||||
createEditor(noteUuid?: string, noteTitle?: string): void;
|
|
||||||
deleteEditor(editor: Editor): void;
|
|
||||||
closeEditor(editor: Editor): void;
|
|
||||||
closeActiveEditor(): void;
|
|
||||||
closeAllEditors(): void;
|
|
||||||
get activeEditor(): Editor;
|
|
||||||
/**
|
|
||||||
* Notifies observer when the active editor has changed.
|
|
||||||
*/
|
|
||||||
addChangeObserver(callback: EditorGroupChangeCallback): () => void;
|
|
||||||
private notifyObservers;
|
|
||||||
}
|
|
||||||
export {};
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
export declare const isDev: boolean;
|
|
||||||
export declare function getPlatformString(): string;
|
|
||||||
export declare function dateToLocalizedString(date: Date): string;
|
|
||||||
/** Via https://davidwalsh.name/javascript-debounce-function */
|
|
||||||
export declare function debounce(this: any, func: any, wait: number, immediate?: boolean): () => void;
|
|
||||||
export declare function preventRefreshing(message: string, operation: () => Promise<void> | void): Promise<void>;
|
|
||||||
export declare function isDesktopApplication(): boolean;
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
/// <reference types="angular" />
|
|
||||||
import { ApplicationEvent } from 'snjs';
|
|
||||||
import { WebApplication } from '@/ui_models/application';
|
|
||||||
export declare type CtrlState = Partial<Record<string, any>>;
|
|
||||||
export declare type CtrlProps = Partial<Record<string, any>>;
|
|
||||||
export declare class PureViewCtrl<P = CtrlProps, S = CtrlState> {
|
|
||||||
props: P;
|
|
||||||
$timeout: ng.ITimeoutService;
|
|
||||||
/** Passed through templates */
|
|
||||||
application: WebApplication;
|
|
||||||
state: S;
|
|
||||||
private unsubApp;
|
|
||||||
private unsubState;
|
|
||||||
private stateTimeout?;
|
|
||||||
/**
|
|
||||||
* Subclasses can optionally add an ng-if=ctrl.templateReady to make sure that
|
|
||||||
* no Angular handlebars/syntax render in the UI before display data is ready.
|
|
||||||
*/
|
|
||||||
protected templateReady: boolean;
|
|
||||||
constructor($timeout: ng.ITimeoutService, props?: P);
|
|
||||||
$onInit(): void;
|
|
||||||
deinit(): void;
|
|
||||||
$onDestroy(): void;
|
|
||||||
get appState(): import("../../ui_models/app_state").AppState;
|
|
||||||
/** @private */
|
|
||||||
resetState(): Promise<void>;
|
|
||||||
/** @override */
|
|
||||||
getInitialState(): S;
|
|
||||||
setState(state: Partial<S>): Promise<unknown>;
|
|
||||||
/** @returns a promise that resolves after the UI has been updated. */
|
|
||||||
flushUI(): import("angular").IPromise<void>;
|
|
||||||
initProps(props: CtrlProps): void;
|
|
||||||
addAppStateObserver(): void;
|
|
||||||
onAppStateEvent(eventName: any, data: any): void;
|
|
||||||
addAppEventObserver(): void;
|
|
||||||
onAppEvent(eventName: ApplicationEvent): void;
|
|
||||||
/** @override */
|
|
||||||
onAppStart(): Promise<void>;
|
|
||||||
onLocalDataLoaded(): void;
|
|
||||||
onAppLaunch(): Promise<void>;
|
|
||||||
onAppKeyChange(): Promise<void>;
|
|
||||||
onAppIncrementalSync(): void;
|
|
||||||
onAppFullSync(): void;
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from '@/types';
|
|
||||||
export declare class AccountSwitcher extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from '@/types';
|
|
||||||
export declare class ApplicationView extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from '@/types';
|
|
||||||
export declare class ApplicationGroupView extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from '@/types';
|
|
||||||
export declare class ApplicationGroupView extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from '@/types';
|
|
||||||
export declare class ChallengeModal extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
export declare const PANEL_NAME_NOTES = "notes";
|
|
||||||
export declare const PANEL_NAME_TAGS = "tags";
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from '@/types';
|
|
||||||
export declare class EditorView extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class EditorGroupView extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class EditorGroupView extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from '@/types';
|
|
||||||
export declare class FooterView extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
export { PureViewCtrl } from './abstract/pure_view_ctrl';
|
|
||||||
export { ApplicationGroupView } from './application_group/application_group_view';
|
|
||||||
export { ApplicationView } from './application/application_view';
|
|
||||||
export { EditorGroupView } from './editor_group/editor_group_view';
|
|
||||||
export { EditorView } from './editor/editor_view';
|
|
||||||
export { FooterView } from './footer/footer_view';
|
|
||||||
export { NotesView } from './notes/notes_view';
|
|
||||||
export { TagsView } from './tags/tags_view';
|
|
||||||
export { ChallengeModal } from './challenge_modal/challenge_modal';
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
import { SNNote } from 'snjs';
|
|
||||||
export declare enum NoteSortKey {
|
|
||||||
CreatedAt = "created_at",
|
|
||||||
UserUpdatedAt = "userModifiedDate",
|
|
||||||
Title = "title",
|
|
||||||
/** @legacy Use UserUpdatedAt instead */
|
|
||||||
UpdatedAt = "updated_at",
|
|
||||||
/** @legacy Use UserUpdatedAt instead */
|
|
||||||
ClientUpdatedAt = "client_updated_at"
|
|
||||||
}
|
|
||||||
export declare function notePassesFilter(note: SNNote, showArchived: boolean, hidePinned: boolean, filterText: string): boolean;
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from './../../types';
|
|
||||||
export declare class NotesView extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { WebDirective } from '@/types';
|
|
||||||
export declare class TagsView extends WebDirective {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
import { DeviceInterface, SNApplication, ApplicationIdentifier } from 'snjs';
|
|
||||||
import { Bridge } from './services/bridge';
|
|
||||||
export declare class WebDeviceInterface extends DeviceInterface {
|
|
||||||
private bridge;
|
|
||||||
private databases;
|
|
||||||
constructor(timeout: any, bridge: Bridge);
|
|
||||||
setApplication(application: SNApplication): void;
|
|
||||||
private databaseForIdentifier;
|
|
||||||
deinit(): void;
|
|
||||||
getRawStorageValue(key: string): Promise<any>;
|
|
||||||
getAllRawStorageKeyValues(): Promise<{
|
|
||||||
key: string;
|
|
||||||
value: any;
|
|
||||||
}[]>;
|
|
||||||
setRawStorageValue(key: string, value: any): Promise<void>;
|
|
||||||
removeRawStorageValue(key: string): Promise<void>;
|
|
||||||
removeAllRawStorageValues(): Promise<void>;
|
|
||||||
openDatabase(identifier: ApplicationIdentifier): Promise<{
|
|
||||||
isNewDatabase?: boolean | undefined;
|
|
||||||
} | undefined>;
|
|
||||||
getAllRawDatabasePayloads(identifier: ApplicationIdentifier): Promise<any[]>;
|
|
||||||
saveRawDatabasePayload(payload: any, identifier: ApplicationIdentifier): Promise<void>;
|
|
||||||
saveRawDatabasePayloads(payloads: any[], identifier: ApplicationIdentifier): Promise<void>;
|
|
||||||
removeRawDatabasePayloadWithId(id: string, identifier: ApplicationIdentifier): Promise<void>;
|
|
||||||
removeAllRawDatabasePayloads(identifier: ApplicationIdentifier): Promise<void>;
|
|
||||||
getNamespacedKeychainValue(identifier: ApplicationIdentifier): Promise<any>;
|
|
||||||
setNamespacedKeychainValue(value: any, identifier: ApplicationIdentifier): Promise<void>;
|
|
||||||
clearNamespacedKeychainValue(identifier: ApplicationIdentifier): Promise<void>;
|
|
||||||
getRawKeychainValue(): Promise<any>;
|
|
||||||
clearRawKeychainValue(): Promise<void>;
|
|
||||||
openUrl(url: string): void;
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user