mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 13:01:31 +08:00 
			
		
		
		
	
		
			
	
	
		
			83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | (function (factory) { | ||
|  |   /* global define */ | ||
|  |   if (typeof define === 'function' && define.amd) { | ||
|  |     // AMD. Register as an anonymous module.
 | ||
|  |     define(['jquery'], factory); | ||
|  |   } else if (typeof module === 'object' && module.exports) { | ||
|  |     // Node/CommonJS
 | ||
|  |     module.exports = factory(require('jquery')); | ||
|  |   } else { | ||
|  |     // Browser globals
 | ||
|  |     factory(window.jQuery); | ||
|  |   } | ||
|  | }(function ($) { | ||
|  | 
 | ||
|  |   // Extends plugins for adding hello.
 | ||
|  |   //  - plugin is external module for customizing.
 | ||
|  |   $.extend($.summernote.plugins, { | ||
|  |     /** | ||
|  |      * @param {Object} context - context object has status of editor. | ||
|  |      */ | ||
|  |     'hello': function (context) { | ||
|  |       var self = this; | ||
|  | 
 | ||
|  |       // ui has renders to build ui elements.
 | ||
|  |       //  - you can create a button with `ui.button`
 | ||
|  |       var ui = $.summernote.ui; | ||
|  | 
 | ||
|  |       // add hello button
 | ||
|  |       context.memo('button.hello', function () { | ||
|  |         // create button
 | ||
|  |         var button = ui.button({ | ||
|  |           contents: '<i class="fa fa-child"/> Hello', | ||
|  |           tooltip: 'hello', | ||
|  |           click: function () { | ||
|  |             self.$panel.show(); | ||
|  |             self.$panel.hide(500); | ||
|  |             // invoke insertText method with 'hello' on editor module.
 | ||
|  |             context.invoke('editor.insertText', 'hello'); | ||
|  |           } | ||
|  |         }); | ||
|  | 
 | ||
|  |         // create jQuery object from button instance.
 | ||
|  |         var $hello = button.render(); | ||
|  |         return $hello; | ||
|  |       }); | ||
|  | 
 | ||
|  |       // This events will be attached when editor is initialized.
 | ||
|  |       this.events = { | ||
|  |         // This will be called after modules are initialized.
 | ||
|  |         'summernote.init': function (we, e) { | ||
|  |           console.log('summernote initialized', we, e); | ||
|  |         }, | ||
|  |         // This will be called when user releases a key on editable.
 | ||
|  |         'summernote.keyup': function (we, e) { | ||
|  |           console.log('summernote keyup', we, e); | ||
|  |         } | ||
|  |       }; | ||
|  | 
 | ||
|  |       // This method will be called when editor is initialized by $('..').summernote();
 | ||
|  |       // You can create elements for plugin
 | ||
|  |       this.initialize = function () { | ||
|  |         this.$panel = $('<div class="hello-panel"/>').css({ | ||
|  |           position: 'absolute', | ||
|  |           width: 100, | ||
|  |           height: 100, | ||
|  |           left: '50%', | ||
|  |           top: '50%', | ||
|  |           background: 'red' | ||
|  |         }).hide(); | ||
|  | 
 | ||
|  |         this.$panel.appendTo('body'); | ||
|  |       }; | ||
|  | 
 | ||
|  |       // This methods will be called when editor is destroyed by $('..').summernote('destroy');
 | ||
|  |       // You should remove elements on `initialize`.
 | ||
|  |       this.destroy = function () { | ||
|  |         this.$panel.remove(); | ||
|  |         this.$panel = null; | ||
|  |       }; | ||
|  |     } | ||
|  |   }); | ||
|  | })); |