83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
			Vendored
		
	
	
	
| (function(factory) {
 | |
|   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) {
 | |
|           // eslint-disable-next-line
 | |
|           console.log('summernote initialized', we, e);
 | |
|         },
 | |
|         // This will be called when user releases a key on editable.
 | |
|         'summernote.keyup': function(we, e) {
 | |
|           // eslint-disable-next-line
 | |
|           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;
 | |
|       };
 | |
|     },
 | |
|   });
 | |
| }));
 | 
