mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-26 01:59:02 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			174 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!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>
 | |
|     <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>
 | |
| </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>
 | 
