UNPKG

iking-utils-pro

Version:

金合前端工具库

2 lines (1 loc) 4.01 kB
const t={id:"id",children:"children",pid:"parentId",sort:"sort",needSort:!1},n=n=>({...t,...n});function r(t,r={}){const i=n(r),s=new Map,c=[],{id:o,children:u,pid:l}=i;for(const n of t)s.set(n[o],n);for(const n of t){const t=s.get(n[l]);t&&(t[u]??=[]),(t?t.children:c).push(n)}return i.needSort&&c?.length&&e(c,"",i),c}function e(t,n="",r){Array.isArray(t)?(t=t.sort(((t,n)=>t[r.sort]-n[r.sort])),t?.forEach(((t,i)=>{t.__nodekey=Number(`${n}${i+1}`),t.children&&(t.children=t.children.sort(((t,n)=>t[r.sort]-n[r.sort])),e(t.children,t.__nodekey,r))}))):t.__nodekey=Number(n)}function i(t,r={}){r=n(r);const{children:e}=r,i=[...t];for(let t=0;t<i.length;t++)i[t][e]&&i.splice(t+1,0,...i[t][e]);return i}function s(t,n){return Object.prototype.toString.call(t)===`[object ${n}]`}function c(t){return Object.prototype.toString.call(t)}class o{static isJSON(t){try{return!!JSON.parse(t)}catch(t){return!1}}static getTypeLong(t){return c(t)}static getType(t){const n=c(t);return n.substring(8,n.length-1).toLocaleLowerCase()}static isDef(t){return void 0!==t}static isUnDef(t){return!this.isDef(t)}static isObject(t){return null!==t&&s(t,"Object")}static isEmpty(t){return this.isArray(t)||this.isString(t)?0===t.length:t instanceof Map||t instanceof Set?0===t.size:!!this.isObject(t)&&0===Object.keys(t).length}static isDate(t){return s(t,"Date")}static isNull(t){return null===t}static isNullAndUnDef(t){return this.isUnDef(t)&&this.isNull(t)}static isNullOrUnDef(t){return this.isUnDef(t)||this.isNull(t)}static isNumber(t){return s(t,"Number")}static isPromise(t){return s(t,"Promise")&&this.isObject(t)&&this.isFunction(t.then)&&this.isFunction(t.catch)}static isString(t){return s(t,"String")}static isFunction(t){return"function"==typeof t}static isBoolean(t){return s(t,"Boolean")}static isRegExp(t){return s(t,"RegExp")}static isArray(t){return t&&Array.isArray(t)}static isWindow(t){return"undefined"!=typeof window&&s(t,"Window")}static isElement(t){return this.isObject(t)&&!!t.tagName}static isMap(t){return s(t,"Map")}static isServer="undefined"==typeof window;static isClient=!this.isServer;static isUrl(t){return/(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/.test(t)}}const u=(t,n="children",r)=>{const e=o.isString(n)?n:"children",i=o.isFunction(n)?n:r??null;if(i&&i(t),t[e]){(o.isArray(t[e])?t[e]:[t[e]]).forEach((t=>{u(t,r)}))}};function l(t,r,e={}){e=n(e);const{children:i}=e,s=[...t];for(const t of s){if(r(t))return t;t[i]&&s.push(...t[i])}return null}function h(t,r,e={}){e=n(e);const{children:i}=e,s=[...t],c=[];for(const t of s)r(t)&&c.push(t),t[i]&&s.push(...t[i]);return c}function a(t,r,e={}){e=n(e);const i=[],s=[...t],c=new Set,{children:o}=e;for(;s.length;){const t=s[0];if(c.has(t))i.pop(),s.shift();else if(c.add(t),t[o]&&s.unshift(...t[o]),i.push(t),r(t))return i}return null}function f(t,r,e={}){e=n(e);const i=[],s=[...t],c=[],o=new Set,{children:u}=e;for(;s.length;){const t=s[0];o.has(t)?(i.pop(),s.shift()):(o.add(t),t[u]&&s.unshift(...t[u]),i.push(t),r(t)&&c.push([...i]))}return c}function d(t,r,e={}){const i=(e=n(e)).children;return function t(n){return n.map((t=>({...t}))).filter((n=>(n[i]=n[i]&&t(n[i]),r(n)||n[i]&&n[i].length)))}(t)}function p(t,r,e={}){e=n(e);const i=[...t],{children:s}=e;for(let t=0;t<i.length;t++){if(r(i[t]))return;s&&i[t][s]&&i.splice(t+1,0,...i[t][s])}}function g(t,n){return t.map((t=>y(t,n)))}function y(t,{children:n="children",conversion:r}){const e=Array.isArray(t[n])&&t[n].length>0,i=r(t)||{};return e?{...i,[n]:t[n].map((t=>y(t,{children:n,conversion:r})))}:{...i}}function w(t,n={},r=[]){const{childrenField:e="children"}=n;if(!t||!t[e])return r;const i=t[e];if(i&&i.length)for(let t of i)r.push(t),w(t,n,r);return r}export{w as descendant,d as filter,l as findNode,h as findNodeAll,a as findPath,f as findPathAll,p as forEach,r as listToTree,g as treeMap,y as treeMapEach,i as treeToList,u as treeTraverse};