import { isDef, isUndef } from 'shared/util' import type { VNodeData } from 'types/vnode' import { concat, stringifyClass, genClassForVnode } from 'web/util/index' function updateClass(oldVnode: any, vnode: any) { const el = vnode.elm const data: VNodeData = vnode.data const oldData: VNodeData = oldVnode.data if ( isUndef(data.staticClass) && isUndef(data.class) && (isUndef(oldData) || (isUndef(oldData.staticClass) && isUndef(oldData.class))) ) { return } let cls = genClassForVnode(vnode) // handle transition classes const transitionClass = el._transitionClasses if (isDef(transitionClass)) { cls = concat(cls, stringifyClass(transitionClass)) } // set the class if (cls !== el._prevClass) { el.setAttribute('class', cls) el._prevClass = cls } } export default { create: updateClass, update: updateClass }