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