summernote-webpack
Version:
Super simple WYSIWYG editor
62 lines (50 loc) • 1.47 kB
JavaScript
define(function () {
var Renderer = function (markup, children, options, callback) {
this.render = function ($parent) {
var $node = $(markup);
if (options && options.contents) {
$node.html(options.contents);
}
if (options && options.className) {
$node.addClass(options.className);
}
if (options && options.data) {
$.each(options.data, function (k, v) {
$node.attr('data-' + k, v);
});
}
if (options && options.click) {
$node.on('click', options.click);
}
if (children) {
var $container = $node.find('.note-children-container');
children.forEach(function (child) {
child.render($container.length ? $container : $node);
});
}
if (callback) {
callback($node, options);
}
if (options && options.callback) {
options.callback($node);
}
if ($parent) {
$parent.append($node);
}
return $node;
};
};
var renderer = {
create: function (markup, callback) {
return function () {
var children = $.isArray(arguments[0]) ? arguments[0] : [];
var options = typeof arguments[1] === 'object' ? arguments[1] : arguments[0];
if (options && options.children) {
children = options.children;
}
return new Renderer(markup, children, options, callback);
};
}
};
return renderer;
});