Browse Source

Update cash-dom and cleanup extender

fix-leaks-2
Artur Arseniev 7 years ago
parent
commit
7817945b95
  1. 47
      package-lock.json
  2. 2
      package.json
  3. 3
      src/editor/model/Editor.js
  4. 2
      src/utils/ColorPicker.js
  5. 283
      src/utils/extender.js

47
package-lock.json

@ -6903,9 +6903,9 @@
"dev": true "dev": true
}, },
"cash-dom": { "cash-dom": {
"version": "1.3.7", "version": "2.3.9",
"resolved": "https://registry.npmjs.org/cash-dom/-/cash-dom-1.3.7.tgz", "resolved": "https://registry.npmjs.org/cash-dom/-/cash-dom-2.3.9.tgz",
"integrity": "sha512-cWqx3b+8Vh5hvRd87voSW7hxHVhUekGiOUd7iix8fP29cl6TBIInkAqYVSKaL2xeVewS3/kfPnIIC+Xl3nVe/A==" "integrity": "sha512-2a4/LSFQPMbLhBYiJ5Z5rEz5Pic8jMVUqkqZ42w01gkopVUnxnaJcvZifcx6QFykJyWDsUWfISt4xRSyjAaK9w=="
}, },
"ccount": { "ccount": {
"version": "1.0.4", "version": "1.0.4",
@ -9935,8 +9935,7 @@
"ansi-regex": { "ansi-regex": {
"version": "2.1.1", "version": "2.1.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"aproba": { "aproba": {
"version": "1.2.0", "version": "1.2.0",
@ -9957,14 +9956,12 @@
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"balanced-match": "^1.0.0", "balanced-match": "^1.0.0",
"concat-map": "0.0.1" "concat-map": "0.0.1"
@ -9979,20 +9976,17 @@
"code-point-at": { "code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"console-control-strings": { "console-control-strings": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"core-util-is": { "core-util-is": {
"version": "1.0.2", "version": "1.0.2",
@ -10109,8 +10103,7 @@
"inherits": { "inherits": {
"version": "2.0.3", "version": "2.0.3",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"ini": { "ini": {
"version": "1.3.5", "version": "1.3.5",
@ -10122,7 +10115,6 @@
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"number-is-nan": "^1.0.0" "number-is-nan": "^1.0.0"
} }
@ -10137,7 +10129,6 @@
"version": "3.0.4", "version": "3.0.4",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
} }
@ -10145,14 +10136,12 @@
"minimist": { "minimist": {
"version": "0.0.8", "version": "0.0.8",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"minipass": { "minipass": {
"version": "2.3.5", "version": "2.3.5",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"safe-buffer": "^5.1.2", "safe-buffer": "^5.1.2",
"yallist": "^3.0.0" "yallist": "^3.0.0"
@ -10171,7 +10160,6 @@
"version": "0.5.1", "version": "0.5.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"minimist": "0.0.8" "minimist": "0.0.8"
} }
@ -10252,8 +10240,7 @@
"number-is-nan": { "number-is-nan": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
@ -10265,7 +10252,6 @@
"version": "1.4.0", "version": "1.4.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"wrappy": "1" "wrappy": "1"
} }
@ -10351,8 +10337,7 @@
"safe-buffer": { "safe-buffer": {
"version": "5.1.2", "version": "5.1.2",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"safer-buffer": { "safer-buffer": {
"version": "2.1.2", "version": "2.1.2",
@ -10388,7 +10373,6 @@
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"code-point-at": "^1.0.0", "code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0", "is-fullwidth-code-point": "^1.0.0",
@ -10408,7 +10392,6 @@
"version": "3.0.1", "version": "3.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"ansi-regex": "^2.0.0" "ansi-regex": "^2.0.0"
} }
@ -10452,14 +10435,12 @@
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"yallist": { "yallist": {
"version": "3.0.3", "version": "3.0.3",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
} }
} }
}, },

2
package.json

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

3
src/editor/model/Editor.js

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

2
src/utils/ColorPicker.js

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

283
src/utils/extender.js

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

Loading…
Cancel
Save