library upgrades

This commit is contained in:
zadam 2020-03-31 20:52:41 +02:00
parent 58f610b2c6
commit 4485650cbc
9 changed files with 495 additions and 457 deletions

View File

@ -1,6 +1,6 @@
/*! jQuery Fancytree Plugin - 2.34.0 - 2019-12-26T14:16:19Z /*! jQuery Fancytree Plugin - 2.35.0 - 2020-03-27T22:41:58Z
* https://github.com/mar10/fancytree * https://github.com/mar10/fancytree
* Copyright (c) 2019 Martin Wendt; Licensed MIT * Copyright (c) 2020 Martin Wendt; Licensed MIT
*/ */
/*! jQuery UI - v1.12.1 - 2018-05-20 /*! jQuery UI - v1.12.1 - 2018-05-20
* http://jqueryui.com * http://jqueryui.com
@ -1361,12 +1361,12 @@ var uniqueId = $.fn.extend( {
* Tree view control with support for lazy loading and much more. * Tree view control with support for lazy loading and much more.
* https://github.com/mar10/fancytree/ * https://github.com/mar10/fancytree/
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
/** Core Fancytree module. /** Core Fancytree module.
@ -1405,7 +1405,7 @@ var uniqueId = $.fn.extend( {
REX_HTML = /[&<>"'/]/g, // Escape those characters REX_HTML = /[&<>"'/]/g, // Escape those characters
REX_TOOLTIP = /[<>"'/]/g, // Don't escape `&` in tooltips REX_TOOLTIP = /[<>"'/]/g, // Don't escape `&` in tooltips
RECURSIVE_REQUEST_ERROR = "$recursive_request", RECURSIVE_REQUEST_ERROR = "$recursive_request",
// CLIPBOARD = null, INVALID_REQUEST_TARGET_ERROR = "$request_target_invalid",
ENTITY_MAP = { ENTITY_MAP = {
"&": "&amp;", "&": "&amp;",
"<": "&lt;", "<": "&lt;",
@ -2206,7 +2206,7 @@ var uniqueId = $.fn.extend( {
* *
* @param {FancytreeNode} node source node * @param {FancytreeNode} node source node
* @param {string} [mode=child] 'before' | 'after' | 'child' * @param {string} [mode=child] 'before' | 'after' | 'child'
* @param {Function} [map] callback function(NodeData) that could modify the new node * @param {Function} [map] callback function(NodeData, FancytreeNode) that could modify the new node
* @returns {FancytreeNode} new * @returns {FancytreeNode} new
*/ */
copyTo: function(node, mode, map) { copyTo: function(node, mode, map) {
@ -2970,10 +2970,9 @@ var uniqueId = $.fn.extend( {
* @deprecated since 2014-02-16: use load() instead. * @deprecated since 2014-02-16: use load() instead.
*/ */
lazyLoad: function(discard) { lazyLoad: function(discard) {
this.warn( $.error(
"FancytreeNode.lazyLoad() is deprecated since 2014-02-16. Use .load() instead." "FancytreeNode.lazyLoad() is deprecated since 2014-02-16. Use .load() instead."
); );
return this.load(discard);
}, },
/** /**
* Load all children of a lazy node if neccessary. The <i>expanded</i> state is maintained. * Load all children of a lazy node if neccessary. The <i>expanded</i> state is maintained.
@ -3496,9 +3495,9 @@ var uniqueId = $.fn.extend( {
// this.debug("scrollIntoView(), scrollTop=" + scrollTop, opts.scrollOfs); // this.debug("scrollIntoView(), scrollTop=" + scrollTop, opts.scrollOfs);
// _assert($(this.span).is(":visible"), "scrollIntoView node is invisible"); // otherwise we cannot calc offsets // _assert($(this.span).is(":visible"), "scrollIntoView node is invisible"); // otherwise we cannot calc offsets
if (!this.isVisible()) { if (this.isRootNode() || !this.isVisible()) {
// We cannot calc offsets for hidden elements // We cannot calc offsets for hidden elements
this.warn("scrollIntoView(): node is invisible."); this.info("scrollIntoView(): node is invisible.");
return _getResolvedPromise(); return _getResolvedPromise();
} }
if (isParentWindow) { if (isParentWindow) {
@ -3610,7 +3609,7 @@ var uniqueId = $.fn.extend( {
return this.tree._callHook("nodeSetSelected", this, flag, opts); return this.tree._callHook("nodeSetSelected", this, flag, opts);
}, },
/**Mark a lazy node as 'error', 'loading', 'nodata', or 'ok'. /**Mark a lazy node as 'error', 'loading', 'nodata', or 'ok'.
* @param {string} status 'error'|'empty'|'ok' * @param {string} status 'error'|'loading'|'nodata'|'ok'
* @param {string} [message] * @param {string} [message]
* @param {string} [details] * @param {string} [details]
*/ */
@ -3671,7 +3670,7 @@ var uniqueId = $.fn.extend( {
* *
* @param {boolean} [recursive=false] include child nodes * @param {boolean} [recursive=false] include child nodes
* @param {function} [callback] callback(dict, node) is called for every node, in order to allow modifications. * @param {function} [callback] callback(dict, node) is called for every node, in order to allow modifications.
* Return `false` to ignore this node or "skip" to include this node without its children. * Return `false` to ignore this node or `"skip"` to include this node without its children.
* @returns {NodeData} * @returns {NodeData}
*/ */
toDict: function(recursive, callback) { toDict: function(recursive, callback) {
@ -3703,7 +3702,7 @@ var uniqueId = $.fn.extend( {
} }
} }
if (recursive) { if (recursive) {
if (this.hasChildren()) { if ($.isArray(this.children)) {
dict.children = []; dict.children = [];
for (i = 0, l = this.children.length; i < l; i++) { for (i = 0, l = this.children.length; i < l; i++) {
node = this.children[i]; node = this.children[i];
@ -4328,8 +4327,8 @@ var uniqueId = $.fn.extend( {
// case "copy": // case "copy":
// clipboard = { // clipboard = {
// mode: cmd, // mode: cmd,
// data: node.toDict(function(n) { // data: node.toDict(function(d, n) {
// delete n.key; // delete d.key;
// }), // }),
// }; // };
// break; // break;
@ -5613,12 +5612,16 @@ var uniqueId = $.fn.extend( {
nodeLoadChildren: function(ctx, source) { nodeLoadChildren: function(ctx, source) {
var ajax, var ajax,
delay, delay,
dfd, ajaxDfd = null,
res, resultDfd,
isAsync = true,
tree = ctx.tree, tree = ctx.tree,
node = ctx.node, node = ctx.node,
nodePrevParent = node.parent,
tag = "nodeLoadChildren",
requestId = Date.now(); requestId = Date.now();
// `source` is a callback: use the returned result instead:
if ($.isFunction(source)) { if ($.isFunction(source)) {
source = source.call(tree, { type: "source" }, ctx); source = source.call(tree, { type: "source" }, ctx);
_assert( _assert(
@ -5626,23 +5629,15 @@ var uniqueId = $.fn.extend( {
"source callback must not return another function" "source callback must not return another function"
); );
} }
if (source.url) { // `source` is already a promise:
if (node._requestId) { if ($.isFunction(source.then)) {
node.warn( // _assert($.isFunction(source.always), "Expected jQuery?");
"Recursive load request #" + ajaxDfd = source;
requestId + } else if (source.url) {
" while #" +
node._requestId +
" is pending."
);
// } else {
// node.debug("Send load request #" + requestId);
}
// `source` is an Ajax options object // `source` is an Ajax options object
ajax = $.extend({}, ctx.options.ajax, source); ajax = $.extend({}, ctx.options.ajax, source);
node._requestId = requestId;
if (ajax.debugDelay) { if (ajax.debugDelay) {
// simulate a slow server // Simulate a slow server
delay = ajax.debugDelay; delay = ajax.debugDelay;
delete ajax.debugDelay; // remove debug option delete ajax.debugDelay; // remove debug option
if ($.isArray(delay)) { if ($.isArray(delay)) {
@ -5656,30 +5651,74 @@ var uniqueId = $.fn.extend( {
Math.round(delay) + Math.round(delay) +
" ms ..." " ms ..."
); );
dfd = $.Deferred(function(dfd) { ajaxDfd = $.Deferred(function(ajaxDfd) {
setTimeout(function() { setTimeout(function() {
$.ajax(ajax) $.ajax(ajax)
.done(function() { .done(function() {
dfd.resolveWith(this, arguments); ajaxDfd.resolveWith(this, arguments);
}) })
.fail(function() { .fail(function() {
dfd.rejectWith(this, arguments); ajaxDfd.rejectWith(this, arguments);
}); });
}, delay); }, delay);
}); });
} else { } else {
dfd = $.ajax(ajax); ajaxDfd = $.ajax(ajax);
} }
} else if ($.isPlainObject(source) || $.isArray(source)) {
// `source` is already a constant dict or list, but we convert
// to a thenable for unified processing.
// 2020-01-03: refactored.
// `ajaxDfd = $.when(source)` would do the trick, but the returned
// promise will resolve async, which broke some tests and
// would probably also break current implementations out there.
// So we mock-up a thenable that resolves synchronously:
ajaxDfd = {
then: function(resolve, reject) {
resolve(source, null, null);
},
};
isAsync = false;
} else {
$.error("Invalid source type: " + source);
}
// Defer the deferred: we want to be able to reject, even if ajax // Check for overlapping requests
// resolved ok. if (node._requestId) {
source = new $.Deferred(); node.warn(
dfd.done(function(data, textStatus, jqXHR) { "Recursive load request #" +
requestId +
" while #" +
node._requestId +
" is pending."
);
node._requestId = requestId;
// node.debug("Send load request #" + requestId);
}
if (isAsync) {
tree.debugTime(tag);
tree.nodeSetStatus(ctx, "loading");
}
// The async Ajax request has now started...
// Defer the deferred:
// we want to be able to reject invalid responses, even if
// the raw HTTP Ajax XHR resolved as Ok.
// We use the ajaxDfd.then() syntax here, which is compatible with
// jQuery and ECMA6.
// However resultDfd is a jQuery deferred, which is currently the
// expected result type of nodeLoadChildren()
resultDfd = new $.Deferred();
ajaxDfd.then(
function(data, textStatus, jqXHR) {
// ajaxDfd was resolved, but we reject or resolve resultDfd
// depending on the response data
var errorObj, res; var errorObj, res;
if ( if (
(this.dataType === "json" || (source.dataType === "json" ||
this.dataType === "jsonp") && source.dataType === "jsonp") &&
typeof data === "string" typeof data === "string"
) { ) {
$.error( $.error(
@ -5690,21 +5729,28 @@ var uniqueId = $.fn.extend( {
// The expected request time stamp is later than `requestId` // The expected request time stamp is later than `requestId`
// (which was kept as as closure variable to this handler function) // (which was kept as as closure variable to this handler function)
// node.warn("Ignored load response for obsolete request #" + requestId + " (expected #" + node._requestId + ")"); // node.warn("Ignored load response for obsolete request #" + requestId + " (expected #" + node._requestId + ")");
source.rejectWith(this, [RECURSIVE_REQUEST_ERROR]); resultDfd.rejectWith(this, [
RECURSIVE_REQUEST_ERROR,
]);
return; return;
// } else { // } else {
// node.debug("Response returned for load request #" + requestId); // node.debug("Response returned for load request #" + requestId);
} }
// postProcess is similar to the standard ajax dataFilter hook, if (node.parent === null && nodePrevParent !== null) {
// but it is also called for JSONP resultDfd.rejectWith(this, [
INVALID_REQUEST_TARGET_ERROR,
]);
return;
}
// Allow to adjust the received response data in the `postProcess` event.
if (ctx.options.postProcess) { if (ctx.options.postProcess) {
// The handler may either
// - modify `ctx.response` in-place (and leave `ctx.result` undefined)
// => res = undefined
// - return a replacement in `ctx.result`
// => res = <new data>
// If res contains an `error` property, an error status is displayed
try { try {
// The handler may either
// - modify `ctx.response` in-place (and leave `ctx.result` undefined)
// => res = undefined
// - return a replacement in `ctx.result`
// => res = <new data>
// If res contains an `error` property, an error status is displayed
res = tree._triggerNodeEvent( res = tree._triggerNodeEvent(
"postProcess", "postProcess",
ctx, ctx,
@ -5712,7 +5758,7 @@ var uniqueId = $.fn.extend( {
{ {
response: data, response: data,
error: null, error: null,
dataType: this.dataType, dataType: source.dataType,
} }
); );
} catch (e) { } catch (e) {
@ -5723,6 +5769,8 @@ var uniqueId = $.fn.extend( {
}; };
} }
if (res.error) { if (res.error) {
// Either postProcess failed with an exception, or the returned
// result object has an 'error' property attached:
errorObj = $.isPlainObject(res.error) errorObj = $.isPlainObject(res.error)
? res.error ? res.error
: { message: res.error }; : { message: res.error };
@ -5731,7 +5779,7 @@ var uniqueId = $.fn.extend( {
null, null,
errorObj errorObj
); );
source.rejectWith(this, [errorObj]); resultDfd.rejectWith(this, [errorObj]);
return; return;
} }
if ( if (
@ -5749,175 +5797,158 @@ var uniqueId = $.fn.extend( {
ctx.options.enableAspx ctx.options.enableAspx
) { ) {
// Process ASPX WebMethod JSON object inside "d" property // Process ASPX WebMethod JSON object inside "d" property
// (only if no postProcess event was defined)
if (ctx.options.enableAspx === 42) {
tree.warn(
"The default for enableAspx will change to `false` in the fututure. " +
"Pass `enableAspx: true` or implement postProcess to silence this warning."
);
}
data = data =
typeof data.d === "string" typeof data.d === "string"
? $.parseJSON(data.d) ? $.parseJSON(data.d)
: data.d; : data.d;
} }
source.resolveWith(this, [data]); resultDfd.resolveWith(this, [data]);
}).fail(function(jqXHR, textStatus, errorThrown) { },
function(jqXHR, textStatus, errorThrown) {
// ajaxDfd was rejected, so we reject resultDfd as well
var errorObj = tree._makeHookContext(node, null, { var errorObj = tree._makeHookContext(node, null, {
error: jqXHR, error: jqXHR,
args: Array.prototype.slice.call(arguments), args: Array.prototype.slice.call(arguments),
message: errorThrown, message: errorThrown,
details: jqXHR.status + ": " + errorThrown, details: jqXHR.status + ": " + errorThrown,
}); });
source.rejectWith(this, [errorObj]); resultDfd.rejectWith(this, [errorObj]);
}); }
} );
// #383: accept and convert ECMAScript 6 Promise
if ($.isFunction(source.then) && $.isFunction(source.catch)) {
dfd = source;
source = new $.Deferred();
dfd.then(
function(value) {
source.resolve(value);
},
function(reason) {
source.reject(reason);
}
);
}
if ($.isFunction(source.promise)) {
// `source` is a deferred, i.e. ajax request
// _assert(!node.isLoading(), "recursive load");
tree.nodeSetStatus(ctx, "loading");
source // The async Ajax request has now started.
.done(function(children) { // resultDfd will be resolved/rejected after the response arrived,
tree.nodeSetStatus(ctx, "ok"); // was postProcessed, and checked.
node._requestId = null; // Now we implement the UI update and add the data to the tree.
}) // We also return this promise to the caller.
.fail(function(error) { resultDfd
var ctxErr; .done(function(data) {
tree.nodeSetStatus(ctx, "ok");
var children, metaData, noDataRes;
if (error === RECURSIVE_REQUEST_ERROR) { if ($.isPlainObject(data)) {
node.warn( // We got {foo: 'abc', children: [...]}
"Ignored response for obsolete load request #" + // Copy extra properties to tree.data.foo
requestId + _assert(
" (expected #" + node.isRootNode(),
node._requestId + "source may only be an object for root nodes (expecting an array of child objects otherwise)"
")" );
); _assert(
return; $.isArray(data.children),
} else if ( "if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"
error.node && );
error.error && metaData = data;
error.message children = data.children;
) { delete metaData.children;
// error is already a context object // Copy some attributes to tree.data
ctxErr = error; $.each(TREE_ATTRS, function(i, attr) {
} else { if (metaData[attr] !== undefined) {
ctxErr = tree._makeHookContext(node, null, { tree[attr] = metaData[attr];
error: error, // it can be jqXHR or any custom error delete metaData[attr];
args: Array.prototype.slice.call(arguments),
message: error
? error.message || error.toString()
: "",
});
if (ctxErr.message === "[object Object]") {
ctxErr.message = "";
} }
} });
node.warn( // Copy all other attributes to tree.data.NAME
"Load children failed (" + ctxErr.message + ")", $.extend(tree.data, metaData);
ctxErr } else {
); children = data;
if ( }
tree._triggerNodeEvent( _assert(
"loadError", $.isArray(children),
ctxErr, "expected array of children"
null );
) !== false node._setChildren(children);
) {
tree.nodeSetStatus( if (tree.options.nodata && children.length === 0) {
ctx, if ($.isFunction(tree.options.nodata)) {
"error", noDataRes = tree.options.nodata.call(
ctxErr.message, tree,
ctxErr.details { type: "nodata" },
ctx
); );
} else if (
tree.options.nodata === true &&
node.isRootNode()
) {
noDataRes = tree.options.strings.noData;
} else if (
typeof tree.options.nodata === "string" &&
node.isRootNode()
) {
noDataRes = tree.options.nodata;
} }
}); if (noDataRes) {
} else { node.setStatus("nodata", noDataRes);
if (ctx.options.postProcess) {
// #792: Call postProcess for non-deferred source
res = tree._triggerNodeEvent(
"postProcess",
ctx,
ctx.originalEvent,
{
response: source,
error: null,
dataType: typeof source,
} }
);
if (
$.isArray(res) ||
($.isPlainObject(res) && $.isArray(res.children))
) {
// Use `ctx.result` if valid
// (otherwise use existing data, which may have been modified in-place)
source = res;
} }
} // trigger fancytreeloadchildren
} tree._triggerNodeEvent("loadChildren", node);
// $.when(source) resolves also for non-deferreds })
return $.when(source).done(function(children) { .fail(function(error) {
var metaData, noDataRes; var ctxErr;
if ($.isPlainObject(children)) { if (error === RECURSIVE_REQUEST_ERROR) {
// We got {foo: 'abc', children: [...]} node.warn(
// Copy extra properties to tree.data.foo "Ignored response for obsolete load request #" +
_assert( requestId +
node.isRootNode(), " (expected #" +
"source may only be an object for root nodes (expecting an array of child objects otherwise)" node._requestId +
); ")"
_assert(
$.isArray(children.children),
"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"
);
metaData = children;
children = children.children;
delete metaData.children;
// Copy some attributes to tree.data
$.each(TREE_ATTRS, function(i, attr) {
if (metaData[attr] !== undefined) {
tree[attr] = metaData[attr];
delete metaData[attr];
}
});
// Copy all other attributes to tree.data.NAME
$.extend(tree.data, metaData);
}
_assert($.isArray(children), "expected array of children");
node._setChildren(children);
if (tree.options.nodata && children.length === 0) {
if ($.isFunction(tree.options.nodata)) {
noDataRes = tree.options.nodata.call(
tree,
{ type: "nodata" },
ctx
); );
} else if ( return;
tree.options.nodata === true && } else if (error === INVALID_REQUEST_TARGET_ERROR) {
node.isRootNode() node.warn(
) { "Lazy parent node was removed while loading: discarding response."
noDataRes = tree.options.strings.nodata; );
} else if ( return;
typeof tree.options.nodata === "string" && } else if (error.node && error.error && error.message) {
node.isRootNode() // error is already a context object
) { ctxErr = error;
noDataRes = tree.options.nodata; } else {
ctxErr = tree._makeHookContext(node, null, {
error: error, // it can be jqXHR or any custom error
args: Array.prototype.slice.call(arguments),
message: error
? error.message || error.toString()
: "",
});
if (ctxErr.message === "[object Object]") {
ctxErr.message = "";
}
} }
if (noDataRes) { node.warn(
node.setStatus("nodata", noDataRes); "Load children failed (" + ctxErr.message + ")",
ctxErr
);
if (
tree._triggerNodeEvent(
"loadError",
ctxErr,
null
) !== false
) {
tree.nodeSetStatus(
ctx,
"error",
ctxErr.message,
ctxErr.details
);
} }
} })
// trigger fancytreeloadchildren .always(function() {
tree._triggerNodeEvent("loadChildren", node); node._requestId = null;
}); if (isAsync) {
tree.debugTimeEnd(tag);
}
});
return resultDfd.promise();
}, },
/** [Not Implemented] */ /** [Not Implemented] */
nodeLoadKeyPath: function(ctx, keyPathList) { nodeLoadKeyPath: function(ctx, keyPathList) {
@ -7591,7 +7622,7 @@ var uniqueId = $.fn.extend( {
clickFolderMode: 4, clickFolderMode: 4,
debugLevel: null, // 0..4 (null: use global setting $.ui.fancytree.debugLevel) debugLevel: null, // 0..4 (null: use global setting $.ui.fancytree.debugLevel)
disabled: false, // TODO: required anymore? disabled: false, // TODO: required anymore?
enableAspx: true, enableAspx: 42, // TODO: this is truethy, but distinguishable from true: default will change to false in the future
escapeTitles: false, escapeTitles: false,
extensions: [], extensions: [],
// fx: { height: "toggle", duration: 200 }, // fx: { height: "toggle", duration: 200 },
@ -8028,7 +8059,7 @@ var uniqueId = $.fn.extend( {
{ {
/** Version number `"MAJOR.MINOR.PATCH"` /** Version number `"MAJOR.MINOR.PATCH"`
* @type {string} */ * @type {string} */
version: "2.34.0", // Set to semver by 'grunt release' version: "2.35.0", // Set to semver by 'grunt release'
/** @type {string} /** @type {string}
* @description `"production" for release builds` */ * @description `"production" for release builds` */
buildType: "production", // Set to 'production' by 'grunt build' buildType: "production", // Set to 'production' by 'grunt build'
@ -8658,13 +8689,13 @@ var uniqueId = $.fn.extend( {
* Add a child counter bubble to tree nodes. * Add a child counter bubble to tree nodes.
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/) * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
// To keep the global namespace clean, we wrap everything in a closure. // To keep the global namespace clean, we wrap everything in a closure.
@ -8745,7 +8776,7 @@ var uniqueId = $.fn.extend( {
} else { } else {
$badge.remove(); $badge.remove();
} }
if (extOpts.deep && !node.isTopLevel() && !node.isRoot()) { if (extOpts.deep && !node.isTopLevel() && !node.isRootNode()) {
node.parent.updateCounters(); node.parent.updateCounters();
} }
}; };
@ -8783,7 +8814,7 @@ var uniqueId = $.fn.extend( {
// Every extension must be registered by a unique name. // Every extension must be registered by a unique name.
name: "childcounter", name: "childcounter",
// Version information should be compliant with [semver](http://semver.org) // Version information should be compliant with [semver](http://semver.org)
version: "2.34.0", version: "2.35.0",
// Extension specific options and their defaults. // Extension specific options and their defaults.
// This options will be available as `tree.options.childcounter.hideExpanded` // This options will be available as `tree.options.childcounter.hideExpanded`
@ -8889,13 +8920,13 @@ var uniqueId = $.fn.extend( {
* Support faster lookup of nodes by key and shared ref-ids. * Support faster lookup of nodes by key and shared ref-ids.
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/) * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
(function(factory) { (function(factory) {
@ -9253,7 +9284,7 @@ var uniqueId = $.fn.extend( {
*/ */
$.ui.fancytree.registerExtension({ $.ui.fancytree.registerExtension({
name: "clones", name: "clones",
version: "2.34.0", version: "2.35.0",
// Default options for this extension. // Default options for this extension.
options: { options: {
highlightActiveClones: true, // set 'fancytree-active-clone' on active clones and all peers highlightActiveClones: true, // set 'fancytree-active-clone' on active clones and all peers
@ -9410,13 +9441,13 @@ var uniqueId = $.fn.extend( {
* Drag-and-drop support (native HTML5). * Drag-and-drop support (native HTML5).
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/) * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
/* /*
@ -10201,6 +10232,10 @@ var uniqueId = $.fn.extend( {
node.debug("Reject dropping below own ancestor."); node.debug("Reject dropping below own ancestor.");
DRAG_ENTER_RESPONSE = false; DRAG_ENTER_RESPONSE = false;
break; break;
} else if (dndOpts.preventLazyParents && !node.isLoaded()) {
node.warn("Drop over unloaded target node prevented.");
DRAG_ENTER_RESPONSE = false;
break;
} }
$dropMarker.show(); $dropMarker.show();
@ -10209,6 +10244,7 @@ var uniqueId = $.fn.extend( {
r = dndOpts.dragEnter(node, data); r = dndOpts.dragEnter(node, data);
res = normalizeDragEnterResponse(r); res = normalizeDragEnterResponse(r);
// alert("res:" + JSON.stringify(res))
DRAG_ENTER_RESPONSE = res; DRAG_ENTER_RESPONSE = res;
allowDrop = res && (res.over || res.before || res.after); allowDrop = res && (res.over || res.before || res.after);
@ -10254,6 +10290,7 @@ var uniqueId = $.fn.extend( {
} else if ( } else if (
dndOpts.autoExpandMS && dndOpts.autoExpandMS &&
Date.now() - DRAG_OVER_STAMP > dndOpts.autoExpandMS && Date.now() - DRAG_OVER_STAMP > dndOpts.autoExpandMS &&
!node.isLoading() &&
(!dndOpts.dragExpand || (!dndOpts.dragExpand ||
dndOpts.dragExpand(node, data) !== false) dndOpts.dragExpand(node, data) !== false)
) { ) {
@ -10420,7 +10457,7 @@ var uniqueId = $.fn.extend( {
$.ui.fancytree.registerExtension({ $.ui.fancytree.registerExtension({
name: "dnd5", name: "dnd5",
version: "2.34.0", version: "2.35.0",
// Default options for this extension. // Default options for this extension.
options: { options: {
autoExpandMS: 1500, // Expand nodes after n milliseconds of hovering autoExpandMS: 1500, // Expand nodes after n milliseconds of hovering
@ -10431,6 +10468,7 @@ var uniqueId = $.fn.extend( {
// dropEffect: "auto", // 'copy'|'link'|'move'|'auto'(calculate from `effectAllowed`+modifier keys) or callback(node, data) that returns such string. // dropEffect: "auto", // 'copy'|'link'|'move'|'auto'(calculate from `effectAllowed`+modifier keys) or callback(node, data) that returns such string.
dropEffectDefault: "move", // Default dropEffect ('copy', 'link', or 'move') when no modifier is pressed (overide in dragDrag, dragOver). dropEffectDefault: "move", // Default dropEffect ('copy', 'link', or 'move') when no modifier is pressed (overide in dragDrag, dragOver).
preventForeignNodes: false, // Prevent dropping nodes from different Fancytrees preventForeignNodes: false, // Prevent dropping nodes from different Fancytrees
preventLazyParents: true, // Prevent dropping items on unloaded lazy Fancytree nodes
preventNonNodes: false, // Prevent dropping items other than Fancytree nodes preventNonNodes: false, // Prevent dropping items other than Fancytree nodes
preventRecursion: true, // Prevent dropping nodes on own descendants preventRecursion: true, // Prevent dropping nodes on own descendants
preventSameParent: false, // Prevent dropping nodes under same direct parent preventSameParent: false, // Prevent dropping nodes under same direct parent
@ -10548,13 +10586,13 @@ var uniqueId = $.fn.extend( {
* Make node titles editable. * Make node titles editable.
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/) * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
(function(factory) { (function(factory) {
@ -10756,7 +10794,7 @@ var uniqueId = $.fn.extend( {
// Re-enable mouse and keyboard handling // Re-enable mouse and keyboard handling
tree.widget._bind(); tree.widget._bind();
if (local.lastDraggableAttrValue) { if (node && local.lastDraggableAttrValue) {
node.span.draggable = true; node.span.draggable = true;
} }
@ -10846,7 +10884,7 @@ var uniqueId = $.fn.extend( {
*/ */
$.ui.fancytree.registerExtension({ $.ui.fancytree.registerExtension({
name: "edit", name: "edit",
version: "2.34.0", version: "2.35.0",
// Default options for this extension. // Default options for this extension.
options: { options: {
adjustWidthOfs: 4, // null: don't adjust input size to content adjustWidthOfs: 4, // null: don't adjust input size to content
@ -10952,13 +10990,13 @@ var uniqueId = $.fn.extend( {
* Remove or highlight tree nodes, based on a filter. * Remove or highlight tree nodes, based on a filter.
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/) * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
(function(factory) { (function(factory) {
@ -11296,7 +11334,7 @@ var uniqueId = $.fn.extend( {
*/ */
$.ui.fancytree.registerExtension({ $.ui.fancytree.registerExtension({
name: "filter", name: "filter",
version: "2.34.0", version: "2.35.0",
// Default options for this extension. // Default options for this extension.
options: { options: {
autoApply: true, // Re-apply last filter if lazy data is loaded autoApply: true, // Re-apply last filter if lazy data is loaded
@ -11411,13 +11449,13 @@ var uniqueId = $.fn.extend( {
* Use glyph-fonts, ligature-fonts, or SVG icons instead of icon sprites. * Use glyph-fonts, ligature-fonts, or SVG icons instead of icon sprites.
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/) * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
(function(factory) { (function(factory) {
@ -11600,7 +11638,7 @@ var uniqueId = $.fn.extend( {
$.ui.fancytree.registerExtension({ $.ui.fancytree.registerExtension({
name: "glyph", name: "glyph",
version: "2.34.0", version: "2.35.0",
// Default options for this extension. // Default options for this extension.
options: { options: {
preset: null, // 'awesome3', 'awesome4', 'bootstrap3', 'material' preset: null, // 'awesome3', 'awesome4', 'bootstrap3', 'material'
@ -11634,7 +11672,7 @@ var uniqueId = $.fn.extend( {
res = this._super(ctx); res = this._super(ctx);
if (node.isRoot()) { if (node.isRootNode()) {
return res; return res;
} }
span = $span.children("span.fancytree-expander").get(0); span = $span.children("span.fancytree-expander").get(0);
@ -11749,13 +11787,13 @@ var uniqueId = $.fn.extend( {
* Support keyboard navigation for trees with embedded input controls. * Support keyboard navigation for trees with embedded input controls.
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/) * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
(function(factory) { (function(factory) {
@ -11872,7 +11910,7 @@ var uniqueId = $.fn.extend( {
*/ */
$.ui.fancytree.registerExtension({ $.ui.fancytree.registerExtension({
name: "gridnav", name: "gridnav",
version: "2.34.0", version: "2.35.0",
// Default options for this extension. // Default options for this extension.
options: { options: {
autofocusInput: false, // Focus first embedded input if node gets activated autofocusInput: false, // Focus first embedded input if node gets activated
@ -11974,13 +12012,13 @@ var uniqueId = $.fn.extend( {
* Allow multiple selection of nodes by mouse or keyboard. * Allow multiple selection of nodes by mouse or keyboard.
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/) * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
(function(factory) { (function(factory) {
@ -12009,7 +12047,7 @@ var uniqueId = $.fn.extend( {
*/ */
$.ui.fancytree.registerExtension({ $.ui.fancytree.registerExtension({
name: "multi", name: "multi",
version: "2.34.0", version: "2.35.0",
// Default options for this extension. // Default options for this extension.
options: { options: {
allowNoSelect: false, // allowNoSelect: false, //
@ -12106,13 +12144,13 @@ var uniqueId = $.fn.extend( {
* *
* @depends: js-cookie or jquery-cookie * @depends: js-cookie or jquery-cookie
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
(function(factory) { (function(factory) {
@ -12312,7 +12350,7 @@ var uniqueId = $.fn.extend( {
*/ */
$.ui.fancytree.registerExtension({ $.ui.fancytree.registerExtension({
name: "persist", name: "persist",
version: "2.34.0", version: "2.35.0",
// Default options for this extension. // Default options for this extension.
options: { options: {
cookieDelimiter: "~", cookieDelimiter: "~",
@ -12600,13 +12638,13 @@ var uniqueId = $.fn.extend( {
* Render tree as table (aka 'tree grid', 'table tree'). * Render tree as table (aka 'tree grid', 'table tree').
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/) * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
(function(factory) { (function(factory) {
@ -12689,7 +12727,7 @@ var uniqueId = $.fn.extend( {
$.ui.fancytree.registerExtension({ $.ui.fancytree.registerExtension({
name: "table", name: "table",
version: "2.34.0", version: "2.35.0",
// Default options for this extension. // Default options for this extension.
options: { options: {
checkboxColumnIdx: null, // render the checkboxes into the this column index (default: nodeColumnIdx) checkboxColumnIdx: null, // render the checkboxes into the this column index (default: nodeColumnIdx)
@ -13150,13 +13188,13 @@ var uniqueId = $.fn.extend( {
* *
* @see http://jqueryui.com/themeroller/ * @see http://jqueryui.com/themeroller/
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
(function(factory) { (function(factory) {
@ -13179,7 +13217,7 @@ var uniqueId = $.fn.extend( {
*/ */
$.ui.fancytree.registerExtension({ $.ui.fancytree.registerExtension({
name: "themeroller", name: "themeroller",
version: "2.34.0", version: "2.35.0",
// Default options for this extension. // Default options for this extension.
options: { options: {
activeClass: "ui-state-active", // Class added to active node activeClass: "ui-state-active", // Class added to active node
@ -13270,13 +13308,13 @@ var uniqueId = $.fn.extend( {
* Support for 100% wide selection bars. * Support for 100% wide selection bars.
* (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/) * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* *
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
*/ */
(function(factory) { (function(factory) {
@ -13406,7 +13444,7 @@ var uniqueId = $.fn.extend( {
*/ */
$.ui.fancytree.registerExtension({ $.ui.fancytree.registerExtension({
name: "wide", name: "wide",
version: "2.34.0", version: "2.35.0",
// Default options for this extension. // Default options for this extension.
options: { options: {
iconWidth: null, // Adjust this if @fancy-icon-width != "16px" iconWidth: null, // Adjust this if @fancy-icon-width != "16px"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -9,12 +9,12 @@
* *
* This section is automatically generated from the `skin-common.less` template. * This section is automatically generated from the `skin-common.less` template.
* *
* Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de) * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)
* Released under the MIT license * Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo * https://github.com/mar10/fancytree/wiki/LicenseInfo
* *
* @version 2.34.0 * @version 2.35.0
* @date 2019-12-26T14:16:19Z * @date 2020-03-27T22:41:58Z
******************************************************************************/ ******************************************************************************/
/*------------------------------------------------------------------------------ /*------------------------------------------------------------------------------
* Helpers * Helpers

316
package-lock.json generated
View File

@ -178,23 +178,23 @@
} }
}, },
"@jimp/bmp": { "@jimp/bmp": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.0.tgz",
"integrity": "sha512-CZYQPEC3iUBMuaGWrtIG+GKNl93q/PkdudrCKJR/B96dfNngsmoosEm3LuFgJHEcJIfvnJkNqKw74l+zEiqCbg==", "integrity": "sha512-CN3uTfm2NTeJ+l1MMP1O6VkjED+bJb1GVL8AegbUF1ZG4drfAyU74EuYOqqU39k0ws3rSnX8GIkZdOP2xZ88pw==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"bmp-js": "^0.1.0", "bmp-js": "^0.1.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/core": { "@jimp/core": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.10.0.tgz",
"integrity": "sha512-N4GCjcXb0QwR5GBABDK2xQ3cKyaF7LlCYeJEG9mV7G/ynBoRqJe4JA6YKU9Ww9imGkci/4A594nQo8tUIqdcBw==", "integrity": "sha512-oCvwNz5sASKzU526RP8ci6crdhLKuaGJmEobYFXTGR1ZjRNyIsecV9CnXHPj9dzIGhtbf92zYii7uXSdFQjikA==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"any-base": "^1.1.0", "any-base": "^1.1.0",
"buffer": "^5.2.0", "buffer": "^5.2.0",
"core-js": "^3.4.1", "core-js": "^3.4.1",
@ -215,295 +215,295 @@
} }
}, },
"@jimp/custom": { "@jimp/custom": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.10.0.tgz",
"integrity": "sha512-1UpJjI7fhX02BWLJ/KEqPwkHH60eNkCNeD6hEd+IZdTwLXfZCfFiM5BVlpgiZYZJSsVoRiAL4ne2Q5mCiKPKyw==", "integrity": "sha512-dqzATumk1VN/ZFREqyH765urWKj8VNta+E9G0izY7XLwcq0FwCN0C/aiBmiunJdjGcdWVWHbjMreXsIzlKTONg==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/core": "^0.9.8", "@jimp/core": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/gif": { "@jimp/gif": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.10.0.tgz",
"integrity": "sha512-LEbfpcO1sBJIQCJHchZjNlyNxzPjZQQ4X32klpQHZJG58n9FvL7Uuh1rpkrJRbqv3cU3P0ENNtTrsBDxsYwcfA==", "integrity": "sha512-E4ZGaN3lMVqTzYaL2VmkjNK3iB8cuSEChXuBqSRnZbozG0+hoiJv0992Bj+2SX6+e8aJZCZGuf2gVXqRgoxj/Q==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1", "core-js": "^3.4.1",
"omggif": "^1.0.9" "omggif": "^1.0.9"
} }
}, },
"@jimp/jpeg": { "@jimp/jpeg": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.10.0.tgz",
"integrity": "sha512-5u29SUzbZ32ZMmOaz3gO0hXatwSCnsvEAXRCKZoPPgbsPoyFAiZKVxjfLzjkeQF6awkvJ8hZni5chM15SNMg+g==", "integrity": "sha512-H78MgxGjljaTeHlkEsd2vL7CILv7/vqqN1AXSLTKOigXBQasef0/n5LUPnCbGzGbcjEVkC5f6zipULVbBJrHHQ==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1", "core-js": "^3.4.1",
"jpeg-js": "^0.3.4" "jpeg-js": "^0.3.4"
} }
}, },
"@jimp/plugin-blit": { "@jimp/plugin-blit": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.10.0.tgz",
"integrity": "sha512-6xTDomxJybhBcby1IUVaPydZFhxf+V0DRgfDlVK81kR9kSCoshJpzWqDuWrMqjNEPspPE7jRQwHMs0FdU7mVwQ==", "integrity": "sha512-37Zr9hmmXHm7nCE1SUFyaYHyy8Ci8uM7EDN2Vialq1zMjYJ4sgPl4410ykdRU6OtKtTqvF421NKsdmI3kEuKvw==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-blur": { "@jimp/plugin-blur": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.10.0.tgz",
"integrity": "sha512-dqbxuNFBRbmt35iIRacdgma7nlXklmPThsKcGWNTDmqb/hniK5IC+0xSPzBV4qMI2fLGP39LWHqqDZ0xDz14dA==", "integrity": "sha512-F+q2e23kGPXEUlfmk3L5QEHfdXt0yz9NzLJNJI+OmjqlmDt4szthC5/EJuNw0IKDup0PvYKYFTMCfJS5lfdNaA==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-circle": { "@jimp/plugin-circle": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.10.0.tgz",
"integrity": "sha512-+UStXUPCzPqzTixLC8eVqcFcEa6TS+BEM/6/hyM11TDb9sbiMGeUtgpwZP/euR5H5gfpAQDA1Ppzqhh5fuMDlw==", "integrity": "sha512-NDAJy+Nw8X1YNM2nAwdmYnFP4M2lM4lOGIMSsBp8hd7OR2QD9iA1RlsfQC7zQDFSE8WapQwBDelouJKovu3lrQ==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-color": { "@jimp/plugin-color": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.10.0.tgz",
"integrity": "sha512-SDHxOQsJHpt75hk6+sSlCPc2B3UJlXosFW+iLZ11xX1Qr0IdDtbfYlIoPmjKQFIDUNzqLSue/z7sKQ1OMZr/QA==", "integrity": "sha512-+FpVmEKQSyFzmxs9h5/B4XrrJmDaxNcHqeQe/RiEmpS/91SL0KpfAiHZGFke++OYKomxFcbxu5m/WPGyN669rQ==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1", "core-js": "^3.4.1",
"tinycolor2": "^1.4.1" "tinycolor2": "^1.4.1"
} }
}, },
"@jimp/plugin-contain": { "@jimp/plugin-contain": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.10.0.tgz",
"integrity": "sha512-oK52CPt7efozuLYCML7qOmpFeDt3zpU8qq8UZlnjsDs15reU6L8EiUbwYpJvzoEnEOh1ZqamB8F/gymViEO5og==", "integrity": "sha512-ZH2+qbwumUMI/+l9TBf3ug94WXIAars7svEjNBFfB7aLQvJzFxLifsPxLnjfoNRFIkrolfQ1RzAModotycoliA==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-cover": { "@jimp/plugin-cover": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.10.0.tgz",
"integrity": "sha512-nnamtHzMrNd5j5HRSPd1VzpZ8v9YYtUJPtvCdHOOiIjqG72jxJ2kTBlsS3oG5XS64h/2MJwpl/fmmMs1Tj1CmQ==", "integrity": "sha512-BJZZtKkb9FNPyaiQm2cc/49Og+60njlqzLZxu0uMrDyGzVn/K1dkg3MS9BOQQi1BTyqXILk+EctlXVCaGXqxTQ==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-crop": { "@jimp/plugin-crop": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.10.0.tgz",
"integrity": "sha512-Nv/6AIp4aJmbSIH2uiIqm+kSoShKM8eaX2fyrUTj811kio0hwD3f/vIxrWebvAqwDZjAFIAmMufFoFCVg6caoQ==", "integrity": "sha512-UWp7HNRVyAPx8YYgFfW9qOtx2JNXZq0q4M0IztPe9wOZ4RE45otK3pgxFglYAn2pxwSbaTP6bt+E7acRJIqBpw==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-displace": { "@jimp/plugin-displace": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.10.0.tgz",
"integrity": "sha512-0OgPjkOVa2xdbqI8P6gBKX/UK36RbaYVrFyXL8Jy9oNF69+LYWyTskuCu9YbGxzlCVjY/JFqQOvrKDbxgMYAKA==", "integrity": "sha512-IK/KuMWuC1rWLrkgTg5Xh7HLO7FaJ/+b84m1sidVRwJ1PTbWCnsf3f2KL9xmfzwdUXS4VE1E4Z2uUe1qsDx8Cg==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-dither": { "@jimp/plugin-dither": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.10.0.tgz",
"integrity": "sha512-jGM/4ByniZJnmV2fv8hKwyyydXZe/YzvgBcnB8XxzCq8kVR3Imcn+qnd2PEPZzIPKOTH4Cig/zo9Vk9Bs+m5FQ==", "integrity": "sha512-f11HgQr0i7UjHdeKg/6uQxRDFArHSPZrjYjtczCKB7XDE8Fs0BeaDGNr3oDiq3cFcn+533heYUtxYZMT2EZOnw==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-fisheye": { "@jimp/plugin-fisheye": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.0.tgz",
"integrity": "sha512-VnsalrD05f4pxG1msjnkwIFi5QveOqRm4y7VkoZKNX+iqs4TvRnH5+HpBnfdMzX/RXBi+Lf/kpTtuZgbOu/QWw==", "integrity": "sha512-r7eADsfWL7ajvUwhU2MVw2s3zTovyEyGUsP4P4FqSXUnni7Vhjx1gIapC13V3N71xzeFhra0zlHYVFiRKTSHtw==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-flip": { "@jimp/plugin-flip": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.10.0.tgz",
"integrity": "sha512-XbiZ4OfHD6woc0f6Sk7XxB6a7IyMjTRQ4pNU7APjaNxsl3L6qZC8qfCQphWVe3DHx7f3y7jEiPMvNnqRDP1xgA==", "integrity": "sha512-VdaF4xzmGVekGPyyaYsb+8xGY25wzPjpA54iSbl/CzrDVMMCiqNX5Ti5tFiJnq4YHP1Dr75X3dxbpYUV8un2YQ==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-gaussian": { "@jimp/plugin-gaussian": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.0.tgz",
"integrity": "sha512-ZBl5RA6+4XAD+mtqLfiG7u+qd8W5yqq3RBNca8eFqUSVo1v+eB2tzeLel0CWfVC/z6cw93Awm/nVnm6/CL2Oew==", "integrity": "sha512-r/t5UQEnuCpZ5eqn4H8tPSBtz531utfhs5KbF9VbqyoqlhbFM5nCPNeScOY8LLuh+mIOqH2iqStzXcUTS6+wiA==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-invert": { "@jimp/plugin-invert": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.10.0.tgz",
"integrity": "sha512-ESploqCoF6qUv5IWhVLaO5fEcrYZEsAWPFflh6ROiD2mmFKQxfeK+vHnk3IDLHtUwWTkAZQNbk89BVq7xvaNpQ==", "integrity": "sha512-QpvABEakobueEoVuHRPOTH+Habf8yzjE5zLYPDApt0zG/u/dEsZuyWcUdzstDEn4paH49X4DED4odCbExX/mdw==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-mask": { "@jimp/plugin-mask": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.10.0.tgz",
"integrity": "sha512-zSvEisTV4iGsBReitEdnQuGJq9/1xB5mPATadYZmIlp8r5HpD72HQb0WdEtb51/pu9Odt8KAxUf0ASg/PRVUiQ==", "integrity": "sha512-slp4H8QzJE4NHL9m1odHoswvrGJYNCM5YJ+UX50cHnFe1iJVBwJ+84Knwul1eRtFP0IJ1KJAG1ycObns/qWSMw==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-normalize": { "@jimp/plugin-normalize": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.10.0.tgz",
"integrity": "sha512-dPFBfwTa67K1tRw1leCidQT25R3ozrTUUOpO4jcGFHqXvBTWaR8sML1qxdfOBWs164mE5YpfdTvu6MM/junvCg==", "integrity": "sha512-W5S8XuH+mOFKamGZ4YosF/1hxgV/edX3YKJuXTtXSsq4UgusscPy0CVafRuMgH5wJf9enGQgzzy0z5VojudSTw==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-print": { "@jimp/plugin-print": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.10.0.tgz",
"integrity": "sha512-nLLPv1/faehRsOjecXXUb6kzhRcZzImO55XuFZ0c90ZyoiHm4UFREwO5sKxHGvpLXS6RnkhvSav4+IWD2qGbEQ==", "integrity": "sha512-5taCmgZw+gNRQCYXmzYgJWoRimfyP6CM72LMPx5mfKONUrvu3Rj8tFQJMfbpf6AJOQp3mJPIYlcbZzozSDfjLg==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1", "core-js": "^3.4.1",
"load-bmfont": "^1.4.0" "load-bmfont": "^1.4.0"
} }
}, },
"@jimp/plugin-resize": { "@jimp/plugin-resize": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.10.0.tgz",
"integrity": "sha512-L80NZ+HKsiKFyeDc6AfneC4+5XACrdL2vnyAVfAAsb3pmamgT/jDInWvvGhyI0Y76vx2w6XikplzEznW/QQvWg==", "integrity": "sha512-sYcbeMKTYEVmkKLIHUoz3o4Ai86dr8RnZz85uMsRAim+KxRCHMLD1MFpHSJWpIfuoNzo2onLZ8h0qqdQdZ6GuQ==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-rotate": { "@jimp/plugin-rotate": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.10.0.tgz",
"integrity": "sha512-bpqzQheISYnBXKyU1lIj46uR7mRs0UhgEREWK70HnvFJSlRshdcoNMIrKamyrJeFdJrkYPSfR/a6D0d5zsWf1Q==", "integrity": "sha512-/2N7tkHX0KDupfgxmamZPv1/ZuSwMcfeyZhjxIg2yFf4MXYKQYe3ByclrmNR7nkOAiD0Fa5NSIZ8tkIUBacWVg==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-scale": { "@jimp/plugin-scale": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.10.0.tgz",
"integrity": "sha512-QU3ZS4Lre8nN66U9dKCOC4FNfaOh/QJFYUmQPKpPS924oYbtnm4OlmsdfpK2hVMSVVyVOis8M+xpA1rDBnIp7w==", "integrity": "sha512-FSwW7rz0/EtnRpDa3YwQrdteYZw3ZWfs57MY6TYLcB3a9UlvGiGWiFnvoyu6tubjFi5uxDlkS6bLRH40UYdqAg==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-shadow": { "@jimp/plugin-shadow": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.10.0.tgz",
"integrity": "sha512-t/pE+QS3r1ZUxGIQNmwWDI3c5+/hLU+gxXD+C3EEC47/qk3gTBHpj/xDdGQBoObdT/HRjR048vC2BgBfzjj2hg==", "integrity": "sha512-+eXGK+Z5X99v3fHBpN35GIepfdZxF7V5gmFbCF4q7aIXLgNpVNM0j+g1wBFVqwSl97TpaD7Wbvh99zygWL/S6g==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugin-threshold": { "@jimp/plugin-threshold": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.10.0.tgz",
"integrity": "sha512-WWmC3lnIwOTPvkKu55w4DUY8Ehlzf3nU98bY0QtIzkqxkAOZU5m+lvgC/JxO5FyGiA57j9FLMIf0LsWkjARj7g==", "integrity": "sha512-m/oIgDfZ3wAAdpC4/JMgd+G3AvMcMCXmLkKh30JSwsPgIgsAZRiiGSdy3obXKLcEQ2eNWPIaCU1/qPVt6m2org==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1" "core-js": "^3.4.1"
} }
}, },
"@jimp/plugins": { "@jimp/plugins": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.10.0.tgz",
"integrity": "sha512-tD+cxS9SuEZaQ1hhAkNKw9TkUAqfoBAhdWPBrEZDr/GvGPrvJR4pYmmpSYhc5IZmMbXfQayHTTGqjj8D18bToA==", "integrity": "sha512-pxBCETGOTwZ7rBbq5NtPY21NcGLEtY6HtCvcN/IUmUNhcuGcaM+YEjGYg7mAP9HNoP6e6UevA5aiouDA+lFVHw==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/plugin-blit": "^0.9.8", "@jimp/plugin-blit": "^0.10.0",
"@jimp/plugin-blur": "^0.9.8", "@jimp/plugin-blur": "^0.10.0",
"@jimp/plugin-circle": "^0.9.8", "@jimp/plugin-circle": "^0.10.0",
"@jimp/plugin-color": "^0.9.8", "@jimp/plugin-color": "^0.10.0",
"@jimp/plugin-contain": "^0.9.8", "@jimp/plugin-contain": "^0.10.0",
"@jimp/plugin-cover": "^0.9.8", "@jimp/plugin-cover": "^0.10.0",
"@jimp/plugin-crop": "^0.9.8", "@jimp/plugin-crop": "^0.10.0",
"@jimp/plugin-displace": "^0.9.8", "@jimp/plugin-displace": "^0.10.0",
"@jimp/plugin-dither": "^0.9.8", "@jimp/plugin-dither": "^0.10.0",
"@jimp/plugin-fisheye": "^0.9.8", "@jimp/plugin-fisheye": "^0.10.0",
"@jimp/plugin-flip": "^0.9.8", "@jimp/plugin-flip": "^0.10.0",
"@jimp/plugin-gaussian": "^0.9.8", "@jimp/plugin-gaussian": "^0.10.0",
"@jimp/plugin-invert": "^0.9.8", "@jimp/plugin-invert": "^0.10.0",
"@jimp/plugin-mask": "^0.9.8", "@jimp/plugin-mask": "^0.10.0",
"@jimp/plugin-normalize": "^0.9.8", "@jimp/plugin-normalize": "^0.10.0",
"@jimp/plugin-print": "^0.9.8", "@jimp/plugin-print": "^0.10.0",
"@jimp/plugin-resize": "^0.9.8", "@jimp/plugin-resize": "^0.10.0",
"@jimp/plugin-rotate": "^0.9.8", "@jimp/plugin-rotate": "^0.10.0",
"@jimp/plugin-scale": "^0.9.8", "@jimp/plugin-scale": "^0.10.0",
"@jimp/plugin-shadow": "^0.9.8", "@jimp/plugin-shadow": "^0.10.0",
"@jimp/plugin-threshold": "^0.9.8", "@jimp/plugin-threshold": "^0.10.0",
"core-js": "^3.4.1", "core-js": "^3.4.1",
"timm": "^1.6.1" "timm": "^1.6.1"
} }
}, },
"@jimp/png": { "@jimp/png": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.10.0.tgz",
"integrity": "sha512-9CqR8d40zQCDhbnXHqcwkAMnvlV0vk9xSyE6LHjkYHS7x18Unsz5txQdsaEkEcXxCrOQSoWyITfLezlrWXRJAA==", "integrity": "sha512-RA52BB9duNFCEu1UuGrho7IQ+XVWsp4e+9dBToKfV0qsWAAHAffYz1y2XqLc1iCWcw1voBmJgIOygRu0jEt2QQ==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/utils": "^0.9.8", "@jimp/utils": "^0.10.0",
"core-js": "^3.4.1", "core-js": "^3.4.1",
"pngjs": "^3.3.3" "pngjs": "^3.3.3"
} }
}, },
"@jimp/tiff": { "@jimp/tiff": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.10.0.tgz",
"integrity": "sha512-eMxcpJivJqMByn2dZxUHLeh6qvVs5J/52kBF3TFa3C922OJ97D9l1C1h0WKUCBqFMWzMYapQQ4vwnLgpJ5tkow==", "integrity": "sha512-mD864zMb8gG5yRottcixbJj+AMrepGqYK+9guek1tVCuoOnWQzjwU3pbb59nqkbw3enf3XNmbK2f2TfE7s5Jbw==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"core-js": "^3.4.1", "core-js": "^3.4.1",
@ -511,24 +511,24 @@
} }
}, },
"@jimp/types": { "@jimp/types": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.0.tgz",
"integrity": "sha512-H5y/uqt0lqJ/ZN8pWqFG+pv8jPAppMKkTMByuC8YBIjWSsornwv44hjiWl93sbYhduLZY8ubz/CbX9jH2X6EwA==", "integrity": "sha512-PABpDNQi20aKe6Xcc4l4gVI95ztlkmfSSlgHJrby/Cg2b0NzQF81rY1W0eLC2/8R6OGTgi5FtvKI59NDss8nPg==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/bmp": "^0.9.8", "@jimp/bmp": "^0.10.0",
"@jimp/gif": "^0.9.8", "@jimp/gif": "^0.10.0",
"@jimp/jpeg": "^0.9.8", "@jimp/jpeg": "^0.10.0",
"@jimp/png": "^0.9.8", "@jimp/png": "^0.10.0",
"@jimp/tiff": "^0.9.8", "@jimp/tiff": "^0.10.0",
"core-js": "^3.4.1", "core-js": "^3.4.1",
"timm": "^1.6.1" "timm": "^1.6.1"
} }
}, },
"@jimp/utils": { "@jimp/utils": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.10.0.tgz",
"integrity": "sha512-UK0Fu0eevQlpRXq5ff4o/71HJlpX9wJMddJjMYg9vUqCCl8ZnumRAljfShHFhGyO+Vc9IzN6dd8Y5JZZTp1KOw==", "integrity": "sha512-a05KrUwDGuQn++gWyvQcWlFBXfyZXYpY/3Mde4i/HEIyzWrZSnSzppCssiKVXR5pSWSqfSsLDImrSuJRqtOVmQ==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"core-js": "^3.4.1" "core-js": "^3.4.1"
@ -2678,14 +2678,14 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
}, },
"ejs": { "ejs": {
"version": "2.7.4", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.2.tgz",
"integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" "integrity": "sha512-IncmUpn1yN84hy2shb0POJ80FWrfGNY0cxO9f4v+/sG7qcBvAtVWUA1IdzY/8EYUmOVhoKJVdJjNd3AZcnxOjA=="
}, },
"electron": { "electron": {
"version": "9.0.0-beta.10", "version": "9.0.0-beta.12",
"resolved": "https://registry.npmjs.org/electron/-/electron-9.0.0-beta.10.tgz", "resolved": "https://registry.npmjs.org/electron/-/electron-9.0.0-beta.12.tgz",
"integrity": "sha512-HTGLrC/BuRfKvWsS5ymOP1VUqnXCg2vbnVjViQ9f7WneWpDJ1D0CT2voP6Vi0ivHCQrKP8OQf7ZPphNkp+GUyA==", "integrity": "sha512-wX4D36JQAFa+3BIduDizy51fd0Tkoh7y+foudNdesIDt9sFJCAcc8RDOjQpFDsuMzehS/1fvMzsuUbquVZdSbA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@electron/get": "^1.0.1", "@electron/get": "^1.0.1",
@ -5380,14 +5380,14 @@
} }
}, },
"jimp": { "jimp": {
"version": "0.9.8", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/jimp/-/jimp-0.9.8.tgz", "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.10.0.tgz",
"integrity": "sha512-DHN4apKMwLIvD/TKO9tFfPuankNuVK98vCwHm/Jv9z5cJnrd38xhi+4I7IAGmDU3jIDlrEVhzTkFH1Ymv5yTQQ==", "integrity": "sha512-PwTUye0Z721FGzNZhbf48U3CMFMbtQY+LEshUx72Z716ku+/SjI6XXfXhZyU3o/PR1TxoFFjyLlV1x8qg6ZF+A==",
"requires": { "requires": {
"@babel/runtime": "^7.7.2", "@babel/runtime": "^7.7.2",
"@jimp/custom": "^0.9.8", "@jimp/custom": "^0.10.0",
"@jimp/plugins": "^0.9.8", "@jimp/plugins": "^0.10.0",
"@jimp/types": "^0.9.8", "@jimp/types": "^0.10.0",
"core-js": "^3.4.1", "core-js": "^3.4.1",
"regenerator-runtime": "^0.13.3" "regenerator-runtime": "^0.13.3"
} }

View File

@ -29,7 +29,7 @@
"csurf": "1.11.0", "csurf": "1.11.0",
"dayjs": "1.8.23", "dayjs": "1.8.23",
"debug": "4.1.1", "debug": "4.1.1",
"ejs": "2.7.4", "ejs": "3.0.2",
"electron-debug": "3.0.1", "electron-debug": "3.0.1",
"electron-dl": "3.0.0", "electron-dl": "3.0.0",
"electron-find": "1.0.6", "electron-find": "1.0.6",
@ -49,8 +49,8 @@
"imagemin-mozjpeg": "8.0.0", "imagemin-mozjpeg": "8.0.0",
"imagemin-pngquant": "8.0.0", "imagemin-pngquant": "8.0.0",
"ini": "1.3.5", "ini": "1.3.5",
"is-svg": "^4.2.1", "is-svg": "4.2.1",
"jimp": "0.9.8", "jimp": "0.10.0",
"mime-types": "2.1.26", "mime-types": "2.1.26",
"multer": "1.4.2", "multer": "1.4.2",
"node-abi": "2.15.0", "node-abi": "2.15.0",
@ -77,7 +77,7 @@
"yazl": "^2.5.1" "yazl": "^2.5.1"
}, },
"devDependencies": { "devDependencies": {
"electron": "9.0.0-beta.10", "electron": "9.0.0-beta.12",
"electron-builder": "22.4.1", "electron-builder": "22.4.1",
"electron-packager": "14.2.1", "electron-packager": "14.2.1",
"electron-rebuild": "1.10.1", "electron-rebuild": "1.10.1",

View File

@ -3,7 +3,7 @@ import treeCache from "./tree_cache.js";
import ws from "./ws.js"; import ws from "./ws.js";
import hoistedNoteService from "./hoisted_note.js"; import hoistedNoteService from "./hoisted_note.js";
async function prepareTree() { async function prepareRootNode() {
await treeCache.initializedPromise; await treeCache.initializedPromise;
const hoistedNoteId = hoistedNoteService.getHoistedNoteId(); const hoistedNoteId = hoistedNoteService.getHoistedNoteId();
@ -18,7 +18,7 @@ async function prepareTree() {
hoistedBranch = (await hoistedNote.getBranches())[0]; hoistedBranch = (await hoistedNote.getBranches())[0];
} }
return [ await prepareNode(hoistedBranch) ]; return await prepareNode(hoistedBranch);
} }
async function prepareBranch(note) { async function prepareBranch(note) {
@ -167,7 +167,7 @@ function getExtraClasses(note) {
} }
export default { export default {
prepareTree, prepareRootNode,
prepareBranch, prepareBranch,
getExtraClasses, getExtraClasses,
getIcon getIcon

View File

@ -68,13 +68,13 @@ export default class NoteTreeWidget extends TabAwareWidget {
} }
}); });
this.initialized = treeBuilder.prepareTree().then(treeData => this.initFancyTree(treeData)); this.initialized = this.initFancyTree();
return this.$widget; return this.$widget;
} }
async initFancyTree(treeData) { async initFancyTree() {
utils.assertArguments(treeData); const treeData = [await treeBuilder.prepareRootNode()];
this.$widget.fancytree({ this.$widget.fancytree({
autoScroll: true, autoScroll: true,
@ -414,8 +414,10 @@ export default class NoteTreeWidget extends TabAwareWidget {
return list ? list : []; // if no nodes with this refKey are found, fancy tree returns null return list ? list : []; // if no nodes with this refKey are found, fancy tree returns null
} }
async reload(notes) { async reload() {
await this.tree.reload(notes); const rootNode = await treeBuilder.prepareRootNode();
await this.tree.reload([rootNode]);
} }
// must be event since it's triggered from outside the tree // must be event since it's triggered from outside the tree
@ -581,13 +583,11 @@ export default class NoteTreeWidget extends TabAwareWidget {
} }
async reloadTreeFromCache() { async reloadTreeFromCache() {
const notes = await treeBuilder.prepareTree();
const activeNode = this.getActiveNode(); const activeNode = this.getActiveNode();
const activeNotePath = activeNode !== null ? treeService.getNotePath(activeNode) : null; const activeNotePath = activeNode !== null ? treeService.getNotePath(activeNode) : null;
await this.reload(notes); await this.reload();
if (activeNotePath) { if (activeNotePath) {
const node = await this.getNodeFromPath(activeNotePath, true); const node = await this.getNodeFromPath(activeNotePath, true);

View File

@ -12,30 +12,30 @@
<div class="dropdown-menu dropdown-menu-sm" id="context-menu-container"></div> <div class="dropdown-menu dropdown-menu-sm" id="context-menu-container"></div>
<% include dialogs/about.ejs %> <%- include('dialogs/about.ejs') %>
<% include dialogs/add_link.ejs %> <%- include('dialogs/add_link.ejs') %>
<% include dialogs/attributes.ejs %> <%- include('dialogs/attributes.ejs') %>
<% include dialogs/branch_prefix.ejs %> <%- include('dialogs/branch_prefix.ejs') %>
<% include dialogs/export.ejs %> <%- include('dialogs/export.ejs') %>
<% include dialogs/import.ejs %> <%- include('dialogs/import.ejs') %>
<% include dialogs/jump_to_note.ejs %> <%- include('dialogs/jump_to_note.ejs') %>
<% include dialogs/markdown_import.ejs %> <%- include('dialogs/markdown_import.ejs') %>
<% include dialogs/note_revisions.ejs %> <%- include('dialogs/note_revisions.ejs') %>
<% include dialogs/note_source.ejs %> <%- include('dialogs/note_source.ejs') %>
<% include dialogs/options.ejs %> <%- include('dialogs/options.ejs') %>
<% include dialogs/protected_session_password.ejs %> <%- include('dialogs/protected_session_password.ejs') %>
<% include dialogs/recent_changes.ejs %> <%- include('dialogs/recent_changes.ejs') %>
<% include dialogs/sql_console.ejs %> <%- include('dialogs/sql_console.ejs') %>
<% include dialogs/info.ejs %> <%- include('dialogs/info.ejs') %>
<% include dialogs/prompt.ejs %> <%- include('dialogs/prompt.ejs') %>
<% include dialogs/confirm.ejs %> <%- include('dialogs/confirm.ejs') %>
<% include dialogs/help.ejs %> <%- include('dialogs/help.ejs') %>
<% include dialogs/note_info.ejs %> <%- include('dialogs/note_info.ejs') %>
<% include dialogs/link_map.ejs %> <%- include('dialogs/link_map.ejs') %>
<% include dialogs/clone_to.ejs %> <%- include('dialogs/clone_to.ejs') %>
<% include dialogs/move_to.ejs %> <%- include('dialogs/move_to.ejs') %>
<% include dialogs/backend_log.ejs %> <%- include('dialogs/backend_log.ejs') %>
<% include dialogs/include_note.ejs %> <%- include('dialogs/include_note.ejs') %>
<script type="text/javascript"> <script type="text/javascript">
window.baseApiUrl = 'api/'; window.baseApiUrl = 'api/';
@ -60,8 +60,8 @@
<script src="libraries/bootstrap/js/bootstrap.bundle.min.js"></script> <script src="libraries/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Include Fancytree skin and library --> <!-- Include Fancytree skin and library -->
<link href="libraries/fancytree/skin-win8/ui.fancytree.css" rel="stylesheet"> <link href="libraries/fancytree/skin-win8/ui.fancytree.min.css" rel="stylesheet">
<script src="libraries/fancytree/jquery.fancytree-all-deps.js"></script> <script src="libraries/fancytree/jquery.fancytree-all-deps.min.js"></script>
<script src="libraries/jquery.hotkeys.js"></script> <script src="libraries/jquery.hotkeys.js"></script>
<script src="libraries/jquery.fancytree.hotkeys.js"></script> <script src="libraries/jquery.fancytree.hotkeys.js"></script>