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