UNPKG

@newbiz/common-libs

Version:

신사업개발실 서비스/어드민 프론트엔드 공통 라이브러리

1 lines 2.82 kB
"use strict";var h=this&&this.__assign||function(){return(h=Object.assign||function(t){for(var n,r=1,e=arguments.length;r<e;r++)for(var i in n=arguments[r])Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i]);return t}).apply(this,arguments)},u=this&&this.__read||function(t,n){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var e,i,a=r.call(t),o=[];try{for(;(void 0===n||0<n--)&&!(e=a.next()).done;)o.push(e.value)}catch(t){i={error:t}}finally{try{e&&!e.done&&(r=a.return)&&r.call(a)}finally{if(i)throw i.error}}return o},c=this&&this.__spreadArray||function(t,n,r){if(r||2===arguments.length)for(var e,i=0,a=n.length;i<a;i++)!e&&i in n||((e=e||Array.prototype.slice.call(n,0,i))[i]=n[i]);return t.concat(e||Array.prototype.slice.call(n))},r=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.Branch=void 0,{childrenKey:"children"});function Branch(t,n){this.rawData=t,this.option=h(h({},r),n),this.isValidRawData=t&&Array.isArray(t)&&0<t.length,this.isValidRawData?this.builtData=this.build():(this.builtData=null,console.error("[Branch] Invalid initial raw data"))}Branch.prototype.build=function(){var a=this,e=[],n=[],o=(this.rawData.forEach(function(r){var t;r.parent.forEach(function(n,t){n===r.id||e.some(function(t){return t.id===n})||a.rawData.some(function(t){return t.id===n})||e.push(((t={id:n,label:String(n),parent:0<t?r.parent.slice(0,r.parent.length-1):["ROOT"],depth:t+1})[a.option.childrenKey]=[],t))}),n.push(h(h({},r),((t={depth:1/0})[a.option.childrenKey]=[],t)))}),c(c([],u(e),!1),u(n),!1).sort(function(t,n){return t.depth&&n.depth?t.depth-n.depth:0})),l=function(t,i){return t.map(function(n){var t,r=o.filter(function(t){return t.parent&&t.parent[t.parent.length-1]===n.id}),e=h(h({},n),{depth:i});return r.length&&(t=n[a.option.childrenKey]||[],e[a.option.childrenKey]=c(c([],u(t),!1),u(l(r,i+1)),!1)),e})},t=l(o.filter(function(t){return 1===t.depth}),1),r={id:"ROOT",label:"Root",parent:[],depth:0};return r[this.option.childrenKey]=t,r},Branch.prototype.getTree=function(){return this.builtData},Branch.prototype.getRawList=function(){return this.rawData},Branch.prototype.getNodes=function(n){var t,a=this;return void 0===n&&(n=""),this.builtData?-1!==(t=this.rawData.findIndex(function(t){return t.id===n}))?c(c([],u(this.rawData[t].parent),!1),[n],!1).reduce(function(t,n){var r,e,i;return t.length?(i=(e=t[i=t.length-1][a.option.childrenKey])?e.findIndex(function(t){return t.id===n}):i,t.push(e[i])):null!=(r=null==(r=a.builtData)?void 0:r[a.option.childrenKey])&&r.length&&-1!==(i=(e=a.builtData[a.option.childrenKey]).findIndex(function(t){return t.id===n}))&&e[i]&&t.push(e[i]),t},[]):(console.error('[Branch] Node by id "'.concat(n,'" is not found.')),null):(console.error("[Branch] Raw data was not built yet."),null)},exports.Branch=Branch;