UNPKG

grapesjs_codeapps

Version:

Free and Open Source Web Builder Framework/SC Modification

77 lines (66 loc) 1.68 kB
import _ from 'underscore'; import Backbone from 'backbone'; var CreateComponent = require('./CreateComponent'); module.exports = _.extend({}, CreateComponent, { init(...args) { CreateComponent.init.apply(this, args); _.bindAll(this, 'insertComponent'); this.allowDraw = 0; }, /** * Run method * @private * */ run(em, sender, options) { this.em = em; this.sender = sender; this.opt = options || {}; this.$wr = this.$wrapper; this.enable(); }, enable(...args) { CreateComponent.enable.apply(this, args); this.$wr.on('click', this.insertComponent); }, /** * Start insert event * @private * */ insertComponent() { this.$wr.off('click', this.insertComponent); this.stopSelectPosition(); var object = this.buildContent(); this.beforeInsert(object); var index = this.sorter.lastPos.index; // By default, collections do not trigger add event, so silent is used var model = this.create(this.sorter.target, object, index, null, { silent: false }); if (this.opt.terminateAfterInsert && this.sender) this.sender.set('active', false); else this.enable(); if (!model) return; this.afterInsert(model, this); }, /** * Trigger before insert * @param {Object} obj * @private * */ beforeInsert(obj) {}, /** * Trigger after insert * @param {Object} model Model created after insert * @private * */ afterInsert(model) {}, /** * Create different object, based on content, to insert inside canvas * * @return {Object} * @private * */ buildContent() { return this.opt.content || {}; } });