wunderbaum 0.0.1-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,69 @@
1
+ /*!
2
+ * Wunderbaum - util
3
+ * Copyright (c) 2021-2022, Martin Wendt. Released under the MIT license.
4
+ * v0.0.1-0, Thu, 31 Mar 2022 10:19:39 GMT (https://github.com/mar10/wunderbaum)
5
+ */
6
+ const MOUSE_BUTTONS={0:"",1:"left",2:"middle",3:"right",4:"back",5:"forward"},MAX_INT=9007199254740991,userInfo=_getUserInfo(),isMac=userInfo.isMac,REX_HTML=/[&<>"'/]/g,REX_TOOLTIP=/[<>"'/]/g,ENTITY_MAP={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};class Deferred$1{constructor(){this.thens=[],this.catches=[],this.status=""}resolve(e){if(this.status)throw new Error("already settled");this.status="resolved",this.resolvedValue=e,this.thens.forEach((t=>t(e))),this.thens=[]}reject(e){if(this.status)throw new Error("already settled");this.status="rejected",this.rejectedError=e,this.catches.forEach((t=>t(e))),this.catches=[]}then(e){"resolved"===status?e(this.resolvedValue):this.thens.unshift(e)}catch(e){"rejected"===this.status?e(this.rejectedError):this.catches.unshift(e)}promise(){return{then:this.then,catch:this.catch}}}function assert(e,t){if(!e)throw t=t||"Assertion failed.",new Error(t)}function _getUserInfo(){const e=navigator;return{isMac:/Mac/.test(e.platform)}}function documentReady(e){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}function documentReadyPromise(){return new Promise((e=>{documentReady(e)}))}function each(e,t){if(null==e)return e;let i=e.length,s=0;if("number"==typeof i)for(;s<i&&!1!==t.call(e[s],s,e[s]);s++);else for(let i in e)if(!1===t.call(e[s],i,e[i]))break;return e}function error(e){throw new Error(e)}function escapeHtml(e){return(""+e).replace(REX_HTML,(function(e){return ENTITY_MAP[e]}))}function escapeRegex(e){return(""+e).replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function escapeTooltip(e){return(""+e).replace(REX_TOOLTIP,(function(e){return ENTITY_MAP[e]}))}function extractHtmlText(e){return e.indexOf(">")>=0&&error("not implemented"),e}function getValueFromElem(e,t=!1){const i=e.tagName;let s=null;if("SPAN"===i&&e.classList.contains("wb-col")){const i=e,n=i.querySelector("input,select");if(n)return getValueFromElem(n,t);i.innerText=""+s}else if("INPUT"===i){const i=e;switch(i.type){case"button":case"reset":case"submit":case"image":break;case"checkbox":s=i.indeterminate?null:i.checked;break;case"date":case"datetime":case"datetime-local":case"month":case"time":case"week":s=t?i.valueAsDate:i.value;break;case"number":case"range":s=i.valueAsNumber;break;case"radio":const e=i.name,n=i.parentElement.querySelector(`input[name="${e}"]:checked`);s=n?n.value:void 0;break;case"text":default:s=i.value}}else if("SELECT"===i){s=e.value}return s}function setValueToElem(e,t){const i=e.tagName;if("SPAN"===i&&e.classList.contains("wb-col")){const i=e,s=i.querySelector("input,select");if(s)return setValueToElem(s,t);i.innerText=""+t}else if("INPUT"===i){const i=e;switch(i.type){case"checkbox":i.indeterminate=null==t,i.checked=!!t;break;case"date":case"month":case"time":case"week":case"datetime":case"datetime-local":i.valueAsDate=t;break;case"number":case"range":i.valueAsNumber=t;break;case"radio":assert(!1,"not implemented");break;case"button":case"reset":case"submit":case"image":break;case"text":default:i.innerText=t}}else if("SELECT"===i){e.value=t}}function elemFromHtml(e){const t=document.createElement("template");return t.innerHTML=e.trim(),t.content.firstElementChild}const _IGNORE_KEYS=new Set(["Alt","Control","Meta","Shift"]);function elemFromSelector(e){return e?"string"==typeof e?document.querySelector(e):e:null}function eventToString(e){let t=e.key,i=e.type,s=[];return e.altKey&&s.push("Alt"),e.ctrlKey&&s.push("Control"),e.metaKey&&s.push("Meta"),e.shiftKey&&s.push("Shift"),"click"===i||"dblclick"===i?s.push(MOUSE_BUTTONS[e.button]+i):"wheel"===i?s.push(i):_IGNORE_KEYS.has(t)||s.push(t),s.join("+")}function extend(...e){for(let t=1;t<e.length;t++){let i=e[t];if(null!=i)for(let t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[0][t]=i[t])}return e[0]}function isArray(e){return Array.isArray(e)}function isEmptyObject(e){return 0===Object.keys(e).length&&e.constructor===Object}function isFunction(e){return"function"==typeof e}function isPlainObject(e){return"[object Object]"===Object.prototype.toString.call(e)}function noop(...e){}function onEvent(e,t,i,s){let n,r;e=elemFromSelector(e),s?(n=i,r=s):(n="",r=i),t.split(" ").forEach((t=>{e.addEventListener(t,(function(e){if(!n)return r(e);if(e.target){let t=e.target;if(t.matches(n))return r(e);if(t=t.closest(n),t)return r(e)}}))}))}function overrideMethod(e,t,i,s){let n,r,o=s||e,l=e[t],a=(...e)=>l.apply(o,e),d=e=>l.apply(o,e);e[t]=(...e)=>{try{return n=o._super,r=o._superApply,o._super=a,o._superApply=d,i.apply(o,e)}finally{o._super=n,o._superApply=r}}}function setTimeoutPromise(e,t){return new Promise(((i,s)=>{setTimeout((()=>{try{i(e.apply(self))}catch(e){s(e)}}),t)}))}async function sleep(e){return new Promise((t=>setTimeout(t,e)))}function toggleCheckbox(e,t,i){const s=elemFromSelector(e);if(assert("checkbox"===s.type),null!=i||(i=s.classList.contains("wb-tristate")||s.indeterminate),void 0===t){switch(s.indeterminate?null:s.checked){case!0:t=!1;break;case!1:t=!i||null;break;case null:t=!0}}s.indeterminate=null==t,s.checked=!!t}function getOption(e,t,i){let s;e&&t.indexOf(".")>=0&&([s,t]=t.split("."),e=e[s]);let n=e?e[t]:null;return null!=n?n:i}function toSet(e){if(e instanceof Set)return e;if("string"==typeof e){let t=new Set;for(const i of e.split(" "))t.add(i.trim());return t}if(Array.isArray(e))return new Set(e);throw new Error("Cannot convert to Set<string>: "+e)}function type(e){return Object.prototype.toString.call(e).replace(/^\[object (.+)\]$/,"$1").toLowerCase()}var util=Object.freeze({__proto__:null,MOUSE_BUTTONS:MOUSE_BUTTONS,MAX_INT:MAX_INT,isMac:isMac,Deferred:Deferred$1,assert:assert,documentReady:documentReady,documentReadyPromise:documentReadyPromise,each:each,error:error,escapeHtml:escapeHtml,escapeRegex:escapeRegex,escapeTooltip:escapeTooltip,extractHtmlText:extractHtmlText,getValueFromElem:getValueFromElem,setValueToElem:setValueToElem,elemFromHtml:elemFromHtml,elemFromSelector:elemFromSelector,eventToString:eventToString,extend:extend,isArray:isArray,isEmptyObject:isEmptyObject,isFunction:isFunction,isPlainObject:isPlainObject,noop:noop,onEvent:onEvent,overrideMethod:overrideMethod,setTimeoutPromise:setTimeoutPromise,sleep:sleep,toggleCheckbox:toggleCheckbox,getOption:getOption,toSet:toSet,type:type});
7
+ /*!
8
+ * Wunderbaum - common
9
+ * Copyright (c) 2021-2022, Martin Wendt. Released under the MIT license.
10
+ * v0.0.1-0, Thu, 31 Mar 2022 10:19:39 GMT (https://github.com/mar10/wunderbaum)
11
+ */const DEFAULT_DEBUGLEVEL=4,ROW_HEIGHT=22,ICON_WIDTH=20,ROW_EXTRA_PAD=7,RENDER_MAX_PREFETCH=5,TEST_IMG=new RegExp(/\.|\//);var ChangeType,NodeStatusType,TargetType;!function(e){e.any="any",e.row="row",e.structure="structure",e.status="status"}(ChangeType||(ChangeType={})),function(e){e.ok="ok",e.loading="loading",e.error="error",e.noData="noData"}(NodeStatusType||(NodeStatusType={})),function(e){e.unknown="",e.checkbox="checkbox",e.column="column",e.expander="expander",e.icon="icon",e.prefix="prefix",e.title="title"}(TargetType||(TargetType={}));let iconMap={error:"bi bi-exclamation-triangle",loading:"bi bi-arrow-repeat wb-spin",noData:"bi bi-question-circle",expanderExpanded:"bi bi-chevron-down",expanderCollapsed:"bi bi-chevron-right",expanderLazy:"bi bi-chevron-right wb-helper-lazy-expander",checkChecked:"bi bi-check-square",checkUnchecked:"bi bi-square",checkUnknown:"bi dash-square-dotted",radioChecked:"bi bi-circle-fill",radioUnchecked:"bi bi-circle",radioUnknown:"bi bi-circle-dotted",folder:"bi bi-folder2",folderOpen:"bi bi-folder2-open",doc:"bi bi-file-earmark"};var NavigationModeOption,NavigationMode;!function(e){e.startRow="startRow",e.cell="cell",e.startCell="startCell",e.row="row"}(NavigationModeOption||(NavigationModeOption={})),function(e){e.row="row",e.cellNav="cellNav",e.cellEdit="cellEdit"}(NavigationMode||(NavigationMode={}));const KEY_TO_ACTION_DICT={" ":"toggleSelect","+":"expand",Add:"expand",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right",ArrowUp:"up",Backspace:"parent","/":"collapseAll",Divide:"collapseAll",End:"lastCol",Home:"firstCol","Control+End":"last","Control+Home":"first","*":"expandAll",Multiply:"expandAll",PageDown:"pageDown",PageUp:"pageUp","-":"collapse",Subtract:"collapse"};function makeNodeTitleMatcher(e){return e=escapeRegex(e.toLowerCase()),function(t){return t.title.toLowerCase().indexOf(e)>=0}}function makeNodeTitleStartMatcher(e){e=escapeRegex(e);const t=new RegExp("^"+e,"i");return function(e){return t.test(e.title)}}
12
+ /*!
13
+ * Wunderbaum - wb_extension_base
14
+ * Copyright (c) 2021-2022, Martin Wendt. Released under the MIT license.
15
+ * v0.0.1-0, Thu, 31 Mar 2022 10:19:39 GMT (https://github.com/mar10/wunderbaum)
16
+ */class WunderbaumExtension{constructor(e,t,i){this.enabled=!0,this.tree=e,this.id=t,this.treeOpts=e.options;const s=e.options;void 0===this.treeOpts[t]?s[t]=this.extensionOpts=extend({},i):(this.extensionOpts=extend({},i,s[t]),s[t]=this.extensionOpts),this.enabled=this.getPluginOption("enabled",!0)}init(){this.tree.element.classList.add("wb-ext-"+this.id)}getPluginOption(e,t){var i;return null!==(i=this.extensionOpts[e])&&void 0!==i?i:t}setPluginOption(e,t){this.extensionOpts[e]=t}setEnabled(e=!0){return this.setPluginOption("enabled",!!e)}onKeyEvent(e){}onRender(e){}}
17
+ /*!
18
+ * debounce & throttle, taken from https://github.com/lodash/lodash v4.17.21
19
+ * MIT License: https://raw.githubusercontent.com/lodash/lodash/4.17.21-npm/LICENSE
20
+ * Modified for TypeScript type annotations.
21
+ */const freeGlobal="object"==typeof global&&null!==global&&global.Object===Object&&global,freeGlobalThis="object"==typeof globalThis&&null!==globalThis&&globalThis.Object==Object&&globalThis,freeSelf="object"==typeof self&&null!==self&&self.Object===Object&&self,root=freeGlobalThis||freeGlobal||freeSelf||Function("return this")();function isObject(e){const t=typeof e;return null!=e&&("object"===t||"function"===t)}function debounce(e,t=0,i={}){let s,n,r,o,l,a,d=0,c=!1,h=!1,u=!0;const p=!t&&0!==t&&"function"==typeof root.requestAnimationFrame;if("function"!=typeof e)throw new TypeError("Expected a function");function f(t){const i=s,r=n;return s=n=void 0,d=t,o=e.apply(r,i),o}function g(e,t){return p?(root.cancelAnimationFrame(l),root.requestAnimationFrame(e)):setTimeout(e,t)}function v(e){const i=e-a;return void 0===a||i>=t||i<0||h&&e-d>=r}function m(){const e=Date.now();if(v(e))return b(e);l=g(m,function(e){const i=e-d,s=t-(e-a);return h?Math.min(s,r-i):s}(e))}function b(e){return l=void 0,u&&s?f(e):(s=n=void 0,o)}function y(...e){const i=Date.now(),r=v(i);if(s=e,n=this,a=i,r){if(void 0===l)return function(e){return d=e,l=g(m,t),c?f(e):o}(a);if(h)return l=g(m,t),f(a)}return void 0===l&&(l=g(m,t)),o}return t=+t||0,isObject(i)&&(c=!!i.leading,h="maxWait"in i,r=h?Math.max(+i.maxWait||0,t):r,u="trailing"in i?!!i.trailing:u),y.cancel=function(){void 0!==l&&function(e){if(p)return root.cancelAnimationFrame(e);clearTimeout(e)}(l),d=0,s=a=n=l=void 0},y.flush=function(){return void 0===l?o:b(Date.now())},y.pending=function(){return void 0!==l},y}function throttle(e,t=0,i={}){let s=!0,n=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return isObject(i)&&(s="leading"in i?!!i.leading:s,n="trailing"in i?!!i.trailing:n),debounce(e,t,{leading:s,trailing:n,maxWait:t})}
22
+ /*!
23
+ * Wunderbaum - ext-filter
24
+ * Copyright (c) 2021-2022, Martin Wendt. Released under the MIT license.
25
+ * v0.0.1-0, Thu, 31 Mar 2022 10:19:39 GMT (https://github.com/mar10/wunderbaum)
26
+ */const START_MARKER="￷",END_MARKER="￸",RE_START_MARKER=new RegExp(escapeRegex("￷"),"g"),RE_END_MARTKER=new RegExp(escapeRegex("￸"),"g");class FilterExtension extends WunderbaumExtension{constructor(e){super(e,"filter",{autoApply:!0,autoExpand:!1,counter:!0,fuzzy:!1,hideExpandedCounter:!0,hideExpanders:!1,highlight:!0,leavesOnly:!1,mode:"hide",noData:!0}),this.lastFilterArgs=null}init(){super.init();let e=this.getPluginOption("attachInput");e&&(this.queryInput=elemFromSelector(e),onEvent(this.queryInput,"input",debounce((e=>{this.filterNodes(this.queryInput.value.trim(),{})}),700)))}_applyFilterNoUpdate(e,t,i){return this.tree.runWithoutUpdate((()=>this._applyFilterImpl(e,t,i)))}_applyFilterImpl(e,t,i){let s,n,r=Date.now(),o=0,l=this.tree,a=l.options,d=a.escapeTitles,c=a.autoCollapse,h=extend({},a.filter,i),u="hide"===h.mode,p=!!h.leavesOnly&&!t;if("string"==typeof e){if(""===e)return l.logInfo("Passing an empty string as a filter is handled as clearFilter()."),void this.clearFilter();s=h.fuzzy?e.split("").map(escapeRegex).reduce((function(e,t){return e+"([^"+t+"]*)"+t}),""):escapeRegex(e);let t=new RegExp(s,"i"),i=new RegExp(escapeRegex(e),"gi");e=e=>{if(!e.title)return!1;let s=d?e.title:extractHtmlText(e.title),r=s.match(t);return r&&h.highlight&&(d?(n=h.fuzzy?_markFuzzyMatchedChars(s,r,d):s.replace(i,(function(e){return"￷"+e+"￸"})),e.titleWithHighlight=escapeHtml(n).replace(RE_START_MARKER,"<mark>").replace(RE_END_MARTKER,"</mark>")):h.fuzzy?e.titleWithHighlight=_markFuzzyMatchedChars(s,r):e.titleWithHighlight=s.replace(i,(function(e){return"<mark>"+e+"</mark>"}))),!!r}}return l.filterMode=h.mode,this.lastFilterArgs=arguments,l.element.classList.toggle("wb-ext-filter-hide",!!u),l.element.classList.toggle("wb-ext-filter-dim",!u),l.element.classList.toggle("wb-ext-filter-hide-expanders",!!h.hideExpanders),l.root.subMatchCount=0,l.visit((e=>{delete e.match,delete e.titleWithHighlight,e.subMatchCount=0})),l.setStatus(NodeStatusType.ok),a.autoCollapse=!1,l.visit((i=>{if(p&&null!=i.children)return;let s=e(i);if("skip"===s)return i.visit((function(e){e.match=!1}),!0),"skip";let n=!1;(t||"branch"===s)&&i.parent.match&&(s=!0,n=!0),s&&(o++,i.match=!0,i.visitParents((e=>{e!==i&&(e.subMatchCount+=1),!h.autoExpand||n||e.expanded||(e.setExpanded(!0,{noAnimation:!0,noEvents:!0,scrollIntoView:!1}),e._filterAutoExpanded=!0)}),!0))})),a.autoCollapse=c,0===o&&h.noData&&u&&l.root.setStatus(NodeStatusType.noData),l.logInfo(`Filter '${s}' found ${o} nodes in ${Date.now()-r} ms.`),o}filterNodes(e,t){return this._applyFilterNoUpdate(e,!1,t)}filterBranches(e,t){return this._applyFilterNoUpdate(e,!0,t)}updateFilter(){let e=this.tree;e.filterMode&&this.lastFilterArgs&&e.options.filter.autoApply?this._applyFilterNoUpdate.apply(this,this.lastFilterArgs):e.logWarn("updateFilter(): no filter active.")}clearFilter(){let e=this.tree,t=e.options.escapeTitles;e.enableUpdate(!1),e.setStatus(NodeStatusType.ok),delete e.root.match,delete e.root.subMatchCount,e.visit((e=>{if(e.match&&e._rowElem){let i=e._rowElem.querySelector("span.wb-title");t?i.textContent=e.title:i.innerHTML=e.title,e._callEvent("enhanceTitle",{titleElem:i})}delete e.match,delete e.subMatchCount,delete e.titleWithHighlight,e.subMatchBadge&&(e.subMatchBadge.remove(),delete e.subMatchBadge),e._filterAutoExpanded&&e.expanded&&e.setExpanded(!1,{noAnimation:!0,noEvents:!0,scrollIntoView:!1}),delete e._filterAutoExpanded})),e.filterMode=null,this.lastFilterArgs=null,e.element.classList.remove("wb-ext-filter-dim","wb-ext-filter-hide"),e.enableUpdate(!0)}}function _markFuzzyMatchedChars(e,t,i=!1){let s=[];for(let e=1;e<t.length;e++){let i=t[e].length+(1===e?0:1)+(s[s.length-1]||0);s.push(i)}let n=e.split("");return i?s.forEach((function(e){n[e]="￷"+n[e]+"￸"})):s.forEach((function(e){n[e]="<mark>"+n[e]+"</mark>"})),n.join("")}
27
+ /*!
28
+ * Wunderbaum - ext-keynav
29
+ * Copyright (c) 2021-2022, Martin Wendt. Released under the MIT license.
30
+ * v0.0.1-0, Thu, 31 Mar 2022 10:19:39 GMT (https://github.com/mar10/wunderbaum)
31
+ */class KeynavExtension extends WunderbaumExtension{constructor(e){super(e,"keynav",{})}onKeyEvent(e){let t,i=e.event,s=eventToString(i),n=e.node,r=this.tree,o=e.options,l=!0,a=!i.ctrlKey||o.autoActivate;const d=o.navigationMode;if(r.logDebug(`onKeyEvent: ${s}`),!1===r._callEvent("keydown",e))return!1;if(!1===r._callMethod("edit._preprocessKeyEvent",e))return!1;if(!n){const e=r.getActiveNode(),i=r.getFirstChild();if(!e&&i&&"ArrowDown"===s)return i.logInfo("Keydown: activate first node."),void i.setActive();t=e||i,t&&(t.setFocus(),n=r.getFocusNode(),n.logInfo("Keydown: force focus on active node."))}if(r.navMode===NavigationMode.row){if(o.quicksearch&&1===s.length&&/^\w$/.test(s)){const e=Date.now();e-r.lastQuicksearchTime>500&&(r.lastQuicksearchTerm=""),r.lastQuicksearchTime=e,r.lastQuicksearchTerm+=s;let t=r.findNextNode(r.lastQuicksearchTerm,r.getActiveNode());return t&&t.setActive(!0,{event:i}),void i.preventDefault()}switch(s){case"ArrowLeft":n.expanded&&(s="Subtract");break;case"ArrowRight":if(n.expanded||!n.children&&!n.lazy){if(d===NavigationModeOption.startRow)return void r.setCellMode(NavigationMode.cellNav)}else s="Add"}switch(s){case"+":case"Add":n.setExpanded(!0);break;case"-":case"Subtract":n.setExpanded(!1);break;case" ":n.getOption("checkbox")?n.setSelected(!n.isSelected()):n.setActive(!0,{event:i});break;case"Enter":n.setActive(!0,{event:i});break;case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"Backspace":case"End":case"Home":case"Control+End":case"Control+Home":case"PageDown":case"PageUp":n.navigate(s,{activate:a,event:i});break;default:l=!1}}else switch(s){case" ":if(0===r.activeColIdx&&n.getOption("checkbox"))n.setSelected(!n.isSelected()),l=!0;else{const e=r.getActiveColElem(),t=null==e?void 0:e.querySelector("input[type=checkbox]");null==t||t.click()}break;case"Enter":0===r.activeColIdx&&n.isExpandable()&&(n.setExpanded(!n.isExpanded()),l=!0);break;case"Escape":r.navMode===NavigationMode.cellEdit?(r.setCellMode(NavigationMode.cellNav),l=!0):r.navMode===NavigationMode.cellNav&&(r.setCellMode(NavigationMode.row),l=!0);break;case"ArrowLeft":r.activeColIdx>0?(r.setColumn(r.activeColIdx-1),l=!0):d!==NavigationModeOption.cell&&(r.setCellMode(NavigationMode.row),l=!0);break;case"ArrowRight":r.activeColIdx<r.columns.length-1&&(r.setColumn(r.activeColIdx+1),l=!0);break;case"ArrowDown":case"ArrowUp":case"Backspace":case"End":case"Home":case"Control+End":case"Control+Home":case"PageDown":case"PageUp":n.navigate(s,{activate:a,event:i});break;default:l=!1}l&&i.preventDefault()}}
32
+ /*!
33
+ * Wunderbaum - ext-logger
34
+ * Copyright (c) 2021-2022, Martin Wendt. Released under the MIT license.
35
+ * v0.0.1-0, Thu, 31 Mar 2022 10:19:39 GMT (https://github.com/mar10/wunderbaum)
36
+ */class LoggerExtension extends WunderbaumExtension{constructor(e){super(e,"logger",{}),this.ignoreEvents=new Set(["enhanceTitle","render","discard"]),this.prefix=e+".ext-logger"}init(){const e=this.tree;if(e.getOption("debugLevel")>=4){const t=this.ignoreEvents,i=this.prefix;overrideMethod(e,"callEvent",(function(s,n){if(t.has(s))return e._superApply(arguments);let r=Date.now();const o=e._superApply(arguments);return console.debug(`${i}: callEvent('${s}') took ${Date.now()-r} ms.`,arguments[1]),o}))}}onKeyEvent(e){console.debug(`${this.prefix}: onKeyEvent()`,e)}}
37
+ /*!
38
+ * Wunderbaum - ext-dnd
39
+ * Copyright (c) 2021-2022, Martin Wendt. Released under the MIT license.
40
+ * v0.0.1-0, Thu, 31 Mar 2022 10:19:39 GMT (https://github.com/mar10/wunderbaum)
41
+ */const nodeMimeType="application/x-fancytree-node";class DndExtension extends WunderbaumExtension{constructor(e){super(e,"dnd",{autoExpandMS:1500,multiSource:!1,effectAllowed:"all",dropEffectDefault:"move",preventForeignNodes:!1,preventLazyParents:!0,preventNonNodes:!1,preventRecursion:!0,preventSameParent:!1,preventVoidMoves:!0,scroll:!0,scrollSensitivity:20,scrollSpeed:5,sourceCopyHook:null,dragStart:null,dragDrag:null,dragEnd:null,dragEnter:null,dragOver:null,dragExpand:null,dragDrop:null,dragLeave:null}),this.srcNode=null,this.lastTargetNode=null,this.lastEnterStamp=0,this.lastAllowedDropRegions=null,this.lastDropEffect=null,this.lastDropRegion=!1}init(){super.init();const e=this.tree,t=e.options.dnd;t.dragStart&&onEvent(e.element,"dragstart drag dragend",this.onDragEvent.bind(this)),t.dragEnter&&onEvent(e.element,"dragenter dragover dragleave drop",this.onDropEvent.bind(this))}_leaveNode(){const e=this.lastTargetNode;this.lastEnterStamp=0,e&&(e.removeClass("wb-drop-target wb-drop-over wb-drop-after wb-drop-before"),this.lastTargetNode=null)}unifyDragover(e){if(!1===e)return!1;if(e instanceof Set)return e.size>0&&e;if(!0===e)return new Set(["over","before","after"]);if("string"==typeof e||isArray(e))return(e=toSet(e)).size>0&&e;throw new Error("Unsupported drop region definition: "+e)}_calcDropRegion(e,t){const i=e.offsetY;return!!t&&(3===t.size?i<5.5?"before":i>16.5?"after":"over":1===t.size&&t.has("over")?"over":i>11?"after":"before")}autoScroll(e){let t=this.tree,i=t.options.dnd,s=t.scrollContainer,n=i.scrollSensitivity,r=i.scrollSpeed,o=0;const l=s.offsetTop;if(l+s.offsetHeight-e.pageY<n){s.scrollHeight-s.clientHeight-l>0&&(s.scrollTop=o=l+r)}else l>0&&e.pageY-l<n&&(s.scrollTop=o=l-r);return o}onDragEvent(e){const t=this.treeOpts.dnd,i=Wunderbaum.getNode(e);if(i){if("drag"!==e.type&&this.tree.logDebug("onDragEvent."+e.type+", srcNode: "+i,e),"dragstart"===e.type){e.dataTransfer.effectAllowed=t.effectAllowed;if(!i._callEvent("dnd.dragStart",{event:e}))return e.preventDefault(),!1;let s=i.toDict(!0,(e=>{e._org_key=e.key,delete e.key}));s.treeId=i.tree.id;const n=JSON.stringify(s);e.dataTransfer.setData(nodeMimeType,n),e.dataTransfer.setData("text/plain",i.title),this.srcNode=i,setTimeout((()=>{i.addClass("wb-drag-source")}),0)}else"drag"===e.type||"dragend"===e.type&&(i.removeClass("wb-drag-source"),this.srcNode=null,this.lastTargetNode&&this._leaveNode());return!0}}onDropEvent(e){const t=Wunderbaum.getNode(e),i=this.treeOpts.dnd,s=e.dataTransfer;if(t){if("dragover"!==e.type&&this.tree.logDebug("onDropEvent."+e.type+" targetNode: "+t+", ea: "+(null==s?void 0:s.effectAllowed)+", de: "+(null==s?void 0:s.dropEffect),", cy: "+e.offsetY,", r: "+this._calcDropRegion(e,this.lastAllowedDropRegions),e),"dragenter"===e.type){if(this.lastAllowedDropRegions=null,this.lastTargetNode&&this.lastTargetNode!==t&&this._leaveNode(),this.lastTargetNode=t,this.lastEnterStamp=Date.now(),i.preventVoidMoves&&t===this.srcNode||t.isStatusNode())return s.dropEffect="none",!0;let n=t._callEvent("dnd.dragEnter",{event:e});return n=this.unifyDragover(n),n?(this.lastAllowedDropRegions=n,this.lastDropEffect=s.dropEffect,t.addClass("wb-drop-target"),e.preventDefault(),!1):(s.dropEffect="none",!0)}if("dragover"===e.type){this.autoScroll(e);const s=this._calcDropRegion(e,this.lastAllowedDropRegions);if(this.lastDropRegion=s,i.autoExpandMS>0&&t.isExpandable(!0)&&!t._isLoading&&Date.now()-this.lastEnterStamp>i.autoExpandMS&&!1!==t._callEvent("dnd.dragExpand",{event:e})&&t.setExpanded(),!s)return;return t.toggleClass("wb-drop-over","over"===s),t.toggleClass("wb-drop-before","before"===s),t.toggleClass("wb-drop-after","after"===s),e.preventDefault(),!1}"dragleave"===e.type||"drop"===e.type&&(e.stopPropagation(),this._leaveNode(),t._callEvent("dnd.drop",{event:e,region:this.lastDropRegion,sourceNode:this.srcNode}))}else this._leaveNode()}}
42
+ /*!
43
+ * Wunderbaum - deferred
44
+ * Copyright (c) 2021-2022, Martin Wendt. Released under the MIT license.
45
+ * v0.0.1-0, Thu, 31 Mar 2022 10:19:39 GMT (https://github.com/mar10/wunderbaum)
46
+ */class Deferred{constructor(){this._promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this._resolve(e)}reject(e){this._reject(e)}promise(){return this._promise}then(e){return this._promise.then(e)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}}
47
+ /*!
48
+ * Wunderbaum - wunderbaum_node
49
+ * Copyright (c) 2021-2022, Martin Wendt. Released under the MIT license.
50
+ * v0.0.1-0, Thu, 31 Mar 2022 10:19:39 GMT (https://github.com/mar10/wunderbaum)
51
+ */const NODE_PROPS=new Set(["classes","expanded","icon","key","lazy","refKey","selected","title","tooltip","type"]),NODE_ATTRS=new Set(["checkbox","expanded","extraClasses","folder","icon","iconTooltip","key","lazy","partsel","radiogroup","refKey","selected","statusNodeType","title","tooltip","type","unselectable","unselectableIgnore","unselectableStatus"]);class WunderbaumNode{constructor(e,t,i){var s,n;if(this.refKey=void 0,this.children=null,this.lazy=!1,this.expanded=!1,this.selected=!1,this.extraClasses=new Set,this.data={},this._isLoading=!1,this._requestId=0,this._errorInfo=null,this._partsel=!1,this._partload=!1,this.subMatchCount=0,this._rowIdx=0,this._rowElem=void 0,assert(!t||t.tree===e),assert(!i.children),this.tree=e,this.parent=t,this.key=""+(null!==(s=i.key)&&void 0!==s?s:++WunderbaumNode.sequence),this.title=""+(null!==(n=i.title)&&void 0!==n?n:"<"+this.key+">"),null!=i.refKey&&(this.refKey=""+i.refKey),null!=i.statusNodeType&&(this.statusNodeType=""+i.statusNodeType),null!=i.type&&(this.type=""+i.type),null!=i.checkbox&&(this.checkbox=!!i.checkbox),null!=i.colspan&&(this.colspan=!!i.colspan),this.expanded=!0===i.expanded,null!=i.icon&&(this.icon=i.icon),this.lazy=!0===i.lazy,this.selected=!0===i.selected,i.classes)for(const e of i.classes.split(" "))this.extraClasses.add(e.trim());for(const[e,t]of Object.entries(i))NODE_PROPS.has(e)||(this.data[e]=t);t&&!this.statusNodeType&&e._registerNode(this)}toString(){return"WunderbaumNode@"+this.key+"<'"+this.title+"'>"}_callEvent(e,t){return this.tree._callEvent(e,extend({node:this,typeInfo:this.type?this.tree.types[this.type]:{}},t))}addChildren(e,t){let i=t?t.before:null,s=[];try{this.tree.enableUpdate(!1),isPlainObject(e)&&(e=[e]);for(let t of e){let e=t.children;delete t.children;let i=new WunderbaumNode(this.tree,this,t);s.push(i),e&&i.addChildren(e,{redraw:!1})}if(this.children)if(null==i||0===this.children.length)this.children=this.children.concat(s);else{i=this.findDirectChild(i);let e=this.children.indexOf(i);assert(e>=0,"insertBefore must be an existing child"),this.children.splice(e,0,...s)}else this.children=s;return this.tree.setModified(ChangeType.structure,this),s[0]}finally{this.tree.enableUpdate(!0)}}addNode(e,t="child"){switch("over"===t&&(t="child"),t){case"after":return this.parent.addChildren(e,{before:this.getNextSibling()});case"before":return this.parent.addChildren(e,{before:this});case"firstChild":return this.addChildren(e,{before:0});case"child":return this.addChildren(e)}assert(!1,"Invalid mode: "+t)}applyCommand(e,t){return this.tree.applyCommand(e,this,t)}addClass(e){toSet(e).forEach((e=>{var t;this.extraClasses.add(e),null===(t=this._rowElem)||void 0===t||t.classList.add(e)}))}removeClass(e){toSet(e).forEach((e=>{var t;this.extraClasses.delete(e),null===(t=this._rowElem)||void 0===t||t.classList.remove(e)}))}toggleClass(e,t){toSet(e).forEach((e=>{var i;t?this.extraClasses.add(e):this.extraClasses.delete(e),null===(i=this._rowElem)||void 0===i||i.classList.toggle(e,t)}))}async expandAll(e=!0){this.visit((t=>{t.setExpanded(e)}))}findAll(e){const t=isFunction(e)?e:makeNodeTitleMatcher(e),i=[];return this.visit((e=>{t(e)&&i.push(e)})),i}findDirectChild(e){let t=this.children;if(!t)return null;if("string"==typeof e){for(let i=0,s=t.length;i<s;i++)if(t[i].key===e)return t[i]}else{if("number"==typeof e)return t[e];if(e.parent===this)return e}return null}findFirst(e){const t=isFunction(e)?e:makeNodeTitleMatcher(e);let i=null;return this.visit((e=>{if(t(e))return i=e,!1})),i}findRelatedNode(e,t=!1){return this.tree.findRelatedNode(this,e,t)}getColElem(e){var t;"string"==typeof e&&(e=this.tree.columns.findIndex((t=>t.id===e)));const i=null===(t=this._rowElem)||void 0===t?void 0:t.querySelectorAll("span.wb-col");return i?i[e]:null}getFirstChild(){return this.children?this.children[0]:null}getLastChild(){return this.children?this.children[this.children.length-1]:null}getLevel(){let e=0,t=this.parent;for(;t;)e++,t=t.parent;return e}getNextSibling(){let e=this.parent.children,t=e.indexOf(this);return e[t+1]||null}getParent(){return this.parent}getParentList(e=!1,t=!1){let i=[],s=t?this:this.parent;for(;s;)(e||s.parent)&&i.unshift(s),s=s.parent;return i}getPath(e=!0,t="title",i="/"){let s,n=[],r="function"==typeof t;return this.visitParents((e=>{e.parent&&(s=r?t(e):e[t],n.unshift(s))}),e),n.join(i)}getPrevSibling(){let e=this.parent.children,t=e.indexOf(this);return e[t-1]||null}hasChildren(){if(this.lazy){if(null==this.children)return;if(0===this.children.length)return!1;if(1===this.children.length&&this.children[0].isStatusNode())return;return!0}return!(!this.children||!this.children.length)}isActive(){return this.tree.activeNode===this}isChildOf(e){return this.parent&&this.parent===e}isDescendantOf(e){if(!e||e.tree!==this.tree)return!1;for(var t=this.parent;t;){if(t===e)return!0;t===t.parent&&error("Recursive parent link: "+t),t=t.parent}return!1}isExpandable(e=!1){return!(!this.children||this.expanded&&e)}isEditing(){return this.tree._callMethod("edit.isEditingTitle",this)}isExpanded(){return!!this.expanded}isFirstSibling(){var e=this.parent;return!e||e.children[0]===this}isLastSibling(){var e=this.parent;return!e||e.children[e.children.length-1]===this}isLazy(){return!!this.lazy}isLoaded(){return!this.lazy||void 0!==this.hasChildren()}isLoading(){return this._isLoading}isPagingNode(){return"paging"===this.statusNodeType}isPartload(){return!!this._partload}isPartsel(){return!this.selected&&!!this._partsel}isRendered(){return!!this._rowElem}isRootNode(){return this.tree.root===this}isSelected(){return!!this.selected}isStatusNode(){return!!this.statusNodeType}isTopLevel(){return this.tree.root===this.parent}isUnloaded(){return void 0===this.hasChildren()}isVisible(){let e,t,i,s="hide"===this.tree.filterMode,n=this.getParentList(!1,!1);if(s&&!this.match&&!this.subMatchCount)return!1;for(e=0,t=n.length;e<t;e++)if(i=n[e],!i.expanded)return!1;return!0}_loadSourceObject(e){const t=this.tree;this._callEvent("receive",{response:e}),isArray(e)&&(e={children:e}),assert(isPlainObject(e)),assert(e.children,"If `source` is an object, it must have a `children` property"),e.types&&extend(t.types,e.types),this.addChildren(e.children),this._callEvent("load")}async load(e){const t=this.tree,i=Date.now(),s=this.parent,n="string"==typeof e?e:e.url;this._requestId&&this.logWarn(`Recursive load request #${i} while #${this._requestId} is pending.`),this._requestId=i;const r=t.logTime(this+".load()");try{if(n){this.setStatus(NodeStatusType.loading);const e=await fetch(n,{method:"GET"});e.ok||error(`GET ${n} returned ${e.status}, ${e}`);const r=await e.json();if(this._requestId&&this._requestId>i)return void this.logWarn(`Ignored load response #${i} because #${this._requestId} is pending.`);if(this.logDebug(`Received response for load request #${i}`),null===this.parent&&null!==s)return void this.logWarn("Lazy parent node was removed while loading: discarding response.");this.setStatus(NodeStatusType.ok),r.columns&&(t.logInfo("Re-define columns",r.columns),assert(!this.parent),t.columns=r.columns,delete r.columns,t.renderHeader()),this._loadSourceObject(r)}else this._loadSourceObject(e)}catch(t){throw this.logError("Error during load()",e,t),this._callEvent("error",{error:t}),this.setStatus(NodeStatusType.error,""+t),t}finally{this._requestId=0,t.logTimeEnd(r)}}async loadLazy(e=!1){const t=this.expanded;if(assert(this.lazy,"load() requires a lazy node"),e||this.isUnloaded()){this.isLoaded()&&this.resetLazy(),this.setStatus(NodeStatusType.loading);try{const e=await this._callEvent("lazyLoad");if(!1===e)return void this.setStatus(NodeStatusType.ok);assert(isArray(e)||e&&e.url,"The lazyLoad event must return a node list, `{url: ...}` or false."),await this.load(e),t?(this.expanded=!0,this.tree.updateViewport()):this.render()}catch(e){this.setStatus(NodeStatusType.error,""+e)}}}log(...e){this.logDebug.apply(this,e)}logDebug(...e){this.tree.options.debugLevel>=4&&(Array.prototype.unshift.call(e,this.toString()),console.log.apply(console,e))}logError(...e){this.tree.options.debugLevel>=1&&(Array.prototype.unshift.call(e,this.toString()),console.error.apply(console,e))}logInfo(...e){this.tree.options.debugLevel>=3&&(Array.prototype.unshift.call(e,this.toString()),console.info.apply(console,e))}logWarn(...e){this.tree.options.debugLevel>=2&&(Array.prototype.unshift.call(e,this.toString()),console.warn.apply(console,e))}async makeVisible(e){let t,i=new Deferred,s=[],n=this.getParentList(!1,!1),r=n.length,o=!(e&&!0===e.noAnimation),l=!(e&&!1===e.scrollIntoView);for(t=r-1;t>=0;t--)s.push(n[t].setExpanded(!0,e));return Promise.all(s).then((()=>{l?this.scrollIntoView(o).then((()=>{i.resolve()})):i.resolve()})),i.promise()}moveTo(e,t="appendChild",i){"prependChild"===t&&(e.children&&e.children.length?(t="before",e=e.children[0]):t="appendChild");let s,n=this.tree,r=this.parent,o="appendChild"===t?e:e.parent;if(this!==e){if(this.parent?o.isDescendantOf(this)&&error("Cannot move a node to its own descendant"):error("Cannot move system root"),o!==r&&r.triggerModifyChild("remove",this),1===this.parent.children.length){if(this.parent===o)return;this.parent.children=this.parent.lazy?[]:null,this.parent.expanded=!1}else s=this.parent.children.indexOf(this),assert(s>=0,"invalid source parent"),this.parent.children.splice(s,1);if(this.parent=o,o.hasChildren())switch(t){case"appendChild":o.children.push(this);break;case"before":s=o.children.indexOf(e),assert(s>=0,"invalid target parent"),o.children.splice(s,0,this);break;case"after":s=o.children.indexOf(e),assert(s>=0,"invalid target parent"),o.children.splice(s+1,0,this);break;default:error("Invalid mode "+t)}else o.children=[this];i&&e.visit(i,!0),o===r?o.triggerModifyChild("move",this):o.triggerModifyChild("add",this),n!==e.tree&&(this.logWarn("Cross-tree moveTo is experimental!"),this.visit((function(t){t.tree=e.tree}),!0)),n.updateViewport()}}async navigate(e,t){e=KEY_TO_ACTION_DICT[e]||e;let i=this.findRelatedNode(e);if(i){try{i.makeVisible({scrollIntoView:!1})}catch(e){}return i.setFocus(),!1===(null==t?void 0:t.activate)?Promise.resolve(this):i.setActive(!0,{event:null==t?void 0:t.event})}return this.logWarn("Could not find related node '"+e+"'."),Promise.resolve(this)}remove(){const e=this.tree,t=this.parent.children.indexOf(this);this.parent.children.splice(t,1),this.visit((t=>{t.removeMarkup(),e._unregisterNode(t)}),!0)}removeChildren(){const e=this.tree;this.children&&(e.activeNode&&e.activeNode.isDescendantOf(this)&&e.activeNode.setActive(!1),e.focusNode&&e.focusNode.isDescendantOf(this)&&(e.focusNode=null),this.triggerModifyChild("remove",null),this.visit((t=>{e._unregisterNode(t)})),this.lazy?this.children=[]:this.children=null,this.isRootNode()||(this.expanded=!1),this.tree.updateViewport())}removeMarkup(){this._rowElem&&(delete this._rowElem._wb_node,this._rowElem.remove(),this._rowElem=void 0)}_getRenderInfo(){let e={},t=0,i=this._rowElem?this._rowElem.querySelectorAll("span.wb-col"):null;for(let s of this.tree.columns)e[s.id]={id:s.id,idx:t,elem:i?i[t]:null,info:s},t++;return e}_createIcon(e,t){let i,s=this.getOption("icon");return this._errorInfo?s=iconMap.error:this._isLoading&&(s=iconMap.loading),!1===s?null:("string"==typeof s||(s=this.statusNodeType?iconMap[this.statusNodeType]:this.expanded?iconMap.folderOpen:this.children?iconMap.folder:iconMap.doc),s.indexOf("<")>=0?i=elemFromHtml(s):TEST_IMG.test(s)?i=elemFromHtml(`<img src="${s}" class="wb-icon">`):(i=document.createElement("i"),i.className="wb-icon "+s),t?e.replaceChild(i,t):e.appendChild(i),i)}render(e){const t=this.tree,i=t.options,s=!1!==this.getOption("checkbox"),n=t.columns,r=this.type?t.types[this.type]:null,o=this.getLevel();let l,a,d,c,h=this._rowElem,u=null,p=null;const f=t.navMode===NavigationMode.row?null:t.activeColIdx,g=!h;assert(!this.isRootNode());let v=["wb-row"];if(this.expanded&&v.push("wb-expanded"),this.lazy&&v.push("wb-lazy"),this.selected&&v.push("wb-selected"),this===t.activeNode&&v.push("wb-active"),this===t.focusNode&&v.push("wb-focus"),this._errorInfo&&v.push("wb-error"),this._isLoading&&v.push("wb-loading"),this.statusNodeType&&v.push("wb-status-"+this.statusNodeType),this.match&&v.push("wb-match"),this.subMatchCount&&v.push("wb-submatch"),i.skeleton&&v.push("wb-skeleton"),h)a=h.querySelector("span.wb-node"),d=a.querySelector("span.wb-title"),p=a.querySelector("i.wb-expander"),u=a.querySelector("i.wb-checkbox"),c=a.querySelector("i.wb-icon");else{h=document.createElement("div"),h._wb_node=this,a=document.createElement("span"),a.classList.add("wb-node","wb-col"),h.appendChild(a);let e=0;s&&(u=document.createElement("i"),a.appendChild(u),e+=20);for(let t=o-1;t>0;t--)l=document.createElement("i"),l.classList.add("wb-indent"),a.appendChild(l),e+=20;if(o>i.minExpandLevel&&(p=document.createElement("i"),a.appendChild(p),e+=20),c=this._createIcon(a),c&&(e+=20),d=document.createElement("span"),d.classList.add("wb-title"),a.appendChild(d),this._callEvent("enhanceTitle",{titleSpan:d}),a._ofsTitlePx=e,t.options.dnd.dragStart&&(a.draggable=!0),!this.colspan&&n.length>1){let e=0;for(let t of n){let i;e++,"*"===t.id?i=a:(i=document.createElement("span"),i.classList.add("wb-col"),h.appendChild(i)),e===f&&i.classList.add("wb-active"),t.classes&&i.classList.add(...t.classes.split(" ")),i.style.left=t._ofsPx+"px",i.style.width=t._widthPx+"px",g&&t.html&&"string"==typeof t.html&&(i.innerHTML=t.html)}}}if(h.className=v.join(" "),h.classList.add(...this.extraClasses),r&&r.classes&&h.classList.add(...r.classes),h.style.top=22*this._rowIdx+"px",p&&(this.isExpandable(!1)?this.expanded?p.className="wb-expander "+iconMap.expanderExpanded:p.className="wb-expander "+iconMap.expanderCollapsed:this._isLoading?p.className="wb-expander "+iconMap.loading:this.lazy&&null==this.children?p.className="wb-expander "+iconMap.expanderLazy:p.classList.add("wb-indent")),u&&(this.selected?u.className="wb-checkbox "+iconMap.checkChecked:u.className="wb-checkbox "+iconMap.checkUnchecked),this.titleWithHighlight?d.innerHTML=this.titleWithHighlight:t.options.escapeTitles?d.textContent=this.title:d.innerHTML=this.title,!i.skeleton)if(this.colspan){let e=t.element.clientWidth;d.style.width=e-a._ofsTitlePx-7+"px"}else d.style.width=n[0]._widthPx-a._ofsTitlePx-7+"px";this._rowElem=h,this.statusNodeType?this._callEvent("renderStatusNode",{isNew:g,nodeElem:a}):this.parent&&this._callEvent("render",{isNew:g,nodeElem:a,typeInfo:r,colInfosById:this._getRenderInfo()}),t.nodeListElement.appendChild(h)}resetLazy(){this.removeChildren(),this.expanded=!1,this.lazy=!0,this.children=null,this.tree.updateViewport()}toDict(e=!1,t){const i={};if(NODE_ATTRS.forEach((e=>{const t=this[e];t instanceof Set?t.size&&(i[e]=Array.prototype.join.call(t.keys()," ")):(t||!1===t||0===t)&&(i[e]=t)})),isEmptyObject(this.data)||(i.data=extend({},this.data),isEmptyObject(i.data)&&delete i.data),t){const s=t(i,this);if(!1===s)return!1;"skip"===s&&(e=!1)}if(e&&isArray(this.children)){i.children=[];for(let e=0,s=this.children.length;e<s;e++){const s=this.children[e];if(!s.isStatusNode()){const e=s.toDict(!0,t);!1!==e&&i.children.push(e)}}}return i}getOption(e,t){let i=this.tree,s=i.options;e.indexOf(".")>=0&&([s,e]=e.split("."));let n=s[e];if("function"==typeof n){let e=n.call(i,{type:"resolve",tree:i,node:this});if(void 0!==e)return e}if(void 0!==this[e])return this[e];let r=this.type?i.types[this.type]:void 0,o=r?r[e]:void 0;return void 0!==o?o:null!=n?n:t}async scrollIntoView(e){return this.tree.scrollTo(this)}async setActive(e=!0,t){const i=this.tree,s=i.activeNode,n=null==t?void 0:t.retrigger;if(!(null==t?void 0:t.noEvent)){let r=null==t?void 0:t.event;if(e){if(s!==this||n){if(!1===(null==s?void 0:s._callEvent("deactivate",{nextNode:this,orgEvent:r})))return;if(!1===this._callEvent("activate",{prevNode:s,orgEvent:r}))return i.activeNode=null,void(null==s||s.setDirty(ChangeType.status))}}else(s===this||n)&&this._callEvent("deactivate",{nextNode:null,orgEvent:r})}s!==this&&(i.activeNode=this,null==s||s.setDirty(ChangeType.status),this.setDirty(ChangeType.status)),t&&null!=t.colIdx&&t.colIdx!==i.activeColIdx&&i.navMode!==NavigationMode.row&&i.setColumn(t.colIdx),this.scrollIntoView()}setDirty(e){this.tree._disableUpdate||(e===ChangeType.structure?this.tree.updateViewport():this._rowElem&&this.render())}async setExpanded(e=!0,t){!e&&this.isExpanded()&&this.getLevel()<this.getOption("minExpandLevel")&&!getOption(t,"force")?this.logDebug("Ignored collapse request."):(e&&this.lazy&&null==this.children&&await this.loadLazy(),this.expanded=e,this.setDirty(ChangeType.structure))}setIcon(){throw new Error("Not yet implemented")}setFocus(e=!0,t){const i=this.tree.focusNode;this.tree.focusNode=this,null==i||i.setDirty(ChangeType.status),this.setDirty(ChangeType.status)}setSelected(e=!0,t){!!e!==this.selected&&this._callEvent("select",{flag:e}),this.selected=!!e,this.setDirty(ChangeType.status)}setStatus(e,t,i){let s=this.tree,n=null;const r=e=>{let t=this.children,i=t?t[0]:null;return assert(e.statusNodeType),assert(!i||!i.isStatusNode()),n=this.addNode(e,"firstChild"),n.match=!0,s.setModified(ChangeType.structure),n};switch((()=>{let e=this.children;e&&e.length&&e[0].isStatusNode()&&e[0].remove()})(),e){case"ok":this._isLoading=!1,this._errorInfo=null;break;case"loading":this.parent||r({statusNodeType:e,title:s.options.strings.loading+(t?" ("+t+")":""),checkbox:!1,colspan:!0,tooltip:i}),this._isLoading=!0,this._errorInfo=null;break;case"error":r({statusNodeType:e,title:s.options.strings.loadError+(t?" ("+t+")":""),checkbox:!1,colspan:!0,tooltip:i}),this._isLoading=!1,this._errorInfo={message:t,details:i};break;case"noData":r({statusNodeType:e,title:t||s.options.strings.noData,checkbox:!1,colspan:!0,tooltip:i}),this._isLoading=!1,this._errorInfo=null;break;default:error("invalid node status "+e)}return s.updateViewport(),n}setTitle(e){this.title=e,this.setDirty(ChangeType.status)}triggerModifyChild(e,t,i){this.tree.options.modifyChild&&(t&&t.parent!==this&&error("child "+t+" is not a child of "+this),this._callEvent("modifyChild",extend({operation:e,child:t},i)))}triggerModify(e,t){this.parent.triggerModifyChild(e,this,t)}visit(e,t=!1){let i,s,n=!0,r=this.children;if(!0===t&&(n=e(this),!1===n||"skip"===n))return n;if(r)for(i=0,s=r.length;i<s&&(n=r[i].visit(e,!0),!1!==n);i++);return n}visitParents(e,t=!1){if(t&&!1===e(this))return!1;let i=this.parent;for(;i;){if(!1===e(i))return!1;i=i.parent}return!0}visitSiblings(e,t=!1){let i,s,n,r=this.parent.children;for(i=0,s=r.length;i<s;i++)if(n=r[i],(t||n!==this)&&!1===e(n))return!1;return!0}isMatched(){return!(this.tree.filterMode&&!this.match)}}WunderbaumNode.sequence=0;
52
+ /*!
53
+ * Wunderbaum - ext-edit
54
+ * Copyright (c) 2021-2022, Martin Wendt. Released under the MIT license.
55
+ * v0.0.1-0, Thu, 31 Mar 2022 10:19:39 GMT (https://github.com/mar10/wunderbaum)
56
+ */
57
+ class EditExtension extends WunderbaumExtension{constructor(e){super(e,"edit",{debounce:100,minlength:1,maxlength:null,trigger:[],trim:!0,select:!0,slowClickDelay:1e3,validity:!0,beforeEdit:null,edit:null,apply:null}),this.curEditNode=null,this.relatedNode=null,this.debouncedOnChange=debounce(this._onChange.bind(this),this.getPluginOption("debounce"))}_applyChange(e,t,i,s){let n;t.log(`_applyChange(${e})`,s),i.classList.add("wb-dirty"),i.classList.remove("wb-error");try{n=t._callEvent(e,s)}catch(s){t.logError(`Error in ${e} event handler`,s),i.classList.add("wb-error"),i.classList.remove("wb-dirty")}return n instanceof Promise||(n=Promise.resolve(n)),n.catch((s=>{t.logError(`Error in ${e} event promise`,s),i.classList.add("wb-error")})).finally((()=>{i.classList.remove("wb-dirty")})),n}_onChange(e){const t=Wunderbaum.getEventInfo(e),i=t.node,s=t.colElem;i&&0!==t.colIdx?this._applyChange("change",i,s,{info:t,event:e,inputElem:e.target,inputValue:Wunderbaum.util.getValueFromElem(e.target)}):this.tree.log("Ignored change event for removed element or node title")}init(){super.init(),onEvent(this.tree.element,"change",".contenteditable,input,textarea,select",(e=>{this.debouncedOnChange(e)}))}_preprocessKeyEvent(e){const t=e.event,i=eventToString(t),s=this.tree,n=this.getPluginOption("trigger"),r=t.target&&t.target.closest("input,[contenteditable]");if(s.logDebug(`_preprocessKeyEvent: ${i}`),r){switch(i){case"Enter":return this._stopEditTitle(!0,{event:t}),!1;case"Escape":return this._stopEditTitle(!1,{event:t}),!1}return!1}if(s.navMode===NavigationMode.row||0===s.activeColIdx){switch(i){case"Enter":if(n.indexOf("macEnter")>=0&&isMac)return this.startEditTitle(),!1;break;case"F2":if(n.indexOf("F2")>=0)return this.startEditTitle(),!1}return!0}return!0}isEditingTitle(e){return e?this.curEditNode===e:!!this.curEditNode}startEditTitle(e){e=null!=e?e:this.tree.getActiveNode();const t=this.getPluginOption("validity"),i=this.getPluginOption("select");if(!e)return;this.tree.logDebug(`startEditTitle(node=${e})`);let s=e._callEvent("edit.beforeEdit");if(!1===s)return void e.logInfo("beforeEdit canceled operation.");if(!s){s=`<input type=text class="wb-input-edit" value="${escapeHtml(e.title)}" required autocorrect=off>`}const n=e.getColElem(0).querySelector(".wb-title");n.innerHTML=s;const r=n.firstElementChild;t&&r.addEventListener("keydown",(e=>{r.reportValidity()})),r.focus(),i&&r.select(),this.curEditNode=e,e._callEvent("edit.edit",{inputElem:r})}stopEditTitle(e){return this._stopEditTitle(e,{})}_stopEditTitle(e,t){const i=document.activeElement;let s=i?getValueFromElem(i):null;const n=this.curEditNode,r=!!t.forceClose,o=this.getPluginOption("validity");if(s&&this.getPluginOption("trim")&&(s=s.trim()),n)if(n.logDebug(`stopEditTitle(${e})`,t,i,s),e&&null!==s&&s!==n.title){const e=n.getColElem(0);this._applyChange("edit.apply",n,e,{oldValue:n.title,newValue:s,inputElem:i}).then((e=>{const t=i.validationMessage;if(o&&t&&!1!==e)throw new Error(`Edit apply validation failed for "${s}": ${t}.`);(r||!1!==e)&&(null==n||n.setTitle(s),this.curEditNode.render(),this.curEditNode=null,this.relatedNode=null,this.tree.setFocus())})).catch((e=>{}))}else this.curEditNode.render(),this.curEditNode=null,this.relatedNode=null,this.tree.setFocus();else this.tree.logDebug("stopEditTitle: not in edit mode.")}createNode(e="after",t,i){const s=this.tree;if(assert(t=null!=t?t:s.getActiveNode(),"No node was passed, or no node is currently active."),e=e||"prependChild",null==i?i={title:""}:"string"==typeof i?i={title:i}:assert(isPlainObject(i)),("prependChild"===e||"appendChild"===e)&&(null==t?void 0:t.isExpandable(!0)))return void t.setExpanded().then((()=>{this.createNode(e,t,i)}));const n=t.addNode(i,e);n.addClass("wb-edit-new"),this.relatedNode=t,n.match=!0,n.makeVisible({noAnimation:!0}).then((()=>{this.startEditTitle(n)}))}}
58
+ /*!
59
+ * wunderbaum.ts
60
+ *
61
+ * A tree control.
62
+ *
63
+ * Copyright (c) 2021-2022, Martin Wendt (https://wwWendt.de).
64
+ * Released under the MIT license.
65
+ *
66
+ * @version v0.0.1-0
67
+ * @date Thu, 31 Mar 2022 10:19:39 GMT
68
+ */const MAX_CHANGED_NODES=10;class Wunderbaum{constructor(e){this.extensionList=[],this.extensions={},this.keyMap=new Map,this.refKeyMap=new Map,this.viewNodes=new Set,this.activeNode=null,this.focusNode=null,this._disableUpdate=0,this._disableUpdateCount=0,this.types={},this.columns=[],this._columnsById={},this.changedSince=0,this.changes=new Set,this.changedNodes=new Set,this.filterMode=null,this.activeColIdx=0,this.navMode=NavigationMode.row,this.lastQuicksearchTime=0,this.lastQuicksearchTerm="",this.lastClickTime=0,this._util=util,this.log=this.logDebug;let t=this.options=extend({id:null,source:null,element:null,debugLevel:4,header:null,headerHeightPx:22,rowHeightPx:22,columns:null,types:null,escapeTitles:!0,showSpinner:!1,checkbox:!0,minExpandLevel:0,updateThrottleWait:200,skeleton:!1,navigationMode:NavigationModeOption.startRow,quicksearch:!0,change:noop,enhanceTitle:noop,error:noop,receive:noop,strings:{loadError:"Error",loading:"Loading...",noData:"No data"}},e);const i=new Deferred;this.ready=i.promise();let s=!1;if(this.ready.then((()=>{s=!0;try{this._callEvent("init")}catch(e){console.error("Exception inside `init(e)` event:",e)}})).catch((e=>{if(s)throw e;this._callEvent("init",{error:e})})),this.id=t.id||"wb_"+ ++Wunderbaum.sequence,this.root=new WunderbaumNode(this,null,{key:"__root__"}),this._registerExtension(new KeynavExtension(this)),this._registerExtension(new EditExtension(this)),this._registerExtension(new FilterExtension(this)),this._registerExtension(new DndExtension(this)),this._registerExtension(new LoggerExtension(this)),this.columns=t.columns,delete t.columns,!this.columns){let e="string"==typeof t.header?t.header:this.id;this.columns=[{id:"*",title:e,width:"*"}]}this.types=t.types||{},delete t.types;for(let e of Object.values(this.types))e.classes&&(e.classes=toSet(e.classes));1===this.columns.length&&(t.navigationMode=NavigationModeOption.row),t.navigationMode!==NavigationModeOption.cell&&t.navigationMode!==NavigationModeOption.startCell||(this.navMode=NavigationMode.cellNav),this._updateViewportThrottled=throttle((()=>{this._updateViewport()}),t.updateThrottleWait,{leading:!0,trailing:!0}),this.element=elemFromSelector(t.element),assert(!!this.element,`Invalid 'element' option: ${t.element}`),this.element.classList.add("wunderbaum"),this.element.getAttribute("tabindex")||(this.element.tabIndex=0),this.element._wb_tree=this,this.headerElement=this.element.querySelector("div.wb-header");const n=null==t.header?this.columns.length>1:!!t.header;if(this.headerElement){assert(!this.columns,"`opts.columns` must not be set if markup already contains a header"),this.columns=[];const e=this.headerElement.querySelector("div.wb-row");for(const t of e.querySelectorAll("div"))this.columns.push({id:t.dataset.id||null,text:""+t.textContent})}else if(n){const e="<span class='wb-col'></span>".repeat(this.columns.length);this.element.innerHTML=`\n <div class='wb-header'>\n <div class='wb-row'>\n ${e}\n </div>\n </div>`}else this.element.innerHTML="";this.element.innerHTML+='\n <div class="wb-scroll-container">\n <div class="wb-node-list"></div>\n </div>',this.scrollContainer=this.element.querySelector("div.wb-scroll-container"),this.nodeListElement=this.scrollContainer.querySelector("div.wb-node-list"),this.headerElement=this.element.querySelector("div.wb-header"),this.columns.length>1&&this.element.classList.add("wb-grid"),this._initExtensions(),t.source?(t.showSpinner&&(this.nodeListElement.innerHTML="<progress class='spinner'>loading...</progress>"),this.load(t.source).then((()=>{i.resolve()})).catch((e=>{i.reject(e)})).finally((()=>{var e;null===(e=this.element.querySelector("progress.spinner"))||void 0===e||e.remove(),this.element.classList.remove("wb-initializing")}))):i.resolve(),setTimeout((()=>{this.updateViewport()}),50),this.scrollContainer.addEventListener("scroll",(e=>{this.updateViewport()})),this.resizeObserver=new ResizeObserver((e=>{this.updateViewport(),console.log("ResizeObserver: Size changed",e)})),this.resizeObserver.observe(this.element),onEvent(this.nodeListElement,"click","div.wb-row",(e=>{const t=Wunderbaum.getEventInfo(e),i=t.node;if(!1===this._callEvent("click",{event:e,node:i,info:t}))return this.lastClickTime=Date.now(),!1;if(i){const s=this.getOption("edit.trigger"),n=this.getOption("edit.slowClickDelay");s.indexOf("clickActive")>=0&&"title"===t.region&&i.isActive()&&(!n||Date.now()-this.lastClickTime<n)&&this._callMethod("edit.startEditTitle",i),t.colIdx>=0?i.setActive(!0,{colIdx:t.colIdx,event:e}):i.setActive(!0,{event:e}),t.region===TargetType.expander?i.setExpanded(!i.isExpanded()):t.region===TargetType.checkbox&&i.setSelected(!i.isSelected())}this.lastClickTime=Date.now()})),onEvent(this.element,"keydown",(e=>{const t=Wunderbaum.getEventInfo(e),i=eventToString(e);this._callHook("onKeyEvent",{event:e,node:t.node,info:t,eventName:i})})),onEvent(this.element,"focusin focusout",(e=>{const t="focusin"===e.type;this._callEvent("focus",{flag:t,event:e}),t||this._callMethod("edit._stopEditTitle",!0,{event:e,forceClose:!0})}))}static getTree(e){if(e instanceof Wunderbaum)return e;if(e instanceof WunderbaumNode)return e.tree;if(void 0===e&&(e=0),"number"==typeof e)e=document.querySelectorAll(".wunderbaum")[e];else if("string"==typeof e){for(let t of document.querySelectorAll(".wunderbaum")){const i=t._wb_tree;if(i&&i.id===e)return i}if(!(e=document.querySelector(e)))return null}else e.target&&(e=e.target);return assert(e instanceof Element),e.matches(".wunderbaum")||(e=e.closest(".wunderbaum")),e&&e._wb_tree?e._wb_tree:null}static getNode(e){if(!e)return null;if(e instanceof WunderbaumNode)return e;for(void 0!==e.target&&(e=e.target);e;){if(e._wb_node)return e._wb_node;e=e.parentElement}return null}_registerExtension(e){this.extensionList.push(e),this.extensions[e.id]=e}_initExtensions(){for(let e of this.extensionList)e.init()}_registerNode(e){let t=e.key;assert(null!=t&&!this.keyMap.has(t)),this.keyMap.set(t,e);let i=e.refKey;if(i){let t=this.refKeyMap.get(i);t?t.add(e):this.refKeyMap.set(i,new Set)}}_unregisterNode(e){const t=e.refKey;if(t){const i=this.refKeyMap.get(t);i&&i.delete(e)&&!i.size&&this.refKeyMap.delete(t)}e.tree=null,e.parent=null,this.viewNodes.delete(e),e.removeMarkup()}_callHook(e,t={}){let i,s=extend({},{tree:this,options:this.options,result:void 0},t);for(let t of this.extensionList){if(i=t[e].call(t,s),!1===i)break;void 0!==s.result&&(i=s.result)}return i}_callMethod(e,...t){const[i,s]=e.split("."),n=s?this.extensions[i]:this,r=n[s];if(r)return r.apply(n,t);this.logError(`Calling undefined method '${e}()'.`)}_callEvent(e,t){const[i,s]=e.split("."),n=this.options,r=s?n[i][s]:n[i];if(r)return r.call(this,extend({name:e,tree:this,util:this._util},t))}_firstNodeInView(e=!0){let t,i;return t=e?Math.ceil(this.scrollContainer.scrollTop/22):Math.floor(this.scrollContainer.scrollTop/22),this.visitRows((e=>{if(e._rowIdx===t)return i=e,!1})),i}_lastNodeInView(e=!0){let t,i;return t=e?Math.floor((this.scrollContainer.scrollTop+this.scrollContainer.clientHeight)/22)-1:Math.ceil((this.scrollContainer.scrollTop+this.scrollContainer.clientHeight)/22)-1,this.visitRows((e=>{if(e._rowIdx===t)return i=e,!1})),i}_getPrevNodeInView(e,t=1){return this.visitRows((i=>{if(e=i,t--<=0)return!1}),{reverse:!0,start:e||this.getActiveNode()}),e}_getNextNodeInView(e,t=1){return this.visitRows((i=>{if(e=i,t--<=0)return!1}),{reverse:!1,start:e||this.getActiveNode()}),e}addChildren(e,t){return this.root.addChildren(e,t)}applyCommand(e,t,i){let s,n;switch(t instanceof WunderbaumNode?s=t:(s=this.getActiveNode(),assert(void 0===i),i=t),e){case"moveUp":n=s.getPrevSibling(),n&&(s.moveTo(n,"before"),s.setActive());break;case"moveDown":n=s.getNextSibling(),n&&(s.moveTo(n,"after"),s.setActive());break;case"indent":n=s.getPrevSibling(),n&&(s.moveTo(n,"appendChild"),n.setExpanded(),s.setActive());break;case"outdent":s.isTopLevel()||(s.moveTo(s.getParent(),"after"),s.setActive());break;case"remove":n=s.getPrevSibling()||s.getParent(),s.remove(),n&&n.setActive();break;case"addChild":this._callMethod("edit.createNode","prependChild");break;case"addSibling":this._callMethod("edit.createNode","after");break;case"rename":this._callMethod("edit.startEditTitle");break;case"down":case"first":case"last":case"left":case"pageDown":case"pageUp":case"parent":case"right":case"up":return s.navigate(e);default:error(`Unhandled command: '${e}'`)}}clear(){this.root.removeChildren(),this.root.children=null,this.keyMap.clear(),this.refKeyMap.clear(),this.viewNodes.clear(),this.activeNode=null,this.focusNode=null,this.changedSince=0,this.changes.clear(),this.changedNodes.clear(),this.updateViewport()}destroy(){this.logInfo("destroy()..."),this.clear(),this.resizeObserver.disconnect(),this.element.innerHTML="",this.element.outerHTML=this.element.outerHTML}getOption(e,t){let i,s=this.options;e.indexOf(".")>=0&&([i,e]=e.split("."),s=s[i]);let n=s[e];return"function"==typeof n&&(n=n({type:"resolve",tree:this})),null!=n?n:t}setOption(e,t){if(-1===e.indexOf("."))return void(this.options[e]=t);const i=e.split(".");this.extensions[i[0]].setPluginOption(i[1],t)}hasFocus(){return this.element.contains(document.activeElement)}runWithoutUpdate(e,t=null){try{return this.enableUpdate(!1),e()}finally{this.enableUpdate(!0)}}async expandAll(e=!0){const t=this.logTime("expandAll("+e+")");try{this.enableUpdate(!1),await this.root.expandAll(e)}finally{this.enableUpdate(!0),this.logTimeEnd(t)}}count(e=!1){return e?this.viewNodes.size:this.keyMap.size}_check(){let e=0;this.visit((t=>{e++})),this.keyMap.size!==e&&this.logWarn(`_check failed: ${this.keyMap.size} !== ${e}`)}findAll(e){return this.root.findAll(e)}findFirst(e){return this.root.findFirst(e)}findNextNode(e,t){let i=null,s=this.getFirstChild(),n="string"==typeof e?makeNodeTitleStartMatcher(e):e;function r(e){if(n(e)&&(i=e),i||e===t)return!1}return t=t||s,this.visitRows(r,{start:t,includeSelf:!1}),i||t===s||this.visitRows(r,{start:s,includeSelf:!0}),i}findRelatedNode(e,t,i=!1){let s=null,n=Math.floor(this.scrollContainer.clientHeight/22);switch(t){case"parent":e.parent&&e.parent.parent&&(s=e.parent);break;case"first":this.visit((function(e){if(e.isVisible())return s=e,!1}));break;case"last":this.visit((function(e){e.isVisible()&&(s=e)}));break;case"left":e.parent&&e.parent.parent&&(s=e.parent);break;case"right":e.children&&e.children.length&&(s=e.children[0]);break;case"up":s=this._getPrevNodeInView(e);break;case"down":s=this._getNextNodeInView(e);break;case"pageDown":let i=this._lastNodeInView();s=this.focusNode!==i?i:this._getNextNodeInView(e,n);break;case"pageUp":if(this.focusNode&&0===this.focusNode._rowIdx)s=this.focusNode;else{let t=this._firstNodeInView();s=this.focusNode!==t?t:this._getPrevNodeInView(e,n)}break;default:this.logWarn("Unknown relation '"+t+"'.")}return s}getActiveColElem(){return this.activeNode&&this.activeColIdx>=0?this.activeNode.getColElem(this.activeColIdx):null}getActiveNode(){return this.activeNode}getFirstChild(){return this.root.getFirstChild()}getFocusNode(){return this.focusNode}static getEventInfo(e){let t=e.target,i=t.classList,s=t.closest(".wb-col"),n=Wunderbaum.getNode(t),r={node:n,region:TargetType.unknown,colDef:void 0,colIdx:-1,colId:void 0,colElem:s};if(i.contains("wb-title"))r.region=TargetType.title;else if(i.contains("wb-expander"))r.region=!1===n.hasChildren()?TargetType.prefix:TargetType.expander;else if(i.contains("wb-checkbox"))r.region=TargetType.checkbox;else if(i.contains("wb-icon"))r.region=TargetType.icon;else if(i.contains("wb-node"))r.region=TargetType.title;else{if(!s)return console.warn("getEventInfo(): not found",e,r),r;{r.region=TargetType.column;const e=Array.prototype.indexOf.call(s.parentNode.children,s);r.colIdx=e}}return-1===r.colIdx&&(r.colIdx=0),r.colDef=n.tree.columns[r.colIdx],null!=r.colDef&&(r.colId=r.colDef.id),r}toString(){return"Wunderbaum<'"+this.id+"'>"}isEditing(){return this._callMethod("edit.isEditingTitle")}isLoading(){var e=!1;return this.root.visit((t=>{if(t._isLoading||t._requestId)return e=!0,!1}),!0),e}logDebug(...e){this.options.debugLevel>=4&&(Array.prototype.unshift.call(e,this.toString()),console.log.apply(console,e))}logError(...e){this.options.debugLevel>=1&&(Array.prototype.unshift.call(e,this.toString()),console.error.apply(console,e))}logInfo(...e){this.options.debugLevel>=3&&(Array.prototype.unshift.call(e,this.toString()),console.info.apply(console,e))}logTime(e){return this.options.debugLevel>=4&&console.time(this+": "+e),e}logTimeEnd(e){this.options.debugLevel>=4&&console.timeEnd(this+": "+e)}logWarn(...e){this.options.debugLevel>=2&&(Array.prototype.unshift.call(e,this.toString()),console.warn.apply(console,e))}render(e){const t=this.logTime("render");let i=0,s=0;let n=!1,r=null==e?void 0:e.startIdx,o=null==e?void 0:e.endIdx;const l=this.viewNodes;this.viewNodes=new Set;let a=this.viewNodes;assert(null!=r&&null!=o),r%2&&r--,this.visitRows((function(e){const t=e._rowIdx;a.add(e),l.delete(e),t!==i&&(e._rowIdx=i,n=!0),i<r||i>o?(e._callEvent("discard"),e.removeMarkup()):e.render({top:s}),i++,s+=22}));for(const e of l)e._callEvent("discard"),e.removeMarkup();return this.nodeListElement.style.height=s+"px",this.logTimeEnd(t),n}renderHeader(){if(!this.headerElement)return;const e=this.headerElement.querySelector(".wb-row");assert(e),e.innerHTML="<span class='wb-col'></span>".repeat(this.columns.length);for(let t=0;t<this.columns.length;t++){let i=this.columns[t],s=e.children[t];s.style.left=i._ofsPx+"px",s.style.width=i._widthPx+"px",s.textContent=i.title||i.id}}scrollTo(e){const t=e.node||this.getActiveNode();assert(null!=t._rowIdx);const i=this.scrollContainer.scrollTop,s=this.scrollContainer.clientHeight,n=22*t._rowIdx;let r;n>i?n+22<i+s||(r=n-s+22-1):n<i&&(r=n+1),this.log("scrollTo("+n+"): "+i+" => "+r,s),null!=r&&(this.scrollContainer.scrollTop=r,this.updateViewport())}setCellMode(e){if(e===this.navMode)return;const t=this.navMode,i=e!==NavigationMode.row;this.navMode=e,i&&t===NavigationMode.row&&this.setColumn(0),this.element.classList.toggle("wb-cell-mode",i),this.element.classList.toggle("wb-cell-edit-mode",e===NavigationMode.cellEdit),this.setModified(ChangeType.row,this.activeNode)}setColumn(e){if(assert(this.navMode!==NavigationMode.row),assert(0<=e&&e<this.columns.length),this.activeColIdx=e,this.setModified(ChangeType.row,this.activeNode),this.headerElement)for(let t of this.headerElement.children){let i=0;for(let s of t.children)s.classList.toggle("wb-active",i++===e)}for(let t of this.nodeListElement.children){let i=0;for(let s of t.children)s.classList.toggle("wb-active",i++===e)}}setFocus(e=!0){e?this.element.focus():this.element.blur()}setModified(e,t,i){this.changedSince||(this.changedSince=Date.now()),this.changes.add(e),e===ChangeType.structure?this.changedNodes.clear():t&&!this.changes.has(ChangeType.structure)&&(this.changedNodes.size<10?this.changedNodes.add(t):(this.changes.add(ChangeType.structure),this.changedNodes.clear()))}setStatus(e,t,i){return this.root.setStatus(e,t,i)}updateColumns(e){let t=!1,i=this.element.clientWidth,s=0,n=0;this._columnsById={};for(let e of this.columns){this._columnsById[e.id]=e;let i=e.width;if(i&&"*"!==i)if("number"==typeof i)e._weight=i,s+=i;else if("string"==typeof i&&i.endsWith("px")){e._weight=0;let s=parseFloat(i.slice(0,-2));e._widthPx!=s&&(t=!0,e._widthPx=s),n+=s}else error("Invalid column width: "+i);else e._weight=1,s+=1}let r=Math.max(0,i-n),o=0;for(let e of this.columns){if(e._weight){let i=Math.max(4,r*e._weight/s);e._widthPx!=i&&(t=!0,e._widthPx=i)}e._ofsPx=o,o+=e._widthPx}t&&(this.renderHeader(),!1!==e.render&&this.render())}updateViewport(e=!1){this._updateViewportThrottled(),e&&this._updateViewportThrottled.flush()}_updateViewport(){if(this._disableUpdate)return;let e=this.scrollContainer.clientHeight;const t=this.options.headerHeightPx;let i=this.element.clientHeight-t,s=this.scrollContainer.scrollTop;Math.abs(e-i)>1&&(this.scrollContainer.style.height=i+"px",e=i),this.updateColumns({render:!1}),this.render({startIdx:Math.max(0,s/22-5),endIdx:Math.max(0,(s+e)/22+5)}),this._callEvent("update")}visit(e){return this.root.visit(e,!1)}visitRows(e,t){if(!this.root.hasChildren())return!1;if(t&&t.reverse)return delete t.reverse,this._visitRowsUp(e,t);let i,s,n,r,o,l,a=0,d=!1===(t=t||{}).includeSelf,c=!!t.includeHidden,h=!c&&"hide"===this.filterMode,u=t.start||this.root.children[0];for(n=u.parent;n;){for(o=n.children,s=o.indexOf(u)+a,assert(s>=0,"Could not find "+u+" in parent's children: "+n),i=s;i<o.length;i++){if(u=o[i],u===l)return!1;if(!h||u.statusNodeType||u.match||u.subMatchCount){if(!d&&!1===e(u))return!1;if(d=!1,u.children&&u.children.length&&(c||u.expanded)&&(r=u.visit((function(t){return t!==l&&(!h||t.match||t.subMatchCount?!1!==e(t)&&(c||!t.children||t.expanded?void 0:"skip"):"skip")}),!1),!1===r))return!1}}u=n,n=n.parent,a=1,!n&&t.wrap&&(this.logDebug("visitRows(): wrap around"),assert(t.start,"`wrap` option requires `start`"),l=t.start,t.wrap=!1,n=this.root,a=0)}return!0}_visitRowsUp(e,t){let i,s,n,r=!!t.includeHidden,o=t.start||this.root.children[0];if(!1!==t.includeSelf&&!1===e(o))return!1;for(;;){if(n=o.parent,i=n.children,i[0]===o){if(o=n,!o.parent)break;i=n.children}else for(s=i.indexOf(o),o=i[s-1];(r||o.expanded)&&o.children&&o.children.length;)i=o.children,n=o,o=i[i.length-1];if((r||o.isVisible())&&!1===e(o))return!1}return!0}load(e,t={}){this.clear();return(t.columns||e.columns)&&(this.columns=t.columns,this.renderHeader()),this.root.load(e)}enableUpdate(e){e?(assert(this._disableUpdateCount>0),this._disableUpdateCount--,0===this._disableUpdateCount&&this.updateViewport()):this._disableUpdateCount++}clearFilter(){return this.extensions.filter.clearFilter()}isFilterActive(){return!!this.filterMode}updateFilter(){return this.extensions.filter.updateFilter()}}Wunderbaum.version="v0.0.1-0",Wunderbaum.sequence=0,Wunderbaum.util=util;export{Wunderbaum};
69
+ //# sourceMappingURL=wunderbaum.esm.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["build/wunderbaum.esm.js"],"names":["MOUSE_BUTTONS","0","1","2","3","4","5","MAX_INT","userInfo","_getUserInfo","isMac","REX_HTML","REX_TOOLTIP","ENTITY_MAP","&","<",">","\"","'","/","Deferred$1","[object Object]","this","thens","catches","status","value","Error","resolvedValue","forEach","t","error","rejectedError","c","cb","unshift","then","catch","assert","cond","msg","nav","navigator","test","platform","documentReady","callback","document","readyState","addEventListener","documentReadyPromise","Promise","resolve","each","obj","length","i","call","k","escapeHtml","s","replace","escapeRegex","escapeTooltip","extractHtmlText","indexOf","getValueFromElem","elem","coerce","tag","tagName","classList","contains","span","embeddedInput","querySelector","innerText","input","type","indeterminate","checked","valueAsDate","valueAsNumber","name","parentElement","undefined","setValueToElem","elemFromHtml","html","createElement","innerHTML","trim","content","firstElementChild","_IGNORE_KEYS","Set","elemFromSelector","eventToString","event","key","et","altKey","push","ctrlKey","metaKey","shiftKey","button","has","join","extend","args","arg","Object","prototype","hasOwnProperty","isArray","Array","isEmptyObject","keys","constructor","isFunction","isPlainObject","toString","noop","onEvent","rootElem","eventNames","selectorOrHandler","handlerOrNone","selector","handler","split","evn","e","target","matches","closest","overrideMethod","instance","methodName","ctx","prevSuper","prevSuperApply","self","prevFunc","_super","apply","_superApply","argsArray","setTimeoutPromise","ms","reject","setTimeout","err","async","sleep","toggleCheckbox","element","tristate","getOption","opts","defaultValue","ext","toSet","val","set","add","toLowerCase","util","freeze","__proto__","Deferred","DEFAULT_DEBUGLEVEL","ROW_HEIGHT","ICON_WIDTH","ROW_EXTRA_PAD","RENDER_MAX_PREFETCH","TEST_IMG","RegExp","ChangeType","NodeStatusType","TargetType","iconMap","loading","noData","expanderExpanded","expanderCollapsed","expanderLazy","checkChecked","checkUnchecked","checkUnknown","radioChecked","radioUnchecked","radioUnknown","folder","folderOpen","doc","NavigationModeOption","NavigationMode","KEY_TO_ACTION_DICT"," ","+","Add","ArrowDown","ArrowLeft","ArrowRight","ArrowUp","Backspace","Divide","End","Home","Control+End","Control+Home","*","Multiply","PageDown","PageUp","-","Subtract","makeNodeTitleMatcher","node","title","makeNodeTitleStartMatcher","reMatch","WunderbaumExtension","tree","id","defaults","enabled","treeOpts","options","extensionOpts","getPluginOption","_a","flag","setPluginOption","data","freeGlobal","global","freeGlobalThis","globalThis","freeSelf","root","Function","isObject","debounce","func","wait","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","useRAF","requestAnimationFrame","TypeError","invokeFunc","time","thisArg","startTimer","pendingFunc","cancelAnimationFrame","shouldInvoke","timeSinceLastCall","timerExpired","Date","now","trailingEdge","timeSinceLastInvoke","timeWaiting","Math","min","remainingWait","debounced","isInvoking","leadingEdge","max","cancel","clearTimeout","cancelTimer","flush","pending","throttle","START_MARKER","END_MARKER","RE_START_MARKER","RE_END_MARTKER","FilterExtension","super","autoApply","autoExpand","counter","fuzzy","hideExpandedCounter","hideExpanders","highlight","leavesOnly","mode","lastFilterArgs","init","attachInput","queryInput","filterNodes","filter","branchMode","_opts","runWithoutUpdate","_applyFilterImpl","match","temp","start","count","escapeTitles","prevAutoCollapse","autoCollapse","hideMode","logInfo","clearFilter","map","reduce","a","b","re","reHighlight","text","res","_markFuzzyMatchedChars","titleWithHighlight","filterMode","arguments","toggle","subMatchCount","visit","setStatus","ok","children","matchedByBranch","parent","visitParents","p","expanded","setExpanded","noAnimation","noEvents","scrollIntoView","_filterAutoExpanded","_applyFilterNoUpdate","logWarn","enableUpdate","_rowElem","titleElem","textContent","_callEvent","subMatchBadge","remove","matchingIndices","_matchingArrIdx","_mIdx","textPoses","v","KeynavExtension","focusNode","eventName","handled","activate","autoActivate","navModeOption","navigationMode","logDebug","_callMethod","activeNode","getActiveNode","firstNode","getFirstChild","setActive","setFocus","getFocusNode","navMode","row","quicksearch","stamp","lastQuicksearchTime","lastQuicksearchTerm","matchNode","findNextNode","preventDefault","lazy","startRow","setCellMode","cellNav","setSelected","isSelected","navigate","activeColIdx","getActiveColElem","click","isExpandable","isExpanded","cellEdit","setColumn","cell","columns","LoggerExtension","ignoreEvents","prefix","extra","console","debug","nodeMimeType","DndExtension","autoExpandMS","multiSource","effectAllowed","dropEffectDefault","preventForeignNodes","preventLazyParents","preventNonNodes","preventRecursion","preventSameParent","preventVoidMoves","scroll","scrollSensitivity","scrollSpeed","sourceCopyHook","dragStart","dragDrag","dragEnd","dragEnter","dragOver","dragExpand","dragDrop","dragLeave","srcNode","lastTargetNode","lastEnterStamp","lastAllowedDropRegions","lastDropEffect","lastDropRegion","dndOpts","dnd","onDragEvent","bind","onDropEvent","ltn","removeClass","size","allowed","dy","offsetY","sp","scrollContainer","sensitivity","speed","scrolled","scrollTop","offsetTop","offsetHeight","pageY","scrollHeight","clientHeight","Wunderbaum","getNode","dataTransfer","nodeData","toDict","n","_org_key","treeId","json","JSON","stringify","setData","addClass","_leaveNode","targetNode","dt","dropEffect","_calcDropRegion","isStatusNode","regionSet","unifyDragover","autoScroll","region","_isLoading","toggleClass","stopPropagation","sourceNode","_promise","_resolve","_reject","reason","finally","NODE_PROPS","NODE_ATTRS","WunderbaumNode","_b","refKey","selected","extraClasses","_requestId","_errorInfo","_partsel","_partload","_rowIdx","sequence","statusNodeType","checkbox","colspan","icon","classes","entries","_registerNode","typeInfo","types","insertBefore","before","nodeList","child","subChildren","addChildren","redraw","concat","findDirectChild","pos","splice","setModified","structure","getNextSibling","cmd","applyCommand","className","cn","delete","matcher","ptr","cl","l","where","includeHidden","findRelatedNode","colIdx","findIndex","colElems","querySelectorAll","ac","idx","includeRoot","includeSelf","dtn","part","separator","path","isFunc","other","andCollapsed","hasChildren","hasFilter","parents","getParentList","source","response","requestId","prevParent","url","timerLabel","logTime","fetch","method","renderHeader","_loadSourceObject","logError","logTimeEnd","forceReload","wasExpanded","isUnloaded","isLoaded","resetLazy","load","updateViewport","render","debugLevel","log","info","warn","dfd","deferreds","len","effects","all","promise","targetParent","isDescendantOf","triggerModifyChild","makeVisible","removeMarkup","_unregisterNode","isRootNode","_wb_node","colInfosById","col","parentElem","replaceChild","iconSpan","appendChild","treeOptions","level","getLevel","nodeElem","titleSpan","rowDiv","checkboxSpan","expanderSpan","isNew","rowClasses","skeleton","ofsTitlePx","minExpandLevel","_createIcon","_ofsTitlePx","draggable","colElem","style","left","_ofsPx","width","_widthPx","top","vpWidth","clientWidth","_getRenderInfo","nodeListElement","removeChildren","recursive","dict","propName","scrollTo","prev","retrigger","noEvent","orgEvent","nextNode","prevNode","setDirty","_disableUpdate","loadLazy","message","details","statusNode","_setStatusNode","firstChild","addNode","_clearStatusNode","strings","tooltip","loadError","operation","modifyChild","EditExtension","minlength","maxlength","trigger","select","slowClickDelay","validity","beforeEdit","edit","curEditNode","relatedNode","debouncedOnChange","_onChange","getEventInfo","_applyChange","inputElem","inputValue","_stopEditTitle","startEditTitle","inputHtml","getColElem","reportValidity","focus","focusElem","activeElement","newValue","forceClose","oldValue","errMsg","validationMessage","setTitle","createNode","newNode","MAX_CHANGED_NODES","extensionList","extensions","keyMap","Map","refKeyMap","viewNodes","_disableUpdateCount","_columnsById","changedSince","changes","changedNodes","lastClickTime","_util","header","headerHeightPx","rowHeightPx","showSpinner","updateThrottleWait","change","enhanceTitle","receive","readyDeferred","ready","readyOk","_registerExtension","defaultName","values","startCell","_updateViewportThrottled","_updateViewport","getAttribute","tabIndex","_wb_tree","headerElement","wantHeader","rowElement","colDiv","dataset","coldivs","repeat","_initExtensions","resizeObserver","ResizeObserver","observe","isActive","expander","_callHook","el","treeElem","Element","extension","rk","rks","get","hook","d","complete","topIdx","ceil","floor","visitRows","bottomIdx","ofs","reverse","nodeOrOpts","refNode","getPrevSibling","moveTo","isTopLevel","getParent","clear","disconnect","outerHTML","parts","hint","expandAll","visible","findAll","findFirst","startNode","_checkNode","pageSize","isVisible","_getPrevNodeInView","_getNextNodeInView","bottomNode","_lastNodeInView","topNode","_firstNodeInView","parentCol","unknown","colDef","colId","column","parentNode","label","timeEnd","modified","startIdx","end","endIdx","obsoleteViewNodes","prevIdx","height","headerRow","curTop","nodeOfs","newTop","prevMode","cellMode","blur","totalWeight","fixedWidth","cw","_weight","endsWith","px","parseFloat","slice","restPx","ofsPx","immediate","headerHeight","wantHeight","abs","updateColumns","_visitRowsUp","nextIdx","siblings","stopNode","siblingOfs","skipFirstNode","checkFilter","wrap","updateFilter","version"],"mappings":"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"}