Autosubmit GUI
\ No newline at end of file
+Autosubmit GUI
\ No newline at end of file
diff --git a/build/precache-manifest.6feebf50a210fba34ab115f0a44930fd.js b/build/precache-manifest.6feebf50a210fba34ab115f0a44930fd.js
new file mode 100644
index 0000000000000000000000000000000000000000..e7d10060c6d367345871e63cc27185c5cff2d6d0
--- /dev/null
+++ b/build/precache-manifest.6feebf50a210fba34ab115f0a44930fd.js
@@ -0,0 +1,26 @@
+self.__precacheManifest = (self.__precacheManifest || []).concat([
+ {
+ "revision": "0c2fd6dab2c4e9d70109b8217087c8dd",
+ "url": "/autosubmitapp/index.html"
+ },
+ {
+ "revision": "86f6d3b3f82100506a4c",
+ "url": "/autosubmitapp/static/css/main.4b36ef4f.chunk.css"
+ },
+ {
+ "revision": "df5cae15f1191e321421",
+ "url": "/autosubmitapp/static/js/2.909d1cd5.chunk.js"
+ },
+ {
+ "revision": "863aebe410b2ace212a4731948e70f0c",
+ "url": "/autosubmitapp/static/js/2.909d1cd5.chunk.js.LICENSE.txt"
+ },
+ {
+ "revision": "86f6d3b3f82100506a4c",
+ "url": "/autosubmitapp/static/js/main.aeeaa075.chunk.js"
+ },
+ {
+ "revision": "cb75873c535fdb6ecc71",
+ "url": "/autosubmitapp/static/js/runtime-main.02ce37e3.js"
+ }
+]);
\ No newline at end of file
diff --git a/build/precache-manifest.94f3768c461b9e3da43525196cc5537e.js b/build/precache-manifest.94f3768c461b9e3da43525196cc5537e.js
deleted file mode 100644
index 2da04ae2decbc68dcec8507b8c8b7273a6bd958c..0000000000000000000000000000000000000000
--- a/build/precache-manifest.94f3768c461b9e3da43525196cc5537e.js
+++ /dev/null
@@ -1,26 +0,0 @@
-self.__precacheManifest = (self.__precacheManifest || []).concat([
- {
- "revision": "59528ce0b6c52c527439d421a7bd42f1",
- "url": "/autosubmitapp/index.html"
- },
- {
- "revision": "4e8cefed490155e91d8c",
- "url": "/autosubmitapp/static/css/main.4b36ef4f.chunk.css"
- },
- {
- "revision": "7b3d59e7d81000b88858",
- "url": "/autosubmitapp/static/js/2.55933c4c.chunk.js"
- },
- {
- "revision": "bfbb064acdcf5a77658b8c17e0df2ddd",
- "url": "/autosubmitapp/static/js/2.55933c4c.chunk.js.LICENSE.txt"
- },
- {
- "revision": "4e8cefed490155e91d8c",
- "url": "/autosubmitapp/static/js/main.3bb5acd4.chunk.js"
- },
- {
- "revision": "e7dcab97e05d75727e2a",
- "url": "/autosubmitapp/static/js/runtime-main.a396b725.js"
- }
-]);
\ No newline at end of file
diff --git a/build/service-worker.js b/build/service-worker.js
index 968f0a863e53708d47d857b80230e6300f0678bf..20cf875969cddbbfa9a75c039b7633297fa37b7d 100644
--- a/build/service-worker.js
+++ b/build/service-worker.js
@@ -14,7 +14,7 @@
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
importScripts(
- "/autosubmitapp/precache-manifest.94f3768c461b9e3da43525196cc5537e.js"
+ "/autosubmitapp/precache-manifest.6feebf50a210fba34ab115f0a44930fd.js"
);
self.addEventListener('message', (event) => {
diff --git a/build/static/js/2.55933c4c.chunk.js b/build/static/js/2.55933c4c.chunk.js
deleted file mode 100644
index 643f77d8fbf772d0c38add722ccdebfd1794f79c..0000000000000000000000000000000000000000
--- a/build/static/js/2.55933c4c.chunk.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! For license information please see 2.55933c4c.chunk.js.LICENSE.txt */
-(this["webpackJsonpreact-api"]=this["webpackJsonpreact-api"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(44)},function(e,t,n){"use strict";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0;h--){var f=s[h];"."===f?o(s,h):".."===f?(o(s,h),c++):c&&(o(s,h),c--)}if(!u)for(;c--;c)s.unshift("..");!u||""===s[0]||s[0]&&r(s[0])||s.unshift("");var p=s.join("/");return n&&"/"!==p.substr(-1)&&(p+="/"),p};function a(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,i){return e(t,n[i])}));if("object"===typeof t||"object"===typeof n){var i=a(t),r=a(n);return i!==t||r!==n?e(i,r):Object.keys(Object.assign({},t,n)).every((function(i){return e(t[i],n[i])}))}return!1},u=n(13);function d(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function h(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function f(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,i=e.hash,r=t||"/";return n&&"?"!==n&&(r+="?"===n.charAt(0)?n:"?"+n),i&&"#"!==i&&(r+="#"===i.charAt(0)?i:"#"+i),r}function v(e,t,n,r){var o;"string"===typeof e?(o=function(e){var t=e||"/",n="",i="",r=t.indexOf("#");-1!==r&&(i=t.substr(r),t=t.substr(0,r));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===i?"":i}}(e)).state=t:(void 0===(o=Object(i.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(a){throw a instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):a}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=s(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,i,r){if(null!=e){var o="function"===typeof e?e(t,n):e;"string"===typeof o?"function"===typeof i?i(o,r):r(!0):r(!1!==o)}else r(!0)},appendListener:function(e){var n=!0;function i(){n&&e.apply(void 0,arguments)}return t.push(i),function(){n=!1,t=t.filter((function(e){return e!==i}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),i=0;it?n.splice(t,n.length-t,i):n.push(i),c({action:"PUSH",location:i,index:t,entries:n})}}))},replace:function(e,t){var i=v(e,t,h(),w.location);d.confirmTransitionTo(i,"REPLACE",n,(function(e){e&&(w.entries[w.index]=i,c({action:"REPLACE",location:i}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t"'/]/g,s=/[<>"'/]/g,a={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},l={16:!0,17:!0,18:!0},u={8:"backspace",9:"tab",10:"return",13:"return",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},d={16:"shift",17:"ctrl",18:"alt",91:"meta",93:"meta"},c={0:"",1:"left",2:"middle",3:"right"},h="active expanded focus folder lazy radiogroup selected unselectable unselectableIgnore".split(" "),f={},p="columns types".split(" "),v="checkbox expanded extraClasses folder icon iconTooltip key lazy partsel radiogroup refKey selected statusNodeType title tooltip type unselectable unselectableIgnore unselectableStatus".split(" "),g={},m={},y={active:!0,children:!0,data:!0,focus:!0};for(t=0;t=0,"insertBefore must be an existing child"),this.children.splice.apply(this.children,[o,0].concat(u))),a&&!n){for(i=0,r=u.length;i=0;i--)"paging"===(r=this.children[i]).statusNodeType&&this.removeChild(r);this.partload=!1},appendSibling:function(e){return this.addNode(e,"after")},applyCommand:function(e,t){return this.tree.applyCommand(e,this,t)},applyPatch:function(t){if(null===t)return this.remove(),S(this);var n,i,r={children:!0,expanded:!0,parent:!0};for(n in t)t.hasOwnProperty(n)&&(i=t[n],r[n]||e.isFunction(i)||(g[n]?this[n]=i:this.data[n]=i));return t.hasOwnProperty("children")&&(this.removeChildren(),t.children&&this._setChildren(t.children)),this.isVisible()&&(this.renderTitle(),this.renderStatus()),t.hasOwnProperty("expanded")?this.setExpanded(t.expanded):S(this)},collapseSiblings:function(){return this.tree._callHook("nodeCollapseSiblings",this)},copyTo:function(e,t,n){return e.addNode(this.toDict(!0,n),t)},countChildren:function(e){var t,n,i,r=this.children;if(!r)return 0;if(i=r.length,!1!==e)for(t=0,n=i;t=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},discard:function(){return this.warn("FancytreeNode.discard() is deprecated since 2014-02-16. Use .resetLazy() instead."),this.resetLazy()},discardMarkup:function(e){var t=e?"nodeRemoveMarkup":"nodeRemoveChildMarkup";this.tree._callHook(t,this)},error:function(e){this.tree.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},findAll:function(t){t=e.isFunction(t)?t:D(t);var n=[];return this.visit((function(e){t(e)&&n.push(e)})),n},findFirst:function(t){t=e.isFunction(t)?t:D(t);var n=null;return this.visit((function(e){if(t(e))return n=e,!1})),n},findRelatedNode:function(e,t){return this.tree.findRelatedNode(this,e,t)},_changeSelectStatusAttrs:function(e){var t=!1,n=this.tree.options,r=i.evalOption("unselectable",this,this,n,!1),o=i.evalOption("unselectableStatus",this,this,n,void 0);switch(r&&null!=o&&(e=o),e){case!1:t=this.selected||this.partsel,this.selected=!1,this.partsel=!1;break;case!0:t=!this.selected||!this.partsel,this.selected=!0,this.partsel=!0;break;case void 0:t=this.selected||!this.partsel,this.selected=!1,this.partsel=!0;break;default:b(!1,"invalid state: "+e)}return t&&this.renderStatus(),t},fixSelection3AfterClick:function(e){var t=this.isSelected();this.visit((function(e){if(e._changeSelectStatusAttrs(t),e.radiogroup)return"skip"})),this.fixSelection3FromEndNodes(e)},fixSelection3FromEndNodes:function(e){var t=this.tree.options;b(3===t.selectMode,"expected selectMode 3"),function e(n){var r,o,s,a,l,u,d,c,h=n.children;if(h&&h.length){for(u=!0,d=!1,r=0,o=h.length;r=0},hasFocus:function(){return this.tree.hasFocus()&&this.tree.focusNode===this},info:function(e){this.tree.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},isActive:function(){return this.tree.activeNode===this},isBelowOf:function(e){return this.getIndexHier(".",5)>e.getIndexHier(".",5)},isChildOf:function(e){return this.parent&&this.parent===e},isDescendantOf:function(t){if(!t||t.tree!==this.tree)return!1;for(var n=this.parent;n;){if(n===t)return!0;n===n.parent&&e.error("Recursive parent link: "+n),n=n.parent}return!1},isExpanded:function(){return!!this.expanded},isFirstSibling:function(){var e=this.parent;return!e||e.children[0]===this},isFolder:function(){return!!this.folder},isLastSibling:function(){var e=this.parent;return!e||e.children[e.children.length-1]===this},isLazy:function(){return!!this.lazy},isLoaded:function(){return!this.lazy||void 0!==this.hasChildren()},isLoading:function(){return!!this._isLoading},isRoot:function(){return this.isRootNode()},isPartsel:function(){return!this.selected&&!!this.partsel},isPartload:function(){return!!this.partload},isRootNode:function(){return this.tree.rootNode===this},isSelected:function(){return!!this.selected},isStatusNode:function(){return!!this.statusNodeType},isPagingNode:function(){return"paging"===this.statusNodeType},isTopLevel:function(){return this.tree.rootNode===this.parent},isUndefined:function(){return void 0===this.hasChildren()},isVisible:function(){var e,t,n=this.tree.enableFilter,i=this.getParentList(!1,!1);if(n&&!this.match&&!this.subMatchCount)return this.debug("isVisible: HIDDEN ("+n+", "+this.match+", "+this.match+")"),!1;for(e=0,t=i.length;e=0;n--)r.push(s[n].setExpanded(!0,t));return e.when.apply(e,r).done((function(){u?i.scrollIntoView(l).done((function(){o.resolve()})):o.resolve()})),o.promise()},moveTo:function(t,n,i){void 0===n||"over"===n?n="child":"firstChild"===n&&(t.children&&t.children.length?(n="before",t=t.children[0]):n="child");var r,o=this.tree,s=this.parent,a="child"===n?t:t.parent;if(this!==t){if(this.parent?a.isDescendantOf(this)&&e.error("Cannot move a node to its own descendant"):e.error("Cannot move system root"),a!==s&&s.triggerModifyChild("remove",this),1===this.parent.children.length){if(this.parent===a)return;this.parent.children=this.parent.lazy?[]:null,this.parent.expanded=!1}else b((r=e.inArray(this,this.parent.children))>=0,"invalid source parent"),this.parent.children.splice(r,1);if(this.parent=a,a.hasChildren())switch(n){case"child":a.children.push(this);break;case"before":b((r=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(r,0,this);break;case"after":b((r=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(r+1,0,this);break;default:e.error("Invalid mode "+n)}else a.children=[this];i&&t.visit(i,!0),a===s?a.triggerModifyChild("move",this):a.triggerModifyChild("add",this),o!==t.tree&&(this.warn("Cross-tree moveTo is experimental!"),this.visit((function(e){e.tree=t.tree}),!0)),o._callHook("treeStructureChanged",o,"moveTo"),s.isDescendantOf(a)||s.render(),a.isDescendantOf(s)||a===s||a.render()}},navigate:function(t,n){var i,r=e.ui.keyCode;switch(t){case"left":case r.LEFT:if(this.expanded)return this.setExpanded(!1);break;case"right":case r.RIGHT:if(!this.expanded&&(this.children||this.lazy))return this.setExpanded()}if(i=this.findRelatedNode(t)){try{i.makeVisible({scrollIntoView:!1})}catch(o){}return!1===n?(i.setFocus(),S()):i.setActive()}return this.warn("Could not find related node '"+t+"'."),S()},remove:function(){return this.parent.removeChild(this)},removeChild:function(e){return this.tree._callHook("nodeRemoveChild",this,e)},removeChildren:function(){return this.tree._callHook("nodeRemoveChildren",this)},removeClass:function(e){return this.toggleClass(e,!1)},render:function(e,t){return this.tree._callHook("nodeRender",this,e,t)},renderTitle:function(){return this.tree._callHook("nodeRenderTitle",this)},renderStatus:function(){return this.tree._callHook("nodeRenderStatus",this)},replaceWith:function(n){var i,r=this.parent,o=e.inArray(this,r.children),s=this;return b(this.isPagingNode(),"replaceWith() currently requires a paging status node"),(i=this.tree._callHook("nodeLoadChildren",this,n)).done((function(e){var n=s.children;for(t=0;tm+g-v&&(k=u+f-g+v,_&&(b(_.isRootNode()||_.isVisible(),"topNode must be visible"),li?1:-1},r.sort(e),t)for(n=0,i=r.length;n=0,n=void 0===n?!r:!!n)r||(u+=i+" ",a=!0);else for(;u.indexOf(" "+i+" ")>-1;)u=u.replace(" "+i+" "," ");return this.extraClasses=e.trim(u),a},toggleExpanded:function(){return this.tree._callHook("nodeToggleExpanded",this)},toggleSelected:function(){return this.tree._callHook("nodeToggleSelected",this)},toString:function(){return"FancytreeNode@"+this.key+"[title='"+this.title+"']"},triggerModifyChild:function(t,n,i){var r,o=this.tree.options.modifyChild;o&&(n&&n.parent!==this&&e.error("childNode "+n+" is not a child of "+this),r={node:this,tree:this.tree,operation:t,childNode:n||null},i&&e.extend(r,i),o({type:"modifyChild"},r))},triggerModify:function(e,t){this.parent.triggerModifyChild(e,this,t)},visit:function(e,t){var n,i,r=!0,o=this.children;if(!0===t&&(!1===(r=e(this))||"skip"===r))return r;if(o)for(n=0,i=o.length;n=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},P.prototype={_makeHookContext:function(t,n,i){var r,o;return void 0!==t.node?(n&&t.originalEvent!==n&&e.error("invalid args"),r=t):t.tree?r={node:t,tree:o=t.tree,widget:o.widget,options:o.widget.options,originalEvent:n,typeInfo:o.types[t.type]||{}}:t.widget?r={node:null,tree:t,widget:t.widget,options:t.widget.options,originalEvent:n}:e.error("invalid args"),i&&e.extend(r,i),r},_callHook:function(t,n,i){var r=this._makeHookContext(n),o=this[t],s=Array.prototype.slice.call(arguments,2);return e.isFunction(o)||e.error("_callHook('"+t+"') is not a function"),s.unshift(r),o.apply(this,s)},_setExpiringValue:function(e,t,n){this._tempCache[e]={value:t,expire:Date.now()+(+n||50)}},_getExpiringValue:function(e){var t=this._tempCache[e];return t&&t.expire>Date.now()?t.value:(delete this._tempCache[e],null)},_requireExtension:function(t,n,i,r){null!=i&&(i=!!i);var o=this._local.name,s=this.options.extensions,a=e.inArray(t,s)=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},enable:function(e){!1===e?this.widget.disable():this.widget.enable()},enableUpdate:function(e){return e=!1!==e,!!this._enableUpdate===!!e?e:(this._enableUpdate=e,e?(this.debug("enableUpdate(true): redraw "),this._callHook("treeStructureChanged",this,"enableUpdate"),this.render()):this.debug("enableUpdate(false)..."),!e)},error:function(e){this.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},expandAll:function(e,t){var n=this.enableUpdate(!1);e=!1!==e,this.visit((function(n){!1!==n.hasChildren()&&n.isExpanded()!==e&&n.setExpanded(e,t)})),this.enableUpdate(n)},findAll:function(e){return this.rootNode.findAll(e)},findFirst:function(e){return this.rootNode.findFirst(e)},findNextNode:function(e,t){var n=null,i=this.getFirstChild();function r(i){if(e(i)&&(n=i),n||i===t)return!1}return e="string"===typeof e?function(e){var t=new RegExp("^"+e,"i");return function(e){return t.test(e.title)}}(e):e,t=t||i,this.visitRows(r,{start:t,includeSelf:!1}),n||t===i||this.visitRows(r,{start:i,includeSelf:!0}),n},findRelatedNode:function(t,n,i){var r=null,o=e.ui.keyCode;switch(n){case"parent":case o.BACKSPACE:t.parent&&t.parent.parent&&(r=t.parent);break;case"first":case o.HOME:this.visit((function(e){if(e.isVisible())return r=e,!1}));break;case"last":case o.END:this.visit((function(e){e.isVisible()&&(r=e)}));break;case"left":case o.LEFT:t.expanded?t.setExpanded(!1):t.parent&&t.parent.parent&&(r=t.parent);break;case"right":case o.RIGHT:t.expanded||!t.children&&!t.lazy?t.children&&t.children.length&&(r=t.children[0]):(t.setExpanded(),r=t);break;case"up":case o.UP:this.visitRows((function(e){return r=e,!1}),{start:t,reverse:!0,includeSelf:!1});break;case"down":case o.DOWN:this.visitRows((function(e){return r=e,!1}),{start:t,includeSelf:!1});break;default:this.tree.warn("Unknown relation '"+n+"'.")}return r},generateFormElements:function(t,n,i){i=i||{};var r,o="string"===typeof t?t:"ft_"+this._id+"[]",s="string"===typeof n?n:"ft_"+this._id+"_active",a="fancytree_result_"+this._id,l=e("#"+a),u=3===this.options.selectMode&&!1!==i.stopOnParents;function d(t){l.append(e("",{type:"checkbox",name:o,value:t.key,checked:!0}))}l.length?l.empty():l=e("
",{id:a}).hide().insertAfter(this.$container),!1!==n&&this.activeNode&&l.append(e("",{type:"radio",name:s,value:this.activeNode.key,checked:!0})),i.filter?this.visit((function(e){var t=i.filter(e);if("skip"===t)return t;!1!==t&&d(e)})):!1!==t&&(r=this.getSelectedNodes(u),e.each(r,(function(e,t){d(t)})))},getActiveNode:function(){return this.activeNode},getFirstChild:function(){return this.rootNode.getFirstChild()},getFocusNode:function(){return this.focusNode},getOption:function(e){return this.widget.option(e)},getNodeByKey:function(e,t){var n,i;return!t&&(n=document.getElementById(this.options.idPrefix+e))?n.ftnode?n.ftnode:null:(t=t||this.rootNode,i=null,t.visit((function(t){if(t.key===e)return i=t,!1}),!0),i)},getRootNode:function(){return this.rootNode},getSelectedNodes:function(e){return this.rootNode.getSelectedNodes(e)},hasFocus:function(){return!!this._hasFocus},info:function(e){this.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},isLoading:function(){var e=!1;return this.rootNode.visit((function(t){if(t._isLoading||t._requestId)return e=!0,!1}),!0),e},loadKeyPath:function(t,n){var i,r,o,s=this,a=new e.Deferred,l=this.getRootNode(),u=this.options.keyPathSeparator,d=[],c=e.extend({},n);for("function"===typeof n?i=n:n&&n.callback&&(i=n.callback),c.callback=function(e,t,n){i&&i.call(e,t,n),a.notifyWith(e,[{node:t,status:n}])},null==c.matchKey&&(c.matchKey=function(e,t){return e.key===t}),e.isArray(t)||(t=[t]),r=0;r=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},e.extend(P.prototype,{nodeClick:function(e){var t,n,i=e.targetType,r=e.node;if("expander"===i){if(r.isLoading())return void r.debug("Got 2nd click while loading: ignored");this._callHook("nodeToggleExpanded",e)}else if("checkbox"===i)this._callHook("nodeToggleSelected",e),e.options.focusOnSelect&&this._callHook("nodeSetFocus",e,!0);else{if(n=!1,t=!0,r.folder)switch(e.options.clickFolderMode){case 2:n=!0,t=!1;break;case 3:t=!0,n=!0}t&&(this.nodeSetFocus(e),this._callHook("nodeSetActive",e,!0)),n&&this._callHook("nodeToggleExpanded",e)}},nodeCollapseSiblings:function(e,t){var n,i,r,o=e.node;if(o.parent)for(i=0,r=(n=o.parent.children).length;i500&&(l.lastQuicksearchTerm=""),l.lastQuicksearchTime=r,l.lastQuicksearchTerm+=f,(n=l.findNextNode(l.lastQuicksearchTerm,l.getActiveNode()))&&n.setActive(),void s.preventDefault();switch(i.eventToString(s)){case"+":case"=":l.nodeSetExpanded(t,!0);break;case"-":l.nodeSetExpanded(t,!1);break;case"space":a.isPagingNode()?l._triggerNodeEvent("clickPaging",t,s):i.evalOption("checkbox",a,a,c,!1)?l.nodeToggleSelected(t):l.nodeSetActive(t,!0);break;case"return":l.nodeSetActive(t,!0);break;case"home":case"end":case"backspace":case"left":case"right":case"up":case"down":a.navigate(s.which,y);break;default:m=!1}m&&s.preventDefault()},nodeLoadChildren:function(t,n){var i,r,o,s,a=t.tree,l=t.node,u=Date.now();return e.isFunction(n)&&(n=n.call(a,{type:"source"},t),b(!e.isFunction(n),"source callback must not return another function")),n.url&&(l._requestId&&l.warn("Recursive load request #"+u+" while #"+l._requestId+" is pending."),i=e.extend({},t.options.ajax,n),l._requestId=u,i.debugDelay?(r=i.debugDelay,delete i.debugDelay,e.isArray(r)&&(r=r[0]+Math.random()*(r[1]-r[0])),l.warn("nodeLoadChildren waiting debugDelay "+Math.round(r)+" ms ..."),o=e.Deferred((function(t){setTimeout((function(){e.ajax(i).done((function(){t.resolveWith(this,arguments)})).fail((function(){t.rejectWith(this,arguments)}))}),r)}))):o=e.ajax(i),n=new e.Deferred,o.done((function(i,r,o){var s,d;if("json"!==this.dataType&&"jsonp"!==this.dataType||"string"!==typeof i||e.error("Ajax request returned a string (did you get the JSON dataType wrong?)."),l._requestId&&l._requestId>u)n.rejectWith(this,["$recursive_request"]);else{if(t.options.postProcess){try{d=a._triggerNodeEvent("postProcess",t,t.originalEvent,{response:i,error:null,dataType:this.dataType})}catch(c){d={error:c,message:""+c,details:"postProcess failed"}}if(d.error)return s=e.isPlainObject(d.error)?d.error:{message:d.error},s=a._makeHookContext(l,null,s),void n.rejectWith(this,[s]);(e.isArray(d)||e.isPlainObject(d)&&e.isArray(d.children))&&(i=d)}else i&&i.hasOwnProperty("d")&&t.options.enableAspx&&(i="string"===typeof i.d?e.parseJSON(i.d):i.d);n.resolveWith(this,[i])}})).fail((function(e,t,i){var r=a._makeHookContext(l,null,{error:e,args:Array.prototype.slice.call(arguments),message:i,details:e.status+": "+i});n.rejectWith(this,[r])}))),e.isFunction(n.then)&&e.isFunction(n.catch)&&(o=n,n=new e.Deferred,o.then((function(e){n.resolve(e)}),(function(e){n.reject(e)}))),e.isFunction(n.promise)?(a.nodeSetStatus(t,"loading"),n.done((function(e){a.nodeSetStatus(t,"ok"),l._requestId=null})).fail((function(e){var n;"$recursive_request"!==e?(e.node&&e.error&&e.message?n=e:"[object Object]"===(n=a._makeHookContext(l,null,{error:e,args:Array.prototype.slice.call(arguments),message:e?e.message||e.toString():""})).message&&(n.message=""),l.warn("Load children failed ("+n.message+")",n),!1!==a._triggerNodeEvent("loadError",n,null)&&a.nodeSetStatus(t,"error",n.message,n.details)):l.warn("Ignored response for obsolete load request #"+u+" (expected #"+l._requestId+")")}))):t.options.postProcess&&(s=a._triggerNodeEvent("postProcess",t,t.originalEvent,{response:n,error:null,dataType:typeof n}),(e.isArray(s)||e.isPlainObject(s)&&e.isArray(s.children))&&(n=s)),e.when(n).done((function(n){var i,r;e.isPlainObject(n)&&(b(l.isRootNode(),"source may only be an object for root nodes (expecting an array of child objects otherwise)"),b(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),i=n,n=n.children,delete i.children,e.each(p,(function(e,t){void 0!==i[t]&&(a[t]=i[t],delete i[t])})),e.extend(a.data,i)),b(e.isArray(n),"expected array of children"),l._setChildren(n),a.options.nodata&&0===n.length&&(e.isFunction(a.options.nodata)?r=a.options.nodata.call(a,{type:"nodata"},t):!0===a.options.nodata&&l.isRootNode()?r=a.options.strings.nodata:"string"===typeof a.options.nodata&&l.isRootNode()&&(r=a.options.nodata),r&&l.setStatus("nodata",r)),a._triggerNodeEvent("loadChildren",l)}))},nodeLoadKeyPath:function(e,t){},nodeRemoveChild:function(t,n){var i,r=t.node,o=e.extend({},t,{node:n}),s=r.children;if(1===s.length)return b(n===s[0],"invalid single child"),this.nodeRemoveChildren(t);this.activeNode&&(n===this.activeNode||this.activeNode.isDescendantOf(n))&&this.activeNode.setActive(!1),this.focusNode&&(n===this.focusNode||this.focusNode.isDescendantOf(n))&&(this.focusNode=null),this.nodeRemoveMarkup(o),this.nodeRemoveChildren(o),b((i=e.inArray(n,s))>=0,"invalid child"),r.triggerModifyChild("remove",n),n.visit((function(e){e.parent=null}),!0),this._callHook("treeRegisterNode",this,!1,n),s.splice(i,1)},nodeRemoveChildMarkup:function(t){var n=t.node;n.ul&&(n.isRootNode()?e(n.ul).empty():(e(n.ul).remove(),n.ul=null),n.visit((function(e){e.li=e.ul=null})))},nodeRemoveChildren:function(e){var t=e.tree,n=e.node;n.children&&(this.activeNode&&this.activeNode.isDescendantOf(n)&&this.activeNode.setActive(!1),this.focusNode&&this.focusNode.isDescendantOf(n)&&(this.focusNode=null),this.nodeRemoveChildMarkup(e),n.triggerModifyChild("remove",null),n.visit((function(e){e.parent=null,t._callHook("treeRegisterNode",t,!1,e)})),n.lazy?n.children=[]:n.children=null,n.isRootNode()||(n.expanded=!1),this.nodeRenderStatus(e))},nodeRemoveMarkup:function(t){var n=t.node;n.li&&(e(n.li).remove(),n.li=null),this.nodeRemoveChildMarkup(t)},nodeRender:function(t,n,i,r,o){var s,a,l,u,d,c,h,f=t.node,p=t.tree,v=t.options,g=v.aria,m=!1,y=f.parent,w=!y,_=f.children,k=null;if(!1!==p._enableUpdate&&(w||y.ul)){if(b(w||y.ul,"parent UL must exist"),w||(f.li&&(n||f.li.parentNode!==f.parent.ul)&&(f.li.parentNode===f.parent.ul?k=f.li.nextSibling:this.debug("Unlinking "+f+" (must be child of "+f.parent+")"),this.nodeRemoveMarkup(t)),f.li?this.nodeRenderStatus(t):(m=!0,f.li=document.createElement("li"),f.li.ftnode=f,f.key&&v.generateIds&&(f.li.id=v.idPrefix+f.key),f.span=document.createElement("span"),f.span.className="fancytree-node",g&&!f.tr&&e(f.li).attr("role","treeitem"),f.li.appendChild(f.span),this.nodeRenderTitle(t),v.createNode&&v.createNode.call(p,{type:"createNode"},t)),v.renderNode&&v.renderNode.call(p,{type:"renderNode"},t)),_){if(w||f.expanded||!0===i){for(f.ul||(f.ul=document.createElement("ul"),(!0!==r||o)&&f.expanded||(f.ul.style.display="none"),g&&e(f.ul).attr("role","group"),f.li?f.li.appendChild(f.ul):f.tree.$div.append(f.ul)),u=0,d=_.length;u1&&m.push("")):m.push(""),(o=i.evalOption("checkbox",h,h,p,!1))&&!h.isStatusNode()&&(u=v?" role='checkbox'":"",s="fancytree-checkbox",("radio"===o||h.parent&&h.parent.radiogroup)&&(s+=" fancytree-radio"),m.push("")),void 0!==h.data.iconClass&&(h.icon?e.error("'iconClass' node option is deprecated since v2.14.0: use 'icon' only instead"):(h.warn("'iconClass' node option is deprecated since v2.14.0: use 'icon' instead"),h.icon=h.data.iconClass)),!1!==(a=i.evalOption("icon",h,h,p,!0))&&(u=v?" role='presentation'":"",c=(c=i.evalOption("iconTooltip",h,h,p,null))?" title='"+O(c)+"'":"","string"===typeof a?r.test(a)?(a="/"===a.charAt(0)?a:(p.imagePath||"")+a,m.push("")):m.push(""):a.text?m.push(""+i.escapeHtml(a.text)+""):a.html?m.push(""+a.html+""):m.push("")),l="",p.renderTitle&&(l=p.renderTitle.call(f,{type:"renderTitle"},t)||""),l||(!0===(d=i.evalOption("tooltip",h,h,p,null))&&(d=h.title),l=""+(p.escapeTitles?i.escapeHtml(h.title):h.title)+""),m.push(l),h.span.innerHTML=m.join(""),this.nodeRenderStatus(t),p.enhanceTitle&&(t.$title=e(">span.fancytree-title",h.span),l=p.enhanceTitle.call(f,{type:"enhanceTitle"},t)||""))},nodeRenderStatus:function(t){var n,r=t.node,o=t.tree,s=t.options,a=r.hasChildren(),l=r.isLastSibling(),u=s.aria,d=s._classNames,c=[],h=r[o.statusClassPropName];h&&!1!==o._enableUpdate&&(u&&(n=e(r.tr||r.li)),c.push(d.node),o.activeNode===r&&c.push(d.active),o.focusNode===r&&c.push(d.focused),r.expanded&&c.push(d.expanded),u&&(!1===a?n.removeAttr("aria-expanded"):n.attr("aria-expanded",Boolean(r.expanded))),r.folder&&c.push(d.folder),!1!==a&&c.push(d.hasChildren),l&&c.push(d.lastsib),r.lazy&&null==r.children&&c.push(d.lazy),r.partload&&c.push(d.partload),r.partsel&&c.push(d.partsel),i.evalOption("unselectable",r,r,s,!1)&&c.push(d.unselectable),r._isLoading&&c.push(d.loading),r._error&&c.push(d.error),r.statusNodeType&&c.push(d.statusNodePrefix+r.statusNodeType),r.selected?(c.push(d.selected),u&&n.attr("aria-selected",!0)):u&&n.attr("aria-selected",!1),r.extraClasses&&c.push(r.extraClasses),!1===a?c.push(d.combinedExpanderPrefix+"n"+(l?"l":"")):c.push(d.combinedExpanderPrefix+(r.expanded?"e":"c")+(r.lazy&&null==r.children?"d":"")+(l?"l":"")),c.push(d.combinedIconPrefix+(r.expanded?"e":"c")+(r.folder?"f":"")),h.className=c.join(" "),r.li&&e(r.li).toggleClass(d.lastsib,l))},nodeSetActive:function(t,n,i){i=i||{};var r,o=t.node,s=t.tree,a=t.options,l=!0===i.noEvents,u=!0===i.noFocus,d=!1!==i.scrollIntoView;return o===s.activeNode===(n=!1!==n)?S(o):n&&!l&&!1===this._triggerNodeEvent("beforeActivate",o,t.originalEvent)?C(o,["rejected"]):(n?(s.activeNode&&(b(s.activeNode!==o,"node was active (inconsistency)"),r=e.extend({},t,{node:s.activeNode}),s.nodeSetActive(r,!1),b(null===s.activeNode,"deactivate was out of sync?")),a.activeVisible&&o.makeVisible({scrollIntoView:d}),s.activeNode=o,s.nodeRenderStatus(t),u||s.nodeSetFocus(t),l||s._triggerNodeEvent("activate",o,t.originalEvent)):(b(s.activeNode===o,"node was not active (inconsistency)"),s.activeNode=null,this.nodeRenderStatus(t),l||t.tree._triggerNodeEvent("deactivate",o,t.originalEvent)),S(o))},nodeSetExpanded:function(t,n,i){i=i||{};var r,o,s,a,l,u,d=t.node,c=t.tree,h=t.options,f=!0===i.noAnimation,p=!0===i.noEvents;if(n=!1!==n,d.expanded&&n||!d.expanded&&!n)return S(d);if(n&&!d.lazy&&!d.hasChildren())return S(d);if(!n&&d.getLevel()=1||e(r.$container).focus(),s.autoScroll&&o.scrollIntoView(),this._callHook("nodeRenderStatus",t))},nodeSetSelected:function(e,t,n){n=n||{};var r=e.node,o=e.tree,s=e.options,a=!0===n.noEvents,l=r.parent;if(t=!1!==t,!i.evalOption("unselectable",r,r,s,!1)){if(r._lastSelectIntent=t,!!r.selected===t&&(3!==s.selectMode||!r.partsel||t))return t;if(!a&&!1===this._triggerNodeEvent("beforeSelect",r,e.originalEvent))return!!r.selected;t&&1===s.selectMode?(o.lastSelectedNode&&o.lastSelectedNode.setSelected(!1),r.selected=t):3!==s.selectMode||!l||l.radiogroup||r.radiogroup?l&&l.radiogroup?r.visitSiblings((function(e){e._changeSelectStatusAttrs(t&&e===r)}),!0):r.selected=t:(r.selected=t,r.fixSelection3AfterClick(n)),this.nodeRenderStatus(e),o.lastSelectedNode=t?r:null,a||o._triggerNodeEvent("select",e)}},nodeSetStatus:function(t,n,i,r){var o=t.node,s=t.tree;function a(n,i){var r=o.children?o.children[0]:null;return r&&r.isStatusNode()?(e.extend(r,n),r.statusNodeType=i,s._callHook("nodeRenderTitle",r)):(o._setChildren([n]),s._callHook("treeStructureChanged",t,"setStatusNode"),o.children[0].statusNodeType=i,s.render()),o.children[0]}switch(n){case"ok":!function(){var e=o.children?o.children[0]:null;if(e&&e.isStatusNode()){try{o.ul&&(o.ul.removeChild(e.li),e.li=null)}catch(n){}1===o.children.length?o.children=[]:o.children.shift(),s._callHook("treeStructureChanged",t,"clearStatusNode")}}(),o._isLoading=!1,o._error=null,o.renderStatus();break;case"loading":o.parent||a({title:s.options.strings.loading+(i?" ("+i+")":""),checkbox:!1,tooltip:r},n),o._isLoading=!0,o._error=null,o.renderStatus();break;case"error":a({title:s.options.strings.loadError+(i?" ("+i+")":""),checkbox:!1,tooltip:r},n),o._isLoading=!1,o._error={message:i,details:r},o.renderStatus();break;case"nodata":a({title:i||s.options.strings.noData,checkbox:!1,tooltip:r},n),o._isLoading=!1,o._error=null,o.renderStatus();break;default:e.error("invalid node status "+n)}},nodeToggleExpanded:function(e){return this.nodeSetExpanded(e,!e.node.expanded)},nodeToggleSelected:function(e){var t=e.node,n=!t.selected;return t.partsel&&!t.selected&&!0===t._lastSelectIntent&&(n=!1,t.selected=!0),t._lastSelectIntent=n,this.nodeSetSelected(e,n)},treeClear:function(e){var t=e.tree;t.activeNode=null,t.focusNode=null,t.$div.find(">ul.fancytree-container").empty(),t.rootNode.children=null,t._callHook("treeStructureChanged",e,"clear")},treeCreate:function(e){},treeDestroy:function(e){this.$div.find(">ul.fancytree-container").remove(),this.$source&&this.$source.removeClass("fancytree-helper-hidden")},treeInit:function(t){var n=t.tree,i=n.options;n.$container.attr("tabindex",i.tabindex),e.each(p,(function(e,t){void 0!==i[t]&&(n.info("Move option "+t+" to tree"),n[t]=i[t],delete i[t])})),i.checkboxAutoHide&&n.$container.addClass("fancytree-checkbox-auto-hide"),i.rtl?n.$container.attr("DIR","RTL").addClass("fancytree-rtl"):n.$container.removeAttr("DIR").removeClass("fancytree-rtl"),i.aria&&(n.$container.attr("role","tree"),1!==i.selectMode&&n.$container.attr("aria-multiselectable",!0)),this.treeLoad(t)},treeLoad:function(t,n){var i,r,o,s=t.tree,a=t.widget.element,l=e.extend({},t,{node:this.rootNode});if(s.rootNode.children&&this.treeClear(t),n=n||this.options.source)"string"===typeof n&&e.error("Not implemented");else switch(r=a.data("type")||"html"){case"html":(o=a.find(">ul").first()).addClass("ui-fancytree-source fancytree-helper-hidden"),n=e.ui.fancytree.parseHtml(o),this.data=e.extend(this.data,T(o));break;case"json":n=e.parseJSON(a.text()),a.contents().filter((function(){return 3===this.nodeType})).remove(),e.isPlainObject(n)&&(b(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),i=n,n=n.children,delete i.children,e.each(p,(function(e,t){void 0!==i[t]&&(s[t]=i[t],delete i[t])})),e.extend(s.data,i));break;default:e.error("Invalid data-type: "+r)}return this.nodeLoadChildren(l,n).done((function(){s._callHook("treeStructureChanged",t,"loadChildren"),s.render(),3===t.options.selectMode&&s.rootNode.fixSelection3FromEndNodes(),s.activeNode&&s.options.activeVisible&&s.activeNode.makeVisible(),s._triggerTreeEvent("init",null,{status:!0})})).fail((function(){s.render(),s._triggerTreeEvent("init",null,{status:!1})}))},treeRegisterNode:function(e,t,n){e.tree._callHook("treeStructureChanged",e,t?"addNode":"removeNode")},treeSetFocus:function(t,n,i){var r;(n=!1!==n)!==this.hasFocus()&&(this._hasFocus=n,!n&&this.focusNode?this.focusNode.setFocus(!1):!n||i&&i.calledByNode||e(this.$container).focus(),this.$container.toggleClass("fancytree-treefocus",n),this._triggerTreeEvent(n?"focusTree":"blurTree"),n&&!this.activeNode&&(r=this._lastMousedownNode||this.getFirstChild())&&r.setFocus())},treeSetOption:function(t,n,i){var r=t.tree,o=!0,s=!1,a=!1;switch(n){case"aria":case"checkbox":case"icon":case"minExpandLevel":case"tabindex":s=!0,a=!0;break;case"checkboxAutoHide":r.$container.toggleClass("fancytree-checkbox-auto-hide",!!i);break;case"escapeTitles":case"tooltip":a=!0;break;case"rtl":!1===i?r.$container.removeAttr("DIR").removeClass("fancytree-rtl"):r.$container.attr("DIR","RTL").addClass("fancytree-rtl"),a=!0;break;case"source":o=!1,r._callHook("treeLoad",r,i),a=!0}r.debug("set option "+n+"="+i+" <"+typeof i+">"),o&&(this.widget._super?this.widget._super.call(this.widget,n,i):e.Widget.prototype._setOption.call(this.widget,n,i)),s&&r._callHook("treeCreate",r),a&&r.render(!0,!1)},treeStructureChanged:function(e,t){}}),e.widget("ui.fancytree",{options:{activeVisible:!0,ajax:{type:"GET",cache:!1,dataType:"json"},aria:!0,autoActivate:!0,autoCollapse:!1,autoScroll:!1,checkbox:!1,clickFolderMode:4,debugLevel:null,disabled:!1,enableAspx:!0,escapeTitles:!1,extensions:[],toggleEffect:{effect:"slideToggle",duration:200},generateIds:!1,icon:!0,idPrefix:"ft_",focusOnSelect:!1,keyboard:!0,keyPathSeparator:"/",minExpandLevel:1,nodata:!0,quicksearch:!1,rtl:!1,scrollOfs:{top:0,bottom:0},scrollParent:null,selectMode:2,strings:{loading:"Loading...",loadError:"Load error!",moreData:"More...",noData:"No data."},tabindex:"0",titlesTabbable:!1,tooltip:!1,treeId:null,_classNames:{node:"fancytree-node",folder:"fancytree-folder",animating:"fancytree-animating",combinedExpanderPrefix:"fancytree-exp-",combinedIconPrefix:"fancytree-ico-",hasChildren:"fancytree-has-children",active:"fancytree-active",selected:"fancytree-selected",expanded:"fancytree-expanded",lazy:"fancytree-lazy",focused:"fancytree-focused",partload:"fancytree-partload",partsel:"fancytree-partsel",radio:"fancytree-radio",unselectable:"fancytree-unselectable",lastsib:"fancytree-lastsib",loading:"fancytree-loading",error:"fancytree-error",statusNodePrefix:"fancytree-statusnode-"},lazyLoad:null,postProcess:null},_create:function(){this.tree=new P(this),this.$source=this.source||"json"===this.element.data("type")?this.element:this.element.find(">ul").first();var t,n,i,r=this.options,o=r.extensions;this.tree;for(i=0;i element.");else{if(o){if(r._getExpiringValue("focusin"))return void r.debug("Ignored double focusin.");r._setExpiringValue("focusin",!0,50),n||(n=r._getExpiringValue("mouseDownNode"))&&r.debug("Reconstruct mouse target for focusin from recent event.")}n?r._callHook("nodeSetFocus",r._makeHookContext(n,t),o):r.tbody&&e(t.target).parents("table.fancytree-container > thead").length?r.debug("Ignore focus event outside table body.",t):r._callHook("treeSetFocus",r,o)}})).on("selectstart"+o,"span.fancytree-title",(function(e){e.preventDefault()})).on("keydown"+o,(function(e){if(n.disabled||!1===n.keyboard)return!0;var t,i=r.focusNode,o=r._makeHookContext(i||r,e),s=r.phase;try{return r.phase="userEvent","preventNav"===(t=i?r._triggerNodeEvent("keydown",i,e):r._triggerTreeEvent("keydown",e))?t=!0:!1!==t&&(t=r._callHook("nodeKeydown",o)),t}finally{r.phase=s}})).on("mousedown"+o,(function(e){var t=i.getEventTarget(e);r._lastMousedownNode=t?t.node:null,r._setExpiringValue("mouseDownNode",r._lastMousedownNode)})).on("click"+o+" dblclick"+o,(function(e){if(n.disabled)return!0;var r,o=i.getEventTarget(e),s=o.node,a=t.tree,l=a.phase;if(!s)return!0;r=a._makeHookContext(s,e);try{switch(a.phase="userEvent",e.type){case"click":return r.targetType=o.type,s.isPagingNode()?!0===a._triggerNodeEvent("clickPaging",r,e):!1!==a._triggerNodeEvent("click",r,e)&&a._callHook("nodeClick",r);case"dblclick":return r.targetType=o.type,!1!==a._triggerNodeEvent("dblclick",r,e)&&a._callHook("nodeDblclick",r)}}finally{a.phase=l}}))},getActiveNode:function(){return this.tree.activeNode},getNodeByKey:function(e){return this.tree.getNodeByKey(e)},getRootNode:function(){return this.tree.rootNode},getTree:function(){return this.tree}}),i=e.ui.fancytree,e.extend(e.ui.fancytree,{version:"2.32.0",buildType:"production",debugLevel:3,_nextId:1,_nextNodeKey:1,_extensions:{},_FancytreeClass:P,_FancytreeNodeClass:M,jquerySupports:{positionMyOfs:function(t,n,i,r){var o,s,a,l=e.map(e.trim(t).split("."),(function(e){return parseInt(e,10)})),u=e.map(Array.prototype.slice.call(arguments,1),(function(e){return parseInt(e,10)}));for(o=0;oa;return!0}(e.ui.version,1,9)},assert:function(e,t){return b(e,t)},createTree:function(t,n){return e(t).fancytree(n).fancytree("getTree")},debounce:function(e,t,n,i){var r;return 3===arguments.length&&"boolean"!==typeof n&&(i=n,n=!1),function(){var o=arguments;i=i||this,n&&!r&&t.apply(i,o),clearTimeout(r),r=setTimeout((function(){n||t.apply(i,o),r=null}),e)}},debug:function(t){e.ui.fancytree.debugLevel>=4&&w("log",arguments)},error:function(t){e.ui.fancytree.debugLevel>=1&&w("error",arguments)},escapeHtml:function(e){return(""+e).replace(o,(function(e){return a[e]}))},fixPositionOptions:function(t){if((t.offset||(""+t.my+t.at).indexOf("%")>=0)&&e.error("expected new position syntax (but '%' is not supported)"),!e.ui.fancytree.jquerySupports.positionMyOfs){var n=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.my),i=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.at),r=(n[2]?+n[2]:0)+(i[2]?+i[2]:0),o=(n[4]?+n[4]:0)+(i[4]?+i[4]:0);t=e.extend({},t,{my:n[1]+" "+n[3],at:i[1]+" "+i[3]}),(r||o)&&(t.offset=r+" "+o)}return t},getEventTarget:function(t){var n,r=t&&t.target?t.target.className:"",o={node:this.getNode(t.target),type:void 0};return/\bfancytree-title\b/.test(r)?o.type="title":/\bfancytree-expander\b/.test(r)?o.type=!1===o.node.hasChildren()?"prefix":"expander":/\bfancytree-checkbox\b/.test(r)?o.type="checkbox":/\bfancytree(-custom)?-icon\b/.test(r)?o.type="icon":/\bfancytree-node\b/.test(r)?o.type="title":t&&t.target&&((n=e(t.target)).is("ul[role=group]")?((o.node&&o.node.tree||i).debug("Ignoring click on outer UL."),o.node=null):n.closest(".fancytree-title").length?o.type="title":n.closest(".fancytree-checkbox").length?o.type="checkbox":n.closest(".fancytree-expander").length&&(o.type="expander")),o},getEventTargetType:function(e){return this.getEventTarget(e).type},getNode:function(t){if(t instanceof M)return t;for(t instanceof e?t=t[0]:void 0!==t.originalEvent&&(t=t.target);t;){if(t.ftnode)return t.ftnode;t=t.parentNode}return null},getTree:function(t){var n,i=t;return t instanceof P?t:(void 0===t&&(t=0),"number"===typeof t?t=e(".fancytree-container").eq(t):"string"===typeof t?(t=e("#ft-id-"+i).eq(0)).length||(t=e(i).eq(0)):t instanceof e?t=t.eq(0):void 0!==t.originalEvent&&(t=e(t.target)),(n=(t=t.closest(":ui-fancytree")).data("ui-fancytree")||t.data("fancytree"))?n.tree:null)},evalOption:function(t,n,i,r,o){var s,a,l=n.tree,u=r[t],d=i[t];return e.isFunction(u)?(s={node:n,tree:l,widget:l.widget,options:l.widget.options,typeInfo:l.types[n.type]||{}},null==(a=u.call(l,{type:t},s))&&(a=d)):a=null==d?u:d,null==a&&(a=o),a},setSpanIcon:function(t,n,i){var r=e(t);"string"===typeof i?r.attr("class",n+" "+i):(i.text?r.text(""+i.text):i.html&&(t.innerHTML=i.html),r.attr("class",n+" "+(i.addClass||"")))},eventToString:function(e){var t=e.which,n=e.type,i=[];return e.altKey&&i.push("alt"),e.ctrlKey&&i.push("ctrl"),e.metaKey&&i.push("meta"),e.shiftKey&&i.push("shift"),"click"===n||"dblclick"===n?i.push(c[e.button]+n):"wheel"===n?i.push(n):l[t]||i.push(u[t]||String.fromCharCode(t).toLowerCase()),i.join("+")},info:function(t){e.ui.fancytree.debugLevel>=3&&w("info",arguments)},keyEventToString:function(e){return this.warn("keyEventToString() is deprecated: use eventToString()"),this.eventToString(e)},overrideMethod:function(t,n,i,r){var o,s=t[n]||e.noop;t[n]=function(){var e=r||this;try{return o=e._super,e._super=s,i.apply(e,arguments)}finally{e._super=o}}},parseHtml:function(t){var n,i,r,o,s,a,l,u,d=t.find(">li"),c=[];return d.each((function(){var d,p,g=e(this),y=g.find(">span",this).first(),b=y.length?null:g.find(">a").first(),w={tooltip:null,data:{}};for(y.length?w.title=y.html():b&&b.length?(w.title=b.html(),w.data.href=b.attr("href"),w.data.target=b.attr("target"),w.tooltip=b.attr("title")):(w.title=g.html(),(s=w.title.search(/
"],_default:[0,"",""]};function be(e,t){var n;return n="undefined"!==typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!==typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&M(e,t)?x.merge([e],n):n}function we(e,t){for(var n=0,i=e.length;n-1)r&&r.push(o);else if(u=ae(o),s=be(c.appendChild(o),"script"),u&&we(s),n)for(d=0;o=s[d++];)me.test(o.type||"")&&n.push(o);return c}!function(){var e=s.createDocumentFragment().appendChild(s.createElement("div")),t=s.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),m.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",m.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var xe=/^key/,Se=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function Te(){return!1}function Oe(e,t){return e===function(){try{return s.activeElement}catch(e){}}()===("focus"===t)}function De(e,t,n,i,r,o){var s,a;if("object"===typeof t){for(a in"string"!==typeof n&&(i=i||n,n=void 0),t)De(e,a,n,i,t[a],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"===typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),!1===r)r=Te;else if(!r)return e;return 1===o&&(s=r,(r=function(e){return x().off(e),s.apply(this,arguments)}).guid=s.guid||(s.guid=x.guid++)),e.each((function(){x.event.add(this,t,r,i,n)}))}function Me(e,t,n){n?(Q.set(e,t,!1),x.event.add(e,t,{namespace:!1,handler:function(e){var i,r,o=Q.get(this,t);if(1&e.isTrigger&&this[t]){if(o.length)(x.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=l.call(arguments),Q.set(this,t,o),i=n(this,t),this[t](),o!==(r=Q.get(this,t))||i?Q.set(this,t,!1):r={},o!==r)return e.stopImmediatePropagation(),e.preventDefault(),r.value}else o.length&&(Q.set(this,t,{value:x.event.trigger(x.extend(o[0],x.Event.prototype),o.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,t)&&x.event.add(e,t,Ee)}x.event={global:{},add:function(e,t,n,i,r){var o,s,a,l,u,d,c,h,f,p,v,g=Q.get(e);if(g)for(n.handler&&(n=(o=n).handler,r=o.selector),r&&x.find.matchesSelector(se,r),n.guid||(n.guid=x.guid++),(l=g.events)||(l=g.events={}),(s=g.handle)||(s=g.handle=function(t){return x.event.triggered!==t.type?x.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(j)||[""]).length;u--;)f=v=(a=Ce.exec(t[u])||[])[1],p=(a[2]||"").split(".").sort(),f&&(c=x.event.special[f]||{},f=(r?c.delegateType:c.bindType)||f,c=x.event.special[f]||{},d=x.extend({type:f,origType:v,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&x.expr.match.needsContext.test(r),namespace:p.join(".")},o),(h=l[f])||((h=l[f]=[]).delegateCount=0,c.setup&&!1!==c.setup.call(e,i,p,s)||e.addEventListener&&e.addEventListener(f,s)),c.add&&(c.add.call(e,d),d.handler.guid||(d.handler.guid=n.guid)),r?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[f]=!0)},remove:function(e,t,n,i,r){var o,s,a,l,u,d,c,h,f,p,v,g=Q.hasData(e)&&Q.get(e);if(g&&(l=g.events)){for(u=(t=(t||"").match(j)||[""]).length;u--;)if(f=v=(a=Ce.exec(t[u])||[])[1],p=(a[2]||"").split(".").sort(),f){for(c=x.event.special[f]||{},h=l[f=(i?c.delegateType:c.bindType)||f]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=h.length;o--;)d=h[o],!r&&v!==d.origType||n&&n.guid!==d.guid||a&&!a.test(d.namespace)||i&&i!==d.selector&&("**"!==i||!d.selector)||(h.splice(o,1),d.selector&&h.delegateCount--,c.remove&&c.remove.call(e,d));s&&!h.length&&(c.teardown&&!1!==c.teardown.call(e,p,g.handle)||x.removeEvent(e,f,g.handle),delete l[f])}else for(f in l)x.event.remove(e,f+t[u],n,i,!0);x.isEmptyObject(l)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,i,r,o,s,a=x.event.fix(e),l=new Array(arguments.length),u=(Q.get(this,"events")||{})[a.type]||[],d=x.event.special[a.type]||{};for(l[0]=a,t=1;t=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(o=[],s={},n=0;n-1:x.find(r,this,null,[u]).length),s[r]&&o.push(i);o.length&&a.push({elem:u,handlers:o})}return u=this,l\x20\t\r\n\f]*)[^>]*)\/>/gi,Ne=/\n\t// \n\t// ...\n\t//\n\t// $(\"#tree\").fancytree({\n\t// extensions: [\"childcounter\"],\n\t// childcounter: {\n\t// hideExpanded: true\n\t// },\n\t// ...\n\t// });\n\t//\n\n\t/* 'childcounter' extension */\n\t$.ui.fancytree.registerExtension({\n\t\t// Every extension must be registered by a unique name.\n\t\tname: \"childcounter\",\n\t\t// Version information should be compliant with [semver](http://semver.org)\n\t\tversion: \"2.32.0\",\n\n\t\t// Extension specific options and their defaults.\n\t\t// This options will be available as `tree.options.childcounter.hideExpanded`\n\n\t\toptions: {\n\t\t\tdeep: true,\n\t\t\thideZeros: true,\n\t\t\thideExpanded: false,\n\t\t},\n\n\t\t// Attributes other than `options` (or functions) can be defined here, and\n\t\t// will be added to the tree.ext.EXTNAME namespace, in this case `tree.ext.childcounter.foo`.\n\t\t// They can also be accessed as `this._local.foo` from within the extension\n\t\t// methods.\n\t\tfoo: 42,\n\n\t\t// Local functions are prefixed with an underscore '_'.\n\t\t// Callable as `this._local._appendCounter()`.\n\n\t\t_appendCounter: function(bar) {\n\t\t\tvar tree = this;\n\t\t},\n\n\t\t// **Override virtual methods for this extension.**\n\t\t//\n\t\t// Fancytree implements a number of 'hook methods', prefixed by 'node...' or 'tree...'.\n\t\t// with a `ctx` argument (see [EventData](https://wwWendt.de/tech/fancytree/doc/jsdoc/global.html#EventData)\n\t\t// for details) and an extended calling context: \n\t\t// `this` : the Fancytree instance \n\t\t// `this._local`: the namespace that contains extension attributes and private methods (same as this.ext.EXTNAME) \n\t\t// `this._super`: the virtual function that was overridden (member of previous extension or Fancytree)\n\t\t//\n\t\t// See also the [complete list of available hook functions](https://wwWendt.de/tech/fancytree/doc/jsdoc/Fancytree_Hooks.html).\n\n\t\t/* Init */\n\t\t// `treeInit` is triggered when a tree is initalized. We can set up classes or\n\t\t// bind event handlers here...\n\t\ttreeInit: function(ctx) {\n\t\t\tvar tree = this, // same as ctx.tree,\n\t\t\t\topts = ctx.options,\n\t\t\t\textOpts = ctx.options.childcounter;\n\t\t\t// Optionally check for dependencies with other extensions\n\t\t\t/* this._requireExtension(\"glyph\", false, false); */\n\t\t\t// Call the base implementation\n\t\t\tthis._superApply(arguments);\n\t\t\t// Add a class to the tree container\n\t\t\tthis.$container.addClass(\"fancytree-ext-childcounter\");\n\t\t},\n\n\t\t// Destroy this tree instance (we only call the default implementation, so\n\t\t// this method could as well be omitted).\n\n\t\ttreeDestroy: function(ctx) {\n\t\t\tthis._superApply(arguments);\n\t\t},\n\n\t\t// Overload the `renderTitle` hook, to append a counter badge\n\t\tnodeRenderTitle: function(ctx, title) {\n\t\t\tvar node = ctx.node,\n\t\t\t\textOpts = ctx.options.childcounter,\n\t\t\t\tcount =\n\t\t\t\t\tnode.data.childCounter == null\n\t\t\t\t\t\t? node.countChildren(extOpts.deep)\n\t\t\t\t\t\t: +node.data.childCounter;\n\t\t\t// Let the base implementation render the title\n\t\t\t// We use `_super()` instead of `_superApply()` here, since it is a little bit\n\t\t\t// more performant when called often\n\t\t\tthis._super(ctx, title);\n\t\t\t// Append a counter badge\n\t\t\tif (\n\t\t\t\t(count || !extOpts.hideZeros) &&\n\t\t\t\t(!node.isExpanded() || !extOpts.hideExpanded)\n\t\t\t) {\n\t\t\t\t$(\n\t\t\t\t\t\"span.fancytree-icon,span.fancytree-custom-icon\",\n\t\t\t\t\tnode.span\n\t\t\t\t).append(\n\t\t\t\t\t$(\"\").text(count)\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t// Overload the `setExpanded` hook, so the counters are updated\n\t\tnodeSetExpanded: function(ctx, flag, callOpts) {\n\t\t\tvar tree = ctx.tree,\n\t\t\t\tnode = ctx.node;\n\t\t\t// Let the base implementation expand/collapse the node, then redraw the title\n\t\t\t// after the animation has finished\n\t\t\treturn this._superApply(arguments).always(function() {\n\t\t\t\ttree.nodeRenderTitle(ctx);\n\t\t\t});\n\t\t},\n\n\t\t// End of extension definition\n\t});\n\t// Value returned by `require('jquery.fancytree..')`\n\treturn $.ui.fancytree;\n}); // End of closure\n","/*!\n * jquery.fancytree.edit.js\n *\n * Make node titles editable.\n * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)\n *\n * Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de)\n *\n * Released under the MIT license\n * https://github.com/mar10/fancytree/wiki/LicenseInfo\n *\n * @version 2.32.0\n * @date 2019-09-10T07:42:12Z\n */\n\n(function(factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([\"jquery\", \"./jquery.fancytree\"], factory);\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\t// Node/CommonJS\n\t\trequire(\"./jquery.fancytree\");\n\t\tmodule.exports = factory(require(\"jquery\"));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n})(function($) {\n\t\"use strict\";\n\n\t/*******************************************************************************\n\t * Private functions and variables\n\t */\n\n\tvar isMac = /Mac/.test(navigator.platform),\n\t\tescapeHtml = $.ui.fancytree.escapeHtml,\n\t\tunescapeHtml = $.ui.fancytree.unescapeHtml;\n\n\t/**\n\t * [ext-edit] Start inline editing of current node title.\n\t *\n\t * @alias FancytreeNode#editStart\n\t * @requires Fancytree\n\t */\n\t$.ui.fancytree._FancytreeNodeClass.prototype.editStart = function() {\n\t\tvar $input,\n\t\t\tnode = this,\n\t\t\ttree = this.tree,\n\t\t\tlocal = tree.ext.edit,\n\t\t\tinstOpts = tree.options.edit,\n\t\t\t$title = $(\".fancytree-title\", node.span),\n\t\t\teventData = {\n\t\t\t\tnode: node,\n\t\t\t\ttree: tree,\n\t\t\t\toptions: tree.options,\n\t\t\t\tisNew: $(node[tree.statusClassPropName]).hasClass(\n\t\t\t\t\t\"fancytree-edit-new\"\n\t\t\t\t),\n\t\t\t\torgTitle: node.title,\n\t\t\t\tinput: null,\n\t\t\t\tdirty: false,\n\t\t\t};\n\n\t\t// beforeEdit may want to modify the title before editing\n\t\tif (\n\t\t\tinstOpts.beforeEdit.call(\n\t\t\t\tnode,\n\t\t\t\t{ type: \"beforeEdit\" },\n\t\t\t\teventData\n\t\t\t) === false\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\t$.ui.fancytree.assert(!local.currentNode, \"recursive edit\");\n\t\tlocal.currentNode = this;\n\t\tlocal.eventData = eventData;\n\n\t\t// Disable standard Fancytree mouse- and key handling\n\t\ttree.widget._unbind();\n\n\t\tlocal.lastDraggableAttrValue = node.span.draggable;\n\t\tif (local.lastDraggableAttrValue) {\n\t\t\tnode.span.draggable = false;\n\t\t}\n\n\t\t// #116: ext-dnd prevents the blur event, so we have to catch outer clicks\n\t\t$(document).on(\"mousedown.fancytree-edit\", function(event) {\n\t\t\tif (!$(event.target).hasClass(\"fancytree-edit-input\")) {\n\t\t\t\tnode.editEnd(true, event);\n\t\t\t}\n\t\t});\n\n\t\t// Replace node with \n\t\t$input = $(\"\", {\n\t\t\tclass: \"fancytree-edit-input\",\n\t\t\ttype: \"text\",\n\t\t\tvalue: tree.options.escapeTitles\n\t\t\t\t? eventData.orgTitle\n\t\t\t\t: unescapeHtml(eventData.orgTitle),\n\t\t});\n\t\tlocal.eventData.input = $input;\n\t\tif (instOpts.adjustWidthOfs != null) {\n\t\t\t$input.width($title.width() + instOpts.adjustWidthOfs);\n\t\t}\n\t\tif (instOpts.inputCss != null) {\n\t\t\t$input.css(instOpts.inputCss);\n\t\t}\n\n\t\t$title.html($input);\n\n\t\t// Focus and bind keyboard handler\n\t\t$input\n\t\t\t.focus()\n\t\t\t.change(function(event) {\n\t\t\t\t$input.addClass(\"fancytree-edit-dirty\");\n\t\t\t})\n\t\t\t.on(\"keydown\", function(event) {\n\t\t\t\tswitch (event.which) {\n\t\t\t\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\t\t\t\tnode.editEnd(false, event);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t\t\tnode.editEnd(true, event);\n\t\t\t\t\t\treturn false; // so we don't start editmode on Mac\n\t\t\t\t}\n\t\t\t\tevent.stopPropagation();\n\t\t\t})\n\t\t\t.blur(function(event) {\n\t\t\t\treturn node.editEnd(true, event);\n\t\t\t});\n\n\t\tinstOpts.edit.call(node, { type: \"edit\" }, eventData);\n\t};\n\n\t/**\n\t * [ext-edit] Stop inline editing.\n\t * @param {Boolean} [applyChanges=false] false: cancel edit, true: save (if modified)\n\t * @alias FancytreeNode#editEnd\n\t * @requires jquery.fancytree.edit.js\n\t */\n\t$.ui.fancytree._FancytreeNodeClass.prototype.editEnd = function(\n\t\tapplyChanges,\n\t\t_event\n\t) {\n\t\tvar newVal,\n\t\t\tnode = this,\n\t\t\ttree = this.tree,\n\t\t\tlocal = tree.ext.edit,\n\t\t\teventData = local.eventData,\n\t\t\tinstOpts = tree.options.edit,\n\t\t\t$title = $(\".fancytree-title\", node.span),\n\t\t\t$input = $title.find(\"input.fancytree-edit-input\");\n\n\t\tif (instOpts.trim) {\n\t\t\t$input.val($.trim($input.val()));\n\t\t}\n\t\tnewVal = $input.val();\n\n\t\teventData.dirty = newVal !== node.title;\n\t\teventData.originalEvent = _event;\n\n\t\t// Find out, if saving is required\n\t\tif (applyChanges === false) {\n\t\t\t// If true/false was passed, honor this (except in rename mode, if unchanged)\n\t\t\teventData.save = false;\n\t\t} else if (eventData.isNew) {\n\t\t\t// In create mode, we save everything, except for empty text\n\t\t\teventData.save = newVal !== \"\";\n\t\t} else {\n\t\t\t// In rename mode, we save everyting, except for empty or unchanged text\n\t\t\teventData.save = eventData.dirty && newVal !== \"\";\n\t\t}\n\t\t// Allow to break (keep editor open), modify input, or re-define data.save\n\t\tif (\n\t\t\tinstOpts.beforeClose.call(\n\t\t\t\tnode,\n\t\t\t\t{ type: \"beforeClose\" },\n\t\t\t\teventData\n\t\t\t) === false\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (\n\t\t\teventData.save &&\n\t\t\tinstOpts.save.call(node, { type: \"save\" }, eventData) === false\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\t$input.removeClass(\"fancytree-edit-dirty\").off();\n\t\t// Unbind outer-click handler\n\t\t$(document).off(\".fancytree-edit\");\n\n\t\tif (eventData.save) {\n\t\t\t// # 171: escape user input (not required if global escaping is on)\n\t\t\tnode.setTitle(\n\t\t\t\ttree.options.escapeTitles ? newVal : escapeHtml(newVal)\n\t\t\t);\n\t\t\tnode.setFocus();\n\t\t} else {\n\t\t\tif (eventData.isNew) {\n\t\t\t\tnode.remove();\n\t\t\t\tnode = eventData.node = null;\n\t\t\t\tlocal.relatedNode.setFocus();\n\t\t\t} else {\n\t\t\t\tnode.renderTitle();\n\t\t\t\tnode.setFocus();\n\t\t\t}\n\t\t}\n\t\tlocal.eventData = null;\n\t\tlocal.currentNode = null;\n\t\tlocal.relatedNode = null;\n\t\t// Re-enable mouse and keyboard handling\n\t\ttree.widget._bind();\n\n\t\tif (local.lastDraggableAttrValue) {\n\t\t\tnode.span.draggable = true;\n\t\t}\n\n\t\t// Set keyboard focus, even if setFocus() claims 'nothing to do'\n\t\t$(tree.$container).focus();\n\t\teventData.input = null;\n\t\tinstOpts.close.call(node, { type: \"close\" }, eventData);\n\t\treturn true;\n\t};\n\n\t/**\n\t * [ext-edit] Create a new child or sibling node and start edit mode.\n\t *\n\t * @param {String} [mode='child'] 'before', 'after', or 'child'\n\t * @param {Object} [init] NodeData (or simple title string)\n\t * @alias FancytreeNode#editCreateNode\n\t * @requires jquery.fancytree.edit.js\n\t * @since 2.4\n\t */\n\t$.ui.fancytree._FancytreeNodeClass.prototype.editCreateNode = function(\n\t\tmode,\n\t\tinit\n\t) {\n\t\tvar newNode,\n\t\t\ttree = this.tree,\n\t\t\tself = this;\n\n\t\tmode = mode || \"child\";\n\t\tif (init == null) {\n\t\t\tinit = { title: \"\" };\n\t\t} else if (typeof init === \"string\") {\n\t\t\tinit = { title: init };\n\t\t} else {\n\t\t\t$.ui.fancytree.assert($.isPlainObject(init));\n\t\t}\n\t\t// Make sure node is expanded (and loaded) in 'child' mode\n\t\tif (\n\t\t\tmode === \"child\" &&\n\t\t\t!this.isExpanded() &&\n\t\t\tthis.hasChildren() !== false\n\t\t) {\n\t\t\tthis.setExpanded().done(function() {\n\t\t\t\tself.editCreateNode(mode, init);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tnewNode = this.addNode(init, mode);\n\n\t\t// #644: Don't filter new nodes.\n\t\tnewNode.match = true;\n\t\t$(newNode[tree.statusClassPropName])\n\t\t\t.removeClass(\"fancytree-hide\")\n\t\t\t.addClass(\"fancytree-match\");\n\n\t\tnewNode.makeVisible(/*{noAnimation: true}*/).done(function() {\n\t\t\t$(newNode[tree.statusClassPropName]).addClass(\"fancytree-edit-new\");\n\t\t\tself.tree.ext.edit.relatedNode = self;\n\t\t\tnewNode.editStart();\n\t\t});\n\t};\n\n\t/**\n\t * [ext-edit] Check if any node in this tree in edit mode.\n\t *\n\t * @returns {FancytreeNode | null}\n\t * @alias Fancytree#isEditing\n\t * @requires jquery.fancytree.edit.js\n\t */\n\t$.ui.fancytree._FancytreeClass.prototype.isEditing = function() {\n\t\treturn this.ext.edit ? this.ext.edit.currentNode : null;\n\t};\n\n\t/**\n\t * [ext-edit] Check if this node is in edit mode.\n\t * @returns {Boolean} true if node is currently beeing edited\n\t * @alias FancytreeNode#isEditing\n\t * @requires jquery.fancytree.edit.js\n\t */\n\t$.ui.fancytree._FancytreeNodeClass.prototype.isEditing = function() {\n\t\treturn this.tree.ext.edit\n\t\t\t? this.tree.ext.edit.currentNode === this\n\t\t\t: false;\n\t};\n\n\t/*******************************************************************************\n\t * Extension code\n\t */\n\t$.ui.fancytree.registerExtension({\n\t\tname: \"edit\",\n\t\tversion: \"2.32.0\",\n\t\t// Default options for this extension.\n\t\toptions: {\n\t\t\tadjustWidthOfs: 4, // null: don't adjust input size to content\n\t\t\tallowEmpty: false, // Prevent empty input\n\t\t\tinputCss: { minWidth: \"3em\" },\n\t\t\t// triggerCancel: [\"esc\", \"tab\", \"click\"],\n\t\t\ttriggerStart: [\"f2\", \"mac+enter\", \"shift+click\"],\n\t\t\ttrim: true, // Trim whitespace before save\n\t\t\t// Events:\n\t\t\tbeforeClose: $.noop, // Return false to prevent cancel/save (data.input is available)\n\t\t\tbeforeEdit: $.noop, // Return false to prevent edit mode\n\t\t\tclose: $.noop, // Editor was removed\n\t\t\tedit: $.noop, // Editor was opened (available as data.input)\n\t\t\t//\t\tkeypress: $.noop, // Not yet implemented\n\t\t\tsave: $.noop, // Save data.input.val() or return false to keep editor open\n\t\t},\n\t\t// Local attributes\n\t\tcurrentNode: null,\n\n\t\ttreeInit: function(ctx) {\n\t\t\tvar tree = ctx.tree;\n\n\t\t\tthis._superApply(arguments);\n\n\t\t\tthis.$container\n\t\t\t\t.addClass(\"fancytree-ext-edit\")\n\t\t\t\t.on(\"fancytreebeforeupdateviewport\", function(event, data) {\n\t\t\t\t\tvar editNode = tree.isEditing();\n\t\t\t\t\t// When scrolling, the TR may be re-used by another node, so the\n\t\t\t\t\t// active cell marker an\n\t\t\t\t\tif (editNode) {\n\t\t\t\t\t\teditNode.info(\"Cancel edit due to scroll event.\");\n\t\t\t\t\t\teditNode.editEnd(false, event);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t},\n\t\tnodeClick: function(ctx) {\n\t\t\tvar eventStr = $.ui.fancytree.eventToString(ctx.originalEvent),\n\t\t\t\ttriggerStart = ctx.options.edit.triggerStart;\n\n\t\t\tif (\n\t\t\t\teventStr === \"shift+click\" &&\n\t\t\t\t$.inArray(\"shift+click\", triggerStart) >= 0\n\t\t\t) {\n\t\t\t\tif (ctx.originalEvent.shiftKey) {\n\t\t\t\t\tctx.node.editStart();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (\n\t\t\t\teventStr === \"click\" &&\n\t\t\t\t$.inArray(\"clickActive\", triggerStart) >= 0\n\t\t\t) {\n\t\t\t\t// Only when click was inside title text (not aynwhere else in the row)\n\t\t\t\tif (\n\t\t\t\t\tctx.node.isActive() &&\n\t\t\t\t\t!ctx.node.isEditing() &&\n\t\t\t\t\t$(ctx.originalEvent.target).hasClass(\"fancytree-title\")\n\t\t\t\t) {\n\t\t\t\t\tctx.node.editStart();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this._superApply(arguments);\n\t\t},\n\t\tnodeDblclick: function(ctx) {\n\t\t\tif ($.inArray(\"dblclick\", ctx.options.edit.triggerStart) >= 0) {\n\t\t\t\tctx.node.editStart();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn this._superApply(arguments);\n\t\t},\n\t\tnodeKeydown: function(ctx) {\n\t\t\tswitch (ctx.originalEvent.which) {\n\t\t\t\tcase 113: // [F2]\n\t\t\t\t\tif ($.inArray(\"f2\", ctx.options.edit.triggerStart) >= 0) {\n\t\t\t\t\t\tctx.node.editStart();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t\tif (\n\t\t\t\t\t\t$.inArray(\"mac+enter\", ctx.options.edit.triggerStart) >=\n\t\t\t\t\t\t\t0 &&\n\t\t\t\t\t\tisMac\n\t\t\t\t\t) {\n\t\t\t\t\t\tctx.node.editStart();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn this._superApply(arguments);\n\t\t},\n\t});\n\t// Value returned by `require('jquery.fancytree..')`\n\treturn $.ui.fancytree;\n}); // End of closure\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get';\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/build/static/js/2.909d1cd5.chunk.js b/build/static/js/2.909d1cd5.chunk.js
new file mode 100644
index 0000000000000000000000000000000000000000..2b75f3ad755e0c2781f87f545f1507d9542c4676
--- /dev/null
+++ b/build/static/js/2.909d1cd5.chunk.js
@@ -0,0 +1,3 @@
+/*! For license information please see 2.909d1cd5.chunk.js.LICENSE.txt */
+(this["webpackJsonpreact-api"]=this["webpackJsonpreact-api"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(45)},function(e,t,n){"use strict";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0;h--){var f=s[h];"."===f?o(s,h):".."===f?(o(s,h),c++):c&&(o(s,h),c--)}if(!u)for(;c--;c)s.unshift("..");!u||""===s[0]||s[0]&&r(s[0])||s.unshift("");var p=s.join("/");return n&&"/"!==p.substr(-1)&&(p+="/"),p};function a(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,i){return e(t,n[i])}));if("object"===typeof t||"object"===typeof n){var i=a(t),r=a(n);return i!==t||r!==n?e(i,r):Object.keys(Object.assign({},t,n)).every((function(i){return e(t[i],n[i])}))}return!1},u=n(12);function d(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function h(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function f(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,i=e.hash,r=t||"/";return n&&"?"!==n&&(r+="?"===n.charAt(0)?n:"?"+n),i&&"#"!==i&&(r+="#"===i.charAt(0)?i:"#"+i),r}function v(e,t,n,r){var o;"string"===typeof e?(o=function(e){var t=e||"/",n="",i="",r=t.indexOf("#");-1!==r&&(i=t.substr(r),t=t.substr(0,r));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===i?"":i}}(e)).state=t:(void 0===(o=Object(i.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(a){throw a instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):a}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=s(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,i,r){if(null!=e){var o="function"===typeof e?e(t,n):e;"string"===typeof o?"function"===typeof i?i(o,r):r(!0):r(!1!==o)}else r(!0)},appendListener:function(e){var n=!0;function i(){n&&e.apply(void 0,arguments)}return t.push(i),function(){n=!1,t=t.filter((function(e){return e!==i}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),i=0;it?n.splice(t,n.length-t,i):n.push(i),c({action:"PUSH",location:i,index:t,entries:n})}}))},replace:function(e,t){var i=v(e,t,h(),w.location);d.confirmTransitionTo(i,"REPLACE",n,(function(e){e&&(w.entries[w.index]=i,c({action:"REPLACE",location:i}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t"'/]/g,s=/[<>"'/]/g,a={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},l={16:!0,17:!0,18:!0},u={8:"backspace",9:"tab",10:"return",13:"return",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},d={16:"shift",17:"ctrl",18:"alt",91:"meta",93:"meta"},c={0:"",1:"left",2:"middle",3:"right"},h="active expanded focus folder lazy radiogroup selected unselectable unselectableIgnore".split(" "),f={},p="columns types".split(" "),v="checkbox expanded extraClasses folder icon iconTooltip key lazy partsel radiogroup refKey selected statusNodeType title tooltip type unselectable unselectableIgnore unselectableStatus".split(" "),g={},m={},y={active:!0,children:!0,data:!0,focus:!0};for(t=0;t=0,"insertBefore must be an existing child"),this.children.splice.apply(this.children,[o,0].concat(u))),a&&!n){for(i=0,r=u.length;i=0;i--)"paging"===(r=this.children[i]).statusNodeType&&this.removeChild(r);this.partload=!1},appendSibling:function(e){return this.addNode(e,"after")},applyCommand:function(e,t){return this.tree.applyCommand(e,this,t)},applyPatch:function(t){if(null===t)return this.remove(),S(this);var n,i,r={children:!0,expanded:!0,parent:!0};for(n in t)t.hasOwnProperty(n)&&(i=t[n],r[n]||e.isFunction(i)||(g[n]?this[n]=i:this.data[n]=i));return t.hasOwnProperty("children")&&(this.removeChildren(),t.children&&this._setChildren(t.children)),this.isVisible()&&(this.renderTitle(),this.renderStatus()),t.hasOwnProperty("expanded")?this.setExpanded(t.expanded):S(this)},collapseSiblings:function(){return this.tree._callHook("nodeCollapseSiblings",this)},copyTo:function(e,t,n){return e.addNode(this.toDict(!0,n),t)},countChildren:function(e){var t,n,i,r=this.children;if(!r)return 0;if(i=r.length,!1!==e)for(t=0,n=i;t=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},discard:function(){return this.warn("FancytreeNode.discard() is deprecated since 2014-02-16. Use .resetLazy() instead."),this.resetLazy()},discardMarkup:function(e){var t=e?"nodeRemoveMarkup":"nodeRemoveChildMarkup";this.tree._callHook(t,this)},error:function(e){this.tree.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},findAll:function(t){t=e.isFunction(t)?t:D(t);var n=[];return this.visit((function(e){t(e)&&n.push(e)})),n},findFirst:function(t){t=e.isFunction(t)?t:D(t);var n=null;return this.visit((function(e){if(t(e))return n=e,!1})),n},findRelatedNode:function(e,t){return this.tree.findRelatedNode(this,e,t)},_changeSelectStatusAttrs:function(e){var t=!1,n=this.tree.options,r=i.evalOption("unselectable",this,this,n,!1),o=i.evalOption("unselectableStatus",this,this,n,void 0);switch(r&&null!=o&&(e=o),e){case!1:t=this.selected||this.partsel,this.selected=!1,this.partsel=!1;break;case!0:t=!this.selected||!this.partsel,this.selected=!0,this.partsel=!0;break;case void 0:t=this.selected||!this.partsel,this.selected=!1,this.partsel=!0;break;default:b(!1,"invalid state: "+e)}return t&&this.renderStatus(),t},fixSelection3AfterClick:function(e){var t=this.isSelected();this.visit((function(e){if(e._changeSelectStatusAttrs(t),e.radiogroup)return"skip"})),this.fixSelection3FromEndNodes(e)},fixSelection3FromEndNodes:function(e){var t=this.tree.options;b(3===t.selectMode,"expected selectMode 3"),function e(n){var r,o,s,a,l,u,d,c,h=n.children;if(h&&h.length){for(u=!0,d=!1,r=0,o=h.length;r=0},hasFocus:function(){return this.tree.hasFocus()&&this.tree.focusNode===this},info:function(e){this.tree.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},isActive:function(){return this.tree.activeNode===this},isBelowOf:function(e){return this.getIndexHier(".",5)>e.getIndexHier(".",5)},isChildOf:function(e){return this.parent&&this.parent===e},isDescendantOf:function(t){if(!t||t.tree!==this.tree)return!1;for(var n=this.parent;n;){if(n===t)return!0;n===n.parent&&e.error("Recursive parent link: "+n),n=n.parent}return!1},isExpanded:function(){return!!this.expanded},isFirstSibling:function(){var e=this.parent;return!e||e.children[0]===this},isFolder:function(){return!!this.folder},isLastSibling:function(){var e=this.parent;return!e||e.children[e.children.length-1]===this},isLazy:function(){return!!this.lazy},isLoaded:function(){return!this.lazy||void 0!==this.hasChildren()},isLoading:function(){return!!this._isLoading},isRoot:function(){return this.isRootNode()},isPartsel:function(){return!this.selected&&!!this.partsel},isPartload:function(){return!!this.partload},isRootNode:function(){return this.tree.rootNode===this},isSelected:function(){return!!this.selected},isStatusNode:function(){return!!this.statusNodeType},isPagingNode:function(){return"paging"===this.statusNodeType},isTopLevel:function(){return this.tree.rootNode===this.parent},isUndefined:function(){return void 0===this.hasChildren()},isVisible:function(){var e,t,n=this.tree.enableFilter,i=this.getParentList(!1,!1);if(n&&!this.match&&!this.subMatchCount)return!1;for(e=0,t=i.length;e=0;n--)r.push(s[n].setExpanded(!0,t));return e.when.apply(e,r).done((function(){u?i.scrollIntoView(l).done((function(){o.resolve()})):o.resolve()})),o.promise()},moveTo:function(t,n,i){void 0===n||"over"===n?n="child":"firstChild"===n&&(t.children&&t.children.length?(n="before",t=t.children[0]):n="child");var r,o=this.tree,s=this.parent,a="child"===n?t:t.parent;if(this!==t){if(this.parent?a.isDescendantOf(this)&&e.error("Cannot move a node to its own descendant"):e.error("Cannot move system root"),a!==s&&s.triggerModifyChild("remove",this),1===this.parent.children.length){if(this.parent===a)return;this.parent.children=this.parent.lazy?[]:null,this.parent.expanded=!1}else b((r=e.inArray(this,this.parent.children))>=0,"invalid source parent"),this.parent.children.splice(r,1);if(this.parent=a,a.hasChildren())switch(n){case"child":a.children.push(this);break;case"before":b((r=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(r,0,this);break;case"after":b((r=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(r+1,0,this);break;default:e.error("Invalid mode "+n)}else a.children=[this];i&&t.visit(i,!0),a===s?a.triggerModifyChild("move",this):a.triggerModifyChild("add",this),o!==t.tree&&(this.warn("Cross-tree moveTo is experimental!"),this.visit((function(e){e.tree=t.tree}),!0)),o._callHook("treeStructureChanged",o,"moveTo"),s.isDescendantOf(a)||s.render(),a.isDescendantOf(s)||a===s||a.render()}},navigate:function(t,n){var i,r=e.ui.keyCode;switch(t){case"left":case r.LEFT:if(this.expanded)return this.setExpanded(!1);break;case"right":case r.RIGHT:if(!this.expanded&&(this.children||this.lazy))return this.setExpanded()}if(i=this.findRelatedNode(t)){try{i.makeVisible({scrollIntoView:!1})}catch(o){}return!1===n?(i.setFocus(),S()):i.setActive()}return this.warn("Could not find related node '"+t+"'."),S()},remove:function(){return this.parent.removeChild(this)},removeChild:function(e){return this.tree._callHook("nodeRemoveChild",this,e)},removeChildren:function(){return this.tree._callHook("nodeRemoveChildren",this)},removeClass:function(e){return this.toggleClass(e,!1)},render:function(e,t){return this.tree._callHook("nodeRender",this,e,t)},renderTitle:function(){return this.tree._callHook("nodeRenderTitle",this)},renderStatus:function(){return this.tree._callHook("nodeRenderStatus",this)},replaceWith:function(n){var i,r=this.parent,o=e.inArray(this,r.children),s=this;return b(this.isPagingNode(),"replaceWith() currently requires a paging status node"),(i=this.tree._callHook("nodeLoadChildren",this,n)).done((function(e){var n=s.children;for(t=0;tm+g-v&&(k=u+f-g+v,_&&(b(_.isRootNode()||_.isVisible(),"topNode must be visible"),li?1:-1},r.sort(e),t)for(n=0,i=r.length;n=0,n=void 0===n?!r:!!n)r||(u+=i+" ",a=!0);else for(;u.indexOf(" "+i+" ")>-1;)u=u.replace(" "+i+" "," ");return this.extraClasses=e.trim(u),a},toggleExpanded:function(){return this.tree._callHook("nodeToggleExpanded",this)},toggleSelected:function(){return this.tree._callHook("nodeToggleSelected",this)},toString:function(){return"FancytreeNode@"+this.key+"[title='"+this.title+"']"},triggerModifyChild:function(t,n,i){var r,o=this.tree.options.modifyChild;o&&(n&&n.parent!==this&&e.error("childNode "+n+" is not a child of "+this),r={node:this,tree:this.tree,operation:t,childNode:n||null},i&&e.extend(r,i),o({type:"modifyChild"},r))},triggerModify:function(e,t){this.parent.triggerModifyChild(e,this,t)},visit:function(e,t){var n,i,r=!0,o=this.children;if(!0===t&&(!1===(r=e(this))||"skip"===r))return r;if(o)for(n=0,i=o.length;n=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},P.prototype={_makeHookContext:function(t,n,i){var r,o;return void 0!==t.node?(n&&t.originalEvent!==n&&e.error("invalid args"),r=t):t.tree?r={node:t,tree:o=t.tree,widget:o.widget,options:o.widget.options,originalEvent:n,typeInfo:o.types[t.type]||{}}:t.widget?r={node:null,tree:t,widget:t.widget,options:t.widget.options,originalEvent:n}:e.error("invalid args"),i&&e.extend(r,i),r},_callHook:function(t,n,i){var r=this._makeHookContext(n),o=this[t],s=Array.prototype.slice.call(arguments,2);return e.isFunction(o)||e.error("_callHook('"+t+"') is not a function"),s.unshift(r),o.apply(this,s)},_setExpiringValue:function(e,t,n){this._tempCache[e]={value:t,expire:Date.now()+(+n||50)}},_getExpiringValue:function(e){var t=this._tempCache[e];return t&&t.expire>Date.now()?t.value:(delete this._tempCache[e],null)},_usesExtension:function(t){return e.inArray(t,this.options.extensions)>=0},_requireExtension:function(t,n,i,r){null!=i&&(i=!!i);var o=this._local.name,s=this.options.extensions,a=e.inArray(t,s)=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},destroy:function(){this.widget.destroy()},enable:function(e){!1===e?this.widget.disable():this.widget.enable()},enableUpdate:function(e){return e=!1!==e,!!this._enableUpdate===!!e?e:(this._enableUpdate=e,e?(this.debug("enableUpdate(true): redraw "),this._callHook("treeStructureChanged",this,"enableUpdate"),this.render()):this.debug("enableUpdate(false)..."),!e)},error:function(e){this.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},expandAll:function(e,t){var n=this.enableUpdate(!1);e=!1!==e,this.visit((function(n){!1!==n.hasChildren()&&n.isExpanded()!==e&&n.setExpanded(e,t)})),this.enableUpdate(n)},findAll:function(e){return this.rootNode.findAll(e)},findFirst:function(e){return this.rootNode.findFirst(e)},findNextNode:function(e,t){var n=null,i=this.getFirstChild();function r(i){if(e(i)&&(n=i),n||i===t)return!1}return e="string"===typeof e?function(e){var t=new RegExp("^"+e,"i");return function(e){return t.test(e.title)}}(e):e,t=t||i,this.visitRows(r,{start:t,includeSelf:!1}),n||t===i||this.visitRows(r,{start:i,includeSelf:!0}),n},findRelatedNode:function(t,n,i){var r=null,o=e.ui.keyCode;switch(n){case"parent":case o.BACKSPACE:t.parent&&t.parent.parent&&(r=t.parent);break;case"first":case o.HOME:this.visit((function(e){if(e.isVisible())return r=e,!1}));break;case"last":case o.END:this.visit((function(e){e.isVisible()&&(r=e)}));break;case"left":case o.LEFT:t.expanded?t.setExpanded(!1):t.parent&&t.parent.parent&&(r=t.parent);break;case"right":case o.RIGHT:t.expanded||!t.children&&!t.lazy?t.children&&t.children.length&&(r=t.children[0]):(t.setExpanded(),r=t);break;case"up":case o.UP:this.visitRows((function(e){return r=e,!1}),{start:t,reverse:!0,includeSelf:!1});break;case"down":case o.DOWN:this.visitRows((function(e){return r=e,!1}),{start:t,includeSelf:!1});break;default:this.tree.warn("Unknown relation '"+n+"'.")}return r},generateFormElements:function(t,n,i){i=i||{};var r,o="string"===typeof t?t:"ft_"+this._id+"[]",s="string"===typeof n?n:"ft_"+this._id+"_active",a="fancytree_result_"+this._id,l=e("#"+a),u=3===this.options.selectMode&&!1!==i.stopOnParents;function d(t){l.append(e("",{type:"checkbox",name:o,value:t.key,checked:!0}))}l.length?l.empty():l=e("
",{id:a}).hide().insertAfter(this.$container),!1!==n&&this.activeNode&&l.append(e("",{type:"radio",name:s,value:this.activeNode.key,checked:!0})),i.filter?this.visit((function(e){var t=i.filter(e);if("skip"===t)return t;!1!==t&&d(e)})):!1!==t&&(r=this.getSelectedNodes(u),e.each(r,(function(e,t){d(t)})))},getActiveNode:function(){return this.activeNode},getFirstChild:function(){return this.rootNode.getFirstChild()},getFocusNode:function(){return this.focusNode},getOption:function(e){return this.widget.option(e)},getNodeByKey:function(e,t){var n,i;return!t&&(n=document.getElementById(this.options.idPrefix+e))?n.ftnode?n.ftnode:null:(t=t||this.rootNode,i=null,t.visit((function(t){if(t.key===e)return i=t,!1}),!0),i)},getRootNode:function(){return this.rootNode},getSelectedNodes:function(e){return this.rootNode.getSelectedNodes(e)},hasFocus:function(){return!!this._hasFocus},info:function(e){this.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},isLoading:function(){var e=!1;return this.rootNode.visit((function(t){if(t._isLoading||t._requestId)return e=!0,!1}),!0),e},loadKeyPath:function(t,n){var i,r,o,s=this,a=new e.Deferred,l=this.getRootNode(),u=this.options.keyPathSeparator,d=[],c=e.extend({},n);for("function"===typeof n?i=n:n&&n.callback&&(i=n.callback),c.callback=function(e,t,n){i&&i.call(e,t,n),a.notifyWith(e,[{node:t,status:n}])},null==c.matchKey&&(c.matchKey=function(e,t){return e.key===t}),e.isArray(t)||(t=[t]),r=0;r=4&&window.console.time(this+" - "+e)},debugTimeEnd:function(e){this.options.debugLevel>=4&&window.console.timeEnd(this+" - "+e)},toDict:function(e,t){var n=this.rootNode.toDict(!0,t);return e?n:n.children},toString:function(){return"Fancytree@"+this._id},_triggerNodeEvent:function(e,t,n,i){var r=this._makeHookContext(t,n,i),o=this.widget._trigger(e,n,r);return!1!==o&&void 0!==r.result?r.result:o},_triggerTreeEvent:function(e,t,n){var i=this._makeHookContext(this,t,n),r=this.widget._trigger(e,t,i);return!1!==r&&void 0!==i.result?i.result:r},visit:function(e){return this.rootNode.visit(e,!1)},visitRows:function(e,t){if(!this.rootNode.hasChildren())return!1;if(t&&t.reverse)return delete t.reverse,this._visitRowsUp(e,t);var n,i,r,o=0,s=!1===(t=t||{}).includeSelf,a=!!t.includeHidden,l=!a&&this.enableFilter,u=t.start||this.rootNode.children[0];for(i=u.parent;i;){for(n=(r=i.children).indexOf(u)+o;n=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},e.extend(P.prototype,{nodeClick:function(e){var t,n,i=e.targetType,r=e.node;if("expander"===i){if(r.isLoading())return void r.debug("Got 2nd click while loading: ignored");this._callHook("nodeToggleExpanded",e)}else if("checkbox"===i)this._callHook("nodeToggleSelected",e),e.options.focusOnSelect&&this._callHook("nodeSetFocus",e,!0);else{if(n=!1,t=!0,r.folder)switch(e.options.clickFolderMode){case 2:n=!0,t=!1;break;case 3:t=!0,n=!0}t&&(this.nodeSetFocus(e),this._callHook("nodeSetActive",e,!0)),n&&this._callHook("nodeToggleExpanded",e)}},nodeCollapseSiblings:function(e,t){var n,i,r,o=e.node;if(o.parent)for(i=0,r=(n=o.parent.children).length;i500&&(l.lastQuicksearchTerm=""),l.lastQuicksearchTime=r,l.lastQuicksearchTerm+=f,(n=l.findNextNode(l.lastQuicksearchTerm,l.getActiveNode()))&&n.setActive(),void s.preventDefault();switch(i.eventToString(s)){case"+":case"=":l.nodeSetExpanded(t,!0);break;case"-":l.nodeSetExpanded(t,!1);break;case"space":a.isPagingNode()?l._triggerNodeEvent("clickPaging",t,s):i.evalOption("checkbox",a,a,c,!1)?l.nodeToggleSelected(t):l.nodeSetActive(t,!0);break;case"return":l.nodeSetActive(t,!0);break;case"home":case"end":case"backspace":case"left":case"right":case"up":case"down":a.navigate(s.which,y);break;default:m=!1}m&&s.preventDefault()},nodeLoadChildren:function(t,n){var i,r,o,s=null,a=!0,l=t.tree,u=t.node,d=u.parent,c="nodeLoadChildren",h=Date.now();return e.isFunction(n)&&(n=n.call(l,{type:"source"},t),b(!e.isFunction(n),"source callback must not return another function")),e.isFunction(n.then)?s=n:n.url?(i=e.extend({},t.options.ajax,n)).debugDelay?(r=i.debugDelay,delete i.debugDelay,e.isArray(r)&&(r=r[0]+Math.random()*(r[1]-r[0])),u.warn("nodeLoadChildren waiting debugDelay "+Math.round(r)+" ms ..."),s=e.Deferred((function(t){setTimeout((function(){e.ajax(i).done((function(){t.resolveWith(this,arguments)})).fail((function(){t.rejectWith(this,arguments)}))}),r)}))):s=e.ajax(i):e.isPlainObject(n)||e.isArray(n)?(s={then:function(e,t){e(n,null,null)}},a=!1):e.error("Invalid source type: "+n),u._requestId&&(u.warn("Recursive load request #"+h+" while #"+u._requestId+" is pending."),u._requestId=h),a&&(l.debugTime(c),l.nodeSetStatus(t,"loading")),o=new e.Deferred,s.then((function(i,r,s){var a,c;if("json"!==n.dataType&&"jsonp"!==n.dataType||"string"!==typeof i||e.error("Ajax request returned a string (did you get the JSON dataType wrong?)."),u._requestId&&u._requestId>h)o.rejectWith(this,["$recursive_request"]);else if(null!==u.parent||null===d){if(t.options.postProcess){try{c=l._triggerNodeEvent("postProcess",t,t.originalEvent,{response:i,error:null,dataType:n.dataType})}catch(f){c={error:f,message:""+f,details:"postProcess failed"}}if(c.error)return a=e.isPlainObject(c.error)?c.error:{message:c.error},a=l._makeHookContext(u,null,a),void o.rejectWith(this,[a]);(e.isArray(c)||e.isPlainObject(c)&&e.isArray(c.children))&&(i=c)}else i&&i.hasOwnProperty("d")&&t.options.enableAspx&&(42===t.options.enableAspx&&l.warn("The default for enableAspx will change to `false` in the fututure. Pass `enableAspx: true` or implement postProcess to silence this warning."),i="string"===typeof i.d?e.parseJSON(i.d):i.d);o.resolveWith(this,[i])}else o.rejectWith(this,["$request_target_invalid"])}),(function(e,t,n){var i=l._makeHookContext(u,null,{error:e,args:Array.prototype.slice.call(arguments),message:n,details:e.status+": "+n});o.rejectWith(this,[i])})),o.done((function(n){var i,r,o;l.nodeSetStatus(t,"ok"),e.isPlainObject(n)?(b(u.isRootNode(),"source may only be an object for root nodes (expecting an array of child objects otherwise)"),b(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),r=n,i=n.children,delete r.children,e.each(p,(function(e,t){void 0!==r[t]&&(l[t]=r[t],delete r[t])})),e.extend(l.data,r)):i=n,b(e.isArray(i),"expected array of children"),u._setChildren(i),l.options.nodata&&0===i.length&&(e.isFunction(l.options.nodata)?o=l.options.nodata.call(l,{type:"nodata"},t):!0===l.options.nodata&&u.isRootNode()?o=l.options.strings.noData:"string"===typeof l.options.nodata&&u.isRootNode()&&(o=l.options.nodata),o&&u.setStatus("nodata",o)),l._triggerNodeEvent("loadChildren",u)})).fail((function(e){var n;"$recursive_request"!==e?"$request_target_invalid"!==e?(e.node&&e.error&&e.message?n=e:"[object Object]"===(n=l._makeHookContext(u,null,{error:e,args:Array.prototype.slice.call(arguments),message:e?e.message||e.toString():""})).message&&(n.message=""),u.warn("Load children failed ("+n.message+")",n),!1!==l._triggerNodeEvent("loadError",n,null)&&l.nodeSetStatus(t,"error",n.message,n.details)):u.warn("Lazy parent node was removed while loading: discarding response."):u.warn("Ignored response for obsolete load request #"+h+" (expected #"+u._requestId+")")})).always((function(){u._requestId=null,a&&l.debugTimeEnd(c)})),o.promise()},nodeLoadKeyPath:function(e,t){},nodeRemoveChild:function(t,n){var i,r=t.node,o=e.extend({},t,{node:n}),s=r.children;if(1===s.length)return b(n===s[0],"invalid single child"),this.nodeRemoveChildren(t);this.activeNode&&(n===this.activeNode||this.activeNode.isDescendantOf(n))&&this.activeNode.setActive(!1),this.focusNode&&(n===this.focusNode||this.focusNode.isDescendantOf(n))&&(this.focusNode=null),this.nodeRemoveMarkup(o),this.nodeRemoveChildren(o),b((i=e.inArray(n,s))>=0,"invalid child"),r.triggerModifyChild("remove",n),n.visit((function(e){e.parent=null}),!0),this._callHook("treeRegisterNode",this,!1,n),s.splice(i,1)},nodeRemoveChildMarkup:function(t){var n=t.node;n.ul&&(n.isRootNode()?e(n.ul).empty():(e(n.ul).remove(),n.ul=null),n.visit((function(e){e.li=e.ul=null})))},nodeRemoveChildren:function(e){var t=e.tree,n=e.node;n.children&&(this.activeNode&&this.activeNode.isDescendantOf(n)&&this.activeNode.setActive(!1),this.focusNode&&this.focusNode.isDescendantOf(n)&&(this.focusNode=null),this.nodeRemoveChildMarkup(e),n.triggerModifyChild("remove",null),n.visit((function(e){e.parent=null,t._callHook("treeRegisterNode",t,!1,e)})),n.lazy?n.children=[]:n.children=null,n.isRootNode()||(n.expanded=!1),this.nodeRenderStatus(e))},nodeRemoveMarkup:function(t){var n=t.node;n.li&&(e(n.li).remove(),n.li=null),this.nodeRemoveChildMarkup(t)},nodeRender:function(t,n,i,r,o){var s,a,l,u,d,c,h,f=t.node,p=t.tree,v=t.options,g=v.aria,m=!1,y=f.parent,w=!y,_=f.children,k=null;if(!1!==p._enableUpdate&&(w||y.ul)){if(b(w||y.ul,"parent UL must exist"),w||(f.li&&(n||f.li.parentNode!==f.parent.ul)&&(f.li.parentNode===f.parent.ul?k=f.li.nextSibling:this.debug("Unlinking "+f+" (must be child of "+f.parent+")"),this.nodeRemoveMarkup(t)),f.li?this.nodeRenderStatus(t):(m=!0,f.li=document.createElement("li"),f.li.ftnode=f,f.key&&v.generateIds&&(f.li.id=v.idPrefix+f.key),f.span=document.createElement("span"),f.span.className="fancytree-node",g&&!f.tr&&e(f.li).attr("role","treeitem"),f.li.appendChild(f.span),this.nodeRenderTitle(t),v.createNode&&v.createNode.call(p,{type:"createNode"},t)),v.renderNode&&v.renderNode.call(p,{type:"renderNode"},t)),_){if(w||f.expanded||!0===i){for(f.ul||(f.ul=document.createElement("ul"),(!0!==r||o)&&f.expanded||(f.ul.style.display="none"),g&&e(f.ul).attr("role","group"),f.li?f.li.appendChild(f.ul):f.tree.$div.append(f.ul)),u=0,d=_.length;u1&&m.push("")):m.push(""),(o=i.evalOption("checkbox",h,h,p,!1))&&!h.isStatusNode()&&(u=v?" role='checkbox'":"",s="fancytree-checkbox",("radio"===o||h.parent&&h.parent.radiogroup)&&(s+=" fancytree-radio"),m.push("")),void 0!==h.data.iconClass&&(h.icon?e.error("'iconClass' node option is deprecated since v2.14.0: use 'icon' only instead"):(h.warn("'iconClass' node option is deprecated since v2.14.0: use 'icon' instead"),h.icon=h.data.iconClass)),!1!==(a=i.evalOption("icon",h,h,p,!0))&&(u=v?" role='presentation'":"",c=(c=i.evalOption("iconTooltip",h,h,p,null))?" title='"+O(c)+"'":"","string"===typeof a?r.test(a)?(a="/"===a.charAt(0)?a:(p.imagePath||"")+a,m.push("")):m.push(""):a.text?m.push(""+i.escapeHtml(a.text)+""):a.html?m.push(""+a.html+""):m.push("")),l="",p.renderTitle&&(l=p.renderTitle.call(f,{type:"renderTitle"},t)||""),l||(!0===(d=i.evalOption("tooltip",h,h,p,null))&&(d=h.title),l=""+(p.escapeTitles?i.escapeHtml(h.title):h.title)+""),m.push(l),h.span.innerHTML=m.join(""),this.nodeRenderStatus(t),p.enhanceTitle&&(t.$title=e(">span.fancytree-title",h.span),l=p.enhanceTitle.call(f,{type:"enhanceTitle"},t)||""))},nodeRenderStatus:function(t){var n,r=t.node,o=t.tree,s=t.options,a=r.hasChildren(),l=r.isLastSibling(),u=s.aria,d=s._classNames,c=[],h=r[o.statusClassPropName];h&&!1!==o._enableUpdate&&(u&&(n=e(r.tr||r.li)),c.push(d.node),o.activeNode===r&&c.push(d.active),o.focusNode===r&&c.push(d.focused),r.expanded&&c.push(d.expanded),u&&(!1===a?n.removeAttr("aria-expanded"):n.attr("aria-expanded",Boolean(r.expanded))),r.folder&&c.push(d.folder),!1!==a&&c.push(d.hasChildren),l&&c.push(d.lastsib),r.lazy&&null==r.children&&c.push(d.lazy),r.partload&&c.push(d.partload),r.partsel&&c.push(d.partsel),i.evalOption("unselectable",r,r,s,!1)&&c.push(d.unselectable),r._isLoading&&c.push(d.loading),r._error&&c.push(d.error),r.statusNodeType&&c.push(d.statusNodePrefix+r.statusNodeType),r.selected?(c.push(d.selected),u&&n.attr("aria-selected",!0)):u&&n.attr("aria-selected",!1),r.extraClasses&&c.push(r.extraClasses),!1===a?c.push(d.combinedExpanderPrefix+"n"+(l?"l":"")):c.push(d.combinedExpanderPrefix+(r.expanded?"e":"c")+(r.lazy&&null==r.children?"d":"")+(l?"l":"")),c.push(d.combinedIconPrefix+(r.expanded?"e":"c")+(r.folder?"f":"")),h.className=c.join(" "),r.li&&e(r.li).toggleClass(d.lastsib,l))},nodeSetActive:function(t,n,i){i=i||{};var r,o=t.node,s=t.tree,a=t.options,l=!0===i.noEvents,u=!0===i.noFocus,d=!1!==i.scrollIntoView;return o===s.activeNode===(n=!1!==n)?S(o):n&&!l&&!1===this._triggerNodeEvent("beforeActivate",o,t.originalEvent)?E(o,["rejected"]):(n?(s.activeNode&&(b(s.activeNode!==o,"node was active (inconsistency)"),r=e.extend({},t,{node:s.activeNode}),s.nodeSetActive(r,!1),b(null===s.activeNode,"deactivate was out of sync?")),a.activeVisible&&o.makeVisible({scrollIntoView:d}),s.activeNode=o,s.nodeRenderStatus(t),u||s.nodeSetFocus(t),l||s._triggerNodeEvent("activate",o,t.originalEvent)):(b(s.activeNode===o,"node was not active (inconsistency)"),s.activeNode=null,this.nodeRenderStatus(t),l||t.tree._triggerNodeEvent("deactivate",o,t.originalEvent)),S(o))},nodeSetExpanded:function(t,n,i){i=i||{};var r,o,s,a,l,u,d=t.node,c=t.tree,h=t.options,f=!0===i.noAnimation,p=!0===i.noEvents;if(n=!1!==n,d.expanded&&n||!d.expanded&&!n)return S(d);if(n&&!d.lazy&&!d.hasChildren())return S(d);if(!n&&d.getLevel()=1||e(r.$container).focus(),s.autoScroll&&o.scrollIntoView(),this._callHook("nodeRenderStatus",t))},nodeSetSelected:function(e,t,n){n=n||{};var r=e.node,o=e.tree,s=e.options,a=!0===n.noEvents,l=r.parent;if(t=!1!==t,!i.evalOption("unselectable",r,r,s,!1)){if(r._lastSelectIntent=t,!!r.selected===t&&(3!==s.selectMode||!r.partsel||t))return t;if(!a&&!1===this._triggerNodeEvent("beforeSelect",r,e.originalEvent))return!!r.selected;t&&1===s.selectMode?(o.lastSelectedNode&&o.lastSelectedNode.setSelected(!1),r.selected=t):3!==s.selectMode||!l||l.radiogroup||r.radiogroup?l&&l.radiogroup?r.visitSiblings((function(e){e._changeSelectStatusAttrs(t&&e===r)}),!0):r.selected=t:(r.selected=t,r.fixSelection3AfterClick(n)),this.nodeRenderStatus(e),o.lastSelectedNode=t?r:null,a||o._triggerNodeEvent("select",e)}},nodeSetStatus:function(t,n,i,r){var o=t.node,s=t.tree;function a(n,i){var r=o.children?o.children[0]:null;return r&&r.isStatusNode()?(e.extend(r,n),r.statusNodeType=i,s._callHook("nodeRenderTitle",r)):(o._setChildren([n]),s._callHook("treeStructureChanged",t,"setStatusNode"),o.children[0].statusNodeType=i,s.render()),o.children[0]}switch(n){case"ok":!function(){var e=o.children?o.children[0]:null;if(e&&e.isStatusNode()){try{o.ul&&(o.ul.removeChild(e.li),e.li=null)}catch(n){}1===o.children.length?o.children=[]:o.children.shift(),s._callHook("treeStructureChanged",t,"clearStatusNode")}}(),o._isLoading=!1,o._error=null,o.renderStatus();break;case"loading":o.parent||a({title:s.options.strings.loading+(i?" ("+i+")":""),checkbox:!1,tooltip:r},n),o._isLoading=!0,o._error=null,o.renderStatus();break;case"error":a({title:s.options.strings.loadError+(i?" ("+i+")":""),checkbox:!1,tooltip:r},n),o._isLoading=!1,o._error={message:i,details:r},o.renderStatus();break;case"nodata":a({title:i||s.options.strings.noData,checkbox:!1,tooltip:r},n),o._isLoading=!1,o._error=null,o.renderStatus();break;default:e.error("invalid node status "+n)}},nodeToggleExpanded:function(e){return this.nodeSetExpanded(e,!e.node.expanded)},nodeToggleSelected:function(e){var t=e.node,n=!t.selected;return t.partsel&&!t.selected&&!0===t._lastSelectIntent&&(n=!1,t.selected=!0),t._lastSelectIntent=n,this.nodeSetSelected(e,n)},treeClear:function(e){var t=e.tree;t.activeNode=null,t.focusNode=null,t.$div.find(">ul.fancytree-container").empty(),t.rootNode.children=null,t._callHook("treeStructureChanged",e,"clear")},treeCreate:function(e){},treeDestroy:function(e){this.$div.find(">ul.fancytree-container").remove(),this.$source&&this.$source.removeClass("fancytree-helper-hidden")},treeInit:function(t){var n=t.tree,i=n.options;n.$container.attr("tabindex",i.tabindex),e.each(p,(function(e,t){void 0!==i[t]&&(n.info("Move option "+t+" to tree"),n[t]=i[t],delete i[t])})),i.checkboxAutoHide&&n.$container.addClass("fancytree-checkbox-auto-hide"),i.rtl?n.$container.attr("DIR","RTL").addClass("fancytree-rtl"):n.$container.removeAttr("DIR").removeClass("fancytree-rtl"),i.aria&&(n.$container.attr("role","tree"),1!==i.selectMode&&n.$container.attr("aria-multiselectable",!0)),this.treeLoad(t)},treeLoad:function(t,n){var r,o,s,a=t.tree,l=t.widget.element,u=e.extend({},t,{node:this.rootNode});if(a.rootNode.children&&this.treeClear(t),n=n||this.options.source)"string"===typeof n&&e.error("Not implemented");else switch(o=l.data("type")||"html"){case"html":(s=l.find(">ul").not(".fancytree-container").first()).length?(s.addClass("ui-fancytree-source fancytree-helper-hidden"),n=e.ui.fancytree.parseHtml(s),this.data=e.extend(this.data,T(s))):(i.warn("No `source` option was passed and container does not contain `
`: assuming `source: []`."),n=[]);break;case"json":n=e.parseJSON(l.text()),l.contents().filter((function(){return 3===this.nodeType})).remove(),e.isPlainObject(n)&&(b(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),r=n,n=n.children,delete r.children,e.each(p,(function(e,t){void 0!==r[t]&&(a[t]=r[t],delete r[t])})),e.extend(a.data,r));break;default:e.error("Invalid data-type: "+o)}return a._triggerTreeEvent("preInit",null),this.nodeLoadChildren(u,n).done((function(){a._callHook("treeStructureChanged",t,"loadChildren"),a.render(),3===t.options.selectMode&&a.rootNode.fixSelection3FromEndNodes(),a.activeNode&&a.options.activeVisible&&a.activeNode.makeVisible(),a._triggerTreeEvent("init",null,{status:!0})})).fail((function(){a.render(),a._triggerTreeEvent("init",null,{status:!1})}))},treeRegisterNode:function(e,t,n){e.tree._callHook("treeStructureChanged",e,t?"addNode":"removeNode")},treeSetFocus:function(t,n,i){var r;(n=!1!==n)!==this.hasFocus()&&(this._hasFocus=n,!n&&this.focusNode?this.focusNode.setFocus(!1):!n||i&&i.calledByNode||e(this.$container).focus(),this.$container.toggleClass("fancytree-treefocus",n),this._triggerTreeEvent(n?"focusTree":"blurTree"),n&&!this.activeNode&&(r=this._lastMousedownNode||this.getFirstChild())&&r.setFocus())},treeSetOption:function(t,n,i){var r=t.tree,o=!0,s=!1,a=!1;switch(n){case"aria":case"checkbox":case"icon":case"minExpandLevel":case"tabindex":s=!0,a=!0;break;case"checkboxAutoHide":r.$container.toggleClass("fancytree-checkbox-auto-hide",!!i);break;case"escapeTitles":case"tooltip":a=!0;break;case"rtl":!1===i?r.$container.removeAttr("DIR").removeClass("fancytree-rtl"):r.$container.attr("DIR","RTL").addClass("fancytree-rtl"),a=!0;break;case"source":o=!1,r._callHook("treeLoad",r,i),a=!0}r.debug("set option "+n+"="+i+" <"+typeof i+">"),o&&(this.widget._super?this.widget._super.call(this.widget,n,i):e.Widget.prototype._setOption.call(this.widget,n,i)),s&&r._callHook("treeCreate",r),a&&r.render(!0,!1)},treeStructureChanged:function(e,t){}}),e.widget("ui.fancytree",{options:{activeVisible:!0,ajax:{type:"GET",cache:!1,dataType:"json"},aria:!0,autoActivate:!0,autoCollapse:!1,autoScroll:!1,checkbox:!1,clickFolderMode:4,debugLevel:null,disabled:!1,enableAspx:42,escapeTitles:!1,extensions:[],toggleEffect:{effect:"slideToggle",duration:200},generateIds:!1,icon:!0,idPrefix:"ft_",focusOnSelect:!1,keyboard:!0,keyPathSeparator:"/",minExpandLevel:1,nodata:!0,quicksearch:!1,rtl:!1,scrollOfs:{top:0,bottom:0},scrollParent:null,selectMode:2,strings:{loading:"Loading...",loadError:"Load error!",moreData:"More...",noData:"No data."},tabindex:"0",titlesTabbable:!1,tooltip:!1,treeId:null,_classNames:{node:"fancytree-node",folder:"fancytree-folder",animating:"fancytree-animating",combinedExpanderPrefix:"fancytree-exp-",combinedIconPrefix:"fancytree-ico-",hasChildren:"fancytree-has-children",active:"fancytree-active",selected:"fancytree-selected",expanded:"fancytree-expanded",lazy:"fancytree-lazy",focused:"fancytree-focused",partload:"fancytree-partload",partsel:"fancytree-partsel",radio:"fancytree-radio",unselectable:"fancytree-unselectable",lastsib:"fancytree-lastsib",loading:"fancytree-loading",error:"fancytree-error",statusNodePrefix:"fancytree-statusnode-"},lazyLoad:null,postProcess:null},_deprecationWarning:function(e){var t=this.tree;t&&t.options.debugLevel>=3&&t.warn("$().fancytree('"+e+"') is deprecated (see https://wwwendt.de/tech/fancytree/doc/jsdoc/Fancytree_Widget.html")},_create:function(){this.tree=new P(this),this.$source=this.source||"json"===this.element.data("type")?this.element:this.element.find(">ul").first();var t,n,i,r=this.options,o=r.extensions;this.tree;for(i=0;i element.");else{if(o){if(r._getExpiringValue("focusin"))return void r.debug("Ignored double focusin.");r._setExpiringValue("focusin",!0,50),n||(n=r._getExpiringValue("mouseDownNode"))&&r.debug("Reconstruct mouse target for focusin from recent event.")}n?r._callHook("nodeSetFocus",r._makeHookContext(n,t),o):r.tbody&&e(t.target).parents("table.fancytree-container > thead").length?r.debug("Ignore focus event outside table body.",t):r._callHook("treeSetFocus",r,o)}})).on("selectstart"+o,"span.fancytree-title",(function(e){e.preventDefault()})).on("keydown"+o,(function(e){if(n.disabled||!1===n.keyboard)return!0;var t,i=r.focusNode,o=r._makeHookContext(i||r,e),s=r.phase;try{return r.phase="userEvent","preventNav"===(t=i?r._triggerNodeEvent("keydown",i,e):r._triggerTreeEvent("keydown",e))?t=!0:!1!==t&&(t=r._callHook("nodeKeydown",o)),t}finally{r.phase=s}})).on("mousedown"+o,(function(e){var t=i.getEventTarget(e);r._lastMousedownNode=t?t.node:null,r._setExpiringValue("mouseDownNode",r._lastMousedownNode)})).on("click"+o+" dblclick"+o,(function(e){if(n.disabled)return!0;var r,o=i.getEventTarget(e),s=o.node,a=t.tree,l=a.phase;if(!s)return!0;r=a._makeHookContext(s,e);try{switch(a.phase="userEvent",e.type){case"click":return r.targetType=o.type,s.isPagingNode()?!0===a._triggerNodeEvent("clickPaging",r,e):!1!==a._triggerNodeEvent("click",r,e)&&a._callHook("nodeClick",r);case"dblclick":return r.targetType=o.type,!1!==a._triggerNodeEvent("dblclick",r,e)&&a._callHook("nodeDblclick",r)}}finally{a.phase=l}}))},getActiveNode:function(){return this._deprecationWarning("getActiveNode"),this.tree.activeNode},getNodeByKey:function(e){return this._deprecationWarning("getNodeByKey"),this.tree.getNodeByKey(e)},getRootNode:function(){return this._deprecationWarning("getRootNode"),this.tree.rootNode},getTree:function(){return this._deprecationWarning("getTree"),this.tree}}),i=e.ui.fancytree,e.extend(e.ui.fancytree,{version:"2.35.0",buildType:"production",debugLevel:3,_nextId:1,_nextNodeKey:1,_extensions:{},_FancytreeClass:P,_FancytreeNodeClass:M,jquerySupports:{positionMyOfs:function(t,n,i,r){var o,s,a,l=e.map(e.trim(t).split("."),(function(e){return parseInt(e,10)})),u=e.map(Array.prototype.slice.call(arguments,1),(function(e){return parseInt(e,10)}));for(o=0;oa;return!0}(e.ui.version,1,9)},assert:function(e,t){return b(e,t)},createTree:function(t,n){var r=e(t).fancytree(n);return i.getTree(r)},debounce:function(e,t,n,i){var r;return 3===arguments.length&&"boolean"!==typeof n&&(i=n,n=!1),function(){var o=arguments;i=i||this,n&&!r&&t.apply(i,o),clearTimeout(r),r=setTimeout((function(){n||t.apply(i,o),r=null}),e)}},debug:function(t){e.ui.fancytree.debugLevel>=4&&w("log",arguments)},error:function(t){e.ui.fancytree.debugLevel>=1&&w("error",arguments)},escapeHtml:function(e){return(""+e).replace(o,(function(e){return a[e]}))},fixPositionOptions:function(t){if((t.offset||(""+t.my+t.at).indexOf("%")>=0)&&e.error("expected new position syntax (but '%' is not supported)"),!e.ui.fancytree.jquerySupports.positionMyOfs){var n=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.my),i=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.at),r=(n[2]?+n[2]:0)+(i[2]?+i[2]:0),o=(n[4]?+n[4]:0)+(i[4]?+i[4]:0);t=e.extend({},t,{my:n[1]+" "+n[3],at:i[1]+" "+i[3]}),(r||o)&&(t.offset=r+" "+o)}return t},getEventTarget:function(t){var n,r=t&&t.target?t.target.className:"",o={node:this.getNode(t.target),type:void 0};return/\bfancytree-title\b/.test(r)?o.type="title":/\bfancytree-expander\b/.test(r)?o.type=!1===o.node.hasChildren()?"prefix":"expander":/\bfancytree-checkbox\b/.test(r)?o.type="checkbox":/\bfancytree(-custom)?-icon\b/.test(r)?o.type="icon":/\bfancytree-node\b/.test(r)?o.type="title":t&&t.target&&((n=e(t.target)).is("ul[role=group]")?((o.node&&o.node.tree||i).debug("Ignoring click on outer UL."),o.node=null):n.closest(".fancytree-title").length?o.type="title":n.closest(".fancytree-checkbox").length?o.type="checkbox":n.closest(".fancytree-expander").length&&(o.type="expander")),o},getEventTargetType:function(e){return this.getEventTarget(e).type},getNode:function(t){if(t instanceof M)return t;for(t instanceof e?t=t[0]:void 0!==t.originalEvent&&(t=t.target);t;){if(t.ftnode)return t.ftnode;t=t.parentNode}return null},getTree:function(t){var n,i=t;return t instanceof P?t:(void 0===t&&(t=0),"number"===typeof t?t=e(".fancytree-container").eq(t):"string"===typeof t?(t=e("#ft-id-"+i).eq(0)).length||(t=e(i).eq(0)):t instanceof Element||t instanceof HTMLDocument?t=e(t):t instanceof e?t=t.eq(0):void 0!==t.originalEvent&&(t=e(t.target)),(n=(t=t.closest(":ui-fancytree")).data("ui-fancytree")||t.data("fancytree"))?n.tree:null)},evalOption:function(t,n,i,r,o){var s,a,l=n.tree,u=r[t],d=i[t];return e.isFunction(u)?(s={node:n,tree:l,widget:l.widget,options:l.widget.options,typeInfo:l.types[n.type]||{}},null==(a=u.call(l,{type:t},s))&&(a=d)):a=null==d?u:d,null==a&&(a=o),a},setSpanIcon:function(t,n,i){var r=e(t);"string"===typeof i?r.attr("class",n+" "+i):(i.text?r.text(""+i.text):i.html&&(t.innerHTML=i.html),r.attr("class",n+" "+(i.addClass||"")))},eventToString:function(e){var t=e.which,n=e.type,i=[];return e.altKey&&i.push("alt"),e.ctrlKey&&i.push("ctrl"),e.metaKey&&i.push("meta"),e.shiftKey&&i.push("shift"),"click"===n||"dblclick"===n?i.push(c[e.button]+n):"wheel"===n?i.push(n):l[t]||i.push(u[t]||String.fromCharCode(t).toLowerCase()),i.join("+")},info:function(t){e.ui.fancytree.debugLevel>=3&&w("info",arguments)},keyEventToString:function(e){return this.warn("keyEventToString() is deprecated: use eventToString()"),this.eventToString(e)},overrideMethod:function(t,n,i,r){var o,s=t[n]||e.noop;t[n]=function(){var e=r||this;try{return o=e._super,e._super=s,i.apply(e,arguments)}finally{e._super=o}}},parseHtml:function(t){var n,i,r,o,s,a,l,u,d=t.find(">li"),c=[];return d.each((function(){var d,p,g=e(this),y=g.find(">span",this).first(),b=y.length?null:g.find(">a").first(),w={tooltip:null,data:{}};for(y.length?w.title=y.html():b&&b.length?(w.title=b.html(),w.data.href=b.attr("href"),w.data.target=b.attr("target"),w.tooltip=b.attr("title")):(w.title=g.html(),(s=w.title.search(/
-1)r&&r.push(o);else if(u=se(o),s=me(c.appendChild(o),"script"),u&&ye(s),n)for(d=0;o=s[d++];)ve.test(o.type||"")&&n.push(o);return c}var _e=/^key/,ke=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,xe=/^([^.]*)(?:\.(.+)|)/;function Se(){return!0}function Ee(){return!1}function Ce(e,t){return e===function(){try{return b.activeElement}catch(e){}}()===("focus"===t)}function Te(e,t,n,i,r,o){var s,a;if("object"===typeof t){for(a in"string"!==typeof n&&(i=i||n,n=void 0),t)Te(e,a,n,i,t[a],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"===typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),!1===r)r=Ee;else if(!r)return e;return 1===o&&(s=r,(r=function(e){return x().off(e),s.apply(this,arguments)}).guid=s.guid||(s.guid=x.guid++)),e.each((function(){x.event.add(this,t,r,i,n)}))}function Oe(e,t,n){n?(Q.set(e,t,!1),x.event.add(e,t,{namespace:!1,handler:function(e){var i,r,o=Q.get(this,t);if(1&e.isTrigger&&this[t]){if(o.length)(x.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=a.call(arguments),Q.set(this,t,o),i=n(this,t),this[t](),o!==(r=Q.get(this,t))||i?Q.set(this,t,!1):r={},o!==r)return e.stopImmediatePropagation(),e.preventDefault(),r.value}else o.length&&(Q.set(this,t,{value:x.event.trigger(x.extend(o[0],x.Event.prototype),o.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,t)&&x.event.add(e,t,Se)}x.event={global:{},add:function(e,t,n,i,r){var o,s,a,l,u,d,c,h,f,p,v,g=Q.get(e);if(K(e))for(n.handler&&(n=(o=n).handler,r=o.selector),r&&x.find.matchesSelector(oe,r),n.guid||(n.guid=x.guid++),(l=g.events)||(l=g.events=Object.create(null)),(s=g.handle)||(s=g.handle=function(t){return x.event.triggered!==t.type?x.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(L)||[""]).length;u--;)f=v=(a=xe.exec(t[u])||[])[1],p=(a[2]||"").split(".").sort(),f&&(c=x.event.special[f]||{},f=(r?c.delegateType:c.bindType)||f,c=x.event.special[f]||{},d=x.extend({type:f,origType:v,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&x.expr.match.needsContext.test(r),namespace:p.join(".")},o),(h=l[f])||((h=l[f]=[]).delegateCount=0,c.setup&&!1!==c.setup.call(e,i,p,s)||e.addEventListener&&e.addEventListener(f,s)),c.add&&(c.add.call(e,d),d.handler.guid||(d.handler.guid=n.guid)),r?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[f]=!0)},remove:function(e,t,n,i,r){var o,s,a,l,u,d,c,h,f,p,v,g=Q.hasData(e)&&Q.get(e);if(g&&(l=g.events)){for(u=(t=(t||"").match(L)||[""]).length;u--;)if(f=v=(a=xe.exec(t[u])||[])[1],p=(a[2]||"").split(".").sort(),f){for(c=x.event.special[f]||{},h=l[f=(i?c.delegateType:c.bindType)||f]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=h.length;o--;)d=h[o],!r&&v!==d.origType||n&&n.guid!==d.guid||a&&!a.test(d.namespace)||i&&i!==d.selector&&("**"!==i||!d.selector)||(h.splice(o,1),d.selector&&h.delegateCount--,c.remove&&c.remove.call(e,d));s&&!h.length&&(c.teardown&&!1!==c.teardown.call(e,p,g.handle)||x.removeEvent(e,f,g.handle),delete l[f])}else for(f in l)x.event.remove(e,f+t[u],n,i,!0);x.isEmptyObject(l)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,i,r,o,s,a=new Array(arguments.length),l=x.event.fix(e),u=(Q.get(this,"events")||Object.create(null))[l.type]||[],d=x.event.special[l.type]||{};for(a[0]=l,t=1;t=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(o=[],s={},n=0;n-1:x.find(r,this,null,[u]).length),s[r]&&o.push(i);o.length&&a.push({elem:u,handlers:o})}return u=this,l\s*$/g;function Ne(e,t){return D(e,"table")&&D(11!==t.nodeType?t:t.firstChild,"tr")&&x(e).children("tbody")[0]||e}function Fe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Ae(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ie(e,t){var n,i,r,o,s,a;if(1===t.nodeType){if(Q.hasData(e)&&(a=Q.get(e).events))for(r in Q.remove(t,"handle events"),a)for(n=0,i=a[r].length;n1&&"string"===typeof p&&!g.checkClone&&Me.test(p))return e.each((function(r){var o=e.eq(r);v&&(t[0]=p.call(this,r,o.html())),Le(o,t,n,i)}));if(h&&(o=(r=we(t,e[0].ownerDocument,!1,e,i)).firstChild,1===r.childNodes.length&&(r=o),o||i)){for(a=(s=x.map(me(r,"script"),Fe)).length;c0&&ye(s,!l&&me(e,"script")),a},cleanData:function(e){for(var t,n,i,r=x.event.special,o=0;void 0!==(n=e[o]);o++)if(K(n)){if(t=n[Q.expando]){if(t.events)for(i in t.events)r[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);n[Q.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),x.fn.extend({detach:function(e){return je(this,e,!0)},remove:function(e){return je(this,e)},text:function(e){return U(this,(function(e){return void 0===e?x.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Le(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ne(this,e).appendChild(e)}))},prepend:function(){return Le(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ne(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Le(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Le(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(me(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return x.clone(this,e,t)}))},html:function(e){return U(this,(function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"===typeof e&&!De.test(e)&&!ge[(pe.exec(e)||["",""])[1].toLowerCase()]){e=x.htmlPrefilter(e);try{for(;n3,oe.removeChild(e)),a}}))}();var Ve=["Webkit","Moz","ms"],qe=b.createElement("div").style,Ge={};function $e(e){var t=x.cssProps[e]||Ge[e];return t||(e in qe?e:Ge[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Ve.length;n--;)if((e=Ve[n]+t)in qe)return e}(e)||e)}var Ke=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Qe={position:"absolute",visibility:"hidden",display:"block"},Ze={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var i=ie.exec(t);return i?Math.max(0,i[2]-(n||0))+(i[3]||"px"):t}function et(e,t,n,i,r,o){var s="width"===t?1:0,a=0,l=0;if(n===(i?"border":"content"))return 0;for(;s<4;s+=2)"margin"===n&&(l+=x.css(e,n+re[s],!0,r)),i?("content"===n&&(l-=x.css(e,"padding"+re[s],!0,r)),"margin"!==n&&(l-=x.css(e,"border"+re[s]+"Width",!0,r))):(l+=x.css(e,"padding"+re[s],!0,r),"padding"!==n?l+=x.css(e,"border"+re[s]+"Width",!0,r):a+=x.css(e,"border"+re[s]+"Width",!0,r));return!i&&o>=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-l-a-.5))||0),l}function tt(e,t,n){var i=He(e),r=(!g.boxSizingReliable()||n)&&"border-box"===x.css(e,"boxSizing",!1,i),o=r,s=We(e,t,i),a="offset"+t[0].toUpperCase()+t.slice(1);if(ze.test(s)){if(!n)return s;s="auto"}return(!g.boxSizingReliable()&&r||!g.reliableTrDimensions()&&D(e,"tr")||"auto"===s||!parseFloat(s)&&"inline"===x.css(e,"display",!1,i))&&e.getClientRects().length&&(r="border-box"===x.css(e,"boxSizing",!1,i),(o=a in e)&&(s=e[a])),(s=parseFloat(s)||0)+et(e,t,n||(r?"border":"content"),o,i,s)+"px"}function nt(e,t,n,i,r){return new nt.prototype.init(e,t,n,i,r)}x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,o,s,a=$(t),l=Xe.test(t),u=e.style;if(l||(t=$e(a)),s=x.cssHooks[t]||x.cssHooks[a],void 0===n)return s&&"get"in s&&void 0!==(r=s.get(e,!1,i))?r:u[t];"string"===(o=typeof n)&&(r=ie.exec(n))&&r[1]&&(n=ue(e,t,r),o="number"),null!=n&&n===n&&("number"!==o||l||(n+=r&&r[3]||(x.cssNumber[a]?"":"px")),g.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&void 0===(n=s.set(e,n,i))||(l?u.setProperty(t,n):u[t]=n))}},css:function(e,t,n,i){var r,o,s,a=$(t);return Xe.test(t)||(t=$e(a)),(s=x.cssHooks[t]||x.cssHooks[a])&&"get"in s&&(r=s.get(e,!0,n)),void 0===r&&(r=We(e,t,i)),"normal"===r&&t in Ze&&(r=Ze[t]),""===n||n?(o=parseFloat(r),!0===n||isFinite(o)?o||0:r):r}}),x.each(["height","width"],(function(e,t){x.cssHooks[t]={get:function(e,n,i){if(n)return!Ke.test(x.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,t,i):Be(e,Qe,(function(){return tt(e,t,i)}))},set:function(e,n,i){var r,o=He(e),s=!g.scrollboxSize()&&"absolute"===o.position,a=(s||i)&&"border-box"===x.css(e,"boxSizing",!1,o),l=i?et(e,t,i,a,o):0;return a&&s&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-et(e,t,"border",!1,o)-.5)),l&&(r=ie.exec(n))&&"px"!==(r[3]||"px")&&(e.style[t]=n,n=x.css(e,t)),Je(0,n,l)}}})),x.cssHooks.marginLeft=Ue(g.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Be(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),x.each({margin:"",padding:"",border:"Width"},(function(e,t){x.cssHooks[e+t]={expand:function(n){for(var i=0,r={},o="string"===typeof n?n.split(" "):[n];i<4;i++)r[e+re[i]+t]=o[i]||o[i-2]||o[0];return r}},"margin"!==e&&(x.cssHooks[e+t].set=Je)})),x.fn.extend({css:function(e,t){return U(this,(function(e,t,n){var i,r,o={},s=0;if(Array.isArray(t)){for(i=He(e),r=t.length;s1)}}),x.Tween=nt,nt.prototype={constructor:nt,init:function(e,t,n,i,r,o){this.elem=e,this.prop=n,this.easing=r||x.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}},nt.prototype.init.prototype=nt.prototype,nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=x.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):1!==e.elem.nodeType||!x.cssHooks[e.prop]&&null==e.elem.style[$e(e.prop)]?e.elem[e.prop]=e.now:x.style(e.elem,e.prop,e.now+e.unit)}}},nt.propHooks.scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},(x.fx=nt.prototype.init).step={};var it,rt,ot=/^(?:toggle|show|hide)$/,st=/queueHooks$/;function at(){rt&&(!1===b.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(at):n.setTimeout(at,x.fx.interval),x.fx.tick())}function lt(){return n.setTimeout((function(){it=void 0})),it=Date.now()}function ut(e,t){var n,i=0,r={height:e};for(t=t?1:0;i<4;i+=2-t)r["margin"+(n=re[i])]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function dt(e,t,n){for(var i,r=(ct.tweeners[t]||[]).concat(ct.tweeners["*"]),o=0,s=r.length;o1)},removeAttr:function(e){return this.each((function(){x.removeAttr(this,e)}))}}),x.extend({attr:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"===typeof e.getAttribute?x.prop(e,t,n):(1===o&&x.isXMLDoc(e)||(r=x.attrHooks[t.toLowerCase()]||(x.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void x.removeAttr(e,t):r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(i=r.get(e,t))?i:null==(i=x.find.attr(e,t))?void 0:i)},attrHooks:{type:{set:function(e,t){if(!g.radioValue&&"radio"===t&&D(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i=0,r=t&&t.match(L);if(r&&1===e.nodeType)for(;n=r[i++];)e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=ft[t]||x.find.attr;ft[t]=function(e,t,i){var r,o,s=t.toLowerCase();return i||(o=ft[s],ft[s]=r,r=null!=n(e,t,i)?s:null,ft[s]=o),r}}));var pt=/^(?:input|select|textarea|button)$/i,vt=/^(?:a|area)$/i;function gt(e){return(e.match(L)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function yt(e){return Array.isArray(e)?e:"string"===typeof e&&e.match(L)||[]}x.fn.extend({prop:function(e,t){return U(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[x.propFix[e]||e]}))}}),x.extend({prop:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&x.isXMLDoc(e)||(t=x.propFix[t]||t,r=x.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:e[t]=n:r&&"get"in r&&null!==(i=r.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||vt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){x.propFix[this.toLowerCase()]=this})),x.fn.extend({addClass:function(e){var t,n,i,r,o,s,a,l=0;if(m(e))return this.each((function(t){x(this).addClass(e.call(this,t,mt(this)))}));if((t=yt(e)).length)for(;n=this[l++];)if(r=mt(n),i=1===n.nodeType&&" "+gt(r)+" "){for(s=0;o=t[s++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");r!==(a=gt(i))&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,i,r,o,s,a,l=0;if(m(e))return this.each((function(t){x(this).removeClass(e.call(this,t,mt(this)))}));if(!arguments.length)return this.attr("class","");if((t=yt(e)).length)for(;n=this[l++];)if(r=mt(n),i=1===n.nodeType&&" "+gt(r)+" "){for(s=0;o=t[s++];)for(;i.indexOf(" "+o+" ")>-1;)i=i.replace(" "+o+" "," ");r!==(a=gt(i))&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e,i="string"===n||Array.isArray(e);return"boolean"===typeof t&&i?t?this.addClass(e):this.removeClass(e):m(e)?this.each((function(n){x(this).toggleClass(e.call(this,n,mt(this),t),t)})):this.each((function(){var t,r,o,s;if(i)for(r=0,o=x(this),s=yt(e);t=s[r++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||((t=mt(this))&&Q.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":Q.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,i=0;for(t=" "+e+" ";n=this[i++];)if(1===n.nodeType&&(" "+gt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;x.fn.extend({val:function(e){var t,n,i,r=this[0];return arguments.length?(i=m(e),this.each((function(n){var r;1===this.nodeType&&(null==(r=i?e.call(this,n,x(this).val()):e)?r="":"number"===typeof r?r+="":Array.isArray(r)&&(r=x.map(r,(function(e){return null==e?"":e+""}))),(t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))}))):r?(t=x.valHooks[r.type]||x.valHooks[r.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:"string"===typeof(n=r.value)?n.replace(bt,""):null==n?"":n:void 0}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:gt(x.text(e))}},select:{get:function(e){var t,n,i,r=e.options,o=e.selectedIndex,s="select-one"===e.type,a=s?null:[],l=s?o+1:r.length;for(i=o<0?l:s?o:0;i-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),x.each(["radio","checkbox"],(function(){x.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=x.inArray(x(e).val(),t)>-1}},g.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),g.focusin="onfocusin"in n;var wt=/^(?:focusinfocus|focusoutblur)$/,_t=function(e){e.stopPropagation()};x.extend(x.event,{trigger:function(e,t,i,r){var o,s,a,l,u,d,c,h,p=[i||b],v=f.call(e,"type")?e.type:e,g=f.call(e,"namespace")?e.namespace.split("."):[];if(s=h=a=i=i||b,3!==i.nodeType&&8!==i.nodeType&&!wt.test(v+x.event.triggered)&&(v.indexOf(".")>-1&&(g=v.split("."),v=g.shift(),g.sort()),u=v.indexOf(":")<0&&"on"+v,(e=e[x.expando]?e:new x.Event(v,"object"===typeof e&&e)).isTrigger=r?2:3,e.namespace=g.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),t=null==t?[e]:x.makeArray(t,[e]),c=x.event.special[v]||{},r||!c.trigger||!1!==c.trigger.apply(i,t))){if(!r&&!c.noBubble&&!y(i)){for(l=c.delegateType||v,wt.test(l+v)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(i.ownerDocument||b)&&p.push(a.defaultView||a.parentWindow||n)}for(o=0;(s=p[o++])&&!e.isPropagationStopped();)h=s,e.type=o>1?l:c.bindType||v,(d=(Q.get(s,"events")||Object.create(null))[e.type]&&Q.get(s,"handle"))&&d.apply(s,t),(d=u&&s[u])&&d.apply&&K(s)&&(e.result=d.apply(s,t),!1===e.result&&e.preventDefault());return e.type=v,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!K(i)||u&&m(i[v])&&!y(i)&&((a=i[u])&&(i[u]=null),x.event.triggered=v,e.isPropagationStopped()&&h.addEventListener(v,_t),i[v](),e.isPropagationStopped()&&h.removeEventListener(v,_t),x.event.triggered=void 0,a&&(i[u]=a)),e.result}},simulate:function(e,t,n){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0});x.event.trigger(i,null,t)}}),x.fn.extend({trigger:function(e,t){return this.each((function(){x.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return x.event.trigger(e,t,n,!0)}}),g.focusin||x.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){x.event.simulate(t,e.target,x.event.fix(e))};x.event.special[t]={setup:function(){var i=this.ownerDocument||this.document||this,r=Q.access(i,t);r||i.addEventListener(e,n,!0),Q.access(i,t,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this.document||this,r=Q.access(i,t)-1;r?Q.access(i,t,r):(i.removeEventListener(e,n,!0),Q.remove(i,t))}}}));var kt=n.location,xt={guid:Date.now()},St=/\?/;x.parseXML=function(e){var t;if(!e||"string"!==typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(i){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+e),t};var Et=/\[\]$/,Ct=/\r?\n/g,Tt=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function Dt(e,t,n,i){var r;if(Array.isArray(t))x.each(t,(function(t,r){n||Et.test(e)?i(e,r):Dt(e+"["+("object"===typeof r&&null!=r?t:"")+"]",r,n,i)}));else if(n||"object"!==k(t))i(e,t);else for(r in t)Dt(e+"["+r+"]",t[r],n,i)}x.param=function(e,t){var n,i=[],r=function(e,t){var n=m(t)?t():t;i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,(function(){r(this.name,this.value)}));else for(n in e)Dt(n,e[n],t,r);return i.join("&")},x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&Ot.test(this.nodeName)&&!Tt.test(e)&&(this.checked||!fe.test(e))})).map((function(e,t){var n=x(this).val();return null==n?null:Array.isArray(n)?x.map(n,(function(e){return{name:t.name,value:e.replace(Ct,"\r\n")}})):{name:t.name,value:n.replace(Ct,"\r\n")}})).get()}});var Mt=/%20/g,Pt=/#.*$/,Nt=/([?&])_=[^&]*/,Ft=/^(.*?):[ \t]*([^\r\n]*)$/gm,At=/^(?:GET|HEAD)$/,It=/^\/\//,Rt={},Lt={},jt="*/".concat("*"),zt=b.createElement("a");function Ht(e){return function(t,n){"string"!==typeof t&&(n=t,t="*");var i,r=0,o=t.toLowerCase().match(L)||[];if(m(n))for(;i=o[r++];)"+"===i[0]?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function Bt(e,t,n,i){var r={},o=e===Lt;function s(a){var l;return r[a]=!0,x.each(e[a]||[],(function(e,a){var u=a(t,n,i);return"string"!==typeof u||o||r[u]?o?!(l=u):void 0:(t.dataTypes.unshift(u),s(u),!1)})),l}return s(t.dataTypes[0])||!r["*"]&&s("*")}function Yt(e,t){var n,i,r=x.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((r[n]?e:i||(i={}))[n]=t[n]);return i&&x.extend(!0,e,i),e}zt.href=kt.href,x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:kt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(kt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":jt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Yt(Yt(e,x.ajaxSettings),t):Yt(x.ajaxSettings,e)},ajaxPrefilter:Ht(Rt),ajaxTransport:Ht(Lt),ajax:function(e,t){"object"===typeof e&&(t=e,e=void 0);var i,r,o,s,a,l,u,d,c,h,f=x.ajaxSetup({},t=t||{}),p=f.context||f,v=f.context&&(p.nodeType||p.jquery)?x(p):x.event,g=x.Deferred(),m=x.Callbacks("once memory"),y=f.statusCode||{},w={},_={},k="canceled",S={readyState:0,getResponseHeader:function(e){var t;if(u){if(!s)for(s={};t=Ft.exec(o);)s[t[1].toLowerCase()+" "]=(s[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=s[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return u?o:null},setRequestHeader:function(e,t){return null==u&&(e=_[e.toLowerCase()]=_[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==u&&(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(u)S.always(e[S.status]);else for(t in e)y[t]=[y[t],e[t]];return this},abort:function(e){var t=e||k;return i&&i.abort(t),E(0,t),this}};if(g.promise(S),f.url=((e||f.url||kt.href)+"").replace(It,kt.protocol+"//"),f.type=t.method||t.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(L)||[""],null==f.crossDomain){l=b.createElement("a");try{l.href=f.url,l.href=l.href,f.crossDomain=zt.protocol+"//"+zt.host!==l.protocol+"//"+l.host}catch(C){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!==typeof f.data&&(f.data=x.param(f.data,f.traditional)),Bt(Rt,f,t,S),u)return S;for(c in(d=x.event&&f.global)&&0===x.active++&&x.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!At.test(f.type),r=f.url.replace(Pt,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(Mt,"+")):(h=f.url.slice(r.length),f.data&&(f.processData||"string"===typeof f.data)&&(r+=(St.test(r)?"&":"?")+f.data,delete f.data),!1===f.cache&&(r=r.replace(Nt,"$1"),h=(St.test(r)?"&":"?")+"_="+xt.guid+++h),f.url=r+h),f.ifModified&&(x.lastModified[r]&&S.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&S.setRequestHeader("If-None-Match",x.etag[r])),(f.data&&f.hasContent&&!1!==f.contentType||t.contentType)&&S.setRequestHeader("Content-Type",f.contentType),S.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+jt+"; q=0.01":""):f.accepts["*"]),f.headers)S.setRequestHeader(c,f.headers[c]);if(f.beforeSend&&(!1===f.beforeSend.call(p,S,f)||u))return S.abort();if(k="abort",m.add(f.complete),S.done(f.success),S.fail(f.error),i=Bt(Lt,f,t,S)){if(S.readyState=1,d&&v.trigger("ajaxSend",[S,f]),u)return S;f.async&&f.timeout>0&&(a=n.setTimeout((function(){S.abort("timeout")}),f.timeout));try{u=!1,i.send(w,E)}catch(C){if(u)throw C;E(-1,C)}}else E(-1,"No Transport");function E(e,t,s,l){var c,h,b,w,_,k=t;u||(u=!0,a&&n.clearTimeout(a),i=void 0,o=l||"",S.readyState=e>0?4:0,c=e>=200&&e<300||304===e,s&&(w=function(e,t,n){for(var i,r,o,s,a=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader("Content-Type"));if(i)for(r in a)if(a[r]&&a[r].test(i)){l.unshift(r);break}if(l[0]in n)o=l[0];else{for(r in n){if(!l[0]||e.converters[r+" "+l[0]]){o=r;break}s||(s=r)}o=o||s}if(o)return o!==l[0]&&l.unshift(o),n[o]}(f,S,s)),!c&&x.inArray("script",f.dataTypes)>-1&&(f.converters["text script"]=function(){}),w=function(e,t,n,i){var r,o,s,a,l,u={},d=e.dataTypes.slice();if(d[1])for(s in e.converters)u[s.toLowerCase()]=e.converters[s];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=d.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(s=u[l+" "+o]||u["* "+o]))for(r in u)if((a=r.split(" "))[1]===o&&(s=u[l+" "+a[0]]||u["* "+a[0]])){!0===s?s=u[r]:!0!==u[r]&&(o=a[0],d.unshift(a[1]));break}if(!0!==s)if(s&&e.throws)t=s(t);else try{t=s(t)}catch(C){return{state:"parsererror",error:s?C:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}(f,w,S,c),c?(f.ifModified&&((_=S.getResponseHeader("Last-Modified"))&&(x.lastModified[r]=_),(_=S.getResponseHeader("etag"))&&(x.etag[r]=_)),204===e||"HEAD"===f.type?k="nocontent":304===e?k="notmodified":(k=w.state,h=w.data,c=!(b=w.error))):(b=k,!e&&k||(k="error",e<0&&(e=0))),S.status=e,S.statusText=(t||k)+"",c?g.resolveWith(p,[h,k,S]):g.rejectWith(p,[S,k,b]),S.statusCode(y),y=void 0,d&&v.trigger(c?"ajaxSuccess":"ajaxError",[S,f,c?h:b]),m.fireWith(p,[S,k]),d&&(v.trigger("ajaxComplete",[S,f]),--x.active||x.event.trigger("ajaxStop")))}return S},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,void 0,t,"script")}}),x.each(["get","post"],(function(e,t){x[t]=function(e,n,i,r){return m(n)&&(r=r||i,i=n,n=void 0),x.ajax(x.extend({url:e,type:t,dataType:r,data:n,success:i},x.isPlainObject(e)&&e))}})),x.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),x._evalUrl=function(e,t,n){return x.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){x.globalEval(e,t,n)}})},x.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return m(e)?this.each((function(t){x(this).wrapInner(e.call(this,t))})):this.each((function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=m(e);return this.each((function(n){x(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){x(this).replaceWith(this.childNodes)})),this}}),x.expr.pseudos.hidden=function(e){return!x.expr.pseudos.visible(e)},x.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},x.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Wt={0:200,1223:204},Ut=x.ajaxSettings.xhr();g.cors=!!Ut&&"withCredentials"in Ut,g.ajax=Ut=!!Ut,x.ajaxTransport((function(e){var t,i;if(g.cors||Ut&&!e.crossDomain)return{send:function(r,o){var s,a=e.xhr();if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(s in e.xhrFields)a[s]=e.xhrFields[s];for(s in e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest"),r)a.setRequestHeader(s,r[s]);t=function(e){return function(){t&&(t=i=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!==typeof a.status?o(0,"error"):o(a.status,a.statusText):o(Wt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!==typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=t(),i=a.onerror=a.ontimeout=t("error"),void 0!==a.onabort?a.onabort=i:a.onreadystatechange=function(){4===a.readyState&&n.setTimeout((function(){t&&i()}))},t=t("abort");try{a.send(e.hasContent&&e.data||null)}catch(l){if(t)throw l}},abort:function(){t&&t()}}})),x.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),x.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(i,r){t=x("\n\t// \n\t// ...\n\t//\n\t// $(\"#tree\").fancytree({\n\t// extensions: [\"childcounter\"],\n\t// childcounter: {\n\t// hideExpanded: true\n\t// },\n\t// ...\n\t// });\n\t//\n\n\t/* 'childcounter' extension */\n\t$.ui.fancytree.registerExtension({\n\t\t// Every extension must be registered by a unique name.\n\t\tname: \"childcounter\",\n\t\t// Version information should be compliant with [semver](http://semver.org)\n\t\tversion: \"2.35.0\",\n\n\t\t// Extension specific options and their defaults.\n\t\t// This options will be available as `tree.options.childcounter.hideExpanded`\n\n\t\toptions: {\n\t\t\tdeep: true,\n\t\t\thideZeros: true,\n\t\t\thideExpanded: false,\n\t\t},\n\n\t\t// Attributes other than `options` (or functions) can be defined here, and\n\t\t// will be added to the tree.ext.EXTNAME namespace, in this case `tree.ext.childcounter.foo`.\n\t\t// They can also be accessed as `this._local.foo` from within the extension\n\t\t// methods.\n\t\tfoo: 42,\n\n\t\t// Local functions are prefixed with an underscore '_'.\n\t\t// Callable as `this._local._appendCounter()`.\n\n\t\t_appendCounter: function(bar) {\n\t\t\tvar tree = this;\n\t\t},\n\n\t\t// **Override virtual methods for this extension.**\n\t\t//\n\t\t// Fancytree implements a number of 'hook methods', prefixed by 'node...' or 'tree...'.\n\t\t// with a `ctx` argument (see [EventData](https://wwWendt.de/tech/fancytree/doc/jsdoc/global.html#EventData)\n\t\t// for details) and an extended calling context: \n\t\t// `this` : the Fancytree instance \n\t\t// `this._local`: the namespace that contains extension attributes and private methods (same as this.ext.EXTNAME) \n\t\t// `this._super`: the virtual function that was overridden (member of previous extension or Fancytree)\n\t\t//\n\t\t// See also the [complete list of available hook functions](https://wwWendt.de/tech/fancytree/doc/jsdoc/Fancytree_Hooks.html).\n\n\t\t/* Init */\n\t\t// `treeInit` is triggered when a tree is initalized. We can set up classes or\n\t\t// bind event handlers here...\n\t\ttreeInit: function(ctx) {\n\t\t\tvar tree = this, // same as ctx.tree,\n\t\t\t\topts = ctx.options,\n\t\t\t\textOpts = ctx.options.childcounter;\n\t\t\t// Optionally check for dependencies with other extensions\n\t\t\t/* this._requireExtension(\"glyph\", false, false); */\n\t\t\t// Call the base implementation\n\t\t\tthis._superApply(arguments);\n\t\t\t// Add a class to the tree container\n\t\t\tthis.$container.addClass(\"fancytree-ext-childcounter\");\n\t\t},\n\n\t\t// Destroy this tree instance (we only call the default implementation, so\n\t\t// this method could as well be omitted).\n\n\t\ttreeDestroy: function(ctx) {\n\t\t\tthis._superApply(arguments);\n\t\t},\n\n\t\t// Overload the `renderTitle` hook, to append a counter badge\n\t\tnodeRenderTitle: function(ctx, title) {\n\t\t\tvar node = ctx.node,\n\t\t\t\textOpts = ctx.options.childcounter,\n\t\t\t\tcount =\n\t\t\t\t\tnode.data.childCounter == null\n\t\t\t\t\t\t? node.countChildren(extOpts.deep)\n\t\t\t\t\t\t: +node.data.childCounter;\n\t\t\t// Let the base implementation render the title\n\t\t\t// We use `_super()` instead of `_superApply()` here, since it is a little bit\n\t\t\t// more performant when called often\n\t\t\tthis._super(ctx, title);\n\t\t\t// Append a counter badge\n\t\t\tif (\n\t\t\t\t(count || !extOpts.hideZeros) &&\n\t\t\t\t(!node.isExpanded() || !extOpts.hideExpanded)\n\t\t\t) {\n\t\t\t\t$(\n\t\t\t\t\t\"span.fancytree-icon,span.fancytree-custom-icon\",\n\t\t\t\t\tnode.span\n\t\t\t\t).append(\n\t\t\t\t\t$(\"\").text(count)\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t// Overload the `setExpanded` hook, so the counters are updated\n\t\tnodeSetExpanded: function(ctx, flag, callOpts) {\n\t\t\tvar tree = ctx.tree,\n\t\t\t\tnode = ctx.node;\n\t\t\t// Let the base implementation expand/collapse the node, then redraw the title\n\t\t\t// after the animation has finished\n\t\t\treturn this._superApply(arguments).always(function() {\n\t\t\t\ttree.nodeRenderTitle(ctx);\n\t\t\t});\n\t\t},\n\n\t\t// End of extension definition\n\t});\n\t// Value returned by `require('jquery.fancytree..')`\n\treturn $.ui.fancytree;\n}); // End of closure\n","/*!\n * jquery.fancytree.edit.js\n *\n * Make node titles editable.\n * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/)\n *\n * Copyright (c) 2008-2020, Martin Wendt (https://wwWendt.de)\n *\n * Released under the MIT license\n * https://github.com/mar10/fancytree/wiki/LicenseInfo\n *\n * @version 2.35.0\n * @date 2020-03-27T22:41:58Z\n */\n\n(function(factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([\"jquery\", \"./jquery.fancytree\"], factory);\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\t// Node/CommonJS\n\t\trequire(\"./jquery.fancytree\");\n\t\tmodule.exports = factory(require(\"jquery\"));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n})(function($) {\n\t\"use strict\";\n\n\t/*******************************************************************************\n\t * Private functions and variables\n\t */\n\n\tvar isMac = /Mac/.test(navigator.platform),\n\t\tescapeHtml = $.ui.fancytree.escapeHtml,\n\t\tunescapeHtml = $.ui.fancytree.unescapeHtml;\n\n\t/**\n\t * [ext-edit] Start inline editing of current node title.\n\t *\n\t * @alias FancytreeNode#editStart\n\t * @requires Fancytree\n\t */\n\t$.ui.fancytree._FancytreeNodeClass.prototype.editStart = function() {\n\t\tvar $input,\n\t\t\tnode = this,\n\t\t\ttree = this.tree,\n\t\t\tlocal = tree.ext.edit,\n\t\t\tinstOpts = tree.options.edit,\n\t\t\t$title = $(\".fancytree-title\", node.span),\n\t\t\teventData = {\n\t\t\t\tnode: node,\n\t\t\t\ttree: tree,\n\t\t\t\toptions: tree.options,\n\t\t\t\tisNew: $(node[tree.statusClassPropName]).hasClass(\n\t\t\t\t\t\"fancytree-edit-new\"\n\t\t\t\t),\n\t\t\t\torgTitle: node.title,\n\t\t\t\tinput: null,\n\t\t\t\tdirty: false,\n\t\t\t};\n\n\t\t// beforeEdit may want to modify the title before editing\n\t\tif (\n\t\t\tinstOpts.beforeEdit.call(\n\t\t\t\tnode,\n\t\t\t\t{ type: \"beforeEdit\" },\n\t\t\t\teventData\n\t\t\t) === false\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\t$.ui.fancytree.assert(!local.currentNode, \"recursive edit\");\n\t\tlocal.currentNode = this;\n\t\tlocal.eventData = eventData;\n\n\t\t// Disable standard Fancytree mouse- and key handling\n\t\ttree.widget._unbind();\n\n\t\tlocal.lastDraggableAttrValue = node.span.draggable;\n\t\tif (local.lastDraggableAttrValue) {\n\t\t\tnode.span.draggable = false;\n\t\t}\n\n\t\t// #116: ext-dnd prevents the blur event, so we have to catch outer clicks\n\t\t$(document).on(\"mousedown.fancytree-edit\", function(event) {\n\t\t\tif (!$(event.target).hasClass(\"fancytree-edit-input\")) {\n\t\t\t\tnode.editEnd(true, event);\n\t\t\t}\n\t\t});\n\n\t\t// Replace node with \n\t\t$input = $(\"\", {\n\t\t\tclass: \"fancytree-edit-input\",\n\t\t\ttype: \"text\",\n\t\t\tvalue: tree.options.escapeTitles\n\t\t\t\t? eventData.orgTitle\n\t\t\t\t: unescapeHtml(eventData.orgTitle),\n\t\t});\n\t\tlocal.eventData.input = $input;\n\t\tif (instOpts.adjustWidthOfs != null) {\n\t\t\t$input.width($title.width() + instOpts.adjustWidthOfs);\n\t\t}\n\t\tif (instOpts.inputCss != null) {\n\t\t\t$input.css(instOpts.inputCss);\n\t\t}\n\n\t\t$title.html($input);\n\n\t\t// Focus and bind keyboard handler\n\t\t$input\n\t\t\t.focus()\n\t\t\t.change(function(event) {\n\t\t\t\t$input.addClass(\"fancytree-edit-dirty\");\n\t\t\t})\n\t\t\t.on(\"keydown\", function(event) {\n\t\t\t\tswitch (event.which) {\n\t\t\t\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\t\t\t\tnode.editEnd(false, event);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t\t\tnode.editEnd(true, event);\n\t\t\t\t\t\treturn false; // so we don't start editmode on Mac\n\t\t\t\t}\n\t\t\t\tevent.stopPropagation();\n\t\t\t})\n\t\t\t.blur(function(event) {\n\t\t\t\treturn node.editEnd(true, event);\n\t\t\t});\n\n\t\tinstOpts.edit.call(node, { type: \"edit\" }, eventData);\n\t};\n\n\t/**\n\t * [ext-edit] Stop inline editing.\n\t * @param {Boolean} [applyChanges=false] false: cancel edit, true: save (if modified)\n\t * @alias FancytreeNode#editEnd\n\t * @requires jquery.fancytree.edit.js\n\t */\n\t$.ui.fancytree._FancytreeNodeClass.prototype.editEnd = function(\n\t\tapplyChanges,\n\t\t_event\n\t) {\n\t\tvar newVal,\n\t\t\tnode = this,\n\t\t\ttree = this.tree,\n\t\t\tlocal = tree.ext.edit,\n\t\t\teventData = local.eventData,\n\t\t\tinstOpts = tree.options.edit,\n\t\t\t$title = $(\".fancytree-title\", node.span),\n\t\t\t$input = $title.find(\"input.fancytree-edit-input\");\n\n\t\tif (instOpts.trim) {\n\t\t\t$input.val($.trim($input.val()));\n\t\t}\n\t\tnewVal = $input.val();\n\n\t\teventData.dirty = newVal !== node.title;\n\t\teventData.originalEvent = _event;\n\n\t\t// Find out, if saving is required\n\t\tif (applyChanges === false) {\n\t\t\t// If true/false was passed, honor this (except in rename mode, if unchanged)\n\t\t\teventData.save = false;\n\t\t} else if (eventData.isNew) {\n\t\t\t// In create mode, we save everything, except for empty text\n\t\t\teventData.save = newVal !== \"\";\n\t\t} else {\n\t\t\t// In rename mode, we save everyting, except for empty or unchanged text\n\t\t\teventData.save = eventData.dirty && newVal !== \"\";\n\t\t}\n\t\t// Allow to break (keep editor open), modify input, or re-define data.save\n\t\tif (\n\t\t\tinstOpts.beforeClose.call(\n\t\t\t\tnode,\n\t\t\t\t{ type: \"beforeClose\" },\n\t\t\t\teventData\n\t\t\t) === false\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (\n\t\t\teventData.save &&\n\t\t\tinstOpts.save.call(node, { type: \"save\" }, eventData) === false\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\t$input.removeClass(\"fancytree-edit-dirty\").off();\n\t\t// Unbind outer-click handler\n\t\t$(document).off(\".fancytree-edit\");\n\n\t\tif (eventData.save) {\n\t\t\t// # 171: escape user input (not required if global escaping is on)\n\t\t\tnode.setTitle(\n\t\t\t\ttree.options.escapeTitles ? newVal : escapeHtml(newVal)\n\t\t\t);\n\t\t\tnode.setFocus();\n\t\t} else {\n\t\t\tif (eventData.isNew) {\n\t\t\t\tnode.remove();\n\t\t\t\tnode = eventData.node = null;\n\t\t\t\tlocal.relatedNode.setFocus();\n\t\t\t} else {\n\t\t\t\tnode.renderTitle();\n\t\t\t\tnode.setFocus();\n\t\t\t}\n\t\t}\n\t\tlocal.eventData = null;\n\t\tlocal.currentNode = null;\n\t\tlocal.relatedNode = null;\n\t\t// Re-enable mouse and keyboard handling\n\t\ttree.widget._bind();\n\n\t\tif (node && local.lastDraggableAttrValue) {\n\t\t\tnode.span.draggable = true;\n\t\t}\n\n\t\t// Set keyboard focus, even if setFocus() claims 'nothing to do'\n\t\t$(tree.$container).focus();\n\t\teventData.input = null;\n\t\tinstOpts.close.call(node, { type: \"close\" }, eventData);\n\t\treturn true;\n\t};\n\n\t/**\n\t * [ext-edit] Create a new child or sibling node and start edit mode.\n\t *\n\t * @param {String} [mode='child'] 'before', 'after', or 'child'\n\t * @param {Object} [init] NodeData (or simple title string)\n\t * @alias FancytreeNode#editCreateNode\n\t * @requires jquery.fancytree.edit.js\n\t * @since 2.4\n\t */\n\t$.ui.fancytree._FancytreeNodeClass.prototype.editCreateNode = function(\n\t\tmode,\n\t\tinit\n\t) {\n\t\tvar newNode,\n\t\t\ttree = this.tree,\n\t\t\tself = this;\n\n\t\tmode = mode || \"child\";\n\t\tif (init == null) {\n\t\t\tinit = { title: \"\" };\n\t\t} else if (typeof init === \"string\") {\n\t\t\tinit = { title: init };\n\t\t} else {\n\t\t\t$.ui.fancytree.assert($.isPlainObject(init));\n\t\t}\n\t\t// Make sure node is expanded (and loaded) in 'child' mode\n\t\tif (\n\t\t\tmode === \"child\" &&\n\t\t\t!this.isExpanded() &&\n\t\t\tthis.hasChildren() !== false\n\t\t) {\n\t\t\tthis.setExpanded().done(function() {\n\t\t\t\tself.editCreateNode(mode, init);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tnewNode = this.addNode(init, mode);\n\n\t\t// #644: Don't filter new nodes.\n\t\tnewNode.match = true;\n\t\t$(newNode[tree.statusClassPropName])\n\t\t\t.removeClass(\"fancytree-hide\")\n\t\t\t.addClass(\"fancytree-match\");\n\n\t\tnewNode.makeVisible(/*{noAnimation: true}*/).done(function() {\n\t\t\t$(newNode[tree.statusClassPropName]).addClass(\"fancytree-edit-new\");\n\t\t\tself.tree.ext.edit.relatedNode = self;\n\t\t\tnewNode.editStart();\n\t\t});\n\t};\n\n\t/**\n\t * [ext-edit] Check if any node in this tree in edit mode.\n\t *\n\t * @returns {FancytreeNode | null}\n\t * @alias Fancytree#isEditing\n\t * @requires jquery.fancytree.edit.js\n\t */\n\t$.ui.fancytree._FancytreeClass.prototype.isEditing = function() {\n\t\treturn this.ext.edit ? this.ext.edit.currentNode : null;\n\t};\n\n\t/**\n\t * [ext-edit] Check if this node is in edit mode.\n\t * @returns {Boolean} true if node is currently beeing edited\n\t * @alias FancytreeNode#isEditing\n\t * @requires jquery.fancytree.edit.js\n\t */\n\t$.ui.fancytree._FancytreeNodeClass.prototype.isEditing = function() {\n\t\treturn this.tree.ext.edit\n\t\t\t? this.tree.ext.edit.currentNode === this\n\t\t\t: false;\n\t};\n\n\t/*******************************************************************************\n\t * Extension code\n\t */\n\t$.ui.fancytree.registerExtension({\n\t\tname: \"edit\",\n\t\tversion: \"2.35.0\",\n\t\t// Default options for this extension.\n\t\toptions: {\n\t\t\tadjustWidthOfs: 4, // null: don't adjust input size to content\n\t\t\tallowEmpty: false, // Prevent empty input\n\t\t\tinputCss: { minWidth: \"3em\" },\n\t\t\t// triggerCancel: [\"esc\", \"tab\", \"click\"],\n\t\t\ttriggerStart: [\"f2\", \"mac+enter\", \"shift+click\"],\n\t\t\ttrim: true, // Trim whitespace before save\n\t\t\t// Events:\n\t\t\tbeforeClose: $.noop, // Return false to prevent cancel/save (data.input is available)\n\t\t\tbeforeEdit: $.noop, // Return false to prevent edit mode\n\t\t\tclose: $.noop, // Editor was removed\n\t\t\tedit: $.noop, // Editor was opened (available as data.input)\n\t\t\t//\t\tkeypress: $.noop, // Not yet implemented\n\t\t\tsave: $.noop, // Save data.input.val() or return false to keep editor open\n\t\t},\n\t\t// Local attributes\n\t\tcurrentNode: null,\n\n\t\ttreeInit: function(ctx) {\n\t\t\tvar tree = ctx.tree;\n\n\t\t\tthis._superApply(arguments);\n\n\t\t\tthis.$container\n\t\t\t\t.addClass(\"fancytree-ext-edit\")\n\t\t\t\t.on(\"fancytreebeforeupdateviewport\", function(event, data) {\n\t\t\t\t\tvar editNode = tree.isEditing();\n\t\t\t\t\t// When scrolling, the TR may be re-used by another node, so the\n\t\t\t\t\t// active cell marker an\n\t\t\t\t\tif (editNode) {\n\t\t\t\t\t\teditNode.info(\"Cancel edit due to scroll event.\");\n\t\t\t\t\t\teditNode.editEnd(false, event);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t},\n\t\tnodeClick: function(ctx) {\n\t\t\tvar eventStr = $.ui.fancytree.eventToString(ctx.originalEvent),\n\t\t\t\ttriggerStart = ctx.options.edit.triggerStart;\n\n\t\t\tif (\n\t\t\t\teventStr === \"shift+click\" &&\n\t\t\t\t$.inArray(\"shift+click\", triggerStart) >= 0\n\t\t\t) {\n\t\t\t\tif (ctx.originalEvent.shiftKey) {\n\t\t\t\t\tctx.node.editStart();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (\n\t\t\t\teventStr === \"click\" &&\n\t\t\t\t$.inArray(\"clickActive\", triggerStart) >= 0\n\t\t\t) {\n\t\t\t\t// Only when click was inside title text (not aynwhere else in the row)\n\t\t\t\tif (\n\t\t\t\t\tctx.node.isActive() &&\n\t\t\t\t\t!ctx.node.isEditing() &&\n\t\t\t\t\t$(ctx.originalEvent.target).hasClass(\"fancytree-title\")\n\t\t\t\t) {\n\t\t\t\t\tctx.node.editStart();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this._superApply(arguments);\n\t\t},\n\t\tnodeDblclick: function(ctx) {\n\t\t\tif ($.inArray(\"dblclick\", ctx.options.edit.triggerStart) >= 0) {\n\t\t\t\tctx.node.editStart();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn this._superApply(arguments);\n\t\t},\n\t\tnodeKeydown: function(ctx) {\n\t\t\tswitch (ctx.originalEvent.which) {\n\t\t\t\tcase 113: // [F2]\n\t\t\t\t\tif ($.inArray(\"f2\", ctx.options.edit.triggerStart) >= 0) {\n\t\t\t\t\t\tctx.node.editStart();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t\tif (\n\t\t\t\t\t\t$.inArray(\"mac+enter\", ctx.options.edit.triggerStart) >=\n\t\t\t\t\t\t\t0 &&\n\t\t\t\t\t\tisMac\n\t\t\t\t\t) {\n\t\t\t\t\t\tctx.node.editStart();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn this._superApply(arguments);\n\t\t},\n\t});\n\t// Value returned by `require('jquery.fancytree..')`\n\treturn $.ui.fancytree;\n}); // End of closure\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/build/static/js/main.3bb5acd4.chunk.js b/build/static/js/main.3bb5acd4.chunk.js
deleted file mode 100644
index d50040c24868f999b64ebdd30f3e2c4cfc11a3d9..0000000000000000000000000000000000000000
--- a/build/static/js/main.3bb5acd4.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(this["webpackJsonpreact-api"]=this["webpackJsonpreact-api"]||[]).push([[0],{40:function(e,t){e.exports="data:image/gif;base64,R0lGODlhAAEAAaUfAP////f39+/v7+bm5t7e3tbW1s7OzsXFxb29vbW1ta2traWlpZycnJSUlIyMjISEhHt7e3Nzc2tra2NjY1paWlJSUkpKSkJCQjo6OjExMSkpKSEhIRkZGRAQEAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hFDcmVhdGVkIHdpdGggR0lNUAAh+QQFBwAgACwAAAAAAAEAAQAG/kCAcEgsGo/IpHLJbDqf0Kh0Sq1ar9isdsvter/gsHhMLpvP6LR6zW673/C4fE6v2+/4vH7P7/v/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAwocSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gnQQYMCBASC0BDihQcMDkySsFFjBgsKDAyysIZs5EcFMJ/skBSRLoZJAgyYGjIQcUWEoAiVCdRY8ogADhwQGQBQxoNSDgyNOZUYsUkEC2KtatBmwa+Ur0CASyZB+AHIDWANAibMMOSUB2AlkFIAPUNeBy71C9AAREgCshQte5dZsSyVtkQV+yiD1mRVsYAOUhAxhLgHBTQF21Qj4LcXBZAuqTBOo+9nx4iAHRDjT+7ExEcF3DUIe89Uv2rpECDhwsaKh0a8kjsdHe/cxXAvHlRgQ4uIDhggTsCqNvLWCcyGCTAu4O6KqYcQTeARZYyJABQ3fSC8WjLTBbCF2tBPBWxAAMEMfTEAEgQAEG9NF3H0MBbDZYgEQs1Z8SBTwgF2gS/jDYoIMWvJaQABIOZpyAS4wkhAANXPBhgxhQYABEzQ2W1oVQBKBABR5+iIEFC6C40Eg2pmUFBS/Sd4EDOEIUgH5aCenEAC7CKIFkGJHoHBYMOFjBgRz9l4UAF1jAgJQXBdDkFAmU19ObRqgpwJx01jknFwvkqeeeeSbAlUE1FqmViFds4MGhiCZ6qAYPrMlPoIIaucUFH1Rq6aUfeNBBBuAFBKmghFpBKaaYasopQVpGOigXo5JqqaYXZPaPAASUaGOoVWzAwa689srBBhbICuewxFZBqxYEuLlRhFFi4Rt/HD2JFpZV6EchRv/JZoVpJlqU6mAFoLmEreM5mpC0/kVeSwW6t5pbULbgFrYeFOkhCOW0zBUJLYJaKYvEf519W5e/Bd1rlxH6EewfvgPaSC1CUKrL737+/USSELYKyG5aDx9E66BC2vqYtSuehgSzBUg84p1IcLsVliQLAaWjAdSs0XlDxAyAb2j1BK8B1OoMQMQv8bxVEUIDgHNIMyPN8BAuAxiS0ZISkTQAGYMEpYBXU92xRiV+ffXQFH+01FYojs3zUoEttS/CTxdB4lLiWlSzlGMLcXexRMCrMN/ZbfY24EzQSoC7hCeu+OKMN+7445BHLvnklFdu+eWYZ6755px37vnnoIcu+uikl2766ainrvrqrLfu+uuwxy77POy012777bjnrvvuvPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334AsUBAAh+QQFBwA/ACxiAGIAPAA8AAAG/sCfcEgsGo+/QACAbDqfUONgKohar9FBYUsIYL/g4cBALlTD6KRAoEQSyOSzUTAdeNNHwo8gL77hfUMCBgkJCHp4RAGIe3d+cAaBQwoMDAsFiYqMPwN5kJIDCZWWmJlIZkZ/cUUBBgujC5uZAqVCsnufRQOUowmOpntEqESqkYoHo5a3mb/BxLlDBLyVCM3AnUTYttA/AgjJCtrAQ821uIBDBa+jBmkBa5KC5nbb6JyivfFVZfHpBctJigwrVqXVOlJGFil4AOFBLCRa0vFpRouYkCUAALTZlQyBFAQOIkiQEKGBuWwn/zkRhwTfQ0EHGkAYObLkSUGnxHnpYmXA/oIDdwYtmEmz5gKW5JBGC4imoLQHIouSNGlN0ymAVryFlDrygcesAJVaCeCAqwQI4cBUFMYkTQGpERjgCSCu35eaDgxU/bJoCzAJXu2GEfzl67jDaPYiVoSgsePHCA4YQLTTbxOsYSxo3sxZMwUICbr1PJyhtOnTGTBgsOBgAGExpFGjVs26E+al41Tr3r27QgM7EZ/cxiLggvHjyC9YqAAB6OLn0FcqTjwFWIS0pt4RwNQWz4IOGSIgeP2ETi2xWDZ88NABg4MC05t4uRn/yYMP+NdzqMBguCJnR3T3hQEceOBBfgZqMEEC6BFRxU0/FNAgFAEkYEEHByIIXgTOxCExnxtneFFfEWcIwEAGGOa3XgcWMCDWWuVB6KEemxAQwQYGaljBARClxNRFVyySjk4HUFBghh1cYJguMjpozjIF+ZFQAhdgyJ4FSxrBRTxCplNVP0oJ4EAGHITXJCcrzYNEiAJdRoleTT3ZhBwwNvJclzit2cQwiNXJk57yWIRYOeXpIsyEaqnpRCB4AniNMFBI0gefpmyCqCS/UJqJNv7pUwt5VwhAY1YQCYGoWqBq6iCo0cEXHR7bSTjiq0fccSoWQQAAIfkEBQcAPwAsYgBiADwAPAAABv7An3BILBqPwwByyWw6i4IfgfADPK/YrHbLFVKT3fAw6iwojwGBWmxUFrBmNKFQIJDZ2bcwbhwUDAYFd3hXej98RAJ/gIKEQ19MhoiPgIxnjn1GkpdCipUGBFaYT5tFBJ+To5FDkwOfBgOiqk2lrJ8EnKqGQpe1Aa6fg1oCAwNMrkUAyrWelbhIc3W5vEKBu4WsZ6eVjUcIC+AIxm0/r1exyunpzYDo6UoHCgzzDAnjRUoGeQKycpZFBuTRm2ePUKwrig7uSbBg4LwFB4RhCwPg0jeHD8Wp6zfrSDyMDBYkCIVHYpaGGBWk6gKpywCHEE12mbYlQUaFhFqGeTmSI/4emlxWdhyKRE2xo0iLjZK5ZA6gY5gERJhKtepUCAwOACU6RILXr2C/QkjAlOuPsGi9ji1b5N7PtGgfIOBEp65dOqMIQNjLt+/eBwpImh081CfhcxAQsM3iRx8hBhgoNDCw9YkSnWwGXMiA4cKEBZgRhmYjIYNpzhYiFGR87VEYBBYwnDaNocKDiE5+/ZkVIAACCRdkn+4suXWi0QUGVGYiYOyQBRQwCKd9QbVMt0SeDcHeBMGGDhNaOog9HYMFCMaB8utyAMOHDx40MAigzgCE2NQjpC+S/AiwSnd88YwBGHjwXgcVtIbABMGZh55lRyiSHSvZ/BCAAxy85wEHD5yYxAAFFnzGXSJABbANI3fUQoAFBsKHAQJIDIBAT+qwoY4vDGR4YAQjznJNLT8MQEGLHmSgwHJcYOfOMhUOkcAG730A3mij5AKkhQ90oOEG843yHyASXXnIBURaYNxMLYUmZgAN6BhfApjQZZKYUrDoQZFwOsIJTkTQ+cMCGnTAwQV58lYGTQM4ENwDVBK2VTqHQRMpRZMyptwoQQAAIfkEBQcAPwAsYgBiADwAPAAABv7An3BILBqNgaNyyWw6hwTh4EmtVg0Gq3bL7T4FzsLX24z+CtOjuAkmu50BQvZNr1vTdrP9jT/3639aa0J6ez+FXgVthkKDXoF7iE+Fjo+LRQKVWgMARwEDoJdKc0cAkIcEBZpQSUYDqQYFBK1Pp1yKRgKwWAazS6s/tES+TKaErgW8vMRHqUqXBKJMcYufycpYaMJEANZOnVrgutjZ0eBLAAIDmqRdcdfKsgLb07qa9FUA8Lza51WfhWxRERBvQAB/4bz9QMhFjjyGXNIREPgvGj4yB+tkZMTxTkclB0KKHHkgVhppH4cMYMCypUuWCxIASznkpU2YBi7S/HHT5v6CnI12ElnZs2VMMenUgVrKNJQdASSjxjIntKrOqmwkeWlwACsXCRAY0FnXzk0BCWglPFDgTkhZNwEcpEUbwcEWe81QUhmwAMJculzNGoRIJd2BBhH+gl3w5G0/KHqPTEEgxFQCB4nn1qXs6UfZh0WyMHvG4MIFCHjiKHjwNwIDrW6HDS4y00iFDBkwVGBLJEABBn7pvg4zm8kgC6ZNiyEQAQNuDBKMGG4AIUJY2D+WCiBchJMQDB4+fNiwJkEF5xkuNCg14EACBAYiA5j/bwh48eSlPLjwnELXUvNx58Qffdw33hoAHEABehc8UNVoBuYnhAAN8JdbBQl0RAouRHxE6MhZ6GEAASOZDGOEh0UoYIFzGFjA2EeroDgMBCFG95F3RchIhHksVvAfI6PZF96BrjywIgb+MaLKEjoScQAEFFAAwVsYCWDlEhd4oKUGq/iGAAIHULRFgEtUoKUHGGDnVREQbMABBxOIueYPCUgwwQQMXDXnhNfIWUUQACH5BAUHAD8ALGIAYgA8ADwAAAb+wJ9wSCwaj4LkcclsOp2DX6HwrFqvwoIBy+0eqd7wcRBlbp2BH7ks9p6d02nbKABLBcc30z7/FtNFemOCfUQET4RFfIVGBo6Oh4FNBHp4jEOUjwZsQolCAp6XWUSLngGRomaqg6lNi5Y/nouARwG0TJG3RJoGBICJA6FEeAQEnEWoPwQCuspNZKiLe48/sIrX1j+62UTNRgNaRdxCmbwFx0MDAE91RmmUXOFGh7QF3ksAnALJ4k78huO4gGNyb16ic23k7RKyzko+hYz+9ZHWpmAbiWLYWGzVpeEljxxDivwjYECxkyhPohNzKqXLAcyyCGsFgJdNRwgxjox101z+lJU7efZ8hDBoraFElzWE5hIlUC8tm6q0ZbSqkI1YsGYFp5OLgk2FAux7pNVJAgYLEhQIaGUfsjkDGMhFiyAjRbZVFsydq+CANiu/OCbQu1dugpmf4DUJQHExHsYKCstN+6RxkQMaHlwp4MDvpwOEC3/F1YjOBA8fNiyoIkFCAyL5EISemwCoNG4KOHzY3QHC425CWreOkGDe4L21xRC4gPqDhwzFhWSYbmHLgAfCJWh2Z0DBgu8IgL77685Bh90feluyMD1DdQAAEGSPsBqJAQS9yjbK0NzDBc8/sEfdGQI4kN0DiIURQATn7cZBA7QI6N4bBkSQHQMhIbBBfxSe8CFhdUMEsEB2EBwAUiECUNCfBgvc8qEeA0CQ3WupLNBgehIc8yJ8PCYwnwKiDGBBfxnUVcSLRVyXnQNdcWHAhrz5ZsSOPMJ3AIkJWmFABh140AGIU7YHZjcNDPeAZV0QEEEGGljQ4hFIGsEZBA4s0GRWBzTAAFhwtleBJ4ccsIxVQ2BgKAWEYmHBBRZAkKgVB1j4QHSPonEAAoNeEgQAIfkEBQcAPwAsYgBjADwAOwAABv7An3BILBqPxAByyWw6iYRh4Umt/gJKqmCJzVqpg+1xKjSIi4CvWkjwEsk/89Kwbrp/g/FQbowO83VGaVB6ZWeBX4BlilJ7h4hVAXA/BY9wfH9FjJBDj1dvjkWTnEt+naCGpGoCk22NqUKeiF1IAJuKl7Kxdk4Em0OSSLlqprVEdL94x4qAYYGjQwDFbJ9LyUPF16K1A9BHukgB04EB3UYGBYzaSJ50fU0AAuNJqkfrSaz1Tulq5d6ImwoQAAdP3r81AA4GkldPzL0v5VTZ0kdRyKCKGDNySligo0ePbJz9mPdOI5OHJptEIZiy15UBBD7K9EgS4cybQpQA6MKzJ/6Wejt9Cr3YsmUAAwdUsYRYwAEGDKQkDSQ1YIEFDh4+IOBEwAC6AXesBEhAYUPWDx82LGUiwKtbfhANQNBwFq2HDhACJXT7duoTcQ0udEBrt4MGCQnCUvHHt6+TqhWwEv7gYQOFBYDcqdnZrbFXuEcCMMhQl3IHDA4KZDFQQQJKPAsMZIkX07NAxT8qdDh7N0OEA4cgYMhwgcG6AQkYMFBQJIA827quepiuYUKCTQkuZNh+4QGbLAK2VFWuPCkRzgX4VkLyQLuGCgzGDZAwPAMGCuYhSNj/+woC8gwscAR6HfnVRwIIqnYEA9px18AQ+vFn3njkbTWgc+E9Q0F9GLxIAEeEEvT3AwAGACggbpw4tR0GFggI4X4hmveDAAoAmEBGB1jAIQTFgCjiiAWYWI0+EXBYgYUvSphEcuQxR5ECDRLngBE+ysjGAgAiSYoA9K04gZVCVNncAQA6qQoBFTzFIgNHiKlJjcotoNAXBExgwQUWROCNm+cZgOVy+gjAAAQRPKAlEXwSIcABCB7KSTcC6fIAjBCAaZEAA2SKYkYOwPjAnEUZocADEEDAZqhWEIAAgpig+ld4m6oRBAAh+QQFBwA/ACxiAGMAOwA7AAAG/sCfcEgsGo2CIeHIbDqfzUFhmIRar8NAdGgYYL/g4nLofVbDRoDX4BwLy8XAkg1HE9VQ968uxAvZdkd1BWdKRHw/AlN/iIGKT3qIeoSBaY1EkUWPjJVHAYtCej+ZWaKdR35kmIdDqadOck2kP5+rr0ebP4ChrD+unaZGg1WkuVcEhVREoJrMBFrJvEPMYcZ0Rb9N2Y5MyES1V9tC1D+UgeJNWkXkVgFSRgYFl7fho+zB4fhoAqbRX/6+0LizVUkfGgB7pqirtJBeIocQI0qc+GSAAggVLmDYyLGjBYf6CoAyMGGDh5MoU5684JCdEQIGKHDw8KGmzZsfWNJzSYRN/syZOIPqvMWTyx4GFDBo2MC0qdOhFJm4IyCyqtWqUbNqhVJ0KxM1CSJUAPgFoZCG+xBg3MjgFBxvdgw0SIohQ4YL89q9IrBAgka7GTBARWPqGhSwESzUBYyhwgME5/jxREtEwIEHFRbbxWAhgoI+z8o2xAcXm4EIfzdfoNCWCgMHXakU0DMQ3tcEmTc3dhBHrQQJUOQYiFfIbGxfCehyhgBZTIPfvxt4EVBmgBbhww0Ek/wEwIEIFCpIUIAoQFjoEIYcYMCeARs1BbJ3kVXxgP2vBR5Aj7BAfXv3Z8GUXQGU3SLAAhFA9wAR67W3iyLyDWCWQwAYoN9vESTA4H+7jaghnzkODcAAdBLwtqGD38SXnUEC+fZbekU0yN4uvgzwIVmEOUBiayfOGIeAw7FYFgIJvniEjADeAeFwIHYCgAJF8nckh0ZgN1xeZSUAQQQRmGgEkjTKxiSWWFTY3gFMgInKAAS0iWNZ/Bgk4wJhZhHAnV5xsQB7/eV5TAILLKChn1YsSSChh9FSYCBBAAAh+QQFBwA/ACxiAGIAPAA8AAAG/sCfcEgsGo2A32AgCByf0KgU6hwKptis9jocaL9gIzdMPgYIBQLUO1Q/0e7ykWsojIlsYVweLggNBFV4RHt8W35ReT+FP4KGT2eEjkqERQCKj0+IPwaYioxFgZmhRJtCn1F2o0UCm52DbVCvq6ljqLRCZwezU6KUsWR3RgUSGhsWC8I/SU+3k75HBaZGCBcdHh4cEweTkVJezETKR5hDCBgdH+oeGhEGk5vQUQaNWOVCBxbX6h8eHRkNUMmTokpIkgL0tAxgYIGDB379OlhIUEXAuERFEhYpcG9IgAMQMuzjl23bJFoXWSUoNrIfu2mZ1JxMtKCCQ4gP+EyqM2Dm/pQABRxYe7jhUUc5Ag5EELngETMCKcMMSBBh1BWffKLi2srVCgIhFsKKHRsWKxkDaNOq/ZGm5wAHFTDInUt3Li1QGfU8sCA3g9+/gDPQOsqKwN6+gQMPzmIxAQQKFchKvmtPyBWEajOjNdu1s+cnl1ZxDiMAwQMJqzhmAtogggTUj+j4GQ2FwAIIr3PD/ALAFCCtSKaezp3bAe1m0b4kdUA8dwQGB4CH4SkFKAPXzSM4SGAl65M69chdby7hgQIiHxcQRo832sWgzSEw0LjMNgMG3L/9KXevY1DsETQQHSsI3HdfAldVEc5G0nVEAAMPQLDdEb0tYOAC7yihlhvCmrQ3xG6WoQHIEwIkYCB+XWwIhXRlBGDAiU2lmFZ7A60ygAInHoCHit+t1+IBJ56344ykfLgVAPbdt4COQ6JVSCtD8GKViQbm1+SItdxloZIwDcCjLD5+UcCWDHxlhJdEWnLLKGPepwAoaDpphhv0xYRAAgnUKaOcc3RBSwBLHBUnliSyiBJmUn6mxRnSFKToFwEIEOijZCy4ShAAIfkEBQcAPwAsYgBiADwAPAAABv7An3BILBqPAcFxyWw6n78BdEqtBgjVrHZZGGKXgPC2WXhYKAupUfkMqMdMBYbTwSiObCvcqNB4PB0UX0R5TAJdQgQBe0V9Hh8fHAyLhE+DP5eMPwYWjx8eFohDhVBvmj8BDRueHQ6UQqRFr6dLBBQdkB8ZCJVgprRGAQt+kB4Tb7GjopizwAMSuJAbC5TJiUQF1qUEBNYIGJ4eFV/Wh0MGv0QAzUUDDBQVEQl4Dxy5HA2L1plLbk8GES5gwHABggEjBSqEu4Doy6Bf6aoAFJghA4YKDS4FYLAKEoaDUDIBEMCPSQEIFCsOREOEwIQOG3iNcbNsSMQfAhIExFBR5f4FCQiUBFAAQVs/ITRrOSnQgEJKlRYedGFHxZoBLFSNHHhQYWDPlSCBGShws0kCCBZ49pQA7BSBBRMoXii7pVvWKQEMNL3AgNbBAXezCNhKt0rhtogTKw5GQIGDBxAiS54MoeSYAQUya95cJOcDCaBDiw4dOMthWAKIjl4NejEZnKpZj3ZtEtUBBg8i6N7NW7dR0waCCx9+sKaQA8iTKz/wu4qA59CjQ0dFuzqS09aPABiAII1bYCMPLGDAYB6j0lTWFVBAvj12JpazXEnQvj41OM2fbO9ev72CsNkVMZIB4/XHgAIHUBcAAHCUhQWDeIhn4AIIDLJdNlNcqMkA9JPZl0BNARQQnCJNjGScF0cZwWF9//2y3XCIiCEEg9vNdAR3CyyAIHWdiSgcOXg9cRMlJyJFAIyjaPdeFHu8OBwyKWYX4nCX5Eebk8GR1UuASPg4YmdcanekcBhuGaYyTzZj5WKHkImHFuhV5aOWa2RBIi0kZXbTmnrGWdVzWZnzxJqIzRLfmUwsGSCD3CBKhZ9ZBAEAIfkEBQcAPwAsYgBiADwAOwAABv7An3BILBqNAYJhOTg6n9DoU9CgUCQJqXbLJVA4nI2ES44Czk9DxsPGlN/GwSGRMASOh83n49FMBQJwUAcSFBUQBnh6fH5GAAMFBYJQCBUYGBcQTUV5e31SBYGTRZUYGRgWWZyLn1Gho0UFE6anEgSrno1EApJCBrewRQsWtBcMuIxGwEKvwUURtBgUvUKdybFDv85GCZYZpw6iP9atQndEzdtEDxffqAcA1ay6j0QGm29n+k8U0RGb5HQZKXDuCBonAuYoQECgIJEG7b5dUCAvl5MC+IgAEDCg4xMCDCBEiOAAgYB4RSREm3DrAKYL7YTwyrZsCIAAkIg4HEKgQf4ECUAhMDBwkogCYqcsINiSzlxOmuKI9PwJFOgDBQSJQMDEIOqRJD+07arpi4DXIQgcUK1KMsGAcwj+cZkpZCMBatmaHlkAoSrbBgdOnpVy5+bTWBmj+PQblAFZMoftPZaSdq3VnbB+Dd6i4IFfvJkxOgs5Rh1oZw22DTCrbkji1rBjmxGg5IDt27htb4ZDm4Dv38A7ngxQIMECBsiTK0f+WvYQSXcOHF9O/ZhzKE2kV6d+HfuP4gumb2fQ3Hki1vaWqF9vp3XH9/Df7+7e/eY2lK1xZg22umgwuwWINQpKGAWAXz4cBajefFpkVGA++rFnQAEHloHZD2ZVCAVOSrJI+MuFZCSCmH9PAOhhKPFoKMWBp3331hMRSijaELSBeARtu3w0RYfrPSiVEAOoqNNkaezIHnrYqBYWVDfetUSLP+zUC3GRRFLiRUtguBlHA2xWTzabEPecEyLe2ESXk9DFzDliMkOfjmAO0eZ3b95IjYBRUgMlfTU1Neee12V0TxF/1qlTkjrpKQWRzgxKqKKumLdfomO6wqAgSFLq5hFPZfqmQ4AaGqmoIZ5H6huejhIEACH5BAUHAD8ALGIAYgA8ADwAAAb+wJ9wSCwajQABgTAIHJ/QqDSqeDwaiKl2y/1BLJZKpEsuEymYdMXMFioLhQHUkslgLM/BAYEoONtFBQwODgxPCHR2eEYCDRYYFxEHgEUGDxESEQ4CRoh1d0cIFx2kGoaUQwYQEqwRCACwsZ6KRgMRHR4fHhwKqEMEDqysD3JEs6BEAQoZuboZxb4CCpjCC7Gwx4u/Ex0fuh2nvkPBwhAExonIQgEMG80eFpziQwirwgx/P9lEBhbvHAnmFWEgLJMBeum0CXjAwZuuCfkE/jhgb5i8fUIQYHin4SAbAnAICABwZAE1VgmwJRQyQEI3bx0gRBwSgJOAmUMGJFjAMwH+AZw/HhSEIGdfgAUa3j2DAqfAuSM6GUhlsABBkyIJTkpYl+xHy5e7FjACSaRAngRTpyowMDLWgAastLTTVSHANSFmA0ExoCCtWj8khTjIq+XBhizroNWSstMvVZ9/gEYxkO+pEZFaDDT2u+CAPDNvntzc4uRAX86APpe9agbBgrSKzVgWJ6BA44CUKqumxFccWclsgJcJIFyi8SPEBQxYzrz58uJknEsXMNorSAPYs2vHDt34zQEFtovHflxLAPDjxZeXcg59eu2B10OpOWCJ/fv2BdbHj395dfkArhffPEoI1F0ZsQU4BU4HKvjDbEJA6CAjPxA2D3hP/IQKa22ZFGgcZjkNKEUAhDkh4YJHGABiILsdAUAxs50X3mVM6dUgGxZWONkUENrExH4saeHhFMsx0WKGbmy3zolG3MiGAEq6odeERECpHZVM5WNldlNS6dEQW5JHxADbMUmJhT1GudeHUoT5JZZRuNkkAdsduZ6cjFiYICBNxXEEnlQyZ6dqb9YygJ13wtmGATkq2iQ0ezpaBHXEzRMEACH5BAEHAD8ALGIAYgA8ADwAAAb+wJ9wSCwajwGB8shsOp/Pg0KBIECv2OyvAYE8FtqwmAiRmB/j9HDAFgCYEbMEwhQUDIbBW10kJP4HA3BydEYBCRAREQxWfEQFCwwMCwh7RXFmhUUGEhcXFhQJjo+RkguNl4RGAg4XGK8WCKNECpKSCQFGmHNFAAgUGBkZGBSzRAi2kga6qkQDEMHCF2DGQ7W2CgKpmUUJFdEYEtVEB6WSB5Y/u5o/BRHgseNECckLgkPrQwEMFuDs4wEMmGNQCV+zHwYmgKugJokSN0zo2VpQwCC3H6wuCMtwoUE6IQGnKEBVRACBAigJQDQyUEEudc0QfBNGzFCBBhc2aLjw4KP+EDt48BQYEODjgWQMKi75EaARNJoXFBQZsIDCBg9YOWDwifFOUKFEi1xLcI+JII3hiAhIIEFDBw8fPnjocIFrU69fDai0VK7skwESLBwAaQBChrdx43rI0MDJALxfCxAommZw0wYWOMBN7IFDhWxQTuYF+1JMgKpXE8ely8DvE5OQhXLFAgExZw0OCpTO8jivNjUCNnDeMAHB7jABeusdhUCuZ3vGTh5Pg6EjyVm/Rx3QLa+7ljcOH4p/ODvN+PNMjVR0Ul7MdfUEwr73zmc+fTGu7xuxT2TZzwH8DdGePI0MqJ93Bh4IhR7G5OfIPdmNolJ3BSSYxV7mHeEgH0OfTceeE+t1t6EhI47i4RATGhPhFST1pl56R9jRxHSTaVGiGg7690ONWOyWRIAvoshEiFMJ4ZeOTLyEpBNANuFXiEQSORUBQAZg5RhPrtFHeVd6lyVI162ooJGPqDXmgmXqc92NaSxZ5BBSygjniWpIacSXzrhZDZt4NsFdg3rmCaeGJe2J5qCGNDmLhwPoaOd/93V5pjxyTjoGSpZmWE0QADs="},43:function(e,t,a){e.exports=a(76)},75:function(e,t,a){},76:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),l=a(37),s=a.n(l),c=a(6),o=a(7),i=a(9),m=a(8),u=a(10),d=a(14),p=a(17),E=a(4),g=Object(n.createContext)(),b=function(e){var t=e.icon,a=e.title,l=Object(p.f)(),s=Object(n.useContext)(g).searchExperiments,c=Object(n.useState)(""),o=Object(E.a)(c,2),i=o[0],m=o[1];return r.a.createElement("nav",{className:"navbar navbar-expand-sm navbar-dark bg-dark mb-3"},r.a.createElement("div",{className:"container"},r.a.createElement(d.b,{className:"navbar-brand",to:"/autosubmitapp/"},r.a.createElement("i",{className:t})," ",a),r.a.createElement("ul",{className:"navbar-nav mr-auto mt-2 mt-lg-0"},r.a.createElement("li",{className:"nav-item"},r.a.createElement(d.b,{className:"nav-link",to:"/autosubmitapp/"},"Home")),r.a.createElement("li",{className:"nav-item"},r.a.createElement(d.b,{className:"nav-link",to:"/autosubmitapp/about"},r.a.createElement("u",null,"About")))),l&&"/autosubmitapp/"!==l.location.pathname&&"/autosubmitapp"!==l.location.pathname&&r.a.createElement("form",{className:"form-inline my-2 my-lg-0",onSubmit:function(e){e.preventDefault(),""!==i&&(s(i),l.push("/autosubmitapp/"))}},r.a.createElement("input",{type:"search",className:"form-control mr-sm-2",placeholder:"Search Experiments","aria-label":"Search",value:i,onChange:function(e){return m(e.target.value)}}),r.a.createElement("button",{className:"btn btn-outline-light my-2 my-sm-0",type:"submit"},"Search"))))};b.defaultProps={title:"Autosubmit Searcher",icon:"fas fa-home"};var h=b,A=Object(n.createContext)(),N=function(){var e=Object(n.useContext)(A).alert;return null!==e&&r.a.createElement("div",{className:"alert alert-".concat(e.type)},r.a.createElement("i",{className:"fas fa-info-circle"})," ",e.msg)},v=function(){return r.a.createElement(n.Fragment,null,r.a.createElement("h3",null,"User Information"),r.a.createElement("p",null,"For user instructions visit our user guide"," ",r.a.createElement("a",{href:"https://autosubmit.readthedocs.io/en/latest/autosubmit-gui.html"},"User Guide"),"."),r.a.createElement("p",null,"To request more information make a post in the issue"," ",r.a.createElement("a",{href:"https://earth.bsc.es/gitlab/es/autosubmit/issues/506"},"Autosubmit User Documentation"),"."),r.a.createElement("h3",null,"Bugs and Requests"),r.a.createElement("p",null,"If you find a bug or want to request some important feature, please open an issue at"," ",r.a.createElement("a",{href:"https://earth.bsc.es/gitlab/es/autosubmit/issues"},"Autosubmit Issues"),"."),r.a.createElement("p",null,"Version: 1.0.0-beta"))},f=function(){return r.a.createElement("div",null,r.a.createElement("h1",null,"Oops!"),r.a.createElement("p",null,"Looks like you are lost. Better go back home."),r.a.createElement(d.b,{to:"/autosubmitapp/",className:"btn btn-light"},"Back Home"))},y=a(40),x=a.n(y),k=function(){return r.a.createElement(n.Fragment,null,r.a.createElement("img",{src:x.a,alt:"Loading...",style:{width:"200px",margin:"auto",display:"block"}}))},w=function(e){var t=e.expidToken,a=(e.refTree,Object(n.useContext)(g)),l=a.getExperiment,s=a.getExperimentTree,c=a.loading,o=a.loadingState,i=a.experiment,m=a.experimentRunning,u=a.getRunningState;if(Object(n.useEffect)((function(){l(t),u(t),s(t);var e=setInterval((function(){return u(t)}),3e5);return function(){return clearInterval(e)}}),[]),null===i)return r.a.createElement(k,null);var p=i.expid,E=i.description,b=i.error,h=i.error_message;return c?r.a.createElement(k,null):r.a.createElement("div",null,r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-md-1 pr-0"},r.a.createElement(d.b,{to:"/autosubmitapp/",className:"btn btn-light"},r.a.createElement("small",null,"Back To Search"))),r.a.createElement("div",{className:"col-md-11"},r.a.createElement("div",{className:"card"},r.a.createElement("div",{className:"card-header pt-1 pb-0"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-10 text-left"},r.a.createElement("strong",{className:"h3 font-weight-bold"},p)," ",E," ",b&&r.a.createElement("pre",{className:"text-danger"},h)),r.a.createElement("div",{className:"col-2 text-right"},o&&r.a.createElement("span",{className:"badge badge-dark text-right"},"LOADING..."),m&&!o&&r.a.createElement("span",{className:"badge badge-success text-right"},"RUNNING"),!m&&!o&&r.a.createElement("span",{className:"badge badge-secondary text-right"},"NOT RUNNING"))))))))},T=function(e){e.expidToken,e.refTree;var t=Object(n.useContext)(g),a=t.loading,l=t.experiment;if(null===l)return r.a.createElement(k,null);var s=l.owner,c=l.owner_id,o=l.path,i=l.time_last_mod,m=l.version,u=l.updateTime,d=l.branch,p=l.hpc;return a?r.a.createElement(k,null):r.a.createElement("div",null,r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12 pr-0"},r.a.createElement("div",{className:"card"},r.a.createElement("div",{className:"card-text m-2"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-md-12"},r.a.createElement("div",null,r.a.createElement("small",{className:"font-weight-bold"},"Version:")),r.a.createElement("div",null,m),r.a.createElement("div",null,r.a.createElement("small",{className:"font-weight-bold"},"Owner:")),r.a.createElement("div",null,c," ",s),r.a.createElement("div",null,r.a.createElement("small",{className:"font-weight-bold"},"Path:")),r.a.createElement("div",null,r.a.createElement("span",null,o)),r.a.createElement("div",null,r.a.createElement("small",{className:"font-weight-bold"},"SleepTime: ")),r.a.createElement("div",null,u),r.a.createElement("div",null,r.a.createElement("small",{className:"font-weight-bold"},"Modified:")),r.a.createElement("div",null,i))))),r.a.createElement("div",{className:"card-footer p-1 text-center scroll-x"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-md-12"},r.a.createElement("div",null,r.a.createElement("small",null,"Branch:")),r.a.createElement("div",{className:"lead"},d),r.a.createElement("div",null,r.a.createElement("small",null,"Hpc:")),r.a.createElement("div",{className:"lead"},p)))))))},C=a(22),S=function(e){function t(){var e,a;Object(c.a)(this,t);for(var n=arguments.length,r=new Array(n),l=0;l0&&null!==this.props.data.edges))return r.a.createElement("div",{className:"card-body text-left",style:B},r.a.createElement("p",{className:"lead"},"Something has gone very wrong."),r.a.createElement("p",{className:"lead text-danger"},this.props.data.error_message));!0===a?this.props.data.nodes.map((function(t){return e.push({id:t.id,label:t.label,shape:t.shape,color:{background:t.status_color,border:"black"},status:t.status,x:t.x,y:t.y,shapeProperties:{borderDashes:t.dashed}})})):this.props.data.nodes.map((function(t){return e.push({id:t.id,label:t.label,shape:t.shape,color:{background:t.status_color,border:"black"},status:t.status,shapeProperties:{borderDashes:t.dashed},x:t.x,y:t.y})})),this.props.data.edges&&this.props.data.edges.map((function(e){return t.push({id:e.id,from:e.from,to:e.to,dashes:e.dashed,background:{enabled:e.is_wrapper,color:"rgba(63, 191, 63, 0.5)"},arrows:{to:{enabled:!e.dashed}}})})),this.props.data.fake_edges&&this.props.data.fake_edges.map((function(e){return t.push({id:e.id,from:e.from,to:e.to,dashes:e.dashed,background:{enabled:e.is_wrapper,color:"rgba(63, 191, 63, 0.5)"},arrows:{to:{enabled:!e.dashed}}})}));var p=new C.a.DataSet(e),E=new C.a.DataSet(t),g=!1;this.props.data.total_jobs<=500&&(g=!0);var b={autoResize:!0,edges:{arrows:{to:{enabled:!0}}},layout:{improvedLayout:!1,hierarchical:{nodeSpacing:190,blockShifting:!1,edgeMinimization:g,parentCentralization:!0,sortMethod:"hubsize",direction:"UD",enabled:!1}},interaction:{dragNodes:!0,hoverConnectedEdges:!0,hideEdgesOnDrag:!0,multiselect:!0,navigationButtons:!0},physics:{enabled:!1,stabilization:{enabled:!0,iterations:1e3}},nodes:{shape:"dot",font:{size:10}}},h={nodes:p,edges:E},A=function(e){function t(){return Object(c.a)(this,t),Object(i.a)(this,Object(m.a)(t).apply(this,arguments))}return Object(u.a)(t,e),Object(o.a)(t,[{key:"shouldComponentUpdate",value:function(e,t){return!0===this.props.shouldUpdateGraph}},{key:"componentDidMount",value:function(){var e=this,t=new C.a.Network(this.refs.myRef,this.props.graph,this.props.options),a=this.props.groups_data,n=this.props.current_grouped;if(this.props.setVisNetwork(t),t.on("select",(function(a){a.nodes&&1===a.nodes.length&&(t.isCluster(a.nodes[0])||e.props.updateSelection(a.nodes))})),t.on("doubleClick",(function(e){if(e.nodes&&1===e.nodes.length&&t.isCluster(e.nodes[0])){var a={releaseFunction:function(e,t){return t}};t.openCluster(e.nodes[0],a)}})),this.props.clusterGroups){var r=this.props.clusterGroups;if("date-member"===n)for(var l,s=0;s=0&&r.a.createElement("span",{className:"badge text-center",style:{width:"100%",backgroundColor:"SUBMITTED"===c.status?"cyan":"pink",color:"black"}},r.a.createElement("small",null,"SUBMITTED"===c.status?"Submit":"Queue",":")," ",c.minutes_queue," ",r.a.createElement("small",null,"min."))),r.a.createElement("div",{className:"col-md-6"},c.minutes>0&&r.a.createElement("span",{className:"badge badge-success text-center ml-1",style:{width:"100%"}},r.a.createElement("small",null,"Run:")," ",c.minutes," ",r.a.createElement("small",null,"min.")))),r.a.createElement("div",{className:"row py-1"},r.a.createElement("div",{className:"col-md-6 p-0"},r.a.createElement("span",{className:"badge text-center",style:{width:"100%",backgroundColor:c.status_color,color:"RUNNING"===c.status?"white":"black"}},"Status:",r.a.createElement("strong",null," ",c.status))),r.a.createElement("div",{className:"col-md-3 px-1"},c.children_list&&c.children_list.length>0&&r.a.createElement("button",{className:"btn btn-dark btn-sm btn-block","data-toggle":"modal","data-target":"#childrenList"},r.a.createElement("small",null,r.a.createElement("strong",null,"Out:")," ",c.children)),c.children_list&&0===c.children_list.length&&r.a.createElement("small",null,r.a.createElement("strong",null,"Out:")," ",c.children)),r.a.createElement("div",{className:"col-md-3 px-1"},c.parent_list&&c.parent_list.length>0&&r.a.createElement("button",{className:"btn btn-dark btn-sm btn-block","data-toggle":"modal","data-target":"#parentList"},r.a.createElement("small",null,r.a.createElement("strong",null,"In:")," ",c.parents)),c.parent_list&&0===c.parent_list.length&&r.a.createElement("small",null,r.a.createElement("strong",null,"In:")," ",c.parents))),r.a.createElement("div",null,c.out&&r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12 px-0"},r.a.createElement("form",{onSubmit:o("g_out"),className:"form"},r.a.createElement("div",{className:"input-group input-group-sm"},r.a.createElement("input",{className:"form-control py-0",type:"text",value:c.out,id:"g_out",readOnly:!0}),r.a.createElement("div",{className:"input-group-append"},r.a.createElement("input",{type:"submit",className:"btn btn-light btn-sm py-0",value:"Copy out"})))))),c.err&&r.a.createElement("div",{className:"row mt-1"},r.a.createElement("div",{className:"col-12 px-0"},r.a.createElement("form",{onSubmit:o("g_err"),className:"form"},r.a.createElement("div",{className:"input-group input-group-sm"},r.a.createElement("input",{className:"form-control py-0",type:"text",value:c.err,id:"g_err",readOnly:!0}),r.a.createElement("div",{className:"input-group-append"},r.a.createElement("input",{type:"submit",className:"btn btn-light btn-sm py-0",value:"Copy err"})))))))))))),!c&&a&&r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12"},r.a.createElement("div",{className:"card text-white bg-info",style:U},r.a.createElement("div",{className:"card-header text-center py-0"},r.a.createElement("small",null,"Here goes the Job Id")),r.a.createElement("div",{className:"card-body"},r.a.createElement("div",{className:"text-center"},r.a.createElement("small",null,"Select a Node to see more information.")))))),c&&c.children_list&&c.children_list.length>0&&r.a.createElement("div",{className:"modal fade",id:"childrenList",tabIndex:"-1",role:"dialog","aria-labelledby":"childrenListTitle","aria-hidden":"true"},r.a.createElement("div",{className:"modal-dialog",role:"document"},r.a.createElement("div",{className:"modal-content"},r.a.createElement("div",{className:"modal-header"},r.a.createElement("h5",{className:"modal-title",id:"childrenListTitle"},"Children List"),r.a.createElement("button",{className:"close",type:"button","data-dismiss":"modal","aria-label":"Close"},r.a.createElement("span",{"aria-hidden":"true"},"\xd7"))),r.a.createElement("div",{className:"modal-body"},r.a.createElement("ul",null,c.children_list.map((function(e,t){return r.a.createElement("li",{key:t},e)})))),r.a.createElement("div",{className:"modal-footer"},r.a.createElement("button",{type:"button",className:"btn btn-secondary","data-dismiss":"modal"},"Close"))))),c&&c.parent_list&&c.parent_list.length>0&&r.a.createElement("div",{className:"modal fade",id:"parentList",tabIndex:"-1",role:"dialog","aria-labelledby":"parentListTitle","aria-hidden":"true"},r.a.createElement("div",{className:"modal-dialog",role:"document"},r.a.createElement("div",{className:"modal-content"},r.a.createElement("div",{className:"modal-header"},r.a.createElement("h5",{className:"modal-title",id:"parentListTitle"},"Parent List"),r.a.createElement("button",{className:"close",type:"button","data-dismiss":"modal","aria-label":"Close"},r.a.createElement("span",{"aria-hidden":"true"},"\xd7"))),r.a.createElement("div",{className:"modal-body"},r.a.createElement("ul",null,c.parent_list.map((function(e,t){return r.a.createElement("li",{key:t},e)})))),r.a.createElement("div",{className:"modal-footer"},r.a.createElement("button",{type:"button",className:"btn btn-secondary","data-dismiss":"modal"},"Close"))))))},Q={height:400},L={height:30},P=function(){var e=Object(n.useContext)(g),t=e.selectedTreeNode,a=e.treedata,l=e.experiment,s=null,c="";t&&t.node&&t.node.refKey?(c=t.node.refKey,s=a&&a.jobs?a.jobs.find((function(e){return e.id===c})):null):s=null;var o=function(e){return function(t){t.preventDefault(),console.log("Sending "+e),window.copyToClip(e)}};return r.a.createElement(n.Fragment,null,s&&r.a.createElement(n.Fragment,null,r.a.createElement("div",{className:"col-12 px-0"},r.a.createElement("div",{className:"card text-white bg-info",style:Q},r.a.createElement("div",{className:"card-header text-center p-0",style:L},r.a.createElement("div",{className:"mh-100 px-0 mx-0"},r.a.createElement("small",null,r.a.createElement("strong",null,s.id)))),r.a.createElement("div",{className:"card-body py-0"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-md-6"},r.a.createElement("small",null,r.a.createElement("strong",null,"Start:")," ",s.date)),r.a.createElement("div",{className:"col-md-6"},r.a.createElement("small",null,r.a.createElement("strong",null,"End:")," ",s.date_plus))),r.a.createElement("div",null,r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12"},r.a.createElement("small",null,r.a.createElement("strong",null,"Section:")," ",s.section)))),r.a.createElement("div",null,r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-md-6"},r.a.createElement("small",null,r.a.createElement("strong",null,"Member:")," ",s.member)),r.a.createElement("div",{className:"col-md-6"},r.a.createElement("small",null,r.a.createElement("strong",null,"Chunk:")," ",s.chunk)))),r.a.createElement("div",null,r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12"},r.a.createElement("small",null,r.a.createElement("strong",null,"Platform:")," ",s.platform_name&&s.platform_name," ",!s.platform_name&&l.hpc)))),r.a.createElement("div",null,r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-6"},r.a.createElement("small",null,r.a.createElement("strong",null,"Processors:")," ",s.processors)),r.a.createElement("div",{className:"col-6"},r.a.createElement("small",null,r.a.createElement("strong",null,"Wallclock:")," ",s.wallclock)))),r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-md-6"}," ",s.minutes_queue>=0&&r.a.createElement("span",{className:"badge text-center",style:{width:"100%",backgroundColor:"SUBMITTED"===s.status?"cyan":"pink",color:"black"}},r.a.createElement("small",null,"SUBMITTED"===s.status?"Submit":"Queue",":")," ",s.minutes_queue," ",r.a.createElement("small",null,"min."))),r.a.createElement("div",{className:"col-md-6"},s.minutes>0&&r.a.createElement("span",{className:"badge badge-success text-center ml-1",style:{width:"100%"}},r.a.createElement("small",null,"Run:")," ",s.minutes," ",r.a.createElement("small",null,"min.")))),r.a.createElement("div",{className:"row py-1"},r.a.createElement("div",{className:"col-md-6 p-0"},r.a.createElement("span",{className:"badge text-center",style:{width:"100%",backgroundColor:s.status_color,color:"RUNNING"===s.status?"white":"black"}},"Status:",r.a.createElement("strong",null," ",s.status))),r.a.createElement("div",{className:"col-md-3 px-1"},s.children_list&&s.children_list.length>0&&r.a.createElement("button",{className:"btn btn-dark btn-sm btn-block","data-toggle":"modal","data-target":"#childrenList-tree"},r.a.createElement("small",null,r.a.createElement("strong",null,"Out:")," ",s.children)),s.children_list&&0===s.children_list.length&&r.a.createElement("small",null,r.a.createElement("strong",null,"Out:")," ",s.children)),r.a.createElement("div",{className:"col-md-3 px-1"},s.parent_list&&s.parent_list.length>0&&r.a.createElement("button",{className:"btn btn-dark btn-sm btn-block","data-toggle":"modal","data-target":"#parentList-tree"},r.a.createElement("small",null,r.a.createElement("strong",null,"In:")," ",s.parents)),s.parent_list&&0===s.parent_list.length&&r.a.createElement("small",null,r.a.createElement("strong",null,"In:")," ",s.parents))),s.custom_directives&&s.custom_directives.length>0&&r.a.createElement("div",null,r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12"},r.a.createElement("small",null,r.a.createElement("strong",null,"Custom Directives:")))),r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12"},r.a.createElement("small",null,s.custom_directives)))),s.wrapper&&r.a.createElement("div",null,r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12"},r.a.createElement("small",null,r.a.createElement("strong",null,"Wrapper:")))),r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12"},r.a.createElement("small",null,s.wrapper)))),s.wrapper_code&&r.a.createElement("div",null,r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-6"},r.a.createElement("small",null,r.a.createElement("strong",null,"Code:"))),r.a.createElement("div",{className:"col-6"},r.a.createElement("small",null,s.wrapper_code)))),r.a.createElement("div",null,s.out&&r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12 px-0"},r.a.createElement("form",{onSubmit:o("g_out_t"),className:"form"},r.a.createElement("div",{className:"input-group input-group-sm"},r.a.createElement("input",{className:"form-control py-0",type:"text",value:s.out,id:"g_out_t",readOnly:!0}),r.a.createElement("div",{className:"input-group-append"},r.a.createElement("input",{type:"submit",className:"btn btn-light btn-sm py-0",value:"Copy out"})))))),s.err&&r.a.createElement("div",{className:"row mt-1"},r.a.createElement("div",{className:"col-12 px-0"},r.a.createElement("form",{onSubmit:o("g_err_t"),className:"form"},r.a.createElement("div",{className:"input-group input-group-sm"},r.a.createElement("input",{className:"form-control py-0",type:"text",value:s.err,id:"g_err_t",readOnly:!0}),r.a.createElement("div",{className:"input-group-append"},r.a.createElement("input",{type:"submit",className:"btn btn-light btn-sm py-0",value:"Copy err"}))))))))))),!s&&a&&a.jobs&&r.a.createElement("div",{className:"col-12 px-0"},r.a.createElement("div",{className:"card text-white bg-info",style:Q},r.a.createElement("div",{className:"card-header text-center py-0"},r.a.createElement("small",null,"Here goes the Job Id")),r.a.createElement("div",{className:"card-body"},r.a.createElement("div",{className:"text-center"},r.a.createElement("small",null,"Select a Node to see more information."))))),s&&s.children_list&&s.children_list.length>0&&r.a.createElement("div",{className:"modal fade",id:"childrenList-tree",tabIndex:"-1",role:"dialog","aria-labelledby":"childrenListTitle-tree","aria-hidden":"true"},r.a.createElement("div",{className:"modal-dialog",role:"document"},r.a.createElement("div",{className:"modal-content"},r.a.createElement("div",{className:"modal-header"},r.a.createElement("h5",{className:"modal-title",id:"childrenListTitle-tree"},"Children List"),r.a.createElement("button",{className:"close",type:"button","data-dismiss":"modal","aria-label":"Close"},r.a.createElement("span",{"aria-hidden":"true"},"\xd7"))),r.a.createElement("div",{className:"modal-body"},r.a.createElement("ul",null,s.children_list.map((function(e,t){return r.a.createElement("li",{key:t},e)})))),r.a.createElement("div",{className:"modal-footer"},r.a.createElement("button",{type:"button",className:"btn btn-secondary","data-dismiss":"modal"},"Close"))))),s&&s.parent_list&&s.parent_list.length>0&&r.a.createElement("div",{className:"modal fade",id:"parentList-tree",tabIndex:"-1",role:"dialog","aria-labelledby":"parentListTitle-tree","aria-hidden":"true"},r.a.createElement("div",{className:"modal-dialog",role:"document"},r.a.createElement("div",{className:"modal-content"},r.a.createElement("div",{className:"modal-header"},r.a.createElement("h5",{className:"modal-title",id:"parentListTitle-tree"},"Parent List"),r.a.createElement("button",{className:"close",type:"button","data-dismiss":"modal","aria-label":"Close"},r.a.createElement("span",{"aria-hidden":"true"},"\xd7"))),r.a.createElement("div",{className:"modal-body"},r.a.createElement("ul",null,s.parent_list.map((function(e,t){return r.a.createElement("li",{key:t},e)})))),r.a.createElement("div",{className:"modal-footer"},r.a.createElement("button",{type:"button",className:"btn btn-secondary","data-dismiss":"modal"},"Close"))))))},M=function(e){function t(e){var a;return Object(c.a)(this,t),(a=Object(i.a)(this,Object(m.a)(t).call(this,e))).rundata=null,a}return Object(u.a)(t,e),Object(o.a)(t,[{key:"componentDidMount",value:function(){var e=this;this.props.getExperimentRun(this.props.experiment.expid),this.props.experimentRunning&&(this.interval=setInterval((function(){return e.props.getExperimentRun(e.props.experiment.expid)}),1e3*this.props.experiment.updateTime))}},{key:"componentWillUnmount",value:function(){this.props.cleanRunData(),this.props.experimentRunning&&clearInterval(this.interval)}},{key:"componentDidUpdate",value:function(){window.scrollToBottom()}},{key:"render",value:function(){if(null===this.props.rundata)return r.a.createElement(n.Fragment,null,r.a.createElement("div",null,"Loading..."));var e=this.props.rundata,t=e.logcontent,a=e.error,l=e.error_message,s=e.found,c=e.logfile,o=e.lastModified,i=e.timeStamp,m=t.map((function(e){return r.a.createElement("li",{key:e.index},r.a.createElement("small",null,e.content))}));return a?r.a.createElement(n.Fragment,null,r.a.createElement("div",null,l),r.a.createElement("br",null),r.a.createElement("hr",null)):s?r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12"},r.a.createElement("div",{className:"row px-1"},r.a.createElement("div",{className:"col-6 text-left"},r.a.createElement("small",null,"Logfile: ",c)," ",r.a.createElement("small",{className:"text-muted"},"(",i,")")),r.a.createElement("div",{className:"col-6 text-right"},r.a.createElement("small",null,"Last Modified: ",o))),r.a.createElement("pre",{className:"bash mb-0 scroll",id:"log_scroll"},r.a.createElement("ul",{style:Y,className:"p-1 mb-0 ul-2"},m)),r.a.createElement("div",{className:"text-muted text-center"},r.a.createElement("small",null,"Showing last 150 lines.")))):r.a.createElement(n.Fragment,null,r.a.createElement("div",null,"Running log not found. This experiment might not be currently running on Autosubmit."),r.a.createElement("br",null),r.a.createElement("hr",null))}}]),t}(n.Component),Y={listStyleType:"none"},H=M,J=function(e){function t(){return Object(c.a)(this,t),Object(i.a)(this,Object(m.a)(t).apply(this,arguments))}return Object(u.a)(t,e),Object(o.a)(t,[{key:"componentDidMount",value:function(){var e=this;this.props.experiment&&(this.props.getExperimentPkl(this.props.experiment.expid,this.props.experiment.pkl_timestamp),this.props.experimentRunning&&(this.interval=setInterval((function(){return e.props.getExperimentPkl(e.props.experiment.expid,e.props.experiment.pkl_timestamp)}),2e3*this.props.experiment.updateTime)))}},{key:"componentWillUnmount",value:function(){this.props.cleanPklData(),this.props.experimentRunning&&clearInterval(this.interval)}},{key:"render",value:function(){var e=this.props,t=e.loadingPkl,a=e.pklchanges;return r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12"},r.a.createElement("div",{className:"card"},r.a.createElement("div",{className:"card-header text-center py-0"},r.a.createElement("small",null,"Monitoring jobs...")),r.a.createElement("div",{className:"card-body p-0"},a&&r.a.createElement("pre",{className:"scroll-y"},a),t&&r.a.createElement("small",null,"Loading...")))))}}]),t}(n.Component),K=function(e){function t(){return Object(c.a)(this,t),Object(i.a)(this,Object(m.a)(t).apply(this,arguments))}return Object(u.a)(t,e),Object(o.a)(t,[{key:"componentDidMount",value:function(){var e=this;this.props.experiment&&(this.props.getExperimentTreePkl(this.props.experiment.expid,this.props.experiment.pkl_timestamp),this.props.experimentRunning&&(this.interval=setInterval((function(){return e.props.getExperimentTreePkl(e.props.experiment.expid,e.props.experiment.pkl_timestamp)}),2e3*this.props.experiment.updateTime)))}},{key:"componentWillUnmount",value:function(){this.props.cleanPklTreeData(),this.props.experimentRunning&&clearInterval(this.interval)}},{key:"render",value:function(){var e=this.props,t=e.loadingTreePkl,a=e.pkltreechanges;return r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12"},r.a.createElement("div",{className:"card"},r.a.createElement("div",{className:"card-header text-center py-0"},r.a.createElement("small",null,"Monitoring jobs...")),r.a.createElement("div",{className:"card-body p-0"},a&&r.a.createElement("pre",{className:"scroll-y-tree"},a),t&&r.a.createElement("small",null,"Loading...")))))}}]),t}(n.Component),W=function(){var e=Object(n.useContext)(g).navToLatest,t=function(t){var a=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return function(n){n.preventDefault(),e(t,a)}};return r.a.createElement("div",{className:"row card-body py-1"},r.a.createElement("div",{className:"col-1 px-1"},r.a.createElement("form",{onSubmit:t(0,!1),className:"form"},r.a.createElement("input",{type:"submit",value:"Waiting",className:"btn btn-block btn-sm",style:{background:"gray"}}))),r.a.createElement("div",{className:"col-1 px-1"},r.a.createElement("form",{onSubmit:t(1),className:"form"},r.a.createElement("input",{type:"submit",value:"Ready",className:"btn btn-block btn-sm",style:{background:"lightblue"}}))),r.a.createElement("div",{className:"col-1 px-1"},r.a.createElement("form",{onSubmit:t(2),className:"form"},r.a.createElement("input",{type:"submit",value:"Submitted",className:"btn btn-block btn-sm",style:{background:"cyan"}}))),r.a.createElement("div",{className:"col-1 px-1"},r.a.createElement("form",{onSubmit:t(3),className:"form"},r.a.createElement("input",{type:"submit",value:"Queue",className:"btn btn-block btn-sm",style:{background:"lightpink"}}))),r.a.createElement("div",{className:"col-1 px-1"},r.a.createElement("form",{onSubmit:t(4),className:"form"},r.a.createElement("input",{type:"submit",value:"Running",className:"btn btn-block btn-sm",style:{background:"green"}}))),r.a.createElement("div",{className:"col-1 px-1"},r.a.createElement("form",{onSubmit:t(5),className:"form"},r.a.createElement("input",{type:"submit",value:"Completed",className:"btn btn-block btn-sm",style:{background:"yellow"}}))),r.a.createElement("div",{className:"col-1 px-1"},r.a.createElement("form",{onSubmit:t(-1),className:"form"},r.a.createElement("input",{type:"submit",value:"Failed",className:"btn btn-block btn-sm",style:{background:"red"}}))),r.a.createElement("div",{className:"col-1 px-1"},r.a.createElement("form",{onSubmit:t(-3),className:"form"},r.a.createElement("input",{type:"submit",value:"Suspended",className:"btn btn-block btn-sm",style:{background:"orange"}}))),r.a.createElement("div",{className:"col-1 px-1"},r.a.createElement("form",{onSubmit:t(-2),className:"form"},r.a.createElement("input",{type:"submit",value:"Unknown",className:"btn btn-block btn-sm",style:{background:"white",color:"black"}}))),r.a.createElement("div",{className:"col-1 px-1"},r.a.createElement("form",{onSubmit:t(6),className:"form"},r.a.createElement("input",{type:"submit",value:"Hold",className:"btn btn-block btn-sm",style:{background:"salmon"}}))),r.a.createElement("div",{className:"col-1 px-1 text-left"},r.a.createElement("small",null," \u2190 CLICKABLE ")))},q=a(41),V=function(){var e=Object(n.useContext)(I),t=Object(n.useContext)(g),a=e.getExperimentStats,l=e.statdata,s=e.loading,c=e.clearStats,o=e.isError,i=e.errorMessage,m=e.totaldata,u=e.ticksdata,d=t.experiment,p={chartArea:{width:"90%",height:"700px"},hAxis:{title:"Jobs",ticks:u},vAxis:{title:"Hours"},legend:{position:"top"},explorer:{actions:["dragToZoom","rightClickToReset"],axis:"horizontal"}},b=null;m&&m.stats&&m.stats.totals&&(b=m.stats.totals.map((function(e,t){return r.a.createElement("li",{key:t},e)})));var h=Object(n.useState)(""),A=Object(E.a)(h,2),N=A[0],v=A[1],f=Object(n.useState)(""),y=Object(E.a)(f,2),x=y[0],w=y[1];return r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-md-4 offset-md-4 text-center"},!l&&d&&!1===t.loading&&r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),console.log(d.expid),console.log("Hours : "+N),console.log("Type : "+x),a(d.expid,N,x)},className:"form"},r.a.createElement("div",{className:"input-group input-group-sm"},r.a.createElement("input",{className:"form-control",type:"text",name:"section",placeholder:"Section",onChange:function(e){return w(e.target.value)}}),r.a.createElement("input",{className:"form-control",type:"text",name:"hours",placeholder:"Hours",onChange:function(e){return v(e.target.value)}}),r.a.createElement("div",{className:"input-group-append"},r.a.createElement("input",{type:"submit",value:"Get Statistics",className:"btn btn-info",disabled:s})))),l&&r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),v(""),w(""),c()},className:"form"},r.a.createElement("div",{className:""},r.a.createElement("input",{type:"submit",value:"Clear Statistics",className:"btn btn-dark btn-sm"})))),r.a.createElement("div",{className:"col-md-12"},!l&&d&&r.a.createElement("div",{className:"col-md-12 p-3"},r.a.createElement("p",{className:"lead"},"Supply a Section (Type) in the appropriate textbox to filter the jobs that will be included in the query. Also, you can also supply the Hours value that determines how many hours before the current time you want to query. Leave both empty and a query for Any Section since the date of creation of the experiment will be executed."),r.a.createElement("p",{className:"lead"},"Press ",r.a.createElement("span",{className:"badge badge-info"},"Get Statistics")," to generate the statistics, this will generate a Bar Chart and some extra statistics below. Drag the mouse inside the chart to zoom in; however, zoom in capabilities are not unlimited, so try to narrow your query.")),s&&r.a.createElement(k,null),l&&!o&&r.a.createElement(q.a,{chartType:"ColumnChart",loader:r.a.createElement("div",null,"Loading Chart"),width:"100%",height:"700px",data:l,options:p}),l&&o&&r.a.createElement("div",{className:"col-md-12 text-center p-3"},i),m&&r.a.createElement("div",{className:"col-md-8 offset-md-4 mt-2"},m&&r.a.createElement("ul",{style:{listStyleType:"none"}},b&&b))))},Z=function(){var e=Object(n.useContext)(g),t=e.searchJobInGraph,a=e.foundNodes,l=e.loadingSearchJob,s=e.data,c=e.navigateTo,o=Object(n.useState)(""),i=Object(E.a)(o,2),m=i[0],u=i[1],d=Object(n.useState)(""),p=Object(E.a)(d,2),b=p[0],h=p[1],A=function(e){return function(t){if(t.preventDefault(),a){var n=b+e;n>=0&&n=a.length&&(c(a[0].id),h(0))}}};return r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-md-4"},r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),t(m),h(0)},className:"form"},r.a.createElement("div",{className:"input-group input-group-sm"},r.a.createElement("input",{className:"form-control",type:"text",name:"section",placeholder:"Job Name (e.g. fc0_1_CLEAN)",onChange:function(e){return u(e.target.value)}}),l&&r.a.createElement("span",null,"Searching..."),!l&&r.a.createElement("div",{className:"input-group-append"},r.a.createElement("input",{type:"submit",value:"Search by Job Name",className:"btn btn-dark btn-sm"}))))),r.a.createElement("div",{className:"col-md-3 text-center"},a&&a.length>1&&r.a.createElement("div",null,r.a.createElement("button",{className:"btn-sm btn-info",type:"button",onClick:A(-1)},"Previous"),r.a.createElement("button",{className:"btn-sm btn-info",type:"button",onClick:A(1)},"Next"),r.a.createElement("small",{className:"text-muted ml-2"},b+1," of ",a.length))),r.a.createElement("div",{className:"col-md-5 text-right text-muted"},s&&r.a.createElement("small",null,"Max out: ",s.max_children," | Max in: ",s.max_parents," | Total #Jobs: ",s.total_jobs," | Chunk unit: ",r.a.createElement("strong",null,s.chunk_unit))))},z=function(){var e=Object(n.useContext)(g),t=e.filterTreeView,a=e.treedata,l=e.loadingFilterTree,s=e.clearFilterTreeView,c=e.returnFilter,o=Object(n.useState)(""),i=Object(E.a)(o,2),m=i[0],u=i[1],d="Clear";return c&&c>=0&&(d="Clear Result"),r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-md-4 pr-1"},r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),t(m)},className:"form",autoComplete:"off"},r.a.createElement("div",{className:"input-group input-group-sm"},r.a.createElement("input",{className:"form-control",type:"text",name:"section",placeholder:"Filter text",onChange:function(e){return u(e.target.value)}}),l&&r.a.createElement("span",null,"Searching..."),!l&&r.a.createElement("div",{className:"input-group-append"},r.a.createElement("input",{type:"submit",value:"Filter",className:"btn btn-dark btn-sm"}))))),r.a.createElement("div",{className:"col-md-4 text-left pl-1"},r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),s()},className:"form"},r.a.createElement("input",{type:"submit",value:d,className:"btn btn-info btn-sm"}))),r.a.createElement("div",{className:"col-md-4 text-right text-muted pr-4"},a&&a.jobs&&r.a.createElement("small",null,"Total #Jobs: ",a.total," | Chunk unit: ",r.a.createElement("strong",null,a.reference.chunk_unit))))},X={height:660},$={height:30},ee=function(){var e=Object(n.useContext)(g),t=e.data,a=e.experiment,l=e.navigateToGroup,s={},c=null,o=null;return a&&t&&t.packages&&Object.keys(t.packages).length>0&&(s=t.packages,o=(c=Object.keys(s)).map((function(e,t){return r.a.createElement("button",{className:"btn-sm btn-warning btn-block",type:"button",key:t,onClick:(a={wrapper:e},function(e){e.preventDefault(),s&&l(s[a.wrapper])})},r.a.createElement("small",null,e.split("_").slice(1).join("_")));var a}))),r.a.createElement("div",null,a&&s&&r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12"},r.a.createElement("div",{className:"card text-white bg-info scroll",style:X},r.a.createElement("div",{className:"card-header text-center p-0",style:$},r.a.createElement("div",{className:"mh-100 px-0 mx-0"},r.a.createElement("small",null,r.a.createElement("strong",null,"WRAPPERS")))),r.a.createElement("div",{className:"card-body py-0"},c&&o)))))},te=function(){var e=Object(n.useContext)(g),t=e.getExperimentGraph,a=e.experiment,l=e.enabledGraphSearch,s=e.experimentRunning,c=e.data,o=e.loadingJobMonitor,i=e.setAutoUpdatePkl,m=e.startAutoUpdatePkl,u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"standard";return function(r){r.preventDefault(),t(a.expid,e,n)}};return r.a.createElement("div",{className:"card-header p-1"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-md-2"},o&&r.a.createElement("div",null,"Querying...")),r.a.createElement("div",{className:"col-md-10"},r.a.createElement("div",{className:"row justify-content-end"},r.a.createElement("div",{className:"col-md-2"},r.a.createElement("form",{onSubmit:u(),className:"form"},r.a.createElement("input",{type:"submit",value:"Classic",className:"btn btn-info btn-block btn-sm",disabled:!l}))),r.a.createElement("div",{className:"col-md-2"},r.a.createElement("form",{onSubmit:u("none","laplacian"),className:"form"},r.a.createElement("input",{type:"submit",value:"Laplacian",className:"btn btn-info btn-block btn-sm",disabled:!l}))),r.a.createElement("div",{className:"col-md-2"},r.a.createElement("form",{onSubmit:u("date-member"),className:"form"},r.a.createElement("input",{type:"submit",value:"Grouped by D-M",className:"btn btn-info btn-block btn-sm",disabled:!l}))),r.a.createElement("div",{className:"col-md-2"},r.a.createElement("form",{onSubmit:u("status"),className:"form"},r.a.createElement("input",{type:"submit",value:"Grouped by Status",className:"btn btn-info btn-block btn-sm",disabled:!l}))),s&&c&&!m&&r.a.createElement("div",{className:"col-md-2"},r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),i(!0)},className:"form"},r.a.createElement("input",{type:"submit",value:"Start Job Monitor",className:"btn btn-success btn-block btn-sm",disabled:!l}))),s&&c&&m&&r.a.createElement("div",{className:"col-md-2"},r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),i(!1)},className:"form"},r.a.createElement("input",{type:"submit",value:"Stop Job Monitor",className:"btn btn-danger btn-block btn-sm",disabled:!l})))))))},ae=function(){var e=Object(n.useContext)(g),t=e.experiment,a=e.startAutoUpdateRun,l=e.setAutoUpdateRun;return r.a.createElement("div",{className:"card-header p-1"},r.a.createElement("div",{className:"row justify-content-end"},r.a.createElement("div",{className:"col-md-2"},t&&!a&&r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),l(!0)},className:"form"},r.a.createElement("input",{type:"submit",value:"Show Log",className:"btn btn-dark btn-sm btn-block"})),t&&a&&r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),l(!1)},className:"form"},r.a.createElement("input",{type:"submit",value:"Hide Log",className:"btn btn-secondary btn-sm btn-block"})))))},ne=function(){var e=Object(n.useContext)(g),t=e.experiment,a=e.treedata,l=e.getExperimentTree,s=e.cleanTreeData,c=e.enabledGraphSearch,o=e.getExperimentTreePkl,i=e.loadingTreeRefresh,m=e.experimentRunning,u=e.setAutoUpdateTreePkl,d=e.startAutoUpdateTreePkl;return r.a.createElement("div",{className:"card-header p-1"},r.a.createElement("div",{className:"row justify-content-end"},i&&d&&r.a.createElement("div",{className:"col-md-8 text-left"},"Querying..."),i&&!d&&r.a.createElement("div",{className:"col-md-6 text-left"},"Querying..."),r.a.createElement("div",{className:"col-md-2"},t&&!a&&r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),l(t.expid)},className:"form"},r.a.createElement("input",{type:"submit",value:"Show Tree View",className:"btn btn-info btn-block btn-sm",disabled:!c})),t&&a&&!d&&r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),s()},className:"form"},r.a.createElement("input",{type:"submit",value:"Clear Tree View",className:"btn btn-secondary btn-block btn-sm",disabled:!c}))),t&&a&&m&&!d&&r.a.createElement("div",{className:"col-md-2"},r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),o(t.expid,t.pkl_timestamp)},className:"form"},r.a.createElement("input",{type:"submit",value:"Refresh",className:"btn btn-success btn-block btn-sm",disabled:!c}))),m&&a&&!d&&r.a.createElement("div",{className:"col-md-2"},r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),u(!0)},className:"form"},r.a.createElement("input",{type:"submit",value:"Start Job Monitor",className:"btn btn-success btn-block btn-sm",disabled:!c}))),m&&a&&d&&r.a.createElement("div",{className:"col-md-2"},r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),u(!1)},className:"form"},r.a.createElement("input",{type:"submit",value:"Stop Job Monitor",className:"btn btn-danger btn-block btn-sm",disabled:!c})))))},re={height:600},le=function(e){var t=e.match.params.expid,a=Object(n.useContext)(g),l=Object(n.useContext)(I),s=a.data,c=a.treedata,o=a.updateSelection,i=a.updateSelectionTree,m=a.loadingGraph,u=a.loadingTree,d=a.loadingRun,p=a.shouldUpdateGraph,E=a.cleanGraphData,b=a.cleanTreeData,h=a.cleanRunData,A=a.cleanNavData,N=a.getExperimentRun,v=a.getExperimentPkl,f=a.getExperimentTreePkl,y=a.getExperimentTree,x=a.cleanPklData,k=a.cleanPklTreeData,C=a.startAutoUpdateRun,S=a.startAutoUpdatePkl,B=a.startAutoUpdateTreePkl,G=a.setAutoUpdateRun,D=a.rundata,_=a.pklchanges,U=a.pkltreechanges,j=a.experiment,Q=a.setVisData,L=a.setVisNetwork,M=a.setFancyTree,Y=a.visNetwork,q=a.navigateGraph,X=a.navToLatest,$=a.experimentRunning,le=a.navigateAfterLoadGraph,se=a.current_grouped,ce=l.clearStats;return r.a.createElement(n.Fragment,null,r.a.createElement(w,{expidToken:t,getExperimentTree:y}),r.a.createElement("div",{className:"row mt-2"},r.a.createElement("div",{className:"col-2 pr-1"},r.a.createElement(T,{expidToken:t})),r.a.createElement("div",{className:"col-10"},r.a.createElement("ul",{className:"nav nav-tabs",id:"myTab",role:"tablist"},r.a.createElement("li",{className:"nav-item"},r.a.createElement("a",{className:"nav-link active",id:"treeview-tab","data-toggle":"tab",href:"#treeview",role:"tab","aria-controls":"treeview","aria-selected":"false"},"Tree View")),r.a.createElement("li",{className:"nav-item"},r.a.createElement("a",{className:"nav-link",id:"graph-tab","data-toggle":"tab",href:"#graph",role:"tab","aria-controls":"graph","aria-selected":"true"},"Graph")),r.a.createElement("li",{className:"nav-item"},r.a.createElement("a",{className:"nav-link",id:"log-tab","data-toggle":"tab",href:"#log",role:"tab","aria-controls":"log","aria-selected":"false"},"Log")),r.a.createElement("li",{className:"nav-item"},r.a.createElement("a",{className:"nav-link",id:"stats-tab","data-toggle":"tab",href:"#stats",role:"tab","aria-controls":"stats","aria-selected":"false"},"Statistics"))),r.a.createElement("div",{className:"tab-content",id:"myTabContent"},r.a.createElement("div",{className:"tab-pane fade",id:"graph",role:"tabpanel","aria-labelledby":"graph-tab"},r.a.createElement("div",{className:"card"},j&&r.a.createElement(te,null),j&&s&&r.a.createElement("div",{className:"card-header p-1"},r.a.createElement(Z,null)),r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-9 pr-0"},r.a.createElement(R,{data:s,updateSelection:o,loadingGraph:m,cleanGraphData:E,shouldUpdateGraph:p,setVisData:Q,setVisNetwork:L,navigateGraph:q,navToLatest:X,clearStats:ce,cleanNavData:A,current_grouped:se,experimentRunning:$,navigateAfterLoadGraph:le})),r.a.createElement("div",{className:"col-3 pl-0"},r.a.createElement("ul",{className:"nav nav-tabs",id:"myTabSide",role:"tablist"},r.a.createElement("li",{className:"nav-item"},r.a.createElement("a",{className:"nav-link active",id:"selection-tab","data-toggle":"tab",href:"#selection",role:"tab","aria-controls":"selection","aria-selected":"true"},"Selection")),r.a.createElement("li",{className:"nav-item"},r.a.createElement("a",{className:"nav-link",id:"wrapper-tab","data-toggle":"tab",href:"#wrapper",role:"tab","aria-controls":"treeview","aria-selected":"false"},"Wrappers"))),r.a.createElement("div",{className:"tab-content",id:"myTabSideContent"},r.a.createElement("div",{className:"tab-pane fade show active",id:"selection",role:"tabpanel","aria-labelledby":"selection-tab"},s&&r.a.createElement(F,null),S&&r.a.createElement(J,{experiment:j,getExperimentPkl:v,cleanPklData:x,pklchanges:_,experimentRunning:$})),r.a.createElement("div",{className:"tab-pane fade show",id:"wrapper",role:"tabpanel","aria-labelledby":"wrapper-tab"},r.a.createElement("div",null,r.a.createElement(ee,null)))))),r.a.createElement("div",{className:"card-footer p-0"},s&&Y&&r.a.createElement(W,null)))),r.a.createElement("div",{className:"tab-pane fade show active",id:"treeview",role:"tabpanel","aria-labelledby":"treeview-tab"},r.a.createElement("div",{className:"card"},j&&r.a.createElement(ne,null),j&&c&&r.a.createElement("div",{className:"card-header p-1"},r.a.createElement(z,null)),r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-9 pr-0"},r.a.createElement(O,{treedata:c,loadingTree:u,cleanTreeData:b,setFancyTree:M,updateSelectionTree:i})),r.a.createElement("div",{className:"col-3 pl-0"},r.a.createElement(P,null),B&&r.a.createElement(K,{experiment:j,getExperimentTreePkl:f,cleanPklTreeData:k,pkltreechanges:U,experimentRunning:$}))))),r.a.createElement("div",{className:"tab-pane fade",id:"log",role:"tabpanel","aria-labelledby":"log-tab"},r.a.createElement("div",{className:"card",style:re},j&&r.a.createElement(ae,null),C&&r.a.createElement(H,{rundata:D,loadingRun:d,cleanRunData:h,getExperimentRun:N,experiment:j,startAutoUpdateRun:C,setAutoUpdateRun:G,experimentRunning:$}),!C&&r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-12 text-center"},r.a.createElement("p",{className:"lead"},"Press ",r.a.createElement("span",{className:"badge badge-dark"},"Show Log")," ","to see the last 50 lines of the running log of this experiment. If the experiment is running, the log will update automatically."))))),r.a.createElement("div",{className:"tab-pane fade",id:"stats",role:"tabpanel","aria-labelledby":"stats-tab"},r.a.createElement("div",{className:"card mt-2",style:re},r.a.createElement("div",{className:"card-header py-0 text-muted"},r.a.createElement("small",null,"Statistics")),r.a.createElement("div",{className:"card-body p-1"},r.a.createElement("div",{className:"col-12"},r.a.createElement(V,null)))))))))},se=function(e){e.setAlert;var t=Object(n.useContext)(g),a=Object(n.useContext)(A),l=Object(n.useState)(""),s=Object(E.a)(l,2),c=s[0],o=s[1];return r.a.createElement("div",{className:"container"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-11"},r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),""===c?a.setAlert("Please enter something","light"):t.searchExperiments(c)},className:"form"},r.a.createElement("div",{className:"input-group mb-3"},r.a.createElement("input",{className:"form-control",type:"text",name:"text",placeholder:"Search Experiments by Expid or Description...",value:c,onChange:function(e){return o(e.target.value)}}),r.a.createElement("div",{className:"input-group-append"},r.a.createElement("input",{type:"submit",value:"Search",className:"btn btn-dark"}))))),r.a.createElement("div",{className:"col-1"},r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),t.getCurrentRunning()},className:"form"},r.a.createElement("div",{className:"input-group mb-3"},r.a.createElement("input",{type:"submit",value:"Running",className:"btn btn-success"}))))),t.experiments.length>0&&r.a.createElement("div",{className:"row pb-3"},r.a.createElement("div",{className:"col-md-3"},r.a.createElement("button",{className:"btn btn-info btn-block",onClick:t.getSummaries},"Show Detailed Data")),r.a.createElement("div",{className:"col-md-9"},r.a.createElement("button",{className:"btn btn-light btn-block",onClick:t.clearExperiments},"Clear"))))},ce=function(e){var t=e.experiment,a=t.name,l=t.description,s=t.user,c=t.hpc,o=t.status,i=t.completed,m=t.total,u=Object(n.useContext)(g),p=u.getExperimentSummary,E=u.summaries;return r.a.createElement("div",{className:"col mb-4"},r.a.createElement("div",{className:"card"},r.a.createElement("div",{className:"card-header text-center py-1"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-md-3 text-left"},r.a.createElement("h3",{className:"font-weight-bold"},a)),r.a.createElement("div",{className:"col-md-6 text-right"}," ",i," / ",m," ",r.a.createElement("div",{className:"progress"},r.a.createElement("div",{className:i===m?"progress-bar bg-warning":"RUNNING"===o?E[a]&&E[a].n_failed>0?"progress-bar progress-bar-striped progress-bar-animated bg-danger":"progress-bar progress-bar-striped progress-bar-animated bg-success":E[a]&&E[a].n_failed>0?"progress-bar bg-danger":"progress-bar bg-info",role:"progressbar",style:{width:m>0?i/m*100+"%":"0%"},"aria-valuenow":i,"aria-valuemin":"0","aria-valuemax":m}))),r.a.createElement("div",{className:"col-md-3 text-right"},o&&"RUNNING"===o&&r.a.createElement("span",{className:"badge badge-success text-right"},o),o&&"RUNNING"!==o&&r.a.createElement("span",{className:"badge badge-secondary text-right"},o)))),r.a.createElement("div",{className:"card-body py-1"},r.a.createElement("h6",{className:"card-subtitle text-muted pt-2"},r.a.createElement("small",null,"Owner:")," ",s),r.a.createElement("p",{className:"card-text py-1 mb-1"},r.a.createElement("small",null,l)),r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col-3 px-1"},r.a.createElement("form",{onSubmit:function(e){e.preventDefault(),console.log(a),p(a)},className:"form"},r.a.createElement("input",{className:E[a]?"btn btn-info btn-block btn-sm":"btn btn-outline-info btn-block btn-sm",type:"submit",value:E[a]?"Refresh":"Summary","aria-controls":a}))),r.a.createElement("div",{className:"col-9 px-1"},r.a.createElement(d.b,{to:"/autosubmitapp/experiment/".concat(a),className:"btn btn-outline-primary btn-block btn-sm"},"More")),E[a]&&!1===E[a].error&&r.a.createElement("div",{className:"col-12 pt-2",id:a},r.a.createElement("div",{className:"card card-body p-0"},r.a.createElement("div",{className:"row text-center"},r.a.createElement("div",{className:"col-md-6"},r.a.createElement("small",null,"Avg. Queue ",E[a].avg_queue_time," min.")),r.a.createElement("div",{className:"col-md-6"},r.a.createElement("small",null,"Avg. Run ",E[a].avg_run_time," min."))),r.a.createElement("div",{className:"row px-2 pb-2"},r.a.createElement("div",{className:"col-12"},E[a].n_running>0&&r.a.createElement("span",{className:"badge badge-success"},"Running: ",E[a].n_running)," ",E[a].n_queuing>0&&r.a.createElement("span",{className:"badge",style:{backgroundColor:"pink"}},"Queuing: ",E[a].n_queuing)," ",E[a].n_submitted>0&&r.a.createElement("span",{className:"badge",style:{backgroundColor:"cyan"}},"Submitted: ",E[a].n_submitted)," ",E[a].n_suspended>0&&r.a.createElement("span",{className:"badge",style:{backgroundColor:"orange"}},"Suspended: ",E[a].n_suspended))),E[a].n_failed>0&&r.a.createElement("div",{className:"row px-1"},r.a.createElement("div",{className:"col-md-3 text-center px-2"},r.a.createElement("span",{className:"badge badge-danger"},"Failed: ",E[a].n_failed)),r.a.createElement("div",{className:"col-md-9 text-left"},r.a.createElement("div",{className:"",style:{overflow:"auto",maxHeight:"200px"}},E[a].failed_jobs.map((function(e){return r.a.createElement("li",{key:e},r.a.createElement("small",null,e))})))))))),r.a.createElement("p",{className:"card-text text-center"},r.a.createElement("small",{className:"text-muted"},"HPC: ",c)))))},oe=function(){var e=Object(n.useContext)(g),t=e.loading,a=e.experiments;return t?r.a.createElement(k,null):r.a.createElement("div",{className:"container"},r.a.createElement("div",{className:"row row-cols-1 row-cols-md-3"},a&&a.sort((function(e,t){return e.status>t.status?-1:1})).map((function(e){return r.a.createElement(ce,{key:e.id,experiment:e})}))))},ie=function(){return r.a.createElement(n.Fragment,null,r.a.createElement(se,null),r.a.createElement(oe,null))};var me={height:200},ue=function(){return r.a.createElement(n.Fragment,null,r.a.createElement("div",{className:"row",style:me}))},de=a(2),pe=a.n(de),Ee=a(5),ge=a(11),be=a.n(ge),he=a(1),Ae=function(e,t){switch(t.type){case"CLEAN_GRAPH_DATA":return Object(he.a)({},e,{data:null,selection:null,enabledGraphSearch:!0,loadingGraph:!1,loadingPkl:!1,visNodes:null,visNetwork:null,foundNodes:null,experimentRunning:!1,experiment:null,current_grouped:"none",current_layout:"standard",allowJobMonitor:!1});case"CLEAN_ONLY_GRAH_DATA":return Object(he.a)({},e,{data:null,selection:null,enabledGraphSearch:!0,visNodes:null,visNetwork:null,foundNodes:null,current_grouped:"none",current_layout:"standard"});case"CLEAN_TREE_DATA":return Object(he.a)({},e,{treedata:null,enabledGraphSearch:!0,loadingTree:!1,loadingTreePkl:!1,fancyTree:null,returnFiler:0});case"CLEAN_RUN_DATA":return Object(he.a)({},e,{rundata:null,startAutoUpdateRun:!1});case"CLEAN_PKL_DATA":return Object(he.a)({},e,{shouldUpdateGraph:!1,startAutoUpdatePkl:!1,pklchanges:null});case"CLEAN_TREE_PKL_DATA":return Object(he.a)({},e,{startAutoUpdateTreePkl:!1,pkltreechanges:null});case"CLEAN_NAV_DATA":return Object(he.a)({},e,{foundNodes:null,startAutoUpdatePkl:!1,selection:null});case"UPDATE_SELECTION":return Object(he.a)({},e,{selection:t.payload});case"UPDATE_SELECTION_TREE":return Object(he.a)({},e,{selectedTreeNode:t.payload});case"SEARCH_EXPERIMENTS":case"CURRENT_RUNNING":return Object(he.a)({},e,{experiments:t.payload,loading:!1});case"SET_AUTOUPDATE_RUN":return Object(he.a)({},e,{startAutoUpdateRun:t.payload});case"SET_AUTOUPDATE_PKL":return Object(he.a)({},e,{startAutoUpdatePkl:t.payload});case"SET_AUTOUPDATE_TREE_PKL":return Object(he.a)({},e,{startAutoUpdateTreePkl:t.payload});case"SET_LOADING":return Object(he.a)({},e,{loading:!0});case"SET_LOADING_STATE":return Object(he.a)({},e,{loadingState:!0});case"SET_LOADING_PKL":return Object(he.a)({},e,{loadingPkl:!0});case"SET_LOADING_TREE_PKL":return Object(he.a)({},e,{loadingTreePkl:!0});case"SET_LOADING_GRAPH":return Object(he.a)({},e,{loadingGraph:!0,enabledGraphSearch:!1});case"SET_LOADING_TREE":return Object(he.a)({},e,{loadingTree:!0,enabledGraphSearch:!1});case"SET_LOADING_RUN":return Object(he.a)({},e,{loadingRun:!0});case"SET_LOADING_JOB_MONITOR":return Object(he.a)({},e,{loadingJobMonitor:!0});case"SET_LOADING_TREE_REFRESH":return Object(he.a)({},e,{loadingTreeRefresh:!0});case"SHOULD_UPDATE_GRAPH":return Object(he.a)({},e,{shouldUpdateGraph:t.payload});case"CLEAR_EXPERIMENTS":return Object(he.a)({},e,{experiments:[],summaries:[],loading:!1});case"GET_EXPERIMENT":return Object(he.a)({},e,{experiment:t.payload,loading:!1,data:null});case"GET_GRAPH":var a=t.payload,n=a.resdata,r=a.grouped,l=a.layout;return Object(he.a)({},e,{data:n,current_grouped:r,current_layout:l,loadingGraph:!1,enabledGraphSearch:!0});case"GET_EXPERIMENT_SUMMARY":case"CLEAR_SUMMARY_EXP":return Object(he.a)({},e);case"GET_TREE":return Object(he.a)({},e,{treedata:t.payload,loadingTree:!1,enabledGraphSearch:!0});case"GET_GRAPH_GROUPED":return Object(he.a)({},e,{data:t.payload,loadingGraph:!1,enabledGraphSearch:!0,isGrouped:!0});case"GET_EXPERIMENT_RUN":return Object(he.a)({},e,{rundata:t.payload,loadingRun:!1});case"GET_PKL_DATA":return Object(he.a)({},e,{pkldata:t.payload,loadingPkl:!1,loadingJobMonitor:!1});case"PKL_TREE_LOADED":return Object(he.a)({},e,{loadingTreeRefresh:!1,loadingTreePkl:!1});case"GET_RUNNING_STATE":return Object(he.a)({},e,{experimentRunning:t.payload,loadingState:!1});case"UPDATE_NODES":return Object(he.a)({},e,{data:t.payload});case"UPDATE_EXPERIMENT_TS":return Object(he.a)({},e,{experiment:t.payload});case"SET_PKL_CHANGES":return Object(he.a)({},e,{pklchanges:t.payload});case"SET_PKLTREE_CHANGES":return Object(he.a)({},e,{pkltreechanges:t.payload});case"SET_VIS_DATA":return Object(he.a)({},e,{visNodes:t.payload});case"SET_VIS_NETWORK":return Object(he.a)({},e,{visNetwork:t.payload});case"SET_FANCYTREE":return Object(he.a)({},e,{fancyTree:t.payload});case"SET_FOUND_NODES":return Object(he.a)({},e,{loadingSearchJob:!1,foundNodes:t.payload});case"SET_LOADING_SEARCH_JOB":return Object(he.a)({},e,{loadingSearchJob:!0});case"SET_LOADING_FILTER":return Object(he.a)({},e,{loadingFilterTree:!0});case"FILTER_TREEVIEW_FAILED":return Object(he.a)({},e,{loadingFilterTree:!1,returnFilter:t.payload});case"CLEAR_FILTER_TREE":return Object(he.a)({},e,{returnFilter:0});default:return null}},Ne=function(e){var t=Object(n.useReducer)(Ae,{experiments:[],summaries:[],experiment:{},loading:!1,experimentRunning:!1,data:null,treedata:null,rundata:null,pkldata:null,pklchanges:null,pkltreechanges:null,loadingTree:!1,loadingGraph:!1,loadingRun:!1,loadingState:!1,loadingPkl:!1,loadingTreePkl:!1,loadingSearchJob:!1,loadingFilterTree:!1,loadingJobMonitor:!1,loadingTreeRefresh:!1,selection:null,selectedTreeNode:null,enabledGraphSearch:!0,startAutoUpdateRun:!1,startAutoUpdatePkl:!1,startAutoUpdateTreePkl:!1,shouldUpdateGraph:!1,visNodes:null,visNetwork:null,fancyTree:null,foundNodes:null,current_grouped:"none",current_layout:"standard",allowJobMonitor:!1,returnFilter:0}),a=Object(E.a)(t,2),l=a[0],s=a[1],c="http://192.168.11.91:8081",o=function(){var e=Object(Ee.a)(pe.a.mark((function e(t){var a;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return _(),e.next=3,be.a.get("".concat(c,"/search/").concat(t));case 3:a=e.sent,s({type:"SEARCH_EXPERIMENTS",payload:a.data.experiment});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),i=function(){var e=Object(Ee.a)(pe.a.mark((function e(t){var a,n;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return m(t),e.next=3,be.a.get("".concat(c,"/summary/").concat(t));case 3:a=e.sent,n=a.data,l.summaries[t]=n,s({type:"GET_EXPERIMENT_SUMMARY"});case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),m=function(e){l.summaries[e]&&(l.summaries[e]=null),s({type:"CLEAR_SUMMARY_EXP"})},u=function(){var e=Object(Ee.a)(pe.a.mark((function e(){var t;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return _(),e.next=3,be.a.get("".concat(c,"/running/"));case 3:t=e.sent,s({type:"CURRENT_RUNNING",payload:t.data.experiment});case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),d=function(){var e=Object(Ee.a)(pe.a.mark((function e(t){var a;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return _(),e.next=3,be.a.get("".concat(c,"/expinfo/").concat(t));case 3:a=e.sent,s({type:"GET_EXPERIMENT",payload:a.data});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),p=function(){var e=Object(Ee.a)(pe.a.mark((function e(t,a){var n;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return O(),e.next=3,be.a.get("".concat(c,"/group/").concat(t,"/").concat(a));case 3:n=e.sent,s({type:"GET_GRAPH_GROUPED",payload:n.data});case 6:case"end":return e.stop()}}),e)})));return function(t,a){return e.apply(this,arguments)}}(),b=function(){var e=Object(Ee.a)(pe.a.mark((function e(t){var a,n,r,l,o=arguments;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=o.length>1&&void 0!==o[1]?o[1]:"none",n=o.length>2&&void 0!==o[2]?o[2]:"standard",D(),O(),e.next=6,be.a.get("".concat(c,"/graph/").concat(t,"/").concat(n,"/").concat(a));case 6:r=e.sent,l=r.data,s({type:"GET_GRAPH",payload:{resdata:l,grouped:a,layout:n}});case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),h=function(){var e=Object(Ee.a)(pe.a.mark((function e(t){var a;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return I(),e.next=3,be.a.get("".concat(c,"/tree/").concat(t));case 3:a=e.sent,s({type:"GET_TREE",payload:a.data});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),A=function(){var e=Object(Ee.a)(pe.a.mark((function e(t){var a;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return U(),e.next=3,be.a.get("".concat(c,"/exprun/").concat(t));case 3:a=e.sent,s({type:"GET_EXPERIMENT_RUN",payload:a.data});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),N=function(){var e=Object(Ee.a)(pe.a.mark((function e(t){var a;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return L(),e.next=3,be.a.get("".concat(c,"/ifrun/").concat(t));case 3:a=e.sent,s({type:"GET_RUNNING_STATE",payload:a.data.running});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),v=function(){var e=Object(Ee.a)(pe.a.mark((function e(t,a){var n,r,o,i,m,u,d,p,E,g,b,h,A,N,v,f,y,x,k,w,T,C,S,B,R,G,D,_,O,I,U,j,Q,L,P,M,H,J,K,W,Z,z,X,$,ee,te,ae,ne,re,le,se,ce,oe;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return F(),Y(),e.next=4,be.a.get("".concat(c,"/pkltreeinfo/").concat(t,"/").concat(a));case 4:if(n=e.sent,r=n.data,o={},!(null!==l.treedata&&!0===r.has_changed&&r.pkl_content.length>0)){e.next=41;break}for(i="",m=l.treedata.jobs,u=l.treedata.reference,d=u.packages,p=u.completed_tag,E=u.running_tag,g=u.queuing_tag,b=u.failed_tag,h=u.check_mark,A=0;A0?E.replace("%R",D.running):"",U=D.queuing>0?g.replace("%Q",D.queuing):"",j=D.failed>0?b.replace("%F",D.failed):"",(Q=l.fancyTree.getNodesByRef(R[G]))&&(L=R[G]+_+j+I+U+O,Q[0].setTitle(L)))}for(P=r.packages,M=!0,H=!1,J=void 0,e.prev=24,K=P[Symbol.iterator]();!(M=(W=K.next()).done);M=!0)if(Z=W.value,!d.includes(Z)){for(i+=V(r.pkl_timestamp)+": "+Z+" has been added.",d.push(Z),u[z="Wrapper: "+Z]={completed:0,failed:0,queuing:0,running:0,total:0},X=u[z],$=m.filter((function(e){return e.wrapper===Z})),ee=[],te=0;te<$.length;te++)"COMPLETED"===$[te].status?X.completed+=1:"FAILED"===$[te].status?X.failed+=1:"QUEUING"===$[te].status?X.queuing+=1:"RUNNING"===$[te].status&&(X.running+=1),ee.push({title:$[te].title,refKey:$[te].id,data:"Empty",children:[]});X.total=$.length,ae=p.replace("%C",X.completed).replace("%T",X.total),ne=X.completed===X.total?h:"",re=X.running>0?E.replace("%R",X.running):"",le=X.queuing>0?g.replace("%Q",X.queuing):"",se=X.failed>0?b.replace("%F",X.failed):"",ce=z+ae+se+re+le+ne,oe=l.fancyTree.getRootNode(),oe.addChildren({title:ce,folder:!0,refKey:z,expanded:!1,children:ee})}e.next=32;break;case 28:e.prev=28,e.t0=e.catch(24),H=!0,J=e.t0;case 32:e.prev=32,e.prev=33,M||null==K.return||K.return();case 35:if(e.prev=35,!H){e.next=38;break}throw J;case 38:return e.finish(35);case 39:return e.finish(32);case 40:!0===r.has_changed&&(l.pkltreechanges?q(i+l.pkltreechanges):q(i));case 41:s({type:"PKL_TREE_LOADED"});case 42:case"end":return e.stop()}}),e,null,[[24,28,32,40],[33,,35,39]])})));return function(t,a){return e.apply(this,arguments)}}(),f=function(){var e=Object(Ee.a)(pe.a.mark((function e(t,a){var n,r,o,i,m,u,d,p,E,g,b,h,A,N,v,f,C,S,B,R,G,D,_,O,I,U,F,Q,L,P,Y;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!1!==l.experimentRunning){e.next=2;break}return e.abrupt("return");case 2:return j(),M(),e.next=6,be.a.get("".concat(c,"/pklinfo/").concat(t,"/").concat(a));case 6:if(n=e.sent,null,o={},i={},m={},u={},d={},p={},E="",g=l.data,b=l.experiment,r=n.data,null!==l.data&&!0===r.has_changed&&r.pkl_content.length>0){for(h=r.packages,A=l.data.packages,N=0;N2&&void 0!==arguments[2]?arguments[2]:.9,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;a<=.05&&(a=.05),l.visNetwork?l.visNetwork.moveTo({position:{x:e,y:t},scale:a,animation:!1}):n&&n.moveTo({position:{x:e,y:t},scale:a,animation:!1})},S=function(e){var t,a=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.9,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=0,c="not found";if(l.data.nodes)if(!0===a){var o=!0,i=!1,m=void 0;try{for(var u,d=l.data.nodes[Symbol.iterator]();!(o=(u=d.next()).done);o=!0){var p=u.value;p.status_code===e&&p.level>=s&&(s=p.level,c=p.id)}}catch(v){i=!0,m=v}finally{try{o||null==d.return||d.return()}finally{if(i)throw m}}}else{s=Number.MAX_VALUE;var E=!0,g=!1,b=void 0;try{for(var h,A=l.data.nodes[Symbol.iterator]();!(E=(h=A.next()).done);E=!0){var N=h.value;N.status_code===e&&N.level<=s&&(s=N.level,c=N.id)}}catch(v){g=!0,b=v}finally{try{E||null==A.return||A.return()}finally{if(g)throw b}}}return console.log(c),r?(t=r.getPositions([c]))[c]?(C(t[c].x,t[c].y,n,r),r.selectNodes([c]),H([c])):H(null):(t=l.visNetwork.getPositions([c]))[c]?(C(t[c].x,t[c].y),l.visNetwork.selectNodes([c]),H([c])):H(null),!!t[c]},B=function(e){if(l.visNetwork){var t=l.visNetwork.getPositions([e]);t[e]&&(C(t[e].x,t[e].y),l.visNetwork.selectNodes([e]),H([e]))}},R=function(){var e=Object(Ee.a)(pe.a.mark((function e(t){var a;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Q(),!l.data.nodes){e.next=10;break}return e.next=4,l.data.nodes.filter((function(e){return e.id.toUpperCase().indexOf(t.toUpperCase())>=0}));case 4:if(!((a=e.sent)&&a.length>0)){e.next=10;break}return s({type:"SET_FOUND_NODES",payload:a}),B(a[0].id),H([a[0].id]),e.abrupt("return");case 10:s({type:"SET_FOUND_NODES",payload:null});case 11:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),G=function(){var e=Object(Ee.a)(pe.a.mark((function e(t){var a,n,r;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(P(),!l.treedata||!l.fancyTree){e.next=18;break}if(a=0,!(t.indexOf("*")>-1)){e.next=11;break}return n=t.split("*"),r=!1,e.next=8,l.fancyTree.filterNodes((function(e){for(var t=e.title,a=0;a0){if(!(t.indexOf(n[a])>-1)){r=!1;break}var l=t.indexOf(n[a])+n[a].length;t=t.substring(l),r=!0}return r}));case 8:a=e.sent,e.next=14;break;case 11:return e.next=13,l.fancyTree.filterNodes(t);case 13:a=e.sent;case 14:s({type:"FILTER_TREEVIEW_FAILED",payload:a}),e.next=19;break;case 18:s({type:"FILTER_TREEVIEW_FAILED",payload:0});case 19:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),D=function(){return s({type:"CLEAN_ONLY_GRAH_DATA"})},_=function(){return s({type:"SET_LOADING"})},O=function(){return s({type:"SET_LOADING_GRAPH"})},I=function(){return s({type:"SET_LOADING_TREE"})},U=function(){return s({type:"SET_LOADING_RUN"})},j=function(){return s({type:"SET_LOADING_PKL"})},F=function(){return s({type:"SET_LOADING_TREE_PKL"})},Q=function(){return s({type:"SET_LOADING_SEARCH_JOB"})},L=function(){return s({type:"SET_LOADING_STATE"})},P=function(){return s({type:"SET_LOADING_FILTER"})},M=function(){return s({type:"SET_LOADING_JOB_MONITOR"})},Y=function(){return s({type:"SET_LOADING_TREE_REFRESH"})},H=function(e){return s({type:"UPDATE_SELECTION",payload:e})},J=function(e){return s({type:"UPDATE_NODES",payload:e})},K=function(e){return s({type:"UPDATE_EXPERIMENT_TS",payload:e})},W=function(e){return s({type:"SET_PKL_CHANGES",payload:e})},q=function(e){return s({type:"SET_PKLTREE_CHANGES",payload:e})},V=function(e){var t=new Date(1e3*e),a=t.getHours(),n="0"+t.getMinutes(),r="0"+t.getSeconds(),l=t.getMonth()+1;return"["+t.getDate()+"/"+l+"] "+a+":"+n.substr(-2)+":"+r.substr(-2)};return r.a.createElement(g.Provider,{value:{experiments:l.experiments,experiment:l.experiment,summaries:l.summaries,loading:l.loading,loadingGraph:l.loadingGraph,loadingTree:l.loadingTree,loadingRun:l.loadingRun,loadingPkl:l.loadingPkl,loadingTreePkl:l.loadingTreePkl,loadingSearchJob:l.loadingSearchJob,loadingFilterTree:l.loadingFilterTree,loadingState:l.loadingState,returnFilter:l.returnFilter,loadingJobMonitor:l.loadingJobMonitor,loadingTreeRefresh:l.loadingTreeRefresh,data:l.data,treedata:l.treedata,rundata:l.rundata,pklchanges:l.pklchanges,pkltreechanges:l.pkltreechanges,selection:l.selection,selectedTreeNode:l.selectedTreeNode,enabledGraphSearch:l.enabledGraphSearch,startAutoUpdateRun:l.startAutoUpdateRun,startAutoUpdatePkl:l.startAutoUpdatePkl,startAutoUpdateTreePkl:l.startAutoUpdateTreePkl,shouldUpdateGraph:l.shouldUpdateGraph,visNodes:l.visNodes,visNetwork:l.visNetwork,foundNodes:l.foundNodes,experimentRunning:l.experimentRunning,current_grouped:l.current_grouped,current_layout:l.current_layout,allowJobMonitor:l.allowJobMonitor,setAutoUpdateRun:function(e){return s({type:"SET_AUTOUPDATE_RUN",payload:e})},setAutoUpdatePkl:function(e){return s({type:"SET_AUTOUPDATE_PKL",payload:e})},setAutoUpdateTreePkl:function(e){return s({type:"SET_AUTOUPDATE_TREE_PKL",payload:e})},searchExperiments:o,getCurrentRunning:u,clearExperiments:function(){return s({type:"CLEAR_EXPERIMENTS"})},getExperiment:d,getExperimentGraph:b,getExperimentTree:h,cleanGraphData:function(){return s({type:"CLEAN_GRAPH_DATA"})},cleanTreeData:function(){return s({type:"CLEAN_TREE_DATA"})},cleanRunData:function(){return s({type:"CLEAN_RUN_DATA"})},cleanPklData:function(){return s({type:"CLEAN_PKL_DATA"})},cleanPklTreeData:function(){return s({type:"CLEAN_TREE_PKL_DATA"})},cleanNavData:function(){return s({type:"CLEAN_NAV_DATA"})},setPklChanges:W,setPklTreeChanges:q,updateSelection:H,updateSelectionTree:function(e){return s({type:"UPDATE_SELECTION_TREE",payload:e})},getExperimentRun:A,getExperimentPkl:f,hashCode:function(e){var t,a=0;if(0===e.length)return a;for(t=0;t0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(t){var a=!1,n=.5;!0===e?(a=S(4,!0,n,t))||(a=S(3,!0,n,t))||(a=S(2,!0,n,t))||(a=S(5,!0,n,t)):(a=S(-1,!0,n,t))||(a=S(5,!0,n,t)),a||S(0,!1,n,t)}},getRunningState:N,getExperimentGraphGrouped:p,filterTreeView:G,clearFilterTreeView:function(){l.treedata&&l.fancyTree&&(l.fancyTree.clearFilter(),s({type:"CLEAR_FILTER_TREE"}))},navigateToGroup:function(e){if(l.visNetwork){l.visNetwork.unselectAll();var t=e.length,a=e[parseInt(Math.floor(e.length/2))],n=.065*Math.sqrt(t),r=l.visNetwork.getPositions(a);r[a]&&(C(r[a].x,r[a].y,.6-n),l.visNetwork.selectNodes(e))}},getExperimentTreePkl:v,getExperimentSummary:i,clearSummary:m,getSummaries:function(){var e=l.experiments;for(var t in e){var a=e[t].name;i(a)}}}},e.children)},ve=function(e,t){switch(t.type){case"SET_ALERT":return t.payload;case"REMOVE_ALERT":return null;default:return e}},fe=function(e){var t=Object(n.useReducer)(ve,null),a=Object(E.a)(t,2),l=a[0],s=a[1];return r.a.createElement(A.Provider,{value:{alert:l,setAlert:function(e,t){s({type:"SET_ALERT",payload:{msg:e,type:t}}),setTimeout((function(){return s({type:"REMOVE_ALERT"})}),5e3)}}},e.children)},ye=function(e,t){switch(t.type){case"SET_LOADING":return Object(he.a)({},e,{loading:!0});case"GET_EXPERIMENT_STATS":var a=t.payload,n=a.result,r=a.requestResult,l=a.ticks;return Object(he.a)({},e,{statdata:n,totaldata:r,ticksdata:l,loading:!1});case"CLEAR_STATS":return Object(he.a)({},e,{statdata:null,totaldata:null,ticksdata:null,loading:!1,isError:!1,errorMessage:""});case"SET_ERROR_STATS":var s=t.payload,c=s.error,o=s.msg;return Object(he.a)({},e,{isError:c,errorMessage:o});default:return e}},xe=function(e){var t=Object(n.useReducer)(ye,{loading:!1,statdata:null,ticksdata:null,isError:!1,totaldata:null,errorMessage:""}),a=Object(E.a)(t,2),l=a[0],s=a[1],c=function(){var e=Object(Ee.a)(pe.a.mark((function e(t,a,n){var r,l,c,m,u;return pe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return 0===a.length&&(a=0),0===n.length&&(n="Any"),o(),e.next=6,be.a.get("".concat("http://192.168.11.91:8081","/stats/").concat(t,"/").concat(a,"/").concat(n));case 6:if(r=e.sent,l=[],c=null,m=[],r.data){for(!0===r.data.error?i(!0,r.data.error_message):i(!1,""),l.push(["Jobs","Queued","Run","Failed Jobs","Failed Queued","Fail Run"]),u=0;u {\n const history = useHistory();\n const experimentContext = useContext(ExperimentContext);\n const { searchExperiments } = experimentContext;\n\n const [text, setText] = useState(\"\");\n\n const submitSearch = (e) => {\n e.preventDefault();\n if (text !== \"\") {\n searchExperiments(text);\n history.push(\"/autosubmitapp/\");\n }\n };\n\n const onChange = (e) => setText(e.target.value);\n\n return (\n \n\n // \n );\n};\n\nNavbar.defaultProps = {\n title: \"Autosubmit Searcher\",\n icon: \"fas fa-home\",\n};\n\nNavbar.propTypes = {\n title: PropTypes.string.isRequired,\n icon: PropTypes.string.isRequired,\n};\n\nexport default Navbar;\n","import { createContext } from 'react';\n\nconst alertContext = createContext();\n\nexport default alertContext;\n","import React, { useContext } from 'react';\nimport AlertContext from '../context/alert/alertContext';\n\nconst Alert = () => {\n const alertContext = useContext(AlertContext);\n const { alert } = alertContext;\n return (\n alert !== null && (\n
\n {alert.msg}\n
\n )\n );\n};\n\nexport default Alert;\n","import React, { Fragment } from \"react\";\n\nconst About = () => {\n return (\n \n
User Information
\n
\n For user instructions visit our user guide{\" \"}\n \n User Guide\n \n .\n
\n );\n};\n\nexport default ExperimentColumn;\n","import React, { Component } from \"react\";\n// import vis from \"vis-network\";\nimport Spinner from \"../layout/Spinner\";\nimport vis from \"vis-network\";\n\nclass GraphNativeRep extends Component {\n\n shouldComponentUpdate(nextProps, nextState){ \n if (this.props.shouldUpdateGraph === true){\n //console.log(\"should Rerender\")\n return true\n }else if (nextProps.data && this.props.data && (nextProps.data.pkl_timestamp !== this.props.data.pkl_timestamp)){\n //console.log(\"Rerendering\")\n return true;\n }else if (nextProps.loadingGraph !== this.props.loadingGraph){\n //console.log(\"Render because changed loading\")\n return true; \n }else{\n //console.log(\"NO RERENDER\")\n return false;\n }\n }\n componentWillUnmount() {\n console.log(\"Unmounting Nav Rep\");\n this.props.cleanGraphData();\n this.props.clearStats();\n }\n\n updateVisNodes = (nodes) => {\n this.props.setVisData(nodes);\n };\n\n // onSubmit = (x,y) => e => {\n // e.preventDefault();\n // this.props.navigateGraph(x,y);\n // };\n\n // onLatest = (statusCode) => e => {\n // e.preventDefault();\n // this.props.navToLatest(statusCode); // Completed\n // };\n\n render () {\n if (this.props.loadingGraph) return ;\n if (!this.props.data){\n return (\n
\n
Press Classic to see the standard graph representation of the experiment.
\n
For the classic approach, the algorithm will first try to use graphviz, there are some constraints in place that try to identify those instances that could potentially make graphviz run forever. If an experiment is identified to be time-wise out of bounds for graphviz, it will be sent to the regular algorithm. Currently, the regular algorithm does not handle well wrappers; work is being done to developed a general algorithm.
\n
Press Grouped to see the grouped by date-member graph representation of the experiment.
\n
If the experiment instance cannot be handled by graphviz, then it would not be possible to group it. Again, work is being done to overcome this.
\n
If the experiment is RUNNING and the Graph has been rendered, press Start Job Monitor to start a live tracker of the changes on the experiment's jobs.\n This process will automatically update the graph's nodes colors and show a log of the detected changes.\n
\n
If there are any defined wrappers, they will be shown on the corresponding tab at the right side of the Graph. You can click on any member of that list and the nodes belonging to that wrapper will be highlighted.
\n Press Show Tree View to\n see the tree view representation of the experiment.\n
\n
\n Repeating subtrees in the tree view are only shown once, use the\n searcher to focus only on those items.\n
\n
\n );\n }\n\n if (this.props.treedata.error === true) {\n return (\n
\n
Something has gone very wrong.
\n
\n {this.props.treedata.error_message}\n
\n
\n );\n }\n\n // if (!this.props.treedata){\n // return (\n //
\n //
Press Show Tree to see the tree representation of the experiment.
\n //
If the experiment is RUNNING and the Tree has been rendered, press Start Job Monitor to start a live tracker of the changes on the experiment's jobs.\n // This process will automatically update the tree's nodes colors and show a log of the detected changes.\n //
\n //
\n // );\n // }\n\n class FancyTree extends Component {\n // shouldComponentUpdate(nextProps, nextState){\n // if (this.props.shouldUpdateGraph === true){\n // return true;\n // } else {\n // return false;\n // }\n // }\n\n componentDidMount() {\n var tree = new createTree(\"#tree\", {\n activate: (event, data) => {\n //console.log(event)\n //console.log(data)\n //console.log(tree)\n console.log(data);\n if (data) {\n // var thenode = tree.getNodesByRef(\"a2a7_20170427_1\")\n // console.log(thenode)\n // if (thenode){\n // for (var i = 0; i < thenode.length;i++){\n // thenode[i].setTitle(\"a2a7_20170417_1 Honked \")\n // }\n\n // }\n // console.log(tree.activeNode.getParent())\n // console.log(tree.activeNode)\n //data.node.title = \"Honk\";\n //console.log(data);\n //console.log(this);\n this.props.updateSelectionTree(data);\n //this.updateSelection(data);\n }\n },\n // extensions: ['edit', 'filter'],\n // extensions: [\"clones\",\"filter\", \"childcounter\"],\n extensions: [\"filter\", \"childcounter\", \"clones\", \"edit\"],\n filter: {\n autoApply: true, // Re-apply last filter if lazy data is loaded\n autoExpand: true, // Expand all branches that contain matches while filtered\n counter: true, // Show a badge with number of matching child nodes near parent icons\n fuzzy: false, // Match single characters in order, e.g. 'fb' will match 'FooBar'\n hideExpandedCounter: true, // Hide counter badge if parent is expanded\n hideExpanders: false, // Hide expanders if all child nodes are hidden by filter\n highlight: false, // Highlight matches by wrapping inside tags\n leavesOnly: true, // Match end nodes only\n nodata: true, // Display a 'no data' status node if result is empty\n mode: \"hide\" // Grayout unmatched nodes (pass \"hide\" to remove unmatched node instead)\n },\n // clones: {\n // highlightClones: true,\n // highlightActiveClones: true,\n // },\n source: this.props.treedata\n });\n\n //console.log(tree.activeNode);\n\n // console.log(tree);\n this.props.setFancyTree(tree);\n // console.log(this.props.expid);\n // this.props.getExperimentTree(this.props.expid);\n //tree.filterBranches(\"FORMAT\");\n\n // tree.addClass(\"fancytree-connectors\");\n // this.props.setVisNetwork(network);\n // network.on(\"select\", (params) => {\n // console.log(params);\n // if (params.nodes){\n // //console.log(params.nodes);\n // this.props.updateSelection(params.nodes);\n // }\n\n // });\n }\n\n componentWillUnmount() {\n console.log(\"Unmounting Tree\");\n //this.props.cleanNavData();\n }\n\n render() {\n return (\n
Supply a Section (Type) in the appropriate textbox to filter the jobs that will be included in the query. Also, you can also supply the Hours value that determines how many hours before the current time you want to query. Leave both empty and a query for Any Section since the date of creation of the experiment will be executed.
\n
Press Get Statistics to generate the statistics, this will generate a Bar Chart and some extra statistics below. Drag the mouse inside the chart to zoom in; however, zoom in capabilities are not unlimited, so try to narrow your query.
\n Press Show Log{\" \"}\n to see the last 50 lines of the running log of this\n experiment. If the experiment is running, the log will\n update automatically.\n
\n );\n};\n\nexport default ExperimentColumn;\n","import React, { Component } from \"react\";\n// import vis from \"vis-network\";\nimport Spinner from \"../layout/Spinner\";\nimport vis from \"vis-network\";\n\nclass GraphNativeRep extends Component {\n\n shouldComponentUpdate(nextProps, nextState){ \n if (this.props.shouldUpdateGraph === true){\n //console.log(\"should Rerender\")\n return true\n }else if (nextProps.data && this.props.data && (nextProps.data.pkl_timestamp !== this.props.data.pkl_timestamp)){\n //console.log(\"Rerendering\")\n return true;\n }else if (nextProps.loadingGraph !== this.props.loadingGraph){\n //console.log(\"Render because changed loading\")\n return true; \n }else{\n //console.log(\"NO RERENDER\")\n return false;\n }\n }\n componentWillUnmount() {\n console.log(\"Unmounting Nav Rep\");\n this.props.cleanGraphData();\n this.props.clearStats();\n }\n\n updateVisNodes = (nodes) => {\n this.props.setVisData(nodes);\n };\n\n // onSubmit = (x,y) => e => {\n // e.preventDefault();\n // this.props.navigateGraph(x,y);\n // };\n\n // onLatest = (statusCode) => e => {\n // e.preventDefault();\n // this.props.navToLatest(statusCode); // Completed\n // };\n\n render () {\n if (this.props.loadingGraph) return ;\n if (!this.props.data){\n return (\n
\n
Press Classic to see the standard graph representation of the experiment.
\n
For the classic approach, the algorithm will first try to use graphviz, there are some constraints in place that try to identify those instances that could potentially make graphviz run forever. If an experiment is identified to be time-wise out of bounds for graphviz, it will be sent to the regular algorithm. Currently, the regular algorithm does not handle well wrappers; work is being done to developed a general algorithm.
\n
Press Grouped to see the grouped by date-member graph representation of the experiment.
\n
If the experiment instance cannot be handled by graphviz, then it would not be possible to group it. Again, work is being done to overcome this.
\n
If the experiment is RUNNING and the Graph has been rendered, press Start Job Monitor to start a live tracker of the changes on the experiment's jobs.\n This process will automatically update the graph's nodes colors and show a log of the detected changes.\n
\n
If there are any defined wrappers, they will be shown on the corresponding tab at the right side of the Graph. You can click on any member of that list and the nodes belonging to that wrapper will be highlighted.
\n Press Show Tree View to\n see the tree view representation of the experiment.\n
\n
\n Repeating subtrees in the tree view are only shown once, use the\n searcher to focus only on those items.\n
\n
\n );\n }\n\n if (this.props.treedata.error === true) {\n return (\n
\n
Something has gone very wrong.
\n
\n {this.props.treedata.error_message}\n
\n
\n );\n }\n\n // if (!this.props.treedata){\n // return (\n //
\n //
Press Show Tree to see the tree representation of the experiment.
\n //
If the experiment is RUNNING and the Tree has been rendered, press Start Job Monitor to start a live tracker of the changes on the experiment's jobs.\n // This process will automatically update the tree's nodes colors and show a log of the detected changes.\n //
\n //
\n // );\n // }\n\n class FancyTree extends Component {\n // shouldComponentUpdate(nextProps, nextState){\n // if (this.props.shouldUpdateGraph === true){\n // return true;\n // } else {\n // return false;\n // }\n // }\n\n componentDidMount() {\n var tree = new createTree(\"#tree\", {\n activate: (event, data) => {\n //console.log(event)\n //console.log(data)\n //console.log(tree)\n console.log(data);\n if (data) {\n // var thenode = tree.getNodesByRef(\"a2a7_20170427_1\")\n // console.log(thenode)\n // if (thenode){\n // for (var i = 0; i < thenode.length;i++){\n // thenode[i].setTitle(\"a2a7_20170417_1 Honked \")\n // }\n\n // }\n // console.log(tree.activeNode.getParent())\n // console.log(tree.activeNode)\n //data.node.title = \"Honk\";\n //console.log(data);\n //console.log(this);\n this.props.updateSelectionTree(data);\n //this.updateSelection(data);\n }\n },\n // extensions: ['edit', 'filter'],\n // extensions: [\"clones\",\"filter\", \"childcounter\"],\n extensions: [\"filter\", \"childcounter\", \"clones\", \"edit\"],\n filter: {\n autoApply: true, // Re-apply last filter if lazy data is loaded\n autoExpand: true, // Expand all branches that contain matches while filtered\n counter: true, // Show a badge with number of matching child nodes near parent icons\n fuzzy: false, // Match single characters in order, e.g. 'fb' will match 'FooBar'\n hideExpandedCounter: true, // Hide counter badge if parent is expanded\n hideExpanders: false, // Hide expanders if all child nodes are hidden by filter\n highlight: false, // Highlight matches by wrapping inside tags\n leavesOnly: true, // Match end nodes only\n nodata: true, // Display a 'no data' status node if result is empty\n mode: \"hide\" // Grayout unmatched nodes (pass \"hide\" to remove unmatched node instead)\n },\n // clones: {\n // highlightClones: true,\n // highlightActiveClones: true,\n // },\n source: this.props.treedata\n });\n\n //console.log(tree.activeNode);\n\n // console.log(tree);\n this.props.setFancyTree(tree);\n // console.log(this.props.expid);\n // this.props.getExperimentTree(this.props.expid);\n //tree.filterBranches(\"FORMAT\");\n\n // tree.addClass(\"fancytree-connectors\");\n // this.props.setVisNetwork(network);\n // network.on(\"select\", (params) => {\n // console.log(params);\n // if (params.nodes){\n // //console.log(params.nodes);\n // this.props.updateSelection(params.nodes);\n // }\n\n // });\n }\n\n componentWillUnmount() {\n console.log(\"Unmounting Tree\");\n //this.props.cleanNavData();\n }\n\n render() {\n return (\n
Supply a Section (Type) in the appropriate textbox to filter the jobs that will be included in the query. Also, you can also supply the Hours value that determines how many hours before the current time you want to query. Leave both empty and a query for Any Section since the date of creation of the experiment will be executed.
\n
Press Get Statistics to generate the statistics, this will generate a Bar Chart and some extra statistics below. Drag the mouse inside the chart to zoom in; however, zoom in capabilities are not unlimited, so try to narrow your query.
\n Press Show Log{\" \"}\n to see the last 50 lines of the running log of this\n experiment. If the experiment is running, the log will\n update automatically.\n
` is embedded.
+ * [Fixed] #966: ext-dnd5: bug in function onDropEvent (case 'dragover')
+ * [Fixed] ext-filter: sub-match counter is one too high.
# 2.32.0 / 2019-09-10
- * [Added] `node.hasClass(className)`
+ * [Added] `node.hasClass()`
* [Added] `tree.applyCommand()` and `node.applyCommand()` (experimental!)
* [Added] `tree.isLoading()`
* [Added] `tree.toDict(includeRoot, callback)` and `node.toDict(recursive, callback)`:
diff --git a/node_modules/jquery.fancytree/LICENSE.txt b/node_modules/jquery.fancytree/LICENSE.txt
index 959cf1c143dc588311f65ddca952d604765aeaf5..a99188922deb462e23adf0a9231875426a851062 100644
--- a/node_modules/jquery.fancytree/LICENSE.txt
+++ b/node_modules/jquery.fancytree/LICENSE.txt
@@ -1,4 +1,4 @@
-Copyright 2008-2019 Martin Wendt,
+Copyright 2008-2020 Martin Wendt,
https://wwWendt.de/
Permission is hereby granted, free of charge, to any person obtaining
diff --git a/node_modules/jquery.fancytree/README.md b/node_modules/jquery.fancytree/README.md
index 65e113077bd7f961e6959a2e82c77f7c149787ff..9d4041aa15b4ad21011673d1a5e7d62eebb2ec97 100644
--- a/node_modules/jquery.fancytree/README.md
+++ b/node_modules/jquery.fancytree/README.md
@@ -1,12 +1,15 @@
# ![logo](doc/logo.png?raw=true) Fancytree
[![GitHub version](https://badge.fury.io/gh/mar10%2Ffancytree.svg)](https://github.com/mar10/fancytree/releases/latest)
[![Build Status](https://travis-ci.org/mar10/fancytree.svg?branch=master)](https://travis-ci.org/mar10/fancytree)
-[![Selenium Test Status](https://saucelabs.com/buildstatus/sauce-fancytree)](https://saucelabs.com/u/sauce-fancytree)
[![npm](https://img.shields.io/npm/dm/jquery.fancytree.svg)](https://www.npmjs.com/package/jquery.fancytree)
[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/jquery.fancytree/badge)](https://www.jsdelivr.com/package/npm/jquery.fancytree)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![StackOverflow: fancytree](https://img.shields.io/badge/StackOverflow-fancytree-blue.svg)](https://stackoverflow.com/questions/tagged/fancytree)
+
+
Fancytree (sequel of [DynaTree 1.x](https://code.google.com/p/dynatree/)) is a
JavaScript tree view / tree grid plugin with support for keyboard, inline editing,
filtering, checkboxes, drag'n'drop, and lazy loading.
@@ -61,7 +64,8 @@ See [module loader support](https://github.com/mar10/fancytree/wiki#use-a-module
Thanks to all [contributors](https://github.com/mar10/fancytree/contributors).
-
+
diff --git a/node_modules/jquery.fancytree/dist/LICENSE.txt b/node_modules/jquery.fancytree/dist/LICENSE.txt
index 959cf1c143dc588311f65ddca952d604765aeaf5..a99188922deb462e23adf0a9231875426a851062 100644
--- a/node_modules/jquery.fancytree/dist/LICENSE.txt
+++ b/node_modules/jquery.fancytree/dist/LICENSE.txt
@@ -1,4 +1,4 @@
-Copyright 2008-2019 Martin Wendt,
+Copyright 2008-2020 Martin Wendt,
https://wwWendt.de/
Permission is hereby granted, free of charge, to any person obtaining
diff --git a/node_modules/jquery.fancytree/dist/jquery.fancytree-all-deps.js b/node_modules/jquery.fancytree/dist/jquery.fancytree-all-deps.js
index 0bc45dacbc4c1916006976ff8ed38f9079bac121..116c563e261b21f0e3f5283e1420ef619af9288d 100644
--- a/node_modules/jquery.fancytree/dist/jquery.fancytree-all-deps.js
+++ b/node_modules/jquery.fancytree/dist/jquery.fancytree-all-deps.js
@@ -1,6 +1,6 @@
-/*! jQuery Fancytree Plugin - 2.32.0 - 2019-09-10T07:42:12Z
+/*! jQuery Fancytree Plugin - 2.35.0 - 2020-03-27T22:41:58Z
* 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
* http://jqueryui.com
@@ -1361,12 +1361,12 @@ var uniqueId = $.fn.extend( {
* Tree view control with support for lazy loading and much more.
* 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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
/** Core Fancytree module.
@@ -1405,7 +1405,7 @@ var uniqueId = $.fn.extend( {
REX_HTML = /[&<>"'/]/g, // Escape those characters
REX_TOOLTIP = /[<>"'/]/g, // Don't escape `&` in tooltips
RECURSIVE_REQUEST_ERROR = "$recursive_request",
- // CLIPBOARD = null,
+ INVALID_REQUEST_TARGET_ERROR = "$request_target_invalid",
ENTITY_MAP = {
"&": "&",
"<": "<",
@@ -2206,7 +2206,7 @@ var uniqueId = $.fn.extend( {
*
* @param {FancytreeNode} node source node
* @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
*/
copyTo: function(node, mode, map) {
@@ -2947,15 +2947,7 @@ var uniqueId = $.fn.extend( {
// i.e. return false for nodes (but not parents) that are hidden
// by a filter
if (hasFilter && !this.match && !this.subMatchCount) {
- this.debug(
- "isVisible: HIDDEN (" +
- hasFilter +
- ", " +
- this.match +
- ", " +
- this.match +
- ")"
- );
+ // this.debug( "isVisible: HIDDEN (" + hasFilter + ", " + this.match + ", " + this.match + ")" );
return false;
}
@@ -2963,7 +2955,7 @@ var uniqueId = $.fn.extend( {
n = parents[i];
if (!n.expanded) {
- this.debug("isVisible: HIDDEN (parent collapsed)");
+ // this.debug("isVisible: HIDDEN (parent collapsed)");
return false;
}
// if (hasFilter && !n.match && !n.subMatchCount) {
@@ -2971,17 +2963,16 @@ var uniqueId = $.fn.extend( {
// return false;
// }
}
- this.debug("isVisible: VISIBLE");
+ // this.debug("isVisible: VISIBLE");
return true;
},
/** Deprecated.
* @deprecated since 2014-02-16: use load() instead.
*/
lazyLoad: function(discard) {
- this.warn(
+ $.error(
"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 expanded state is maintained.
@@ -3504,9 +3495,9 @@ var uniqueId = $.fn.extend( {
// this.debug("scrollIntoView(), scrollTop=" + scrollTop, opts.scrollOfs);
// _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
- this.warn("scrollIntoView(): node is invisible.");
+ this.info("scrollIntoView(): node is invisible.");
return _getResolvedPromise();
}
if (isParentWindow) {
@@ -3618,7 +3609,7 @@ var uniqueId = $.fn.extend( {
return this.tree._callHook("nodeSetSelected", this, flag, opts);
},
/**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} [details]
*/
@@ -3679,7 +3670,7 @@ var uniqueId = $.fn.extend( {
*
* @param {boolean} [recursive=false] include child nodes
* @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}
*/
toDict: function(recursive, callback) {
@@ -3711,7 +3702,7 @@ var uniqueId = $.fn.extend( {
}
}
if (recursive) {
- if (this.hasChildren()) {
+ if ($.isArray(this.children)) {
dict.children = [];
for (i = 0, l = this.children.length; i < l; i++) {
node = this.children[i];
@@ -4164,11 +4155,18 @@ var uniqueId = $.fn.extend( {
delete this._tempCache[key];
return null;
},
+ /* Check if this tree has extension `name` enabled.
+ *
+ * @param {string} name name of the required extension
+ */
+ _usesExtension: function(name) {
+ return $.inArray(name, this.options.extensions) >= 0;
+ },
/* Check if current extensions dependencies are met and throw an error if not.
*
* This method may be called inside the `treeInit` hook for custom extensions.
*
- * @param {string} extension name of the required extension
+ * @param {string} name name of the required extension
* @param {boolean} [required=true] pass `false` if the extension is optional, but we want to check for order if it is present
* @param {boolean} [before] `true` if `name` must be included before this, `false` otherwise (use `null` if order doesn't matter)
* @param {string} [message] optional error message (defaults to a descriptve error message)
@@ -4329,8 +4327,8 @@ var uniqueId = $.fn.extend( {
// case "copy":
// clipboard = {
// mode: cmd,
- // data: node.toDict(function(n) {
- // delete n.key;
+ // data: node.toDict(function(d, n) {
+ // delete d.key;
// }),
// };
// break;
@@ -4425,6 +4423,13 @@ var uniqueId = $.fn.extend( {
consoleApply("log", arguments);
}
},
+ /** Destroy this widget, restore previous markup and cleanup resources.
+ *
+ * @since 2.34
+ */
+ destroy: function() {
+ this.widget.destroy();
+ },
/** Enable (or disable) the tree control.
*
* @param {boolean} [flag=true] pass false to disable
@@ -4788,6 +4793,10 @@ var uniqueId = $.fn.extend( {
},
/**
* Return an array of selected nodes.
+ *
+ * Note: you cannot send this result via Ajax directly. Instead the
+ * node object need to be converted to plain objects, for example
+ * by using `$.map()` and `node.toDict()`.
* @param {boolean} [stopOnParents=false] only return the topmost selected
* node (useful with selectMode 3)
* @returns {FancytreeNode[]}
@@ -4799,6 +4808,20 @@ var uniqueId = $.fn.extend( {
* @returns {boolean}
*/
hasFocus: function() {
+ // var ae = document.activeElement,
+ // hasFocus = !!(
+ // ae && $(ae).closest(".fancytree-container").length
+ // );
+
+ // if (hasFocus !== !!this._hasFocus) {
+ // this.warn(
+ // "hasFocus(): fix inconsistent container state, now: " +
+ // hasFocus
+ // );
+ // this._hasFocus = hasFocus;
+ // this.$container.toggleClass("fancytree-treefocus", hasFocus);
+ // }
+ // return hasFocus;
return !!this._hasFocus;
},
/** Write to browser console if debugLevel >= 3 (prepending tree name)
@@ -5124,6 +5147,26 @@ var uniqueId = $.fn.extend( {
setOption: function(optionName, value) {
return this.widget.option(optionName, value);
},
+ /**
+ * Call console.time() when in debug mode (verbose >= 4).
+ *
+ * @param {string} label
+ */
+ debugTime: function(label) {
+ if (this.options.debugLevel >= 4) {
+ window.console.time(this + " - " + label);
+ }
+ },
+ /**
+ * Call console.timeEnd() when in debug mode (verbose >= 4).
+ *
+ * @param {string} label
+ */
+ debugTimeEnd: function(label) {
+ if (this.options.debugLevel >= 4) {
+ window.console.timeEnd(this + " - " + label);
+ }
+ },
/**
* Return all nodes as nested list of {@link NodeData}.
*
@@ -5189,7 +5232,7 @@ var uniqueId = $.fn.extend( {
* @since 2.28
*/
visitRows: function(fn, opts) {
- if (!this.rootNode.children) {
+ if (!this.rootNode.hasChildren()) {
return false;
}
if (opts && opts.reverse) {
@@ -5318,7 +5361,8 @@ var uniqueId = $.fn.extend( {
/**
* These additional methods of the {@link Fancytree} class are 'hook functions'
* that can be used and overloaded by extensions.
- * (See writing extensions.)
+ *
+ * @see [writing extensions](https://github.com/mar10/fancytree/wiki/TutorialExtensions)
* @mixin Fancytree_Hooks
*/
$.extend(
@@ -5568,12 +5612,16 @@ var uniqueId = $.fn.extend( {
nodeLoadChildren: function(ctx, source) {
var ajax,
delay,
- dfd,
- res,
+ ajaxDfd = null,
+ resultDfd,
+ isAsync = true,
tree = ctx.tree,
node = ctx.node,
+ nodePrevParent = node.parent,
+ tag = "nodeLoadChildren",
requestId = Date.now();
+ // `source` is a callback: use the returned result instead:
if ($.isFunction(source)) {
source = source.call(tree, { type: "source" }, ctx);
_assert(
@@ -5581,23 +5629,15 @@ var uniqueId = $.fn.extend( {
"source callback must not return another function"
);
}
- if (source.url) {
- if (node._requestId) {
- node.warn(
- "Recursive load request #" +
- requestId +
- " while #" +
- node._requestId +
- " is pending."
- );
- // } else {
- // node.debug("Send load request #" + requestId);
- }
+ // `source` is already a promise:
+ if ($.isFunction(source.then)) {
+ // _assert($.isFunction(source.always), "Expected jQuery?");
+ ajaxDfd = source;
+ } else if (source.url) {
// `source` is an Ajax options object
ajax = $.extend({}, ctx.options.ajax, source);
- node._requestId = requestId;
if (ajax.debugDelay) {
- // simulate a slow server
+ // Simulate a slow server
delay = ajax.debugDelay;
delete ajax.debugDelay; // remove debug option
if ($.isArray(delay)) {
@@ -5611,30 +5651,74 @@ var uniqueId = $.fn.extend( {
Math.round(delay) +
" ms ..."
);
- dfd = $.Deferred(function(dfd) {
+ ajaxDfd = $.Deferred(function(ajaxDfd) {
setTimeout(function() {
$.ajax(ajax)
.done(function() {
- dfd.resolveWith(this, arguments);
+ ajaxDfd.resolveWith(this, arguments);
})
.fail(function() {
- dfd.rejectWith(this, arguments);
+ ajaxDfd.rejectWith(this, arguments);
});
}, delay);
});
} 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);
+ }
+
+ // Check for overlapping requests
+ if (node._requestId) {
+ node.warn(
+ "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");
+ }
- // Defer the deferred: we want to be able to reject, even if ajax
- // resolved ok.
- source = new $.Deferred();
- dfd.done(function(data, textStatus, jqXHR) {
+ // 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;
if (
- (this.dataType === "json" ||
- this.dataType === "jsonp") &&
+ (source.dataType === "json" ||
+ source.dataType === "jsonp") &&
typeof data === "string"
) {
$.error(
@@ -5645,21 +5729,28 @@ var uniqueId = $.fn.extend( {
// The expected request time stamp is later than `requestId`
// (which was kept as as closure variable to this handler function)
// 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;
// } else {
// node.debug("Response returned for load request #" + requestId);
}
- // postProcess is similar to the standard ajax dataFilter hook,
- // but it is also called for JSONP
+ if (node.parent === null && nodePrevParent !== null) {
+ resultDfd.rejectWith(this, [
+ INVALID_REQUEST_TARGET_ERROR,
+ ]);
+ return;
+ }
+ // Allow to adjust the received response data in the `postProcess` event.
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 =
+ // If res contains an `error` property, an error status is displayed
try {
- // The handler may either
- // - modify `ctx.response` in-place (and leave `ctx.result` undefined)
- // => res = undefined
- // - return a replacement in `ctx.result`
- // => res =
- // If res contains an `error` property, an error status is displayed
res = tree._triggerNodeEvent(
"postProcess",
ctx,
@@ -5667,7 +5758,7 @@ var uniqueId = $.fn.extend( {
{
response: data,
error: null,
- dataType: this.dataType,
+ dataType: source.dataType,
}
);
} catch (e) {
@@ -5678,6 +5769,8 @@ var uniqueId = $.fn.extend( {
};
}
if (res.error) {
+ // Either postProcess failed with an exception, or the returned
+ // result object has an 'error' property attached:
errorObj = $.isPlainObject(res.error)
? res.error
: { message: res.error };
@@ -5686,7 +5779,7 @@ var uniqueId = $.fn.extend( {
null,
errorObj
);
- source.rejectWith(this, [errorObj]);
+ resultDfd.rejectWith(this, [errorObj]);
return;
}
if (
@@ -5704,175 +5797,158 @@ var uniqueId = $.fn.extend( {
ctx.options.enableAspx
) {
// 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 =
typeof data.d === "string"
? $.parseJSON(data.d)
: data.d;
}
- source.resolveWith(this, [data]);
- }).fail(function(jqXHR, textStatus, errorThrown) {
+ resultDfd.resolveWith(this, [data]);
+ },
+ function(jqXHR, textStatus, errorThrown) {
+ // ajaxDfd was rejected, so we reject resultDfd as well
var errorObj = tree._makeHookContext(node, null, {
error: jqXHR,
args: Array.prototype.slice.call(arguments),
message: errorThrown,
details: jqXHR.status + ": " + errorThrown,
});
- source.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");
+ resultDfd.rejectWith(this, [errorObj]);
+ }
+ );
- source
- .done(function(children) {
- tree.nodeSetStatus(ctx, "ok");
- node._requestId = null;
- })
- .fail(function(error) {
- var ctxErr;
-
- if (error === RECURSIVE_REQUEST_ERROR) {
- node.warn(
- "Ignored response for obsolete load request #" +
- requestId +
- " (expected #" +
- node._requestId +
- ")"
+ // The async Ajax request has now started.
+ // 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");
+ 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
);
- return;
} else if (
- error.node &&
- error.error &&
- error.message
+ tree.options.nodata === true &&
+ node.isRootNode()
) {
- // error is already a context object
- ctxErr = error;
- } 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 = "";
- }
+ 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) {
+ var ctxErr;
+
+ if (error === RECURSIVE_REQUEST_ERROR) {
node.warn(
- "Load children failed (" + ctxErr.message + ")",
- ctxErr
+ "Ignored response for obsolete load request #" +
+ requestId +
+ " (expected #" +
+ node._requestId +
+ ")"
);
- if (
- tree._triggerNodeEvent(
- "loadError",
- ctxErr,
- null
- ) !== false
- ) {
- tree.nodeSetStatus(
- ctx,
- "error",
- ctxErr.message,
- ctxErr.details
- );
- }
- });
- } else {
- 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,
+ return;
+ } else if (error === INVALID_REQUEST_TARGET_ERROR) {
+ node.warn(
+ "Lazy parent node was removed while loading: discarding response."
+ );
+ return;
+ } else if (error.node && error.error && error.message) {
+ // error is already a context object
+ ctxErr = error;
+ } 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 = "";
}
+ }
+ node.warn(
+ "Load children failed (" + ctxErr.message + ")",
+ ctxErr
);
-
if (
- $.isArray(res) ||
- ($.isPlainObject(res) && $.isArray(res.children))
+ tree._triggerNodeEvent(
+ "loadError",
+ ctxErr,
+ null
+ ) !== false
) {
- // 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) {
- if ($.isFunction(tree.options.nodata)) {
- noDataRes = tree.options.nodata.call(
- tree,
- { type: "nodata" },
- ctx
+ tree.nodeSetStatus(
+ ctx,
+ "error",
+ ctxErr.message,
+ ctxErr.details
);
- } 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);
+ })
+ .always(function() {
+ node._requestId = null;
+ if (isAsync) {
+ tree.debugTimeEnd(tag);
}
- }
- // trigger fancytreeloadchildren
- tree._triggerNodeEvent("loadChildren", node);
- });
+ });
+
+ return resultDfd.promise();
},
/** [Not Implemented] */
nodeLoadKeyPath: function(ctx, keyPathList) {
@@ -6009,6 +6085,7 @@ var uniqueId = $.fn.extend( {
* Call this method to create new nodes, or after the strucuture
* was changed (e.g. after moving this node or adding/removing children)
* nodeRenderTitle() and nodeRenderStatus() are implied.
+ *
* ```html
*
*
@@ -6714,7 +6791,13 @@ var uniqueId = $.fn.extend( {
dfd.done(function() {
var lastChild = node.getLastChild();
- if (flag && opts.autoScroll && !noAnimation && lastChild) {
+ if (
+ flag &&
+ opts.autoScroll &&
+ !noAnimation &&
+ lastChild &&
+ tree._enableUpdate
+ ) {
// Scroll down to last child, but keep current node visible
lastChild
.scrollIntoView(true, { topNode: node })
@@ -6773,9 +6856,7 @@ var uniqueId = $.fn.extend( {
$(node.li).addClass(cn.animating); // #717
if ($.isFunction($(node.ul)[effect.effect])) {
- tree.debug(
- "use jquery." + effect.effect + " method"
- );
+ // tree.debug( "use jquery." + effect.effect + " method" );
$(node.ul)[effect.effect]({
duration: effect.duration,
always: function() {
@@ -7263,16 +7344,30 @@ var uniqueId = $.fn.extend( {
type = $container.data("type") || "html";
switch (type) {
case "html":
- $ul = $container.find(">ul").first();
- $ul.addClass(
- "ui-fancytree-source fancytree-helper-hidden"
- );
- source = $.ui.fancytree.parseHtml($ul);
- // allow to init tree.data.foo from
- this.data = $.extend(
- this.data,
- _getElementDataAsDict($ul)
- );
+ // There should be an embedded `
` with initial nodes,
+ // but another `
` is appended
+ // to the tree's
on startup anyway.
+ $ul = $container
+ .find(">ul")
+ .not(".fancytree-container")
+ .first();
+
+ if ($ul.length) {
+ $ul.addClass(
+ "ui-fancytree-source fancytree-helper-hidden"
+ );
+ source = $.ui.fancytree.parseHtml($ul);
+ // allow to init tree.data.foo from
+ this.data = $.extend(
+ this.data,
+ _getElementDataAsDict($ul)
+ );
+ } else {
+ FT.warn(
+ "No `source` option was passed and container does not contain `
`: assuming `source: []`."
+ );
+ source = [];
+ }
break;
case "json":
source = $.parseJSON($container.text());
@@ -7312,8 +7407,9 @@ var uniqueId = $.fn.extend( {
$.error("Not implemented");
}
- // TODO: might be useful? Let's wait for a use case...
- // tree._triggerTreeEvent("beforeInitLoad", null);
+ // preInit is fired when the widget markup is created, but nodes
+ // not yet loaded
+ tree._triggerTreeEvent("preInit", null);
// Trigger fancytreeinit after nodes have been loaded
dfd = this.nodeLoadChildren(rootCtx, source)
@@ -7478,14 +7574,28 @@ var uniqueId = $.fn.extend( {
*/
/**
- * The plugin (derrived from jQuery.Widget).
- * This constructor is not called directly. Use `$(selector).fancytree({})`
- * to initialize the plugin instead.
- *
// Access widget methods and members:
- * var tree = $("#tree").fancytree("getTree");
- * var node = $("#tree").fancytree("getActiveNode", "1234");
- *
+ * The plugin (derrived from [jQuery.Widget](http://api.jqueryui.com/jQuery.widget/)).
+ *
+ * **Note:**
+ * These methods implement the standard jQuery UI widget API.
+ * It is recommended to use methods of the {Fancytree} instance instead
+ *
+ * @example
+ * // DEPRECATED: Access jQuery UI widget methods and members:
+ * var tree = $("#tree").fancytree("getTree", "#myTree");
+ * var node = $.ui.fancytree.getTree("#tree").getActiveNode();
+ *
+ * // RECOMMENDED: Use the Fancytree object API
+ * var tree = $.ui.fancytree.getTree("#myTree");
+ * var node = tree.getActiveNode();
*
+ * // or you may already have stored the tree instance upon creation:
+ * import {createTree, version} from 'jquery.fancytree'
+ * const tree = createTree('#tree', { ... });
+ * var node = tree.getActiveNode();
+ *
+ * @see {Fancytree_Static#getTree}
+ * @deprecated Use methods of the {Fancytree} instance instead
* @mixin Fancytree_Widget
*/
@@ -7512,7 +7622,7 @@ var uniqueId = $.fn.extend( {
clickFolderMode: 4,
debugLevel: null, // 0..4 (null: use global setting $.ui.fancytree.debugLevel)
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,
extensions: [],
// fx: { height: "toggle", duration: 200 },
@@ -7569,6 +7679,17 @@ var uniqueId = $.fn.extend( {
lazyLoad: null,
postProcess: null,
},
+ _deprecationWarning: function(name) {
+ var tree = this.tree;
+
+ if (tree && tree.options.debugLevel >= 3) {
+ tree.warn(
+ "$().fancytree('" +
+ name +
+ "') is deprecated (see https://wwwendt.de/tech/fancytree/doc/jsdoc/Fancytree_Widget.html"
+ );
+ }
+ },
/* Set up the widget, Called on first $().fancytree() */
_create: function() {
this.tree = new Fancytree(this);
@@ -7686,11 +7807,11 @@ var uniqueId = $.fn.extend( {
},
/** Use the destroy method to clean up any modifications your widget has made to the DOM */
- destroy: function() {
+ _destroy: function() {
this._unbind();
this.tree._callHook("treeDestroy", this.tree);
// In jQuery UI 1.8, you must invoke the destroy method from the base widget
- $.Widget.prototype.destroy.call(this);
+ // $.Widget.prototype.destroy.call(this);
// TODO: delete tree and nodes to make garbage collect easier?
// TODO: In jQuery UI 1.9 and above, you would define _destroy instead of destroy and not call the base method
},
@@ -7883,27 +8004,35 @@ var uniqueId = $.fn.extend( {
},
/** Return the active node or null.
* @returns {FancytreeNode}
+ * @deprecated Use methods of the Fancytree instance instead (example above).
*/
getActiveNode: function() {
+ this._deprecationWarning("getActiveNode");
return this.tree.activeNode;
},
/** Return the matching node or null.
* @param {string} key
* @returns {FancytreeNode}
+ * @deprecated Use methods of the Fancytree instance instead (example above).
*/
getNodeByKey: function(key) {
+ this._deprecationWarning("getNodeByKey");
return this.tree.getNodeByKey(key);
},
/** Return the invisible system root node.
* @returns {FancytreeNode}
+ * @deprecated Use methods of the Fancytree instance instead (example above).
*/
getRootNode: function() {
+ this._deprecationWarning("getRootNode");
return this.tree.rootNode;
},
/** Return the current tree instance.
* @returns {Fancytree}
+ * @deprecated Use `$.ui.fancytree.getTree()` instead (example above).
*/
getTree: function() {
+ this._deprecationWarning("getTree");
return this.tree;
},
}
@@ -7913,12 +8042,14 @@ var uniqueId = $.fn.extend( {
FT = $.ui.fancytree;
/**
- * Static members in the `$.ui.fancytree` namespace.
- *
- *
// Access static members:
+ * Static members in the `$.ui.fancytree` namespace.
+ * This properties and methods can be accessed without instantiating a concrete
+ * Fancytree instance.
+ *
+ * @example
+ * // Access static members:
* var node = $.ui.fancytree.getNode(element);
* alert($.ui.fancytree.version);
- *
*
* @mixin Fancytree_Static
*/
@@ -7926,11 +8057,14 @@ var uniqueId = $.fn.extend( {
$.ui.fancytree,
/** @lends Fancytree_Static# */
{
- /** @type {string} */
- version: "2.32.0", // Set to semver by 'grunt release'
- /** @type {string} */
+ /** Version number `"MAJOR.MINOR.PATCH"`
+ * @type {string} */
+ version: "2.35.0", // Set to semver by 'grunt release'
+ /** @type {string}
+ * @description `"production" for release builds` */
buildType: "production", // Set to 'production' by 'grunt build'
- /** @type {int} */
+ /** @type {int}
+ * @description 0: silent .. 5: verbose (default: 3 for release builds). */
debugLevel: 3, // Set to 3 by 'grunt build'
// Used by $.ui.fancytree.debug() and as default for tree.options.debugLevel
@@ -7939,9 +8073,15 @@ var uniqueId = $.fn.extend( {
_extensions: {},
// focusTree: null,
- /** Expose class object as $.ui.fancytree._FancytreeClass */
+ /** Expose class object as `$.ui.fancytree._FancytreeClass`.
+ * Useful to extend `$.ui.fancytree._FancytreeClass.prototype`.
+ * @type {Fancytree}
+ */
_FancytreeClass: Fancytree,
- /** Expose class object as $.ui.fancytree._FancytreeNodeClass */
+ /** Expose class object as $.ui.fancytree._FancytreeNodeClass
+ * Useful to extend `$.ui.fancytree._FancytreeNodeClass.prototype`.
+ * @type {FancytreeNode}
+ */
_FancytreeNodeClass: FancytreeNode,
/* Feature checks to provide backwards compatibility */
jquerySupports: {
@@ -7968,10 +8108,8 @@ var uniqueId = $.fn.extend( {
* @since 2.25
*/
createTree: function(el, opts) {
- var tree = $(el)
- .fancytree(opts)
- .fancytree("getTree");
- return tree;
+ var $tree = $(el).fancytree(opts);
+ return FT.getTree($tree);
},
/** Return a function that executes *fn* at most every *timeout* ms.
* @param {integer} timeout
@@ -8176,11 +8314,17 @@ var uniqueId = $.fn.extend( {
if (!el.length) {
el = $(orgEl).eq(0); // el was a selector: use first match
}
+ } else if (
+ el instanceof Element ||
+ el instanceof HTMLDocument
+ ) {
+ el = $(el);
} else if (el instanceof $) {
- el = el.eq(0); // el was a jQuery object: use the first DOM element
+ el = el.eq(0); // el was a jQuery object: use the first
} else if (el.originalEvent !== undefined) {
el = $(el.target); // el was an Event
}
+ // el is a jQuery object wit one element here
el = el.closest(":ui-fancytree");
widget = el.data("ui-fancytree") || el.data("fancytree"); // the latter is required by jQuery <= 1.8
return widget ? widget.tree : null;
@@ -8188,11 +8332,11 @@ var uniqueId = $.fn.extend( {
/** Return an option value that has a default, but may be overridden by a
* callback or a node instance attribute.
*
- * Evaluation sequence:
+ * Evaluation sequence:
*
- * If tree.options. is a callback that returns something, use that.
- * Else if node. is defined, use that.
- * Else if tree.options. is a value, use that.
+ * If `tree.options.` is a callback that returns something, use that.
+ * Else if `node.` is defined, use that.
+ * Else if `tree.options.` is a value, use that.
* Else use `defaultValue`.
*
* @param {string} optionName name of the option property (on node and tree)
@@ -8545,13 +8689,13 @@ var uniqueId = $.fn.extend( {
* Add a child counter bubble to tree nodes.
* (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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
// To keep the global namespace clean, we wrap everything in a closure.
@@ -8587,7 +8731,7 @@ var uniqueId = $.fn.extend( {
// New member functions can be added to the `Fancytree` class.
// This function will be available for every tree instance:
//
- // var tree = $("#tree").fancytree("getTree");
+ // var tree = $.ui.fancytree.getTree("#tree");
// tree.countSelected(false);
$.ui.fancytree._FancytreeClass.prototype.countSelected = function(topOnly) {
@@ -8632,7 +8776,7 @@ var uniqueId = $.fn.extend( {
} else {
$badge.remove();
}
- if (extOpts.deep && !node.isTopLevel() && !node.isRoot()) {
+ if (extOpts.deep && !node.isTopLevel() && !node.isRootNode()) {
node.parent.updateCounters();
}
};
@@ -8670,7 +8814,7 @@ var uniqueId = $.fn.extend( {
// Every extension must be registered by a unique name.
name: "childcounter",
// Version information should be compliant with [semver](http://semver.org)
- version: "2.32.0",
+ version: "2.35.0",
// Extension specific options and their defaults.
// This options will be available as `tree.options.childcounter.hideExpanded`
@@ -8776,13 +8920,13 @@ var uniqueId = $.fn.extend( {
* Support faster lookup of nodes by key and shared ref-ids.
* (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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
(function(factory) {
@@ -9140,7 +9284,7 @@ var uniqueId = $.fn.extend( {
*/
$.ui.fancytree.registerExtension({
name: "clones",
- version: "2.32.0",
+ version: "2.35.0",
// Default options for this extension.
options: {
highlightActiveClones: true, // set 'fancytree-active-clone' on active clones and all peers
@@ -9297,13 +9441,13 @@ var uniqueId = $.fn.extend( {
* Drag-and-drop support (native HTML5).
* (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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
/*
@@ -10088,6 +10232,10 @@ var uniqueId = $.fn.extend( {
node.debug("Reject dropping below own ancestor.");
DRAG_ENTER_RESPONSE = false;
break;
+ } else if (dndOpts.preventLazyParents && !node.isLoaded()) {
+ node.warn("Drop over unloaded target node prevented.");
+ DRAG_ENTER_RESPONSE = false;
+ break;
}
$dropMarker.show();
@@ -10096,6 +10244,7 @@ var uniqueId = $.fn.extend( {
r = dndOpts.dragEnter(node, data);
res = normalizeDragEnterResponse(r);
+ // alert("res:" + JSON.stringify(res))
DRAG_ENTER_RESPONSE = res;
allowDrop = res && (res.over || res.before || res.after);
@@ -10123,6 +10272,7 @@ var uniqueId = $.fn.extend( {
// ": dropEffect: " +
// dataTransfer.dropEffect
// );
+ prepareDropEffectCallback(event, data);
LAST_HIT_MODE = handleDragOver(event, data);
// The flag controls the preventDefault() below:
@@ -10140,6 +10290,7 @@ var uniqueId = $.fn.extend( {
} else if (
dndOpts.autoExpandMS &&
Date.now() - DRAG_OVER_STAMP > dndOpts.autoExpandMS &&
+ !node.isLoading() &&
(!dndOpts.dragExpand ||
dndOpts.dragExpand(node, data) !== false)
) {
@@ -10306,7 +10457,7 @@ var uniqueId = $.fn.extend( {
$.ui.fancytree.registerExtension({
name: "dnd5",
- version: "2.32.0",
+ version: "2.35.0",
// Default options for this extension.
options: {
autoExpandMS: 1500, // Expand nodes after n milliseconds of hovering
@@ -10317,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.
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
+ preventLazyParents: true, // Prevent dropping items on unloaded lazy Fancytree nodes
preventNonNodes: false, // Prevent dropping items other than Fancytree nodes
preventRecursion: true, // Prevent dropping nodes on own descendants
preventSameParent: false, // Prevent dropping nodes under same direct parent
@@ -10434,13 +10586,13 @@ var uniqueId = $.fn.extend( {
* Make node titles editable.
* (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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
(function(factory) {
@@ -10642,7 +10794,7 @@ var uniqueId = $.fn.extend( {
// Re-enable mouse and keyboard handling
tree.widget._bind();
- if (local.lastDraggableAttrValue) {
+ if (node && local.lastDraggableAttrValue) {
node.span.draggable = true;
}
@@ -10732,7 +10884,7 @@ var uniqueId = $.fn.extend( {
*/
$.ui.fancytree.registerExtension({
name: "edit",
- version: "2.32.0",
+ version: "2.35.0",
// Default options for this extension.
options: {
adjustWidthOfs: 4, // null: don't adjust input size to content
@@ -10838,13 +10990,13 @@ var uniqueId = $.fn.extend( {
* Remove or highlight tree nodes, based on a filter.
* (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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
(function(factory) {
@@ -11008,7 +11160,9 @@ var uniqueId = $.fn.extend( {
count++;
node.match = true;
node.visitParents(function(p) {
- p.subMatchCount += 1;
+ if (p !== node) {
+ p.subMatchCount += 1;
+ }
// Expand match (unless this is no real match, but only a node in a matched branch)
if (opts.autoExpand && !matchedByBranch && !p.expanded) {
p.setExpanded(true, {
@@ -11180,7 +11334,7 @@ var uniqueId = $.fn.extend( {
*/
$.ui.fancytree.registerExtension({
name: "filter",
- version: "2.32.0",
+ version: "2.35.0",
// Default options for this extension.
options: {
autoApply: true, // Re-apply last filter if lazy data is loaded
@@ -11295,13 +11449,13 @@ var uniqueId = $.fn.extend( {
* Use glyph-fonts, ligature-fonts, or SVG icons instead of icon sprites.
* (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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
(function(factory) {
@@ -11484,7 +11638,7 @@ var uniqueId = $.fn.extend( {
$.ui.fancytree.registerExtension({
name: "glyph",
- version: "2.32.0",
+ version: "2.35.0",
// Default options for this extension.
options: {
preset: null, // 'awesome3', 'awesome4', 'bootstrap3', 'material'
@@ -11518,7 +11672,7 @@ var uniqueId = $.fn.extend( {
res = this._super(ctx);
- if (node.isRoot()) {
+ if (node.isRootNode()) {
return res;
}
span = $span.children("span.fancytree-expander").get(0);
@@ -11633,13 +11787,13 @@ var uniqueId = $.fn.extend( {
* Support keyboard navigation for trees with embedded input controls.
* (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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
(function(factory) {
@@ -11756,7 +11910,7 @@ var uniqueId = $.fn.extend( {
*/
$.ui.fancytree.registerExtension({
name: "gridnav",
- version: "2.32.0",
+ version: "2.35.0",
// Default options for this extension.
options: {
autofocusInput: false, // Focus first embedded input if node gets activated
@@ -11858,13 +12012,13 @@ var uniqueId = $.fn.extend( {
* Allow multiple selection of nodes by mouse or keyboard.
* (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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
(function(factory) {
@@ -11893,7 +12047,7 @@ var uniqueId = $.fn.extend( {
*/
$.ui.fancytree.registerExtension({
name: "multi",
- version: "2.32.0",
+ version: "2.35.0",
// Default options for this extension.
options: {
allowNoSelect: false, //
@@ -11990,13 +12144,13 @@ var uniqueId = $.fn.extend( {
*
* @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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
(function(factory) {
@@ -12136,7 +12290,7 @@ var uniqueId = $.fn.extend( {
/**
* [ext-persist] Remove persistence data of the given type(s).
* Called like
- * $("#tree").fancytree("getTree").clearCookies("active expanded focus selected");
+ * $.ui.fancytree.getTree("#tree").clearCookies("active expanded focus selected");
*
* @alias Fancytree#clearPersistData
* @requires jquery.fancytree.persist.js
@@ -12173,7 +12327,7 @@ var uniqueId = $.fn.extend( {
* [ext-persist] Return persistence information from cookies
*
* Called like
- * $("#tree").fancytree("getTree").getPersistData();
+ * $.ui.fancytree.getTree("#tree").getPersistData();
*
* @alias Fancytree#getPersistData
* @requires jquery.fancytree.persist.js
@@ -12196,7 +12350,7 @@ var uniqueId = $.fn.extend( {
*/
$.ui.fancytree.registerExtension({
name: "persist",
- version: "2.32.0",
+ version: "2.35.0",
// Default options for this extension.
options: {
cookieDelimiter: "~",
@@ -12484,13 +12638,13 @@ var uniqueId = $.fn.extend( {
* Render tree as table (aka 'tree grid', 'table tree').
* (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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
(function(factory) {
@@ -12573,7 +12727,7 @@ var uniqueId = $.fn.extend( {
$.ui.fancytree.registerExtension({
name: "table",
- version: "2.32.0",
+ version: "2.35.0",
// Default options for this extension.
options: {
checkboxColumnIdx: null, // render the checkboxes into the this column index (default: nodeColumnIdx)
@@ -13034,13 +13188,13 @@ var uniqueId = $.fn.extend( {
*
* @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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
(function(factory) {
@@ -13063,7 +13217,7 @@ var uniqueId = $.fn.extend( {
*/
$.ui.fancytree.registerExtension({
name: "themeroller",
- version: "2.32.0",
+ version: "2.35.0",
// Default options for this extension.
options: {
activeClass: "ui-state-active", // Class added to active node
@@ -13154,13 +13308,13 @@ var uniqueId = $.fn.extend( {
* Support for 100% wide selection bars.
* (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
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*
- * @version 2.32.0
- * @date 2019-09-10T07:42:12Z
+ * @version 2.35.0
+ * @date 2020-03-27T22:41:58Z
*/
(function(factory) {
@@ -13290,7 +13444,7 @@ var uniqueId = $.fn.extend( {
*/
$.ui.fancytree.registerExtension({
name: "wide",
- version: "2.32.0",
+ version: "2.35.0",
// Default options for this extension.
options: {
iconWidth: null, // Adjust this if @fancy-icon-width != "16px"
diff --git a/node_modules/jquery.fancytree/dist/jquery.fancytree-all-deps.min.js b/node_modules/jquery.fancytree/dist/jquery.fancytree-all-deps.min.js
index a7f11a3ade478e56c5133322118ec22da08321b2..f03ddc834b0054ed31a2847d5ac13eef8daba526 100644
--- a/node_modules/jquery.fancytree/dist/jquery.fancytree-all-deps.min.js
+++ b/node_modules/jquery.fancytree/dist/jquery.fancytree-all-deps.min.js
@@ -1,2 +1,2 @@
-!function(S){S.ui=S.ui||{};S.ui.version="1.12.1";var r,n=0,a=Array.prototype.slice;S.cleanData=(r=S.cleanData,function(e){var t,n,i;for(i=0;null!=(n=e[i]);i++)try{(t=S._data(n,"events"))&&t.remove&&S(n).triggerHandler("remove")}catch(e){}r(e)}),S.widget=function(e,n,t){var i,r,o,s={},a=e.split(".")[0],l=a+"-"+(e=e.split(".")[1]);return t||(t=n,n=S.Widget),S.isArray(t)&&(t=S.extend.apply(null,[{}].concat(t))),S.expr[":"][l.toLowerCase()]=function(e){return!!S.data(e,l)},S[a]=S[a]||{},i=S[a][e],r=S[a][e]=function(e,t){if(!this._createWidget)return new r(e,t);arguments.length&&this._createWidget(e,t)},S.extend(r,i,{version:t.version,_proto:S.extend({},t),_childConstructors:[]}),(o=new n).options=S.widget.extend({},o.options),S.each(t,function(t,o){S.isFunction(o)?s[t]=function(){function i(){return n.prototype[t].apply(this,arguments)}function r(e){return n.prototype[t].apply(this,e)}return function(){var e,t=this._super,n=this._superApply;return this._super=i,this._superApply=r,e=o.apply(this,arguments),this._super=t,this._superApply=n,e}}():s[t]=o}),r.prototype=S.widget.extend(o,{widgetEventPrefix:i&&o.widgetEventPrefix||e},s,{constructor:r,namespace:a,widgetName:e,widgetFullName:l}),i?(S.each(i._childConstructors,function(e,t){var n=t.prototype;S.widget(n.namespace+"."+n.widgetName,r,t._proto)}),delete i._childConstructors):n._childConstructors.push(r),S.widget.bridge(e,r),r},S.widget.extend=function(e){for(var t,n,i=a.call(arguments,1),r=0,o=i.length;r",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,t){t=S(t||this.defaultElement||this)[0],this.element=S(t),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=S(),this.hoverable=S(),this.focusable=S(),this.classesElementLookup={},t!==this&&(S.data(t,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===t&&this.destroy()}}),this.document=S(t.style?t.ownerDocument:t.document||t),this.window=S(this.document[0].defaultView||this.document[0].parentWindow)),this.options=S.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:S.noop,_create:S.noop,_init:S.noop,destroy:function(){var n=this;this._destroy(),S.each(this.classesElementLookup,function(e,t){n._removeClass(t,e)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:S.noop,widget:function(){return this.element},option:function(e,t){var n,i,r,o=e;if(0===arguments.length)return S.widget.extend({},this.options);if("string"==typeof e)if(o={},e=(n=e.split(".")).shift(),n.length){for(i=o[e]=S.widget.extend({},this.options[e]),r=0;r