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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | 45x 45x 45x 45x 471x 72x 72x 72x 270x 270x 6x 270x 170x 26x 28x 122x 267x 344x 6x 3x 3x 1x 3x 14x 14x 7x 15x 15x 7x 7x 7x 2x 2x 4x 2x 7x 14x | import { RendererOptions } from '@vue/runtime-core' export const svgNS = 'http://www.w3.org/2000/svg' const doc = (typeof document !== 'undefined' ? document : null) as Document const templateContainer = doc && /*#__PURE__*/ doc.createElement('template') export const nodeOps: Omit<RendererOptions<Node, Element>, 'patchProp'> = { insert: (child, parent, anchor) => { parent.insertBefore(child, anchor || null) }, remove: child => { const parent = child.parentNode if (parent) { parent.removeChild(child) } }, createElement: (tag, isSVG, is, props): Element => { const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : undefined) if (tag === 'select' && props && props.multiple != null) { ;(el as HTMLSelectElement).setAttribute('multiple', props.multiple) } return el }, createText: text => doc.createTextNode(text), createComment: text => doc.createComment(text), setText: (node, text) => { node.nodeValue = text }, setElementText: (el, text) => { el.textContent = text }, parentNode: node => node.parentNode as Element | null, nextSibling: node => node.nextSibling, querySelector: selector => doc.querySelector(selector), setScopeId(el, id) { el.setAttribute(id, '') }, cloneNode(el) { const cloned = el.cloneNode(true) // #3072 // - in `patchDOMProp`, we store the actual value in the `el._value` property. // - normally, elements using `:value` bindings will not be hoisted, but if // the bound value is a constant, e.g. `:value="true"` - they do get // hoisted. // - in production, hoisted nodes are cloned when subsequent inserts, but // cloneNode() does not copy the custom property we attached. // - This may need to account for other custom DOM properties we attach to // elements in addition to `_value` in the future. if (`_value` in el) { ;(cloned as any)._value = (el as any)._value } return cloned }, // __UNSAFE__ // Reason: innerHTML. // Static content here can only come from compiled templates. // As long as the user only uses trusted templates, this is safe. insertStaticContent(content, parent, anchor, isSVG, start, end) { // <parent> before | first ... last | anchor </parent> const before = anchor ? anchor.previousSibling : parent.lastChild // #5308 can only take cached path if: // - has a single root node // - nextSibling info is still available if (start && (start === end || start.nextSibling)) { // cached while (true) { parent.insertBefore(start!.cloneNode(true), anchor) if (start === end || !(start = start!.nextSibling)) break } } else { // fresh insert templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content const template = templateContainer.content if (isSVG) { // remove outer svg wrapper const wrapper = template.firstChild! while (wrapper.firstChild) { template.appendChild(wrapper.firstChild) } template.removeChild(wrapper) } parent.insertBefore(template, anchor) } return [ // first before ? before.nextSibling! : parent.firstChild!, // last anchor ? anchor.previousSibling! : parent.lastChild! ] } } |