83 lines
2.5 KiB
JavaScript
83 lines
2.5 KiB
JavaScript
(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;
|
|
};
|
|
},
|
|
});
|
|
}));
|