@vxe-ui/core
Version:
Vxe UI core library
51 lines (46 loc) • 1.21 kB
text/typescript
import XEUtils from 'xe-utils'
import { log } from './log'
import { VxeGlobalRenderer, VxeGlobalRendererOptions } from '../../types'
/**
* 内置的组件渲染
*/
const renderMap: Record<string, VxeGlobalRendererOptions> = {}
/**
* 全局渲染器
*/
export const renderer: VxeGlobalRenderer = {
mixin (opts) {
XEUtils.each(opts, (options, name) => renderer.add(name, options))
return renderer
},
get (name: string) {
return renderMap[name] || null
},
add (name, options) {
if (name && options) {
const renders: any = renderMap[name]
if (renders) {
// 检测是否覆盖
if (process.env.VUE_APP_VXE_ENV === 'development') {
XEUtils.each(options, (val, key) => {
if (!XEUtils.eqNull(renders[key]) && renders[key] !== val) {
log.warn('vxe.error.coverProp', [`Renderer.${name}`, key])
}
})
}
Object.assign(renders, options)
} else {
renderMap[name] = options
}
}
return renderer
},
forEach (callback) {
XEUtils.objectEach(renderMap, callback)
return renderer
},
delete (name) {
delete renderMap[name]
return renderer
}
}