com-tools
Version:
com-tools 提供了一些通用的工具函数;
3 lines (2 loc) • 10.5 kB
JavaScript
var ComTools=function(o){"use strict";var Le=Object.defineProperty;var ke=(o,h,g)=>h in o?Le(o,h,{enumerable:!0,configurable:!0,writable:!0,value:g}):o[h]=g;var N=(o,h,g)=>ke(o,typeof h!="symbol"?h+"":h,g);function h(e,n){return JSON.stringify(e)==JSON.stringify(n)}function g({loopCall:e,complete:n,stepComplete:t,thisValue:r,total:i=Number.POSITIVE_INFINITY,step:u=50,delay:c=0}){let s=0,l=0,m=!1;function d(y){y&&(m=y,n&&n.call(r,m,s,l,i))}function v(){let y=s<i;return!y&&n&&n.call(r,!1,s-1,l,i),y}let _=null;function f(){l++;let y=Math.min(s+u,i);function P(){return s<y}for(;P()&&!m;)d(e.call(r,s,l,i)),s++;t&&d(t.call(r,s-1,l,i)),v()&&!m&&(_=setTimeout(f,c))}function a(y){y||(y=!0),clearTimeout(_),d(y)}return v()&&f(),a}let C={multipleLoop:{configurable:!0,writable:!0,enumerable:!1,value:function({loopCall:e,complete:n,stepComplete:t,thisValue:r,step:i,delay:u}){r&&(r=this);let c={loopCall:(s,l)=>e.call(r,this[s],s,l,this),total:this.length,step:i,delay:u};return n&&(c.complete=(s,l,m)=>n.call(r,s,l,m,this)),t&&(c.stepComplete=(s,l)=>t.call(r,s,l,this)),g(c)}}};Object.defineProperties(Array.prototype,C);function J(e,n,t){t==null&&(t=e);let r=[];for(let u of e)r.push(u);return r.filter(function(u){let c=this.indexOf(u);return n.call(t,u,c,e)},r)}function E(e,n,t){let{ready:r=n+"Ready",noEvent:i,event:u=n+"Change",newValueKey:c="value",oldValueKey:s="oldValue",getDefault:l}=t||{},m="_"+r,d="_"+n;if(Object.defineProperty(e,r,{configurable:!0,enumerable:!0,get:function(){let f=this||window;if(!f[m]){let a=f[d];a?f[m]=Promise.resolve(a):f[m]=M()}return f[m]},set:function(f){let a=this||window;a[m]=f}}),l)var v=function(){let f=this||window;return!f[d]&&l&&(f[n]=l.call(f,f)),f[d]};else v=function(){return(this||window)[d]};if(i)var _=function(f){let a=this||window;if(f&&f!==a[d]){a[d]=f;let y=a[r];y.resolve?y.resolve(f):a[r]=Promise.resolve(f)}};else _=function(f){let a=this||window;if(f&&f!==a[d]){let y=a[d];a[d]=f;let P=a[r];P.resolve?P.resolve(f):a[r]=Promise.resolve(f);let S=new Event(u,{bubbles:!0});S[c]=f,S[s]=y,window.dispatchEvent(S)}};return Object.defineProperty(e,n,{configurable:!0,enumerable:!0,get:v,set:_}),e}function R(e,n,t){var r=n;return Array.isArray(n)&&(r=n.reduce(function(i,u){return i[u]=t,i},{})),Object.keys(r).forEach(function(i){let u=r[i];E(e,i,u)}),e}function B(e,n,t,r){let i="_"+n;if(r)var u=t;else t?u=function(){let c=this||window;return!c[i]&&t&&(c[n]=t.call(c,c)),c[i]}:u=function(){return(this||window)[i]};Object.defineProperty(e,n,{configurable:!0,enumerable:!0,get:u})}function U(){var e=new Date;return e.getTime().toString()+Math.random()}function M(e,n){let t=typeof e=="function";t&&n==null&&(n=!0);var r={};function i(){s.resolve=void 0,s.reject=void 0,s.clearAdditions=void 0}function u(l){i(),r.resolve(l)}function c(l){i(),r.reject(l)}var s=new Promise(function(l,m){if(r.resolve=l,r.reject=m,t)if(n)setTimeout(e,0,u,c);else return e(u,c)});return s.clearAdditions=i,s.resolve=u,s.reject=c,s}function T(e,n,t,r){var{get:i=!0,set:u=!0,configurable:c=!0,enumerable:s=!0,getDefault:l,setDefault:m}=r||{},d={configurable:c,enumerable:s};return i&&(d.get=function(){var v=n[t];return v===void 0?l:v}),u&&(d.set=function(v){v=v===void 0?m:v,n[t]=v}),Object.defineProperty(e,t,d),e}function W(e,n,t,r){var i=t;return Array.isArray(t)&&(i=t.reduce(function(u,c){return u[c]=r,u},{})),Object.keys(i).forEach(function(u){let c=i[u];T(e,n,u,c)}),e}function z(e){return new Function(`"use strict"; return (${e})`)()}function q(e){const n=j(e);return n.prototype=Object.create(e.prototype),n.prototype.constructor=n,n}function j(e){return p(e.toString(),e.name,!0)}const K=/(^\s*(async\s+)?function\s*(\s|\*)\s*)[A-Za-z_$]+[\w$]*(\s*\()/,Z=/^[A-Za-z_$]+[\w$]*$/;function p(e,n,t){const r=K,i=Z,u=r.test(e),c=n&&i.test(n);if(u&&c&&!t&&(e=e.replace(r,`$1${n}$4`)),!u&&c)var s=`"use strict"; var ${n} = ${e} ; return ${n}`;else s=`"use strict"; return (${e})`;return new Function(s)()}function Y(e){return function(){return new.target?new e(...arguments):e.apply(this,arguments)}}function H(e,n){return e>0?new Promise(t=>{setTimeout(t,e,n)}):Promise.resolve(n)}function Q(e,n,t){if(t)for(const r in n)e[r]==null&&(e[r]=n[r]);else for(const r in n)e[r]===void 0&&(e[r]=n[r]);return e}class X{constructor(){N(this,"_decided",!1);N(this,"listeners",[]);N(this,"_value")}get decided(){return this._decided}get value(){return this._value}set value(n){this._value=n,this.resolve()}resolve(){this._decided=!0;const n=this.value;for(const t of this.listeners)t(n);this.listeners=[],this.then=function(t){t(this.value)}}then(n){this.listeners.push(n)}static resolve(n){const t=new this;return t.value=n,t}}function O(e,n){if(n.length===0)return e;for(let t=0;t<n.length;t++){if(e==null)return;e=e[n[t]]}return e}function b(e,n,t){n.length===0&&Object.assign(e,t);const r=n.length-1;for(let i=0;i<r;i++){const u=n[i];e[u]==null&&(e[u]=typeof n[i+1]=="number"?[]:{}),e=e[u]}e[n[r]]=t}function F(e,n,t){const r=typeof t=="function"?t:()=>t;let i=O(e,n);return i===void 0&&(i=r(),b(e,n,i)),i}function V(e,n,t){const r=typeof t=="function"?t:()=>t;let i=O(e,n);return i===void 0&&(i=r(),i instanceof Promise?i.then(u=>b(e,n,u)):b(e,n,i)),i}function L(e,n){if(n.length===0)return!0;const t=n.length-1;for(let r=0;r<t;r++){if(e==null)return!1;e=e[n[r]]}return e==null?!1:delete e[n[t]]}function x(e){return Object.keys(e).forEach(n=>e[n]===void 0&&delete e[n]),e}function ee(e){return Object.keys(e).forEach(n=>e[n]==null&&delete e[n]),e}function ne(e,n){const t={};for(const r of n)t[r]=e[r];return t}function te(e,n){for(const t of n)delete e[t];return e}function re(e,n){const t={};for(const r of n){const i=O(e,r);b(t,r,i)}return t}function ie(e,n){for(const t of n)L(e,t);return e}function ue(e,n,t){n??(n="/"),t??(t="-");for(let r=e.length-1;r>=0&&e[r]==null;r--)e.length=r;return e.map(r=>r??t).join(n)}function oe(e,n,t="/"){return e.split(t,n+1)[n]}function ce(e,n,t,r="/"){const i=e.split(r);return i[n]=t,i.join(r)}function se(e,n,t="/"){const r=[];for(const i of e){const u=i.split(t,n+1)[n];u&&r.push(u)}return r}function fe(e,n){return n.some(t=>e.includes(t))}function le(e,n){return n.some(t=>t.test(e))}function de(e,n){return n.some(function(t){return typeof t=="string"?e.includes(t):t.test(e)})}function ae(e,n,t){if(n===t)return e;const[r]=e.splice(n,1);return e.splice(t,0,r),e}function me(e,n,t){const r=e[n],i=e.filter((u,c)=>c!==n);return i.splice(t,0,r),i}function ye(e,n,t){const r=n.map(function(i,u){return{item:e[i],to:t[u]}});for(const{item:i}of r){const u=e.indexOf(i);e.splice(u,1)}for(const{item:i,to:u}of r)e.splice(u,0,i);return e}function ve(e,n,t){const r=n.map(u=>e[u]),i=e.filter((u,c)=>!n.includes(c));for(let u=0;u<n.length;u++)i.splice(t[u],0,r[u]);return i}function he(e,n){const t="/";let r=typeof n=="string"?n.length:n??0;const i=Math.min(r,1),u=[t,...e,t],c=JSON.stringify(u,null,n),s=c.indexOf(t)+3+i,l=c.lastIndexOf(t)-1-r;return c.slice(s,l)}function ge(e,n,t){let r=JSON.stringify(e,null,n)+",";return n&&(t??(t=`
`)),t&&(r+=t),r}function k(e,n,t,r){r==null&&(r=e);let i=e.filter(function(u,c){return n.includes(c)});return i.forEach(u=>{let c=e.indexOf(u);t.call(r,u,c,e)}),i}function A(e,n,t,r){r==null&&(r=e);let i=[],u=n.map(c=>(i.push(c),e.indexOf(c)));return i.forEach(c=>{let s=e.indexOf(c);t.call(r,c,s,e)}),u}function be(e,n,t){return t==null&&(t=e),e.slice().filter(i=>{const u=e.indexOf(i);return n.call(t,i,u,e)})}function Ie(e,n,t,r=1){let i=e.splice(n,r);return e.splice(t,0,...i),i}function _e(e,n,...t){let r=$(e,...t);return e.splice(n,0,...r),r}function Oe(e,n,...t){let r=w(e,...t);return e.splice(n,0,...t),r}function Pe(e,n,t,r){let i=G(e,t,r);return e.splice(n,0,...i),i}function D(e,n,t=0,r){r||(r=function(u,c){return u===c});let i=e.filter(u=>r.call(e,u,n));return w(e,...i),e.splice(t,0,n),i}function Ne(e,n,t,r){return n.reduceRight((i,u)=>{let c=D(e,u,t,r);return i.unshift(...c),i},[])}function Ae(e,n,t){t==null&&(t=n);let r=t+1-n;return e.splice(n,r)}function $(e,...n){return k(e,n,function(t,r,i){i.splice(r,1)},e)}function w(e,...n){return A(e,n,function(t,r,i){i.splice(r,1)},e)}function G(e,n,t){t===void 0&&(t=e);let r=e.filter((i,u,c)=>n.call(t,i,u,c));return A(e,r,function(i,u,c){c.splice(u,1)},e),r}function we(e,n,t){return t==null&&(t=e),e.reduce(function(r,i,u,c){return n.call(t,i,u,c)&&r.push(u),r},[])}function Se(e,n,t){return e.length!==n.length?!1:(t||(t=function(r,i){return r===i}),e.every((r,i)=>t(r,n[i])))}function Ee(e,n){const t={members:[]},r=e.length;for(let i=0;i<r;i++){const u=e[i],c=n(u,i,e),s=F(t,c,()=>({members:[]}));(s.members??(s.members=[])).push(u)}return t}function Me(e){return Object.keys(e).filter(t=>I(e[t]))}function Te(e){return Object.values(e).filter(t=>I(t))}function je(e){return Object.entries(e).filter(([t,r])=>I(r))}function I(e){return e&&!Array.isArray(e)&&typeof e=="object"}function pe(e){return Object.values(e).some(t=>I(t))}function Fe(e){const n=[];let t=[e];for(let r=0;r<t.length;r++){const i=t[r],{members:u,...c}=i;u&&n.push(...u),t.push(...Object.values(c))}return{members:n,nodes:t}}return o.Decide=X,o.array_delete=Ae,o.array_deleteIndexs=$,o.array_deleteItems=w,o.array_deleteUseTest=G,o.array_filterIndexs=we,o.array_insertItem=D,o.array_insertItemList=Ne,o.array_isEqual=Se,o.array_move=Ie,o.array_moveItemsTo=Oe,o.array_moveTo=_e,o.array_moveToUseTest=Pe,o.array_safelyFilter=be,o.array_safelyOperateIndexs=k,o.array_safelyOperateItems=A,o.assignDefaultValues=Q,o.betterEval=z,o.copyConstructor=q,o.copyFunction=j,o.createControllablePromise=M,o.createFunctionBy=p,o.createSingleton=Y,o.createUniqueIdentifier=U,o.defineListenableProperties=R,o.defineListenableProperty=E,o.defineListenablePropertyGetter=B,o.defineProxyProperties=W,o.defineProxyProperty=T,o.deleteMember=L,o.flatGroupTree=Fe,o.getMember=O,o.getMemberWithAsyncDefault=V,o.getMemberWithDefault=F,o.getPathPart=oe,o.getSubGroupEntries=je,o.getSubGroupNames=Me,o.getSubGroupNodes=Te,o.getValidPathParts=se,o.groupTreeBy=Ee,o.hasSubGroups=pe,o.includesPatterns=de,o.includesRegExps=le,o.includesStrings=fe,o.isEqualByJSON=h,o.isGroupTree=I,o.moveItemInArray=ae,o.moveItemInNewArray=me,o.moveItemsInArray=ye,o.moveItemsInNewArray=ve,o.multipleLoop=g,o.omitMembers=te,o.omitMembersByPath=ie,o.pathString=ue,o.pickMembers=ne,o.pickMembersByPath=re,o.removeNull=ee,o.removeUndefined=x,o.replacePathPart=ce,o.safelyIterate=J,o.setMember=b,o.toJSONArrayFragment=he,o.toJSONItemFragment=ge,o.waitWhile=H,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),o}({});