UNPKG

@vxe-ui/core

Version:
59 lines (58 loc) 1.76 kB
import XEUtils from 'xe-utils'; import { log } from './log'; const storeMap = {}; export const interceptor = { mixin(options) { XEUtils.each(options, (render, type) => { interceptor.add(type, render); }); return interceptor; }, get(type) { return storeMap[type] || []; }, add(type, render) { // 兼容 if (XEUtils.isFunction(render)) { // if (process.env.NODE_ENV === 'development') { // log.warn('vxe.error.delProp', ['interceptor -> callback', 'tableInterceptorMethod']) // } render = { tableInterceptorMethod: render }; } const callback = render.tableInterceptorMethod; if (callback) { let eList = storeMap[type]; if (!eList) { eList = storeMap[type] = []; } // 检测重复 if (process.env.NODE_ENV === 'development') { if (eList.indexOf(callback) > -1) { log.warn('vxe.error.coverProp', ['Interceptor', type]); } } eList.push(callback); } return interceptor; }, delete(type, render) { const eList = storeMap[type]; if (eList) { // 兼容 if (XEUtils.isFunction(render)) { render = { tableInterceptorMethod: render }; } const callback = render ? render.tableInterceptorMethod : null; if (callback) { XEUtils.remove(eList, fn => fn === callback); } else { delete storeMap[type]; } } } };