Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | 53x 283x 2x 1x 1x 281x 7x 274x 55x 219x 53x 281x 5x 5x 5x 5x 276x 2x 2x 2x 274x | import {
NOOP,
includeBooleanAttr,
isSpecialBooleanAttr,
isSymbol,
makeMap,
} from '@vue/shared'
import {
type ComponentInternalInstance,
DeprecationTypes,
compatUtils,
} from '@vue/runtime-core'
export const xlinkNS = 'http://www.w3.org/1999/xlink'
export function patchAttr(
el: Element,
key: string,
value: any,
isSVG: boolean,
instance?: ComponentInternalInstance | null,
isBoolean: boolean = isSpecialBooleanAttr(key),
): void {
if (isSVG && key.startsWith('xlink:')) {
if (value == null) {
el.removeAttributeNS(xlinkNS, key.slice(6, key.length))
} else {
el.setAttributeNS(xlinkNS, key, value)
}
} else {
if (__COMPAT__ && compatCoerceAttr(el, key, value, instance)) {
return
}
// note we are only checking boolean attributes that don't have a
// corresponding dom prop of the same name here.
if (value == null || (isBoolean && !includeBooleanAttr(value))) {
el.removeAttribute(key)
} else {
// attribute value is a string https://html.spec.whatwg.org/multipage/dom.html#attributes
el.setAttribute(
key,
isBoolean ? '' : isSymbol(value) ? String(value) : value,
)
}
}
}
// 2.x compat
const isEnumeratedAttr = __COMPAT__
? /*@__PURE__*/ makeMap('contenteditable,draggable,spellcheck')
: NOOP
export function compatCoerceAttr(
el: Element,
key: string,
value: unknown,
instance: ComponentInternalInstance | null = null,
): boolean {
if (isEnumeratedAttr(key)) {
const v2CoercedValue =
value === undefined
? null
: value === null || value === false || value === 'false'
? 'false'
: 'true'
Eif (
v2CoercedValue &&
compatUtils.softAssertCompatEnabled(
DeprecationTypes.ATTR_ENUMERATED_COERCION,
instance,
key,
value,
v2CoercedValue,
)
) {
el.setAttribute(key, v2CoercedValue)
return true
}
} else if (
value === false &&
!(el.tagName === 'INPUT' && key === 'value') &&
!isSpecialBooleanAttr(key) &&
compatUtils.isCompatEnabled(DeprecationTypes.ATTR_FALSE_VALUE, instance)
) {
compatUtils.warnDeprecation(
DeprecationTypes.ATTR_FALSE_VALUE,
instance,
key,
)
el.removeAttribute(key)
return true
}
return false
}
|