@mescius/wijmo.nav 5.20261.45-nightly.d20251218.t163151 → 5.20261.45-nightly.d20260105.t163143

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.
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * Wijmo Library 5.20261.45-nightly.d20251218.t163151
3
+ * Wijmo Library 5.20261.45-nightly.d20260105.t163143
4
4
  * https://developer.mescius.com/wijmo
5
5
  *
6
6
  * Copyright(c) MESCIUS inc. All rights reserved.
@@ -11,4 +11,4 @@
11
11
  *
12
12
  */
13
13
 
14
- "use strict";var __importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)Object.hasOwnProperty.call(e,s)&&(t[s]=e[s]);t.default=e;return t};Object.defineProperty(exports,"__esModule",{value:!0});const wijmo_1=require("@mescius/wijmo"),selfModule=__importStar(require("@mescius/wijmo.nav"));exports.AccordionClsNames={header:"wj-header",hostElement:"wj-accordion",showIcons:"wj-show-icons",activeContent:"wj-active-content"};exports.TabPanelClsNames={hostElement:"wj-tabpanel",tabHeader:"wj-tabheader",tabHeaders:"wj-tabheaders",tabPane:"wj-tabpane",tabPanes:"wj-tabpanes",screenReaderOnly:"wj-sr-only"};exports.TreeViewClsNames={dragFeedback:"wj-tv-drag-feedback",dragItemCount:"wj-tv-drag-ic",hostElement:"wj-treeview",largerDragItemCount:"wj-larger-drag-ic",marker:"wj-marker",lineMarker:"wj-line-marker",node:"wj-node",nodeCheck:"wj-node-check",nodeList:"wj-nodelist",nodeText:"wj-node-text"};class TabPanel extends wijmo_1.Control{constructor(e,t,s,i){super(e,null,!0);this._tabs=new wijmo_1.ObservableArray;this._selectedIndex=-1;this._animated=!0;this._autoSwitch=!0;this._isInitialized=!1;this.selectedIndexChanged=new wijmo_1.Event;let l=this.hostElement,o=[];if(!s)for(;l.firstElementChild;){let e=l.firstElementChild;l.removeChild(e);i||o.push(e)}let n=this.getTemplate();this.applyTemplate(`${wijmo_1.ControlClsNames.hostElement} ${exports.TabPanelClsNames.hostElement} ${wijmo_1.UtilitesClsNames.animated}`,n,{_dRoot:"root",_dTabHeaders:"tabheaders",_dTabPanes:"tabpanes",_tabStatus:"tab-select-status"});l.tabIndex=-1;this._dRoot.tabIndex=this._dTabHeaders.tabIndex=this._dTabPanes.tabIndex=-1;t&&wijmo_1.isBoolean(t.isAnimated)&&(this.isAnimated=t.isAnimated);this.addEventListener(l,"click",this._click.bind(this));this.addEventListener(l,"keydown",this._keydown.bind(this));this._tabs.collectionChanged.addHandler(this._populateControl.bind(this));this.tabs.deferUpdate(()=>{o.forEach(e=>{wijmo_1.assert(2==e.childElementCount,"TabPanel children should contain header and pane elements");this.tabs.push(new Tab(e.children[0],e.children[1]))})});this.initialize(t);if(this.selectedIndex<0&&this.tabs.length)this.selectedIndex=0;else{this._isInitialized=!0;this.onSelectedIndexChanged();delete this._isInitialized}}static get controlTemplate(){TabPanel._ctrlTemplate||(TabPanel._ctrlTemplate=`<div wj-part="root"><div wj-part="tabheaders" class="${exports.TabPanelClsNames.tabHeaders}" role="tablist"></div><div wj-part="tabpanes" class="${exports.TabPanelClsNames.tabPanes}"></div><div wj-part="tab-select-status" aria-live="polite" class="${exports.TabPanelClsNames.screenReaderOnly}"></div></div>`);return TabPanel._ctrlTemplate}static set controlTemplate(e){TabPanel._ctrlTemplate=e}get tabs(){return this._tabs}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){if((e=wijmo_1.asInt(e,!1))!=this._selectedIndex){this._selectedIndex=e;this._updateContent();this.onSelectedIndexChanged();this.tabs[e]&&this.tabs[e].header&&(this._tabStatus.textContent=""+this.tabs[e].header.textContent)}else"Angular2"==this.workingAs&&this._updateContent()}get selectedTab(){let e=this._selectedIndex;return e>-1?this._tabs[e]:null}set selectedTab(e){let t=-1;for(let s=0;s<this._tabs.length&&t<0;s++)this._tabs[s]==e&&(t=s);this.selectedIndex=t}get isAnimated(){return this._animated}set isAnimated(e){this._animated=wijmo_1.asBoolean(e);wijmo_1.toggleClass(this.hostElement,wijmo_1.UtilitesClsNames.animated,this._animated)}get autoSwitch(){return this._autoSwitch}set autoSwitch(e){if(e!=this._autoSwitch){this._autoSwitch=wijmo_1.asBoolean(e);this._updateContent()}}getTab(e){for(let t=0;t<this._tabs.length;t++){let s=this._tabs[t];if(s.header.id==e||s.pane.id==e)return s}for(let t=0;t<this._tabs.length;t++){let s=this._tabs[t];if(s.header.textContent==e)return s}return null}onSelectedIndexChanged(e){this.selectedIndexChanged.raise(this,e)}_populateControl(){this._removeChildren(this._dTabHeaders);this._removeChildren(this._dTabPanes);let e=-1;this._tabs.forEach((t,s)=>{wijmo_1.assert(t instanceof Tab,"tabs array must contain Tab objects.");t._setPanel(this);let i=t.header;wijmo_1.addClass(i,exports.TabPanelClsNames.tabHeader);wijmo_1.setAttribute(i,"role","tab");this._dTabHeaders.appendChild(i);let l=t.pane;wijmo_1.addClass(l,exports.TabPanelClsNames.tabPane);wijmo_1.setAttribute(l,"role","tabpanel");wijmo_1.setAttribute(l,"aria-labelledby",i.id?i.id:null);this._dTabPanes.appendChild(l);e<0&&(wijmo_1.hasClass(i,wijmo_1.ControlStateClsNames.active)||"true"==i.getAttribute("aria-selected"))&&(e=s)});e<0&&this._tabs.length>0&&(e=0);e>-1?this.selectedIndex=e:this.selectedIndex>-1&&this.selectedIndex<this._tabs.length&&this._updateContent();this._validateSelection()}_validateSelection(){let e=this.selectedTab;if(e&&(e.isDisabled||!e.isVisible)){let e=this._getNextIndex(this.selectedIndex,1);e<0&&(e=this._getNextIndex(this.selectedIndex,-1));this.selectedIndex=e}}_updateContent(){let e=wijmo_1.contains(this._dTabHeaders,wijmo_1.getActiveElement()),t=this._dTabHeaders.children,s=this._dTabPanes.children,i=this._selectedIndex;if(i>-1&&i<s.length){let e=s[i],t=e.style;if(this.isAnimated){this._eAnim&&(this._eAnim.style.opacity="");this._toAnim&&clearInterval(this._toAnim);t.opacity="0";this._eAnim=e;this._toAnim=wijmo_1.animate(e=>{if(1==e){this._eAnim=null;this._toAnim=null;t.opacity=""}else t.opacity=e.toString()})}else t.opacity=""}for(let l=0;l<t.length;l++){let o=l==i,n=t[l];wijmo_1.setAttribute(n,"aria-selected",o);wijmo_1.toggleClass(n,wijmo_1.ControlStateClsNames.active,o);let a=s[l];wijmo_1.toggleClass(a,wijmo_1.ControlStateClsNames.active,o);n.tabIndex=o||!this._autoSwitch?this._orgTabIndex:-1;if(o){e&&n.focus();this._szObserver||wijmo_1.Control.invalidateAll(a)}}}_removeChildren(e){for(;e.firstChild;)e.removeChild(e.firstChild)}_click(e){let t=this._getTabIndex(e.target);if(t>-1){let e=this._tabs[t];!e.isDisabled&&e.isVisible&&(this.selectedIndex=t)}}_keydown(e){if(!e.defaultPrevented){let t=this._getTabIndex(wijmo_1.getActiveElement());if(t>-1){let s=this._getKeyCode(e);switch(s){case wijmo_1.Key.Left:case wijmo_1.Key.Up:case wijmo_1.Key.Right:case wijmo_1.Key.Down:case wijmo_1.Key.Home:case wijmo_1.Key.PageUp:case wijmo_1.Key.End:case wijmo_1.Key.PageDown:switch(s){case wijmo_1.Key.Left:case wijmo_1.Key.Up:t=this._getNextIndex(t,-1);break;case wijmo_1.Key.Right:case wijmo_1.Key.Down:t=this._getNextIndex(t,1);break;case wijmo_1.Key.Home:case wijmo_1.Key.PageUp:t=this._getNextIndex(-1,1);break;case wijmo_1.Key.End:case wijmo_1.Key.PageDown:t=this._getNextIndex(this._tabs.length,-1)}t>-1&&(this._autoSwitch?this.selectedIndex=t:this._tabs[t].header.focus());e.preventDefault();break;case wijmo_1.Key.Enter:case wijmo_1.Key.Space:if(t>-1){this._tabs[t].header.click()}e.preventDefault()}}}}_getTabIndex(e){let t=wijmo_1.closest(e,"."+exports.TabPanelClsNames.tabHeader);if(t&&wijmo_1.closest(t,"."+exports.TabPanelClsNames.hostElement)==this.hostElement)for(let e=0;e<this._tabs.length;e++)if(this._tabs[e].header==t)return e;return-1}_getNextIndex(e,t){for(let s=e+t;s>-1&&s<this._tabs.length;s+=t){let e=this._tabs[s];if(!e.isDisabled&&e.isVisible)return s}return-1}_setIsDisabled(e){super._setIsDisabled(e);this._updateTabIndex()}_setTabOrder(e){super._setTabOrder(e);this.isDisabled||this._updateTabIndex()}_updateTabIndex(){let e=this._dTabHeaders.children,t=this._selectedIndex;if(t>-1&&t<e.length){e[t].tabIndex=this.isDisabled?-1:this._orgTabIndex}this.hostElement.tabIndex=-1}dispose(){if(this._toAnim){clearInterval(this._toAnim);this._toAnim=null}this._tabs.collectionChanged.removeHandler(this._populateControl,this);this._tabs.forEach(e=>{e.dispose()});this._tabs.clear();super.dispose()}}TabPanel._ctrlTemplate="";exports.TabPanel=TabPanel;class Tab{constructor(e,t){this._hdr=wijmo_1.asType(wijmo_1.getElement(e),HTMLElement);this._pane=wijmo_1.asType(wijmo_1.getElement(t),HTMLElement)}get tabPanel(){return this._p}get header(){return this._hdr}get pane(){return this._pane}get isDisabled(){return wijmo_1.hasClass(this._hdr,wijmo_1.ControlStateClsNames.disabled)}set isDisabled(e){wijmo_1.toggleClass(this._hdr,wijmo_1.ControlStateClsNames.disabled,wijmo_1.asBoolean(e));this._p&&this._p._validateSelection()}get isVisible(){return"none"!=this._hdr.style.display}set isVisible(e){this._hdr.style.display=wijmo_1.asBoolean(e)?"":"none";this._p&&this._p._validateSelection()}_setParts(e,t){e=wijmo_1.asType(wijmo_1.getElement(e),HTMLElement);t=wijmo_1.asType(wijmo_1.getElement(t),HTMLElement,!1);if(this._hdr!==e||this._pane!==t){let s=this.isDisabled,i=this.isVisible;this._hdr=e;this._pane=t;this.isDisabled=s;this.isVisible=i;let l=this.tabPanel;l&&!l.tabs.isUpdating&&l._populateControl()}}_setPanel(e){this._p=e}dispose(){this._hdr=null;this._pane=null;this._p=null}}exports.Tab=Tab;const _CLS_ACTIVE=wijmo_1.ControlStateClsNames.active;class Accordion extends wijmo_1.Control{constructor(e,t,s){super(e,null,!0);this._panes=new wijmo_1.ObservableArray;this._selectedIndex=-1;this._animated=!0;this._autoSwitch=!0;this._alCollapseAll=!1;this._alExpandMany=!1;this._autoSwitching=!1;this.selectedIndexChanged=new wijmo_1.Event;let i=this.hostElement,l=this._panes,o=[];if(!s)for(;i.firstElementChild;){let e=i.firstElementChild;i.removeChild(e);o.push(e)}wijmo_1.addClass(i,`${wijmo_1.ControlClsNames.hostElement} ${exports.AccordionClsNames.hostElement} ${exports.AccordionClsNames.showIcons}`);i.tabIndex=-1;this.addEventListener(i,"click",this._click.bind(this));this.addEventListener(i,"keydown",this._keydown.bind(this));l.collectionChanged.addHandler(this._populateControl.bind(this));l.deferUpdate(()=>{o.forEach(e=>{wijmo_1.assert(2==e.childElementCount,"Accordion children should contain header and pane elements");l.push(new AccordionPane(e.children[0],e.children[1]))})});this.initialize(t);let n=t?t.selectedIndex:null;this.selectedIndex!=n&&this.selectedIndex<0&&l.length?this.selectedIndex=0:this.onSelectedIndexChanged()}get panes(){return this._panes}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){if((e=wijmo_1.asInt(e,!1))!=this._selectedIndex){this._selectedIndex=e;this._updateContent();this.onSelectedIndexChanged()}else this._updateContent()}get selectedPane(){let e=this._selectedIndex;return e>-1?this._panes[e]:null}set selectedPane(e){this.selectedIndex=this._getIndexOfPane(e)}get isAnimated(){return this._animated}set isAnimated(e){this._animated=wijmo_1.asBoolean(e)}get showIcons(){return wijmo_1.hasClass(this.hostElement,exports.AccordionClsNames.showIcons)}set showIcons(e){wijmo_1.toggleClass(this.hostElement,exports.AccordionClsNames.showIcons,wijmo_1.asBoolean(e))}get autoSwitch(){return this._autoSwitch}set autoSwitch(e){if(e!=this._autoSwitch){this._autoSwitch=wijmo_1.asBoolean(e);this._updateContent()}}get allowCollapseAll(){return this._alCollapseAll}set allowCollapseAll(e){this._alCollapseAll=wijmo_1.asBoolean(e)}get allowExpandMany(){return this._alExpandMany}set allowExpandMany(e){if(e!=this._alExpandMany){this._alExpandMany=e=wijmo_1.asBoolean(e);e||this.panes.forEach((e,t)=>{let s=t==this.selectedIndex;toggleActiveClass(e.header,s);wijmo_1.setAttribute(e.header,"aria-expanded",s)})}}getPane(e){for(let t=0;t<this._panes.length;t++){let s=this._panes[t];if(s.header.id==e||s.content.id==e)return s}for(let t=0;t<this._panes.length;t++){let s=this._panes[t];if(s.header.textContent==e)return s}return null}onSelectedIndexChanged(e){this.selectedIndexChanged.raise(this,e)}_populateControl(){let e=-1,t=this.hostElement;this._panes.forEach((s,i)=>{wijmo_1.assert(s instanceof AccordionPane,"panes array must contain AccordionPane objects.");s._setAccordion(this);let l=s.header;wijmo_1.addClass(l,exports.AccordionClsNames.header);wijmo_1.setAttribute(l,"role","button");t.appendChild(l);let o=s.content;wijmo_1.addClass(o,wijmo_1.ControlClsNames.content);wijmo_1.setAttribute(o,"role","region");wijmo_1.setAttribute(o,"aria-labelledby",l.id?l.id:null);t.appendChild(o);e<0&&(wijmo_1.hasClass(l,_CLS_ACTIVE)||"true"==l.getAttribute("aria-expanded"))&&(e=i)});e>-1?this.selectedIndex=e:this.selectedIndex>-1&&this.selectedIndex<this._panes.length&&this._updateContent();this._validateSelection()}_validateSelection(){let e=this.selectedPane;if(e&&(e.isDisabled||!e.isVisible)){let e=this._getNextIndex(this.selectedIndex,1);e<0&&(e=this._getNextIndex(this.selectedIndex,-1));this.selectedIndex=e}}_updateContent(){let e=wijmo_1.contains(this.hostElement,wijmo_1.getActiveElement()),t=this._selectedIndex,s=this._panes,i=[];s.forEach((s,l)=>{let o=s.header,n=l==t,a=wijmo_1.hasClass(o,_CLS_ACTIVE),r=n||a&&this._alExpandMany&&s!=this._hidePane,h=r&&!a,d=a&&!r;this._animated&&(h||d)&&i.push({show:h,pane:s});wijmo_1.setAttribute(o,"aria-expanded",r);this._animated||toggleActiveClass(o,r);if(n){e&&o.focus();this._szObserver||wijmo_1.Control.invalidateAll(s.content)}});this._updatePanesTabIndex();if(this._animated&&i.length){i.forEach(e=>{toggleActiveClass(e.pane.header,!0);e.height=e.pane.content.offsetHeight;e.show&&(e.pane.content.style.height="0")});this._toAnim=wijmo_1.animate(e=>{e<1?i.forEach(t=>{let s=t.height*(t.show?e:1-e);t.pane.content.style.height=s.toFixed(0)+"px"}):i.forEach(e=>{e.pane.content.style.height="";toggleActiveClass(e.pane.header,e.show)})})}this._hidePane=null}_updatePanesTabIndex(){this._panes.forEach((e,t)=>{e.header.tabIndex=this._selectedIndex!==t&&this._autoSwitch?-1:this._orgTabIndex})}_setTabOrder(e){super._setTabOrder(e);this._updatePanesTabIndex()}_click(e){let t=this._getPaneIndex(e.target);if(t>-1){let e=this._panes[t];if(!e.isDisabled&&e.isVisible){if(!wijmo_1.hasClass(e.header,_CLS_ACTIVE)||this._autoSwitching)this.selectedIndex=t;else{const s=this._getNextActiveIndex(t);if(s>-1||this._alCollapseAll){this._hidePane=e;this.selectedIndex=s}}}}}_keydown(e){if(!e.defaultPrevented){let t=this._getPaneIndex(wijmo_1.getActiveElement());if(t>-1){let s=this._getKeyCode(e);switch(s){case wijmo_1.Key.Left:case wijmo_1.Key.Up:case wijmo_1.Key.Right:case wijmo_1.Key.Down:case wijmo_1.Key.Home:case wijmo_1.Key.PageUp:case wijmo_1.Key.End:case wijmo_1.Key.PageDown:switch(s){case wijmo_1.Key.Left:case wijmo_1.Key.Up:t=this._getNextIndex(t,-1);break;case wijmo_1.Key.Right:case wijmo_1.Key.Down:t=this._getNextIndex(t,1);break;case wijmo_1.Key.Home:case wijmo_1.Key.PageUp:t=this._getNextIndex(-1,1);break;case wijmo_1.Key.End:case wijmo_1.Key.PageDown:t=this._getNextIndex(this._panes.length,-1)}if(t>-1){let e=this._panes[t];if(this._autoSwitch){this._autoSwitching=!0;e.header.click();this._autoSwitching=!1}else e.header.focus()}e.preventDefault();break;case wijmo_1.Key.Enter:case wijmo_1.Key.Space:if(t>-1){this._panes[t].header.click()}e.preventDefault()}}}}_getPaneIndex(e){let t=wijmo_1.closest(e,"."+exports.AccordionClsNames.header);if(t&&wijmo_1.closest(t,"."+exports.AccordionClsNames.hostElement)==this.hostElement)for(let e=0;e<this._panes.length;e++)if(this._panes[e].header==t)return e;return-1}_getNextIndex(e,t){for(let s=e+t;s>-1&&s<this._panes.length;s+=t){let e=this._panes[s];if(!e.isDisabled&&e.isVisible)return s}return-1}_getIndexOfPane(e){let t=-1;const s=this._panes;for(let i=0;i<s.length&&t<0;i++)s[i]==e&&(t=i);return t}_getNextActiveIndex(e){let t=-1;const s=this.panes;for(let i=1;i<s.length;i++){let l=(e+i)%s.length,o=s[l];if(wijmo_1.hasClass(o.header,_CLS_ACTIVE)){t=l;break}}return t}_togglePane(e,t){if(e.isCollapsed!==t&&e.isVisible&&!e.isDisabled)if(t){if(this.allowCollapseAll||this.panes.filter(e=>!e.isCollapsed).length>1){this._hidePane=e;const t=this._getIndexOfPane(e);this.selectedIndex=this._getNextActiveIndex(t)}}else this.selectedPane=e}dispose(){if(this._animated&&this._toAnim){clearInterval(this._toAnim);this._toAnim=null}this._panes.collectionChanged.removeHandler(this._populateControl,this);this._panes.forEach(e=>{e.dispose()});this._panes.clear();super.dispose()}}exports.Accordion=Accordion;class AccordionPane{constructor(e,t){this._hdr=wijmo_1.asType(wijmo_1.getElement(e),HTMLElement);this._content=wijmo_1.asType(wijmo_1.getElement(t),HTMLElement)}get accordion(){return this._acc}get header(){return this._hdr}get content(){return this._content}get isDisabled(){return wijmo_1.hasClass(this._hdr,wijmo_1.ControlStateClsNames.disabled)}set isDisabled(e){wijmo_1.toggleClass(this._hdr,wijmo_1.ControlStateClsNames.disabled,wijmo_1.asBoolean(e));this._acc&&this._acc._validateSelection()}get isVisible(){return"none"!=this._hdr.style.display}set isVisible(e){this._hdr.style.display=wijmo_1.asBoolean(e)?"":"none";this._acc&&this._acc._validateSelection()}get isCollapsed(){return!wijmo_1.hasClass(this._hdr,_CLS_ACTIVE)}set isCollapsed(e){const t=this._acc;t?t._togglePane(this,e):toggleActiveClass(this._hdr,!wijmo_1.asBoolean(e))}_setParts(e,t){e=wijmo_1.asType(wijmo_1.getElement(e),HTMLElement);t=wijmo_1.asType(wijmo_1.getElement(t),HTMLElement,!1);if(this._hdr!==e||this._content!==t){let s=this.isDisabled,i=this.isVisible;this._hdr=e;this._content=t;this.isDisabled=s;this.isVisible=i;let l=this.accordion;l&&!l.panes.isUpdating&&l._populateControl()}}_setAccordion(e){this._acc=e}dispose(){this._hdr=null;this._content=null;this._acc=null}}exports.AccordionPane=AccordionPane;function toggleActiveClass(e,t){wijmo_1.toggleClass(e,_CLS_ACTIVE,t);wijmo_1.toggleClass(e.nextElementSibling,exports.AccordionClsNames.activeContent,t)}class FormatNodeEventArgs extends wijmo_1.EventArgs{constructor(e,t,s){super();this._data=e;this._e=wijmo_1.asType(t,HTMLElement);this._level=s}get dataItem(){return this._data}get element(){return this._e}get level(){return this._level}}exports.FormatNodeEventArgs=FormatNodeEventArgs;class TreeNodeEventArgs extends wijmo_1.CancelEventArgs{constructor(e){super();this._node=e}get node(){return this._node}}exports.TreeNodeEventArgs=TreeNodeEventArgs;class TreeNodeDragDropEventArgs extends wijmo_1.CancelEventArgs{constructor(e,t,s){super();this._src=wijmo_1.asType(e,TreeNode);this._tgt=wijmo_1.asType(t,TreeNode);this._pos=s}get dragSource(){return this._src}get dropTarget(){return this._tgt}get position(){return this._pos}set position(e){this._pos=wijmo_1.asEnum(e,DropPosition)}}exports.TreeNodeDragDropEventArgs=TreeNodeDragDropEventArgs;var DropPosition;!function(e){e[e.Before=0]="Before";e[e.After=1]="After";e[e.Into=2]="Into"}(DropPosition=exports.DropPosition||(exports.DropPosition={}));class TreeNode{constructor(e,t){if(wijmo_1.hasClass(t,exports.TreeViewClsNames.hostElement)){e=wijmo_1.Control.getControl(t);t=null}else TreeNode._assertNode(t);if(t&&t[TreeNode.CacheKey]&&t[TreeNode.CacheKey]._t==e)return t[TreeNode.CacheKey];t&&(t[TreeNode.CacheKey]=this);this._t=e;this._e=t}get dataItem(){return this._e[TreeView._DATAITEM_KEY]}get element(){return this._e}get treeView(){return this._t}ensureVisible(){let e=!!this.parentNode&&this.parentNode.isCollapsed;this.treeView._scrollNode=this;for(let e=this.parentNode;e;e=e.parentNode)e.isCollapsed=!1;this.treeView.isAnimated&&e||this._scrollIntoView()}_scrollIntoView(){if(!this.treeView._scrollNode)return;let e=this._t.hostElement,t=this.treeView._scrollNode.element.getBoundingClientRect(),s=e.getBoundingClientRect();const i=e.offsetHeight-e.clientHeight;t.bottom>s.bottom-i?e.scrollTop+=t.bottom-(s.bottom-i):t.top<s.top&&(e.scrollTop-=s.top-t.top);this.treeView._scrollNode=null}equals(e){return null!=e&&e.element==this.element}get isSelected(){let e=this._t;return e.selectedNode==this||e.selectedNodes.includes(this)}select(e=!1){let t=this._t,s=t._selNode;if(!this.equals(s)){if(s){wijmo_1.removeClass(s.element,TreeView._CSEL);wijmo_1.setAttribute(s.element,"aria-selected",!1)}t._selNode=this;wijmo_1.addClass(this.element,TreeView._CSEL);wijmo_1.setAttribute(this.element,"aria-selected",!0);this.ensureVisible();if(t.allowMultiSelect&&!t.selectedNodes.includes(this))t.selectedNodes.push(this);else if(!t.selectedNodes.includes(this)){t.selectedNodes.beginUpdate();t.selectedNodes.clear();t.selectedNodes.push(this);t.selectedNodes.endUpdate(!0)}t._updateFocus(s);e||t.onSelectedItemChanged()}}deSelect(e=!1){if(!this.isSelected)return;let t=this._t;wijmo_1.removeClass(this.element,TreeView._CSEL);wijmo_1.setAttribute(this.element,"aria-selected",!1);t.selectedNodes.remove(this);t.selectedNode==this?e?t._selNode=null:t.selectedNode=null:e||t.onSelectedItemChanged()}get index(){let e=0;for(let t=this._pse(this.element);t;t=this._pse(t))TreeNode._isNode(t)&&e++;return e}get parentNode(){let e=null;if(this._e){let t=this._e.parentElement;TreeNode._assertNodeList(t);e=this._pse(t)}return e?new TreeNode(this._t,e):null}get level(){let e=-1;for(let t=this;t;t=t.parentNode)e++;return e}get hasChildren(){return TreeNode._isNode(this._e)&&!TreeNode._isEmpty(this._e)}get hasPendingChildren(){return this.isCollapsed&&this.hasChildren&&!TreeNode._isNodeList(this.element.nextElementSibling)&&wijmo_1.isFunction(this._t.lazyLoadFunction)}get nodes(){return this.hasChildren?TreeNode._getChildNodes(this._t,this._e.nextSibling):null}get checkBox(){return this._e.querySelector("input."+TreeView._CNDC)}get isCollapsed(){return this.hasChildren&&wijmo_1.hasClass(this._e,TreeView._CCLD)}set isCollapsed(e){if(e!=this.isCollapsed){let t=this._t,s=new TreeNodeEventArgs(this);if(t.onIsCollapsedChanging(s)){this.setCollapsed(wijmo_1.asBoolean(e),t.isAnimated,t.autoCollapse);t.onIsCollapsedChanged(s)}}}get isChecked(){let e=this.checkBox;return e&&!e.indeterminate?e.checked:null}set isChecked(e){if(e!=this.isChecked){let t=this._t,s=new TreeNodeEventArgs(this);if(t.onIsCheckedChanging(s)){this.setChecked(wijmo_1.asBoolean(e),!0);t.onIsCheckedChanged(s)}}}get isDisabled(){return this._e&&null!=this._e.getAttribute("disabled")}set isDisabled(e){if((e=wijmo_1.asBoolean(e,!0))!=this.isDisabled){wijmo_1.enable(this._e,!e);this.isDisabled&&this._t&&this._t.collapseWhenDisabled&&(this.isCollapsed=!0)}}previous(e,t){let s=this._pse(this._e);!s&&TreeNode._isNodeList(this._e.parentElement)&&(s=this._pse(this._e.parentElement));if(TreeNode._isNodeList(s)){for(;TreeNode._isNodeList(s)&&s.childElementCount;)s=s.lastChild;TreeNode._isNodeList(s)&&(s=this._pse(s))}let i=TreeNode._isNode(s)?new TreeNode(this._t,s):null;e&&i&&!i.element.offsetHeight&&(i=i.previous(e,t));t&&i&&i.isDisabled&&(i=i.previous(e,t));return i}next(e,t){let s=this._e.nextSibling;TreeNode._isNodeList(s)&&(s=s.childElementCount?s.firstChild:s.nextSibling);if(!s)for(let e=this._e.parentElement;!s&&TreeNode._isNodeList(e);e=e.parentElement)s=e.nextSibling;let i=TreeNode._isNode(s)?new TreeNode(this._t,s):null;e&&i&&!i.element.offsetHeight&&(i=i.next(e,t));t&&i&&i.isDisabled&&(i=i.next(e,t));return i}previousSibling(){let e=this._pse(this.element);for(;TreeNode._isNodeList(e);)e=this._pse(e);return e?new TreeNode(this._t,e):null}nextSibling(){let e=this.element.nextSibling;TreeNode._isNodeList(e)&&(e=e.nextSibling);return e?new TreeNode(this._t,e):null}setCollapsed(e,t,s){let i=this._t,l=this._e,o=this._e.nextElementSibling,n=TreeNode._isNodeList(o);wijmo_1.setAttribute(l,"aria-expanded",n?(!e).toString():null);if(e!=this.isCollapsed)if(e||n||!wijmo_1.isFunction(i.lazyLoadFunction)){null==t&&(t=i.isAnimated);null==s&&(s=i.autoCollapse);if(t){if(n){let t=o.offsetHeight,s=o.style,n=i.hostElement,a=n.style;n.scrollHeight<=n.clientHeight&&(a.overflowY="hidden");if(e){wijmo_1.toggleClass(l,TreeView._CCLG,!0);wijmo_1.animate(e=>{if(e<1){e=1-e;s.height=(e*t).toFixed(0)+"px"}else{s.height=s.opacity=a.overflowY="";wijmo_1.toggleClass(l,TreeView._CCLD,!0);wijmo_1.toggleClass(l,TreeView._CCLG,!1)}},TreeView._AN_DLY)}else{wijmo_1.toggleClass(l,TreeView._CCLD,!1);s.height=s.opacity="0";wijmo_1.animate(e=>{s.height=e>=1?s.opacity=a.overflowY="":(e*t).toFixed(0)+"px"},TreeView._AN_DLY,void 0,()=>{this._scrollIntoView()})}}}else wijmo_1.toggleClass(l,TreeView._CCLD,e);if(!e&&s){let e=l.parentElement;if(TreeNode._isNodeList(e))for(let t=0;t<e.children.length;t++){let s=e.children[t];if(s!=l&&TreeNode._isNode(s)){wijmo_1.toggleClass(s,TreeView._CCLD,!0);s.setAttribute("aria-expanded","false")}}}this.element}else i._lazyLoadNode(this)}setChecked(e,t){let s=this.checkBox,i=s.checked!=e;wijmo_1.setChecked(s,e);if(this.hasChildren)for(var l=0;l<this.nodes.length;l++)this.nodes[l].setChecked(e,!1);let o=this._t;o&&o.checkedMemberPath&&o._chkPath.setValue(this.dataItem,this.level,e);if(t){let e=this.parentNode;e&&e._updateCheckedState()}o&&i&&o._raiseCheckedItemsChanged()}remove(){let e=this._t,t=this.parentNode,s=this._getArray(),i=s.indexOf(this.dataItem);e.selectedNode==this&&(e.selectedNode=this.nextSibling()||this.previousSibling()||t);let l=this.element.nextSibling;TreeNode._isNodeList(l)&&wijmo_1.removeChild(l);wijmo_1.removeChild(this.element);t&&t._updateState();s.splice(i,1);this._t=null}addChildNode(e,t){let s=this._t._createNode(t),i=this.nodes;i?e<i.length?s.move(i[e],DropPosition.Before):s.move(i[i.length-1],DropPosition.After):s.move(this,DropPosition.Into);return s}refresh(e){let t=this._getArray();e&&(t[this.index]=e);e=t[this.index];let s=this._t._createNode(e),i=this.hasChildren&&!this.hasPendingChildren?this.element.nextSibling:null;i&&wijmo_1.removeChild(i);i=s.hasChildren&&!s.hasPendingChildren?s.element.nextSibling:null;i&&this.element.parentElement.insertBefore(i,this.element.nextSibling);this.element.innerHTML=s.element.innerHTML;this._updateState()}move(e,t){if(e instanceof TreeNode&&this._contains(e))return!1;let s=this.parentNode,i=this._getArray();this._moveElements(e,t);e.treeView&&(this._t=e.treeView);s&&s._updateState();let l=this.parentNode;l&&l._updateState();let o=this.dataItem,n=i.indexOf(o),a=this._getArray();i.splice(n,1);a.splice(this.index,0,o);return!0}get itemsSource(){return this._getArray()}_pse(e){return e.previousElementSibling}_contains(e){for(;e;e=e.parentNode)if(e.element==this.element)return!0;return!1}_getArray(){let e=this._t,t=this.parentNode,s=e.itemsSource;if(t){let i=e._itmPath;s=i.getValue(t.dataItem,this.level);if(!s){s=[];i.setValue(t.dataItem,this.level,s)}}return s}_moveElements(e,t){let s=document.createDocumentFragment(),i=this.hasChildren&&!this.hasPendingChildren?this.element.nextSibling:null;s.appendChild(this.element);if(i){TreeNode._assertNodeList(i);s.appendChild(i)}if(e instanceof TreeView){e._root.insertBefore(s,null);return}let l=e.element,o=l?l.parentElement:e.treeView._root;TreeNode._assertNodeList(o);let n=DropPosition;switch(t){case n.Before:o.insertBefore(s,l);break;case n.After:l=(e=e.nextSibling())?e.element:null;o.insertBefore(s,l);break;case n.Into:if(!e.hasChildren||e.hasPendingChildren){i=document.createElement("div");wijmo_1.addClass(i,TreeView._CNDL);o.insertBefore(i,l.nextSibling)}o=e.element.nextSibling;TreeNode._assertNodeList(o);o.insertBefore(s,null)}}_updateState(){this._updateEmptyState();this._updateCheckedState()}_updateEmptyState(){let e=this.element.nextSibling,t=!1;TreeNode._isNodeList(e)&&(e.childElementCount?t=!0:wijmo_1.removeChild(e));wijmo_1.toggleClass(this.element,TreeView._CEMP,!t);t||this.element.removeAttribute("aria-expanded")}_updateCheckedState(){let e=this._t,t=this.checkBox,s=this.nodes,i=0,l=0,o=!1;if(t&&s){for(let e=0;e<s.length&&!o;e++){switch(s[e].isChecked){case!0:i++;break;case!1:l++;break;case null:o=!0}i&&l&&(o=!0)}wijmo_1.setChecked(t,o?null:i>0);if(e&&e.checkedMemberPath){let s=o?null:t.checked;e._chkPath.setValue(this.dataItem,this.level,s)}}let n=this.parentNode;n&&n._updateCheckedState()}dispose(){delete this._e[TreeNode.CacheKey];this._t=null;let e=this._e.nextElementSibling;TreeNode._isNodeList(e)&&e.parentNode&&e.parentNode.removeChild(e);this.nodes&&this.nodes.forEach(e=>{e.dispose()});this._e.innerHTML="";this._e=null}static _getChildNodes(e,t){let s=[];if(TreeNode._isNodeList(t)){let i=t.children;for(let t=0;t<i.length;t++){let l=i[t];TreeNode._isNode(l)&&s.push(new TreeNode(e,l))}}return s}static _isNode(e){return e&&wijmo_1.hasClass(e,TreeView._CND)}static _isNodeList(e){return e&&wijmo_1.hasClass(e,TreeView._CNDL)}static _isEmpty(e){return TreeNode._isNode(e)&&wijmo_1.hasClass(e,TreeView._CEMP)}static _isCollapsed(e){return TreeNode._isNode(e)&&!TreeNode._isEmpty(e)&&wijmo_1.hasClass(e,TreeView._CCLD)}static _assertNode(e){wijmo_1.assert(TreeNode._isNode(e),"node expected")}static _assertNodeList(e){wijmo_1.assert(TreeNode._isNodeList(e),"nodeList expected")}}TreeNode.CacheKey="$_WJ_TV_NODE";exports.TreeNode=TreeNode;class _BindingArray{constructor(e){this.path=e}get path(){return this._path}set path(e){this._path=e;if(wijmo_1.isString(e))this._bindings=[new wijmo_1.Binding(e)];else if(wijmo_1.isArray(e)){this._bindings=[];for(let t=0;t<e.length;t++)this._bindings.push(new wijmo_1.Binding(e[t]))}else null!=e&&wijmo_1.assert(!1,"Path should be a string or an array of strings.");this._maxLevel=this._bindings?this._bindings.length-1:-1}getValue(e,t){let s=Math.min(t,this._maxLevel);return s>-1?this._bindings[s].getValue(e):null}setValue(e,t,s){let i=Math.min(t,this._maxLevel);i>-1&&this._bindings[i].setValue(e,s)}}exports._BindingArray=_BindingArray;class TreeView extends wijmo_1.Control{constructor(e,t={}){super(e);this._selNodes=new wijmo_1.ObservableArray;this._itmPath=new _BindingArray("items");this._chkPath=new _BindingArray;this._dspPath=new _BindingArray("header");this._imgPath=new _BindingArray;this._html=!1;this._animated=!0;this._chkOnClick=!1;this._collOnClick=!1;this._xpndOnClick=!0;this._xpndOnLoad=!0;this._autoColl=!0;this._showChk=!1;this._collapseWhenDisabled=!0;this._srch="";this._isReadOnly=!0;this._preserveSelNode=!1;this._allowMultiSelect=!1;this.itemsSourceChanged=new wijmo_1.Event;this.loadingItems=new wijmo_1.Event;this.loadedItems=new wijmo_1.Event;this.itemClicked=new wijmo_1.Event;this.selectedItemChanged=new wijmo_1.Event;this.checkedItemsChanged=new wijmo_1.Event;this.isCollapsedChanging=new wijmo_1.Event;this.isCollapsedChanged=new wijmo_1.Event;this.isCheckedChanging=new wijmo_1.Event;this.isCheckedChanged=new wijmo_1.Event;this.formatItem=new wijmo_1.Event(()=>{this.invalidate()});this.dragStart=new wijmo_1.Event;this.dragOver=new wijmo_1.Event;this.drop=new wijmo_1.Event;this.dragEnd=new wijmo_1.Event;this.nodeEditStarting=new wijmo_1.Event;this.nodeEditStarted=new wijmo_1.Event;this.nodeEditEnding=new wijmo_1.Event;this.nodeEditEnded=new wijmo_1.Event;this.options=t;let s=this.getTemplate();this.applyTemplate(`${wijmo_1.ControlClsNames.hostElement} ${wijmo_1.ControlClsNames.content} ${exports.TreeViewClsNames.hostElement}`,s,{_root:"root"});let i=this.hostElement;wijmo_1.setAttribute(i,"role","tree",!0);wijmo_1.addClass(this._root,TreeView._CNDL);wijmo_1.setAttribute(this._root,"role","group",!0);this.addEventListener(i,"mousedown",this._mousedown.bind(this));this.addEventListener(i,"click",this._click.bind(this));this.addEventListener(i,"keydown",this._keydown.bind(this));this.addEventListener(i,"keypress",this._keypress.bind(this));this.addEventListener(i,"wheel",e=>{i.scrollHeight>i.offsetHeight&&(e.deltaY<0&&0==i.scrollTop||e.deltaY>0&&i.scrollTop+i.offsetHeight>=i.scrollHeight)&&e.preventDefault()});this.addEventListener(i,"blur",()=>{this._edtNode&&!wijmo_1.contains(this._edtNode.element,wijmo_1.getActiveElement())&&this.finishEditing()},!0);this.addEventListener(i,"paste",e=>{if(this._edtNode&&!this.isContentHtml){let t=(e.clipboardData||window.clipboardData).getData("text"),s=window.getSelection();if(t&&s.rangeCount){s.deleteFromDocument();s.getRangeAt(0).insertNode(document.createTextNode(t));e.preventDefault()}}});this._selNodes.collectionChanged.addHandler((e,t)=>{switch(t.action){case wijmo_1.NotifyCollectionChangedAction.Add:wijmo_1.addClass(t.item.element,TreeView._CMSEL);break;case wijmo_1.NotifyCollectionChangedAction.Remove:wijmo_1.removeClass(t.item.element,TreeView._CMSEL);break;case wijmo_1.NotifyCollectionChangedAction.Change:wijmo_1.addClass(t.item.element,TreeView._CMSEL);break;case wijmo_1.NotifyCollectionChangedAction.Reset:this.hostElement.querySelectorAll("."+TreeView._CMSEL).forEach(e=>wijmo_1.removeClass(e,TreeView._CMSEL))}});this.initialize(t);this.refresh()}static get controlTemplate(){TreeView._ctrlTemplate||(TreeView._ctrlTemplate='<div wj-part="root"></div>');return TreeView._ctrlTemplate}static set controlTemplate(e){TreeView._ctrlTemplate=e}get itemsSource(){return this._items}set itemsSource(e){if(this._items!=e){this._items=wijmo_1.asArray(e);this.onItemsSourceChanged();this._srcChanged=!0;this._reload()}}get childItemsPath(){return this._itmPath.path}set childItemsPath(e){if(e!=this.childItemsPath){this._itmPath.path=e;this._reload()}}get displayMemberPath(){return this._dspPath.path}set displayMemberPath(e){if(e!=this.displayMemberPath){this._dspPath.path=e;this._reload()}}get imageMemberPath(){return this._imgPath.path}set imageMemberPath(e){if(e!=this.imageMemberPath){this._imgPath.path=e;this._reload()}}get checkedMemberPath(){return this._chkPath.path}set checkedMemberPath(e){if(e!=this.checkedMemberPath){this._chkPath.path=e;this._reload()}}get isContentHtml(){return this._html}set isContentHtml(e){if(e!=this._html){this._html=wijmo_1.asBoolean(e);this._reload()}}get showCheckboxes(){return this._showChk}set showCheckboxes(e){if(e!=this._showChk){this._showChk=wijmo_1.asBoolean(e);this._reload()}}get autoCollapse(){return this._autoColl}set autoCollapse(e){this._autoColl=wijmo_1.asBoolean(e)}get collapseWhenDisabled(){return this._collapseWhenDisabled}set collapseWhenDisabled(e){this._collapseWhenDisabled=wijmo_1.asBoolean(e)}get isAnimated(){return this._animated}set isAnimated(e){this._animated=wijmo_1.asBoolean(e);wijmo_1.toggleClass(this.hostElement,wijmo_1.UtilitesClsNames.animated,this._animated)}get isReadOnly(){return this._isReadOnly}set isReadOnly(e){this._isReadOnly=wijmo_1.asBoolean(e);wijmo_1.toggleClass(this.hostElement,wijmo_1.ControlStateClsNames.readOnly,this.isReadOnly)}startEditing(e){this._prevDragState=this.allowDragging;if(this.isReadOnly)return!1;e||(e=this.selectedNode);if(!e||e.isDisabled)return!1;if(!this.finishEditing())return!1;let t=e.element.querySelector("."+TreeView._CNDT);if(!t)return!1;let s=new TreeNodeEventArgs(e);if(!this.onNodeEditStarting(s))return!1;t.tabIndex=0;t.focus();t.contentEditable="true";t.style.cursor="auto";let i=document.createRange();i.selectNodeContents(t);let l=getSelection();l.removeAllRanges();l.addRange(i);this.allowDragging=!this.isTxtSelected(t);t.focus();wijmo_1.setAttribute(t,"autocomplete","off");wijmo_1.setAttribute(t,"autocorrect","off");this._edtNode=e;this.onNodeEditStarted(s);return!0}finishEditing(e){let t=this._edtNode;if(t){let s=t.element.querySelector("."+TreeView._CNDT);if(!s)return!1;let i=new TreeNodeEventArgs(t);if(!this.onNodeEditEnding(i))return!1;let l=t.dataItem,o=t.level;this.isContentHtml?e?s.innerHTML=this._dspPath.getValue(l,o):this._dspPath.setValue(l,o,s.innerHTML):e?s.textContent=this._dspPath.getValue(l,o):this._dspPath.setValue(l,o,s.textContent);document.createRange().selectNodeContents(s);getSelection().removeAllRanges();s.contentEditable="false";s.style.cursor="";this.allowDragging=this._prevDragState;this._edtNode=null;this.onNodeEditEnded(i)}return!0}get allowDragging(){return null!=this._dd}set allowDragging(e){if(e!=this.allowDragging){if(wijmo_1.asBoolean(e))this._dd=new _TreeDragDropManager(this);else{this._dd.dispose();this._dd=null}let t=this.hostElement.querySelectorAll("."+TreeView._CND);for(let e=0;e<t.length;e++){let s=t[e];wijmo_1.setAttribute(s,"draggable",!!this._dd||null)}}}get checkOnClick(){return this._chkOnClick}set checkOnClick(e){this._chkOnClick=wijmo_1.asBoolean(e)}get expandOnClick(){return this._xpndOnClick}set expandOnClick(e){this._xpndOnClick=wijmo_1.asBoolean(e)}get collapseOnClick(){return this._collOnClick}set collapseOnClick(e){this._collOnClick=wijmo_1.asBoolean(e)}get expandOnLoad(){return this._xpndOnLoad}set expandOnLoad(e){this._xpndOnLoad=wijmo_1.asBoolean(e)}get selectedItem(){return this._selNode?this._selNode.dataItem:null}set selectedItem(e){if(e!=this.selectedItem){this._isDirty&&this.refresh();this.selectedNode=e?this.getNode(e):null}}get selectedNode(){return this._selNode}set selectedNode(e){if(e!=this.selectedNode){this._prevSel=this._selNode;if(e)e.select();else if(this._selNode){var t=this._selNode.element;wijmo_1.removeClass(t,TreeView._CSEL);wijmo_1.setAttribute(t,"aria-selected",!1);this._selNode=null;this._updateFocus(this._prevSel);this.onSelectedItemChanged()}}}get selectedPath(){let e=[];for(let t=this.selectedNode;t;t=t.parentNode){let s=this._dspPath.getValue(t.dataItem,t.level);e.splice(0,0,s)}return e}get checkedItems(){if(null==this._chkItems){let e=TreeView,t="."+e._CND+"."+e._CEMP+" > input:checked."+e._CNDC,s=this._root.querySelectorAll(t);this._chkItems=[];for(let t=0;t<s.length;t++){let i=s[t].parentElement[e._DATAITEM_KEY];this._chkItems.push(i)}}return this._chkItems}set checkedItems(e){if(this.showCheckboxes){this._isDirty&&this.refresh();let t=TreeView,s="."+t._CND+"."+t._CEMP,i=this._root.querySelectorAll(s);for(let t=0;t<i.length;t++){let s=new TreeNode(this,i[t]),l=e.indexOf(s.dataItem)>-1;s.isChecked!=l&&(s.isChecked=l)}}}checkAllItems(e){if(this.showCheckboxes){let t=TreeView,s="."+t._CND+"."+t._CEMP,i=this._root.querySelectorAll(s);for(let t=0;t<i.length;t++){let s=new TreeNode(this,i[t]);s.isChecked!=e&&(s.isChecked=e)}}}get totalItemCount(){return this.hostElement.querySelectorAll("."+TreeView._CND).length}get lazyLoadFunction(){return this._lazyLoad}set lazyLoadFunction(e){if(e!=this._lazyLoad){this._lazyLoad=wijmo_1.asFunction(e);this._reload()}}get preserveSelectedNode(){return this._preserveSelNode}set preserveSelectedNode(e){this._preserveSelNode=wijmo_1.asBoolean(e,!1)}get selectedNodes(){return this._selNodes}get allowMultiSelect(){return this._allowMultiSelect}set allowMultiSelect(e){this._allowMultiSelect=wijmo_1.asBoolean(e,!1);this._allowMultiSelect&&this.selectedNodes.forEach(e=>wijmo_1.addClass(e.element,TreeView._CMSEL))}getFirstNode(e,t){let s=this.hostElement.querySelector("."+TreeView._CND),i=s?new TreeNode(this,s):null;e&&i&&!i.element.offsetHeight&&(i=i.next(e,t));t&&i&&i.isDisabled&&(i=i.next(e,t));return i}getLastNode(e,t){let s=this.hostElement.querySelectorAll("."+TreeView._CND+":last-child"),i=s.length?new TreeNode(this,s[s.length-1]):null;e&&i&&!i.element.offsetHeight&&(i=i.previous(e,t));t&&i&&i.isDisabled&&(i=i.previous(e,t));return i}get nodes(){return TreeNode._getChildNodes(this,this._root)}getNode(e){this._isDirty&&this._loadTree();let t=this.hostElement.querySelectorAll("."+TreeView._CND);for(let s=0;s<t.length;s++){let i=t[s];if(i[TreeView._DATAITEM_KEY]==e)return new TreeNode(this,i)}return null}addChildNode(e,t){let s=this._createNode(t),i=this.nodes;i?e<i.length?s.move(i[e],DropPosition.Before):s.move(i[i.length-1],DropPosition.After):s.move(this,DropPosition.Into);return s}collapseToLevel(e){let t=this._animated,s=this._autoColl;this._animated=this._autoColl=!1;this._collapseToLevel(this.nodes,e,0);this._animated=t;this._autoColl=s}loadTree(e){this._loadTree(e)}onItemsSourceChanged(e){this.itemsSourceChanged.raise(this,e)}onLoadingItems(e){this.loadingItems.raise(this,e);return!e.cancel}onLoadedItems(e){this.loadedItems.raise(this,e)}onItemClicked(e){this.itemClicked.raise(this,e)}onSelectedItemChanged(e){this.selectedItemChanged.raise(this,e)}onCheckedItemsChanged(e){this._chkItems=null;this.checkedItemsChanged.raise(this,e)}onIsCollapsedChanging(e){this.isCollapsedChanging.raise(this,e);return!e.cancel}onIsCollapsedChanged(e){this.isCollapsedChanged.raise(this,e)}onIsCheckedChanging(e){this.isCheckedChanging.raise(this,e);return!e.cancel}onIsCheckedChanged(e){this.isCheckedChanged.raise(this,e)}onFormatItem(e){this.formatItem.raise(this,e)}onDragStart(e){this.dragStart.raise(this,e);return!e.cancel}onDragOver(e){this.dragOver.raise(this,e);return!e.cancel}onDrop(e){this.drop.raise(this,e);return!e.cancel}onDragEnd(e){this.dragEnd.raise(this,e)}onNodeEditStarting(e){this.nodeEditStarting.raise(this,e);return!e.cancel}onNodeEditStarted(e){this.nodeEditStarted.raise(this,e)}onNodeEditEnding(e){this.nodeEditEnding.raise(this,e);return!e.cancel}onNodeEditEnded(e){this.nodeEditEnded.raise(this,e)}refresh(e=!0){super.refresh(e);this.isUpdating||!this._isDirty||this.disposed||this._loadTree(!0)}_updateFocus(e){this._updateTabIndex();if(this.containsFocus()){let e=this._selNode;e?e.element.focus():this.hostElement.focus()}e&&(e.element.tabIndex=-1)}_updateTabIndex(){let e=this._selNode;e&&(e.element.tabIndex=this._orgTabIndex);this.hostElement.tabIndex=e||this.isDisabled?-1:this._orgTabIndex}_setTabOrder(e){this._orgTabIndex=e;this._updateTabIndex()}_raiseCheckedItemsChanged(){this._toItemsChanged&&clearTimeout(this._toItemsChanged);this._toItemsChanged=setTimeout(()=>{this._toItemsChanged=null;this.onCheckedItemsChanged()},10)}_reload(){this._isDirty=!0;this.invalidate()}_createNode(e){const t=Object.assign({},this.options);this.formatItem&&(t.formatItem=this.formatItem.getHandler());return new TreeView(document.createElement("div"),Object.assign({},t,{expandOnLoad:this.expandOnLoad,allowDragging:this.allowDragging,lazyLoadFunction:this.lazyLoadFunction,childItemsPath:this.childItemsPath,displayMemberPath:this.displayMemberPath,imageMemberPath:this.imageMemberPath,isContentHtml:this.isContentHtml,showCheckboxes:this.showCheckboxes,itemsSource:[e]})).getFirstNode()}_getCollapseIconWidthBounds(e){const t=getComputedStyle(e,":before"),s=parseFloat(getComputedStyle(e).paddingLeft);let i=0,l=0;if("auto"!==t.width)if("none"==t.transform){i=s;l=parseFloat(t.width)+s}else{const e=parseFloat(t.height),o=(parseFloat(t.width)-e)/2;i=s+o;l=parseFloat(t.height)+s+o}else;if(this.rightToLeft){const t=l-i;l=e.clientWidth-i;i=l-t}return{left:i,right:l}}_mousedown(e){if(!e.defaultPrevented){let t=wijmo_1.closestClass(e.target,TreeView._CND),s=t?new TreeNode(this,t):null;if(s&&!s.isDisabled){const i=this._getCollapseIconWidthBounds(t),l=t==e.target&&e.offsetX>=i.left&&e.offsetX<=i.right;if(!this.preserveSelectedNode||!l)if((e.ctrlKey||e.metaKey)&&this.allowMultiSelect)s.isSelected?s.deSelect():s.select();else if(e.shiftKey&&this.allowMultiSelect){let e=this.selectedNode;e||(e=this._prevSel);if(e){const t=this._getNodesBetween(s.element,e.element),i=new Set(this.selectedNodes);for(let e=t.length-1;e>=0;e--){const s=new TreeNode(this,t[e]);i.has(s)?i.delete(s):s.select(!0)}const l=e.equals(this.selectedNode)&&i.size>0;Array.from(i).forEach(e=>e.deSelect(!0));e.select();l&&this.onSelectedItemChanged()}}else{s.isSelected?this._prevSel=s:this._clearMultiSelectedNodes();this.selectedNode=s;s.select()}}}}_getNodesBetween(e,t){let s=e,i=t;if(this._getOffsetFromRoot(s)>this._getOffsetFromRoot(t)){s=t;i=e}const l=[],o=this.hostElement.querySelectorAll("."+TreeView._CND);let n=!1;for(let e=o.length-1;e>=0;e--){const t=o[e];t==i&&(n=!0);n&&l.unshift(t);if(t==s)break}return l}_getOffsetFromRoot(e){let t=0;for(;e!=this.hostElement;){t+=e.offsetTop;e=e.parentElement}return t}_checkCollapseIconClick(e){if(e.defaultPrevented)return;let t=wijmo_1.closestClass(e.target,TreeView._CND),s=t?new TreeNode(this,t):null;if(s&&!s.isDisabled){const i=this._getCollapseIconWidthBounds(t),l=t==e.target&&e.offsetX>=i.left&&e.offsetX<=i.right;if(this.preserveSelectedNode&&l){(e.ctrlKey||e.metaKey)&&!s.hasPendingChildren?this.collapseToLevel(s.isCollapsed?s.level+1:s.level):s.isCollapsed=!s.isCollapsed;this.isAnimated?this._setFocusTimer=setTimeout(()=>{this.focus()},TreeView._AN_DLY+wijmo_1.Control._ANIM_DEF_STEP):this.focus();e.preventDefault()}}}_click(e){this._checkCollapseIconClick(e);if(!e.defaultPrevented){let t=wijmo_1.closestClass(e.target,TreeView._CND);if(t){let s=new TreeNode(this,t),i="input."+TreeView._CNDC,l=wijmo_1.closest(e.target,i),o=t.getBoundingClientRect(),n=this.rightToLeft?o.right-e.clientX:e.clientX-o.left;if(s.isDisabled)return;if(!l&&s.equals(this._edtNode))return;!l&&this._chkOnClick&&(!s.hasChildren||n>t.offsetHeight)&&(l=t.querySelector(i));let a=this._prevSel;const r=(e.shiftKey||e.ctrlKey||e.metaKey)&&this.allowMultiSelect;if(!r){this.selectedNode=s;this._clearMultiSelectedNodes(!0)}t.focus();if(l){e.preventDefault();e.stopPropagation();this._updateCheckedTimer=setTimeout(()=>{s.isChecked=!s.isChecked})}if(!l){let i=(e.ctrlKey||e.metaKey)&&!s.hasPendingChildren,l=s.isCollapsed,o=!1;if(s.hasChildren)if(n<=t.offsetHeight){o=!0;i?this.collapseToLevel(l?s.level+1:s.level):s.isCollapsed=!l}else if(this.expandOnClick&&l){o=!0;i?this.collapseToLevel(s.level+1):s.isCollapsed=!1}else if(this.collapseOnClick&&!l){o=!0;i?this.collapseToLevel(s.level):s.isCollapsed=!0}o&&i&&this.selectedNode&&this.selectedNode.ensureVisible();if(!o&&!this.isReadOnly&&!r){let e=this.selectedNode;e&&e.equals(a)&&this.startEditing()}}this.selectedItem&&this.onItemClicked()}}}_keydown(e){if(!e.defaultPrevented){let t,s=this._getKeyCode(e),i=this._selNode,l=!0;if(!i)switch(s){case wijmo_1.Key.Up:case wijmo_1.Key.Down:case wijmo_1.Key.Left:case wijmo_1.Key.Right:case wijmo_1.Key.Enter:case wijmo_1.Key.Home:case wijmo_1.Key.End:t=this.getFirstNode(!0,!0);if(t){this.selectedNode=t;e.preventDefault();return}}if(i&&!i.isDisabled){switch(s){case wijmo_1.Key.F2:this.startEditing();e.preventDefault();break;case wijmo_1.Key.Escape:this.finishEditing(!0);e.preventDefault();break;case wijmo_1.Key.Up:case wijmo_1.Key.Down:this.finishEditing();break;case wijmo_1.Key.Enter:if(this._edtNode){this.finishEditing();s=wijmo_1.Key.Down}else{this.startEditing();e.preventDefault()}}if(this._edtNode)return;if(this.rightToLeft)switch(s){case wijmo_1.Key.Left:s=wijmo_1.Key.Right;break;case wijmo_1.Key.Right:s=wijmo_1.Key.Left}switch(s){case wijmo_1.Key.Left:if(!i.isCollapsed&&i.hasChildren)i.isCollapsed=!0;else{i=i.parentNode;i&&i.select()}break;case wijmo_1.Key.Right:i.isCollapsed&&i.hasChildren&&(i.isCollapsed=!1);break;case wijmo_1.Key.Up:t=i.previous(!0,!0);break;case wijmo_1.Key.Down:t=i.next(!0,!0);break;case wijmo_1.Key.Home:t=this.getFirstNode(!0,!0);break;case wijmo_1.Key.End:t=this.getLastNode(!0,!0);break;case wijmo_1.Key.Space:if(this.selectedItem){let e=i.checkBox;e&&(i.isChecked=e.indeterminate||!e.checked)}break;case wijmo_1.Key.Enter:this.selectedItem&&this.onItemClicked();break;default:l=!1}if(l){e.preventDefault();e.shiftKey?t&&t.isSelected&&i.deSelect(!0):this._clearMultiSelectedNodes(!t);t&&t.select()}}}}_keypress(e){if(!e.defaultPrevented){if(e.ctrlKey||e.metaKey||e.altKey)return;if(e.target instanceof HTMLInputElement)return;if(this._edtNode)return;if(e.charCode>32&&this.startEditing(this.selectedNode)){let t=wijmo_1.getActiveElement();if(wijmo_1.contains(this._edtNode.element,t)){t.textContent=String.fromCharCode(e.charCode);e.preventDefault();let s=document.createRange();s.selectNodeContents(t);s.collapse(!1);let i=getSelection();i.removeAllRanges();i.addRange(s)}return}if(e.charCode>32||32==e.charCode&&this._srch){e.preventDefault();this._srch+=String.fromCharCode(e.charCode).toLowerCase();this._toSrch&&clearTimeout(this._toSrch);this._toSrch=setTimeout(()=>{this._toSrch=null;this._srch=""},TreeView._AS_DLY);let t=this._findNext();if(null==t&&this._srch.length>1){this._srch=this._srch[this._srch.length-1];t=this._findNext()}null!=t&&(this.selectedItem=t)}}}_findNext(){if(this.hostElement&&this.selectedItem){let e=this.getNode(this.selectedItem),t=e,s=!1,i=!1;1==this._srch.length&&(i=!0);for(;t;){if(!t.isDisabled&&!i){if(0==t.element.textContent.trim().toLowerCase().indexOf(this._srch))return t.dataItem}let l=t.next(!0,!0);if(l==e&&s)break;if(!l&&!s){l=this.getFirstNode(!0,!0);s=!0}t=l;i=!1}}return null}_loadTree(e){let t=this._root;if(t){if(!this.onLoadingItems(new wijmo_1.CancelEventArgs))return;let s=this.containsFocus(),i=this._srcChanged;this._isDirty=!1;this._srcChanged=!1;let l=this.selectedItem;this.selectedItem=null;let o,n=[];if(this.allowMultiSelect){this.selectedNodes.forEach(e=>n.push(e.dataItem));this.selectedNodes.beginUpdate();this.selectedNodes.clear();this.selectedNodes.endUpdate(!0)}this._chkItems=null;this._ldLvl=-1;if(e&&wijmo_1.isFunction(window.Map)&&!i&&this.nodes.length>0){o=new Map;let e=this.hostElement.querySelectorAll("."+TreeView._CND);for(let t=0;t<e.length;t++){let s=e[t];wijmo_1.hasClass(s,TreeView._CCLD)&&o.set(s[TreeView._DATAITEM_KEY],!0)}}t.innerHTML="";this._items&&this._items.forEach(e=>{this._addItem(t,0,e)});if(o){let e=this.hostElement.querySelectorAll("."+TreeView._CND);for(let t=0;t<e.length;t++){let s=e[t],i=TreeNode._isNodeList(s.nextElementSibling),l=!TreeNode._isEmpty(s),n=o.get(s[TreeView._DATAITEM_KEY]);l&&(n||i)&&wijmo_1.toggleClass(s,TreeView._CCLD,1==n);wijmo_1.setAttribute(s,"aria-expanded",l?(!wijmo_1.hasClass(s,TreeView._CCLD)).toString():null)}}s&&!this.containsFocus()&&this.focus();this.allowMultiSelect&&n.forEach(e=>{const t=this.getNode(e);t&&t.select(!0)});this.selectedItem=l;this.onLoadedItems();this._ldLvl=-1;this._srcChanged=!1}}_addItem(e,t,s){let i,l=this._dspPath.getValue(s,t),o=this._imgPath.getValue(s,t),n=wijmo_1.asArray(this._itmPath.getValue(s,t),!0),a=document.createElement("div");wijmo_1.addClass(a,TreeView._CND);a.tabIndex=-1;wijmo_1.setAttribute(a,"role","treeitem",!0);wijmo_1.setAttribute(a,"aria-selected",!1);let r=document.createElement("span");this.isContentHtml?r.innerHTML=l:r.textContent=l;wijmo_1.addClass(r,TreeView._CNDT);a.appendChild(r);if(o){let e=document.createElement("img");e.src=o;a.insertBefore(e,a.firstChild)}if(this._showChk&&!this._lazyLoad){i=document.createElement("input");i.type="checkbox";i.tabIndex=-1;wijmo_1.addClass(i,TreeView._CNDC);a.insertBefore(i,a.firstChild)}this._dd&&a.setAttribute("draggable","true");e.appendChild(a);a[TreeView._DATAITEM_KEY]=s;n&&0==n.length&&!this.lazyLoadFunction&&(n=null);if(n){let s=this.expandOnLoad;if(t>this._ldLvl&&s){this._ldLvl=t;if(0==n.length){s=!1;wijmo_1.addClass(a,TreeView._CCLD)}}else{s=!1;wijmo_1.addClass(a,TreeView._CCLD);t<this._ldLvl&&(this._ldLvl=100)}if(n.length>0){let s=document.createElement("div");s.tabIndex=-1;wijmo_1.addClass(s,TreeView._CNDL);for(let e=0;e<n.length;e++)this._addItem(s,t+1,n[e]);e.appendChild(s);wijmo_1.setAttribute(s,"role","group",!0)}wijmo_1.setAttribute(a,"aria-expanded",s.toString(),!0)}else wijmo_1.addClass(a,TreeView._CEMP);if(i&&this.checkedMemberPath)if(n&&n.length){new TreeNode(this,a)._updateCheckedState()}else i.checked=this._chkPath.getValue(s,t);this.formatItem.hasHandlers&&this.onFormatItem(new FormatNodeEventArgs(s,a,t))}_collapseToLevel(e,t,s){for(let i=0;i<e.length;i++){let l=e[i];if(!l.hasPendingChildren){l.isCollapsed=s>=t;l.hasChildren&&this._collapseToLevel(l.nodes,t,s+1)}}}_lazyLoadNode(e){let t=this.hostElement;if(!wijmo_1.hasClass(t,TreeView._CLDG)){wijmo_1.addClass(t,TreeView._CLDG);wijmo_1.addClass(e.element,TreeView._CLDG);this.lazyLoadFunction(e,this._lazyLoadCallback.bind(e))}}_lazyLoadCallback(e){this.treeView._lazyLoadNodeDone(this,e)}_lazyLoadNodeDone(e,t){let s=TreeView;wijmo_1.removeClass(e.element,s._CLDG);wijmo_1.removeClass(this.hostElement,s._CLDG);let i=e.dataItem,l=e.level,o=wijmo_1.asArray(t,!0);if(null==o||0==o.length){this._itmPath.setValue(i,l,null);wijmo_1.addClass(e.element,s._CEMP);wijmo_1.removeClass(e.element,s._CCLD)}else if(o.length){this._itmPath.setValue(i,l,o);let t=document.createElement("div"),n=e.element;wijmo_1.addClass(t,s._CNDL);n.parentElement.insertBefore(t,n.nextSibling);for(let e=0;e<o.length;e++)this._addItem(t,l+1,o[e]);e.isCollapsed=!1}}isTxtSelected(e){let t=window.getSelection();return t.anchorNode===e&&t.toString().length>0}_clearMultiSelectedNodes(e=!1){for(let t=this._selNodes.length-1;t>=0;t--)e&&this._selNodes[t]==this.selectedNode||this._selNodes[t].deSelect(!0)}dispose(){if(this._toSrch){clearTimeout(this._toSrch);this._toSrch=null}if(this._toItemsChanged){clearTimeout(this._toItemsChanged);this._toItemsChanged=null}if(this._updateCheckedTimer){clearTimeout(this._updateCheckedTimer);this._updateCheckedTimer=null}if(this._setFocusTimer){clearTimeout(this._setFocusTimer);this._setFocusTimer=null}if(this._dd){this._dd.dispose();this._dd=null}this._prevSel=null;if(this._edtNode){let e=this._edtNode.element.querySelector("."+TreeView._CNDT);e&&delete e.contentEditable;this._edtNode=null}this._chkItems=null;this._lazyLoad=null;this._items=null;this.options=null;this._itmPath=null;this._chkPath=null;this._dspPath=null;this._imgPath=null;if(this._selNodes&&this._selNodes.length>0){this._selNodes.forEach(e=>{e.dispose()});this._selNodes=null}this.nodes&&this.nodes.length>0&&this.nodes.forEach(e=>{e.dispose()});this.formatItem&&this.formatItem.hasHandlers&&this.formatItem.removeAllHandlers();this._selNodes&&this._selNodes.collectionChanged&&this._selNodes.collectionChanged.removeAllHandlers();const e=this.hostElement;if(e){e.querySelectorAll("."+TreeView._CND).forEach(e=>{e[TreeView._DATAITEM_KEY]&&delete e[TreeView._DATAITEM_KEY];e[TreeNode.CacheKey]&&delete e[TreeNode.CacheKey]});e.querySelectorAll("."+TreeView._CLDG).forEach(e=>{wijmo_1.removeClass(e,TreeView._CLDG)})}if(this._root){this._root.innerHTML="";this._root=null}this._srch="";super.dispose()}}TreeView._DATAITEM_KEY="wj-Data-Item";TreeView._AS_DLY=600;TreeView._AN_DLY=200;TreeView._CND=exports.TreeViewClsNames.node;TreeView._CNDL=exports.TreeViewClsNames.nodeList;TreeView._CEMP=wijmo_1.ControlStateClsNames.empty;TreeView._CNDT=exports.TreeViewClsNames.nodeText;TreeView._CNDC=exports.TreeViewClsNames.nodeCheck;TreeView._CSEL=wijmo_1.ControlStateClsNames.selected;TreeView._CMSEL=wijmo_1.ControlStateClsNames.multiSelected;TreeView._CCLD=wijmo_1.ControlStateClsNames.collapsed;TreeView._CCLG=wijmo_1.ControlStateClsNames.collapsing;TreeView._CLDG=wijmo_1.ControlStateClsNames.loading;TreeView._ctrlTemplate="";exports.TreeView=TreeView;class _TreeDragDropManager{constructor(e){this._tree=wijmo_1.asType(e,TreeView);this._dragstartBnd=this._dragstart.bind(this);this._dragoverBnd=this._dragover.bind(this);this._dropBnd=this._drop.bind(this);this._dragendBnd=this._dragend.bind(this);_TreeDragDropManager._activeTreeCount++;let t=this._tree,s=t.hostElement;t.addEventListener(s,"dragstart",this._dragstartBnd);t.addEventListener(s,"dragover",this._dragoverBnd);t.addEventListener(s,"dragleave",this._dragoverBnd);t.addEventListener(s,"drop",this._dropBnd);t.addEventListener(s,"dragend",this._dragendBnd);t.addEventListener(s,"keydown",this._keydown)}dispose(){_TreeDragDropManager._activeTreeCount--;if(0===_TreeDragDropManager._activeTreeCount){wijmo_1.removeChild(_TreeDragDropManager._dMarker);_TreeDragDropManager._markerInstance=null;if(_TreeDragDropManager._drgSrc){_TreeDragDropManager._drgSrc.dispose();_TreeDragDropManager._drgSrc=null}}}_dragstart(e){if(!e.defaultPrevented){let t=this._tree,s=wijmo_1.closestClass(e.target,TreeView._CND),i=_TreeDragDropManager;i._drgSrc=TreeNode._isNode(s)?new TreeNode(t,s):null;if(i._drgSrc){let e=new TreeNodeEventArgs(i._drgSrc);t.onDragStart(e)||(i._drgSrc=null)}if(i._drgSrc&&e.dataTransfer){wijmo_1._startDrag(e.dataTransfer,"copyMove");e.stopPropagation()}else e.preventDefault()}}_removeDragFeedback(){document.body.querySelectorAll("."+_TreeDragDropManager.CLS_DRAG_FEEDBACK).forEach(e=>e.remove())}_dragover(e){this._handleDragDrop(e,!1)}_drop(e){this._handleDragDrop(e,!0)}_dragend(e){_TreeDragDropManager._drgSrc=null;this._showDragMarker();this._removeDragFeedback();this._tree.onDragEnd()}_keydown(e){e.defaultPrevented||e.keyCode==wijmo_1.Key.Escape&&this._dragendBnd(null)}static get _dMarker(){this._markerInstance||(this._markerInstance="undefined"!=typeof window?wijmo_1.createElement(`<div class="${exports.TreeViewClsNames.marker}">&nbsp;</div>`):null);return this._markerInstance}_handleDragDrop(e,t){let s,i,l=this._tree,o=_TreeDragDropManager,n=DropPosition,a=n.Into;if(!e.defaultPrevented&&o._drgSrc){let r=document.elementFromPoint(e.clientX,e.clientY),h=wijmo_1.closestClass(r,TreeView._CND);if(null==h){let e=wijmo_1.Control.getControl(wijmo_1.closest(r,"."+exports.TreeViewClsNames.hostElement));e instanceof TreeView&&0==e.totalItemCount&&(h=e.hostElement)}h==o._drgSrc.element&&(h=null);if(h&&l.allowMultiSelect&&TreeNode._isNode(h)&&l.hostElement.contains(o._drgSrc.element)){const e=new TreeNode(l,h);if(e.isSelected)h=null;else for(let t=l.selectedNodes.length-1;t>=0;t--){const s=l.selectedNodes[t];if(s.hasChildren&&s._contains(e)){h=null;break}}}if(h){i=h.getBoundingClientRect();let t=new TreeNode(l,h),r=t.hasPendingChildren?i.height/2:i.height/3;if(null==t.element){i=wijmo_1.Rect.fromBoundingRect(i);i.inflate(-12,-12);a=n.Before}else if(e.clientY<i.top+r)a=n.Before;else if(e.clientY>i.bottom-r||t.hasPendingChildren){a=n.After;if(t.hasChildren&&!t.isCollapsed&&!t.hasPendingChildren){a=n.Before;t=t.next(!0,!1);h=t.element;i=h.getBoundingClientRect()}}if(o._drgSrc._contains(t))h=null;else{s=new TreeNodeDragDropEventArgs(o._drgSrc,t,a);s.cancel=o._drgSrc.treeView!=t.treeView;l.onDragOver(s)||(h=null)}}if(h){a=s.position;if(a==n.Before){let e=s.dragSource.next(!0,!1);e&&e.element==h&&(h=null)}else if(a==n.After){let e=s.dragSource.previous(!0,!1);e&&e.element==h&&(h=null)}}if(h&&!t){e.dataTransfer.dropEffect="move";e.preventDefault();e.stopPropagation();this._showDragMarker(i,a)}else this._showDragMarker();if(h&&t&&l.onDrop(s)){l.hostElement.focus();if(l.allowMultiSelect){const e=this._getTopLevelSelectedNodes(),t=s.dragSource.treeView,i=s.dropTarget.treeView;s.position==DropPosition.After&&e.reverse();e.forEach(e=>e.move(s.dropTarget,s.position));if(t!=i){t.selectedNodes.clear();t.selectedNode=null;e.forEach(e=>e.select())}}else{let e=s.dragSource;e.move(s.dropTarget,s.position);e.ensureVisible();e.select()}}}}_getTopLevelSelectedNodes(){const e=_TreeDragDropManager._drgSrc.treeView,t=[];e.hostElement.querySelectorAll("."+TreeView._CMSEL+" , ."+TreeView._CSEL).forEach(s=>{const i=new TreeNode(e,s);((e,t)=>{if(!t)return!1;for(let s=0;s<t.length;s++)if(t[s]._contains(e))return!0;return!1})(i,t)||t.push(i)});return t}_showDragMarker(e,t){let s=this._tree,i=_TreeDragDropManager._dMarker.parentElement;if(e){let l=s.hostElement.getBoundingClientRect(),o=t==DropPosition.After?e.bottom:e.top,n={top:Math.round(o-l.top+s.hostElement.scrollTop-2),width:"75%",height:t==DropPosition.Into?e.height:0,opacity:t==DropPosition.Into?"0.15":""};wijmo_1.toggleClass(_TreeDragDropManager._dMarker,exports.TreeViewClsNames.lineMarker,t!==DropPosition.Into);s.rightToLeft?n.right=Math.round(l.right-e.right):n.left=Math.round(e.left-l.left);wijmo_1.setCss(_TreeDragDropManager._dMarker,n);i!=s._root&&s._root.appendChild(_TreeDragDropManager._dMarker)}else i&&i.removeChild(_TreeDragDropManager._dMarker)}}_TreeDragDropManager.CLS_DRAG_FEEDBACK=exports.TreeViewClsNames.dragFeedback;_TreeDragDropManager.CLS_DRAG_ITEMCOUNT=exports.TreeViewClsNames.dragItemCount;_TreeDragDropManager.CLS_DRAG_ITEMCOUNT_LARGE=exports.TreeViewClsNames.largerDragItemCount;_TreeDragDropManager._activeTreeCount=0;exports._TreeDragDropManager=_TreeDragDropManager;wijmo_1._registerModule("wijmo.nav",selfModule);
14
+ "use strict";var __importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)Object.hasOwnProperty.call(e,s)&&(t[s]=e[s]);t.default=e;return t};Object.defineProperty(exports,"__esModule",{value:!0});const wijmo_1=require("@mescius/wijmo"),selfModule=__importStar(require("@mescius/wijmo.nav"));exports.AccordionClsNames={header:"wj-header",hostElement:"wj-accordion",showIcons:"wj-show-icons",activeContent:"wj-active-content"};exports.TabPanelClsNames={hostElement:"wj-tabpanel",tabHeader:"wj-tabheader",tabHeaders:"wj-tabheaders",tabPane:"wj-tabpane",tabPanes:"wj-tabpanes",screenReaderOnly:"wj-sr-only"};exports.TreeViewClsNames={dragFeedback:"wj-tv-drag-feedback",dragItemCount:"wj-tv-drag-ic",hostElement:"wj-treeview",largerDragItemCount:"wj-larger-drag-ic",marker:"wj-marker",lineMarker:"wj-line-marker",node:"wj-node",nodeCheck:"wj-node-check",nodeList:"wj-nodelist",nodeText:"wj-node-text"};class TabPanel extends wijmo_1.Control{constructor(e,t,s,i){super(e,null,!0);this._tabs=new wijmo_1.ObservableArray;this._selectedIndex=-1;this._animated=!0;this._autoSwitch=!0;this._isInitialized=!1;this.selectedIndexChanged=new wijmo_1.Event;const o=this.hostElement,n=[];if(!s)for(;o.firstElementChild;){const e=o.firstElementChild;o.removeChild(e);i||n.push(e)}const a=this.getTemplate();this.applyTemplate(`${wijmo_1.ControlClsNames.hostElement} ${exports.TabPanelClsNames.hostElement} ${wijmo_1.UtilitesClsNames.animated}`,a,{_dRoot:"root",_dTabHeaders:"tabheaders",_dTabPanes:"tabpanes",_tabStatus:"tab-select-status"});o.tabIndex=-1;this._dRoot.tabIndex=this._dTabHeaders.tabIndex=this._dTabPanes.tabIndex=-1;t&&wijmo_1.isBoolean(t.isAnimated)&&(this.isAnimated=t.isAnimated);this.addEventListener(o,"click",this._click.bind(this));this.addEventListener(o,"keydown",this._keydown.bind(this));this._tabs.collectionChanged.addHandler(this._populateControl.bind(this));this.tabs.deferUpdate(()=>{n.forEach(e=>{wijmo_1.assert(2==e.childElementCount,"TabPanel children should contain header and pane elements");this.tabs.push(new Tab(e.children[0],e.children[1]))})});this.initialize(t);if(this.selectedIndex<0&&this.tabs.length)this.selectedIndex=0;else{this._isInitialized=!0;this.onSelectedIndexChanged();delete this._isInitialized}}static get controlTemplate(){TabPanel._ctrlTemplate||(TabPanel._ctrlTemplate=`<div wj-part="root"><div wj-part="tabheaders" class="${exports.TabPanelClsNames.tabHeaders}" role="tablist"></div><div wj-part="tabpanes" class="${exports.TabPanelClsNames.tabPanes}"></div><div wj-part="tab-select-status" aria-live="polite" class="${exports.TabPanelClsNames.screenReaderOnly}"></div></div>`);return TabPanel._ctrlTemplate}static set controlTemplate(e){TabPanel._ctrlTemplate=e}get tabs(){return this._tabs}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){if((e=wijmo_1.asInt(e,!1))!=this._selectedIndex){this._selectedIndex=e;this._updateContent();this.onSelectedIndexChanged();this.tabs[e]&&this.tabs[e].header&&(this._tabStatus.textContent=""+this.tabs[e].header.textContent)}else"Angular2"==this.workingAs&&this._updateContent()}get selectedTab(){const e=this._selectedIndex;return e>-1?this._tabs[e]:null}set selectedTab(e){let t=-1;for(let s=0;s<this._tabs.length&&t<0;s++)this._tabs[s]==e&&(t=s);this.selectedIndex=t}get isAnimated(){return this._animated}set isAnimated(e){this._animated=wijmo_1.asBoolean(e);wijmo_1.toggleClass(this.hostElement,wijmo_1.UtilitesClsNames.animated,this._animated)}get autoSwitch(){return this._autoSwitch}set autoSwitch(e){if(e!=this._autoSwitch){this._autoSwitch=wijmo_1.asBoolean(e);this._updateContent()}}getTab(e){for(let t=0;t<this._tabs.length;t++){const s=this._tabs[t];if(s.header.id==e||s.pane.id==e)return s}for(let t=0;t<this._tabs.length;t++){const s=this._tabs[t];if(s.header.textContent==e)return s}return null}onSelectedIndexChanged(e){this.selectedIndexChanged.raise(this,e)}_populateControl(){this._removeChildren(this._dTabHeaders);this._removeChildren(this._dTabPanes);let e=-1;this._tabs.forEach((t,s)=>{wijmo_1.assert(t instanceof Tab,"tabs array must contain Tab objects.");t._setPanel(this);const i=t.header;wijmo_1.addClass(i,exports.TabPanelClsNames.tabHeader);wijmo_1.setAttribute(i,"role","tab");this._dTabHeaders.appendChild(i);const o=t.pane;wijmo_1.addClass(o,exports.TabPanelClsNames.tabPane);wijmo_1.setAttribute(o,"role","tabpanel");wijmo_1.setAttribute(o,"aria-labelledby",i.id?i.id:null);this._dTabPanes.appendChild(o);e<0&&(wijmo_1.hasClass(i,wijmo_1.ControlStateClsNames.active)||"true"==i.getAttribute("aria-selected"))&&(e=s)});e<0&&this._tabs.length>0&&(e=0);e>-1?this.selectedIndex=e:this.selectedIndex>-1&&this.selectedIndex<this._tabs.length&&this._updateContent();this._validateSelection()}_validateSelection(){const e=this.selectedTab;if(e&&(e.isDisabled||!e.isVisible)){let e=this._getNextIndex(this.selectedIndex,1);e<0&&(e=this._getNextIndex(this.selectedIndex,-1));this.selectedIndex=e}}_updateContent(){const e=wijmo_1.contains(this._dTabHeaders,wijmo_1.getActiveElement()),t=this._dTabHeaders.children,s=this._dTabPanes.children,i=this._selectedIndex;if(i>-1&&i<s.length){const e=s[i],t=e.style;if(this.isAnimated){this._eAnim&&(this._eAnim.style.opacity="");this._toAnim&&clearInterval(this._toAnim);t.opacity="0";this._eAnim=e;this._toAnim=wijmo_1.animate(e=>{if(1==e){this._eAnim=null;this._toAnim=null;t.opacity=""}else t.opacity=e.toString()})}else t.opacity=""}for(let o=0;o<t.length;o++){const n=o==i,a=t[o];wijmo_1.setAttribute(a,"aria-selected",n);wijmo_1.toggleClass(a,wijmo_1.ControlStateClsNames.active,n);const l=s[o];wijmo_1.toggleClass(l,wijmo_1.ControlStateClsNames.active,n);a.tabIndex=n||!this._autoSwitch?this._orgTabIndex:-1;if(n){e&&a.focus();this._szObserver||wijmo_1.Control.invalidateAll(l)}}}_removeChildren(e){for(;e.firstChild;)e.removeChild(e.firstChild)}_click(e){const t=this._getTabIndex(e.target);if(t>-1){const e=this._tabs[t];!e.isDisabled&&e.isVisible&&(this.selectedIndex=t)}}_keydown(e){if(!e.defaultPrevented){let t=this._getTabIndex(wijmo_1.getActiveElement());if(t>-1){const s=this._getKeyCode(e);switch(s){case wijmo_1.Key.Left:case wijmo_1.Key.Up:case wijmo_1.Key.Right:case wijmo_1.Key.Down:case wijmo_1.Key.Home:case wijmo_1.Key.PageUp:case wijmo_1.Key.End:case wijmo_1.Key.PageDown:switch(s){case wijmo_1.Key.Left:case wijmo_1.Key.Up:t=this._getNextIndex(t,-1);break;case wijmo_1.Key.Right:case wijmo_1.Key.Down:t=this._getNextIndex(t,1);break;case wijmo_1.Key.Home:case wijmo_1.Key.PageUp:t=this._getNextIndex(-1,1);break;case wijmo_1.Key.End:case wijmo_1.Key.PageDown:t=this._getNextIndex(this._tabs.length,-1)}t>-1&&(this._autoSwitch?this.selectedIndex=t:this._tabs[t].header.focus());e.preventDefault();break;case wijmo_1.Key.Enter:case wijmo_1.Key.Space:if(t>-1){this._tabs[t].header.click()}e.preventDefault()}}}}_getTabIndex(e){const t=wijmo_1.closest(e,"."+exports.TabPanelClsNames.tabHeader);if(t&&wijmo_1.closest(t,"."+exports.TabPanelClsNames.hostElement)==this.hostElement)for(let e=0;e<this._tabs.length;e++)if(this._tabs[e].header==t)return e;return-1}_getNextIndex(e,t){for(let s=e+t;s>-1&&s<this._tabs.length;s+=t){const e=this._tabs[s];if(!e.isDisabled&&e.isVisible)return s}return-1}_setIsDisabled(e){super._setIsDisabled(e);this._updateTabIndex()}_setTabOrder(e){super._setTabOrder(e);this.isDisabled||this._updateTabIndex()}_updateTabIndex(){const e=this._dTabHeaders.children,t=this._selectedIndex;if(t>-1&&t<e.length){e[t].tabIndex=this.isDisabled?-1:this._orgTabIndex}this.hostElement.tabIndex=-1}dispose(){if(this._toAnim){clearInterval(this._toAnim);this._toAnim=null}this._tabs.collectionChanged.removeHandler(this._populateControl,this);this._tabs.forEach(e=>{e.dispose()});this._tabs.clear();super.dispose()}}TabPanel._ctrlTemplate="";exports.TabPanel=TabPanel;class Tab{constructor(e,t){this._hdr=wijmo_1.asType(wijmo_1.getElement(e),HTMLElement);this._pane=wijmo_1.asType(wijmo_1.getElement(t),HTMLElement)}get tabPanel(){return this._p}get header(){return this._hdr}get pane(){return this._pane}get isDisabled(){return wijmo_1.hasClass(this._hdr,wijmo_1.ControlStateClsNames.disabled)}set isDisabled(e){wijmo_1.toggleClass(this._hdr,wijmo_1.ControlStateClsNames.disabled,wijmo_1.asBoolean(e));this._p&&this._p._validateSelection()}get isVisible(){return"none"!=this._hdr.style.display}set isVisible(e){this._hdr.style.display=wijmo_1.asBoolean(e)?"":"none";this._p&&this._p._validateSelection()}_setParts(e,t){e=wijmo_1.asType(wijmo_1.getElement(e),HTMLElement);t=wijmo_1.asType(wijmo_1.getElement(t),HTMLElement,!1);if(this._hdr!==e||this._pane!==t){const s=this.isDisabled,i=this.isVisible;this._hdr=e;this._pane=t;this.isDisabled=s;this.isVisible=i;const o=this.tabPanel;o&&!o.tabs.isUpdating&&o._populateControl()}}_setPanel(e){this._p=e}dispose(){this._hdr=null;this._pane=null;this._p=null}}exports.Tab=Tab;const _CLS_ACTIVE=wijmo_1.ControlStateClsNames.active;class Accordion extends wijmo_1.Control{constructor(e,t,s){super(e,null,!0);this._panes=new wijmo_1.ObservableArray;this._selectedIndex=-1;this._animated=!0;this._autoSwitch=!0;this._alCollapseAll=!1;this._alExpandMany=!1;this._autoSwitching=!1;this.selectedIndexChanged=new wijmo_1.Event;const i=this.hostElement,o=this._panes,n=[];if(!s)for(;i.firstElementChild;){const e=i.firstElementChild;i.removeChild(e);n.push(e)}wijmo_1.addClass(i,`${wijmo_1.ControlClsNames.hostElement} ${exports.AccordionClsNames.hostElement} ${exports.AccordionClsNames.showIcons}`);i.tabIndex=-1;this.addEventListener(i,"click",this._click.bind(this));this.addEventListener(i,"keydown",this._keydown.bind(this));o.collectionChanged.addHandler(this._populateControl.bind(this));o.deferUpdate(()=>{n.forEach(e=>{wijmo_1.assert(2==e.childElementCount,"Accordion children should contain header and pane elements");o.push(new AccordionPane(e.children[0],e.children[1]))})});this.initialize(t);const a=t?t.selectedIndex:null;this.selectedIndex!=a&&this.selectedIndex<0&&o.length?this.selectedIndex=0:this.onSelectedIndexChanged()}get panes(){return this._panes}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){if((e=wijmo_1.asInt(e,!1))!=this._selectedIndex){this._selectedIndex=e;this._updateContent();this.onSelectedIndexChanged()}else this._updateContent()}get selectedPane(){const e=this._selectedIndex;return e>-1?this._panes[e]:null}set selectedPane(e){this.selectedIndex=this._getIndexOfPane(e)}get isAnimated(){return this._animated}set isAnimated(e){this._animated=wijmo_1.asBoolean(e)}get showIcons(){return wijmo_1.hasClass(this.hostElement,exports.AccordionClsNames.showIcons)}set showIcons(e){wijmo_1.toggleClass(this.hostElement,exports.AccordionClsNames.showIcons,wijmo_1.asBoolean(e))}get autoSwitch(){return this._autoSwitch}set autoSwitch(e){if(e!=this._autoSwitch){this._autoSwitch=wijmo_1.asBoolean(e);this._updateContent()}}get allowCollapseAll(){return this._alCollapseAll}set allowCollapseAll(e){this._alCollapseAll=wijmo_1.asBoolean(e)}get allowExpandMany(){return this._alExpandMany}set allowExpandMany(e){if(e!=this._alExpandMany){this._alExpandMany=e=wijmo_1.asBoolean(e);e||this.panes.forEach((e,t)=>{const s=t==this.selectedIndex;toggleActiveClass(e.header,s);wijmo_1.setAttribute(e.header,"aria-expanded",s)})}}getPane(e){for(let t=0;t<this._panes.length;t++){const s=this._panes[t];if(s.header.id==e||s.content.id==e)return s}for(let t=0;t<this._panes.length;t++){const s=this._panes[t];if(s.header.textContent==e)return s}return null}onSelectedIndexChanged(e){this.selectedIndexChanged.raise(this,e)}_populateControl(){let e=-1,t=this.hostElement;this._panes.forEach((s,i)=>{wijmo_1.assert(s instanceof AccordionPane,"panes array must contain AccordionPane objects.");s._setAccordion(this);const o=s.header;wijmo_1.addClass(o,exports.AccordionClsNames.header);wijmo_1.setAttribute(o,"role","button");t.appendChild(o);const n=s.content;wijmo_1.addClass(n,wijmo_1.ControlClsNames.content);wijmo_1.setAttribute(n,"role","region");wijmo_1.setAttribute(n,"aria-labelledby",o.id?o.id:null);t.appendChild(n);e<0&&(wijmo_1.hasClass(o,_CLS_ACTIVE)||"true"==o.getAttribute("aria-expanded"))&&(e=i)});e>-1?this.selectedIndex=e:this.selectedIndex>-1&&this.selectedIndex<this._panes.length&&this._updateContent();this._validateSelection()}_validateSelection(){const e=this.selectedPane;if(e&&(e.isDisabled||!e.isVisible)){let e=this._getNextIndex(this.selectedIndex,1);e<0&&(e=this._getNextIndex(this.selectedIndex,-1));this.selectedIndex=e}}_updateContent(){const e=wijmo_1.contains(this.hostElement,wijmo_1.getActiveElement()),t=this._selectedIndex,s=this._panes,i=[];s.forEach((s,o)=>{const n=s.header,a=o==t,l=wijmo_1.hasClass(n,_CLS_ACTIVE),r=a||l&&this._alExpandMany&&s!=this._hidePane,h=r&&!l,d=l&&!r;this._animated&&(h||d)&&i.push({show:h,pane:s});wijmo_1.setAttribute(n,"aria-expanded",r);this._animated||toggleActiveClass(n,r);if(a){e&&n.focus();this._szObserver||wijmo_1.Control.invalidateAll(s.content)}});this._updatePanesTabIndex();if(this._animated&&i.length){i.forEach(e=>{toggleActiveClass(e.pane.header,!0);e.height=e.pane.content.offsetHeight;e.show&&(e.pane.content.style.height="0")});this._toAnim=wijmo_1.animate(e=>{e<1?i.forEach(t=>{const s=t.height*(t.show?e:1-e);t.pane.content.style.height=s.toFixed(0)+"px"}):i.forEach(e=>{e.pane.content.style.height="";toggleActiveClass(e.pane.header,e.show)})})}this._hidePane=null}_updatePanesTabIndex(){this._panes.forEach((e,t)=>{e.header.tabIndex=this._selectedIndex!==t&&this._autoSwitch?-1:this._orgTabIndex})}_setTabOrder(e){super._setTabOrder(e);this._updatePanesTabIndex()}_click(e){const t=this._getPaneIndex(e.target);if(t>-1){const e=this._panes[t];if(!e.isDisabled&&e.isVisible){if(!wijmo_1.hasClass(e.header,_CLS_ACTIVE)||this._autoSwitching)this.selectedIndex=t;else{const s=this._getNextActiveIndex(t);if(s>-1||this._alCollapseAll){this._hidePane=e;this.selectedIndex=s}}}}}_keydown(e){if(!e.defaultPrevented){let t=this._getPaneIndex(wijmo_1.getActiveElement());if(t>-1){const s=this._getKeyCode(e);switch(s){case wijmo_1.Key.Left:case wijmo_1.Key.Up:case wijmo_1.Key.Right:case wijmo_1.Key.Down:case wijmo_1.Key.Home:case wijmo_1.Key.PageUp:case wijmo_1.Key.End:case wijmo_1.Key.PageDown:switch(s){case wijmo_1.Key.Left:case wijmo_1.Key.Up:t=this._getNextIndex(t,-1);break;case wijmo_1.Key.Right:case wijmo_1.Key.Down:t=this._getNextIndex(t,1);break;case wijmo_1.Key.Home:case wijmo_1.Key.PageUp:t=this._getNextIndex(-1,1);break;case wijmo_1.Key.End:case wijmo_1.Key.PageDown:t=this._getNextIndex(this._panes.length,-1)}if(t>-1){const e=this._panes[t];if(this._autoSwitch){this._autoSwitching=!0;e.header.click();this._autoSwitching=!1}else e.header.focus()}e.preventDefault();break;case wijmo_1.Key.Enter:case wijmo_1.Key.Space:if(t>-1){this._panes[t].header.click()}e.preventDefault()}}}}_getPaneIndex(e){const t=wijmo_1.closest(e,"."+exports.AccordionClsNames.header);if(t&&wijmo_1.closest(t,"."+exports.AccordionClsNames.hostElement)==this.hostElement)for(let e=0;e<this._panes.length;e++)if(this._panes[e].header==t)return e;return-1}_getNextIndex(e,t){for(let s=e+t;s>-1&&s<this._panes.length;s+=t){const e=this._panes[s];if(!e.isDisabled&&e.isVisible)return s}return-1}_getIndexOfPane(e){let t=-1;const s=this._panes;for(let i=0;i<s.length&&t<0;i++)s[i]==e&&(t=i);return t}_getNextActiveIndex(e){let t=-1;const s=this.panes;for(let i=1;i<s.length;i++){const o=(e+i)%s.length,n=s[o];if(wijmo_1.hasClass(n.header,_CLS_ACTIVE)){t=o;break}}return t}_togglePane(e,t){if(e.isCollapsed!==t&&e.isVisible&&!e.isDisabled)if(t){if(this.allowCollapseAll||this.panes.filter(e=>!e.isCollapsed).length>1){this._hidePane=e;const t=this._getIndexOfPane(e);this.selectedIndex=this._getNextActiveIndex(t)}}else this.selectedPane=e}dispose(){if(this._animated&&this._toAnim){clearInterval(this._toAnim);this._toAnim=null}this._panes.collectionChanged.removeHandler(this._populateControl,this);this._panes.forEach(e=>{e.dispose()});this._panes.clear();super.dispose()}}exports.Accordion=Accordion;class AccordionPane{constructor(e,t){this._hdr=wijmo_1.asType(wijmo_1.getElement(e),HTMLElement);this._content=wijmo_1.asType(wijmo_1.getElement(t),HTMLElement)}get accordion(){return this._acc}get header(){return this._hdr}get content(){return this._content}get isDisabled(){return wijmo_1.hasClass(this._hdr,wijmo_1.ControlStateClsNames.disabled)}set isDisabled(e){wijmo_1.toggleClass(this._hdr,wijmo_1.ControlStateClsNames.disabled,wijmo_1.asBoolean(e));this._acc&&this._acc._validateSelection()}get isVisible(){return"none"!=this._hdr.style.display}set isVisible(e){this._hdr.style.display=wijmo_1.asBoolean(e)?"":"none";this._acc&&this._acc._validateSelection()}get isCollapsed(){return!wijmo_1.hasClass(this._hdr,_CLS_ACTIVE)}set isCollapsed(e){const t=this._acc;t?t._togglePane(this,e):toggleActiveClass(this._hdr,!wijmo_1.asBoolean(e))}_setParts(e,t){e=wijmo_1.asType(wijmo_1.getElement(e),HTMLElement);t=wijmo_1.asType(wijmo_1.getElement(t),HTMLElement,!1);if(this._hdr!==e||this._content!==t){const s=this.isDisabled,i=this.isVisible;this._hdr=e;this._content=t;this.isDisabled=s;this.isVisible=i;const o=this.accordion;o&&!o.panes.isUpdating&&o._populateControl()}}_setAccordion(e){this._acc=e}dispose(){this._hdr=null;this._content=null;this._acc=null}}exports.AccordionPane=AccordionPane;function toggleActiveClass(e,t){wijmo_1.toggleClass(e,_CLS_ACTIVE,t);wijmo_1.toggleClass(e.nextElementSibling,exports.AccordionClsNames.activeContent,t)}class FormatNodeEventArgs extends wijmo_1.EventArgs{constructor(e,t,s){super();this._data=e;this._e=wijmo_1.asType(t,HTMLElement);this._level=s}get dataItem(){return this._data}get element(){return this._e}get level(){return this._level}}exports.FormatNodeEventArgs=FormatNodeEventArgs;class TreeNodeEventArgs extends wijmo_1.CancelEventArgs{constructor(e){super();this._node=e}get node(){return this._node}}exports.TreeNodeEventArgs=TreeNodeEventArgs;class TreeNodeDragDropEventArgs extends wijmo_1.CancelEventArgs{constructor(e,t,s){super();this._src=wijmo_1.asType(e,TreeNode);this._tgt=wijmo_1.asType(t,TreeNode);this._pos=s}get dragSource(){return this._src}get dropTarget(){return this._tgt}get position(){return this._pos}set position(e){this._pos=wijmo_1.asEnum(e,DropPosition)}}exports.TreeNodeDragDropEventArgs=TreeNodeDragDropEventArgs;var DropPosition;!function(e){e[e.Before=0]="Before";e[e.After=1]="After";e[e.Into=2]="Into"}(DropPosition=exports.DropPosition||(exports.DropPosition={}));class TreeNode{constructor(e,t){if(wijmo_1.hasClass(t,exports.TreeViewClsNames.hostElement)){e=wijmo_1.Control.getControl(t);t=null}else TreeNode._assertNode(t);if(t&&t[TreeNode.CacheKey]&&t[TreeNode.CacheKey]._t==e)return t[TreeNode.CacheKey];t&&(t[TreeNode.CacheKey]=this);this._t=e;this._e=t}get dataItem(){return this._e[TreeView._DATAITEM_KEY]}get element(){return this._e}get treeView(){return this._t}ensureVisible(){const e=!!this.parentNode&&this.parentNode.isCollapsed;this.treeView._scrollNode=this;for(let e=this.parentNode;e;e=e.parentNode)e.isCollapsed=!1;this.treeView.isAnimated&&e||this._scrollIntoView()}_scrollIntoView(){if(!this.treeView._scrollNode)return;const e=this._t.hostElement,t=this.treeView._scrollNode.element.getBoundingClientRect(),s=e.getBoundingClientRect(),i=e.offsetHeight-e.clientHeight;t.bottom>s.bottom-i?e.scrollTop+=t.bottom-(s.bottom-i):t.top<s.top&&(e.scrollTop-=s.top-t.top);this.treeView._scrollNode=null}equals(e){return null!=e&&e.element==this.element}get isSelected(){const e=this._t;return e.selectedNode==this||e.selectedNodes.includes(this)}select(e=!1){const t=this._t,s=t._selNode;if(!this.equals(s)){if(s){wijmo_1.removeClass(s.element,TreeView._CSEL);wijmo_1.setAttribute(s.element,"aria-selected",!1)}t._selNode=this;wijmo_1.addClass(this.element,TreeView._CSEL);wijmo_1.setAttribute(this.element,"aria-selected",!0);this.ensureVisible();if(t.allowMultiSelect&&!t.selectedNodes.includes(this))t.selectedNodes.push(this);else if(!t.selectedNodes.includes(this)){t.selectedNodes.beginUpdate();t.selectedNodes.clear();t.selectedNodes.push(this);t.selectedNodes.endUpdate(!0)}t._updateFocus(s);e||t.onSelectedItemChanged()}}deSelect(e=!1){if(!this.isSelected)return;const t=this._t;wijmo_1.removeClass(this.element,TreeView._CSEL);wijmo_1.setAttribute(this.element,"aria-selected",!1);t.selectedNodes.remove(this);t.selectedNode==this?e?t._selNode=null:t.selectedNode=null:e||t.onSelectedItemChanged()}get index(){let e=0;for(let t=this._pse(this.element);t;t=this._pse(t))TreeNode._isNode(t)&&e++;return e}get parentNode(){let e=null;if(this._e){const t=this._e.parentElement;TreeNode._assertNodeList(t);e=this._pse(t)}return e?new TreeNode(this._t,e):null}get level(){let e=-1;for(let t=this;t;t=t.parentNode)e++;return e}get hasChildren(){return TreeNode._isNode(this._e)&&!TreeNode._isEmpty(this._e)}get hasPendingChildren(){return this.isCollapsed&&this.hasChildren&&!TreeNode._isNodeList(this.element.nextElementSibling)&&wijmo_1.isFunction(this._t.lazyLoadFunction)}get nodes(){return this.hasChildren?TreeNode._getChildNodes(this._t,this._e.nextSibling):null}get checkBox(){return this._e.querySelector("input."+TreeView._CNDC)}get isCollapsed(){return this.hasChildren&&wijmo_1.hasClass(this._e,TreeView._CCLD)}set isCollapsed(e){if(e!=this.isCollapsed){const t=this._t,s=new TreeNodeEventArgs(this);if(t.onIsCollapsedChanging(s)){this.setCollapsed(wijmo_1.asBoolean(e),t.isAnimated,t.autoCollapse);t.onIsCollapsedChanged(s)}}}get isChecked(){const e=this.checkBox;return e&&!e.indeterminate?e.checked:null}set isChecked(e){if(e!=this.isChecked){const t=this._t,s=new TreeNodeEventArgs(this);if(t.onIsCheckedChanging(s)){this.setChecked(wijmo_1.asBoolean(e),!0);t.onIsCheckedChanged(s)}}}get isDisabled(){return this._e&&null!=this._e.getAttribute("disabled")}set isDisabled(e){if((e=wijmo_1.asBoolean(e,!0))!=this.isDisabled){wijmo_1.enable(this._e,!e);this.isDisabled&&this._t&&this._t.collapseWhenDisabled&&(this.isCollapsed=!0)}}previous(e,t){let s=this._pse(this._e);!s&&TreeNode._isNodeList(this._e.parentElement)&&(s=this._pse(this._e.parentElement));if(TreeNode._isNodeList(s)){for(;TreeNode._isNodeList(s)&&s.childElementCount;)s=s.lastChild;TreeNode._isNodeList(s)&&(s=this._pse(s))}let i=TreeNode._isNode(s)?new TreeNode(this._t,s):null;e&&i&&!i.element.offsetHeight&&(i=i.previous(e,t));t&&i&&i.isDisabled&&(i=i.previous(e,t));return i}next(e,t){let s=this._e.nextSibling;TreeNode._isNodeList(s)&&(s=s.childElementCount?s.firstChild:s.nextSibling);if(!s)for(let e=this._e.parentElement;!s&&TreeNode._isNodeList(e);e=e.parentElement)s=e.nextSibling;let i=TreeNode._isNode(s)?new TreeNode(this._t,s):null;e&&i&&!i.element.offsetHeight&&(i=i.next(e,t));t&&i&&i.isDisabled&&(i=i.next(e,t));return i}previousSibling(){let e=this._pse(this.element);for(;TreeNode._isNodeList(e);)e=this._pse(e);return e?new TreeNode(this._t,e):null}nextSibling(){let e=this.element.nextSibling;TreeNode._isNodeList(e)&&(e=e.nextSibling);return e?new TreeNode(this._t,e):null}setCollapsed(e,t,s){const i=this._t,o=this._e,n=this._e.nextElementSibling,a=TreeNode._isNodeList(n);wijmo_1.setAttribute(o,"aria-expanded",a?(!e).toString():null);if(e!=this.isCollapsed)if(e||a||!wijmo_1.isFunction(i.lazyLoadFunction)){null==t&&(t=i.isAnimated);null==s&&(s=i.autoCollapse);if(t){if(a){const t=n.offsetHeight,s=n.style,a=i.hostElement,l=a.style;a.scrollHeight<=a.clientHeight&&(l.overflowY="hidden");if(e){wijmo_1.toggleClass(o,TreeView._CCLG,!0);wijmo_1.animate(e=>{if(e<1){e=1-e;s.height=(e*t).toFixed(0)+"px"}else{s.height=s.opacity=l.overflowY="";wijmo_1.toggleClass(o,TreeView._CCLD,!0);wijmo_1.toggleClass(o,TreeView._CCLG,!1)}},TreeView._AN_DLY)}else{wijmo_1.toggleClass(o,TreeView._CCLD,!1);s.height=s.opacity="0";wijmo_1.animate(e=>{s.height=e>=1?s.opacity=l.overflowY="":(e*t).toFixed(0)+"px"},TreeView._AN_DLY,void 0,()=>{this._scrollIntoView()})}}}else wijmo_1.toggleClass(o,TreeView._CCLD,e);if(!e&&s){const e=o.parentElement;if(TreeNode._isNodeList(e))for(let t=0;t<e.children.length;t++){const s=e.children[t];if(s!=o&&TreeNode._isNode(s)){wijmo_1.toggleClass(s,TreeView._CCLD,!0);s.setAttribute("aria-expanded","false")}}}this.element}else i._lazyLoadNode(this)}setChecked(e,t){const s=this.checkBox,i=s.checked!=e;wijmo_1.setChecked(s,e);if(this.hasChildren)for(let t=0;t<this.nodes.length;t++)this.nodes[t].setChecked(e,!1);const o=this._t;o&&o.checkedMemberPath&&o._chkPath.setValue(this.dataItem,this.level,e);if(t){const e=this.parentNode;e&&e._updateCheckedState()}o&&i&&o._raiseCheckedItemsChanged()}remove(){const e=this._t,t=this.parentNode,s=this._getArray(),i=s.indexOf(this.dataItem);e.selectedNode==this&&(e.selectedNode=this.nextSibling()||this.previousSibling()||t);const o=this.element.nextSibling;TreeNode._isNodeList(o)&&wijmo_1.removeChild(o);wijmo_1.removeChild(this.element);t&&t._updateState();s.splice(i,1);this._t=null}addChildNode(e,t){const s=this._t._createNode(t),i=this.nodes;i?e<i.length?s.move(i[e],DropPosition.Before):s.move(i[i.length-1],DropPosition.After):s.move(this,DropPosition.Into);return s}refresh(e){const t=this._getArray();e&&(t[this.index]=e);e=t[this.index];const s=this._t._createNode(e);let i=this.hasChildren&&!this.hasPendingChildren?this.element.nextSibling:null;i&&wijmo_1.removeChild(i);i=s.hasChildren&&!s.hasPendingChildren?s.element.nextSibling:null;i&&this.element.parentElement.insertBefore(i,this.element.nextSibling);this.element.innerHTML=s.element.innerHTML;this._updateState()}move(e,t){if(e instanceof TreeNode&&this._contains(e))return!1;const s=this.parentNode,i=this._getArray();this._moveElements(e,t);e.treeView&&(this._t=e.treeView);s&&s._updateState();const o=this.parentNode;o&&o._updateState();const n=this.dataItem,a=i.indexOf(n),l=this._getArray();i.splice(a,1);l.splice(this.index,0,n);return!0}get itemsSource(){return this._getArray()}_pse(e){return e.previousElementSibling}_contains(e){for(;e;e=e.parentNode)if(e.element==this.element)return!0;return!1}_getArray(){let e=this._t,t=this.parentNode,s=e.itemsSource;if(t){const i=e._itmPath;s=i.getValue(t.dataItem,this.level);if(!s){s=[];i.setValue(t.dataItem,this.level,s)}}return s}_moveElements(e,t){let s=document.createDocumentFragment(),i=this.hasChildren&&!this.hasPendingChildren?this.element.nextSibling:null;s.appendChild(this.element);if(i){TreeNode._assertNodeList(i);s.appendChild(i)}if(e instanceof TreeView){e._root.insertBefore(s,null);return}let o=e.element,n=o?o.parentElement:e.treeView._root;TreeNode._assertNodeList(n);const a=DropPosition;switch(t){case a.Before:n.insertBefore(s,o);break;case a.After:o=(e=e.nextSibling())?e.element:null;n.insertBefore(s,o);break;case a.Into:if(!e.hasChildren||e.hasPendingChildren){i=document.createElement("div");wijmo_1.addClass(i,TreeView._CNDL);n.insertBefore(i,o.nextSibling)}n=e.element.nextSibling;TreeNode._assertNodeList(n);n.insertBefore(s,null)}}_updateState(){this._updateEmptyState();this._updateCheckedState()}_updateEmptyState(){let e=this.element.nextSibling,t=!1;TreeNode._isNodeList(e)&&(e.childElementCount?t=!0:wijmo_1.removeChild(e));wijmo_1.toggleClass(this.element,TreeView._CEMP,!t);t||this.element.removeAttribute("aria-expanded")}_updateCheckedState(){let e=this._t,t=this.checkBox,s=this.nodes,i=0,o=0,n=!1;if(t&&s){for(let e=0;e<s.length&&!n;e++){switch(s[e].isChecked){case!0:i++;break;case!1:o++;break;case null:n=!0}i&&o&&(n=!0)}wijmo_1.setChecked(t,n?null:i>0);if(e&&e.checkedMemberPath){const s=n?null:t.checked;e._chkPath.setValue(this.dataItem,this.level,s)}}const a=this.parentNode;a&&a._updateCheckedState()}dispose(){delete this._e[TreeNode.CacheKey];this._t=null;const e=this._e.nextElementSibling;TreeNode._isNodeList(e)&&e.parentNode&&e.parentNode.removeChild(e);this.nodes&&this.nodes.forEach(e=>{e.dispose()});this._e.innerHTML="";this._e=null}static _getChildNodes(e,t){const s=[];if(TreeNode._isNodeList(t)){const i=t.children;for(let t=0;t<i.length;t++){const o=i[t];TreeNode._isNode(o)&&s.push(new TreeNode(e,o))}}return s}static _isNode(e){return e&&wijmo_1.hasClass(e,TreeView._CND)}static _isNodeList(e){return e&&wijmo_1.hasClass(e,TreeView._CNDL)}static _isEmpty(e){return TreeNode._isNode(e)&&wijmo_1.hasClass(e,TreeView._CEMP)}static _isCollapsed(e){return TreeNode._isNode(e)&&!TreeNode._isEmpty(e)&&wijmo_1.hasClass(e,TreeView._CCLD)}static _assertNode(e){wijmo_1.assert(TreeNode._isNode(e),"node expected")}static _assertNodeList(e){wijmo_1.assert(TreeNode._isNodeList(e),"nodeList expected")}}TreeNode.CacheKey="$_WJ_TV_NODE";exports.TreeNode=TreeNode;class _BindingArray{constructor(e){this.path=e}get path(){return this._path}set path(e){this._path=e;if(wijmo_1.isString(e))this._bindings=[new wijmo_1.Binding(e)];else if(wijmo_1.isArray(e)){this._bindings=[];for(let t=0;t<e.length;t++)this._bindings.push(new wijmo_1.Binding(e[t]))}else null!=e&&wijmo_1.assert(!1,"Path should be a string or an array of strings.");this._maxLevel=this._bindings?this._bindings.length-1:-1}getValue(e,t){const s=Math.min(t,this._maxLevel);return s>-1?this._bindings[s].getValue(e):null}setValue(e,t,s){const i=Math.min(t,this._maxLevel);i>-1&&this._bindings[i].setValue(e,s)}}exports._BindingArray=_BindingArray;class TreeView extends wijmo_1.Control{constructor(e,t={}){super(e);this._selNodes=new wijmo_1.ObservableArray;this._itmPath=new _BindingArray("items");this._chkPath=new _BindingArray;this._dspPath=new _BindingArray("header");this._imgPath=new _BindingArray;this._html=!1;this._animated=!0;this._chkOnClick=!1;this._collOnClick=!1;this._xpndOnClick=!0;this._xpndOnLoad=!0;this._autoColl=!0;this._showChk=!1;this._collapseWhenDisabled=!0;this._srch="";this._isReadOnly=!0;this._preserveSelNode=!1;this._allowMultiSelect=!1;this.itemsSourceChanged=new wijmo_1.Event;this.loadingItems=new wijmo_1.Event;this.loadedItems=new wijmo_1.Event;this.itemClicked=new wijmo_1.Event;this.selectedItemChanged=new wijmo_1.Event;this.checkedItemsChanged=new wijmo_1.Event;this.isCollapsedChanging=new wijmo_1.Event;this.isCollapsedChanged=new wijmo_1.Event;this.isCheckedChanging=new wijmo_1.Event;this.isCheckedChanged=new wijmo_1.Event;this.formatItem=new wijmo_1.Event(()=>{this.invalidate()});this.dragStart=new wijmo_1.Event;this.dragOver=new wijmo_1.Event;this.drop=new wijmo_1.Event;this.dragEnd=new wijmo_1.Event;this.nodeEditStarting=new wijmo_1.Event;this.nodeEditStarted=new wijmo_1.Event;this.nodeEditEnding=new wijmo_1.Event;this.nodeEditEnded=new wijmo_1.Event;this.options=t;const s=this.getTemplate();this.applyTemplate(`${wijmo_1.ControlClsNames.hostElement} ${wijmo_1.ControlClsNames.content} ${exports.TreeViewClsNames.hostElement}`,s,{_root:"root"});const i=this.hostElement;wijmo_1.setAttribute(i,"role","tree",!0);wijmo_1.addClass(this._root,TreeView._CNDL);wijmo_1.setAttribute(this._root,"role","group",!0);this.addEventListener(i,"mousedown",this._mousedown.bind(this));this.addEventListener(i,"click",this._click.bind(this));this.addEventListener(i,"keydown",this._keydown.bind(this));this.addEventListener(i,"keypress",this._keypress.bind(this));this.addEventListener(i,"wheel",e=>{i.scrollHeight>i.offsetHeight&&(e.deltaY<0&&0==i.scrollTop||e.deltaY>0&&i.scrollTop+i.offsetHeight>=i.scrollHeight)&&e.preventDefault()});this.addEventListener(i,"blur",()=>{this._edtNode&&!wijmo_1.contains(this._edtNode.element,wijmo_1.getActiveElement())&&this.finishEditing()},!0);this.addEventListener(i,"paste",e=>{if(this._edtNode&&!this.isContentHtml){const t=(e.clipboardData||window.clipboardData).getData("text"),s=window.getSelection();if(t&&s.rangeCount){s.deleteFromDocument();s.getRangeAt(0).insertNode(document.createTextNode(t));e.preventDefault()}}});this._selNodes.collectionChanged.addHandler((e,t)=>{switch(t.action){case wijmo_1.NotifyCollectionChangedAction.Add:wijmo_1.addClass(t.item.element,TreeView._CMSEL);break;case wijmo_1.NotifyCollectionChangedAction.Remove:wijmo_1.removeClass(t.item.element,TreeView._CMSEL);break;case wijmo_1.NotifyCollectionChangedAction.Change:wijmo_1.addClass(t.item.element,TreeView._CMSEL);break;case wijmo_1.NotifyCollectionChangedAction.Reset:this.hostElement.querySelectorAll("."+TreeView._CMSEL).forEach(e=>{wijmo_1.removeClass(e,TreeView._CMSEL)})}});this.initialize(t);this.refresh()}static get controlTemplate(){TreeView._ctrlTemplate||(TreeView._ctrlTemplate='<div wj-part="root"></div>');return TreeView._ctrlTemplate}static set controlTemplate(e){TreeView._ctrlTemplate=e}get itemsSource(){return this._items}set itemsSource(e){if(this._items!=e){this._items=wijmo_1.asArray(e);this.onItemsSourceChanged();this._srcChanged=!0;this._reload()}}get childItemsPath(){return this._itmPath.path}set childItemsPath(e){if(e!=this.childItemsPath){this._itmPath.path=e;this._reload()}}get displayMemberPath(){return this._dspPath.path}set displayMemberPath(e){if(e!=this.displayMemberPath){this._dspPath.path=e;this._reload()}}get imageMemberPath(){return this._imgPath.path}set imageMemberPath(e){if(e!=this.imageMemberPath){this._imgPath.path=e;this._reload()}}get checkedMemberPath(){return this._chkPath.path}set checkedMemberPath(e){if(e!=this.checkedMemberPath){this._chkPath.path=e;this._reload()}}get isContentHtml(){return this._html}set isContentHtml(e){if(e!=this._html){this._html=wijmo_1.asBoolean(e);this._reload()}}get showCheckboxes(){return this._showChk}set showCheckboxes(e){if(e!=this._showChk){this._showChk=wijmo_1.asBoolean(e);this._reload()}}get autoCollapse(){return this._autoColl}set autoCollapse(e){this._autoColl=wijmo_1.asBoolean(e)}get collapseWhenDisabled(){return this._collapseWhenDisabled}set collapseWhenDisabled(e){this._collapseWhenDisabled=wijmo_1.asBoolean(e)}get isAnimated(){return this._animated}set isAnimated(e){this._animated=wijmo_1.asBoolean(e);wijmo_1.toggleClass(this.hostElement,wijmo_1.UtilitesClsNames.animated,this._animated)}get isReadOnly(){return this._isReadOnly}set isReadOnly(e){this._isReadOnly=wijmo_1.asBoolean(e);wijmo_1.toggleClass(this.hostElement,wijmo_1.ControlStateClsNames.readOnly,this.isReadOnly)}startEditing(e){this._prevDragState=this.allowDragging;if(this.isReadOnly)return!1;e||(e=this.selectedNode);if(!e||e.isDisabled)return!1;if(!this.finishEditing())return!1;const t=e.element.querySelector("."+TreeView._CNDT);if(!t)return!1;const s=new TreeNodeEventArgs(e);if(!this.onNodeEditStarting(s))return!1;t.tabIndex=0;t.focus();t.contentEditable="true";t.style.cursor="auto";const i=document.createRange();i.selectNodeContents(t);const o=getSelection();o.removeAllRanges();o.addRange(i);this.allowDragging=!this.isTxtSelected(t);t.focus();wijmo_1.setAttribute(t,"autocomplete","off");wijmo_1.setAttribute(t,"autocorrect","off");this._edtNode=e;this.onNodeEditStarted(s);return!0}finishEditing(e){const t=this._edtNode;if(t){const s=t.element.querySelector("."+TreeView._CNDT);if(!s)return!1;const i=new TreeNodeEventArgs(t);if(!this.onNodeEditEnding(i))return!1;const o=t.dataItem,n=t.level;this.isContentHtml?e?s.innerHTML=this._dspPath.getValue(o,n):this._dspPath.setValue(o,n,s.innerHTML):e?s.textContent=this._dspPath.getValue(o,n):this._dspPath.setValue(o,n,s.textContent);document.createRange().selectNodeContents(s);getSelection().removeAllRanges();s.contentEditable="false";s.style.cursor="";this.allowDragging=this._prevDragState;this._edtNode=null;this.onNodeEditEnded(i)}return!0}get allowDragging(){return null!=this._dd}set allowDragging(e){if(e!=this.allowDragging){if(wijmo_1.asBoolean(e))this._dd=new _TreeDragDropManager(this);else{this._dd.dispose();this._dd=null}const t=this.hostElement.querySelectorAll("."+TreeView._CND);for(let e=0;e<t.length;e++){const s=t[e];wijmo_1.setAttribute(s,"draggable",!!this._dd||null)}}}get checkOnClick(){return this._chkOnClick}set checkOnClick(e){this._chkOnClick=wijmo_1.asBoolean(e)}get expandOnClick(){return this._xpndOnClick}set expandOnClick(e){this._xpndOnClick=wijmo_1.asBoolean(e)}get collapseOnClick(){return this._collOnClick}set collapseOnClick(e){this._collOnClick=wijmo_1.asBoolean(e)}get expandOnLoad(){return this._xpndOnLoad}set expandOnLoad(e){this._xpndOnLoad=wijmo_1.asBoolean(e)}get selectedItem(){return this._selNode?this._selNode.dataItem:null}set selectedItem(e){if(e!=this.selectedItem){this._isDirty&&this.refresh();this.selectedNode=e?this.getNode(e):null}}get selectedNode(){return this._selNode}set selectedNode(e){if(e!=this.selectedNode){this._prevSel=this._selNode;if(e)e.select();else if(this._selNode){const e=this._selNode.element;wijmo_1.removeClass(e,TreeView._CSEL);wijmo_1.setAttribute(e,"aria-selected",!1);this._selNode=null;this._updateFocus(this._prevSel);this.onSelectedItemChanged()}}}get selectedPath(){const e=[];for(let t=this.selectedNode;t;t=t.parentNode){const s=this._dspPath.getValue(t.dataItem,t.level);e.splice(0,0,s)}return e}get checkedItems(){if(null==this._chkItems){const e=TreeView,t=`.${e._CND}.${e._CEMP} > input:checked.${e._CNDC}`,s=this._root.querySelectorAll(t);this._chkItems=[];for(let t=0;t<s.length;t++){const i=s[t].parentElement[e._DATAITEM_KEY];this._chkItems.push(i)}}return this._chkItems}set checkedItems(e){if(this.showCheckboxes){this._isDirty&&this.refresh();const t=TreeView,s=`.${t._CND}.${t._CEMP}`,i=this._root.querySelectorAll(s);for(let t=0;t<i.length;t++){const s=new TreeNode(this,i[t]),o=e.indexOf(s.dataItem)>-1;s.isChecked!=o&&(s.isChecked=o)}}}checkAllItems(e){if(this.showCheckboxes){const t=TreeView,s=`.${t._CND}.${t._CEMP}`,i=this._root.querySelectorAll(s);for(let t=0;t<i.length;t++){const s=new TreeNode(this,i[t]);s.isChecked!=e&&(s.isChecked=e)}}}get totalItemCount(){return this.hostElement.querySelectorAll("."+TreeView._CND).length}get lazyLoadFunction(){return this._lazyLoad}set lazyLoadFunction(e){if(e!=this._lazyLoad){this._lazyLoad=wijmo_1.asFunction(e);this._reload()}}get preserveSelectedNode(){return this._preserveSelNode}set preserveSelectedNode(e){this._preserveSelNode=wijmo_1.asBoolean(e,!1)}get selectedNodes(){return this._selNodes}get allowMultiSelect(){return this._allowMultiSelect}set allowMultiSelect(e){this._allowMultiSelect=wijmo_1.asBoolean(e,!1);this._allowMultiSelect&&this.selectedNodes.forEach(e=>{wijmo_1.addClass(e.element,TreeView._CMSEL)})}getFirstNode(e,t){let s=this.hostElement.querySelector("."+TreeView._CND),i=s?new TreeNode(this,s):null;e&&i&&!i.element.offsetHeight&&(i=i.next(e,t));t&&i&&i.isDisabled&&(i=i.next(e,t));return i}getLastNode(e,t){let s=this.hostElement.querySelectorAll(`.${TreeView._CND}:last-child`),i=s.length?new TreeNode(this,s[s.length-1]):null;e&&i&&!i.element.offsetHeight&&(i=i.previous(e,t));t&&i&&i.isDisabled&&(i=i.previous(e,t));return i}get nodes(){return TreeNode._getChildNodes(this,this._root)}getNode(e){this._isDirty&&this._loadTree();const t=this.hostElement.querySelectorAll("."+TreeView._CND);for(let s=0;s<t.length;s++){const i=t[s];if(i[TreeView._DATAITEM_KEY]==e)return new TreeNode(this,i)}return null}addChildNode(e,t){const s=this._createNode(t),i=this.nodes;i?e<i.length?s.move(i[e],DropPosition.Before):s.move(i[i.length-1],DropPosition.After):s.move(this,DropPosition.Into);return s}collapseToLevel(e){const t=this._animated,s=this._autoColl;this._animated=this._autoColl=!1;this._collapseToLevel(this.nodes,e,0);this._animated=t;this._autoColl=s}loadTree(e){this._loadTree(e)}onItemsSourceChanged(e){this.itemsSourceChanged.raise(this,e)}onLoadingItems(e){this.loadingItems.raise(this,e);return!e.cancel}onLoadedItems(e){this.loadedItems.raise(this,e)}onItemClicked(e){this.itemClicked.raise(this,e)}onSelectedItemChanged(e){this.selectedItemChanged.raise(this,e)}onCheckedItemsChanged(e){this._chkItems=null;this.checkedItemsChanged.raise(this,e)}onIsCollapsedChanging(e){this.isCollapsedChanging.raise(this,e);return!e.cancel}onIsCollapsedChanged(e){this.isCollapsedChanged.raise(this,e)}onIsCheckedChanging(e){this.isCheckedChanging.raise(this,e);return!e.cancel}onIsCheckedChanged(e){this.isCheckedChanged.raise(this,e)}onFormatItem(e){this.formatItem.raise(this,e)}onDragStart(e){this.dragStart.raise(this,e);return!e.cancel}onDragOver(e){this.dragOver.raise(this,e);return!e.cancel}onDrop(e){this.drop.raise(this,e);return!e.cancel}onDragEnd(e){this.dragEnd.raise(this,e)}onNodeEditStarting(e){this.nodeEditStarting.raise(this,e);return!e.cancel}onNodeEditStarted(e){this.nodeEditStarted.raise(this,e)}onNodeEditEnding(e){this.nodeEditEnding.raise(this,e);return!e.cancel}onNodeEditEnded(e){this.nodeEditEnded.raise(this,e)}refresh(e=!0){super.refresh(e);this.isUpdating||!this._isDirty||this.disposed||this._loadTree(!0)}_updateFocus(e){this._updateTabIndex();if(this.containsFocus()){const e=this._selNode;e?e.element.focus():this.hostElement.focus()}e&&(e.element.tabIndex=-1)}_updateTabIndex(){const e=this._selNode;e&&(e.element.tabIndex=this._orgTabIndex);this.hostElement.tabIndex=e||this.isDisabled?-1:this._orgTabIndex}_setTabOrder(e){this._orgTabIndex=e;this._updateTabIndex()}_raiseCheckedItemsChanged(){this._toItemsChanged&&clearTimeout(this._toItemsChanged);this._toItemsChanged=setTimeout(()=>{this._toItemsChanged=null;this.onCheckedItemsChanged()},10)}_reload(){this._isDirty=!0;this.invalidate()}_createNode(e){const t=Object.assign({},this.options);this.formatItem&&(t.formatItem=this.formatItem.getHandler());return new TreeView(document.createElement("div"),Object.assign({},t,{expandOnLoad:this.expandOnLoad,allowDragging:this.allowDragging,lazyLoadFunction:this.lazyLoadFunction,childItemsPath:this.childItemsPath,displayMemberPath:this.displayMemberPath,imageMemberPath:this.imageMemberPath,isContentHtml:this.isContentHtml,showCheckboxes:this.showCheckboxes,itemsSource:[e]})).getFirstNode()}_getCollapseIconWidthBounds(e){const t=getComputedStyle(e,":before"),s=parseFloat(getComputedStyle(e).paddingLeft);let i=0,o=0;if("auto"!==t.width)if("none"==t.transform){i=s;o=parseFloat(t.width)+s}else{const e=parseFloat(t.height),n=(parseFloat(t.width)-e)/2;i=s+n;o=parseFloat(t.height)+s+n}else;if(this.rightToLeft){const t=o-i;o=e.clientWidth-i;i=o-t}return{left:i,right:o}}_mousedown(e){if(!e.defaultPrevented){const t=wijmo_1.closestClass(e.target,TreeView._CND),s=t?new TreeNode(this,t):null;if(s&&!s.isDisabled){const i=this._getCollapseIconWidthBounds(t),o=t==e.target&&e.offsetX>=i.left&&e.offsetX<=i.right;if(!this.preserveSelectedNode||!o)if((e.ctrlKey||e.metaKey)&&this.allowMultiSelect)s.isSelected?s.deSelect():s.select();else if(e.shiftKey&&this.allowMultiSelect){let e=this.selectedNode;e||(e=this._prevSel);if(e){const t=this._getNodesBetween(s.element,e.element),i=new Set(this.selectedNodes);for(let e=t.length-1;e>=0;e--){const s=new TreeNode(this,t[e]);i.has(s)?i.delete(s):s.select(!0)}const o=e.equals(this.selectedNode)&&i.size>0;Array.from(i).forEach(e=>{e.deSelect(!0)});e.select();o&&this.onSelectedItemChanged()}}else{s.isSelected?this._prevSel=s:this._clearMultiSelectedNodes();this.selectedNode=s;s.select()}}}}_getNodesBetween(e,t){let s=e,i=t;if(this._getOffsetFromRoot(s)>this._getOffsetFromRoot(t)){s=t;i=e}const o=[],n=this.hostElement.querySelectorAll("."+TreeView._CND);let a=!1;for(let e=n.length-1;e>=0;e--){const t=n[e];t==i&&(a=!0);a&&o.unshift(t);if(t==s)break}return o}_getOffsetFromRoot(e){let t=0;for(;e!=this.hostElement;){t+=e.offsetTop;e=e.parentElement}return t}_checkCollapseIconClick(e){if(e.defaultPrevented)return;const t=wijmo_1.closestClass(e.target,TreeView._CND),s=t?new TreeNode(this,t):null;if(s&&!s.isDisabled){const i=this._getCollapseIconWidthBounds(t),o=t==e.target&&e.offsetX>=i.left&&e.offsetX<=i.right;if(this.preserveSelectedNode&&o){(e.ctrlKey||e.metaKey)&&!s.hasPendingChildren?this.collapseToLevel(s.isCollapsed?s.level+1:s.level):s.isCollapsed=!s.isCollapsed;this.isAnimated?this._setFocusTimer=setTimeout(()=>{this.focus()},TreeView._AN_DLY+wijmo_1.Control._ANIM_DEF_STEP):this.focus();e.preventDefault()}}}_click(e){this._checkCollapseIconClick(e);if(!e.defaultPrevented){const t=wijmo_1.closestClass(e.target,TreeView._CND);if(t){let s=new TreeNode(this,t),i="input."+TreeView._CNDC,o=wijmo_1.closest(e.target,i),n=t.getBoundingClientRect(),a=this.rightToLeft?n.right-e.clientX:e.clientX-n.left;if(s.isDisabled)return;if(!o&&s.equals(this._edtNode))return;!o&&this._chkOnClick&&(!s.hasChildren||a>t.offsetHeight)&&(o=t.querySelector(i));const l=this._prevSel,r=(e.shiftKey||e.ctrlKey||e.metaKey)&&this.allowMultiSelect;if(!r){this.selectedNode=s;this._clearMultiSelectedNodes(!0)}t.focus();if(o){e.preventDefault();e.stopPropagation();this._updateCheckedTimer=setTimeout(()=>{s.isChecked=!s.isChecked})}if(!o){let i=(e.ctrlKey||e.metaKey)&&!s.hasPendingChildren,o=s.isCollapsed,n=!1;if(s.hasChildren)if(a<=t.offsetHeight){n=!0;i?this.collapseToLevel(o?s.level+1:s.level):s.isCollapsed=!o}else if(this.expandOnClick&&o){n=!0;i?this.collapseToLevel(s.level+1):s.isCollapsed=!1}else if(this.collapseOnClick&&!o){n=!0;i?this.collapseToLevel(s.level):s.isCollapsed=!0}n&&i&&this.selectedNode&&this.selectedNode.ensureVisible();if(!n&&!this.isReadOnly&&!r){const e=this.selectedNode;e&&e.equals(l)&&this.startEditing()}}this.selectedItem&&this.onItemClicked()}}}_keydown(e){if(!e.defaultPrevented){let t,s=this._getKeyCode(e),i=this._selNode,o=!0;if(!i)switch(s){case wijmo_1.Key.Up:case wijmo_1.Key.Down:case wijmo_1.Key.Left:case wijmo_1.Key.Right:case wijmo_1.Key.Enter:case wijmo_1.Key.Home:case wijmo_1.Key.End:t=this.getFirstNode(!0,!0);if(t){this.selectedNode=t;e.preventDefault();return}}if(i&&!i.isDisabled){switch(s){case wijmo_1.Key.F2:this.startEditing();e.preventDefault();break;case wijmo_1.Key.Escape:this.finishEditing(!0);e.preventDefault();break;case wijmo_1.Key.Up:case wijmo_1.Key.Down:this.finishEditing();break;case wijmo_1.Key.Enter:if(this._edtNode){this.finishEditing();s=wijmo_1.Key.Down}else{this.startEditing();e.preventDefault()}}if(this._edtNode)return;if(this.rightToLeft)switch(s){case wijmo_1.Key.Left:s=wijmo_1.Key.Right;break;case wijmo_1.Key.Right:s=wijmo_1.Key.Left}switch(s){case wijmo_1.Key.Left:if(!i.isCollapsed&&i.hasChildren)i.isCollapsed=!0;else{i=i.parentNode;i&&i.select()}break;case wijmo_1.Key.Right:i.isCollapsed&&i.hasChildren&&(i.isCollapsed=!1);break;case wijmo_1.Key.Up:t=i.previous(!0,!0);break;case wijmo_1.Key.Down:t=i.next(!0,!0);break;case wijmo_1.Key.Home:t=this.getFirstNode(!0,!0);break;case wijmo_1.Key.End:t=this.getLastNode(!0,!0);break;case wijmo_1.Key.Space:if(this.selectedItem){const e=i.checkBox;e&&(i.isChecked=e.indeterminate||!e.checked)}break;case wijmo_1.Key.Enter:this.selectedItem&&this.onItemClicked();break;default:o=!1}if(o){e.preventDefault();e.shiftKey?t&&t.isSelected&&i.deSelect(!0):this._clearMultiSelectedNodes(!t);t&&t.select()}}}}_keypress(e){if(!e.defaultPrevented){if(e.ctrlKey||e.metaKey||e.altKey)return;if(e.target instanceof HTMLInputElement)return;if(this._edtNode)return;if(e.charCode>32&&this.startEditing(this.selectedNode)){const t=wijmo_1.getActiveElement();if(wijmo_1.contains(this._edtNode.element,t)){t.textContent=String.fromCharCode(e.charCode);e.preventDefault();const s=document.createRange();s.selectNodeContents(t);s.collapse(!1);const i=getSelection();i.removeAllRanges();i.addRange(s)}return}if(e.charCode>32||32==e.charCode&&this._srch){e.preventDefault();this._srch+=String.fromCharCode(e.charCode).toLowerCase();this._toSrch&&clearTimeout(this._toSrch);this._toSrch=setTimeout(()=>{this._toSrch=null;this._srch=""},TreeView._AS_DLY);let t=this._findNext();if(null==t&&this._srch.length>1){this._srch=this._srch[this._srch.length-1];t=this._findNext()}null!=t&&(this.selectedItem=t)}}}_findNext(){if(this.hostElement&&this.selectedItem){let e=this.getNode(this.selectedItem),t=e,s=!1,i=!1;1==this._srch.length&&(i=!0);for(;t;){if(!t.isDisabled&&!i){if(0==t.element.textContent.trim().toLowerCase().indexOf(this._srch))return t.dataItem}let o=t.next(!0,!0);if(o==e&&s)break;if(!o&&!s){o=this.getFirstNode(!0,!0);s=!0}t=o;i=!1}}return null}_loadTree(e){const t=this._root;if(t){if(!this.onLoadingItems(new wijmo_1.CancelEventArgs))return;const s=this.containsFocus(),i=this._srcChanged;this._isDirty=!1;this._srcChanged=!1;const o=this.selectedItem;this.selectedItem=null;const n=[];if(this.allowMultiSelect){this.selectedNodes.forEach(e=>{n.push(e.dataItem)});this.selectedNodes.beginUpdate();this.selectedNodes.clear();this.selectedNodes.endUpdate(!0)}this._chkItems=null;this._ldLvl=-1;let a;if(e&&wijmo_1.isFunction(window.Map)&&!i&&this.nodes.length>0){a=new Map;const e=this.hostElement.querySelectorAll("."+TreeView._CND);for(let t=0;t<e.length;t++){const s=e[t];wijmo_1.hasClass(s,TreeView._CCLD)&&a.set(s[TreeView._DATAITEM_KEY],!0)}}t.innerHTML="";this._items&&this._items.forEach(e=>{this._addItem(t,0,e)});if(a){const e=this.hostElement.querySelectorAll("."+TreeView._CND);for(let t=0;t<e.length;t++){const s=e[t],i=TreeNode._isNodeList(s.nextElementSibling),o=!TreeNode._isEmpty(s),n=a.get(s[TreeView._DATAITEM_KEY]);o&&(n||i)&&wijmo_1.toggleClass(s,TreeView._CCLD,1==n);wijmo_1.setAttribute(s,"aria-expanded",o?(!wijmo_1.hasClass(s,TreeView._CCLD)).toString():null)}}s&&!this.containsFocus()&&this.focus();this.allowMultiSelect&&n.forEach(e=>{const t=this.getNode(e);t&&t.select(!0)});this.selectedItem=o;this.onLoadedItems();this._ldLvl=-1;this._srcChanged=!1}}_addItem(e,t,s){let i,o=this._dspPath.getValue(s,t),n=this._imgPath.getValue(s,t),a=wijmo_1.asArray(this._itmPath.getValue(s,t),!0);const l=document.createElement("div");wijmo_1.addClass(l,TreeView._CND);l.tabIndex=-1;wijmo_1.setAttribute(l,"role","treeitem",!0);wijmo_1.setAttribute(l,"aria-selected",!1);const r=document.createElement("span");this.isContentHtml?r.innerHTML=o:r.textContent=o;wijmo_1.addClass(r,TreeView._CNDT);l.appendChild(r);if(n){const e=document.createElement("img");e.src=n;l.insertBefore(e,l.firstChild)}if(this._showChk&&!this._lazyLoad){i=document.createElement("input");i.type="checkbox";i.tabIndex=-1;wijmo_1.addClass(i,TreeView._CNDC);l.insertBefore(i,l.firstChild)}this._dd&&l.setAttribute("draggable","true");e.appendChild(l);l[TreeView._DATAITEM_KEY]=s;a&&0==a.length&&!this.lazyLoadFunction&&(a=null);if(a){let s=this.expandOnLoad;if(t>this._ldLvl&&s){this._ldLvl=t;if(0==a.length){s=!1;wijmo_1.addClass(l,TreeView._CCLD)}}else{s=!1;wijmo_1.addClass(l,TreeView._CCLD);t<this._ldLvl&&(this._ldLvl=100)}if(a.length>0){const s=document.createElement("div");s.tabIndex=-1;wijmo_1.addClass(s,TreeView._CNDL);for(let e=0;e<a.length;e++)this._addItem(s,t+1,a[e]);e.appendChild(s);wijmo_1.setAttribute(s,"role","group",!0)}wijmo_1.setAttribute(l,"aria-expanded",s.toString(),!0)}else wijmo_1.addClass(l,TreeView._CEMP);if(i&&this.checkedMemberPath)if(a&&a.length){new TreeNode(this,l)._updateCheckedState()}else i.checked=this._chkPath.getValue(s,t);this.formatItem.hasHandlers&&this.onFormatItem(new FormatNodeEventArgs(s,l,t))}_collapseToLevel(e,t,s){for(let i=0;i<e.length;i++){const o=e[i];if(!o.hasPendingChildren){o.isCollapsed=s>=t;o.hasChildren&&this._collapseToLevel(o.nodes,t,s+1)}}}_lazyLoadNode(e){const t=this.hostElement;if(!wijmo_1.hasClass(t,TreeView._CLDG)){wijmo_1.addClass(t,TreeView._CLDG);wijmo_1.addClass(e.element,TreeView._CLDG);this.lazyLoadFunction(e,this._lazyLoadCallback.bind(e))}}_lazyLoadCallback(e){this.treeView._lazyLoadNodeDone(this,e)}_lazyLoadNodeDone(e,t){const s=TreeView;wijmo_1.removeClass(e.element,s._CLDG);wijmo_1.removeClass(this.hostElement,s._CLDG);const i=e.dataItem,o=e.level,n=wijmo_1.asArray(t,!0);if(null==n||0==n.length){this._itmPath.setValue(i,o,null);wijmo_1.addClass(e.element,s._CEMP);wijmo_1.removeClass(e.element,s._CCLD)}else if(n.length){this._itmPath.setValue(i,o,n);const t=document.createElement("div"),a=e.element;wijmo_1.addClass(t,s._CNDL);a.parentElement.insertBefore(t,a.nextSibling);for(let e=0;e<n.length;e++)this._addItem(t,o+1,n[e]);e.isCollapsed=!1}}isTxtSelected(e){const t=window.getSelection();return t.anchorNode===e&&t.toString().length>0}_clearMultiSelectedNodes(e=!1){for(let t=this._selNodes.length-1;t>=0;t--)e&&this._selNodes[t]==this.selectedNode||this._selNodes[t].deSelect(!0)}dispose(){if(this._toSrch){clearTimeout(this._toSrch);this._toSrch=null}if(this._toItemsChanged){clearTimeout(this._toItemsChanged);this._toItemsChanged=null}if(this._updateCheckedTimer){clearTimeout(this._updateCheckedTimer);this._updateCheckedTimer=null}if(this._setFocusTimer){clearTimeout(this._setFocusTimer);this._setFocusTimer=null}if(this._dd){this._dd.dispose();this._dd=null}this._prevSel=null;if(this._edtNode){const e=this._edtNode.element.querySelector("."+TreeView._CNDT);e&&delete e.contentEditable;this._edtNode=null}this._chkItems=null;this._lazyLoad=null;this._items=null;this.options=null;this._itmPath=null;this._chkPath=null;this._dspPath=null;this._imgPath=null;if(this._selNodes&&this._selNodes.length>0){this._selNodes.forEach(e=>{e.dispose()});this._selNodes=null}this.nodes&&this.nodes.length>0&&this.nodes.forEach(e=>{e.dispose()});this.formatItem&&this.formatItem.hasHandlers&&this.formatItem.removeAllHandlers();this._selNodes&&this._selNodes.collectionChanged&&this._selNodes.collectionChanged.removeAllHandlers();const e=this.hostElement;if(e){e.querySelectorAll("."+TreeView._CND).forEach(e=>{e[TreeView._DATAITEM_KEY]&&delete e[TreeView._DATAITEM_KEY];e[TreeNode.CacheKey]&&delete e[TreeNode.CacheKey]});e.querySelectorAll("."+TreeView._CLDG).forEach(e=>{wijmo_1.removeClass(e,TreeView._CLDG)})}if(this._root){this._root.innerHTML="";this._root=null}this._srch="";super.dispose()}}TreeView._DATAITEM_KEY="wj-Data-Item";TreeView._AS_DLY=600;TreeView._AN_DLY=200;TreeView._CND=exports.TreeViewClsNames.node;TreeView._CNDL=exports.TreeViewClsNames.nodeList;TreeView._CEMP=wijmo_1.ControlStateClsNames.empty;TreeView._CNDT=exports.TreeViewClsNames.nodeText;TreeView._CNDC=exports.TreeViewClsNames.nodeCheck;TreeView._CSEL=wijmo_1.ControlStateClsNames.selected;TreeView._CMSEL=wijmo_1.ControlStateClsNames.multiSelected;TreeView._CCLD=wijmo_1.ControlStateClsNames.collapsed;TreeView._CCLG=wijmo_1.ControlStateClsNames.collapsing;TreeView._CLDG=wijmo_1.ControlStateClsNames.loading;TreeView._ctrlTemplate="";exports.TreeView=TreeView;class _TreeDragDropManager{constructor(e){this._tree=wijmo_1.asType(e,TreeView);this._dragstartBnd=this._dragstart.bind(this);this._dragoverBnd=this._dragover.bind(this);this._dropBnd=this._drop.bind(this);this._dragendBnd=this._dragend.bind(this);_TreeDragDropManager._activeTreeCount++;const t=this._tree,s=t.hostElement;t.addEventListener(s,"dragstart",this._dragstartBnd);t.addEventListener(s,"dragover",this._dragoverBnd);t.addEventListener(s,"dragleave",this._dragoverBnd);t.addEventListener(s,"drop",this._dropBnd);t.addEventListener(s,"dragend",this._dragendBnd);t.addEventListener(s,"keydown",this._keydown)}dispose(){_TreeDragDropManager._activeTreeCount--;if(0===_TreeDragDropManager._activeTreeCount){wijmo_1.removeChild(_TreeDragDropManager._dMarker);_TreeDragDropManager._markerInstance=null;if(_TreeDragDropManager._drgSrc){_TreeDragDropManager._drgSrc.dispose();_TreeDragDropManager._drgSrc=null}}}_dragstart(e){if(!e.defaultPrevented){const t=this._tree,s=wijmo_1.closestClass(e.target,TreeView._CND),i=_TreeDragDropManager;i._drgSrc=TreeNode._isNode(s)?new TreeNode(t,s):null;if(i._drgSrc){const e=new TreeNodeEventArgs(i._drgSrc);t.onDragStart(e)||(i._drgSrc=null)}if(i._drgSrc&&e.dataTransfer){wijmo_1._startDrag(e.dataTransfer,"copyMove");e.stopPropagation()}else e.preventDefault()}}_removeDragFeedback(){document.body.querySelectorAll("."+_TreeDragDropManager.CLS_DRAG_FEEDBACK).forEach(e=>{e.remove()})}_dragover(e){this._handleDragDrop(e,!1)}_drop(e){this._handleDragDrop(e,!0)}_dragend(e){_TreeDragDropManager._drgSrc=null;this._showDragMarker();this._removeDragFeedback();this._tree.onDragEnd()}_keydown(e){e.defaultPrevented||e.keyCode==wijmo_1.Key.Escape&&this._dragendBnd(null)}static get _dMarker(){_TreeDragDropManager._markerInstance||(_TreeDragDropManager._markerInstance="undefined"!=typeof window?wijmo_1.createElement(`<div class="${exports.TreeViewClsNames.marker}">&nbsp;</div>`):null);return _TreeDragDropManager._markerInstance}_handleDragDrop(e,t){let s,i,o=this._tree,n=_TreeDragDropManager,a=DropPosition,l=a.Into;if(!e.defaultPrevented&&n._drgSrc){let r=document.elementFromPoint(e.clientX,e.clientY),h=wijmo_1.closestClass(r,TreeView._CND);if(null==h){const e=wijmo_1.Control.getControl(wijmo_1.closest(r,"."+exports.TreeViewClsNames.hostElement));e instanceof TreeView&&0==e.totalItemCount&&(h=e.hostElement)}h==n._drgSrc.element&&(h=null);if(h&&o.allowMultiSelect&&TreeNode._isNode(h)&&o.hostElement.contains(n._drgSrc.element)){const e=new TreeNode(o,h);if(e.isSelected)h=null;else for(let t=o.selectedNodes.length-1;t>=0;t--){const s=o.selectedNodes[t];if(s.hasChildren&&s._contains(e)){h=null;break}}}if(h){i=h.getBoundingClientRect();let t=new TreeNode(o,h),r=t.hasPendingChildren?i.height/2:i.height/3;if(null==t.element){i=wijmo_1.Rect.fromBoundingRect(i);i.inflate(-12,-12);l=a.Before}else if(e.clientY<i.top+r)l=a.Before;else if(e.clientY>i.bottom-r||t.hasPendingChildren){l=a.After;if(t.hasChildren&&!t.isCollapsed&&!t.hasPendingChildren){l=a.Before;t=t.next(!0,!1);h=t.element;i=h.getBoundingClientRect()}}if(n._drgSrc._contains(t))h=null;else{s=new TreeNodeDragDropEventArgs(n._drgSrc,t,l);s.cancel=n._drgSrc.treeView!=t.treeView;o.onDragOver(s)||(h=null)}}if(h){l=s.position;if(l==a.Before){const e=s.dragSource.next(!0,!1);e&&e.element==h&&(h=null)}else if(l==a.After){const e=s.dragSource.previous(!0,!1);e&&e.element==h&&(h=null)}}if(h&&!t){e.dataTransfer.dropEffect="move";e.preventDefault();e.stopPropagation();this._showDragMarker(i,l)}else this._showDragMarker();if(h&&t&&o.onDrop(s)){o.hostElement.focus();if(o.allowMultiSelect){const e=this._getTopLevelSelectedNodes(),t=s.dragSource.treeView,i=s.dropTarget.treeView;s.position==DropPosition.After&&e.reverse();e.forEach(e=>{e.move(s.dropTarget,s.position)});if(t!=i){t.selectedNodes.clear();t.selectedNode=null;e.forEach(e=>{e.select()})}}else{const e=s.dragSource;e.move(s.dropTarget,s.position);e.ensureVisible();e.select()}}}}_getTopLevelSelectedNodes(){const e=_TreeDragDropManager._drgSrc.treeView,t=[];e.hostElement.querySelectorAll(`.${TreeView._CMSEL} , .${TreeView._CSEL}`).forEach(s=>{const i=new TreeNode(e,s);((e,t)=>{if(!t)return!1;for(let s=0;s<t.length;s++)if(t[s]._contains(e))return!0;return!1})(i,t)||t.push(i)});return t}_showDragMarker(e,t){const s=this._tree,i=_TreeDragDropManager._dMarker.parentElement;if(e){const o=s.hostElement.getBoundingClientRect(),n=t==DropPosition.After?e.bottom:e.top,a={top:Math.round(n-o.top+s.hostElement.scrollTop-2),width:"75%",height:t==DropPosition.Into?e.height:0,opacity:t==DropPosition.Into?"0.15":""};wijmo_1.toggleClass(_TreeDragDropManager._dMarker,exports.TreeViewClsNames.lineMarker,t!==DropPosition.Into);s.rightToLeft?a.right=Math.round(o.right-e.right):a.left=Math.round(e.left-o.left);wijmo_1.setCss(_TreeDragDropManager._dMarker,a);i!=s._root&&s._root.appendChild(_TreeDragDropManager._dMarker)}else i&&i.removeChild(_TreeDragDropManager._dMarker)}}_TreeDragDropManager.CLS_DRAG_FEEDBACK=exports.TreeViewClsNames.dragFeedback;_TreeDragDropManager.CLS_DRAG_ITEMCOUNT=exports.TreeViewClsNames.dragItemCount;_TreeDragDropManager.CLS_DRAG_ITEMCOUNT_LARGE=exports.TreeViewClsNames.largerDragItemCount;_TreeDragDropManager._activeTreeCount=0;exports._TreeDragDropManager=_TreeDragDropManager;wijmo_1._registerModule("wijmo.nav",selfModule);
package/es2015-esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * Wijmo Library 5.20261.45-nightly.d20251218.t163151
3
+ * Wijmo Library 5.20261.45-nightly.d20260105.t163143
4
4
  * https://developer.mescius.com/wijmo
