(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: ' 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 = $('
').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; }; } }); }));