Browse Source

Update cash-dom

pull/2620/head
Artur Arseniev 7 years ago
parent
commit
37fe86780c
  1. 6
      package-lock.json
  2. 2
      package.json
  3. 3
      src/editor/model/Editor.js
  4. 2
      src/utils/ColorPicker.js
  5. 230
      src/utils/extender.js

6
package-lock.json

@ -6903,9 +6903,9 @@
"dev": true
},
"cash-dom": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/cash-dom/-/cash-dom-1.3.7.tgz",
"integrity": "sha512-cWqx3b+8Vh5hvRd87voSW7hxHVhUekGiOUd7iix8fP29cl6TBIInkAqYVSKaL2xeVewS3/kfPnIIC+Xl3nVe/A=="
"version": "2.3.9",
"resolved": "https://registry.npmjs.org/cash-dom/-/cash-dom-2.3.9.tgz",
"integrity": "sha512-2a4/LSFQPMbLhBYiJ5Z5rEz5Pic8jMVUqkqZ42w01gkopVUnxnaJcvZifcx6QFykJyWDsUWfISt4xRSyjAaK9w=="
},
"ccount": {
"version": "1.0.4",

2
package.json

@ -19,7 +19,7 @@
"@babel/runtime": "^7.7.1",
"backbone": "1.3.3",
"backbone-undo": "^0.2.5",
"cash-dom": "^1.3.7",
"cash-dom": "^2.3.9",
"codemirror": "^5.49.2",
"codemirror-formatting": "^1.0.0",
"keymaster": "^1.6.2",

3
src/editor/model/Editor.js

@ -6,10 +6,12 @@ import {
toArray,
keys
} from 'underscore';
import $ from 'cash-dom';
import Backbone from 'backbone';
import Extender from 'utils/extender';
import { getModel } from 'utils/mixins';
Backbone.$ = $;
const deps = [
require('utils'),
require('i18n'),
@ -43,7 +45,6 @@ Extender({
$: Backbone.$
});
const $ = Backbone.$;
const logs = {
debug: console.log,
info: console.info,

2
src/utils/ColorPicker.js

@ -694,7 +694,7 @@ export default function($, undefined) {
return;
}
boundElement.trigger(event, [get()]);
boundElement.trigger('beforeShow.spectrum', [get()]);
if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) {
return;

230
src/utils/extender.js

@ -1,167 +1,10 @@
import { isObject, isString, each, isUndefined } from 'underscore';
export default ({ $, Backbone }) => {
if (Backbone) {
const ViewProt = Backbone.View.prototype;
const eventNsMap = {};
ViewProt.eventNsMap = eventNsMap;
ViewProt.delegate = function(eventName, selector, listener) {
const vid = '.delegateEvents' + this.cid;
this.$el.on(eventName, selector, listener);
//return this;
let eventMap = eventNsMap[vid];
if (!eventMap) {
eventMap = [];
eventNsMap[vid] = eventMap;
}
eventMap.push({ eventName, selector, listener });
return this;
};
ViewProt.undelegateEvents = function() {
const vid = '.delegateEvents' + this.cid;
if (this.$el) {
//this.$el.off(); return this;
let eventMap = eventNsMap[vid];
if (eventMap) {
eventMap.forEach(({ eventName, selector, listener }) => {
this.$el.off(eventName);
});
}
}
return this;
};
ViewProt.undelegate = function(ev, sel, list) {
const vid = '.delegateEvents' + this.cid;
//this.$el.off(ev, sel, list); return this;
let eventMap = eventNsMap[vid];
if (eventMap) {
eventMap.forEach(({ eventName, selector, listener }) => {
if (eventName == ev && selector == sel) {
this.$el.off(eventName);
}
});
}
return this;
};
}
export default ({ $ }) => {
if ($ && $.prototype.constructor.name !== 'jQuery') {
const fn = $.fn;
const splitNamespace = function(name) {
const namespaceArray = name.split('.');
return name.indexOf('.') !== 0
? [namespaceArray[0], namespaceArray.slice(1)]
: [null, namespaceArray];
};
const on = $.prototype.on;
const off = $.prototype.off;
const trigger = $.prototype.trigger;
const offset = $.prototype.offset;
const getEvents = eventName => eventName.split(/[,\s]+/g);
const getNamespaces = eventName => eventName.split('.');
fn.on = function(eventName, delegate, callback, runOnce) {
if (typeof eventName == 'string') {
const events = getEvents(eventName);
if (events.length == 1) {
eventName = events[0];
let namespaces = getNamespaces(eventName);
if (eventName.indexOf('.') !== 0) {
eventName = namespaces[0];
}
namespaces = namespaces.slice(1);
if (namespaces.length) {
//console.log('Found event with namespaces', namespaces, eventName, delegate, this);
const cashNs = this.data('_cashNs') || [];
// cashNs[namespace]
this.data('_cashNs', namespaces); // for each ns need to store '.store' => eventName, delegate, callback
}
return on.call(this, eventName, delegate, callback, runOnce);
} else {
events.forEach(eventName =>
this.on(eventName, delegate, callback, runOnce)
);
return this;
}
} else {
return on.call(this, eventName, delegate, callback, runOnce);
}
};
fn.off = function(eventName, callback) {
if (typeof eventName == 'string') {
const events = getEvents(eventName);
if (events.length == 1) {
eventName = events[0];
let namespaces = getNamespaces(eventName);
if (eventName.indexOf('.') !== 0) {
eventName = namespaces[0];
}
namespaces = namespaces.slice(1);
if (namespaces.length) {
// Have to off only with the same namespace
}
return off.call(this, eventName, callback);
} else {
events.forEach(eventName => this.off(eventName, callback));
return this;
}
} else {
return off.call(this, eventName, callback);
}
};
fn.trigger = function(eventName, data) {
if (eventName instanceof $.Event) {
return this.trigger(eventName.type, data);
}
if (typeof eventName == 'string') {
const events = getEvents(eventName);
if (events.length == 1) {
eventName = events[0];
let namespaces = getNamespaces(eventName);
if (eventName.indexOf('.') !== 0) {
eventName = namespaces[0];
}
namespaces = namespaces.slice(1);
if (namespaces.length) {
// have to trigger with same namespaces and eventName
}
return trigger.call(this, eventName, data);
} else {
events.forEach(eventName => this.trigger(eventName, data));
return this;
}
} else {
return trigger.call(this, eventName, data);
}
};
// Additional helpers
fn.hide = function() {
return this.css('display', 'none');
@ -178,39 +21,41 @@ export default ({ $, Backbone }) => {
};
// For SVGs in IE
(fn.removeClass = function(c) {
if (!arguments.length) {
return this.attr('class', '');
}
const classes = isString(c) && c.match(/\S+/g);
return classes
? this.each(function(el) {
each(classes, function(c) {
if (el.classList) {
el.classList.remove(c);
} else {
const val = el.className;
const bval = el.className.baseVal;
if (!isUndefined(bval)) {
val.baseVal = bval.replace(c, '');
} else {
el.className = val.replace(c, '');
}
}
});
})
: this;
}),
(fn.remove = function() {
return this.each(node => {
return node.parentNode && node.parentNode.removeChild(node);
});
}),
// For spectrum compatibility
(fn.bind = function(ev, h) {
return this.on(ev, h);
});
// (fn.removeClass = function(c) {
// if (!arguments.length) {
// return this.attr('class', '');
// }
// const classes = isString(c) && c.match(/\S+/g);
// return classes
// ? this.each(function(el) {
// each(classes, function(c) {
// if (el.classList) {
// el.classList.remove(c);
// } else {
// const val = el.className;
// const bval = el.className.baseVal;
// if (!isUndefined(bval)) {
// val.baseVal = bval.replace(c, '');
// } else {
// el.className = val.replace(c, '');
// }
// }
// });
// })
// : this;
// }),
// (fn.remove = function() {
// return this.each(node => {
// return node.parentNode && node.parentNode.removeChild(node);
// });
// }),
// For spectrum compatibility
fn.bind = function(ev, h) {
return this.on(ev, h);
};
fn.unbind = function(ev, h) {
if (isObject(ev)) {
@ -261,6 +106,7 @@ export default ({ $, Backbone }) => {
return win ? win.pageYOffset : el.scrollTop || 0;
};
const offset = $.prototype.offset;
fn.offset = function(coords) {
let top, left;

Loading…
Cancel
Save