| 
									
										
										
										
											2017-11-04 19:38:50 -04:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  | const noteEditor = (function() { | 
					
						
							|  |  |  |     const noteTitleEl = $("#note-title"); | 
					
						
							|  |  |  |     const noteDetailEl = $('#note-detail'); | 
					
						
							| 
									
										
										
										
											2018-01-20 21:56:03 -05:00
										 |  |  |     const noteDetailCodeEl = $('#note-detail-code'); | 
					
						
							| 
									
										
										
										
											2018-01-23 23:41:22 -05:00
										 |  |  |     const noteDetailRenderEl = $('#note-detail-render'); | 
					
						
							| 
									
										
										
										
											2017-11-14 22:21:56 -05:00
										 |  |  |     const protectButton = $("#protect-button"); | 
					
						
							|  |  |  |     const unprotectButton = $("#unprotect-button"); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     const noteDetailWrapperEl = $("#note-detail-wrapper"); | 
					
						
							| 
									
										
										
										
											2017-12-25 09:46:11 -05:00
										 |  |  |     const noteIdDisplayEl = $("#note-id-display"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-02 10:37:12 -05:00
										 |  |  |     let editor = null; | 
					
						
							| 
									
										
										
										
											2018-01-20 21:56:03 -05:00
										 |  |  |     let codeEditor = null; | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     let currentNote = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     let noteChangeDisabled = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     let isNoteChanged = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function getCurrentNote() { | 
					
						
							|  |  |  |         return currentNote; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function getCurrentNoteId() { | 
					
						
							|  |  |  |         return currentNote ? currentNote.detail.note_id : null; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function noteChanged() { | 
					
						
							|  |  |  |         if (noteChangeDisabled) { | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         isNoteChanged = true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-05 10:06:49 -05:00
										 |  |  |     async function reload() { | 
					
						
							|  |  |  |         // no saving here
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         await loadNoteToEditor(getCurrentNoteId()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async function switchToNote(noteId) { | 
					
						
							|  |  |  |         if (getCurrentNoteId() !== noteId) { | 
					
						
							|  |  |  |             await saveNoteIfChanged(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             await loadNoteToEditor(noteId); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     async function saveNoteIfChanged() { | 
					
						
							|  |  |  |         if (!isNoteChanged) { | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const note = noteEditor.getCurrentNote(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         updateNoteFromInputs(note); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         await saveNoteToServer(note); | 
					
						
							| 
									
										
										
										
											2017-11-14 22:50:56 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (note.detail.is_protected) { | 
					
						
							|  |  |  |             protected_session.touchProtectedSession(); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function updateNoteFromInputs(note) { | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  |         if (note.detail.type === 'text') { | 
					
						
							|  |  |  |             note.detail.note_text = editor.getData(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         else if (note.detail.type === 'code') { | 
					
						
							|  |  |  |             note.detail.note_text = codeEditor.getValue(); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-01-23 23:41:22 -05:00
										 |  |  |         else if (note.detail.type === 'render') { | 
					
						
							|  |  |  |             // nothing
 | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  |         else { | 
					
						
							|  |  |  |             throwError("Unrecognized type: " + note.detail.type); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         const title = noteTitleEl.val(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         note.detail.note_title = title; | 
					
						
							| 
									
										
										
										
											2017-11-22 19:58:56 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-28 19:38:33 -05:00
										 |  |  |         noteTree.setNoteTitle(note.detail.note_id, title); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async function saveNoteToServer(note) { | 
					
						
							| 
									
										
										
										
											2017-11-28 20:52:38 -05:00
										 |  |  |         await server.put('notes/' + note.detail.note_id, note); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         isNoteChanged = false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-08 22:33:08 -05:00
										 |  |  |         showMessage("Saved!"); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-14 22:21:56 -05:00
										 |  |  |     function setNoteBackgroundIfProtected(note) { | 
					
						
							| 
									
										
										
										
											2017-12-25 09:30:37 -05:00
										 |  |  |         const isProtected = !!note.detail.is_protected; | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-25 09:30:37 -05:00
										 |  |  |         noteDetailWrapperEl.toggleClass("protected", isProtected); | 
					
						
							|  |  |  |         protectButton.toggle(!isProtected); | 
					
						
							|  |  |  |         unprotectButton.toggle(isProtected); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-23 19:40:47 -05:00
										 |  |  |     let isNewNoteCreated = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function newNoteCreated() { | 
					
						
							|  |  |  |         isNewNoteCreated = true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     async function loadNoteToEditor(noteId) { | 
					
						
							| 
									
										
										
										
											2017-12-10 12:56:59 -05:00
										 |  |  |         currentNote = await loadNote(noteId); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-23 19:40:47 -05:00
										 |  |  |         if (isNewNoteCreated) { | 
					
						
							|  |  |  |             isNewNoteCreated = false; | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |             noteTitleEl.focus().select(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-25 09:46:11 -05:00
										 |  |  |         noteIdDisplayEl.html(noteId); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-14 22:36:36 -05:00
										 |  |  |         await protected_session.ensureProtectedSession(currentNote.detail.is_protected, false); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-14 22:50:56 -05:00
										 |  |  |         if (currentNote.detail.is_protected) { | 
					
						
							|  |  |  |             protected_session.touchProtectedSession(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-15 00:10:11 -05:00
										 |  |  |         // this might be important if we focused on protected note when not in protected note and we got a dialog
 | 
					
						
							|  |  |  |         // to login, but we chose instead to come to another node - at that point the dialog is still visible and this will close it.
 | 
					
						
							|  |  |  |         protected_session.ensureDialogIsClosed(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |         noteDetailWrapperEl.show(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         noteChangeDisabled = true; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-29 21:13:12 -05:00
										 |  |  |         noteTitleEl.val(currentNote.detail.note_title); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 23:36:09 -05:00
										 |  |  |         noteType.setNoteType(currentNote.detail.type); | 
					
						
							|  |  |  |         noteType.setNoteMime(currentNote.detail.mime); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-20 21:56:03 -05:00
										 |  |  |         if (currentNote.detail.type === 'text') { | 
					
						
							|  |  |  |             // temporary workaround for https://github.com/ckeditor/ckeditor5-enter/issues/49
 | 
					
						
							|  |  |  |             editor.setData(currentNote.detail.note_text ? currentNote.detail.note_text : "<p></p>"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             noteDetailEl.show(); | 
					
						
							|  |  |  |             noteDetailCodeEl.hide(); | 
					
						
							| 
									
										
										
										
											2018-01-23 23:41:22 -05:00
										 |  |  |             noteDetailRenderEl.hide(); | 
					
						
							| 
									
										
										
										
											2018-01-20 21:56:03 -05:00
										 |  |  |         } | 
					
						
							|  |  |  |         else if (currentNote.detail.type === 'code') { | 
					
						
							|  |  |  |             noteDetailEl.hide(); | 
					
						
							|  |  |  |             noteDetailCodeEl.show(); | 
					
						
							| 
									
										
										
										
											2018-01-23 23:41:22 -05:00
										 |  |  |             noteDetailRenderEl.hide(); | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |             // this needs to happen after the element is shown, otherwise the editor won't be refresheds
 | 
					
						
							|  |  |  |             codeEditor.setValue(currentNote.detail.note_text); | 
					
						
							| 
									
										
										
										
											2018-01-22 23:07:04 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |             const info = CodeMirror.findModeByMIME(currentNote.detail.mime); | 
					
						
							| 
									
										
										
										
											2018-01-23 19:51:16 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-22 23:07:04 -05:00
										 |  |  |             if (info) { | 
					
						
							| 
									
										
										
										
											2018-01-23 19:51:16 -05:00
										 |  |  |                 codeEditor.setOption("mode", info.mime); | 
					
						
							|  |  |  |                 CodeMirror.autoLoadMode(codeEditor, info.mode); | 
					
						
							| 
									
										
										
										
											2018-01-22 23:07:04 -05:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2018-01-20 21:56:03 -05:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-01-23 23:41:22 -05:00
										 |  |  |         else if (currentNote.detail.type === 'render') { | 
					
						
							|  |  |  |             noteDetailEl.hide(); | 
					
						
							|  |  |  |             noteDetailCodeEl.hide(); | 
					
						
							|  |  |  |             noteDetailRenderEl.show(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             const subTree = await server.get('script/subtree/' + getCurrentNoteId()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             noteDetailRenderEl.html(subTree); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-01-20 21:56:03 -05:00
										 |  |  |         else { | 
					
						
							|  |  |  |             throwError("Unrecognized type " + currentNote.detail.type); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         noteChangeDisabled = false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-14 22:21:56 -05:00
										 |  |  |         setNoteBackgroundIfProtected(currentNote); | 
					
						
							| 
									
										
										
										
											2017-12-25 09:30:37 -05:00
										 |  |  |         noteTree.setNoteTreeBackgroundBasedOnProtectedStatus(noteId); | 
					
						
							| 
									
										
										
										
											2017-11-06 22:21:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-28 20:13:54 -05:00
										 |  |  |         // after loading new note make sure editor is scrolled to the top
 | 
					
						
							|  |  |  |         noteDetailWrapperEl.scrollTop(0); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async function loadNote(noteId) { | 
					
						
							| 
									
										
										
										
											2017-11-28 20:52:38 -05:00
										 |  |  |         return await server.get('notes/' + noteId); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-02 13:54:16 -05:00
										 |  |  |     function getEditor() { | 
					
						
							|  |  |  |         return editor; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-22 22:14:03 -05:00
										 |  |  |     function focus() { | 
					
						
							|  |  |  |         const note = getCurrentNote(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (note.detail.type === 'text') { | 
					
						
							|  |  |  |             noteDetailEl.focus(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         else if (note.detail.type === 'code') { | 
					
						
							|  |  |  |             codeEditor.focus(); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-01-23 23:41:22 -05:00
										 |  |  |         else if (note.detail.type === 'render') { | 
					
						
							|  |  |  |             // do nothing
 | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-01-22 22:14:03 -05:00
										 |  |  |         else { | 
					
						
							|  |  |  |             throwError('Unrecognized type: ' + note.detail.type); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-23 20:14:10 -05:00
										 |  |  |     function getCurrentNoteType() { | 
					
						
							|  |  |  |         const currentNote = getCurrentNote(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return currentNote ? currentNote.detail.type : null; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-25 23:49:03 -05:00
										 |  |  |     async function executeCurrentNote() { | 
					
						
							| 
									
										
										
										
											2018-01-23 20:45:34 -05:00
										 |  |  |         if (getCurrentNoteType() === 'code') { | 
					
						
							| 
									
										
										
										
											2018-01-25 23:22:19 -05:00
										 |  |  |             // make sure note is saved so we load latest changes
 | 
					
						
							|  |  |  |             await saveNoteIfChanged(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-25 23:49:03 -05:00
										 |  |  |             const script = await server.get('script/subtree/' + getCurrentNoteId()); | 
					
						
							| 
									
										
										
										
											2018-01-23 20:45:34 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-25 23:49:03 -05:00
										 |  |  |             executeScript(script); | 
					
						
							| 
									
										
										
										
											2018-01-23 20:45:34 -05:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     $(document).ready(() => { | 
					
						
							| 
									
										
										
										
											2017-11-29 21:13:12 -05:00
										 |  |  |         noteTitleEl.on('input', () => { | 
					
						
							|  |  |  |             noteChanged(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             const title = noteTitleEl.val(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             noteTree.setNoteTitle(getCurrentNoteId(), title); | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-02 10:37:12 -05:00
										 |  |  |         BalloonEditor | 
					
						
							|  |  |  |             .create(document.querySelector('#note-detail'), { | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  |             .then(edit => { | 
					
						
							|  |  |  |                 editor = edit; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-09 21:56:48 -05:00
										 |  |  |                 editor.document.on('change', noteChanged); | 
					
						
							| 
									
										
										
										
											2017-12-02 10:37:12 -05:00
										 |  |  |             }) | 
					
						
							|  |  |  |             .catch(error => { | 
					
						
							|  |  |  |                 console.error(error); | 
					
						
							|  |  |  |             }); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-22 22:14:03 -05:00
										 |  |  |         CodeMirror.keyMap.default["Shift-Tab"] = "indentLess"; | 
					
						
							|  |  |  |         CodeMirror.keyMap.default["Tab"] = "indentMore"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-22 23:07:04 -05:00
										 |  |  |         CodeMirror.modeURL = 'libraries/codemirror/mode/%N/%N.js'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-20 21:56:03 -05:00
										 |  |  |         codeEditor = CodeMirror($("#note-detail-code")[0], { | 
					
						
							|  |  |  |             value: "", | 
					
						
							| 
									
										
										
										
											2018-01-22 22:14:03 -05:00
										 |  |  |             viewportMargin: Infinity, | 
					
						
							|  |  |  |             indentUnit: 4, | 
					
						
							| 
									
										
										
										
											2018-01-20 21:56:03 -05:00
										 |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  |         codeEditor.on('change', noteChanged); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |         // so that tab jumps from note title (which has tabindex 1)
 | 
					
						
							| 
									
										
										
										
											2017-12-02 10:37:12 -05:00
										 |  |  |         noteDetailEl.attr("tabindex", 2); | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-25 23:49:03 -05:00
										 |  |  |     $(document).bind('keydown', "ctrl+return", executeCurrentNote); | 
					
						
							| 
									
										
										
										
											2018-01-23 20:45:34 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     setInterval(saveNoteIfChanged, 5000); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return { | 
					
						
							| 
									
										
										
										
											2017-11-05 10:06:49 -05:00
										 |  |  |         reload, | 
					
						
							|  |  |  |         switchToNote, | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |         saveNoteIfChanged, | 
					
						
							|  |  |  |         updateNoteFromInputs, | 
					
						
							|  |  |  |         saveNoteToServer, | 
					
						
							| 
									
										
										
										
											2017-11-14 22:21:56 -05:00
										 |  |  |         setNoteBackgroundIfProtected, | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |         loadNote, | 
					
						
							|  |  |  |         getCurrentNote, | 
					
						
							| 
									
										
										
										
											2018-01-23 20:14:10 -05:00
										 |  |  |         getCurrentNoteType, | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |         getCurrentNoteId, | 
					
						
							| 
									
										
										
										
											2017-12-02 13:54:16 -05:00
										 |  |  |         newNoteCreated, | 
					
						
							| 
									
										
										
										
											2018-01-22 22:14:03 -05:00
										 |  |  |         getEditor, | 
					
						
							| 
									
										
										
										
											2018-01-23 20:45:34 -05:00
										 |  |  |         focus, | 
					
						
							| 
									
										
										
										
											2018-01-25 23:49:03 -05:00
										 |  |  |         executeCurrentNote | 
					
						
							| 
									
										
										
										
											2017-11-04 17:54:27 -04:00
										 |  |  |     }; | 
					
						
							|  |  |  | })(); |