@processor/react
Version:
Processor react plugin.
3 lines (2 loc) • 2.33 kB
JavaScript
import{useMemo as n,useState as t}from"react";function e(n){return n instanceof Array?n:[n]}function r(r){const c=n(()=>function(n){var t={filter:{cache:[],handler:function(n){return n},update:function(){t.filter.cache=t.filter.handler(r)}},search:{cache:[],handler:function(n){return n},update:function(){t.search.cache=t.search.handler(t.filter.cache)}},sort:{cache:[],handler:function(n){return n},update:function(){t.sort.cache=t.sort.handler(t.search.cache)}},page:{cache:{current:[],page:1,pageCount:1,total:0},handler:function(n){return{current:n,page:1,pageCount:1,total:n.length}},update:function(){t.page.cache=t.page.handler(t.sort.cache)}}},r=n||[],c=null;function a(n){n.forEach(function(n){t[n].update()}),c&&c(t.page.cache)}var u={load:function(n){return r=n.concat(),a(["filter","search","sort","page"]),u},filter:function(n){return t.filter.handler=function(t){return t.filter(function(t){return Object.keys(n).every(function(r){var c=t[r];return e(n[r]).some(function(n){return!function(n){return void 0!==n}(n)||function(n,t){return"function"==typeof t?t(n):t===n}(c,n)})})})},a(["filter","search","sort","page"]),u},search:function(n,e){return t.search.handler=function(t){return n?"function"==typeof n?n(t.concat()):t.filter(function(t){var r=e||Object.keys(t),c=new RegExp(n,"i");return r.some(function(n){return function(n){return n.toString?n.toString():""}(t[n]).search(c)>-1})}):t.concat()},a(["search","sort","page"]),u},sort:function(n,r){return t.sort.handler=function(t){if(t=t.concat(),"function"==typeof n)return t.sort(n);var c=e(n),a=e(r);return t.sort(function(n,t){return c.map(function(e,r){var c=["acs","ascing",void 0].includes(a[r])?1:-1;return n[e]>t[e]?c:n[e]<t[e]?-c:0}).reduce(function(n,t){return n||t},0)}),t},a(["sort","page"]),u},page:function(n,e){return void 0===e&&(e=1),t.page.handler=function(t){var r=t.length;if(!n||n<=0)return{current:t.concat(),page:1,pageCount:1,total:r};e<1&&(e=1);var c=Math.ceil(r/n);return e=Math.min(e,c),{current:t.slice((e-1)*n,e*n),page:e,total:r,pageCount:c}},a(["page"]),u},onUpdate:function(n){return c=n,u},exec:function(){return a(["filter","search","sort","page"]),t.page.cache}};return u}(r),[r]),[a,u]=t(c.exec());return c.onUpdate(n=>{u(n)}),{processor:c,result:a}}export{r as useProcessor};
//# sourceMappingURL=index.modern.js.map