@processor/vue
Version:
Processor vue plugin.
3 lines (2 loc) • 3.15 kB
JavaScript
import{isReactive as n,ref as e,watch as t,onBeforeMount as r}from"vue";function c(n){return n instanceof Array?n:[n]}function u(u){if(!n(u))throw new Error("config must be a reactive object");var o=function(n){var e={filter:{cache:[],handler:function(n){return n},update:function(){e.filter.cache=e.filter.handler(t)}},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)}}},t=[],r=null;function u(n){n.forEach(function(n){e[n].update()}),r&&r(e.page.cache)}var o={load:function(n){return t=n.concat(),u(["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(t){var r=e[t];return c(n[t]).some(function(n){return!function(n){return void 0!==n}(n)||function(n,e){return"function"==typeof e?e(n):e===n}(r,n)})})})},u(["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()},u(["search","sort","page"]),o},sort:function(n,t){return e.sort.handler=function(e){if(e=e.concat(),"function"==typeof n)return e.sort(n);var r=c(n),u=c(t);return e.sort(function(n,e){return r.map(function(t,r){var c=["acs","ascing",void 0].includes(u[r])?1:-1;return n[t]>e[t]?c:n[t]<e[t]?-c:0}).reduce(function(n,e){return n||e},0)}),e},u(["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}},u(["page"]),o},onUpdate:function(n){return r=n,o},exec:function(){return u(["filter","search","sort","page"]),e.page.cache}};return o}(),a=e(null),i=e(0),f=e(0),l=e(0),p=e(0);function s(){u.source?o.load(u.source):(a.value=null,i.value=0,f.value=0,l.value=0)}function h(){void 0!==u.searchOption&&o.search(u.searchOption,u.searchFields)}function d(){u.filterOption&&o.filter(u.filterOption)}function g(){u.sortOption&&o.sort(u.sortOption,u.sortOrder)}function v(){o.page(u.pageSize,f.value)}function O(n){a.value=n.current,i.value=n.total,f.value=n.page,p.value=n.pageCount}return t(function(){return u.source},s,{deep:!0}),t([function(){return u.searchOption},u.searchFields],h,{deep:!0}),t(function(){return u.filterOption},d,{deep:!0}),t([function(){return u.sortOption},function(){return u.sortOrder}],g,{deep:!0}),t([function(){return u.pageSize},f],v),o.onUpdate(O),r(function(){s(),h(),d(),g(),v(),O(o.exec())}),{data:a,total:i,currentPage:f,pageCount:p}}export{u as useProcessor};
//# sourceMappingURL=index.module.js.map