UNPKG

@vxe-ui/core

Version:
66 lines (58 loc) 1.65 kB
import XEUtils from 'xe-utils' import { log } from './log' import { VxeGlobalInterceptor, VxeGlobalInterceptorHandles } from '../../types' const storeMap: { [type: string]: VxeGlobalInterceptorHandles.InterceptorCallback[] } = {} export const interceptor: VxeGlobalInterceptor = { 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.VUE_APP_VXE_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.VUE_APP_VXE_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] } } } }