mirror of https://github.com/artf/grapesjs.git
19 changed files with 534 additions and 507 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,77 @@ |
|||||
|
import { bindAll } from 'underscore'; |
||||
|
import { on, off, getKeyChar } from 'utils/mixins'; |
||||
|
import Dragger from 'utils/Dragger'; |
||||
|
|
||||
|
module.exports = { |
||||
|
run(ed) { |
||||
|
bindAll(this, 'onKeyUp', 'enableDragger', 'disableDragger'); |
||||
|
this.editor = ed; |
||||
|
this.canvasModel = this.canvas.getCanvasView().model; |
||||
|
this.toggleMove(1); |
||||
|
}, |
||||
|
stop(ed) { |
||||
|
this.toggleMove(); |
||||
|
this.disableDragger(); |
||||
|
}, |
||||
|
|
||||
|
onKeyUp(ev) { |
||||
|
if (getKeyChar(ev) === ' ') { |
||||
|
this.editor.stopCommand(this.id); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
enableDragger(ev) { |
||||
|
this.toggleDragger(1, ev); |
||||
|
}, |
||||
|
|
||||
|
disableDragger(ev) { |
||||
|
this.toggleDragger(0, ev); |
||||
|
}, |
||||
|
|
||||
|
toggleDragger(enable, ev) { |
||||
|
const { canvasModel, em } = this; |
||||
|
let { dragger } = this; |
||||
|
const methodCls = enable ? 'add' : 'remove'; |
||||
|
this.getCanvas().classList[methodCls](`${this.ppfx}is__grabbing`); |
||||
|
|
||||
|
if (!dragger) { |
||||
|
dragger = Dragger.init({ |
||||
|
getPosition() { |
||||
|
return { |
||||
|
x: canvasModel.get('x'), |
||||
|
y: canvasModel.get('y') |
||||
|
}; |
||||
|
}, |
||||
|
setPosition({ x, y }) { |
||||
|
canvasModel.set({ x, y }); |
||||
|
}, |
||||
|
onStart(ev, dragger) { |
||||
|
em.trigger('canvas:move:start', dragger); |
||||
|
}, |
||||
|
onDrag(ev, dragger) { |
||||
|
em.trigger('canvas:move', dragger); |
||||
|
}, |
||||
|
onEnd(ev, dragger) { |
||||
|
em.trigger('canvas:move:end', dragger); |
||||
|
} |
||||
|
}); |
||||
|
this.dragger = dragger; |
||||
|
} |
||||
|
|
||||
|
enable ? dragger.start(ev) : dragger.stop(); |
||||
|
}, |
||||
|
|
||||
|
toggleMove(enable) { |
||||
|
const { ppfx } = this; |
||||
|
const methodCls = enable ? 'add' : 'remove'; |
||||
|
const methodEv = enable ? 'on' : 'off'; |
||||
|
const methodsEv = { on, off }; |
||||
|
const canvas = this.getCanvas(); |
||||
|
const classes = [`${ppfx}is__grab`]; |
||||
|
!enable && classes.push(`${ppfx}is__grabbing`); |
||||
|
classes.forEach(cls => canvas.classList[methodCls](cls)); |
||||
|
methodsEv[methodEv](document, 'keyup', this.onKeyUp); |
||||
|
methodsEv[methodEv](canvas, 'mousedown', this.enableDragger); |
||||
|
methodsEv[methodEv](document, 'mouseup', this.disableDragger); |
||||
|
} |
||||
|
}; |
||||
@ -1,34 +0,0 @@ |
|||||
import _ from 'underscore'; |
|
||||
import Backbone from 'backbone'; |
|
||||
var InsertCustom = require('./InsertCustom'); |
|
||||
|
|
||||
module.exports = _.extend({}, InsertCustom, { |
|
||||
/** |
|
||||
* Trigger before insert |
|
||||
* @param {Object} object |
|
||||
* @private |
|
||||
* |
|
||||
* */ |
|
||||
beforeInsert(object) { |
|
||||
object.type = 'image'; |
|
||||
object.style = {}; |
|
||||
object.attributes = {}; |
|
||||
object.attributes.onmousedown = 'return false'; |
|
||||
if ( |
|
||||
this.config.firstCentered && |
|
||||
this.getCanvasWrapper() == this.sorter.target |
|
||||
) { |
|
||||
object.style.margin = '0 auto'; |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
/** |
|
||||
* Trigger after insert |
|
||||
* @param {Object} model Model created after insert |
|
||||
* @private |
|
||||
* */ |
|
||||
afterInsert(model) { |
|
||||
model.trigger('dblclick'); |
|
||||
if (this.sender) this.sender.set('active', false); |
|
||||
} |
|
||||
}); |
|
||||
@ -1,76 +0,0 @@ |
|||||
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 || {}; |
|
||||
} |
|
||||
}); |
|
||||
@ -1,27 +0,0 @@ |
|||||
import _ from 'underscore'; |
|
||||
import Backbone from 'backbone'; |
|
||||
var CreateComponent = require('./CreateComponent'); |
|
||||
|
|
||||
module.exports = _.extend({}, CreateComponent, { |
|
||||
/** |
|
||||
* This event is triggered at the beginning of a draw operation |
|
||||
* @param {Object} component Object component before creation |
|
||||
* @private |
|
||||
* */ |
|
||||
beforeDraw(component) { |
|
||||
component.type = 'text'; |
|
||||
if (!component.style) component.style = {}; |
|
||||
component.style.padding = '10px'; |
|
||||
}, |
|
||||
|
|
||||
/** |
|
||||
* This event is triggered at the end of a draw operation |
|
||||
* @param {Object} model Component model created |
|
||||
* @private |
|
||||
* */ |
|
||||
afterDraw(model) { |
|
||||
if (!model || !model.set) return; |
|
||||
model.trigger('focus'); |
|
||||
if (this.sender) this.sender.set('active', false); |
|
||||
} |
|
||||
}); |
|
||||
@ -0,0 +1,18 @@ |
|||||
|
$gjs-is-prefix: '.#{$app-prefix}is__'; |
||||
|
|
||||
|
@function gjs-is($name) { |
||||
|
@return '#{$gjs-is-prefix}#{$name}'; |
||||
|
} |
||||
|
|
||||
|
#{$gjs-is-prefix} { |
||||
|
&grab, |
||||
|
&grab * { |
||||
|
cursor: grab !important; |
||||
|
} |
||||
|
|
||||
|
&grabbing, |
||||
|
&grabbing * { |
||||
|
@include user-select(none); |
||||
|
cursor: grabbing !important; |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue