From 7817945b9592bc79b9fe10049ef2dff7aeb88153 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Fri, 21 Feb 2020 13:22:54 +0100 Subject: [PATCH] Update cash-dom and cleanup extender --- package-lock.json | 47 ++---- package.json | 2 +- src/editor/model/Editor.js | 3 +- src/utils/ColorPicker.js | 2 +- src/utils/extender.js | 283 +++++++++++++++++++------------------ 5 files changed, 162 insertions(+), 175 deletions(-) diff --git a/package-lock.json b/package-lock.json index b2d9e45d1..27b0d7d51 100644 --- a/package-lock.json +++ b/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", @@ -9935,8 +9935,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -9957,14 +9956,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9979,20 +9976,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -10109,8 +10103,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -10122,7 +10115,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -10137,7 +10129,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -10145,14 +10136,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -10171,7 +10160,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -10252,8 +10240,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -10265,7 +10252,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -10351,8 +10337,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -10388,7 +10373,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -10408,7 +10392,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -10452,14 +10435,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, diff --git a/package.json b/package.json index 80a010952..fe8da370b 100644 --- a/package.json +++ b/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", diff --git a/src/editor/model/Editor.js b/src/editor/model/Editor.js index ac63496fb..2daf71a38 100644 --- a/src/editor/model/Editor.js +++ b/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, diff --git a/src/utils/ColorPicker.js b/src/utils/ColorPicker.js index f8fd6210f..62d8ef097 100644 --- a/src/utils/ColorPicker.js +++ b/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; diff --git a/src/utils/extender.js b/src/utils/extender.js index a4df3682b..3de7a2d78 100644 --- a/src/utils/extender.js +++ b/src/utils/extender.js @@ -59,112 +59,114 @@ export default ({ $, Backbone }) => { 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); - } - }; + // 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'); @@ -181,39 +183,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)) { @@ -264,6 +268,7 @@ export default ({ $, Backbone }) => { return win ? win.pageYOffset : el.scrollTop || 0; }; + const offset = $.prototype.offset; fn.offset = function(coords) { let top, left;