mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-11-04 15:11:31 +08:00 
			
		
		
		
	fancytree 2.36.0
This commit is contained in:
		
							parent
							
								
									f028b88cce
								
							
						
					
					
						commit
						0ab9d02434
					
				@ -1,6 +1,6 @@
 | 
				
			|||||||
/*! jQuery Fancytree Plugin - 2.34.0 - 2019-12-26T14:16:19Z
 | 
					/*! jQuery Fancytree Plugin - 2.36.0 - 2020-07-15T20:15:15Z
 | 
				
			||||||
  * 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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** 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 = {
 | 
				
			||||||
			"&": "&",
 | 
								"&": "&",
 | 
				
			||||||
			"<": "<",
 | 
								"<": "<",
 | 
				
			||||||
@ -1881,7 +1881,8 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
		for (name in obj) {
 | 
							for (name in obj) {
 | 
				
			||||||
			if (
 | 
								if (
 | 
				
			||||||
				!NODE_ATTR_MAP[name] &&
 | 
									!NODE_ATTR_MAP[name] &&
 | 
				
			||||||
				!$.isFunction(obj[name]) &&
 | 
									(this.tree.options.copyFunctionsToData ||
 | 
				
			||||||
 | 
										!$.isFunction(obj[name])) &&
 | 
				
			||||||
				!NONE_NODE_DATA_MAP[name]
 | 
									!NONE_NODE_DATA_MAP[name]
 | 
				
			||||||
			) {
 | 
								) {
 | 
				
			||||||
				// node.data.NAME = obj.NAME
 | 
									// node.data.NAME = obj.NAME
 | 
				
			||||||
@ -1893,7 +1894,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
		if (this.key == null) {
 | 
							if (this.key == null) {
 | 
				
			||||||
			// test for null OR undefined
 | 
								// test for null OR undefined
 | 
				
			||||||
			if (this.tree.options.defaultKey) {
 | 
								if (this.tree.options.defaultKey) {
 | 
				
			||||||
				this.key = this.tree.options.defaultKey(this);
 | 
									this.key = "" + this.tree.options.defaultKey(this);
 | 
				
			||||||
				_assert(this.key, "defaultKey() must return a unique key");
 | 
									_assert(this.key, "defaultKey() must return a unique key");
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				this.key = "_" + FT._nextNodeKey++;
 | 
									this.key = "_" + FT._nextNodeKey++;
 | 
				
			||||||
@ -2206,7 +2207,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 +2971,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.
 | 
				
			||||||
@ -2986,7 +2986,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
				self = this,
 | 
									self = this,
 | 
				
			||||||
				wasExpanded = this.isExpanded();
 | 
									wasExpanded = this.isExpanded();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			//_assert(this.isLazy(), "load() requires a lazy node");
 | 
								_assert(this.isLazy(), "load() requires a lazy node");
 | 
				
			||||||
			// _assert( forceReload || this.isUndefined(), "Pass forceReload=true to re-load a lazy node" );
 | 
								// _assert( forceReload || this.isUndefined(), "Pass forceReload=true to re-load a lazy node" );
 | 
				
			||||||
			if (!forceReload && !this.isUndefined()) {
 | 
								if (!forceReload && !this.isUndefined()) {
 | 
				
			||||||
				return _getResolvedPromise(this);
 | 
									return _getResolvedPromise(this);
 | 
				
			||||||
@ -3496,9 +3496,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 +3610,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 +3671,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 +3703,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 +4328,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;
 | 
				
			||||||
@ -4778,6 +4778,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
			// Not found in the DOM, but still may be in an unrendered part of tree
 | 
								// Not found in the DOM, but still may be in an unrendered part of tree
 | 
				
			||||||
			searchRoot = searchRoot || this.rootNode;
 | 
								searchRoot = searchRoot || this.rootNode;
 | 
				
			||||||
			match = null;
 | 
								match = null;
 | 
				
			||||||
 | 
								key = "" + key; // Convert to string (#1005)
 | 
				
			||||||
			searchRoot.visit(function(node) {
 | 
								searchRoot.visit(function(node) {
 | 
				
			||||||
				if (node.key === key) {
 | 
									if (node.key === key) {
 | 
				
			||||||
					match = node;
 | 
										match = node;
 | 
				
			||||||
@ -5613,12 +5614,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 +5631,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 +5653,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 +5731,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) {
 | 
				
			||||||
							try {
 | 
					 | 
				
			||||||
							// The handler may either
 | 
												// The handler may either
 | 
				
			||||||
							//   - modify `ctx.response` in-place (and leave `ctx.result` undefined)
 | 
												//   - modify `ctx.response` in-place (and leave `ctx.result` undefined)
 | 
				
			||||||
							//     => res = undefined
 | 
												//     => res = undefined
 | 
				
			||||||
							//   - return a replacement in `ctx.result`
 | 
												//   - return a replacement in `ctx.result`
 | 
				
			||||||
							//     => res = <new data>
 | 
												//     => res = <new data>
 | 
				
			||||||
							//   If res contains an `error` property, an error status is displayed
 | 
												//   If res contains an `error` property, an error status is displayed
 | 
				
			||||||
 | 
												try {
 | 
				
			||||||
								res = tree._triggerNodeEvent(
 | 
													res = tree._triggerNodeEvent(
 | 
				
			||||||
									"postProcess",
 | 
														"postProcess",
 | 
				
			||||||
									ctx,
 | 
														ctx,
 | 
				
			||||||
@ -5712,7 +5760,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 +5771,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 +5781,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
									null,
 | 
														null,
 | 
				
			||||||
									errorObj
 | 
														errorObj
 | 
				
			||||||
								);
 | 
													);
 | 
				
			||||||
								source.rejectWith(this, [errorObj]);
 | 
													resultDfd.rejectWith(this, [errorObj]);
 | 
				
			||||||
								return;
 | 
													return;
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
							if (
 | 
												if (
 | 
				
			||||||
@ -5749,44 +5799,98 @@ 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,
 | 
				
			||||||
 | 
									// was postProcessed, and checked.
 | 
				
			||||||
 | 
									// Now we implement the UI update and add the data to the tree.
 | 
				
			||||||
 | 
									// We also return this promise to the caller.
 | 
				
			||||||
 | 
									resultDfd
 | 
				
			||||||
 | 
										.done(function(data) {
 | 
				
			||||||
						tree.nodeSetStatus(ctx, "ok");
 | 
											tree.nodeSetStatus(ctx, "ok");
 | 
				
			||||||
							node._requestId = null;
 | 
											var children, metaData, noDataRes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											if ($.isPlainObject(data)) {
 | 
				
			||||||
 | 
												// We got {foo: 'abc', children: [...]}
 | 
				
			||||||
 | 
												// Copy extra properties to tree.data.foo
 | 
				
			||||||
 | 
												_assert(
 | 
				
			||||||
 | 
													node.isRootNode(),
 | 
				
			||||||
 | 
													"source may only be an object for root nodes (expecting an array of child objects otherwise)"
 | 
				
			||||||
 | 
												);
 | 
				
			||||||
 | 
												_assert(
 | 
				
			||||||
 | 
													$.isArray(data.children),
 | 
				
			||||||
 | 
													"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"
 | 
				
			||||||
 | 
												);
 | 
				
			||||||
 | 
												metaData = data;
 | 
				
			||||||
 | 
												children = data.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);
 | 
				
			||||||
 | 
											} else {
 | 
				
			||||||
 | 
												children = data;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											_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 (
 | 
				
			||||||
 | 
													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) {
 | 
				
			||||||
 | 
													node.setStatus("nodata", noDataRes);
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											// trigger fancytreeloadchildren
 | 
				
			||||||
 | 
											tree._triggerNodeEvent("loadChildren", node);
 | 
				
			||||||
					})
 | 
										})
 | 
				
			||||||
					.fail(function(error) {
 | 
										.fail(function(error) {
 | 
				
			||||||
						var ctxErr;
 | 
											var ctxErr;
 | 
				
			||||||
@ -5800,11 +5904,12 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
									")"
 | 
														")"
 | 
				
			||||||
							);
 | 
												);
 | 
				
			||||||
							return;
 | 
												return;
 | 
				
			||||||
							} else if (
 | 
											} else if (error === INVALID_REQUEST_TARGET_ERROR) {
 | 
				
			||||||
								error.node &&
 | 
												node.warn(
 | 
				
			||||||
								error.error &&
 | 
													"Lazy parent node was removed while loading: discarding response."
 | 
				
			||||||
								error.message
 | 
												);
 | 
				
			||||||
							) {
 | 
												return;
 | 
				
			||||||
 | 
											} else if (error.node && error.error && error.message) {
 | 
				
			||||||
							// error is already a context object
 | 
												// error is already a context object
 | 
				
			||||||
							ctxErr = error;
 | 
												ctxErr = error;
 | 
				
			||||||
						} else {
 | 
											} else {
 | 
				
			||||||
@ -5837,87 +5942,15 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
								ctxErr.details
 | 
													ctxErr.details
 | 
				
			||||||
							);
 | 
												);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						});
 | 
										})
 | 
				
			||||||
				} else {
 | 
										.always(function() {
 | 
				
			||||||
					if (ctx.options.postProcess) {
 | 
											node._requestId = null;
 | 
				
			||||||
						// #792: Call postProcess for non-deferred source
 | 
											if (isAsync) {
 | 
				
			||||||
						res = tree._triggerNodeEvent(
 | 
												tree.debugTimeEnd(tag);
 | 
				
			||||||
							"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;
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				// $.when(source) resolves also for non-deferreds
 | 
					 | 
				
			||||||
				return $.when(source).done(function(children) {
 | 
					 | 
				
			||||||
					var metaData, noDataRes;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					if ($.isPlainObject(children)) {
 | 
					 | 
				
			||||||
						// We got {foo: 'abc', children: [...]}
 | 
					 | 
				
			||||||
						// Copy extra properties to tree.data.foo
 | 
					 | 
				
			||||||
						_assert(
 | 
					 | 
				
			||||||
							node.isRootNode(),
 | 
					 | 
				
			||||||
							"source may only be an object for root nodes (expecting an array of child objects otherwise)"
 | 
					 | 
				
			||||||
						);
 | 
					 | 
				
			||||||
						_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) {
 | 
									return resultDfd.promise();
 | 
				
			||||||
						if ($.isFunction(tree.options.nodata)) {
 | 
					 | 
				
			||||||
							noDataRes = tree.options.nodata.call(
 | 
					 | 
				
			||||||
								tree,
 | 
					 | 
				
			||||||
								{ 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) {
 | 
					 | 
				
			||||||
							node.setStatus("nodata", noDataRes);
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					// trigger fancytreeloadchildren
 | 
					 | 
				
			||||||
					tree._triggerNodeEvent("loadChildren", node);
 | 
					 | 
				
			||||||
				});
 | 
					 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			/** [Not Implemented]  */
 | 
								/** [Not Implemented]  */
 | 
				
			||||||
			nodeLoadKeyPath: function(ctx, keyPathList) {
 | 
								nodeLoadKeyPath: function(ctx, keyPathList) {
 | 
				
			||||||
@ -7589,20 +7622,16 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
				autoScroll: false,
 | 
									autoScroll: false,
 | 
				
			||||||
				checkbox: false,
 | 
									checkbox: false,
 | 
				
			||||||
				clickFolderMode: 4,
 | 
									clickFolderMode: 4,
 | 
				
			||||||
 | 
									copyFunctionsToData: false,
 | 
				
			||||||
				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 },
 | 
									focusOnSelect: false,
 | 
				
			||||||
				// toggleEffect: { effect: "drop", options: {direction: "left"}, duration: 200 },
 | 
					 | 
				
			||||||
				// toggleEffect: { effect: "slide", options: {direction: "up"}, duration: 200 },
 | 
					 | 
				
			||||||
				//toggleEffect: { effect: "blind", options: {direction: "vertical", scale: "box"}, duration: 200 },
 | 
					 | 
				
			||||||
				toggleEffect: { effect: "slideToggle", duration: 200 }, //< "toggle" or "slideToggle" to use jQuery instead of jQueryUI for toggleEffect animation
 | 
					 | 
				
			||||||
				generateIds: false,
 | 
									generateIds: false,
 | 
				
			||||||
				icon: true,
 | 
									icon: true,
 | 
				
			||||||
				idPrefix: "ft_",
 | 
									idPrefix: "ft_",
 | 
				
			||||||
				focusOnSelect: false,
 | 
					 | 
				
			||||||
				keyboard: true,
 | 
									keyboard: true,
 | 
				
			||||||
				keyPathSeparator: "/",
 | 
									keyPathSeparator: "/",
 | 
				
			||||||
				minExpandLevel: 1,
 | 
									minExpandLevel: 1,
 | 
				
			||||||
@ -7620,29 +7649,29 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
				},
 | 
									},
 | 
				
			||||||
				tabindex: "0",
 | 
									tabindex: "0",
 | 
				
			||||||
				titlesTabbable: false,
 | 
									titlesTabbable: false,
 | 
				
			||||||
 | 
									toggleEffect: { effect: "slideToggle", duration: 200 }, //< "toggle" or "slideToggle" to use jQuery instead of jQueryUI for toggleEffect animation
 | 
				
			||||||
				tooltip: false,
 | 
									tooltip: false,
 | 
				
			||||||
				treeId: null,
 | 
									treeId: null,
 | 
				
			||||||
				_classNames: {
 | 
									_classNames: {
 | 
				
			||||||
					node: "fancytree-node",
 | 
										active: "fancytree-active",
 | 
				
			||||||
					folder: "fancytree-folder",
 | 
					 | 
				
			||||||
					animating: "fancytree-animating",
 | 
										animating: "fancytree-animating",
 | 
				
			||||||
					combinedExpanderPrefix: "fancytree-exp-",
 | 
										combinedExpanderPrefix: "fancytree-exp-",
 | 
				
			||||||
					combinedIconPrefix: "fancytree-ico-",
 | 
										combinedIconPrefix: "fancytree-ico-",
 | 
				
			||||||
					hasChildren: "fancytree-has-children",
 | 
										error: "fancytree-error",
 | 
				
			||||||
					active: "fancytree-active",
 | 
					 | 
				
			||||||
					selected: "fancytree-selected",
 | 
					 | 
				
			||||||
					expanded: "fancytree-expanded",
 | 
										expanded: "fancytree-expanded",
 | 
				
			||||||
					lazy: "fancytree-lazy",
 | 
					 | 
				
			||||||
					focused: "fancytree-focused",
 | 
										focused: "fancytree-focused",
 | 
				
			||||||
 | 
										folder: "fancytree-folder",
 | 
				
			||||||
 | 
										hasChildren: "fancytree-has-children",
 | 
				
			||||||
 | 
										lastsib: "fancytree-lastsib",
 | 
				
			||||||
 | 
										lazy: "fancytree-lazy",
 | 
				
			||||||
 | 
										loading: "fancytree-loading",
 | 
				
			||||||
 | 
										node: "fancytree-node",
 | 
				
			||||||
					partload: "fancytree-partload",
 | 
										partload: "fancytree-partload",
 | 
				
			||||||
					partsel: "fancytree-partsel",
 | 
										partsel: "fancytree-partsel",
 | 
				
			||||||
					radio: "fancytree-radio",
 | 
										radio: "fancytree-radio",
 | 
				
			||||||
					// radiogroup: "fancytree-radiogroup",
 | 
										selected: "fancytree-selected",
 | 
				
			||||||
					unselectable: "fancytree-unselectable",
 | 
					 | 
				
			||||||
					lastsib: "fancytree-lastsib",
 | 
					 | 
				
			||||||
					loading: "fancytree-loading",
 | 
					 | 
				
			||||||
					error: "fancytree-error",
 | 
					 | 
				
			||||||
					statusNodePrefix: "fancytree-statusnode-",
 | 
										statusNodePrefix: "fancytree-statusnode-",
 | 
				
			||||||
 | 
										unselectable: "fancytree-unselectable",
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				// events
 | 
									// events
 | 
				
			||||||
				lazyLoad: null,
 | 
									lazyLoad: null,
 | 
				
			||||||
@ -8028,7 +8057,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.36.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 +8687,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 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 +8774,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 +8812,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.36.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 +8918,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(function(factory) {
 | 
					(function(factory) {
 | 
				
			||||||
@ -9253,7 +9282,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	$.ui.fancytree.registerExtension({
 | 
						$.ui.fancytree.registerExtension({
 | 
				
			||||||
		name: "clones",
 | 
							name: "clones",
 | 
				
			||||||
		version: "2.34.0",
 | 
							version: "2.36.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 +9439,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
@ -9752,8 +9781,12 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
		data.isMove = data.dropEffect === "move";
 | 
							data.isMove = data.dropEffect === "move";
 | 
				
			||||||
		// data.isMove = data.dropEffectSuggested === "move";
 | 
							// data.isMove = data.dropEffectSuggested === "move";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// `effectAllowed` must only be defined in dragstart event, so we
 | 
				
			||||||
 | 
							// store it in a global variable for reference
 | 
				
			||||||
 | 
							if (event.type === "dragstart") {
 | 
				
			||||||
			REQUESTED_EFFECT_ALLOWED = data.effectAllowed;
 | 
								REQUESTED_EFFECT_ALLOWED = data.effectAllowed;
 | 
				
			||||||
			REQUESTED_DROP_EFFECT = data.dropEffect;
 | 
								REQUESTED_DROP_EFFECT = data.dropEffect;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// if (REQUESTED_DROP_EFFECT !== dataTransfer.dropEffect) {
 | 
							// if (REQUESTED_DROP_EFFECT !== dataTransfer.dropEffect) {
 | 
				
			||||||
		// 	data.tree.info(
 | 
							// 	data.tree.info(
 | 
				
			||||||
@ -9834,6 +9867,9 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
		// Calculate hitMode from relative cursor position.
 | 
							// Calculate hitMode from relative cursor position.
 | 
				
			||||||
		nodeOfs = $target.offset();
 | 
							nodeOfs = $target.offset();
 | 
				
			||||||
		relPosY = (event.pageY - nodeOfs.top) / $target.height();
 | 
							relPosY = (event.pageY - nodeOfs.top) / $target.height();
 | 
				
			||||||
 | 
							if (event.pageY === undefined) {
 | 
				
			||||||
 | 
								tree.warn("event.pageY is undefined: see issue #1013.");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (DRAG_ENTER_RESPONSE.after && relPosY > 0.75) {
 | 
							if (DRAG_ENTER_RESPONSE.after && relPosY > 0.75) {
 | 
				
			||||||
			hitMode = "after";
 | 
								hitMode = "after";
 | 
				
			||||||
@ -10201,6 +10237,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 +10249,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 +10295,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,17 +10462,19 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	$.ui.fancytree.registerExtension({
 | 
						$.ui.fancytree.registerExtension({
 | 
				
			||||||
		name: "dnd5",
 | 
							name: "dnd5",
 | 
				
			||||||
		version: "2.34.0",
 | 
							version: "2.36.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
 | 
				
			||||||
			dropMarkerInsertOffsetX: -16, // Additional offset for drop-marker with hitMode = "before"/"after"
 | 
								dropMarkerInsertOffsetX: -16, // Additional offset for drop-marker with hitMode = "before"/"after"
 | 
				
			||||||
			dropMarkerOffsetX: -24, // Absolute position offset for .fancytree-drop-marker relatively to ..fancytree-title (icon/img near a node accepting drop)
 | 
								dropMarkerOffsetX: -24, // Absolute position offset for .fancytree-drop-marker relatively to ..fancytree-title (icon/img near a node accepting drop)
 | 
				
			||||||
 | 
								dropMarkerParent: document.body, // Root Container used for drop marker (could be a shadow root)
 | 
				
			||||||
			multiSource: false, // true: Drag multiple (i.e. selected) nodes. Also a callback() is allowed
 | 
								multiSource: false, // true: Drag multiple (i.e. selected) nodes. Also a callback() is allowed
 | 
				
			||||||
			effectAllowed: "all", // Restrict the possible cursor shapes and modifier operations (can also be set in the dragStart event)
 | 
								effectAllowed: "all", // Restrict the possible cursor shapes and modifier operations (can also be set in the dragStart event)
 | 
				
			||||||
			// 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
 | 
				
			||||||
@ -10508,7 +10552,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
						// Drop marker should not steal dragenter/dragover events:
 | 
											// Drop marker should not steal dragenter/dragover events:
 | 
				
			||||||
						"pointer-events": "none",
 | 
											"pointer-events": "none",
 | 
				
			||||||
					})
 | 
										})
 | 
				
			||||||
					.prependTo("body");
 | 
										.prependTo(dndOpts.dropMarkerParent);
 | 
				
			||||||
				if (glyph) {
 | 
									if (glyph) {
 | 
				
			||||||
					FT.setSpanIcon(
 | 
										FT.setSpanIcon(
 | 
				
			||||||
						$dropMarker[0],
 | 
											$dropMarker[0],
 | 
				
			||||||
@ -10548,13 +10592,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(function(factory) {
 | 
					(function(factory) {
 | 
				
			||||||
@ -10756,12 +10800,12 @@ 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;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Set keyboard focus, even if setFocus() claims 'nothing to do'
 | 
							// Set keyboard focus, even if setFocus() claims 'nothing to do'
 | 
				
			||||||
		$(tree.$container).focus();
 | 
							$(tree.$container).focus({ preventScroll: true });
 | 
				
			||||||
		eventData.input = null;
 | 
							eventData.input = null;
 | 
				
			||||||
		instOpts.close.call(node, { type: "close" }, eventData);
 | 
							instOpts.close.call(node, { type: "close" }, eventData);
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
@ -10846,7 +10890,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	$.ui.fancytree.registerExtension({
 | 
						$.ui.fancytree.registerExtension({
 | 
				
			||||||
		name: "edit",
 | 
							name: "edit",
 | 
				
			||||||
		version: "2.34.0",
 | 
							version: "2.36.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 +10996,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(function(factory) {
 | 
					(function(factory) {
 | 
				
			||||||
@ -11296,7 +11340,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	$.ui.fancytree.registerExtension({
 | 
						$.ui.fancytree.registerExtension({
 | 
				
			||||||
		name: "filter",
 | 
							name: "filter",
 | 
				
			||||||
		version: "2.34.0",
 | 
							version: "2.36.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 +11455,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(function(factory) {
 | 
					(function(factory) {
 | 
				
			||||||
@ -11600,7 +11644,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	$.ui.fancytree.registerExtension({
 | 
						$.ui.fancytree.registerExtension({
 | 
				
			||||||
		name: "glyph",
 | 
							name: "glyph",
 | 
				
			||||||
		version: "2.34.0",
 | 
							version: "2.36.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 +11678,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 +11793,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(function(factory) {
 | 
					(function(factory) {
 | 
				
			||||||
@ -11872,7 +11916,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	$.ui.fancytree.registerExtension({
 | 
						$.ui.fancytree.registerExtension({
 | 
				
			||||||
		name: "gridnav",
 | 
							name: "gridnav",
 | 
				
			||||||
		version: "2.34.0",
 | 
							version: "2.36.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 +12018,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(function(factory) {
 | 
					(function(factory) {
 | 
				
			||||||
@ -12009,7 +12053,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	$.ui.fancytree.registerExtension({
 | 
						$.ui.fancytree.registerExtension({
 | 
				
			||||||
		name: "multi",
 | 
							name: "multi",
 | 
				
			||||||
		version: "2.34.0",
 | 
							version: "2.36.0",
 | 
				
			||||||
		// Default options for this extension.
 | 
							// Default options for this extension.
 | 
				
			||||||
		options: {
 | 
							options: {
 | 
				
			||||||
			allowNoSelect: false, //
 | 
								allowNoSelect: false, //
 | 
				
			||||||
@ -12106,13 +12150,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(function(factory) {
 | 
					(function(factory) {
 | 
				
			||||||
@ -12312,7 +12356,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	$.ui.fancytree.registerExtension({
 | 
						$.ui.fancytree.registerExtension({
 | 
				
			||||||
		name: "persist",
 | 
							name: "persist",
 | 
				
			||||||
		version: "2.34.0",
 | 
							version: "2.36.0",
 | 
				
			||||||
		// Default options for this extension.
 | 
							// Default options for this extension.
 | 
				
			||||||
		options: {
 | 
							options: {
 | 
				
			||||||
			cookieDelimiter: "~",
 | 
								cookieDelimiter: "~",
 | 
				
			||||||
@ -12600,13 +12644,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(function(factory) {
 | 
					(function(factory) {
 | 
				
			||||||
@ -12689,7 +12733,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	$.ui.fancytree.registerExtension({
 | 
						$.ui.fancytree.registerExtension({
 | 
				
			||||||
		name: "table",
 | 
							name: "table",
 | 
				
			||||||
		version: "2.34.0",
 | 
							version: "2.36.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 +13194,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(function(factory) {
 | 
					(function(factory) {
 | 
				
			||||||
@ -13179,7 +13223,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	$.ui.fancytree.registerExtension({
 | 
						$.ui.fancytree.registerExtension({
 | 
				
			||||||
		name: "themeroller",
 | 
							name: "themeroller",
 | 
				
			||||||
		version: "2.34.0",
 | 
							version: "2.36.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 +13314,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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(function(factory) {
 | 
					(function(factory) {
 | 
				
			||||||
@ -13406,7 +13450,7 @@ var uniqueId = $.fn.extend( {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	$.ui.fancytree.registerExtension({
 | 
						$.ui.fancytree.registerExtension({
 | 
				
			||||||
		name: "wide",
 | 
							name: "wide",
 | 
				
			||||||
		version: "2.34.0",
 | 
							version: "2.36.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
											
										
									
								
							@ -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.36.0
 | 
				
			||||||
 * @date 2019-12-26T14:16:19Z
 | 
					 * @date 2020-07-15T20:15:15Z
 | 
				
			||||||
******************************************************************************/
 | 
					******************************************************************************/
 | 
				
			||||||
/*------------------------------------------------------------------------------
 | 
					/*------------------------------------------------------------------------------
 | 
				
			||||||
 * Helpers
 | 
					 * Helpers
 | 
				
			||||||
 | 
				
			|||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user