UNPKG

azure-devops-ui

Version:

React components for building web UI in Azure DevOps

1 lines 5.17 kB
import{__spreadArray}from"tslib";import{ObservableArray}from"../Core/Observable";var TreeItemProvider=function(){function e(e){void 0===e&&(e=[]),this.itemMap=new Map;var t=[];this.rootItems=__spreadArray([],e,!0),this.addItems(e,void 0,t),this.tableItems=new ObservableArray(t)}return Object.defineProperty(e.prototype,"length",{get:function(){return this.tableItems.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"roots",{get:function(){return this.rootItems},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this.tableItems.value},enumerable:!1,configurable:!0}),e.prototype.subscribe=function(e,t){return this.tableItems.subscribe(e,t)},e.prototype.unsubscribe=function(e,t){return this.tableItems.unsubscribe(e,t)},e.prototype.add=function(e,t,i){return this.splice(t,void 0,[{insertAfter:i,items:[e]}])},e.prototype.clear=function(){this.tableItems.splice(0,this.tableItems.length),this.rootItems.splice(0,this.rootItems.length)},e.prototype.collapse=function(e){e.expanded&&this.toggle(e)},e.prototype.expand=function(e,t){var i=this.itemMap.get(e);if(i){for(var r=[];i.underlyingItem.expanded||r.push(i),i=i.parentItem,t&&i;);for(var n=r.length-1;0<=n;n--)this.toggle(r[n].underlyingItem)}},e.prototype.remove=function(e,t){if(!t){if(-1===(i=this.indexOf(e)))return;var i=this.tableItems.value[i];t=i.parentItem&&i.parentItem.underlyingItem}return this.splice(t,[e])},e.prototype.splice=function(e,t,i){var r,n=!1,s=-1,o=this.rootItems;if(e){if(!(r=this.itemMap.get(e)))return;s=this.indexOf(e),o=r.underlyingItem.childItems||[]}if(t=t&&t.slice(0),i)for(var a=0;a<i.length;a++){var l=!e||0<=s&&e.expanded?[]:void 0,d=i[a],m=s,p=0;if(d.insertAfter){if(-1===(p=o.indexOf(d.insertAfter)))continue;var h=this.indexOf(d.insertAfter,s+1);-1!==h&&(m=h+this.getTableChildCount(d.insertAfter))}else p--;this.addItems(d.items,r,l),o.splice.apply(o,__spreadArray([p+1,0],d.items,!1)),r&&!r.underlyingItem.childItems&&(r.underlyingItem.childItems=o,n=!0),l&&((h=this.tableItems).splice.apply(h,__spreadArray([m+1,0],l,!1)),n=!0)}if(t)for(a=0;a<t.length;a++){var f=t[a],l=!e||e.expanded?[]:void 0,p=void 0;-1!==(p=o.indexOf(f))&&(this.removeItem(f,l),o.splice(p,1),0===o.length&&e&&(delete e.childItems,n=!0),-1!==(f=this.indexOf(f,s+1))&&l)&&(this.tableItems.splice(f,l.length),n=!0)}n&&r&&-1!==s&&this.tableItems.change(s,r)},e.prototype.spliceBatch=function(e){for(var t=[],i=new ObservableArray(this.tableItems.value),r=0,n=e;r<n.length;r++){var s=n[r],o=void 0,a=!1,l=-1,d=this.rootItems;if(s.parentItem){if(!(o=this.itemMap.get(s.parentItem)))return;l=this.indexOf(s.parentItem,void 0,i),d=o.underlyingItem.childItems||[]}if(s.itemsToRemove&&(s.itemsToRemove=s.itemsToRemove.slice(0)),s.itemsToAdd)for(var m=0;m<s.itemsToAdd.length;m++){var p=!s.parentItem||0<=l&&s.parentItem.expanded?[]:void 0,h=s.itemsToAdd[m],f=l,I=0;if(h.insertAfter){if(-1===(I=d.indexOf(h.insertAfter)))continue;var u=this.indexOf(h.insertAfter,l+1,i);-1!==u&&(f=u+this.getTableChildCount(h.insertAfter))}else I--;this.addItems(h.items,o,p),d.splice.apply(d,__spreadArray([I+1,0],h.items,!1)),o&&!o.underlyingItem.childItems&&(o.underlyingItem.childItems=d,a=!0),p&&(u=s.ignoreDuplicatesOnAdding?p.filter(function(t){return!i.value.some(function(e){return e.underlyingItem==t.underlyingItem})}):p,i.splice.apply(i,__spreadArray([f+1,0],u,!1)),a=!0)}if(s.itemsToRemove)for(m=0;m<s.itemsToRemove.length;m++){var c=s.itemsToRemove[m],p=!s.parentItem||s.parentItem.expanded?[]:void 0,I=void 0;-1!==(I=d.indexOf(c))&&(this.removeItem(c,p),d.splice(I,1),0===d.length&&s.parentItem&&(delete s.parentItem.childItems,a=!0),-1!==(c=this.indexOf(c,l+1,i))&&p)&&(i.splice(c,p.length),a=!0)}a&&o&&-1!==l&&t.push({start:l,items:[o]})}(e=this.tableItems).splice.apply(e,__spreadArray([0,this.tableItems.length],i.value,!1)),t.length&&this.tableItems.changeOrderedBatch(t)},e.prototype.toggle=function(e){var t,i=this.indexOf(e);if(e.expanded=!e.expanded,0<=i&&e.childItems){for(var r=[],n=0;n<e.childItems.length;n++)this.getTableItems(e.childItems[n],r);e.expanded?(t=this.tableItems).splice.apply(t,__spreadArray([i+1,0],r,!1)):this.tableItems.splice(i+1,r.length)}},e.prototype.addItems=function(e,t,i){for(var r=0;r<e.length;r++){var n=e[r],s={depth:t?t.depth+1:0,parentItem:t,underlyingItem:n};this.itemMap.set(n,s),i&&i.push(s),n.childItems&&this.addItems(n.childItems,s,n.expanded?i:void 0)}},e.prototype.getTableItems=function(e,t){var i=this.itemMap.get(e);if(i&&(t.push(i),e.childItems)&&e.expanded)for(var r=0,n=e.childItems;r<n.length;r++){var s=n[r];this.getTableItems(s,t)}},e.prototype.getTableChildCount=function(e){var t=0;if(e.childItems&&e.expanded)for(var i=0;i<e.childItems.length;i++)t+=this.getTableChildCount(e.childItems[i])+1;return t},e.prototype.indexOf=function(e,t,i){void 0===i&&(i=this.tableItems);for(var r=t=void 0===t?0:t;r<i.length;r++)if(e===i.value[r].underlyingItem)return r;return-1},e.prototype.removeItem=function(e,t){if(this.itemMap.delete(e),t&&t.push(e),e.childItems)for(var i=0;i<e.childItems.length;i++)this.removeItem(e.childItems[i],e.expanded?t:void 0)},e}();export{TreeItemProvider};