UNPKG

@processor/vue2

Version:
3 lines (2 loc) 2.33 kB
import{reactive as n}from"@vue/composition-api";function t(n){return n instanceof Array?n:[n]}function e(e){const r=function(n){var e={filter:{cache:[],handler:function(n){return n},update:function(){e.filter.cache=e.filter.handler(r)}},search:{cache:[],handler:function(n){return n},update:function(){e.search.cache=e.search.handler(e.filter.cache)}},sort:{cache:[],handler:function(n){return n},update:function(){e.sort.cache=e.sort.handler(e.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(){e.page.cache=e.page.handler(e.sort.cache)}}},r=n||[],c=null;function a(n){n.forEach(function(n){e[n].update()}),c&&c(e.page.cache)}var o={load:function(n){return r=n.concat(),a(["filter","search","sort","page"]),o},filter:function(n){return e.filter.handler=function(e){return e.filter(function(e){return Object.keys(n).every(function(r){var c=e[r];return t(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"]),o},search:function(n,t){return e.search.handler=function(e){return n?"function"==typeof n?n(e.concat()):e.filter(function(e){var r=t||Object.keys(e),c=new RegExp(n,"i");return r.some(function(n){return function(n){return n.toString?n.toString():""}(e[n]).search(c)>-1})}):e.concat()},a(["search","sort","page"]),o},sort:function(n,r){return e.sort.handler=function(e){if(e=e.concat(),"function"==typeof n)return e.sort(n);var c=t(n),a=t(r);return e.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)}),e},a(["sort","page"]),o},page:function(n,t){return void 0===t&&(t=1),e.page.handler=function(e){var r=e.length;if(!n||n<=0)return{current:e.concat(),page:1,pageCount:1,total:r};t<1&&(t=1);var c=Math.ceil(r/n);return t=Math.min(t,c),{current:e.slice((t-1)*n,t*n),page:t,total:r,pageCount:c}},a(["page"]),o},onUpdate:function(n){return c=n,o},exec:function(){return a(["filter","search","sort","page"]),e.page.cache}};return o}(e),c=n(r.exec());return r.onUpdate(n=>{for(const t in n)c[t]=n[t]}),{processor:r,result:c}}export{e as useProcessor}; //# sourceMappingURL=index.modern.js.map