5
5
  *
6
6
  * Copyright(c) MESCIUS inc. All rights reserved.
@@ -11,4 +11,4 @@
11
11
  *
12
12
  */
13
13
 
14
- import{Binding,isString,isArray,assert,EventArgs,asType,asEnum,_startDrag,CancelEventArgs,hasClass,removeClass,addClass,toggleClass,setAttribute,setChecked,enable,isFunction,asBoolean,removeChild,animate as coreAnimate,Control,asArray,asFunction,closest,closestClass,getActiveElement,contains,Key,Event,ObservableArray,NotifyCollectionChangedAction,ControlStateClsNames,ControlClsNames,UtilitesClsNames,createElement,Rect,setCss,asInt,animate,getElement,isBoolean,_registerModule}from"@mescius/wijmo";import*as selfModule from"@mescius/wijmo.nav";export const AccordionClsNames={header:"wj-header",hostElement:"wj-accordion",showIcons:"wj-show-icons",activeContent:"wj-active-content"};export const TabPanelClsNames={hostElement:"wj-tabpanel",tabHeader:"wj-tabheader",tabHeaders:"wj-tabheaders",tabPane:"wj-tabpane",tabPanes:"wj-tabpanes",screenReaderOnly:"wj-sr-only"};export const TreeViewClsNames={dragFeedback:"wj-tv-drag-feedback",dragItemCount:"wj-tv-drag-ic",hostElement:"wj-treeview",largerDragItemCount:"wj-larger-drag-ic",marker:"wj-marker",lineMarker:"wj-line-marker",node:"wj-node",nodeCheck:"wj-node-check",nodeList:"wj-nodelist",nodeText:"wj-node-text"};export class TabPanel extends Control{constructor(e,t,s,i){super(e,null,!0);this._tabs=new ObservableArray;this._selectedIndex=-1;this._animated=!0;this._autoSwitch=!0;this._isInitialized=!1;this.selectedIndexChanged=new Event;let l=this.hostElement,n=[];if(!s)for(;l.firstElementChild;){let e=l.firstElementChild;l.removeChild(e);i||n.push(e)}let a=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${TabPanelClsNames.hostElement} ${UtilitesClsNames.animated}`,a,{_dRoot:"root",_dTabHeaders:"tabheaders",_dTabPanes:"tabpanes",_tabStatus:"tab-select-status"});l.tabIndex=-1;this._dRoot.tabIndex=this._dTabHeaders.tabIndex=this._dTabPanes.tabIndex=-1;t&&isBoolean(t.isAnimated)&&(this.isAnimated=t.isAnimated);this.addEventListener(l,"click",this._click.bind(this));this.addEventListener(l,"keydown",this._keydown.bind(this));this._tabs.collectionChanged.addHandler(this._populateControl.bind(this));this.tabs.deferUpdate(()=>{n.forEach(e=>{assert(2==e.childElementCount,"TabPanel children should contain header and pane elements");this.tabs.push(new Tab(e.children[0],e.children[1]))})});this.initialize(t);if(this.selectedIndex<0&&this.tabs.length)this.selectedIndex=0;else{this._isInitialized=!0;this.onSelectedIndexChanged();delete this._isInitialized}}static get controlTemplate(){TabPanel._ctrlTemplate||(TabPanel._ctrlTemplate=`<div wj-part="root"><div wj-part="tabheaders" class="${TabPanelClsNames.tabHeaders}" role="tablist"></div><div wj-part="tabpanes" class="${TabPanelClsNames.tabPanes}"></div><div wj-part="tab-select-status" aria-live="polite" class="${TabPanelClsNames.screenReaderOnly}"></div></div>`);return TabPanel._ctrlTemplate}static set controlTemplate(e){TabPanel._ctrlTemplate=e}get tabs(){return this._tabs}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){if((e=asInt(e,!1))!=this._selectedIndex){this._selectedIndex=e;this._updateContent();this.onSelectedIndexChanged();this.tabs[e]&&this.tabs[e].header&&(this._tabStatus.textContent=""+this.tabs[e].header.textContent)}else"Angular2"==this.workingAs&&this._updateContent()}get selectedTab(){let e=this._selectedIndex;return e>-1?this._tabs[e]:null}set selectedTab(e){let t=-1;for(let s=0;s<this._tabs.length&&t<0;s++)this._tabs[s]==e&&(t=s);this.selectedIndex=t}get isAnimated(){return this._animated}set isAnimated(e){this._animated=asBoolean(e);toggleClass(this.hostElement,UtilitesClsNames.animated,this._animated)}get autoSwitch(){return this._autoSwitch}set autoSwitch(e){if(e!=this._autoSwitch){this._autoSwitch=asBoolean(e);this._updateContent()}}getTab(e){for(let t=0;t<this._tabs.length;t++){let s=this._tabs[t];if(s.header.id==e||s.pane.id==e)return s}for(let t=0;t<this._tabs.length;t++){let s=this._tabs[t];if(s.header.textContent==e)return s}return null}onSelectedIndexChanged(e){this.selectedIndexChanged.raise(this,e)}_populateControl(){this._removeChildren(this._dTabHeaders);this._removeChildren(this._dTabPanes);let e=-1;this._tabs.forEach((t,s)=>{assert(t instanceof Tab,"tabs array must contain Tab objects.");t._setPanel(this);let i=t.header;addClass(i,TabPanelClsNames.tabHeader);setAttribute(i,"role","tab");this._dTabHeaders.appendChild(i);let l=t.pane;addClass(l,TabPanelClsNames.tabPane);setAttribute(l,"role","tabpanel");setAttribute(l,"aria-labelledby",i.id?i.id:null);this._dTabPanes.appendChild(l);e<0&&(hasClass(i,ControlStateClsNames.active)||"true"==i.getAttribute("aria-selected"))&&(e=s)});e<0&&this._tabs.length>0&&(e=0);e>-1?this.selectedIndex=e:this.selectedIndex>-1&&this.selectedIndex<this._tabs.length&&this._updateContent();this._validateSelection()}_validateSelection(){let e=this.selectedTab;if(e&&(e.isDisabled||!e.isVisible)){let e=this._getNextIndex(this.selectedIndex,1);e<0&&(e=this._getNextIndex(this.selectedIndex,-1));this.selectedIndex=e}}_updateContent(){let e=contains(this._dTabHeaders,getActiveElement()),t=this._dTabHeaders.children,s=this._dTabPanes.children,i=this._selectedIndex;if(i>-1&&i<s.length){let e=s[i],t=e.style;if(this.isAnimated){this._eAnim&&(this._eAnim.style.opacity="");this._toAnim&&clearInterval(this._toAnim);t.opacity="0";this._eAnim=e;this._toAnim=animate(e=>{if(1==e){this._eAnim=null;this._toAnim=null;t.opacity=""}else t.opacity=e.toString()})}else t.opacity=""}for(let l=0;l<t.length;l++){let n=l==i,a=t[l];setAttribute(a,"aria-selected",n);toggleClass(a,ControlStateClsNames.active,n);let r=s[l];toggleClass(r,ControlStateClsNames.active,n);a.tabIndex=n||!this._autoSwitch?this._orgTabIndex:-1;if(n){e&&a.focus();this._szObserver||Control.invalidateAll(r)}}}_removeChildren(e){for(;e.firstChild;)e.removeChild(e.firstChild)}_click(e){let t=this._getTabIndex(e.target);if(t>-1){let e=this._tabs[t];!e.isDisabled&&e.isVisible&&(this.selectedIndex=t)}}_keydown(e){if(!e.defaultPrevented){let t=this._getTabIndex(getActiveElement());if(t>-1){let s=this._getKeyCode(e);switch(s){case Key.Left:case Key.Up:case Key.Right:case Key.Down:case Key.Home:case Key.PageUp:case Key.End:case Key.PageDown:switch(s){case Key.Left:case Key.Up:t=this._getNextIndex(t,-1);break;case Key.Right:case Key.Down:t=this._getNextIndex(t,1);break;case Key.Home:case Key.PageUp:t=this._getNextIndex(-1,1);break;case Key.End:case Key.PageDown:t=this._getNextIndex(this._tabs.length,-1)}t>-1&&(this._autoSwitch?this.selectedIndex=t:this._tabs[t].header.focus());e.preventDefault();break;case Key.Enter:case Key.Space:if(t>-1){this._tabs[t].header.click()}e.preventDefault()}}}}_getTabIndex(e){let t=closest(e,"."+TabPanelClsNames.tabHeader);if(t&&closest(t,"."+TabPanelClsNames.hostElement)==this.hostElement)for(let e=0;e<this._tabs.length;e++)if(this._tabs[e].header==t)return e;return-1}_getNextIndex(e,t){for(let s=e+t;s>-1&&s<this._tabs.length;s+=t){let e=this._tabs[s];if(!e.isDisabled&&e.isVisible)return s}return-1}_setIsDisabled(e){super._setIsDisabled(e);this._updateTabIndex()}_setTabOrder(e){super._setTabOrder(e);this.isDisabled||this._updateTabIndex()}_updateTabIndex(){let e=this._dTabHeaders.children,t=this._selectedIndex;if(t>-1&&t<e.length){e[t].tabIndex=this.isDisabled?-1:this._orgTabIndex}this.hostElement.tabIndex=-1}dispose(){if(this._toAnim){clearInterval(this._toAnim);this._toAnim=null}this._tabs.collectionChanged.removeHandler(this._populateControl,this);this._tabs.forEach(e=>{e.dispose()});this._tabs.clear();super.dispose()}}TabPanel._ctrlTemplate="";export class Tab{constructor(e,t){this._hdr=asType(getElement(e),HTMLElement);this._pane=asType(getElement(t),HTMLElement)}get tabPanel(){return this._p}get header(){return this._hdr}get pane(){return this._pane}get isDisabled(){return hasClass(this._hdr,ControlStateClsNames.disabled)}set isDisabled(e){toggleClass(this._hdr,ControlStateClsNames.disabled,asBoolean(e));this._p&&this._p._validateSelection()}get isVisible(){return"none"!=this._hdr.style.display}set isVisible(e){this._hdr.style.display=asBoolean(e)?"":"none";this._p&&this._p._validateSelection()}_setParts(e,t){e=asType(getElement(e),HTMLElement);t=asType(getElement(t),HTMLElement,!1);if(this._hdr!==e||this._pane!==t){let s=this.isDisabled,i=this.isVisible;this._hdr=e;this._pane=t;this.isDisabled=s;this.isVisible=i;let l=this.tabPanel;l&&!l.tabs.isUpdating&&l._populateControl()}}_setPanel(e){this._p=e}dispose(){this._hdr=null;this._pane=null;this._p=null}}const _CLS_ACTIVE=ControlStateClsNames.active;export class Accordion extends Control{constructor(e,t,s){super(e,null,!0);this._panes=new ObservableArray;this._selectedIndex=-1;this._animated=!0;this._autoSwitch=!0;this._alCollapseAll=!1;this._alExpandMany=!1;this._autoSwitching=!1;this.selectedIndexChanged=new Event;let i=this.hostElement,l=this._panes,n=[];if(!s)for(;i.firstElementChild;){let e=i.firstElementChild;i.removeChild(e);n.push(e)}addClass(i,`${ControlClsNames.hostElement} ${AccordionClsNames.hostElement} ${AccordionClsNames.showIcons}`);i.tabIndex=-1;this.addEventListener(i,"click",this._click.bind(this));this.addEventListener(i,"keydown",this._keydown.bind(this));l.collectionChanged.addHandler(this._populateControl.bind(this));l.deferUpdate(()=>{n.forEach(e=>{assert(2==e.childElementCount,"Accordion children should contain header and pane elements");l.push(new AccordionPane(e.children[0],e.children[1]))})});this.initialize(t);let a=t?t.selectedIndex:null;this.selectedIndex!=a&&this.selectedIndex<0&&l.length?this.selectedIndex=0:this.onSelectedIndexChanged()}get panes(){return this._panes}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){if((e=asInt(e,!1))!=this._selectedIndex){this._selectedIndex=e;this._updateContent();this.onSelectedIndexChanged()}else this._updateContent()}get selectedPane(){let e=this._selectedIndex;return e>-1?this._panes[e]:null}set selectedPane(e){this.selectedIndex=this._getIndexOfPane(e)}get isAnimated(){return this._animated}set isAnimated(e){this._animated=asBoolean(e)}get showIcons(){return hasClass(this.hostElement,AccordionClsNames.showIcons)}set showIcons(e){toggleClass(this.hostElement,AccordionClsNames.showIcons,asBoolean(e))}get autoSwitch(){return this._autoSwitch}set autoSwitch(e){if(e!=this._autoSwitch){this._autoSwitch=asBoolean(e);this._updateContent()}}get allowCollapseAll(){return this._alCollapseAll}set allowCollapseAll(e){this._alCollapseAll=asBoolean(e)}get allowExpandMany(){return this._alExpandMany}set allowExpandMany(e){if(e!=this._alExpandMany){this._alExpandMany=e=asBoolean(e);e||this.panes.forEach((e,t)=>{let s=t==this.selectedIndex;toggleActiveClass(e.header,s);setAttribute(e.header,"aria-expanded",s)})}}getPane(e){for(let t=0;t<this._panes.length;t++){let s=this._panes[t];if(s.header.id==e||s.content.id==e)return s}for(let t=0;t<this._panes.length;t++){let s=this._panes[t];if(s.header.textContent==e)return s}return null}onSelectedIndexChanged(e){this.selectedIndexChanged.raise(this,e)}_populateControl(){let e=-1,t=this.hostElement;this._panes.forEach((s,i)=>{assert(s instanceof AccordionPane,"panes array must contain AccordionPane objects.");s._setAccordion(this);let l=s.header;addClass(l,AccordionClsNames.header);setAttribute(l,"role","button");t.appendChild(l);let n=s.content;addClass(n,ControlClsNames.content);setAttribute(n,"role","region");setAttribute(n,"aria-labelledby",l.id?l.id:null);t.appendChild(n);e<0&&(hasClass(l,_CLS_ACTIVE)||"true"==l.getAttribute("aria-expanded"))&&(e=i)});e>-1?this.selectedIndex=e:this.selectedIndex>-1&&this.selectedIndex<this._panes.length&&this._updateContent();this._validateSelection()}_validateSelection(){let e=this.selectedPane;if(e&&(e.isDisabled||!e.isVisible)){let e=this._getNextIndex(this.selectedIndex,1);e<0&&(e=this._getNextIndex(this.selectedIndex,-1));this.selectedIndex=e}}_updateContent(){let e=contains(this.hostElement,getActiveElement()),t=this._selectedIndex,s=this._panes,i=[];s.forEach((s,l)=>{let n=s.header,a=l==t,r=hasClass(n,_CLS_ACTIVE),o=a||r&&this._alExpandMany&&s!=this._hidePane,h=o&&!r,d=r&&!o;this._animated&&(h||d)&&i.push({show:h,pane:s});setAttribute(n,"aria-expanded",o);this._animated||toggleActiveClass(n,o);if(a){e&&n.focus();this._szObserver||Control.invalidateAll(s.content)}});this._updatePanesTabIndex();if(this._animated&&i.length){i.forEach(e=>{toggleActiveClass(e.pane.header,!0);e.height=e.pane.content.offsetHeight;e.show&&(e.pane.content.style.height="0")});this._toAnim=animate(e=>{e<1?i.forEach(t=>{let s=t.height*(t.show?e:1-e);t.pane.content.style.height=s.toFixed(0)+"px"}):i.forEach(e=>{e.pane.content.style.height="";toggleActiveClass(e.pane.header,e.show)})})}this._hidePane=null}_updatePanesTabIndex(){this._panes.forEach((e,t)=>{e.header.tabIndex=this._selectedIndex!==t&&this._autoSwitch?-1:this._orgTabIndex})}_setTabOrder(e){super._setTabOrder(e);this._updatePanesTabIndex()}_click(e){let t=this._getPaneIndex(e.target);if(t>-1){let e=this._panes[t];if(!e.isDisabled&&e.isVisible){if(!hasClass(e.header,_CLS_ACTIVE)||this._autoSwitching)this.selectedIndex=t;else{const s=this._getNextActiveIndex(t);if(s>-1||this._alCollapseAll){this._hidePane=e;this.selectedIndex=s}}}}}_keydown(e){if(!e.defaultPrevented){let t=this._getPaneIndex(getActiveElement());if(t>-1){let s=this._getKeyCode(e);switch(s){case Key.Left:case Key.Up:case Key.Right:case Key.Down:case Key.Home:case Key.PageUp:case Key.End:case Key.PageDown:switch(s){case Key.Left:case Key.Up:t=this._getNextIndex(t,-1);break;case Key.Right:case Key.Down:t=this._getNextIndex(t,1);break;case Key.Home:case Key.PageUp:t=this._getNextIndex(-1,1);break;case Key.End:case Key.PageDown:t=this._getNextIndex(this._panes.length,-1)}if(t>-1){let e=this._panes[t];if(this._autoSwitch){this._autoSwitching=!0;e.header.click();this._autoSwitching=!1}else e.header.focus()}e.preventDefault();break;case Key.Enter:case Key.Space:if(t>-1){this._panes[t].header.click()}e.preventDefault()}}}}_getPaneIndex(e){let t=closest(e,"."+AccordionClsNames.header);if(t&&closest(t,"."+AccordionClsNames.hostElement)==this.hostElement)for(let e=0;e<this._panes.length;e++)if(this._panes[e].header==t)return e;return-1}_getNextIndex(e,t){for(let s=e+t;s>-1&&s<this._panes.length;s+=t){let e=this._panes[s];if(!e.isDisabled&&e.isVisible)return s}return-1}_getIndexOfPane(e){let t=-1;const s=this._panes;for(let i=0;i<s.length&&t<0;i++)s[i]==e&&(t=i);return t}_getNextActiveIndex(e){let t=-1;const s=this.panes;for(let i=1;i<s.length;i++){let l=(e+i)%s.length,n=s[l];if(hasClass(n.header,_CLS_ACTIVE)){t=l;break}}return t}_togglePane(e,t){if(e.isCollapsed!==t&&e.isVisible&&!e.isDisabled)if(t){if(this.allowCollapseAll||this.panes.filter(e=>!e.isCollapsed).length>1){this._hidePane=e;const t=this._getIndexOfPane(e);this.selectedIndex=this._getNextActiveIndex(t)}}else this.selectedPane=e}dispose(){if(this._animated&&this._toAnim){clearInterval(this._toAnim);this._toAnim=null}this._panes.collectionChanged.removeHandler(this._populateControl,this);this._panes.forEach(e=>{e.dispose()});this._panes.clear();super.dispose()}}export class AccordionPane{constructor(e,t){this._hdr=asType(getElement(e),HTMLElement);this._content=asType(getElement(t),HTMLElement)}get accordion(){return this._acc}get header(){return this._hdr}get content(){return this._content}get isDisabled(){return hasClass(this._hdr,ControlStateClsNames.disabled)}set isDisabled(e){toggleClass(this._hdr,ControlStateClsNames.disabled,asBoolean(e));this._acc&&this._acc._validateSelection()}get isVisible(){return"none"!=this._hdr.style.display}set isVisible(e){this._hdr.style.display=asBoolean(e)?"":"none";this._acc&&this._acc._validateSelection()}get isCollapsed(){return!hasClass(this._hdr,_CLS_ACTIVE)}set isCollapsed(e){const t=this._acc;t?t._togglePane(this,e):toggleActiveClass(this._hdr,!asBoolean(e))}_setParts(e,t){e=asType(getElement(e),HTMLElement);t=asType(getElement(t),HTMLElement,!1);if(this._hdr!==e||this._content!==t){let s=this.isDisabled,i=this.isVisible;this._hdr=e;this._content=t;this.isDisabled=s;this.isVisible=i;let l=this.accordion;l&&!l.panes.isUpdating&&l._populateControl()}}_setAccordion(e){this._acc=e}dispose(){this._hdr=null;this._content=null;this._acc=null}}function toggleActiveClass(e,t){toggleClass(e,_CLS_ACTIVE,t);toggleClass(e.nextElementSibling,AccordionClsNames.activeContent,t)}export class FormatNodeEventArgs extends EventArgs{constructor(e,t,s){super();this._data=e;this._e=asType(t,HTMLElement);this._level=s}get dataItem(){return this._data}get element(){return this._e}get level(){return this._level}}export class TreeNodeEventArgs extends CancelEventArgs{constructor(e){super();this._node=e}get node(){return this._node}}export class TreeNodeDragDropEventArgs extends CancelEventArgs{constructor(e,t,s){super();this._src=asType(e,TreeNode);this._tgt=asType(t,TreeNode);this._pos=s}get dragSource(){return this._src}get dropTarget(){return this._tgt}get position(){return this._pos}set position(e){this._pos=asEnum(e,DropPosition)}}export var DropPosition;!function(e){e[e.Before=0]="Before";e[e.After=1]="After";e[e.Into=2]="Into"}(DropPosition||(DropPosition={}));export class TreeNode{constructor(e,t){if(hasClass(t,TreeViewClsNames.hostElement)){e=Control.getControl(t);t=null}else TreeNode._assertNode(t);if(t&&t[TreeNode.CacheKey]&&t[TreeNode.CacheKey]._t==e)return t[TreeNode.CacheKey];t&&(t[TreeNode.CacheKey]=this);this._t=e;this._e=t}get dataItem(){return this._e[TreeView._DATAITEM_KEY]}get element(){return this._e}get treeView(){return this._t}ensureVisible(){let e=!!this.parentNode&&this.parentNode.isCollapsed;this.treeView._scrollNode=this;for(let e=this.parentNode;e;e=e.parentNode)e.isCollapsed=!1;this.treeView.isAnimated&&e||this._scrollIntoView()}_scrollIntoView(){if(!this.treeView._scrollNode)return;let e=this._t.hostElement,t=this.treeView._scrollNode.element.getBoundingClientRect(),s=e.getBoundingClientRect();const i=e.offsetHeight-e.clientHeight;t.bottom>s.bottom-i?e.scrollTop+=t.bottom-(s.bottom-i):t.top<s.top&&(e.scrollTop-=s.top-t.top);this.treeView._scrollNode=null}equals(e){return null!=e&&e.element==this.element}get isSelected(){let e=this._t;return e.selectedNode==this||e.selectedNodes.includes(this)}select(e=!1){let t=this._t,s=t._selNode;if(!this.equals(s)){if(s){removeClass(s.element,TreeView._CSEL);setAttribute(s.element,"aria-selected",!1)}t._selNode=this;addClass(this.element,TreeView._CSEL);setAttribute(this.element,"aria-selected",!0);this.ensureVisible();if(t.allowMultiSelect&&!t.selectedNodes.includes(this))t.selectedNodes.push(this);else if(!t.selectedNodes.includes(this)){t.selectedNodes.beginUpdate();t.selectedNodes.clear();t.selectedNodes.push(this);t.selectedNodes.endUpdate(!0)}t._updateFocus(s);e||t.onSelectedItemChanged()}}deSelect(e=!1){if(!this.isSelected)return;let t=this._t;removeClass(this.element,TreeView._CSEL);setAttribute(this.element,"aria-selected",!1);t.selectedNodes.remove(this);t.selectedNode==this?e?t._selNode=null:t.selectedNode=null:e||t.onSelectedItemChanged()}get index(){let e=0;for(let t=this._pse(this.element);t;t=this._pse(t))TreeNode._isNode(t)&&e++;return e}get parentNode(){let e=null;if(this._e){let t=this._e.parentElement;TreeNode._assertNodeList(t);e=this._pse(t)}return e?new TreeNode(this._t,e):null}get level(){let e=-1;for(let t=this;t;t=t.parentNode)e++;return e}get hasChildren(){return TreeNode._isNode(this._e)&&!TreeNode._isEmpty(this._e)}get hasPendingChildren(){return this.isCollapsed&&this.hasChildren&&!TreeNode._isNodeList(this.element.nextElementSibling)&&isFunction(this._t.lazyLoadFunction)}get nodes(){return this.hasChildren?TreeNode._getChildNodes(this._t,this._e.nextSibling):null}get checkBox(){return this._e.querySelector("input."+TreeView._CNDC)}get isCollapsed(){return this.hasChildren&&hasClass(this._e,TreeView._CCLD)}set isCollapsed(e){if(e!=this.isCollapsed){let t=this._t,s=new TreeNodeEventArgs(this);if(t.onIsCollapsedChanging(s)){this.setCollapsed(asBoolean(e),t.isAnimated,t.autoCollapse);t.onIsCollapsedChanged(s)}}}get isChecked(){let e=this.checkBox;return e&&!e.indeterminate?e.checked:null}set isChecked(e){if(e!=this.isChecked){let t=this._t,s=new TreeNodeEventArgs(this);if(t.onIsCheckedChanging(s)){this.setChecked(asBoolean(e),!0);t.onIsCheckedChanged(s)}}}get isDisabled(){return this._e&&null!=this._e.getAttribute("disabled")}set isDisabled(e){if((e=asBoolean(e,!0))!=this.isDisabled){enable(this._e,!e);this.isDisabled&&this._t&&this._t.collapseWhenDisabled&&(this.isCollapsed=!0)}}previous(e,t){let s=this._pse(this._e);!s&&TreeNode._isNodeList(this._e.parentElement)&&(s=this._pse(this._e.parentElement));if(TreeNode._isNodeList(s)){for(;TreeNode._isNodeList(s)&&s.childElementCount;)s=s.lastChild;TreeNode._isNodeList(s)&&(s=this._pse(s))}let i=TreeNode._isNode(s)?new TreeNode(this._t,s):null;e&&i&&!i.element.offsetHeight&&(i=i.previous(e,t));t&&i&&i.isDisabled&&(i=i.previous(e,t));return i}next(e,t){let s=this._e.nextSibling;TreeNode._isNodeList(s)&&(s=s.childElementCount?s.firstChild:s.nextSibling);if(!s)for(let e=this._e.parentElement;!s&&TreeNode._isNodeList(e);e=e.parentElement)s=e.nextSibling;let i=TreeNode._isNode(s)?new TreeNode(this._t,s):null;e&&i&&!i.element.offsetHeight&&(i=i.next(e,t));t&&i&&i.isDisabled&&(i=i.next(e,t));return i}previousSibling(){let e=this._pse(this.element);for(;TreeNode._isNodeList(e);)e=this._pse(e);return e?new TreeNode(this._t,e):null}nextSibling(){let e=this.element.nextSibling;TreeNode._isNodeList(e)&&(e=e.nextSibling);return e?new TreeNode(this._t,e):null}setCollapsed(e,t,s){let i=this._t,l=this._e,n=this._e.nextElementSibling,a=TreeNode._isNodeList(n);setAttribute(l,"aria-expanded",a?(!e).toString():null);if(e!=this.isCollapsed)if(e||a||!isFunction(i.lazyLoadFunction)){null==t&&(t=i.isAnimated);null==s&&(s=i.autoCollapse);if(t){if(a){let t=n.offsetHeight,s=n.style,a=i.hostElement,r=a.style;a.scrollHeight<=a.clientHeight&&(r.overflowY="hidden");if(e){toggleClass(l,TreeView._CCLG,!0);coreAnimate(e=>{if(e<1){e=1-e;s.height=(e*t).toFixed(0)+"px"}else{s.height=s.opacity=r.overflowY="";toggleClass(l,TreeView._CCLD,!0);toggleClass(l,TreeView._CCLG,!1)}},TreeView._AN_DLY)}else{toggleClass(l,TreeView._CCLD,!1);s.height=s.opacity="0";coreAnimate(e=>{s.height=e>=1?s.opacity=r.overflowY="":(e*t).toFixed(0)+"px"},TreeView._AN_DLY,void 0,()=>{this._scrollIntoView()})}}}else toggleClass(l,TreeView._CCLD,e);if(!e&&s){let e=l.parentElement;if(TreeNode._isNodeList(e))for(let t=0;t<e.children.length;t++){let s=e.children[t];if(s!=l&&TreeNode._isNode(s)){toggleClass(s,TreeView._CCLD,!0);s.setAttribute("aria-expanded","false")}}}this.element}else i._lazyLoadNode(this)}setChecked(e,t){let s=this.checkBox,i=s.checked!=e;setChecked(s,e);if(this.hasChildren)for(var l=0;l<this.nodes.length;l++)this.nodes[l].setChecked(e,!1);let n=this._t;n&&n.checkedMemberPath&&n._chkPath.setValue(this.dataItem,this.level,e);if(t){let e=this.parentNode;e&&e._updateCheckedState()}n&&i&&n._raiseCheckedItemsChanged()}remove(){let e=this._t,t=this.parentNode,s=this._getArray(),i=s.indexOf(this.dataItem);e.selectedNode==this&&(e.selectedNode=this.nextSibling()||this.previousSibling()||t);let l=this.element.nextSibling;TreeNode._isNodeList(l)&&removeChild(l);removeChild(this.element);t&&t._updateState();s.splice(i,1);this._t=null}addChildNode(e,t){let s=this._t._createNode(t),i=this.nodes;i?e<i.length?s.move(i[e],DropPosition.Before):s.move(i[i.length-1],DropPosition.After):s.move(this,DropPosition.Into);return s}refresh(e){let t=this._getArray();e&&(t[this.index]=e);e=t[this.index];let s=this._t._createNode(e),i=this.hasChildren&&!this.hasPendingChildren?this.element.nextSibling:null;i&&removeChild(i);i=s.hasChildren&&!s.hasPendingChildren?s.element.nextSibling:null;i&&this.element.parentElement.insertBefore(i,this.element.nextSibling);this.element.innerHTML=s.element.innerHTML;this._updateState()}move(e,t){if(e instanceof TreeNode&&this._contains(e))return!1;let s=this.parentNode,i=this._getArray();this._moveElements(e,t);e.treeView&&(this._t=e.treeView);s&&s._updateState();let l=this.parentNode;l&&l._updateState();let n=this.dataItem,a=i.indexOf(n),r=this._getArray();i.splice(a,1);r.splice(this.index,0,n);return!0}get itemsSource(){return this._getArray()}_pse(e){return e.previousElementSibling}_contains(e){for(;e;e=e.parentNode)if(e.element==this.element)return!0;return!1}_getArray(){let e=this._t,t=this.parentNode,s=e.itemsSource;if(t){let i=e._itmPath;s=i.getValue(t.dataItem,this.level);if(!s){s=[];i.setValue(t.dataItem,this.level,s)}}return s}_moveElements(e,t){let s=document.createDocumentFragment(),i=this.hasChildren&&!this.hasPendingChildren?this.element.nextSibling:null;s.appendChild(this.element);if(i){TreeNode._assertNodeList(i);s.appendChild(i)}if(e instanceof TreeView){e._root.insertBefore(s,null);return}let l=e.element,n=l?l.parentElement:e.treeView._root;TreeNode._assertNodeList(n);let a=DropPosition;switch(t){case a.Before:n.insertBefore(s,l);break;case a.After:l=(e=e.nextSibling())?e.element:null;n.insertBefore(s,l);break;case a.Into:if(!e.hasChildren||e.hasPendingChildren){i=document.createElement("div");addClass(i,TreeView._CNDL);n.insertBefore(i,l.nextSibling)}n=e.element.nextSibling;TreeNode._assertNodeList(n);n.insertBefore(s,null)}}_updateState(){this._updateEmptyState();this._updateCheckedState()}_updateEmptyState(){let e=this.element.nextSibling,t=!1;TreeNode._isNodeList(e)&&(e.childElementCount?t=!0:removeChild(e));toggleClass(this.element,TreeView._CEMP,!t);t||this.element.removeAttribute("aria-expanded")}_updateCheckedState(){let e=this._t,t=this.checkBox,s=this.nodes,i=0,l=0,n=!1;if(t&&s){for(let e=0;e<s.length&&!n;e++){switch(s[e].isChecked){case!0:i++;break;case!1:l++;break;case null:n=!0}i&&l&&(n=!0)}setChecked(t,n?null:i>0);if(e&&e.checkedMemberPath){let s=n?null:t.checked;e._chkPath.setValue(this.dataItem,this.level,s)}}let a=this.parentNode;a&&a._updateCheckedState()}dispose(){delete this._e[TreeNode.CacheKey];this._t=null;let e=this._e.nextElementSibling;TreeNode._isNodeList(e)&&e.parentNode&&e.parentNode.removeChild(e);this.nodes&&this.nodes.forEach(e=>{e.dispose()});this._e.innerHTML="";this._e=null}static _getChildNodes(e,t){let s=[];if(TreeNode._isNodeList(t)){let i=t.children;for(let t=0;t<i.length;t++){let l=i[t];TreeNode._isNode(l)&&s.push(new TreeNode(e,l))}}return s}static _isNode(e){return e&&hasClass(e,TreeView._CND)}static _isNodeList(e){return e&&hasClass(e,TreeView._CNDL)}static _isEmpty(e){return TreeNode._isNode(e)&&hasClass(e,TreeView._CEMP)}static _isCollapsed(e){return TreeNode._isNode(e)&&!TreeNode._isEmpty(e)&&hasClass(e,TreeView._CCLD)}static _assertNode(e){assert(TreeNode._isNode(e),"node expected")}static _assertNodeList(e){assert(TreeNode._isNodeList(e),"nodeList expected")}}TreeNode.CacheKey="$_WJ_TV_NODE";export class _BindingArray{constructor(e){this.path=e}get path(){return this._path}set path(e){this._path=e;if(isString(e))this._bindings=[new Binding(e)];else if(isArray(e)){this._bindings=[];for(let t=0;t<e.length;t++)this._bindings.push(new Binding(e[t]))}else null!=e&&assert(!1,"Path should be a string or an array of strings.");this._maxLevel=this._bindings?this._bindings.length-1:-1}getValue(e,t){let s=Math.min(t,this._maxLevel);return s>-1?this._bindings[s].getValue(e):null}setValue(e,t,s){let i=Math.min(t,this._maxLevel);i>-1&&this._bindings[i].setValue(e,s)}}export class TreeView extends Control{constructor(e,t={}){super(e);this._selNodes=new ObservableArray;this._itmPath=new _BindingArray("items");this._chkPath=new _BindingArray;this._dspPath=new _BindingArray("header");this._imgPath=new _BindingArray;this._html=!1;this._animated=!0;this._chkOnClick=!1;this._collOnClick=!1;this._xpndOnClick=!0;this._xpndOnLoad=!0;this._autoColl=!0;this._showChk=!1;this._collapseWhenDisabled=!0;this._srch="";this._isReadOnly=!0;this._preserveSelNode=!1;this._allowMultiSelect=!1;this.itemsSourceChanged=new Event;this.loadingItems=new Event;this.loadedItems=new Event;this.itemClicked=new Event;this.selectedItemChanged=new Event;this.checkedItemsChanged=new Event;this.isCollapsedChanging=new Event;this.isCollapsedChanged=new Event;this.isCheckedChanging=new Event;this.isCheckedChanged=new Event;this.formatItem=new Event(()=>{this.invalidate()});this.dragStart=new Event;this.dragOver=new Event;this.drop=new Event;this.dragEnd=new Event;this.nodeEditStarting=new Event;this.nodeEditStarted=new Event;this.nodeEditEnding=new Event;this.nodeEditEnded=new Event;this.options=t;let s=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${TreeViewClsNames.hostElement}`,s,{_root:"root"});let i=this.hostElement;setAttribute(i,"role","tree",!0);addClass(this._root,TreeView._CNDL);setAttribute(this._root,"role","group",!0);this.addEventListener(i,"mousedown",this._mousedown.bind(this));this.addEventListener(i,"click",this._click.bind(this));this.addEventListener(i,"keydown",this._keydown.bind(this));this.addEventListener(i,"keypress",this._keypress.bind(this));this.addEventListener(i,"wheel",e=>{i.scrollHeight>i.offsetHeight&&(e.deltaY<0&&0==i.scrollTop||e.deltaY>0&&i.scrollTop+i.offsetHeight>=i.scrollHeight)&&e.preventDefault()});this.addEventListener(i,"blur",()=>{this._edtNode&&!contains(this._edtNode.element,getActiveElement())&&this.finishEditing()},!0);this.addEventListener(i,"paste",e=>{if(this._edtNode&&!this.isContentHtml){let t=(e.clipboardData||window.clipboardData).getData("text"),s=window.getSelection();if(t&&s.rangeCount){s.deleteFromDocument();s.getRangeAt(0).insertNode(document.createTextNode(t));e.preventDefault()}}});this._selNodes.collectionChanged.addHandler((e,t)=>{switch(t.action){case NotifyCollectionChangedAction.Add:addClass(t.item.element,TreeView._CMSEL);break;case NotifyCollectionChangedAction.Remove:removeClass(t.item.element,TreeView._CMSEL);break;case NotifyCollectionChangedAction.Change:addClass(t.item.element,TreeView._CMSEL);break;case NotifyCollectionChangedAction.Reset:this.hostElement.querySelectorAll("."+TreeView._CMSEL).forEach(e=>removeClass(e,TreeView._CMSEL))}});this.initialize(t);this.refresh()}static get controlTemplate(){TreeView._ctrlTemplate||(TreeView._ctrlTemplate='<div wj-part="root"></div>');return TreeView._ctrlTemplate}static set controlTemplate(e){TreeView._ctrlTemplate=e}get itemsSource(){return this._items}set itemsSource(e){if(this._items!=e){this._items=asArray(e);this.onItemsSourceChanged();this._srcChanged=!0;this._reload()}}get childItemsPath(){return this._itmPath.path}set childItemsPath(e){if(e!=this.childItemsPath){this._itmPath.path=e;this._reload()}}get displayMemberPath(){return this._dspPath.path}set displayMemberPath(e){if(e!=this.displayMemberPath){this._dspPath.path=e;this._reload()}}get imageMemberPath(){return this._imgPath.path}set imageMemberPath(e){if(e!=this.imageMemberPath){this._imgPath.path=e;this._reload()}}get checkedMemberPath(){return this._chkPath.path}set checkedMemberPath(e){if(e!=this.checkedMemberPath){this._chkPath.path=e;this._reload()}}get isContentHtml(){return this._html}set isContentHtml(e){if(e!=this._html){this._html=asBoolean(e);this._reload()}}get showCheckboxes(){return this._showChk}set showCheckboxes(e){if(e!=this._showChk){this._showChk=asBoolean(e);this._reload()}}get autoCollapse(){return this._autoColl}set autoCollapse(e){this._autoColl=asBoolean(e)}get collapseWhenDisabled(){return this._collapseWhenDisabled}set collapseWhenDisabled(e){this._collapseWhenDisabled=asBoolean(e)}get isAnimated(){return this._animated}set isAnimated(e){this._animated=asBoolean(e);toggleClass(this.hostElement,UtilitesClsNames.animated,this._animated)}get isReadOnly(){return this._isReadOnly}set isReadOnly(e){this._isReadOnly=asBoolean(e);toggleClass(this.hostElement,ControlStateClsNames.readOnly,this.isReadOnly)}startEditing(e){this._prevDragState=this.allowDragging;if(this.isReadOnly)return!1;e||(e=this.selectedNode);if(!e||e.isDisabled)return!1;if(!this.finishEditing())return!1;let t=e.element.querySelector("."+TreeView._CNDT);if(!t)return!1;let s=new TreeNodeEventArgs(e);if(!this.onNodeEditStarting(s))return!1;t.tabIndex=0;t.focus();t.contentEditable="true";t.style.cursor="auto";let i=document.createRange();i.selectNodeContents(t);let l=getSelection();l.removeAllRanges();l.addRange(i);this.allowDragging=!this.isTxtSelected(t);t.focus();setAttribute(t,"autocomplete","off");setAttribute(t,"autocorrect","off");this._edtNode=e;this.onNodeEditStarted(s);return!0}finishEditing(e){let t=this._edtNode;if(t){let s=t.element.querySelector("."+TreeView._CNDT);if(!s)return!1;let i=new TreeNodeEventArgs(t);if(!this.onNodeEditEnding(i))return!1;let l=t.dataItem,n=t.level;this.isContentHtml?e?s.innerHTML=this._dspPath.getValue(l,n):this._dspPath.setValue(l,n,s.innerHTML):e?s.textContent=this._dspPath.getValue(l,n):this._dspPath.setValue(l,n,s.textContent);document.createRange().selectNodeContents(s);getSelection().removeAllRanges();s.contentEditable="false";s.style.cursor="";this.allowDragging=this._prevDragState;this._edtNode=null;this.onNodeEditEnded(i)}return!0}get allowDragging(){return null!=this._dd}set allowDragging(e){if(e!=this.allowDragging){if(asBoolean(e))this._dd=new _TreeDragDropManager(this);else{this._dd.dispose();this._dd=null}let t=this.hostElement.querySelectorAll("."+TreeView._CND);for(let e=0;e<t.length;e++){let s=t[e];setAttribute(s,"draggable",!!this._dd||null)}}}get checkOnClick(){return this._chkOnClick}set checkOnClick(e){this._chkOnClick=asBoolean(e)}get expandOnClick(){return this._xpndOnClick}set expandOnClick(e){this._xpndOnClick=asBoolean(e)}get collapseOnClick(){return this._collOnClick}set collapseOnClick(e){this._collOnClick=asBoolean(e)}get expandOnLoad(){return this._xpndOnLoad}set expandOnLoad(e){this._xpndOnLoad=asBoolean(e)}get selectedItem(){return this._selNode?this._selNode.dataItem:null}set selectedItem(e){if(e!=this.selectedItem){this._isDirty&&this.refresh();this.selectedNode=e?this.getNode(e):null}}get selectedNode(){return this._selNode}set selectedNode(e){if(e!=this.selectedNode){this._prevSel=this._selNode;if(e)e.select();else if(this._selNode){var t=this._selNode.element;removeClass(t,TreeView._CSEL);setAttribute(t,"aria-selected",!1);this._selNode=null;this._updateFocus(this._prevSel);this.onSelectedItemChanged()}}}get selectedPath(){let e=[];for(let t=this.selectedNode;t;t=t.parentNode){let s=this._dspPath.getValue(t.dataItem,t.level);e.splice(0,0,s)}return e}get checkedItems(){if(null==this._chkItems){let e=TreeView,t="."+e._CND+"."+e._CEMP+" > input:checked."+e._CNDC,s=this._root.querySelectorAll(t);this._chkItems=[];for(let t=0;t<s.length;t++){let i=s[t].parentElement[e._DATAITEM_KEY];this._chkItems.push(i)}}return this._chkItems}set checkedItems(e){if(this.showCheckboxes){this._isDirty&&this.refresh();let t=TreeView,s="."+t._CND+"."+t._CEMP,i=this._root.querySelectorAll(s);for(let t=0;t<i.length;t++){let s=new TreeNode(this,i[t]),l=e.indexOf(s.dataItem)>-1;s.isChecked!=l&&(s.isChecked=l)}}}checkAllItems(e){if(this.showCheckboxes){let t=TreeView,s="."+t._CND+"."+t._CEMP,i=this._root.querySelectorAll(s);for(let t=0;t<i.length;t++){let s=new TreeNode(this,i[t]);s.isChecked!=e&&(s.isChecked=e)}}}get totalItemCount(){return this.hostElement.querySelectorAll("."+TreeView._CND).length}get lazyLoadFunction(){return this._lazyLoad}set lazyLoadFunction(e){if(e!=this._lazyLoad){this._lazyLoad=asFunction(e);this._reload()}}get preserveSelectedNode(){return this._preserveSelNode}set preserveSelectedNode(e){this._preserveSelNode=asBoolean(e,!1)}get selectedNodes(){return this._selNodes}get allowMultiSelect(){return this._allowMultiSelect}set allowMultiSelect(e){this._allowMultiSelect=asBoolean(e,!1);this._allowMultiSelect&&this.selectedNodes.forEach(e=>addClass(e.element,TreeView._CMSEL))}getFirstNode(e,t){let s=this.hostElement.querySelector("."+TreeView._CND),i=s?new TreeNode(this,s):null;e&&i&&!i.element.offsetHeight&&(i=i.next(e,t));t&&i&&i.isDisabled&&(i=i.next(e,t));return i}getLastNode(e,t){let s=this.hostElement.querySelectorAll("."+TreeView._CND+":last-child"),i=s.length?new TreeNode(this,s[s.length-1]):null;e&&i&&!i.element.offsetHeight&&(i=i.previous(e,t));t&&i&&i.isDisabled&&(i=i.previous(e,t));return i}get nodes(){return TreeNode._getChildNodes(this,this._root)}getNode(e){this._isDirty&&this._loadTree();let t=this.hostElement.querySelectorAll("."+TreeView._CND);for(let s=0;s<t.length;s++){let i=t[s];if(i[TreeView._DATAITEM_KEY]==e)return new TreeNode(this,i)}return null}addChildNode(e,t){let s=this._createNode(t),i=this.nodes;i?e<i.length?s.move(i[e],DropPosition.Before):s.move(i[i.length-1],DropPosition.After):s.move(this,DropPosition.Into);return s}collapseToLevel(e){let t=this._animated,s=this._autoColl;this._animated=this._autoColl=!1;this._collapseToLevel(this.nodes,e,0);this._animated=t;this._autoColl=s}loadTree(e){this._loadTree(e)}onItemsSourceChanged(e){this.itemsSourceChanged.raise(this,e)}onLoadingItems(e){this.loadingItems.raise(this,e);return!e.cancel}onLoadedItems(e){this.loadedItems.raise(this,e)}onItemClicked(e){this.itemClicked.raise(this,e)}onSelectedItemChanged(e){this.selectedItemChanged.raise(this,e)}onCheckedItemsChanged(e){this._chkItems=null;this.checkedItemsChanged.raise(this,e)}onIsCollapsedChanging(e){this.isCollapsedChanging.raise(this,e);return!e.cancel}onIsCollapsedChanged(e){this.isCollapsedChanged.raise(this,e)}onIsCheckedChanging(e){this.isCheckedChanging.raise(this,e);return!e.cancel}onIsCheckedChanged(e){this.isCheckedChanged.raise(this,e)}onFormatItem(e){this.formatItem.raise(this,e)}onDragStart(e){this.dragStart.raise(this,e);return!e.cancel}onDragOver(e){this.dragOver.raise(this,e);return!e.cancel}onDrop(e){this.drop.raise(this,e);return!e.cancel}onDragEnd(e){this.dragEnd.raise(this,e)}onNodeEditStarting(e){this.nodeEditStarting.raise(this,e);return!e.cancel}onNodeEditStarted(e){this.nodeEditStarted.raise(this,e)}onNodeEditEnding(e){this.nodeEditEnding.raise(this,e);return!e.cancel}onNodeEditEnded(e){this.nodeEditEnded.raise(this,e)}refresh(e=!0){super.refresh(e);this.isUpdating||!this._isDirty||this.disposed||this._loadTree(!0)}_updateFocus(e){this._updateTabIndex();if(this.containsFocus()){let e=this._selNode;e?e.element.focus():this.hostElement.focus()}e&&(e.element.tabIndex=-1)}_updateTabIndex(){let e=this._selNode;e&&(e.element.tabIndex=this._orgTabIndex);this.hostElement.tabIndex=e||this.isDisabled?-1:this._orgTabIndex}_setTabOrder(e){this._orgTabIndex=e;this._updateTabIndex()}_raiseCheckedItemsChanged(){this._toItemsChanged&&clearTimeout(this._toItemsChanged);this._toItemsChanged=setTimeout(()=>{this._toItemsChanged=null;this.onCheckedItemsChanged()},10)}_reload(){this._isDirty=!0;this.invalidate()}_createNode(e){const t=Object.assign({},this.options);this.formatItem&&(t.formatItem=this.formatItem.getHandler());return new TreeView(document.createElement("div"),Object.assign({},t,{expandOnLoad:this.expandOnLoad,allowDragging:this.allowDragging,lazyLoadFunction:this.lazyLoadFunction,childItemsPath:this.childItemsPath,displayMemberPath:this.displayMemberPath,imageMemberPath:this.imageMemberPath,isContentHtml:this.isContentHtml,showCheckboxes:this.showCheckboxes,itemsSource:[e]})).getFirstNode()}_getCollapseIconWidthBounds(e){const t=getComputedStyle(e,":before"),s=parseFloat(getComputedStyle(e).paddingLeft);let i=0,l=0;if("auto"!==t.width)if("none"==t.transform){i=s;l=parseFloat(t.width)+s}else{const e=parseFloat(t.height),n=(parseFloat(t.width)-e)/2;i=s+n;l=parseFloat(t.height)+s+n}else;if(this.rightToLeft){const t=l-i;l=e.clientWidth-i;i=l-t}return{left:i,right:l}}_mousedown(e){if(!e.defaultPrevented){let t=closestClass(e.target,TreeView._CND),s=t?new TreeNode(this,t):null;if(s&&!s.isDisabled){const i=this._getCollapseIconWidthBounds(t),l=t==e.target&&e.offsetX>=i.left&&e.offsetX<=i.right;if(!this.preserveSelectedNode||!l)if((e.ctrlKey||e.metaKey)&&this.allowMultiSelect)s.isSelected?s.deSelect():s.select();else if(e.shiftKey&&this.allowMultiSelect){let e=this.selectedNode;e||(e=this._prevSel);if(e){const t=this._getNodesBetween(s.element,e.element),i=new Set(this.selectedNodes);for(let e=t.length-1;e>=0;e--){const s=new TreeNode(this,t[e]);i.has(s)?i.delete(s):s.select(!0)}const l=e.equals(this.selectedNode)&&i.size>0;Array.from(i).forEach(e=>e.deSelect(!0));e.select();l&&this.onSelectedItemChanged()}}else{s.isSelected?this._prevSel=s:this._clearMultiSelectedNodes();this.selectedNode=s;s.select()}}}}_getNodesBetween(e,t){let s=e,i=t;if(this._getOffsetFromRoot(s)>this._getOffsetFromRoot(t)){s=t;i=e}const l=[],n=this.hostElement.querySelectorAll("."+TreeView._CND);let a=!1;for(let e=n.length-1;e>=0;e--){const t=n[e];t==i&&(a=!0);a&&l.unshift(t);if(t==s)break}return l}_getOffsetFromRoot(e){let t=0;for(;e!=this.hostElement;){t+=e.offsetTop;e=e.parentElement}return t}_checkCollapseIconClick(e){if(e.defaultPrevented)return;let t=closestClass(e.target,TreeView._CND),s=t?new TreeNode(this,t):null;if(s&&!s.isDisabled){const i=this._getCollapseIconWidthBounds(t),l=t==e.target&&e.offsetX>=i.left&&e.offsetX<=i.right;if(this.preserveSelectedNode&&l){(e.ctrlKey||e.metaKey)&&!s.hasPendingChildren?this.collapseToLevel(s.isCollapsed?s.level+1:s.level):s.isCollapsed=!s.isCollapsed;this.isAnimated?this._setFocusTimer=setTimeout(()=>{this.focus()},TreeView._AN_DLY+Control._ANIM_DEF_STEP):this.focus();e.preventDefault()}}}_click(e){this._checkCollapseIconClick(e);if(!e.defaultPrevented){let t=closestClass(e.target,TreeView._CND);if(t){let s=new TreeNode(this,t),i="input."+TreeView._CNDC,l=closest(e.target,i),n=t.getBoundingClientRect(),a=this.rightToLeft?n.right-e.clientX:e.clientX-n.left;if(s.isDisabled)return;if(!l&&s.equals(this._edtNode))return;!l&&this._chkOnClick&&(!s.hasChildren||a>t.offsetHeight)&&(l=t.querySelector(i));let r=this._prevSel;const o=(e.shiftKey||e.ctrlKey||e.metaKey)&&this.allowMultiSelect;if(!o){this.selectedNode=s;this._clearMultiSelectedNodes(!0)}t.focus();if(l){e.preventDefault();e.stopPropagation();this._updateCheckedTimer=setTimeout(()=>{s.isChecked=!s.isChecked})}if(!l){let i=(e.ctrlKey||e.metaKey)&&!s.hasPendingChildren,l=s.isCollapsed,n=!1;if(s.hasChildren)if(a<=t.offsetHeight){n=!0;i?this.collapseToLevel(l?s.level+1:s.level):s.isCollapsed=!l}else if(this.expandOnClick&&l){n=!0;i?this.collapseToLevel(s.level+1):s.isCollapsed=!1}else if(this.collapseOnClick&&!l){n=!0;i?this.collapseToLevel(s.level):s.isCollapsed=!0}n&&i&&this.selectedNode&&this.selectedNode.ensureVisible();if(!n&&!this.isReadOnly&&!o){let e=this.selectedNode;e&&e.equals(r)&&this.startEditing()}}this.selectedItem&&this.onItemClicked()}}}_keydown(e){if(!e.defaultPrevented){let t,s=this._getKeyCode(e),i=this._selNode,l=!0;if(!i)switch(s){case Key.Up:case Key.Down:case Key.Left:case Key.Right:case Key.Enter:case Key.Home:case Key.End:t=this.getFirstNode(!0,!0);if(t){this.selectedNode=t;e.preventDefault();return}}if(i&&!i.isDisabled){switch(s){case Key.F2:this.startEditing();e.preventDefault();break;case Key.Escape:this.finishEditing(!0);e.preventDefault();break;case Key.Up:case Key.Down:this.finishEditing();break;case Key.Enter:if(this._edtNode){this.finishEditing();s=Key.Down}else{this.startEditing();e.preventDefault()}}if(this._edtNode)return;if(this.rightToLeft)switch(s){case Key.Left:s=Key.Right;break;case Key.Right:s=Key.Left}switch(s){case Key.Left:if(!i.isCollapsed&&i.hasChildren)i.isCollapsed=!0;else{i=i.parentNode;i&&i.select()}break;case Key.Right:i.isCollapsed&&i.hasChildren&&(i.isCollapsed=!1);break;case Key.Up:t=i.previous(!0,!0);break;case Key.Down:t=i.next(!0,!0);break;case Key.Home:t=this.getFirstNode(!0,!0);break;case Key.End:t=this.getLastNode(!0,!0);break;case Key.Space:if(this.selectedItem){let e=i.checkBox;e&&(i.isChecked=e.indeterminate||!e.checked)}break;case Key.Enter:this.selectedItem&&this.onItemClicked();break;default:l=!1}if(l){e.preventDefault();e.shiftKey?t&&t.isSelected&&i.deSelect(!0):this._clearMultiSelectedNodes(!t);t&&t.select()}}}}_keypress(e){if(!e.defaultPrevented){if(e.ctrlKey||e.metaKey||e.altKey)return;if(e.target instanceof HTMLInputElement)return;if(this._edtNode)return;if(e.charCode>32&&this.startEditing(this.selectedNode)){let t=getActiveElement();if(contains(this._edtNode.element,t)){t.textContent=String.fromCharCode(e.charCode);e.preventDefault();let s=document.createRange();s.selectNodeContents(t);s.collapse(!1);let i=getSelection();i.removeAllRanges();i.addRange(s)}return}if(e.charCode>32||32==e.charCode&&this._srch){e.preventDefault();this._srch+=String.fromCharCode(e.charCode).toLowerCase();this._toSrch&&clearTimeout(this._toSrch);this._toSrch=setTimeout(()=>{this._toSrch=null;this._srch=""},TreeView._AS_DLY);let t=this._findNext();if(null==t&&this._srch.length>1){this._srch=this._srch[this._srch.length-1];t=this._findNext()}null!=t&&(this.selectedItem=t)}}}_findNext(){if(this.hostElement&&this.selectedItem){let e=this.getNode(this.selectedItem),t=e,s=!1,i=!1;1==this._srch.length&&(i=!0);for(;t;){if(!t.isDisabled&&!i){if(0==t.element.textContent.trim().toLowerCase().indexOf(this._srch))return t.dataItem}let l=t.next(!0,!0);if(l==e&&s)break;if(!l&&!s){l=this.getFirstNode(!0,!0);s=!0}t=l;i=!1}}return null}_loadTree(e){let t=this._root;if(t){if(!this.onLoadingItems(new CancelEventArgs))return;let s=this.containsFocus(),i=this._srcChanged;this._isDirty=!1;this._srcChanged=!1;let l=this.selectedItem;this.selectedItem=null;let n,a=[];if(this.allowMultiSelect){this.selectedNodes.forEach(e=>a.push(e.dataItem));this.selectedNodes.beginUpdate();this.selectedNodes.clear();this.selectedNodes.endUpdate(!0)}this._chkItems=null;this._ldLvl=-1;if(e&&isFunction(window.Map)&&!i&&this.nodes.length>0){n=new Map;let e=this.hostElement.querySelectorAll("."+TreeView._CND);for(let t=0;t<e.length;t++){let s=e[t];hasClass(s,TreeView._CCLD)&&n.set(s[TreeView._DATAITEM_KEY],!0)}}t.innerHTML="";this._items&&this._items.forEach(e=>{this._addItem(t,0,e)});if(n){let e=this.hostElement.querySelectorAll("."+TreeView._CND);for(let t=0;t<e.length;t++){let s=e[t],i=TreeNode._isNodeList(s.nextElementSibling),l=!TreeNode._isEmpty(s),a=n.get(s[TreeView._DATAITEM_KEY]);l&&(a||i)&&toggleClass(s,TreeView._CCLD,1==a);setAttribute(s,"aria-expanded",l?(!hasClass(s,TreeView._CCLD)).toString():null)}}s&&!this.containsFocus()&&this.focus();this.allowMultiSelect&&a.forEach(e=>{const t=this.getNode(e);t&&t.select(!0)});this.selectedItem=l;this.onLoadedItems();this._ldLvl=-1;this._srcChanged=!1}}_addItem(e,t,s){let i,l=this._dspPath.getValue(s,t),n=this._imgPath.getValue(s,t),a=asArray(this._itmPath.getValue(s,t),!0),r=document.createElement("div");addClass(r,TreeView._CND);r.tabIndex=-1;setAttribute(r,"role","treeitem",!0);setAttribute(r,"aria-selected",!1);let o=document.createElement("span");this.isContentHtml?o.innerHTML=l:o.textContent=l;addClass(o,TreeView._CNDT);r.appendChild(o);if(n){let e=document.createElement("img");e.src=n;r.insertBefore(e,r.firstChild)}if(this._showChk&&!this._lazyLoad){i=document.createElement("input");i.type="checkbox";i.tabIndex=-1;addClass(i,TreeView._CNDC);r.insertBefore(i,r.firstChild)}this._dd&&r.setAttribute("draggable","true");e.appendChild(r);r[TreeView._DATAITEM_KEY]=s;a&&0==a.length&&!this.lazyLoadFunction&&(a=null);if(a){let s=this.expandOnLoad;if(t>this._ldLvl&&s){this._ldLvl=t;if(0==a.length){s=!1;addClass(r,TreeView._CCLD)}}else{s=!1;addClass(r,TreeView._CCLD);t<this._ldLvl&&(this._ldLvl=100)}if(a.length>0){let s=document.createElement("div");s.tabIndex=-1;addClass(s,TreeView._CNDL);for(let e=0;e<a.length;e++)this._addItem(s,t+1,a[e]);e.appendChild(s);setAttribute(s,"role","group",!0)}setAttribute(r,"aria-expanded",s.toString(),!0)}else addClass(r,TreeView._CEMP);if(i&&this.checkedMemberPath)if(a&&a.length){new TreeNode(this,r)._updateCheckedState()}else i.checked=this._chkPath.getValue(s,t);this.formatItem.hasHandlers&&this.onFormatItem(new FormatNodeEventArgs(s,r,t))}_collapseToLevel(e,t,s){for(let i=0;i<e.length;i++){let l=e[i];if(!l.hasPendingChildren){l.isCollapsed=s>=t;l.hasChildren&&this._collapseToLevel(l.nodes,t,s+1)}}}_lazyLoadNode(e){let t=this.hostElement;if(!hasClass(t,TreeView._CLDG)){addClass(t,TreeView._CLDG);addClass(e.element,TreeView._CLDG);this.lazyLoadFunction(e,this._lazyLoadCallback.bind(e))}}_lazyLoadCallback(e){this.treeView._lazyLoadNodeDone(this,e)}_lazyLoadNodeDone(e,t){let s=TreeView;removeClass(e.element,s._CLDG);removeClass(this.hostElement,s._CLDG);let i=e.dataItem,l=e.level,n=asArray(t,!0);if(null==n||0==n.length){this._itmPath.setValue(i,l,null);addClass(e.element,s._CEMP);removeClass(e.element,s._CCLD)}else if(n.length){this._itmPath.setValue(i,l,n);let t=document.createElement("div"),a=e.element;addClass(t,s._CNDL);a.parentElement.insertBefore(t,a.nextSibling);for(let e=0;e<n.length;e++)this._addItem(t,l+1,n[e]);e.isCollapsed=!1}}isTxtSelected(e){let t=window.getSelection();return t.anchorNode===e&&t.toString().length>0}_clearMultiSelectedNodes(e=!1){for(let t=this._selNodes.length-1;t>=0;t--)e&&this._selNodes[t]==this.selectedNode||this._selNodes[t].deSelect(!0)}dispose(){if(this._toSrch){clearTimeout(this._toSrch);this._toSrch=null}if(this._toItemsChanged){clearTimeout(this._toItemsChanged);this._toItemsChanged=null}if(this._updateCheckedTimer){clearTimeout(this._updateCheckedTimer);this._updateCheckedTimer=null}if(this._setFocusTimer){clearTimeout(this._setFocusTimer);this._setFocusTimer=null}if(this._dd){this._dd.dispose();this._dd=null}this._prevSel=null;if(this._edtNode){let e=this._edtNode.element.querySelector("."+TreeView._CNDT);e&&delete e.contentEditable;this._edtNode=null}this._chkItems=null;this._lazyLoad=null;this._items=null;this.options=null;this._itmPath=null;this._chkPath=null;this._dspPath=null;this._imgPath=null;if(this._selNodes&&this._selNodes.length>0){this._selNodes.forEach(e=>{e.dispose()});this._selNodes=null}this.nodes&&this.nodes.length>0&&this.nodes.forEach(e=>{e.dispose()});this.formatItem&&this.formatItem.hasHandlers&&this.formatItem.removeAllHandlers();this._selNodes&&this._selNodes.collectionChanged&&this._selNodes.collectionChanged.removeAllHandlers();const e=this.hostElement;if(e){e.querySelectorAll("."+TreeView._CND).forEach(e=>{e[TreeView._DATAITEM_KEY]&&delete e[TreeView._DATAITEM_KEY];e[TreeNode.CacheKey]&&delete e[TreeNode.CacheKey]});e.querySelectorAll("."+TreeView._CLDG).forEach(e=>{removeClass(e,TreeView._CLDG)})}if(this._root){this._root.innerHTML="";this._root=null}this._srch="";super.dispose()}}TreeView._DATAITEM_KEY="wj-Data-Item";TreeView._AS_DLY=600;TreeView._AN_DLY=200;TreeView._CND=TreeViewClsNames.node;TreeView._CNDL=TreeViewClsNames.nodeList;TreeView._CEMP=ControlStateClsNames.empty;TreeView._CNDT=TreeViewClsNames.nodeText;TreeView._CNDC=TreeViewClsNames.nodeCheck;TreeView._CSEL=ControlStateClsNames.selected;TreeView._CMSEL=ControlStateClsNames.multiSelected;TreeView._CCLD=ControlStateClsNames.collapsed;TreeView._CCLG=ControlStateClsNames.collapsing;TreeView._CLDG=ControlStateClsNames.loading;TreeView._ctrlTemplate="";export class _TreeDragDropManager{constructor(e){this._tree=asType(e,TreeView);this._dragstartBnd=this._dragstart.bind(this);this._dragoverBnd=this._dragover.bind(this);this._dropBnd=this._drop.bind(this);this._dragendBnd=this._dragend.bind(this);_TreeDragDropManager._activeTreeCount++;let t=this._tree,s=t.hostElement;t.addEventListener(s,"dragstart",this._dragstartBnd);t.addEventListener(s,"dragover",this._dragoverBnd);t.addEventListener(s,"dragleave",this._dragoverBnd);t.addEventListener(s,"drop",this._dropBnd);t.addEventListener(s,"dragend",this._dragendBnd);t.addEventListener(s,"keydown",this._keydown)}dispose(){_TreeDragDropManager._activeTreeCount--;if(0===_TreeDragDropManager._activeTreeCount){removeChild(_TreeDragDropManager._dMarker);_TreeDragDropManager._markerInstance=null;if(_TreeDragDropManager._drgSrc){_TreeDragDropManager._drgSrc.dispose();_TreeDragDropManager._drgSrc=null}}}_dragstart(e){if(!e.defaultPrevented){let t=this._tree,s=closestClass(e.target,TreeView._CND),i=_TreeDragDropManager;i._drgSrc=TreeNode._isNode(s)?new TreeNode(t,s):null;if(i._drgSrc){let e=new TreeNodeEventArgs(i._drgSrc);t.onDragStart(e)||(i._drgSrc=null)}if(i._drgSrc&&e.dataTransfer){_startDrag(e.dataTransfer,"copyMove");e.stopPropagation()}else e.preventDefault()}}_removeDragFeedback(){document.body.querySelectorAll("."+_TreeDragDropManager.CLS_DRAG_FEEDBACK).forEach(e=>e.remove())}_dragover(e){this._handleDragDrop(e,!1)}_drop(e){this._handleDragDrop(e,!0)}_dragend(e){_TreeDragDropManager._drgSrc=null;this._showDragMarker();this._removeDragFeedback();this._tree.onDragEnd()}_keydown(e){e.defaultPrevented||e.keyCode==Key.Escape&&this._dragendBnd(null)}static get _dMarker(){this._markerInstance||(this._markerInstance="undefined"!=typeof window?createElement(`<div class="${TreeViewClsNames.marker}">&nbsp;</div>`):null);return this._markerInstance}_handleDragDrop(e,t){let s,i,l=this._tree,n=_TreeDragDropManager,a=DropPosition,r=a.Into;if(!e.defaultPrevented&&n._drgSrc){let o=document.elementFromPoint(e.clientX,e.clientY),h=closestClass(o,TreeView._CND);if(null==h){let e=Control.getControl(closest(o,"."+TreeViewClsNames.hostElement));e instanceof TreeView&&0==e.totalItemCount&&(h=e.hostElement)}h==n._drgSrc.element&&(h=null);if(h&&l.allowMultiSelect&&TreeNode._isNode(h)&&l.hostElement.contains(n._drgSrc.element)){const e=new TreeNode(l,h);if(e.isSelected)h=null;else for(let t=l.selectedNodes.length-1;t>=0;t--){const s=l.selectedNodes[t];if(s.hasChildren&&s._contains(e)){h=null;break}}}if(h){i=h.getBoundingClientRect();let t=new TreeNode(l,h),o=t.hasPendingChildren?i.height/2:i.height/3;if(null==t.element){i=Rect.fromBoundingRect(i);i.inflate(-12,-12);r=a.Before}else if(e.clientY<i.top+o)r=a.Before;else if(e.clientY>i.bottom-o||t.hasPendingChildren){r=a.After;if(t.hasChildren&&!t.isCollapsed&&!t.hasPendingChildren){r=a.Before;t=t.next(!0,!1);h=t.element;i=h.getBoundingClientRect()}}if(n._drgSrc._contains(t))h=null;else{s=new TreeNodeDragDropEventArgs(n._drgSrc,t,r);s.cancel=n._drgSrc.treeView!=t.treeView;l.onDragOver(s)||(h=null)}}if(h){r=s.position;if(r==a.Before){let e=s.dragSource.next(!0,!1);e&&e.element==h&&(h=null)}else if(r==a.After){let e=s.dragSource.previous(!0,!1);e&&e.element==h&&(h=null)}}if(h&&!t){e.dataTransfer.dropEffect="move";e.preventDefault();e.stopPropagation();this._showDragMarker(i,r)}else this._showDragMarker();if(h&&t&&l.onDrop(s)){l.hostElement.focus();if(l.allowMultiSelect){const e=this._getTopLevelSelectedNodes(),t=s.dragSource.treeView,i=s.dropTarget.treeView;s.position==DropPosition.After&&e.reverse();e.forEach(e=>e.move(s.dropTarget,s.position));if(t!=i){t.selectedNodes.clear();t.selectedNode=null;e.forEach(e=>e.select())}}else{let e=s.dragSource;e.move(s.dropTarget,s.position);e.ensureVisible();e.select()}}}}_getTopLevelSelectedNodes(){const e=_TreeDragDropManager._drgSrc.treeView,t=[];e.hostElement.querySelectorAll("."+TreeView._CMSEL+" , ."+TreeView._CSEL).forEach(s=>{const i=new TreeNode(e,s);((e,t)=>{if(!t)return!1;for(let s=0;s<t.length;s++)if(t[s]._contains(e))return!0;return!1})(i,t)||t.push(i)});return t}_showDragMarker(e,t){let s=this._tree,i=_TreeDragDropManager._dMarker.parentElement;if(e){let l=s.hostElement.getBoundingClientRect(),n=t==DropPosition.After?e.bottom:e.top,a={top:Math.round(n-l.top+s.hostElement.scrollTop-2),width:"75%",height:t==DropPosition.Into?e.height:0,opacity:t==DropPosition.Into?"0.15":""};toggleClass(_TreeDragDropManager._dMarker,TreeViewClsNames.lineMarker,t!==DropPosition.Into);s.rightToLeft?a.right=Math.round(l.right-e.right):a.left=Math.round(e.left-l.left);setCss(_TreeDragDropManager._dMarker,a);i!=s._root&&s._root.appendChild(_TreeDragDropManager._dMarker)}else i&&i.removeChild(_TreeDragDropManager._dMarker)}}_TreeDragDropManager.CLS_DRAG_FEEDBACK=TreeViewClsNames.dragFeedback;_TreeDragDropManager.CLS_DRAG_ITEMCOUNT=TreeViewClsNames.dragItemCount;_TreeDragDropManager.CLS_DRAG_ITEMCOUNT_LARGE=TreeViewClsNames.largerDragItemCount;_TreeDragDropManager._activeTreeCount=0;_registerModule("wijmo.nav",selfModule);
14
+ import{Binding,isString,isArray,assert,EventArgs,asType,asEnum,CancelEventArgs,hasClass,removeClass,addClass,toggleClass,setAttribute,setChecked,enable,isFunction,asBoolean,removeChild,animate as coreAnimate,Control,asArray,asFunction,closest,closestClass,getActiveElement,contains,Key,Event,ObservableArray,NotifyCollectionChangedAction,ControlStateClsNames,ControlClsNames,UtilitesClsNames,createElement,_startDrag,Rect,setCss,asInt,animate,getElement,isBoolean,_registerModule}from"@mescius/wijmo";import*as selfModule from"@mescius/wijmo.nav";export const AccordionClsNames={header:"wj-header",hostElement:"wj-accordion",showIcons:"wj-show-icons",activeContent:"wj-active-content"};export const TabPanelClsNames={hostElement:"wj-tabpanel",tabHeader:"wj-tabheader",tabHeaders:"wj-tabheaders",tabPane:"wj-tabpane",tabPanes:"wj-tabpanes",screenReaderOnly:"wj-sr-only"};export const TreeViewClsNames={dragFeedback:"wj-tv-drag-feedback",dragItemCount:"wj-tv-drag-ic",hostElement:"wj-treeview",largerDragItemCount:"wj-larger-drag-ic",marker:"wj-marker",lineMarker:"wj-line-marker",node:"wj-node",nodeCheck:"wj-node-check",nodeList:"wj-nodelist",nodeText:"wj-node-text"};export class TabPanel extends Control{constructor(e,t,s,i){super(e,null,!0);this._tabs=new ObservableArray;this._selectedIndex=-1;this._animated=!0;this._autoSwitch=!0;this._isInitialized=!1;this.selectedIndexChanged=new Event;const n=this.hostElement,a=[];if(!s)for(;n.firstElementChild;){const e=n.firstElementChild;n.removeChild(e);i||a.push(e)}const l=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${TabPanelClsNames.hostElement} ${UtilitesClsNames.animated}`,l,{_dRoot:"root",_dTabHeaders:"tabheaders",_dTabPanes:"tabpanes",_tabStatus:"tab-select-status"});n.tabIndex=-1;this._dRoot.tabIndex=this._dTabHeaders.tabIndex=this._dTabPanes.tabIndex=-1;t&&isBoolean(t.isAnimated)&&(this.isAnimated=t.isAnimated);this.addEventListener(n,"click",this._click.bind(this));this.addEventListener(n,"keydown",this._keydown.bind(this));this._tabs.collectionChanged.addHandler(this._populateControl.bind(this));this.tabs.deferUpdate(()=>{a.forEach(e=>{assert(2==e.childElementCount,"TabPanel children should contain header and pane elements");this.tabs.push(new Tab(e.children[0],e.children[1]))})});this.initialize(t);if(this.selectedIndex<0&&this.tabs.length)this.selectedIndex=0;else{this._isInitialized=!0;this.onSelectedIndexChanged();delete this._isInitialized}}static get controlTemplate(){TabPanel._ctrlTemplate||(TabPanel._ctrlTemplate=`<div wj-part="root"><div wj-part="tabheaders" class="${TabPanelClsNames.tabHeaders}" role="tablist"></div><div wj-part="tabpanes" class="${TabPanelClsNames.tabPanes}"></div><div wj-part="tab-select-status" aria-live="polite" class="${TabPanelClsNames.screenReaderOnly}"></div></div>`);return TabPanel._ctrlTemplate}static set controlTemplate(e){TabPanel._ctrlTemplate=e}get tabs(){return this._tabs}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){if((e=asInt(e,!1))!=this._selectedIndex){this._selectedIndex=e;this._updateContent();this.onSelectedIndexChanged();this.tabs[e]&&this.tabs[e].header&&(this._tabStatus.textContent=""+this.tabs[e].header.textContent)}else"Angular2"==this.workingAs&&this._updateContent()}get selectedTab(){const e=this._selectedIndex;return e>-1?this._tabs[e]:null}set selectedTab(e){let t=-1;for(let s=0;s<this._tabs.length&&t<0;s++)this._tabs[s]==e&&(t=s);this.selectedIndex=t}get isAnimated(){return this._animated}set isAnimated(e){this._animated=asBoolean(e);toggleClass(this.hostElement,UtilitesClsNames.animated,this._animated)}get autoSwitch(){return this._autoSwitch}set autoSwitch(e){if(e!=this._autoSwitch){this._autoSwitch=asBoolean(e);this._updateContent()}}getTab(e){for(let t=0;t<this._tabs.length;t++){const s=this._tabs[t];if(s.header.id==e||s.pane.id==e)return s}for(let t=0;t<this._tabs.length;t++){const s=this._tabs[t];if(s.header.textContent==e)return s}return null}onSelectedIndexChanged(e){this.selectedIndexChanged.raise(this,e)}_populateControl(){this._removeChildren(this._dTabHeaders);this._removeChildren(this._dTabPanes);let e=-1;this._tabs.forEach((t,s)=>{assert(t instanceof Tab,"tabs array must contain Tab objects.");t._setPanel(this);const i=t.header;addClass(i,TabPanelClsNames.tabHeader);setAttribute(i,"role","tab");this._dTabHeaders.appendChild(i);const n=t.pane;addClass(n,TabPanelClsNames.tabPane);setAttribute(n,"role","tabpanel");setAttribute(n,"aria-labelledby",i.id?i.id:null);this._dTabPanes.appendChild(n);e<0&&(hasClass(i,ControlStateClsNames.active)||"true"==i.getAttribute("aria-selected"))&&(e=s)});e<0&&this._tabs.length>0&&(e=0);e>-1?this.selectedIndex=e:this.selectedIndex>-1&&this.selectedIndex<this._tabs.length&&this._updateContent();this._validateSelection()}_validateSelection(){const e=this.selectedTab;if(e&&(e.isDisabled||!e.isVisible)){let e=this._getNextIndex(this.selectedIndex,1);e<0&&(e=this._getNextIndex(this.selectedIndex,-1));this.selectedIndex=e}}_updateContent(){const e=contains(this._dTabHeaders,getActiveElement()),t=this._dTabHeaders.children,s=this._dTabPanes.children,i=this._selectedIndex;if(i>-1&&i<s.length){const e=s[i],t=e.style;if(this.isAnimated){this._eAnim&&(this._eAnim.style.opacity="");this._toAnim&&clearInterval(this._toAnim);t.opacity="0";this._eAnim=e;this._toAnim=animate(e=>{if(1==e){this._eAnim=null;this._toAnim=null;t.opacity=""}else t.opacity=e.toString()})}else t.opacity=""}for(let n=0;n<t.length;n++){const a=n==i,l=t[n];setAttribute(l,"aria-selected",a);toggleClass(l,ControlStateClsNames.active,a);const o=s[n];toggleClass(o,ControlStateClsNames.active,a);l.tabIndex=a||!this._autoSwitch?this._orgTabIndex:-1;if(a){e&&l.focus();this._szObserver||Control.invalidateAll(o)}}}_removeChildren(e){for(;e.firstChild;)e.removeChild(e.firstChild)}_click(e){const t=this._getTabIndex(e.target);if(t>-1){const e=this._tabs[t];!e.isDisabled&&e.isVisible&&(this.selectedIndex=t)}}_keydown(e){if(!e.defaultPrevented){let t=this._getTabIndex(getActiveElement());if(t>-1){const s=this._getKeyCode(e);switch(s){case Key.Left:case Key.Up:case Key.Right:case Key.Down:case Key.Home:case Key.PageUp:case Key.End:case Key.PageDown:switch(s){case Key.Left:case Key.Up:t=this._getNextIndex(t,-1);break;case Key.Right:case Key.Down:t=this._getNextIndex(t,1);break;case Key.Home:case Key.PageUp:t=this._getNextIndex(-1,1);break;case Key.End:case Key.PageDown:t=this._getNextIndex(this._tabs.length,-1)}t>-1&&(this._autoSwitch?this.selectedIndex=t:this._tabs[t].header.focus());e.preventDefault();break;case Key.Enter:case Key.Space:if(t>-1){this._tabs[t].header.click()}e.preventDefault()}}}}_getTabIndex(e){const t=closest(e,"."+TabPanelClsNames.tabHeader);if(t&&closest(t,"."+TabPanelClsNames.hostElement)==this.hostElement)for(let e=0;e<this._tabs.length;e++)if(this._tabs[e].header==t)return e;return-1}_getNextIndex(e,t){for(let s=e+t;s>-1&&s<this._tabs.length;s+=t){const e=this._tabs[s];if(!e.isDisabled&&e.isVisible)return s}return-1}_setIsDisabled(e){super._setIsDisabled(e);this._updateTabIndex()}_setTabOrder(e){super._setTabOrder(e);this.isDisabled||this._updateTabIndex()}_updateTabIndex(){const e=this._dTabHeaders.children,t=this._selectedIndex;if(t>-1&&t<e.length){e[t].tabIndex=this.isDisabled?-1:this._orgTabIndex}this.hostElement.tabIndex=-1}dispose(){if(this._toAnim){clearInterval(this._toAnim);this._toAnim=null}this._tabs.collectionChanged.removeHandler(this._populateControl,this);this._tabs.forEach(e=>{e.dispose()});this._tabs.clear();super.dispose()}}TabPanel._ctrlTemplate="";export class Tab{constructor(e,t){this._hdr=asType(getElement(e),HTMLElement);this._pane=asType(getElement(t),HTMLElement)}get tabPanel(){return this._p}get header(){return this._hdr}get pane(){return this._pane}get isDisabled(){return hasClass(this._hdr,ControlStateClsNames.disabled)}set isDisabled(e){toggleClass(this._hdr,ControlStateClsNames.disabled,asBoolean(e));this._p&&this._p._validateSelection()}get isVisible(){return"none"!=this._hdr.style.display}set isVisible(e){this._hdr.style.display=asBoolean(e)?"":"none";this._p&&this._p._validateSelection()}_setParts(e,t){e=asType(getElement(e),HTMLElement);t=asType(getElement(t),HTMLElement,!1);if(this._hdr!==e||this._pane!==t){const s=this.isDisabled,i=this.isVisible;this._hdr=e;this._pane=t;this.isDisabled=s;this.isVisible=i;const n=this.tabPanel;n&&!n.tabs.isUpdating&&n._populateControl()}}_setPanel(e){this._p=e}dispose(){this._hdr=null;this._pane=null;this._p=null}}const _CLS_ACTIVE=ControlStateClsNames.active;export class Accordion extends Control{constructor(e,t,s){super(e,null,!0);this._panes=new ObservableArray;this._selectedIndex=-1;this._animated=!0;this._autoSwitch=!0;this._alCollapseAll=!1;this._alExpandMany=!1;this._autoSwitching=!1;this.selectedIndexChanged=new Event;const i=this.hostElement,n=this._panes,a=[];if(!s)for(;i.firstElementChild;){const e=i.firstElementChild;i.removeChild(e);a.push(e)}addClass(i,`${ControlClsNames.hostElement} ${AccordionClsNames.hostElement} ${AccordionClsNames.showIcons}`);i.tabIndex=-1;this.addEventListener(i,"click",this._click.bind(this));this.addEventListener(i,"keydown",this._keydown.bind(this));n.collectionChanged.addHandler(this._populateControl.bind(this));n.deferUpdate(()=>{a.forEach(e=>{assert(2==e.childElementCount,"Accordion children should contain header and pane elements");n.push(new AccordionPane(e.children[0],e.children[1]))})});this.initialize(t);const l=t?t.selectedIndex:null;this.selectedIndex!=l&&this.selectedIndex<0&&n.length?this.selectedIndex=0:this.onSelectedIndexChanged()}get panes(){return this._panes}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){if((e=asInt(e,!1))!=this._selectedIndex){this._selectedIndex=e;this._updateContent();this.onSelectedIndexChanged()}else this._updateContent()}get selectedPane(){const e=this._selectedIndex;return e>-1?this._panes[e]:null}set selectedPane(e){this.selectedIndex=this._getIndexOfPane(e)}get isAnimated(){return this._animated}set isAnimated(e){this._animated=asBoolean(e)}get showIcons(){return hasClass(this.hostElement,AccordionClsNames.showIcons)}set showIcons(e){toggleClass(this.hostElement,AccordionClsNames.showIcons,asBoolean(e))}get autoSwitch(){return this._autoSwitch}set autoSwitch(e){if(e!=this._autoSwitch){this._autoSwitch=asBoolean(e);this._updateContent()}}get allowCollapseAll(){return this._alCollapseAll}set allowCollapseAll(e){this._alCollapseAll=asBoolean(e)}get allowExpandMany(){return this._alExpandMany}set allowExpandMany(e){if(e!=this._alExpandMany){this._alExpandMany=e=asBoolean(e);e||this.panes.forEach((e,t)=>{const s=t==this.selectedIndex;toggleActiveClass(e.header,s);setAttribute(e.header,"aria-expanded",s)})}}getPane(e){for(let t=0;t<this._panes.length;t++){const s=this._panes[t];if(s.header.id==e||s.content.id==e)return s}for(let t=0;t<this._panes.length;t++){const s=this._panes[t];if(s.header.textContent==e)return s}return null}onSelectedIndexChanged(e){this.selectedIndexChanged.raise(this,e)}_populateControl(){let e=-1,t=this.hostElement;this._panes.forEach((s,i)=>{assert(s instanceof AccordionPane,"panes array must contain AccordionPane objects.");s._setAccordion(this);const n=s.header;addClass(n,AccordionClsNames.header);setAttribute(n,"role","button");t.appendChild(n);const a=s.content;addClass(a,ControlClsNames.content);setAttribute(a,"role","region");setAttribute(a,"aria-labelledby",n.id?n.id:null);t.appendChild(a);e<0&&(hasClass(n,_CLS_ACTIVE)||"true"==n.getAttribute("aria-expanded"))&&(e=i)});e>-1?this.selectedIndex=e:this.selectedIndex>-1&&this.selectedIndex<this._panes.length&&this._updateContent();this._validateSelection()}_validateSelection(){const e=this.selectedPane;if(e&&(e.isDisabled||!e.isVisible)){let e=this._getNextIndex(this.selectedIndex,1);e<0&&(e=this._getNextIndex(this.selectedIndex,-1));this.selectedIndex=e}}_updateContent(){const e=contains(this.hostElement,getActiveElement()),t=this._selectedIndex,s=this._panes,i=[];s.forEach((s,n)=>{const a=s.header,l=n==t,o=hasClass(a,_CLS_ACTIVE),r=l||o&&this._alExpandMany&&s!=this._hidePane,h=r&&!o,d=o&&!r;this._animated&&(h||d)&&i.push({show:h,pane:s});setAttribute(a,"aria-expanded",r);this._animated||toggleActiveClass(a,r);if(l){e&&a.focus();this._szObserver||Control.invalidateAll(s.content)}});this._updatePanesTabIndex();if(this._animated&&i.length){i.forEach(e=>{toggleActiveClass(e.pane.header,!0);e.height=e.pane.content.offsetHeight;e.show&&(e.pane.content.style.height="0")});this._toAnim=animate(e=>{e<1?i.forEach(t=>{const s=t.height*(t.show?e:1-e);t.pane.content.style.height=s.toFixed(0)+"px"}):i.forEach(e=>{e.pane.content.style.height="";toggleActiveClass(e.pane.header,e.show)})})}this._hidePane=null}_updatePanesTabIndex(){this._panes.forEach((e,t)=>{e.header.tabIndex=this._selectedIndex!==t&&this._autoSwitch?-1:this._orgTabIndex})}_setTabOrder(e){super._setTabOrder(e);this._updatePanesTabIndex()}_click(e){const t=this._getPaneIndex(e.target);if(t>-1){const e=this._panes[t];if(!e.isDisabled&&e.isVisible){if(!hasClass(e.header,_CLS_ACTIVE)||this._autoSwitching)this.selectedIndex=t;else{const s=this._getNextActiveIndex(t);if(s>-1||this._alCollapseAll){this._hidePane=e;this.selectedIndex=s}}}}}_keydown(e){if(!e.defaultPrevented){let t=this._getPaneIndex(getActiveElement());if(t>-1){const s=this._getKeyCode(e);switch(s){case Key.Left:case Key.Up:case Key.Right:case Key.Down:case Key.Home:case Key.PageUp:case Key.End:case Key.PageDown:switch(s){case Key.Left:case Key.Up:t=this._getNextIndex(t,-1);break;case Key.Right:case Key.Down:t=this._getNextIndex(t,1);break;case Key.Home:case Key.PageUp:t=this._getNextIndex(-1,1);break;case Key.End:case Key.PageDown:t=this._getNextIndex(this._panes.length,-1)}if(t>-1){const e=this._panes[t];if(this._autoSwitch){this._autoSwitching=!0;e.header.click();this._autoSwitching=!1}else e.header.focus()}e.preventDefault();break;case Key.Enter:case Key.Space:if(t>-1){this._panes[t].header.click()}e.preventDefault()}}}}_getPaneIndex(e){const t=closest(e,"."+AccordionClsNames.header);if(t&&closest(t,"."+AccordionClsNames.hostElement)==this.hostElement)for(let e=0;e<this._panes.length;e++)if(this._panes[e].header==t)return e;return-1}_getNextIndex(e,t){for(let s=e+t;s>-1&&s<this._panes.length;s+=t){const e=this._panes[s];if(!e.isDisabled&&e.isVisible)return s}return-1}_getIndexOfPane(e){let t=-1;const s=this._panes;for(let i=0;i<s.length&&t<0;i++)s[i]==e&&(t=i);return t}_getNextActiveIndex(e){let t=-1;const s=this.panes;for(let i=1;i<s.length;i++){const n=(e+i)%s.length,a=s[n];if(hasClass(a.header,_CLS_ACTIVE)){t=n;break}}return t}_togglePane(e,t){if(e.isCollapsed!==t&&e.isVisible&&!e.isDisabled)if(t){if(this.allowCollapseAll||this.panes.filter(e=>!e.isCollapsed).length>1){this._hidePane=e;const t=this._getIndexOfPane(e);this.selectedIndex=this._getNextActiveIndex(t)}}else this.selectedPane=e}dispose(){if(this._animated&&this._toAnim){clearInterval(this._toAnim);this._toAnim=null}this._panes.collectionChanged.removeHandler(this._populateControl,this);this._panes.forEach(e=>{e.dispose()});this._panes.clear();super.dispose()}}export class AccordionPane{constructor(e,t){this._hdr=asType(getElement(e),HTMLElement);this._content=asType(getElement(t),HTMLElement)}get accordion(){return this._acc}get header(){return this._hdr}get content(){return this._content}get isDisabled(){return hasClass(this._hdr,ControlStateClsNames.disabled)}set isDisabled(e){toggleClass(this._hdr,ControlStateClsNames.disabled,asBoolean(e));this._acc&&this._acc._validateSelection()}get isVisible(){return"none"!=this._hdr.style.display}set isVisible(e){this._hdr.style.display=asBoolean(e)?"":"none";this._acc&&this._acc._validateSelection()}get isCollapsed(){return!hasClass(this._hdr,_CLS_ACTIVE)}set isCollapsed(e){const t=this._acc;t?t._togglePane(this,e):toggleActiveClass(this._hdr,!asBoolean(e))}_setParts(e,t){e=asType(getElement(e),HTMLElement);t=asType(getElement(t),HTMLElement,!1);if(this._hdr!==e||this._content!==t){const s=this.isDisabled,i=this.isVisible;this._hdr=e;this._content=t;this.isDisabled=s;this.isVisible=i;const n=this.accordion;n&&!n.panes.isUpdating&&n._populateControl()}}_setAccordion(e){this._acc=e}dispose(){this._hdr=null;this._content=null;this._acc=null}}function toggleActiveClass(e,t){toggleClass(e,_CLS_ACTIVE,t);toggleClass(e.nextElementSibling,AccordionClsNames.activeContent,t)}export class FormatNodeEventArgs extends EventArgs{constructor(e,t,s){super();this._data=e;this._e=asType(t,HTMLElement);this._level=s}get dataItem(){return this._data}get element(){return this._e}get level(){return this._level}}export class TreeNodeEventArgs extends CancelEventArgs{constructor(e){super();this._node=e}get node(){return this._node}}export class TreeNodeDragDropEventArgs extends CancelEventArgs{constructor(e,t,s){super();this._src=asType(e,TreeNode);this._tgt=asType(t,TreeNode);this._pos=s}get dragSource(){return this._src}get dropTarget(){return this._tgt}get position(){return this._pos}set position(e){this._pos=asEnum(e,DropPosition)}}export var DropPosition;!function(e){e[e.Before=0]="Before";e[e.After=1]="After";e[e.Into=2]="Into"}(DropPosition||(DropPosition={}));export class TreeNode{constructor(e,t){if(hasClass(t,TreeViewClsNames.hostElement)){e=Control.getControl(t);t=null}else TreeNode._assertNode(t);if(t&&t[TreeNode.CacheKey]&&t[TreeNode.CacheKey]._t==e)return t[TreeNode.CacheKey];t&&(t[TreeNode.CacheKey]=this);this._t=e;this._e=t}get dataItem(){return this._e[TreeView._DATAITEM_KEY]}get element(){return this._e}get treeView(){return this._t}ensureVisible(){const e=!!this.parentNode&&this.parentNode.isCollapsed;this.treeView._scrollNode=this;for(let e=this.parentNode;e;e=e.parentNode)e.isCollapsed=!1;this.treeView.isAnimated&&e||this._scrollIntoView()}_scrollIntoView(){if(!this.treeView._scrollNode)return;const e=this._t.hostElement,t=this.treeView._scrollNode.element.getBoundingClientRect(),s=e.getBoundingClientRect(),i=e.offsetHeight-e.clientHeight;t.bottom>s.bottom-i?e.scrollTop+=t.bottom-(s.bottom-i):t.top<s.top&&(e.scrollTop-=s.top-t.top);this.treeView._scrollNode=null}equals(e){return null!=e&&e.element==this.element}get isSelected(){const e=this._t;return e.selectedNode==this||e.selectedNodes.includes(this)}select(e=!1){const t=this._t,s=t._selNode;if(!this.equals(s)){if(s){removeClass(s.element,TreeView._CSEL);setAttribute(s.element,"aria-selected",!1)}t._selNode=this;addClass(this.element,TreeView._CSEL);setAttribute(this.element,"aria-selected",!0);this.ensureVisible();if(t.allowMultiSelect&&!t.selectedNodes.includes(this))t.selectedNodes.push(this);else if(!t.selectedNodes.includes(this)){t.selectedNodes.beginUpdate();t.selectedNodes.clear();t.selectedNodes.push(this);t.selectedNodes.endUpdate(!0)}t._updateFocus(s);e||t.onSelectedItemChanged()}}deSelect(e=!1){if(!this.isSelected)return;const t=this._t;removeClass(this.element,TreeView._CSEL);setAttribute(this.element,"aria-selected",!1);t.selectedNodes.remove(this);t.selectedNode==this?e?t._selNode=null:t.selectedNode=null:e||t.onSelectedItemChanged()}get index(){let e=0;for(let t=this._pse(this.element);t;t=this._pse(t))TreeNode._isNode(t)&&e++;return e}get parentNode(){let e=null;if(this._e){const t=this._e.parentElement;TreeNode._assertNodeList(t);e=this._pse(t)}return e?new TreeNode(this._t,e):null}get level(){let e=-1;for(let t=this;t;t=t.parentNode)e++;return e}get hasChildren(){return TreeNode._isNode(this._e)&&!TreeNode._isEmpty(this._e)}get hasPendingChildren(){return this.isCollapsed&&this.hasChildren&&!TreeNode._isNodeList(this.element.nextElementSibling)&&isFunction(this._t.lazyLoadFunction)}get nodes(){return this.hasChildren?TreeNode._getChildNodes(this._t,this._e.nextSibling):null}get checkBox(){return this._e.querySelector("input."+TreeView._CNDC)}get isCollapsed(){return this.hasChildren&&hasClass(this._e,TreeView._CCLD)}set isCollapsed(e){if(e!=this.isCollapsed){const t=this._t,s=new TreeNodeEventArgs(this);if(t.onIsCollapsedChanging(s)){this.setCollapsed(asBoolean(e),t.isAnimated,t.autoCollapse);t.onIsCollapsedChanged(s)}}}get isChecked(){const e=this.checkBox;return e&&!e.indeterminate?e.checked:null}set isChecked(e){if(e!=this.isChecked){const t=this._t,s=new TreeNodeEventArgs(this);if(t.onIsCheckedChanging(s)){this.setChecked(asBoolean(e),!0);t.onIsCheckedChanged(s)}}}get isDisabled(){return this._e&&null!=this._e.getAttribute("disabled")}set isDisabled(e){if((e=asBoolean(e,!0))!=this.isDisabled){enable(this._e,!e);this.isDisabled&&this._t&&this._t.collapseWhenDisabled&&(this.isCollapsed=!0)}}previous(e,t){let s=this._pse(this._e);!s&&TreeNode._isNodeList(this._e.parentElement)&&(s=this._pse(this._e.parentElement));if(TreeNode._isNodeList(s)){for(;TreeNode._isNodeList(s)&&s.childElementCount;)s=s.lastChild;TreeNode._isNodeList(s)&&(s=this._pse(s))}let i=TreeNode._isNode(s)?new TreeNode(this._t,s):null;e&&i&&!i.element.offsetHeight&&(i=i.previous(e,t));t&&i&&i.isDisabled&&(i=i.previous(e,t));return i}next(e,t){let s=this._e.nextSibling;TreeNode._isNodeList(s)&&(s=s.childElementCount?s.firstChild:s.nextSibling);if(!s)for(let e=this._e.parentElement;!s&&TreeNode._isNodeList(e);e=e.parentElement)s=e.nextSibling;let i=TreeNode._isNode(s)?new TreeNode(this._t,s):null;e&&i&&!i.element.offsetHeight&&(i=i.next(e,t));t&&i&&i.isDisabled&&(i=i.next(e,t));return i}previousSibling(){let e=this._pse(this.element);for(;TreeNode._isNodeList(e);)e=this._pse(e);return e?new TreeNode(this._t,e):null}nextSibling(){let e=this.element.nextSibling;TreeNode._isNodeList(e)&&(e=e.nextSibling);return e?new TreeNode(this._t,e):null}setCollapsed(e,t,s){const i=this._t,n=this._e,a=this._e.nextElementSibling,l=TreeNode._isNodeList(a);setAttribute(n,"aria-expanded",l?(!e).toString():null);if(e!=this.isCollapsed)if(e||l||!isFunction(i.lazyLoadFunction)){null==t&&(t=i.isAnimated);null==s&&(s=i.autoCollapse);if(t){if(l){const t=a.offsetHeight,s=a.style,l=i.hostElement,o=l.style;l.scrollHeight<=l.clientHeight&&(o.overflowY="hidden");if(e){toggleClass(n,TreeView._CCLG,!0);coreAnimate(e=>{if(e<1){e=1-e;s.height=(e*t).toFixed(0)+"px"}else{s.height=s.opacity=o.overflowY="";toggleClass(n,TreeView._CCLD,!0);toggleClass(n,TreeView._CCLG,!1)}},TreeView._AN_DLY)}else{toggleClass(n,TreeView._CCLD,!1);s.height=s.opacity="0";coreAnimate(e=>{s.height=e>=1?s.opacity=o.overflowY="":(e*t).toFixed(0)+"px"},TreeView._AN_DLY,void 0,()=>{this._scrollIntoView()})}}}else toggleClass(n,TreeView._CCLD,e);if(!e&&s){const e=n.parentElement;if(TreeNode._isNodeList(e))for(let t=0;t<e.children.length;t++){const s=e.children[t];if(s!=n&&TreeNode._isNode(s)){toggleClass(s,TreeView._CCLD,!0);s.setAttribute("aria-expanded","false")}}}this.element}else i._lazyLoadNode(this)}setChecked(e,t){const s=this.checkBox,i=s.checked!=e;setChecked(s,e);if(this.hasChildren)for(let t=0;t<this.nodes.length;t++)this.nodes[t].setChecked(e,!1);const n=this._t;n&&n.checkedMemberPath&&n._chkPath.setValue(this.dataItem,this.level,e);if(t){const e=this.parentNode;e&&e._updateCheckedState()}n&&i&&n._raiseCheckedItemsChanged()}remove(){const e=this._t,t=this.parentNode,s=this._getArray(),i=s.indexOf(this.dataItem);e.selectedNode==this&&(e.selectedNode=this.nextSibling()||this.previousSibling()||t);const n=this.element.nextSibling;TreeNode._isNodeList(n)&&removeChild(n);removeChild(this.element);t&&t._updateState();s.splice(i,1);this._t=null}addChildNode(e,t){const s=this._t._createNode(t),i=this.nodes;i?e<i.length?s.move(i[e],DropPosition.Before):s.move(i[i.length-1],DropPosition.After):s.move(this,DropPosition.Into);return s}refresh(e){const t=this._getArray();e&&(t[this.index]=e);e=t[this.index];const s=this._t._createNode(e);let i=this.hasChildren&&!this.hasPendingChildren?this.element.nextSibling:null;i&&removeChild(i);i=s.hasChildren&&!s.hasPendingChildren?s.element.nextSibling:null;i&&this.element.parentElement.insertBefore(i,this.element.nextSibling);this.element.innerHTML=s.element.innerHTML;this._updateState()}move(e,t){if(e instanceof TreeNode&&this._contains(e))return!1;const s=this.parentNode,i=this._getArray();this._moveElements(e,t);e.treeView&&(this._t=e.treeView);s&&s._updateState();const n=this.parentNode;n&&n._updateState();const a=this.dataItem,l=i.indexOf(a),o=this._getArray();i.splice(l,1);o.splice(this.index,0,a);return!0}get itemsSource(){return this._getArray()}_pse(e){return e.previousElementSibling}_contains(e){for(;e;e=e.parentNode)if(e.element==this.element)return!0;return!1}_getArray(){let e=this._t,t=this.parentNode,s=e.itemsSource;if(t){const i=e._itmPath;s=i.getValue(t.dataItem,this.level);if(!s){s=[];i.setValue(t.dataItem,this.level,s)}}return s}_moveElements(e,t){let s=document.createDocumentFragment(),i=this.hasChildren&&!this.hasPendingChildren?this.element.nextSibling:null;s.appendChild(this.element);if(i){TreeNode._assertNodeList(i);s.appendChild(i)}if(e instanceof TreeView){e._root.insertBefore(s,null);return}let n=e.element,a=n?n.parentElement:e.treeView._root;TreeNode._assertNodeList(a);const l=DropPosition;switch(t){case l.Before:a.insertBefore(s,n);break;case l.After:n=(e=e.nextSibling())?e.element:null;a.insertBefore(s,n);break;case l.Into:if(!e.hasChildren||e.hasPendingChildren){i=document.createElement("div");addClass(i,TreeView._CNDL);a.insertBefore(i,n.nextSibling)}a=e.element.nextSibling;TreeNode._assertNodeList(a);a.insertBefore(s,null)}}_updateState(){this._updateEmptyState();this._updateCheckedState()}_updateEmptyState(){let e=this.element.nextSibling,t=!1;TreeNode._isNodeList(e)&&(e.childElementCount?t=!0:removeChild(e));toggleClass(this.element,TreeView._CEMP,!t);t||this.element.removeAttribute("aria-expanded")}_updateCheckedState(){let e=this._t,t=this.checkBox,s=this.nodes,i=0,n=0,a=!1;if(t&&s){for(let e=0;e<s.length&&!a;e++){switch(s[e].isChecked){case!0:i++;break;case!1:n++;break;case null:a=!0}i&&n&&(a=!0)}setChecked(t,a?null:i>0);if(e&&e.checkedMemberPath){const s=a?null:t.checked;e._chkPath.setValue(this.dataItem,this.level,s)}}const l=this.parentNode;l&&l._updateCheckedState()}dispose(){delete this._e[TreeNode.CacheKey];this._t=null;const e=this._e.nextElementSibling;TreeNode._isNodeList(e)&&e.parentNode&&e.parentNode.removeChild(e);this.nodes&&this.nodes.forEach(e=>{e.dispose()});this._e.innerHTML="";this._e=null}static _getChildNodes(e,t){const s=[];if(TreeNode._isNodeList(t)){const i=t.children;for(let t=0;t<i.length;t++){const n=i[t];TreeNode._isNode(n)&&s.push(new TreeNode(e,n))}}return s}static _isNode(e){return e&&hasClass(e,TreeView._CND)}static _isNodeList(e){return e&&hasClass(e,TreeView._CNDL)}static _isEmpty(e){return TreeNode._isNode(e)&&hasClass(e,TreeView._CEMP)}static _isCollapsed(e){return TreeNode._isNode(e)&&!TreeNode._isEmpty(e)&&hasClass(e,TreeView._CCLD)}static _assertNode(e){assert(TreeNode._isNode(e),"node expected")}static _assertNodeList(e){assert(TreeNode._isNodeList(e),"nodeList expected")}}TreeNode.CacheKey="$_WJ_TV_NODE";export class _BindingArray{constructor(e){this.path=e}get path(){return this._path}set path(e){this._path=e;if(isString(e))this._bindings=[new Binding(e)];else if(isArray(e)){this._bindings=[];for(let t=0;t<e.length;t++)this._bindings.push(new Binding(e[t]))}else null!=e&&assert(!1,"Path should be a string or an array of strings.");this._maxLevel=this._bindings?this._bindings.length-1:-1}getValue(e,t){const s=Math.min(t,this._maxLevel);return s>-1?this._bindings[s].getValue(e):null}setValue(e,t,s){const i=Math.min(t,this._maxLevel);i>-1&&this._bindings[i].setValue(e,s)}}export class TreeView extends Control{constructor(e,t={}){super(e);this._selNodes=new ObservableArray;this._itmPath=new _BindingArray("items");this._chkPath=new _BindingArray;this._dspPath=new _BindingArray("header");this._imgPath=new _BindingArray;this._html=!1;this._animated=!0;this._chkOnClick=!1;this._collOnClick=!1;this._xpndOnClick=!0;this._xpndOnLoad=!0;this._autoColl=!0;this._showChk=!1;this._collapseWhenDisabled=!0;this._srch="";this._isReadOnly=!0;this._preserveSelNode=!1;this._allowMultiSelect=!1;this.itemsSourceChanged=new Event;this.loadingItems=new Event;this.loadedItems=new Event;this.itemClicked=new Event;this.selectedItemChanged=new Event;this.checkedItemsChanged=new Event;this.isCollapsedChanging=new Event;this.isCollapsedChanged=new Event;this.isCheckedChanging=new Event;this.isCheckedChanged=new Event;this.formatItem=new Event(()=>{this.invalidate()});this.dragStart=new Event;this.dragOver=new Event;this.drop=new Event;this.dragEnd=new Event;this.nodeEditStarting=new Event;this.nodeEditStarted=new Event;this.nodeEditEnding=new Event;this.nodeEditEnded=new Event;this.options=t;const s=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${TreeViewClsNames.hostElement}`,s,{_root:"root"});const i=this.hostElement;setAttribute(i,"role","tree",!0);addClass(this._root,TreeView._CNDL);setAttribute(this._root,"role","group",!0);this.addEventListener(i,"mousedown",this._mousedown.bind(this));this.addEventListener(i,"click",this._click.bind(this));this.addEventListener(i,"keydown",this._keydown.bind(this));this.addEventListener(i,"keypress",this._keypress.bind(this));this.addEventListener(i,"wheel",e=>{i.scrollHeight>i.offsetHeight&&(e.deltaY<0&&0==i.scrollTop||e.deltaY>0&&i.scrollTop+i.offsetHeight>=i.scrollHeight)&&e.preventDefault()});this.addEventListener(i,"blur",()=>{this._edtNode&&!contains(this._edtNode.element,getActiveElement())&&this.finishEditing()},!0);this.addEventListener(i,"paste",e=>{if(this._edtNode&&!this.isContentHtml){const t=(e.clipboardData||window.clipboardData).getData("text"),s=window.getSelection();if(t&&s.rangeCount){s.deleteFromDocument();s.getRangeAt(0).insertNode(document.createTextNode(t));e.preventDefault()}}});this._selNodes.collectionChanged.addHandler((e,t)=>{switch(t.action){case NotifyCollectionChangedAction.Add:addClass(t.item.element,TreeView._CMSEL);break;case NotifyCollectionChangedAction.Remove:removeClass(t.item.element,TreeView._CMSEL);break;case NotifyCollectionChangedAction.Change:addClass(t.item.element,TreeView._CMSEL);break;case NotifyCollectionChangedAction.Reset:this.hostElement.querySelectorAll("."+TreeView._CMSEL).forEach(e=>{removeClass(e,TreeView._CMSEL)})}});this.initialize(t);this.refresh()}static get controlTemplate(){TreeView._ctrlTemplate||(TreeView._ctrlTemplate='<div wj-part="root"></div>');return TreeView._ctrlTemplate}static set controlTemplate(e){TreeView._ctrlTemplate=e}get itemsSource(){return this._items}set itemsSource(e){if(this._items!=e){this._items=asArray(e);this.onItemsSourceChanged();this._srcChanged=!0;this._reload()}}get childItemsPath(){return this._itmPath.path}set childItemsPath(e){if(e!=this.childItemsPath){this._itmPath.path=e;this._reload()}}get displayMemberPath(){return this._dspPath.path}set displayMemberPath(e){if(e!=this.displayMemberPath){this._dspPath.path=e;this._reload()}}get imageMemberPath(){return this._imgPath.path}set imageMemberPath(e){if(e!=this.imageMemberPath){this._imgPath.path=e;this._reload()}}get checkedMemberPath(){return this._chkPath.path}set checkedMemberPath(e){if(e!=this.checkedMemberPath){this._chkPath.path=e;this._reload()}}get isContentHtml(){return this._html}set isContentHtml(e){if(e!=this._html){this._html=asBoolean(e);this._reload()}}get showCheckboxes(){return this._showChk}set showCheckboxes(e){if(e!=this._showChk){this._showChk=asBoolean(e);this._reload()}}get autoCollapse(){return this._autoColl}set autoCollapse(e){this._autoColl=asBoolean(e)}get collapseWhenDisabled(){return this._collapseWhenDisabled}set collapseWhenDisabled(e){this._collapseWhenDisabled=asBoolean(e)}get isAnimated(){return this._animated}set isAnimated(e){this._animated=asBoolean(e);toggleClass(this.hostElement,UtilitesClsNames.animated,this._animated)}get isReadOnly(){return this._isReadOnly}set isReadOnly(e){this._isReadOnly=asBoolean(e);toggleClass(this.hostElement,ControlStateClsNames.readOnly,this.isReadOnly)}startEditing(e){this._prevDragState=this.allowDragging;if(this.isReadOnly)return!1;e||(e=this.selectedNode);if(!e||e.isDisabled)return!1;if(!this.finishEditing())return!1;const t=e.element.querySelector("."+TreeView._CNDT);if(!t)return!1;const s=new TreeNodeEventArgs(e);if(!this.onNodeEditStarting(s))return!1;t.tabIndex=0;t.focus();t.contentEditable="true";t.style.cursor="auto";const i=document.createRange();i.selectNodeContents(t);const n=getSelection();n.removeAllRanges();n.addRange(i);this.allowDragging=!this.isTxtSelected(t);t.focus();setAttribute(t,"autocomplete","off");setAttribute(t,"autocorrect","off");this._edtNode=e;this.onNodeEditStarted(s);return!0}finishEditing(e){const t=this._edtNode;if(t){const s=t.element.querySelector("."+TreeView._CNDT);if(!s)return!1;const i=new TreeNodeEventArgs(t);if(!this.onNodeEditEnding(i))return!1;const n=t.dataItem,a=t.level;this.isContentHtml?e?s.innerHTML=this._dspPath.getValue(n,a):this._dspPath.setValue(n,a,s.innerHTML):e?s.textContent=this._dspPath.getValue(n,a):this._dspPath.setValue(n,a,s.textContent);document.createRange().selectNodeContents(s);getSelection().removeAllRanges();s.contentEditable="false";s.style.cursor="";this.allowDragging=this._prevDragState;this._edtNode=null;this.onNodeEditEnded(i)}return!0}get allowDragging(){return null!=this._dd}set allowDragging(e){if(e!=this.allowDragging){if(asBoolean(e))this._dd=new _TreeDragDropManager(this);else{this._dd.dispose();this._dd=null}const t=this.hostElement.querySelectorAll("."+TreeView._CND);for(let e=0;e<t.length;e++){const s=t[e];setAttribute(s,"draggable",!!this._dd||null)}}}get checkOnClick(){return this._chkOnClick}set checkOnClick(e){this._chkOnClick=asBoolean(e)}get expandOnClick(){return this._xpndOnClick}set expandOnClick(e){this._xpndOnClick=asBoolean(e)}get collapseOnClick(){return this._collOnClick}set collapseOnClick(e){this._collOnClick=asBoolean(e)}get expandOnLoad(){return this._xpndOnLoad}set expandOnLoad(e){this._xpndOnLoad=asBoolean(e)}get selectedItem(){return this._selNode?this._selNode.dataItem:null}set selectedItem(e){if(e!=this.selectedItem){this._isDirty&&this.refresh();this.selectedNode=e?this.getNode(e):null}}get selectedNode(){return this._selNode}set selectedNode(e){if(e!=this.selectedNode){this._prevSel=this._selNode;if(e)e.select();else if(this._selNode){const e=this._selNode.element;removeClass(e,TreeView._CSEL);setAttribute(e,"aria-selected",!1);this._selNode=null;this._updateFocus(this._prevSel);this.onSelectedItemChanged()}}}get selectedPath(){const e=[];for(let t=this.selectedNode;t;t=t.parentNode){const s=this._dspPath.getValue(t.dataItem,t.level);e.splice(0,0,s)}return e}get checkedItems(){if(null==this._chkItems){const e=TreeView,t=`.${e._CND}.${e._CEMP} > input:checked.${e._CNDC}`,s=this._root.querySelectorAll(t);this._chkItems=[];for(let t=0;t<s.length;t++){const i=s[t].parentElement[e._DATAITEM_KEY];this._chkItems.push(i)}}return this._chkItems}set checkedItems(e){if(this.showCheckboxes){this._isDirty&&this.refresh();const t=TreeView,s=`.${t._CND}.${t._CEMP}`,i=this._root.querySelectorAll(s);for(let t=0;t<i.length;t++){const s=new TreeNode(this,i[t]),n=e.indexOf(s.dataItem)>-1;s.isChecked!=n&&(s.isChecked=n)}}}checkAllItems(e){if(this.showCheckboxes){const t=TreeView,s=`.${t._CND}.${t._CEMP}`,i=this._root.querySelectorAll(s);for(let t=0;t<i.length;t++){const s=new TreeNode(this,i[t]);s.isChecked!=e&&(s.isChecked=e)}}}get totalItemCount(){return this.hostElement.querySelectorAll("."+TreeView._CND).length}get lazyLoadFunction(){return this._lazyLoad}set lazyLoadFunction(e){if(e!=this._lazyLoad){this._lazyLoad=asFunction(e);this._reload()}}get preserveSelectedNode(){return this._preserveSelNode}set preserveSelectedNode(e){this._preserveSelNode=asBoolean(e,!1)}get selectedNodes(){return this._selNodes}get allowMultiSelect(){return this._allowMultiSelect}set allowMultiSelect(e){this._allowMultiSelect=asBoolean(e,!1);this._allowMultiSelect&&this.selectedNodes.forEach(e=>{addClass(e.element,TreeView._CMSEL)})}getFirstNode(e,t){let s=this.hostElement.querySelector("."+TreeView._CND),i=s?new TreeNode(this,s):null;e&&i&&!i.element.offsetHeight&&(i=i.next(e,t));t&&i&&i.isDisabled&&(i=i.next(e,t));return i}getLastNode(e,t){let s=this.hostElement.querySelectorAll(`.${TreeView._CND}:last-child`),i=s.length?new TreeNode(this,s[s.length-1]):null;e&&i&&!i.element.offsetHeight&&(i=i.previous(e,t));t&&i&&i.isDisabled&&(i=i.previous(e,t));return i}get nodes(){return TreeNode._getChildNodes(this,this._root)}getNode(e){this._isDirty&&this._loadTree();const t=this.hostElement.querySelectorAll("."+TreeView._CND);for(let s=0;s<t.length;s++){const i=t[s];if(i[TreeView._DATAITEM_KEY]==e)return new TreeNode(this,i)}return null}addChildNode(e,t){const s=this._createNode(t),i=this.nodes;i?e<i.length?s.move(i[e],DropPosition.Before):s.move(i[i.length-1],DropPosition.After):s.move(this,DropPosition.Into);return s}collapseToLevel(e){const t=this._animated,s=this._autoColl;this._animated=this._autoColl=!1;this._collapseToLevel(this.nodes,e,0);this._animated=t;this._autoColl=s}loadTree(e){this._loadTree(e)}onItemsSourceChanged(e){this.itemsSourceChanged.raise(this,e)}onLoadingItems(e){this.loadingItems.raise(this,e);return!e.cancel}onLoadedItems(e){this.loadedItems.raise(this,e)}onItemClicked(e){this.itemClicked.raise(this,e)}onSelectedItemChanged(e){this.selectedItemChanged.raise(this,e)}onCheckedItemsChanged(e){this._chkItems=null;this.checkedItemsChanged.raise(this,e)}onIsCollapsedChanging(e){this.isCollapsedChanging.raise(this,e);return!e.cancel}onIsCollapsedChanged(e){this.isCollapsedChanged.raise(this,e)}onIsCheckedChanging(e){this.isCheckedChanging.raise(this,e);return!e.cancel}onIsCheckedChanged(e){this.isCheckedChanged.raise(this,e)}onFormatItem(e){this.formatItem.raise(this,e)}onDragStart(e){this.dragStart.raise(this,e);return!e.cancel}onDragOver(e){this.dragOver.raise(this,e);return!e.cancel}onDrop(e){this.drop.raise(this,e);return!e.cancel}onDragEnd(e){this.dragEnd.raise(this,e)}onNodeEditStarting(e){this.nodeEditStarting.raise(this,e);return!e.cancel}onNodeEditStarted(e){this.nodeEditStarted.raise(this,e)}onNodeEditEnding(e){this.nodeEditEnding.raise(this,e);return!e.cancel}onNodeEditEnded(e){this.nodeEditEnded.raise(this,e)}refresh(e=!0){super.refresh(e);this.isUpdating||!this._isDirty||this.disposed||this._loadTree(!0)}_updateFocus(e){this._updateTabIndex();if(this.containsFocus()){const e=this._selNode;e?e.element.focus():this.hostElement.focus()}e&&(e.element.tabIndex=-1)}_updateTabIndex(){const e=this._selNode;e&&(e.element.tabIndex=this._orgTabIndex);this.hostElement.tabIndex=e||this.isDisabled?-1:this._orgTabIndex}_setTabOrder(e){this._orgTabIndex=e;this._updateTabIndex()}_raiseCheckedItemsChanged(){this._toItemsChanged&&clearTimeout(this._toItemsChanged);this._toItemsChanged=setTimeout(()=>{this._toItemsChanged=null;this.onCheckedItemsChanged()},10)}_reload(){this._isDirty=!0;this.invalidate()}_createNode(e){const t=Object.assign({},this.options);this.formatItem&&(t.formatItem=this.formatItem.getHandler());return new TreeView(document.createElement("div"),Object.assign({},t,{expandOnLoad:this.expandOnLoad,allowDragging:this.allowDragging,lazyLoadFunction:this.lazyLoadFunction,childItemsPath:this.childItemsPath,displayMemberPath:this.displayMemberPath,imageMemberPath:this.imageMemberPath,isContentHtml:this.isContentHtml,showCheckboxes:this.showCheckboxes,itemsSource:[e]})).getFirstNode()}_getCollapseIconWidthBounds(e){const t=getComputedStyle(e,":before"),s=parseFloat(getComputedStyle(e).paddingLeft);let i=0,n=0;if("auto"!==t.width)if("none"==t.transform){i=s;n=parseFloat(t.width)+s}else{const e=parseFloat(t.height),a=(parseFloat(t.width)-e)/2;i=s+a;n=parseFloat(t.height)+s+a}else;if(this.rightToLeft){const t=n-i;n=e.clientWidth-i;i=n-t}return{left:i,right:n}}_mousedown(e){if(!e.defaultPrevented){const t=closestClass(e.target,TreeView._CND),s=t?new TreeNode(this,t):null;if(s&&!s.isDisabled){const i=this._getCollapseIconWidthBounds(t),n=t==e.target&&e.offsetX>=i.left&&e.offsetX<=i.right;if(!this.preserveSelectedNode||!n)if((e.ctrlKey||e.metaKey)&&this.allowMultiSelect)s.isSelected?s.deSelect():s.select();else if(e.shiftKey&&this.allowMultiSelect){let e=this.selectedNode;e||(e=this._prevSel);if(e){const t=this._getNodesBetween(s.element,e.element),i=new Set(this.selectedNodes);for(let e=t.length-1;e>=0;e--){const s=new TreeNode(this,t[e]);i.has(s)?i.delete(s):s.select(!0)}const n=e.equals(this.selectedNode)&&i.size>0;Array.from(i).forEach(e=>{e.deSelect(!0)});e.select();n&&this.onSelectedItemChanged()}}else{s.isSelected?this._prevSel=s:this._clearMultiSelectedNodes();this.selectedNode=s;s.select()}}}}_getNodesBetween(e,t){let s=e,i=t;if(this._getOffsetFromRoot(s)>this._getOffsetFromRoot(t)){s=t;i=e}const n=[],a=this.hostElement.querySelectorAll("."+TreeView._CND);let l=!1;for(let e=a.length-1;e>=0;e--){const t=a[e];t==i&&(l=!0);l&&n.unshift(t);if(t==s)break}return n}_getOffsetFromRoot(e){let t=0;for(;e!=this.hostElement;){t+=e.offsetTop;e=e.parentElement}return t}_checkCollapseIconClick(e){if(e.defaultPrevented)return;const t=closestClass(e.target,TreeView._CND),s=t?new TreeNode(this,t):null;if(s&&!s.isDisabled){const i=this._getCollapseIconWidthBounds(t),n=t==e.target&&e.offsetX>=i.left&&e.offsetX<=i.right;if(this.preserveSelectedNode&&n){(e.ctrlKey||e.metaKey)&&!s.hasPendingChildren?this.collapseToLevel(s.isCollapsed?s.level+1:s.level):s.isCollapsed=!s.isCollapsed;this.isAnimated?this._setFocusTimer=setTimeout(()=>{this.focus()},TreeView._AN_DLY+Control._ANIM_DEF_STEP):this.focus();e.preventDefault()}}}_click(e){this._checkCollapseIconClick(e);if(!e.defaultPrevented){const t=closestClass(e.target,TreeView._CND);if(t){let s=new TreeNode(this,t),i="input."+TreeView._CNDC,n=closest(e.target,i),a=t.getBoundingClientRect(),l=this.rightToLeft?a.right-e.clientX:e.clientX-a.left;if(s.isDisabled)return;if(!n&&s.equals(this._edtNode))return;!n&&this._chkOnClick&&(!s.hasChildren||l>t.offsetHeight)&&(n=t.querySelector(i));const o=this._prevSel,r=(e.shiftKey||e.ctrlKey||e.metaKey)&&this.allowMultiSelect;if(!r){this.selectedNode=s;this._clearMultiSelectedNodes(!0)}t.focus();if(n){e.preventDefault();e.stopPropagation();this._updateCheckedTimer=setTimeout(()=>{s.isChecked=!s.isChecked})}if(!n){let i=(e.ctrlKey||e.metaKey)&&!s.hasPendingChildren,n=s.isCollapsed,a=!1;if(s.hasChildren)if(l<=t.offsetHeight){a=!0;i?this.collapseToLevel(n?s.level+1:s.level):s.isCollapsed=!n}else if(this.expandOnClick&&n){a=!0;i?this.collapseToLevel(s.level+1):s.isCollapsed=!1}else if(this.collapseOnClick&&!n){a=!0;i?this.collapseToLevel(s.level):s.isCollapsed=!0}a&&i&&this.selectedNode&&this.selectedNode.ensureVisible();if(!a&&!this.isReadOnly&&!r){const e=this.selectedNode;e&&e.equals(o)&&this.startEditing()}}this.selectedItem&&this.onItemClicked()}}}_keydown(e){if(!e.defaultPrevented){let t,s=this._getKeyCode(e),i=this._selNode,n=!0;if(!i)switch(s){case Key.Up:case Key.Down:case Key.Left:case Key.Right:case Key.Enter:case Key.Home:case Key.End:t=this.getFirstNode(!0,!0);if(t){this.selectedNode=t;e.preventDefault();return}}if(i&&!i.isDisabled){switch(s){case Key.F2:this.startEditing();e.preventDefault();break;case Key.Escape:this.finishEditing(!0);e.preventDefault();break;case Key.Up:case Key.Down:this.finishEditing();break;case Key.Enter:if(this._edtNode){this.finishEditing();s=Key.Down}else{this.startEditing();e.preventDefault()}}if(this._edtNode)return;if(this.rightToLeft)switch(s){case Key.Left:s=Key.Right;break;case Key.Right:s=Key.Left}switch(s){case Key.Left:if(!i.isCollapsed&&i.hasChildren)i.isCollapsed=!0;else{i=i.parentNode;i&&i.select()}break;case Key.Right:i.isCollapsed&&i.hasChildren&&(i.isCollapsed=!1);break;case Key.Up:t=i.previous(!0,!0);break;case Key.Down:t=i.next(!0,!0);break;case Key.Home:t=this.getFirstNode(!0,!0);break;case Key.End:t=this.getLastNode(!0,!0);break;case Key.Space:if(this.selectedItem){const e=i.checkBox;e&&(i.isChecked=e.indeterminate||!e.checked)}break;case Key.Enter:this.selectedItem&&this.onItemClicked();break;default:n=!1}if(n){e.preventDefault();e.shiftKey?t&&t.isSelected&&i.deSelect(!0):this._clearMultiSelectedNodes(!t);t&&t.select()}}}}_keypress(e){if(!e.defaultPrevented){if(e.ctrlKey||e.metaKey||e.altKey)return;if(e.target instanceof HTMLInputElement)return;if(this._edtNode)return;if(e.charCode>32&&this.startEditing(this.selectedNode)){const t=getActiveElement();if(contains(this._edtNode.element,t)){t.textContent=String.fromCharCode(e.charCode);e.preventDefault();const s=document.createRange();s.selectNodeContents(t);s.collapse(!1);const i=getSelection();i.removeAllRanges();i.addRange(s)}return}if(e.charCode>32||32==e.charCode&&this._srch){e.preventDefault();this._srch+=String.fromCharCode(e.charCode).toLowerCase();this._toSrch&&clearTimeout(this._toSrch);this._toSrch=setTimeout(()=>{this._toSrch=null;this._srch=""},TreeView._AS_DLY);let t=this._findNext();if(null==t&&this._srch.length>1){this._srch=this._srch[this._srch.length-1];t=this._findNext()}null!=t&&(this.selectedItem=t)}}}_findNext(){if(this.hostElement&&this.selectedItem){let e=this.getNode(this.selectedItem),t=e,s=!1,i=!1;1==this._srch.length&&(i=!0);for(;t;){if(!t.isDisabled&&!i){if(0==t.element.textContent.trim().toLowerCase().indexOf(this._srch))return t.dataItem}let n=t.next(!0,!0);if(n==e&&s)break;if(!n&&!s){n=this.getFirstNode(!0,!0);s=!0}t=n;i=!1}}return null}_loadTree(e){const t=this._root;if(t){if(!this.onLoadingItems(new CancelEventArgs))return;const s=this.containsFocus(),i=this._srcChanged;this._isDirty=!1;this._srcChanged=!1;const n=this.selectedItem;this.selectedItem=null;const a=[];if(this.allowMultiSelect){this.selectedNodes.forEach(e=>{a.push(e.dataItem)});this.selectedNodes.beginUpdate();this.selectedNodes.clear();this.selectedNodes.endUpdate(!0)}this._chkItems=null;this._ldLvl=-1;let l;if(e&&isFunction(window.Map)&&!i&&this.nodes.length>0){l=new Map;const e=this.hostElement.querySelectorAll("."+TreeView._CND);for(let t=0;t<e.length;t++){const s=e[t];hasClass(s,TreeView._CCLD)&&l.set(s[TreeView._DATAITEM_KEY],!0)}}t.innerHTML="";this._items&&this._items.forEach(e=>{this._addItem(t,0,e)});if(l){const e=this.hostElement.querySelectorAll("."+TreeView._CND);for(let t=0;t<e.length;t++){const s=e[t],i=TreeNode._isNodeList(s.nextElementSibling),n=!TreeNode._isEmpty(s),a=l.get(s[TreeView._DATAITEM_KEY]);n&&(a||i)&&toggleClass(s,TreeView._CCLD,1==a);setAttribute(s,"aria-expanded",n?(!hasClass(s,TreeView._CCLD)).toString():null)}}s&&!this.containsFocus()&&this.focus();this.allowMultiSelect&&a.forEach(e=>{const t=this.getNode(e);t&&t.select(!0)});this.selectedItem=n;this.onLoadedItems();this._ldLvl=-1;this._srcChanged=!1}}_addItem(e,t,s){let i,n=this._dspPath.getValue(s,t),a=this._imgPath.getValue(s,t),l=asArray(this._itmPath.getValue(s,t),!0);const o=document.createElement("div");addClass(o,TreeView._CND);o.tabIndex=-1;setAttribute(o,"role","treeitem",!0);setAttribute(o,"aria-selected",!1);const r=document.createElement("span");this.isContentHtml?r.innerHTML=n:r.textContent=n;addClass(r,TreeView._CNDT);o.appendChild(r);if(a){const e=document.createElement("img");e.src=a;o.insertBefore(e,o.firstChild)}if(this._showChk&&!this._lazyLoad){i=document.createElement("input");i.type="checkbox";i.tabIndex=-1;addClass(i,TreeView._CNDC);o.insertBefore(i,o.firstChild)}this._dd&&o.setAttribute("draggable","true");e.appendChild(o);o[TreeView._DATAITEM_KEY]=s;l&&0==l.length&&!this.lazyLoadFunction&&(l=null);if(l){let s=this.expandOnLoad;if(t>this._ldLvl&&s){this._ldLvl=t;if(0==l.length){s=!1;addClass(o,TreeView._CCLD)}}else{s=!1;addClass(o,TreeView._CCLD);t<this._ldLvl&&(this._ldLvl=100)}if(l.length>0){const s=document.createElement("div");s.tabIndex=-1;addClass(s,TreeView._CNDL);for(let e=0;e<l.length;e++)this._addItem(s,t+1,l[e]);e.appendChild(s);setAttribute(s,"role","group",!0)}setAttribute(o,"aria-expanded",s.toString(),!0)}else addClass(o,TreeView._CEMP);if(i&&this.checkedMemberPath)if(l&&l.length){new TreeNode(this,o)._updateCheckedState()}else i.checked=this._chkPath.getValue(s,t);this.formatItem.hasHandlers&&this.onFormatItem(new FormatNodeEventArgs(s,o,t))}_collapseToLevel(e,t,s){for(let i=0;i<e.length;i++){const n=e[i];if(!n.hasPendingChildren){n.isCollapsed=s>=t;n.hasChildren&&this._collapseToLevel(n.nodes,t,s+1)}}}_lazyLoadNode(e){const t=this.hostElement;if(!hasClass(t,TreeView._CLDG)){addClass(t,TreeView._CLDG);addClass(e.element,TreeView._CLDG);this.lazyLoadFunction(e,this._lazyLoadCallback.bind(e))}}_lazyLoadCallback(e){this.treeView._lazyLoadNodeDone(this,e)}_lazyLoadNodeDone(e,t){const s=TreeView;removeClass(e.element,s._CLDG);removeClass(this.hostElement,s._CLDG);const i=e.dataItem,n=e.level,a=asArray(t,!0);if(null==a||0==a.length){this._itmPath.setValue(i,n,null);addClass(e.element,s._CEMP);removeClass(e.element,s._CCLD)}else if(a.length){this._itmPath.setValue(i,n,a);const t=document.createElement("div"),l=e.element;addClass(t,s._CNDL);l.parentElement.insertBefore(t,l.nextSibling);for(let e=0;e<a.length;e++)this._addItem(t,n+1,a[e]);e.isCollapsed=!1}}isTxtSelected(e){const t=window.getSelection();return t.anchorNode===e&&t.toString().length>0}_clearMultiSelectedNodes(e=!1){for(let t=this._selNodes.length-1;t>=0;t--)e&&this._selNodes[t]==this.selectedNode||this._selNodes[t].deSelect(!0)}dispose(){if(this._toSrch){clearTimeout(this._toSrch);this._toSrch=null}if(this._toItemsChanged){clearTimeout(this._toItemsChanged);this._toItemsChanged=null}if(this._updateCheckedTimer){clearTimeout(this._updateCheckedTimer);this._updateCheckedTimer=null}if(this._setFocusTimer){clearTimeout(this._setFocusTimer);this._setFocusTimer=null}if(this._dd){this._dd.dispose();this._dd=null}this._prevSel=null;if(this._edtNode){const e=this._edtNode.element.querySelector("."+TreeView._CNDT);e&&delete e.contentEditable;this._edtNode=null}this._chkItems=null;this._lazyLoad=null;this._items=null;this.options=null;this._itmPath=null;this._chkPath=null;this._dspPath=null;this._imgPath=null;if(this._selNodes&&this._selNodes.length>0){this._selNodes.forEach(e=>{e.dispose()});this._selNodes=null}this.nodes&&this.nodes.length>0&&this.nodes.forEach(e=>{e.dispose()});this.formatItem&&this.formatItem.hasHandlers&&this.formatItem.removeAllHandlers();this._selNodes&&this._selNodes.collectionChanged&&this._selNodes.collectionChanged.removeAllHandlers();const e=this.hostElement;if(e){e.querySelectorAll("."+TreeView._CND).forEach(e=>{e[TreeView._DATAITEM_KEY]&&delete e[TreeView._DATAITEM_KEY];e[TreeNode.CacheKey]&&delete e[TreeNode.CacheKey]});e.querySelectorAll("."+TreeView._CLDG).forEach(e=>{removeClass(e,TreeView._CLDG)})}if(this._root){this._root.innerHTML="";this._root=null}this._srch="";super.dispose()}}TreeView._DATAITEM_KEY="wj-Data-Item";TreeView._AS_DLY=600;TreeView._AN_DLY=200;TreeView._CND=TreeViewClsNames.node;TreeView._CNDL=TreeViewClsNames.nodeList;TreeView._CEMP=ControlStateClsNames.empty;TreeView._CNDT=TreeViewClsNames.nodeText;TreeView._CNDC=TreeViewClsNames.nodeCheck;TreeView._CSEL=ControlStateClsNames.selected;TreeView._CMSEL=ControlStateClsNames.multiSelected;TreeView._CCLD=ControlStateClsNames.collapsed;TreeView._CCLG=ControlStateClsNames.collapsing;TreeView._CLDG=ControlStateClsNames.loading;TreeView._ctrlTemplate="";export class _TreeDragDropManager{constructor(e){this._tree=asType(e,TreeView);this._dragstartBnd=this._dragstart.bind(this);this._dragoverBnd=this._dragover.bind(this);this._dropBnd=this._drop.bind(this);this._dragendBnd=this._dragend.bind(this);_TreeDragDropManager._activeTreeCount++;const t=this._tree,s=t.hostElement;t.addEventListener(s,"dragstart",this._dragstartBnd);t.addEventListener(s,"dragover",this._dragoverBnd);t.addEventListener(s,"dragleave",this._dragoverBnd);t.addEventListener(s,"drop",this._dropBnd);t.addEventListener(s,"dragend",this._dragendBnd);t.addEventListener(s,"keydown",this._keydown)}dispose(){_TreeDragDropManager._activeTreeCount--;if(0===_TreeDragDropManager._activeTreeCount){removeChild(_TreeDragDropManager._dMarker);_TreeDragDropManager._markerInstance=null;if(_TreeDragDropManager._drgSrc){_TreeDragDropManager._drgSrc.dispose();_TreeDragDropManager._drgSrc=null}}}_dragstart(e){if(!e.defaultPrevented){const t=this._tree,s=closestClass(e.target,TreeView._CND),i=_TreeDragDropManager;i._drgSrc=TreeNode._isNode(s)?new TreeNode(t,s):null;if(i._drgSrc){const e=new TreeNodeEventArgs(i._drgSrc);t.onDragStart(e)||(i._drgSrc=null)}if(i._drgSrc&&e.dataTransfer){_startDrag(e.dataTransfer,"copyMove");e.stopPropagation()}else e.preventDefault()}}_removeDragFeedback(){document.body.querySelectorAll("."+_TreeDragDropManager.CLS_DRAG_FEEDBACK).forEach(e=>{e.remove()})}_dragover(e){this._handleDragDrop(e,!1)}_drop(e){this._handleDragDrop(e,!0)}_dragend(e){_TreeDragDropManager._drgSrc=null;this._showDragMarker();this._removeDragFeedback();this._tree.onDragEnd()}_keydown(e){e.defaultPrevented||e.keyCode==Key.Escape&&this._dragendBnd(null)}static get _dMarker(){_TreeDragDropManager._markerInstance||(_TreeDragDropManager._markerInstance="undefined"!=typeof window?createElement(`<div class="${TreeViewClsNames.marker}">&nbsp;</div>`):null);return _TreeDragDropManager._markerInstance}_handleDragDrop(e,t){let s,i,n=this._tree,a=_TreeDragDropManager,l=DropPosition,o=l.Into;if(!e.defaultPrevented&&a._drgSrc){let r=document.elementFromPoint(e.clientX,e.clientY),h=closestClass(r,TreeView._CND);if(null==h){const e=Control.getControl(closest(r,"."+TreeViewClsNames.hostElement));e instanceof TreeView&&0==e.totalItemCount&&(h=e.hostElement)}h==a._drgSrc.element&&(h=null);if(h&&n.allowMultiSelect&&TreeNode._isNode(h)&&n.hostElement.contains(a._drgSrc.element)){const e=new TreeNode(n,h);if(e.isSelected)h=null;else for(let t=n.selectedNodes.length-1;t>=0;t--){const s=n.selectedNodes[t];if(s.hasChildren&&s._contains(e)){h=null;break}}}if(h){i=h.getBoundingClientRect();let t=new TreeNode(n,h),r=t.hasPendingChildren?i.height/2:i.height/3;if(null==t.element){i=Rect.fromBoundingRect(i);i.inflate(-12,-12);o=l.Before}else if(e.clientY<i.top+r)o=l.Before;else if(e.clientY>i.bottom-r||t.hasPendingChildren){o=l.After;if(t.hasChildren&&!t.isCollapsed&&!t.hasPendingChildren){o=l.Before;t=t.next(!0,!1);h=t.element;i=h.getBoundingClientRect()}}if(a._drgSrc._contains(t))h=null;else{s=new TreeNodeDragDropEventArgs(a._drgSrc,t,o);s.cancel=a._drgSrc.treeView!=t.treeView;n.onDragOver(s)||(h=null)}}if(h){o=s.position;if(o==l.Before){const e=s.dragSource.next(!0,!1);e&&e.element==h&&(h=null)}else if(o==l.After){const e=s.dragSource.previous(!0,!1);e&&e.element==h&&(h=null)}}if(h&&!t){e.dataTransfer.dropEffect="move";e.preventDefault();e.stopPropagation();this._showDragMarker(i,o)}else this._showDragMarker();if(h&&t&&n.onDrop(s)){n.hostElement.focus();if(n.allowMultiSelect){const e=this._getTopLevelSelectedNodes(),t=s.dragSource.treeView,i=s.dropTarget.treeView;s.position==DropPosition.After&&e.reverse();e.forEach(e=>{e.move(s.dropTarget,s.position)});if(t!=i){t.selectedNodes.clear();t.selectedNode=null;e.forEach(e=>{e.select()})}}else{const e=s.dragSource;e.move(s.dropTarget,s.position);e.ensureVisible();e.select()}}}}_getTopLevelSelectedNodes(){const e=_TreeDragDropManager._drgSrc.treeView,t=[];e.hostElement.querySelectorAll(`.${TreeView._CMSEL} , .${TreeView._CSEL}`).forEach(s=>{const i=new TreeNode(e,s);((e,t)=>{if(!t)return!1;for(let s=0;s<t.length;s++)if(t[s]._contains(e))return!0;return!1})(i,t)||t.push(i)});return t}_showDragMarker(e,t){const s=this._tree,i=_TreeDragDropManager._dMarker.parentElement;if(e){const n=s.hostElement.getBoundingClientRect(),a=t==DropPosition.After?e.bottom:e.top,l={top:Math.round(a-n.top+s.hostElement.scrollTop-2),width:"75%",height:t==DropPosition.Into?e.height:0,opacity:t==DropPosition.Into?"0.15":""};toggleClass(_TreeDragDropManager._dMarker,TreeViewClsNames.lineMarker,t!==DropPosition.Into);s.rightToLeft?l.right=Math.round(n.right-e.right):l.left=Math.round(e.left-n.left);setCss(_TreeDragDropManager._dMarker,l);i!=s._root&&s._root.appendChild(_TreeDragDropManager._dMarker)}else i&&i.removeChild(_TreeDragDropManager._dMarker)}}_TreeDragDropManager.CLS_DRAG_FEEDBACK=TreeViewClsNames.dragFeedback;_TreeDragDropManager.CLS_DRAG_ITEMCOUNT=TreeViewClsNames.dragItemCount;_TreeDragDropManager.CLS_DRAG_ITEMCOUNT_LARGE=TreeViewClsNames.largerDragItemCount;_TreeDragDropManager._activeTreeCount=0;_registerModule("wijmo.nav",selfModule);