diff --git a/dist/grapes.js b/dist/grapes.js index 0b303ebb5..8cb6af7ba 100644 --- a/dist/grapes.js +++ b/dist/grapes.js @@ -3566,7 +3566,7 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Underscor Object.defineProperty(exports, "__esModule", { value: true }); -exports.getUnitFromValue = exports.normalizeFloat = exports.shallowDiff = exports.camelCase = exports.matches = exports.upFirst = exports.off = exports.on = undefined; +exports.getUnitFromValue = exports.normalizeFloat = exports.shallowDiff = exports.camelCase = exports.matches = exports.upFirst = exports.hasDnd = exports.off = exports.on = undefined; var _underscore = __webpack_require__(1); @@ -3673,8 +3673,13 @@ var normalizeFloat = function normalizeFloat(value) { return stepDecimals ? parseFloat(value.toFixed(stepDecimals)) : value; }; +var hasDnd = function hasDnd(em) { + return 'draggable' in document.createElement('i') && (em ? em.get('Config').nativeDnD : 1); +}; + exports.on = on; exports.off = off; +exports.hasDnd = hasDnd; exports.upFirst = upFirst; exports.matches = matches; exports.camelCase = camelCase; @@ -3885,7 +3890,7 @@ module.exports = Backbone.View.extend({ * @private * */ getClasses: function getClasses() { - var attr = this.model.get("attributes"), + var attr = this.model.get('attributes'), classes = attr['class'] || []; classes = (0, _underscore.isArray)(classes) ? classes : [classes]; @@ -4065,14 +4070,15 @@ var Backbone = __webpack_require__(0); var Components = __webpack_require__(49); var Selector = __webpack_require__(7); var Selectors = __webpack_require__(10); -var Traits = __webpack_require__(152); +var Traits = __webpack_require__(150); +var componentList = {}; +var componentIndex = 0; var escapeRegExp = function escapeRegExp(str) { return str.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&'); }; -module.exports = Backbone.Model.extend(_Styleable2.default).extend({ - +var Component = Backbone.Model.extend(_Styleable2.default).extend({ defaults: { // HTML tag of the component tagName: 'div', @@ -4176,16 +4182,16 @@ module.exports = Backbone.Model.extend(_Styleable2.default).extend({ propagate: '', /** - * Set an array of items to show up inside the toolbar (eg. move, clone, delete) - * when the component is selected - * toolbar: [{ - * attributes: {class: 'fa fa-arrows'}, - * command: 'tlb-move', - * },{ - * attributes: {class: 'fa fa-clone'}, - * command: 'tlb-clone', - * }] - */ + * Set an array of items to show up inside the toolbar (eg. move, clone, delete) + * when the component is selected + * toolbar: [{ + * attributes: {class: 'fa fa-arrows'}, + * command: 'tlb-move', + * },{ + * attributes: {class: 'fa fa-clone'}, + * command: 'tlb-clone', + * }] + */ toolbar: null }, @@ -4225,7 +4231,9 @@ module.exports = Backbone.Model.extend(_Styleable2.default).extend({ this.sm = em; this.em = em; this.config = opt.config || {}; + this.ccid = Component.createId(this); this.set('attributes', this.get('attributes') || {}); + this.on('destroy', this.handleRemove); this.listenTo(this, 'change:script', this.scriptUpdated); this.listenTo(this, 'change:traits', this.traitsUpdated); this.listenTo(this, 'change:tagName', this.tagUpdated); @@ -4242,6 +4250,17 @@ module.exports = Backbone.Model.extend(_Styleable2.default).extend({ }, + /** + * Triggered on model remove + * @param {Model} removed Removed model + * @private + */ + handleRemove: function handleRemove(removed) { + var em = this.em; + em && em.trigger('component:remove', removed); + }, + + /** * Check component's type * @param {string} type Component type @@ -4457,7 +4476,7 @@ module.exports = Backbone.Model.extend(_Styleable2.default).extend({ // is not visible var comps = new Components(null, this.opt); comps.parent = this; - comps.reset(this.get('components')); + !this.opt.avoidChildren && comps.reset(this.get('components')); this.set('components', comps); return this; }, @@ -4574,7 +4593,8 @@ module.exports = Backbone.Model.extend(_Styleable2.default).extend({ } if (model.get('draggable')) { tb.push({ - attributes: { class: 'fa fa-arrows' }, + attributes: { class: 'fa fa-arrows', draggable: true }, + //events: hasDnd(this.em) ? { dragstart: 'execCommand' } : '', command: 'tlb-move' }); } @@ -4763,11 +4783,10 @@ module.exports = Backbone.Model.extend(_Styleable2.default).extend({ var obj = Backbone.Model.prototype.toJSON.apply(this, args); var scriptStr = this.getScriptString(); + obj.attributes = this.getAttributes(); + delete obj.attributes.class; delete obj.toolbar; - - if (scriptStr) { - obj.script = scriptStr; - } + scriptStr && (obj.script = scriptStr); return obj; }, @@ -4779,7 +4798,17 @@ module.exports = Backbone.Model.extend(_Styleable2.default).extend({ */ getId: function getId() { var attrs = this.get('attributes') || {}; - return attrs.id || this.cid; + return attrs.id || this.ccid || this.cid; + }, + + + /** + * Get the DOM element of the model. This works only of the + * model is alredy rendered + * @return {HTMLElement} + */ + getEl: function getEl() { + return this.view && this.view.el; }, @@ -4825,7 +4854,6 @@ module.exports = Backbone.Model.extend(_Styleable2.default).extend({ em && em.trigger(event, this.model); } }, { - /** * Detect if the passed element is a valid component. * In case the element is valid an object abstracted @@ -4836,9 +4864,31 @@ module.exports = Backbone.Model.extend(_Styleable2.default).extend({ */ isComponent: function isComponent(el) { return { tagName: el.tagName ? el.tagName.toLowerCase() : '' }; + }, + + + /** + * Relying simply on the number of components becomes a problem when you + * store and load them back, you might hit collisions with new components + * @param {Model} model + * @return {string} + */ + createId: function createId(model) { + componentIndex++; + // Testing 1000000 components with `+ 2` returns 0 collisions + var ilen = componentIndex.toString().length + 2; + var uid = (Math.random() + 1.1).toString(36).slice(-ilen); + var nextId = 'i' + uid; + componentList[nextId] = model; + return nextId; + }, + getList: function getList() { + return componentList; } }); +module.exports = Component; + /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { @@ -4871,7 +4921,7 @@ module.exports = Backbone.View.extend({ events: _defineProperty({ - 'change': 'inputValueChanged' + change: 'inputValueChanged' }, 'click [' + clearProp + ']', 'clear'), initialize: function initialize() { @@ -15013,7 +15063,6 @@ var TYPE_CLASS = 1; var TYPE_ID = 2; var Selector = Backbone.Model.extend({ - idAttribute: 'name', defaults: { @@ -15100,9 +15149,8 @@ var Backbone = __webpack_require__(0); var $ = Backbone.$; module.exports = Backbone.View.extend({ - events: { - 'change': 'onChange' + change: 'onChange' }, attributes: function attributes() { @@ -16278,7 +16326,7 @@ var Property = __webpack_require__(12); module.exports = __webpack_require__(0).Collection.extend(_TypeableCollection2.default).extend({ types: [{ id: 'stack', - model: __webpack_require__(121), + model: __webpack_require__(119), view: __webpack_require__(34), isType: function isType(value) { if (value && value.type == 'stack') { @@ -16332,8 +16380,8 @@ module.exports = __webpack_require__(0).Collection.extend(_TypeableCollection2.d } }, { id: 'slider', - model: __webpack_require__(127), - view: __webpack_require__(128), + model: __webpack_require__(125), + view: __webpack_require__(126), isType: function isType(value) { if (value && value.type == 'slider') { return value; @@ -16405,7 +16453,6 @@ module.exports = __webpack_require__(0).Collection.extend(_TypeableCollection2.d var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; module.exports = __webpack_require__(0).Model.extend({ - defaults: { name: '', property: '', @@ -16664,12 +16711,11 @@ var Backbone = __webpack_require__(0); var ComponentView = __webpack_require__(3); module.exports = ComponentView.extend({ - tagName: 'img', events: { - 'dblclick': 'openModal', - 'click': 'initResize' + dblclick: 'openModal', + click: 'initResize' }, initialize: function initialize(o) { @@ -16681,6 +16727,28 @@ module.exports = ComponentView.extend({ var config = this.config; config.modal && (this.modal = config.modal); config.am && (this.am = config.am); + this.fetchFile(); + }, + + + /** + * Fetch file if exists + */ + fetchFile: function fetchFile() { + var model = this.model; + var file = model.get('file'); + + if (file) { + var fu = this.em.get('AssetManager').FileUploader(); + fu.uploadFile({ + dataTransfer: { files: [file] } + }, function (res) { + var obj = res && res.data && res.data[0]; + var src = obj && obj.src; + src && model.set({ src: src }); + }); + model.set('file', ''); + } }, @@ -16689,7 +16757,7 @@ module.exports = ComponentView.extend({ * @private * */ updateSrc: function updateSrc() { - var src = this.model.get("src"); + var src = this.model.get('src'); var el = this.$el; el.attr('src', src); el[src ? 'removeClass' : 'addClass'](this.classEmpty); @@ -16900,7 +16968,6 @@ var Backbone = __webpack_require__(0); var $ = Backbone.$; module.exports = Input.extend({ - events: { 'change input': 'handleChange', 'change select': 'handleUnitChange', @@ -17187,7 +17254,6 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument var Component = __webpack_require__(4); module.exports = Component.extend({ - defaults: _extends({}, Component.prototype.defaults, { type: 'tbody', tagName: 'tbody', @@ -17252,7 +17318,6 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument var Component = __webpack_require__(4); module.exports = Component.extend({ - defaults: _extends({}, Component.prototype.defaults, { type: 'image', tagName: 'img', @@ -17262,7 +17327,10 @@ module.exports = Component.extend({ editable: 1, highlightable: 0, resizable: 1, - traits: ['alt'] + traits: ['alt'], + + // File to load asynchronously once the model is rendered + file: '' }), initialize: function initialize(o, opt) { @@ -17339,7 +17407,6 @@ module.exports = Component.extend({ }; } }, { - /** * Detect if the passed element is a valid component. * In case the element is valid an object abstracted @@ -17372,8 +17439,8 @@ var _underscore = __webpack_require__(1); var _mixins = __webpack_require__(2); -var ToolbarView = __webpack_require__(188); -var Toolbar = __webpack_require__(190); +var ToolbarView = __webpack_require__(187); +var Toolbar = __webpack_require__(189); var key = __webpack_require__(23); var $ = __webpack_require__(0).$; var showOffsets = void 0; @@ -17597,7 +17664,7 @@ module.exports = { var config = canvas.getConfig(); var customeLabel = config.customBadgeLabel; this.cacheEl = el; - var model = $el.data("model"); + var model = $el.data('model'); if (!model || !model.get('badgable')) return; var badge = this.getBadge(); var badgeLabel = model.getIcon() + model.getName(); @@ -17626,7 +17693,7 @@ module.exports = { var $el = $(el); var model = $el.data('model'); - if (!model || !model.get("hoverable") || model.get('status') == 'selected') { + if (!model || !model.get('hoverable') || model.get('status') == 'selected') { return; } @@ -17836,7 +17903,7 @@ module.exports = { }); var leftPos = pos.left + pos.elementWidth - pos.targetWidth; toolbarStyle.top = pos.top + unit; - toolbarStyle.left = leftPos + unit; + toolbarStyle.left = (leftPos < 0 ? 0 : leftPos) + unit; toolbarStyle.display = origDisp; }, @@ -18084,7 +18151,7 @@ module.exports = _.extend({}, SelectPosition, { var trgCollection = $trg.data('collection'); var droppable = trgModel ? trgModel.get('droppable') : 1; opt.at = index; - if (trgCollection && droppable) return trgCollection.add(component, opt);else console.warn("Invalid target position"); + if (trgCollection && droppable) return trgCollection.add(component, opt);else console.warn('Invalid target position'); }, @@ -18518,7 +18585,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _promisePolyfill = __webpack_require__(77); +var _promisePolyfill = __webpack_require__(75); var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill); @@ -18565,13 +18632,11 @@ exports.default = typeof fetch == 'function' ? fetch.bind() : function (url, opt module.exports = function (config) { - var TEXT_NODE = 'span'; var c = config; var modelAttrStart = 'data-gjs-'; return { - compTypes: '', /** @@ -19654,12 +19719,12 @@ var Backbone = __webpack_require__(0); var Buttons = __webpack_require__(28); module.exports = Backbone.Model.extend({ - defaults: { id: '', content: '', visible: true, - buttons: [] + buttons: [], + attributes: {} }, initialize: function initialize(options) { @@ -19677,10 +19742,9 @@ module.exports = Backbone.Model.extend({ var Backbone = __webpack_require__(0); -var Button = __webpack_require__(111); +var Button = __webpack_require__(109); module.exports = Backbone.Collection.extend({ - model: Button, /** @@ -19789,6 +19853,9 @@ module.exports = Backbone.View.extend({ updateContent: function updateContent() { this.$el.html(this.model.get('content')); }, + attributes: function attributes() { + return this.model.get('attributes'); + }, initResize: function initResize() { var em = this.config.em; var editor = em ? em.get('Editor') : ''; @@ -19829,7 +19896,8 @@ module.exports = Backbone.View.extend({ posFetcher: function posFetcher(el) { var rect = el.getBoundingClientRect(); return { - left: 0, top: 0, + left: 0, + top: 0, width: rect.width, height: rect.height }; @@ -19866,7 +19934,7 @@ module.exports = Backbone.View.extend({ /* WEBPACK VAR INJECTION */(function(_) { var Backbone = __webpack_require__(0); -var ButtonView = __webpack_require__(113); +var ButtonView = __webpack_require__(111); module.exports = Backbone.View.extend({ initialize: function initialize(o) { @@ -19983,15 +20051,14 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument */ module.exports = function () { var c = {}, - defaults = __webpack_require__(118), - Sectors = __webpack_require__(119), + defaults = __webpack_require__(116), + Sectors = __webpack_require__(117), Properties = __webpack_require__(11), - SectorsView = __webpack_require__(130); + SectorsView = __webpack_require__(128); var properties = void 0; var sectors, SectView; return { - /** * Name of the module * @type {String} @@ -20479,7 +20546,6 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument var Property = __webpack_require__(12); module.exports = Property.extend({ - defaults: _extends({}, Property.prototype.defaults, { // 'background' is a good example where to make a difference // between detached and not @@ -20560,7 +20626,7 @@ module.exports = Property.extend({ var PropertyCompositeView = __webpack_require__(17); -var LayersView = __webpack_require__(125); +var LayersView = __webpack_require__(123); module.exports = PropertyCompositeView.extend({ templateInput: function templateInput() { @@ -20749,9 +20815,8 @@ module.exports = PropertyCompositeView.extend({ var $ = Backbone.$; module.exports = Backbone.View.extend({ - events: { - 'change': 'handleChange' + change: 'handleChange' }, template: function template() { @@ -20980,7 +21045,7 @@ module.exports = __webpack_require__(14).extend({ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; -__webpack_require__(124); +__webpack_require__(122); var Input = __webpack_require__(35); var $ = Backbone.$; @@ -21035,7 +21100,7 @@ module.exports = Input.extend({ var colorEl = $('
'); var cpStyle = colorEl.get(0).style; var elToAppend = this.em && this.em.config ? this.em.config.el : ''; - var colorPickerConfig = this.em && this.em.getConfig && this.em.getConfig("colorPicker") || {}; + var colorPickerConfig = this.em && this.em.getConfig && this.em.getConfig('colorPicker') || {}; var getColor = function getColor(color) { var cl = color.getAlpha() == 1 ? color.toHexString() : color.toRgbString(); return cl.replace(/ /g, ''); @@ -21242,12 +21307,10 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument var Property = __webpack_require__(12); module.exports = Property.extend({ - defaults: _extends({}, Property.prototype.defaults, { // Array of options, eg. [{name: 'Label ', value: '100'}] options: [] }) - }); /***/ }), @@ -21263,7 +21326,6 @@ var Property = __webpack_require__(12); var InputNumber = __webpack_require__(18); module.exports = Property.extend({ - defaults: _extends({}, Property.prototype.defaults, { // Array of units, eg. ['px', '%'] units: [], @@ -21293,7 +21355,9 @@ module.exports = Property.extend({ parseValue: function parseValue(val) { var parsed = Property.prototype.parseValue.apply(this, arguments); - var _input$validateInputV = this.input.validateInputValue(parsed.value, { deepCheck: 1 }), + var _input$validateInputV = this.input.validateInputValue(parsed.value, { + deepCheck: 1 + }), value = _input$validateInputV.value, unit = _input$validateInputV.unit; @@ -21315,7 +21379,6 @@ module.exports = Property.extend({ module.exports = __webpack_require__(44).extend({ - events: { 'click [data-toggle=asset-remove]': 'onRemove', click: 'onClick', @@ -21465,7 +21528,6 @@ var _fetch2 = _interopRequireDefault(_fetch); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } module.exports = Backbone.View.extend({ - template: _.template('\n \n '), events: {}, @@ -21533,7 +21595,7 @@ module.exports = Backbone.View.extend({ * @param {string} text Response text * @private */ - onUploadResponse: function onUploadResponse(text) { + onUploadResponse: function onUploadResponse(text, clb) { var em = this.config.em; var config = this.config; var target = this.target; @@ -21545,6 +21607,7 @@ module.exports = Backbone.View.extend({ } this.onUploadEnd(text); + clb && clb(json); }, @@ -21554,7 +21617,7 @@ module.exports = Backbone.View.extend({ * @return {Promise} * @private * */ - uploadFile: function uploadFile(e) { + uploadFile: function uploadFile(e, clb) { var _this = this; var files = e.dataTransfer ? e.dataTransfer.files : e.target.files; @@ -21591,7 +21654,7 @@ module.exports = Backbone.View.extend({ return Promise.reject(text); }); }).then(function (text) { - return _this.onUploadResponse(text); + return _this.onUploadResponse(text, clb); }).catch(function (err) { return _this.onUploadError(err); }); @@ -21697,7 +21760,7 @@ module.exports = Backbone.View.extend({ return this; } }, { - embedAsBase64: function embedAsBase64(e) { + embedAsBase64: function embedAsBase64(e, clb) { var _this3 = this; // List files dropped @@ -21730,6 +21793,42 @@ module.exports = Backbone.View.extend({ type = file.type; } + /* + // Show local video files, http://jsfiddle.net/dsbonev/cCCZ2/embedded/result,js,html,css/ + var URL = window.URL || window.webkitURL + var file = this.files[0] + var type = file.type + var videoNode = document.createElement('video'); + var canPlay = videoNode.canPlayType(type) // can use also for 'audio' types + if (canPlay === '') canPlay = 'no' + var message = 'Can play type "' + type + '": ' + canPlay + var isError = canPlay === 'no' + displayMessage(message, isError) + if (isError) { + return + } + var fileURL = URL.createObjectURL(file) + videoNode.src = fileURL + */ + + /* + // Show local video files, http://jsfiddle.net/dsbonev/cCCZ2/embedded/result,js,html,css/ + var URL = window.URL || window.webkitURL + var file = this.files[0] + var type = file.type + var videoNode = document.createElement('video'); + var canPlay = videoNode.canPlayType(type) // can use also for 'audio' types + if (canPlay === '') canPlay = 'no' + var message = 'Can play type "' + type + '": ' + canPlay + var isError = canPlay === 'no' + displayMessage(message, isError) + if (isError) { + return + } + var fileURL = URL.createObjectURL(file) + videoNode.src = fileURL + */ + // If it's an image, try to find its size if (type === 'image') { var data = { @@ -21802,7 +21901,7 @@ module.exports = Backbone.View.extend({ Promise.all(promises).then(function (data) { response.data = data; - _this3.onUploadResponse(response); + _this3.onUploadResponse(response, clb); }, function (error) { _this3.onUploadError(error); }); @@ -21827,7 +21926,6 @@ var Backbone = __webpack_require__(0); var Selectors = __webpack_require__(10); module.exports = Backbone.Model.extend(_Styleable2.default).extend({ - defaults: { // Css selectors selectors: {}, @@ -21989,7 +22087,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var parseStyle = (0, _ParserHtml2.default)().parseStyle; exports.default = { - parseStyle: parseStyle, /** @@ -22108,7 +22205,6 @@ exports.default = { var Backbone = __webpack_require__(0); module.exports = Backbone.View.extend({ - // Default view itemView: '', @@ -22179,7 +22275,6 @@ var Backbone = __webpack_require__(0); module.exports = Backbone.Collection.extend({ initialize: function initialize(models, opt) { - this.on('add', this.onAdd); this.config = opt && opt.config ? opt.config : null; @@ -22390,13 +22485,11 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument var Component = __webpack_require__(4); module.exports = Component.extend({ - defaults: _extends({}, Component.prototype.defaults, { type: 'text', droppable: false, editable: true }) - }); /***/ }), @@ -22411,9 +22504,8 @@ var _mixins = __webpack_require__(2); var ComponentView = __webpack_require__(3); module.exports = ComponentView.extend({ - events: { - 'dblclick': 'enableEditing' + dblclick: 'enableEditing' }, initialize: function initialize(o) { @@ -22547,7 +22639,6 @@ module.exports = ComponentView.extend({ var $ = Backbone.$; module.exports = { - /** * Start select position event * @param {HTMLElement} trg @@ -22601,8 +22692,8 @@ module.exports = { if (this.cDim) { this.posIsLastEl = this.cDim.length !== 0 && this.posMethod == 'after' && this.posIndex == this.cDim.length; this.posTargetEl = this.cDim.length === 0 ? $(this.outsideElem) : !this.posIsLastEl && this.cDim[this.posIndex] ? $(this.cDim[this.posIndex][5]).parent() : $(this.outsideElem); - this.posTargetModel = this.posTargetEl.data("model"); - this.posTargetCollection = this.posTargetEl.data("model-comp"); + this.posTargetModel = this.posTargetEl.data('model'); + this.posTargetCollection = this.posTargetEl.data('model-comp'); } }, @@ -22697,7 +22788,9 @@ module.exports = _.extend({}, CreateComponent, { 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 }); + 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(); @@ -22748,7 +22841,6 @@ var ComponentView = __webpack_require__(3); var ItemsView = void 0; module.exports = __webpack_require__(0).View.extend({ - events: { 'mousedown [data-toggle-move]': 'startSort', 'click [data-toggle-visible]': 'toggleVisibility', @@ -22885,7 +22977,7 @@ module.exports = __webpack_require__(0).View.extend({ this.getCaret().addClass(chvDown); opened[model.cid] = model; } else { - this.$el.removeClass("open"); + this.$el.removeClass('open'); this.getCaret().removeClass(chvDown); delete opened[model.cid]; } @@ -23210,14 +23302,12 @@ module.exports = Backbone.View.extend({ var Backbone = __webpack_require__(0); module.exports = Backbone.Model.extend({ - defaults: { id: '', label: '', open: true, attributes: {} } - }); /***/ }), @@ -23227,22 +23317,13 @@ module.exports = Backbone.Model.extend({ "use strict"; -module.exports = __webpack_require__(59); - -/***/ }), -/* 59 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - var _cashDom = __webpack_require__(9); var _cashDom2 = _interopRequireDefault(_cashDom); var _underscore = __webpack_require__(1); -var _polyfills = __webpack_require__(60); +var _polyfills = __webpack_require__(59); var _polyfills2 = _interopRequireDefault(_polyfills); @@ -23251,14 +23332,37 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de (0, _polyfills2.default)(); module.exports = function () { - var defaultConfig = __webpack_require__(61); - var Editor = __webpack_require__(62); - var PluginManager = __webpack_require__(220); + var Editor = __webpack_require__(60); + var PluginManager = __webpack_require__(219); var plugins = new PluginManager(); var editors = []; + var defaultConfig = { + // If true renders editor on init + autorender: 1, - return { + // Where init the editor + container: '', + + // HTML string or object of components + components: '', + + // CSS string or object of rules + style: '', + // If true, will fetch HTML and CSS from selected container + fromElement: 0, + + // Storage Manager + storageManager: {}, + + // Array of plugins to init + plugins: [], + + // Custom options for plugins + pluginsOpts: {} + }; + + return { $: _cashDom2.default, editors: editors, @@ -23266,7 +23370,7 @@ module.exports = function () { plugins: plugins, // Will be replaced on build - version: '0.12.60', + version: '0.13.5', /** * Initializes an editor based on passed options @@ -23323,7 +23427,7 @@ module.exports = function () { }(); /***/ }), -/* 60 */ +/* 59 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23339,7 +23443,6 @@ Object.defineProperty(exports, "__esModule", { */ exports.default = function () { - /** * Check if IE/Edge * @return {Boolean} @@ -23368,42 +23471,7 @@ exports.default = function () { }; /***/ }), -/* 61 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = { - // If true renders editor on init - autorender: 1, - - // Where init the editor - container: '', - - // HTML string or object of components - components: '', - - // CSS string or object of rules - style: '', - - // If true, will fetch HTML and CSS from selected container - fromElement: 0, - - // --- - - // Storage Manager - storageManager: {}, - - // Array of plugins to init - plugins: [], - - // Custom options for plugins - pluginsOpts: {} -}; - -/***/ }), -/* 62 */ +/* 60 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23417,9 +23485,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de module.exports = function (config) { var c = config || {}, - defaults = __webpack_require__(63), - EditorModel = __webpack_require__(64), - EditorView = __webpack_require__(219); + defaults = __webpack_require__(61), + EditorModel = __webpack_require__(62), + EditorView = __webpack_require__(218); for (var name in defaults) { if (!(name in c)) c[name] = defaults[name]; @@ -23433,7 +23501,6 @@ module.exports = function (config) { }); return { - $: _cashDom2.default, /** @@ -23954,6 +24021,8 @@ module.exports = function (config) { * * ## Components * * `component:add` - Triggered when a new component is added to the editor, the model is passed as an argument to the callback + * * `component:remove` - Triggered when a component is removed, the model is passed as an argument to the callback + * * `component:clone` - Triggered when a new component is added by a clone command, the model is passed as an argument to the callback * * `component:update` - Triggered when a component is updated (moved, styled, etc.), the model is passed as an argument to the callback * * `component:update:{propertyName}` - Listen any property change, the model is passed as an argument to the callback * * `component:styleUpdate` - Triggered when the style of the component is updated, the model is passed as an argument to the callback @@ -23985,6 +24054,13 @@ module.exports = function (config) { * * `storage:store` - Triggered when something is stored to the storage, stored object passed as an argumnet * * `storage:end` - After the storage request is ended * * `storage:error` - On any error on storage request, passes the error as an argument + * ## Canvas + * * `canvas:dragenter` - When something is dragged inside the canvas, `DataTransfer` instance passed as an argument + * * `canvas:dragover` - When something is dragging on canvas, `DataTransfer` instance passed as an argument + * * `canvas:drop` - Something is dropped in canvas, `DataTransfer` instance and the dropped model are passed as arguments + * * `canvas:dragend` - When a drag operation is ended, `DataTransfer` instance passed as an argument + * * `canvas:dragdata` - On any dataTransfer parse, `DataTransfer` instance and the `result` are passed as arguments. + * By changing `result.content` you're able to customize what is dropped * ## Selectors * * `selector:add` - Triggers when a new selector/class is created * ## RTE @@ -24027,7 +24103,7 @@ module.exports = function (config) { */ /***/ }), -/* 63 */ +/* 61 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24094,6 +24170,9 @@ module.exports = { // Return JS of components inside HTML from 'editor.getHtml()' jsInHtml: true, + // Enable native HTML5 drag and drop + nativeDnD: 1, + // Show the wrapper component in the final code, eg. in editor.getHtml() exportWrapper: 0, @@ -24170,7 +24249,6 @@ module.exports = { //Configurations for Style Manager styleManager: { - sectors: [{ name: 'General', open: false, @@ -24196,7 +24274,6 @@ module.exports = { open: false, buildProps: ['transition', 'perspective', 'transform'] }] - }, //Configurations for Block Manager @@ -24208,7 +24285,7 @@ module.exports = { }; /***/ }), -/* 64 */ +/* 62 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24218,12 +24295,12 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument var _underscore = __webpack_require__(1); -var deps = [__webpack_require__(65), __webpack_require__(69), __webpack_require__(70), __webpack_require__(73), __webpack_require__(81), __webpack_require__(86), __webpack_require__(89), __webpack_require__(93), __webpack_require__(97), __webpack_require__(109), __webpack_require__(115), __webpack_require__(31), __webpack_require__(132), __webpack_require__(138), __webpack_require__(143), __webpack_require__(150), __webpack_require__(178), __webpack_require__(184), __webpack_require__(210)]; +var deps = [__webpack_require__(63), __webpack_require__(67), __webpack_require__(68), __webpack_require__(71), __webpack_require__(79), __webpack_require__(84), __webpack_require__(87), __webpack_require__(91), __webpack_require__(95), __webpack_require__(107), __webpack_require__(113), __webpack_require__(31), __webpack_require__(130), __webpack_require__(136), __webpack_require__(141), __webpack_require__(148), __webpack_require__(176), __webpack_require__(183), __webpack_require__(209)]; var Backbone = __webpack_require__(0); var timedInterval = void 0; -__webpack_require__(218)({ +__webpack_require__(217)({ Backbone: Backbone, $: Backbone.$ }); @@ -24231,7 +24308,6 @@ __webpack_require__(218)({ var $ = Backbone.$; module.exports = Backbone.Model.extend({ - defaults: { clipboard: null, designerMode: false, @@ -24452,7 +24528,7 @@ module.exports = Backbone.Model.extend({ model = $(el).data('model'); } - if (model && !model.get("selectable")) { + if (model && !model.get('selectable')) { return; } @@ -24524,7 +24600,8 @@ module.exports = Backbone.Model.extend({ var js = config.jsInHtml ? this.getJs() : ''; var wrp = this.get('DomComponents').getComponent(); var html = this.get('CodeManager').getCode(wrp, 'html', { - exportWrapper: exportWrapper, wrappesIsBody: wrappesIsBody + exportWrapper: exportWrapper, + wrappesIsBody: wrappesIsBody }); html += js ? '' : ''; return html; @@ -24548,7 +24625,8 @@ module.exports = Backbone.Model.extend({ var protCss = !avoidProt ? config.protectedCss : ''; return protCss + this.get('CodeManager').getCode(wrp, 'css', { - cssc: cssc, wrappesIsBody: wrappesIsBody + cssc: cssc, + wrappesIsBody: wrappesIsBody }); }, @@ -24749,17 +24827,16 @@ module.exports = Backbone.Model.extend({ }); /***/ }), -/* 65 */ +/* 63 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; module.exports = function () { - - var Sorter = __webpack_require__(66); - var Resizer = __webpack_require__(67); - var Dragger = __webpack_require__(68); + var Sorter = __webpack_require__(64); + var Resizer = __webpack_require__(65); + var Dragger = __webpack_require__(66); return { /** @@ -24784,7 +24861,7 @@ module.exports = function () { }; /***/ }), -/* 66 */ +/* 64 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25025,7 +25102,7 @@ module.exports = Backbone.View.extend({ el.className = pfx + 'placeholder'; el.style.display = 'none'; el.style['pointer-events'] = 'none'; - ins.className = pfx + "placeholder-int"; + ins.className = pfx + 'placeholder-int'; el.appendChild(ins); return el; }, @@ -25067,8 +25144,8 @@ module.exports = Backbone.View.extend({ srcModel && srcModel.set && srcModel.set('status', 'freezed'); } - (0, _mixins.on)(container, 'mousemove', this.onMove); - (0, _mixins.on)(docs, 'mouseup', this.endMove); + (0, _mixins.on)(container, 'mousemove dragover', this.onMove); + (0, _mixins.on)(docs, 'mouseup dragend', this.endMove); (0, _mixins.on)(docs, 'keydown', this.rollback); onStart && onStart(); @@ -25103,7 +25180,11 @@ module.exports = Backbone.View.extend({ if (dropContent && em) { if (!dropModel) { var comps = em.get('DomComponents').getComponents(); - var tempModel = comps.add(dropContent, { avoidUpdateStyle: 1, temporary: 1 }); + var tempModel = comps.add(dropContent, { + avoidChildren: 1, + avoidUpdateStyle: 1, + temporary: 1 + }); dropModel = comps.remove(tempModel, { temporary: 1 }); this.dropModel = dropModel instanceof Array ? dropModel[0] : dropModel; } @@ -25237,13 +25318,18 @@ module.exports = Backbone.View.extend({ if ($el.css('float') !== 'none') return; if (parent && $(parent).css('display') == 'flex') return; switch (style.position) { - case 'static':case 'relative':case '': + case 'static': + case 'relative': + case '': break; default: return; } switch (el.tagName) { - case 'TR':case 'TBODY':case 'THEAD':case 'TFOOT': + case 'TR': + case 'TBODY': + case 'THEAD': + case 'TFOOT': return true; } switch ($el.css('display')) { @@ -25603,17 +25689,17 @@ module.exports = Backbone.View.extend({ //If x lefter than center if (posX < xCenter) { xLimit = xCenter; - result.method = "before"; + result.method = 'before'; } else { leftLimit = xCenter; - result.method = "after"; + result.method = 'after'; } } else { // If y upper than center if (posY < yCenter) { - result.method = "before"; + result.method = 'before'; break; - } else result.method = "after"; // After last element + } else result.method = 'after'; // After last element } } return result; @@ -25687,8 +25773,8 @@ module.exports = Backbone.View.extend({ var created; var docs = this.getDocuments(); var container = this.getContainerEl(); - (0, _mixins.off)(container, 'mousemove', this.onMove); - (0, _mixins.off)(docs, 'mouseup', this.endMove); + (0, _mixins.off)(container, 'mousemove dragover', this.onMove); + (0, _mixins.off)(docs, 'mouseup dragend', this.endMove); (0, _mixins.off)(docs, 'keydown', this.rollback); //this.$document.off('mouseup', this.endMove); //this.$document.off('keydown', this.rollback); @@ -25814,7 +25900,7 @@ module.exports = Backbone.View.extend({ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0), __webpack_require__(1))) /***/ }), -/* 67 */ +/* 65 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25896,7 +25982,6 @@ var getBoundingRect = function getBoundingRect(el, win) { }; var Resizer = function () { - /** * Init the Resizer with options * @param {Object} options @@ -26355,7 +26440,7 @@ module.exports = { }; /***/ }), -/* 68 */ +/* 66 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26375,7 +26460,6 @@ var getBoundingRect = function getBoundingRect(el, win) { }; module.exports = { - // TODO move to opts setKey: function setKey(keys, command) { //key(keys, command); @@ -26702,7 +26786,7 @@ module.exports = { /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 69 */ +/* 67 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26751,7 +26835,6 @@ module.exports = function () { }; return { - keymaster: keymaster, name: 'Keymaps', @@ -26877,7 +26960,7 @@ module.exports = function () { }; /***/ }), -/* 70 */ +/* 68 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26894,7 +26977,7 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument */ -var _backboneUndo = __webpack_require__(71); +var _backboneUndo = __webpack_require__(69); var _backboneUndo2 = _interopRequireDefault(_backboneUndo); @@ -26908,7 +26991,6 @@ module.exports = function () { var configDef = {}; return { - name: 'UndoManager', /** @@ -27141,7 +27223,7 @@ module.exports = function () { }; /***/ }), -/* 71 */ +/* 69 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -27158,7 +27240,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ (function (factory) { if (true) { // AMD support - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(72)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(70)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); @@ -27983,7 +28065,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ /***/ }), -/* 72 */ +/* 70 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Backbone.js 1.2.1 @@ -29864,7 +29946,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(16))) /***/ }), -/* 73 */ +/* 71 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -29879,15 +29961,14 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ */ module.exports = function () { var c = {}, - defaults = __webpack_require__(74), - LocalStorage = __webpack_require__(75), - RemoteStorage = __webpack_require__(76); + defaults = __webpack_require__(72), + LocalStorage = __webpack_require__(73), + RemoteStorage = __webpack_require__(74); var storages = {}; var defaultStorages = {}; return { - /** * Name of the module * @type {String} @@ -30113,7 +30194,7 @@ module.exports = function () { }; /***/ }), -/* 74 */ +/* 72 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -30177,11 +30258,10 @@ module.exports = { // true: application/json; charset=utf-8' // false: 'x-www-form-urlencoded' contentTypeJson: false - }; /***/ }), -/* 75 */ +/* 73 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -30190,14 +30270,13 @@ module.exports = { var Backbone = __webpack_require__(0); module.exports = Backbone.Model.extend({ - defaults: { checkLocal: true }, /** - * @private - */ + * @private + */ store: function store(data, clb) { this.checkStorageEnvironment(); @@ -30251,7 +30330,7 @@ module.exports = Backbone.Model.extend({ }); /***/ }), -/* 76 */ +/* 74 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -30266,7 +30345,6 @@ var _underscore = __webpack_require__(1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } module.exports = __webpack_require__(0).Model.extend({ - fetch: _fetch2.default, defaults: { @@ -30415,7 +30493,7 @@ module.exports = __webpack_require__(0).Model.extend({ }); /***/ }), -/* 77 */ +/* 75 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(setImmediate) {(function (root) { @@ -30652,10 +30730,10 @@ module.exports = __webpack_require__(0).Model.extend({ })(this); -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(78).setImmediate)) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(76).setImmediate)) /***/ }), -/* 78 */ +/* 76 */ /***/ (function(module, exports, __webpack_require__) { var apply = Function.prototype.apply; @@ -30708,13 +30786,13 @@ exports._unrefActive = exports.active = function(item) { }; // setimmediate attaches itself to the global object -__webpack_require__(79); +__webpack_require__(77); exports.setImmediate = setImmediate; exports.clearImmediate = clearImmediate; /***/ }), -/* 79 */ +/* 77 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) { @@ -30904,10 +30982,10 @@ exports.clearImmediate = clearImmediate; attachTo.clearImmediate = clearImmediate; }(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self)); -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(16), __webpack_require__(80))) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(16), __webpack_require__(78))) /***/ }), -/* 80 */ +/* 78 */ /***/ (function(module, exports) { // shim for using process in browser @@ -31097,7 +31175,7 @@ process.umask = function() { return 0; }; /***/ }), -/* 81 */ +/* 79 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -31114,13 +31192,12 @@ process.umask = function() { return 0; }; */ module.exports = function () { var c = {}, - defaults = __webpack_require__(82), - Devices = __webpack_require__(83), - DevicesView = __webpack_require__(85); + defaults = __webpack_require__(80), + Devices = __webpack_require__(81), + DevicesView = __webpack_require__(83); var devices, view; return { - /** * Name of the module * @type {String} @@ -31218,36 +31295,34 @@ module.exports = function () { }; /***/ }), -/* 82 */ +/* 80 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; module.exports = { - devices: [], deviceLabel: 'Device' - }; /***/ }), -/* 83 */ +/* 81 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var Backbone = __webpack_require__(0); -var Device = __webpack_require__(84); +var Device = __webpack_require__(82); module.exports = Backbone.Collection.extend({ model: Device }); /***/ }), -/* 84 */ +/* 82 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -31256,7 +31331,6 @@ module.exports = Backbone.Collection.extend({ var Backbone = __webpack_require__(0); module.exports = Backbone.Model.extend({ - idAttribute: 'name', defaults: { @@ -31281,7 +31355,7 @@ module.exports = Backbone.Model.extend({ }); /***/ }), -/* 85 */ +/* 83 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -31290,11 +31364,10 @@ module.exports = Backbone.Model.extend({ var Backbone = __webpack_require__(0); module.exports = Backbone.View.extend({ - template: _.template('\n