| 
									
										
										
										
											2023-08-21 04:17:16 -04:00
										 |  |  | <!DOCTYPE html> | 
					
						
							|  |  |  | <html lang="en"> | 
					
						
							|  |  |  | <head> | 
					
						
							|  |  |  |     <meta charset="utf-8"> | 
					
						
							|  |  |  |     <title>JSDoc: Source: widgets/note_context_aware_widget.js</title> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <script src="scripts/prettify/prettify.js"> </script> | 
					
						
							|  |  |  |     <script src="scripts/prettify/lang-css.js"> </script> | 
					
						
							|  |  |  |     <!--[if lt IE 9]>
 | 
					
						
							|  |  |  |       <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> | 
					
						
							|  |  |  |     <![endif]--> | 
					
						
							|  |  |  |     <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> | 
					
						
							|  |  |  |     <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> | 
					
						
							|  |  |  | </head> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <body> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <div id="main"> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <h1 class="page-title">Source: widgets/note_context_aware_widget.js</h1> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     <section> | 
					
						
							|  |  |  |         <article> | 
					
						
							|  |  |  |             <pre class="prettyprint source linenums"><code>import BasicWidget from "./basic_widget.js"; | 
					
						
							|  |  |  | import appContext from "../components/app_context.js"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * This widget allows for changing and updating depending on the active note. | 
					
						
							|  |  |  |  * @extends {BasicWidget} | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | class NoteContextAwareWidget extends BasicWidget { | 
					
						
							|  |  |  |     isNoteContext(ntxId) { | 
					
						
							|  |  |  |         if (Array.isArray(ntxId)) { | 
					
						
							|  |  |  |             return this.noteContext && ntxId.includes(this.noteContext.ntxId); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         else { | 
					
						
							|  |  |  |             return this.noteContext && this.noteContext.ntxId === ntxId; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     isActiveNoteContext() { | 
					
						
							|  |  |  |         return appContext.tabManager.getActiveContext() === this.noteContext; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     isNote(noteId) { | 
					
						
							|  |  |  |         return this.noteId === noteId; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** @returns {FNote|undefined} */ | 
					
						
							|  |  |  |     get note() { | 
					
						
							|  |  |  |         return this.noteContext?.note; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** @returns {string|undefined} */ | 
					
						
							|  |  |  |     get noteId() { | 
					
						
							|  |  |  |         return this.note?.noteId; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** @returns {string|undefined} */ | 
					
						
							|  |  |  |     get notePath() { | 
					
						
							|  |  |  |         return this.noteContext?.notePath; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** @returns {string} */ | 
					
						
							|  |  |  |     get hoistedNoteId() { | 
					
						
							|  |  |  |         return this.noteContext?.hoistedNoteId; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     get ntxId() { | 
					
						
							|  |  |  |         return this.noteContext?.ntxId; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @returns {boolean} true when an active note exists | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     isEnabled() { | 
					
						
							|  |  |  |         return !!this.note; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async refresh() { | 
					
						
							|  |  |  |         if (this.isEnabled()) { | 
					
						
							|  |  |  |             this.toggleInt(true); | 
					
						
							|  |  |  |             await this.refreshWithNote(this.note); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         else { | 
					
						
							|  |  |  |             this.toggleInt(false); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Override this method to be able to refresh your | 
					
						
							|  |  |  |      * widget with each note. | 
					
						
							|  |  |  |      * @param {FNote} note | 
					
						
							|  |  |  |      * @returns {Promise<void>} | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     async refreshWithNote(note) {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async noteSwitchedEvent({noteContext, notePath}) { | 
					
						
							|  |  |  |         // if notePath does not match, then the noteContext has been switched to another note in the meantime | 
					
						
							|  |  |  |         if (noteContext.notePath === notePath) { | 
					
						
							|  |  |  |             await this.noteSwitched(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async noteSwitched() { | 
					
						
							|  |  |  |         await this.refresh(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async activeContextChangedEvent({noteContext}) { | 
					
						
							|  |  |  |         this.noteContext = noteContext; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         await this.activeContextChanged(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async activeContextChanged() { | 
					
						
							|  |  |  |         await this.refresh(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // when note is both switched and activated, this should not produce a double refresh | 
					
						
							|  |  |  |     async noteSwitchedAndActivatedEvent({noteContext, notePath}) { | 
					
						
							|  |  |  |         this.noteContext = noteContext; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // if notePath does not match, then the noteContext has been switched to another note in the meantime | 
					
						
							|  |  |  |         if (this.notePath === notePath) { | 
					
						
							|  |  |  |             await this.refresh(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     setNoteContextEvent({noteContext}) { | 
					
						
							|  |  |  |         /** @var {NoteContext} */ | 
					
						
							|  |  |  |         this.noteContext = noteContext; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async noteTypeMimeChangedEvent({noteId}) { | 
					
						
							|  |  |  |         if (this.isNote(noteId)) { | 
					
						
							|  |  |  |             await this.refresh(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async frocaReloadedEvent() { | 
					
						
							|  |  |  |         await this.refresh(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default NoteContextAwareWidget; | 
					
						
							|  |  |  | </code></pre> | 
					
						
							|  |  |  |         </article> | 
					
						
							|  |  |  |     </section> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <nav> | 
					
						
							| 
									
										
										
										
											2023-09-25 23:11:24 +02:00
										 |  |  |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="BasicWidget.html">BasicWidget</a></li><li><a href="FAttachment.html">FAttachment</a></li><li><a href="FAttribute.html">FAttribute</a></li><li><a href="FBranch.html">FBranch</a></li><li><a href="FNote.html">FNote</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteContextAwareWidget.html">NoteContextAwareWidget</a></li><li><a href="RightPanelWidget.html">RightPanelWidget</a></li></ul><h3>Global</h3><ul><li><a href="global.html#api">api</a></li><li><a href="global.html#getJsonContent">getJsonContent</a></li><li><a href="global.html#getJsonContentSafely">getJsonContentSafely</a></li></ul> | 
					
						
							| 
									
										
										
										
											2023-08-21 04:17:16 -04:00
										 |  |  | </nav> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <br class="clear"> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <footer> | 
					
						
							|  |  |  |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a> | 
					
						
							|  |  |  | </footer> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script> prettyPrint(); </script> | 
					
						
							|  |  |  | <script src="scripts/linenumber.js"> </script> | 
					
						
							|  |  |  | </body> | 
					
						
							|  |  |  | </html> |