1 line
26 KiB
JSON
1 line
26 KiB
JSON
{"ast":null,"code":"import { isArray, isObject } from '../core/util.js';\nimport { createElement, createVNode, XMLNS, XML_NAMESPACE, XLINKNS } from './core.js';\nimport * as api from './domapi.js';\nvar colonChar = 58;\nvar xChar = 120;\nvar emptyNode = createVNode('', '');\n\nfunction isUndef(s) {\n return s === undefined;\n}\n\nfunction isDef(s) {\n return s !== undefined;\n}\n\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var map = {};\n\n for (var i = beginIdx; i <= endIdx; ++i) {\n var key = children[i].key;\n\n if (key !== undefined) {\n if (process.env.NODE_ENV !== 'production') {\n if (map[key] != null) {\n console.error(\"Duplicate key \" + key);\n }\n }\n\n map[key] = i;\n }\n }\n\n return map;\n}\n\nfunction sameVnode(vnode1, vnode2) {\n var isSameKey = vnode1.key === vnode2.key;\n var isSameTag = vnode1.tag === vnode2.tag;\n return isSameTag && isSameKey;\n}\n\nfunction createElm(vnode) {\n var i;\n var children = vnode.children;\n var tag = vnode.tag;\n\n if (isDef(tag)) {\n var elm = vnode.elm = createElement(tag);\n updateAttrs(emptyNode, vnode);\n\n if (isArray(children)) {\n for (i = 0; i < children.length; ++i) {\n var ch = children[i];\n\n if (ch != null) {\n api.appendChild(elm, createElm(ch));\n }\n }\n } else if (isDef(vnode.text) && !isObject(vnode.text)) {\n api.appendChild(elm, api.createTextNode(vnode.text));\n }\n } else {\n vnode.elm = api.createTextNode(vnode.text);\n }\n\n return vnode.elm;\n}\n\nfunction addVnodes(parentElm, before, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n\n if (ch != null) {\n api.insertBefore(parentElm, createElm(ch), before);\n }\n }\n}\n\nfunction removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n\n if (ch != null) {\n if (isDef(ch.tag)) {\n var parent_1 = api.parentNode(ch.elm);\n api.removeChild(parent_1, ch.elm);\n } else {\n api.removeChild(parentElm, ch.elm);\n }\n }\n }\n}\n\nexport function updateAttrs(oldVnode, vnode) {\n var key;\n var elm = vnode.elm;\n var oldAttrs = oldVnode && oldVnode.attrs || {};\n var attrs = vnode.attrs || {};\n\n if (oldAttrs === attrs) {\n return;\n }\n\n for (key in attrs) {\n var cur = attrs[key];\n var old = oldAttrs[key];\n\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, '');\n } else if (cur === false) {\n elm.removeAttribute(key);\n } else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n } else if (key === 'xmlns:xlink' || key === 'xmlns') {\n elm.setAttributeNS(XMLNS, key, cur);\n } else if (key.charCodeAt(3) === colonChar) {\n elm.setAttributeNS(XML_NAMESPACE, key, cur);\n } else if (key.charCodeAt(5) === colonChar) {\n elm.setAttributeNS(XLINKNS, key, cur);\n } else {\n elm.setAttribute(key, cur);\n }\n }\n }\n }\n\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\n\nfunction updateChildren(parentElm, oldCh, newCh) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx;\n var idxInOld;\n var elmToMove;\n var before;\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx];\n } else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n } else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) {\n patchVnode(oldStartVnode, newEndVnode);\n api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) {\n patchVnode(oldEndVnode, newStartVnode);\n api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n\n idxInOld = oldKeyToIdx[newStartVnode.key];\n\n if (isUndef(idxInOld)) {\n api.insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);\n } else {\n elmToMove = oldCh[idxInOld];\n\n if (elmToMove.tag !== newStartVnode.tag) {\n api.insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);\n } else {\n patchVnode(elmToMove, newStartVnode);\n oldCh[idxInOld] = undefined;\n api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n }\n }\n\n newStartVnode = newCh[++newStartIdx];\n }\n }\n\n if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n if (oldStartIdx > oldEndIdx) {\n before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx);\n } else {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n}\n\nfunction patchVnode(oldVnode, vnode) {\n var elm = vnode.elm = oldVnode.elm;\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n\n if (oldVnode === vnode) {\n return;\n }\n\n updateAttrs(oldVnode, vnode);\n\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) {\n updateChildren(elm, oldCh, ch);\n }\n } else if (isDef(ch)) {\n if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n\n addVnodes(elm, null, ch, 0, ch.length - 1);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n\n api.setTextContent(elm, vnode.text);\n }\n}\n\nexport default function patch(oldVnode, vnode) {\n if (sameVnode(oldVnode, vnode)) {\n patchVnode(oldVnode, vnode);\n } else {\n var elm = oldVnode.elm;\n var parent_2 = api.parentNode(elm);\n createElm(vnode);\n\n if (parent_2 !== null) {\n api.insertBefore(parent_2, vnode.elm, api.nextSibling(elm));\n removeVnodes(parent_2, [oldVnode], 0, 0);\n }\n }\n\n return vnode;\n}","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src啊/ElectronicMallVue/node_modules/zrender/lib/svg/patch.js"],"names":["isArray","isObject","createElement","createVNode","XMLNS","XML_NAMESPACE","XLINKNS","api","colonChar","xChar","emptyNode","isUndef","s","undefined","isDef","createKeyToOldIdx","children","beginIdx","endIdx","map","i","key","process","env","NODE_ENV","console","error","sameVnode","vnode1","vnode2","isSameKey","isSameTag","tag","createElm","vnode","elm","updateAttrs","length","ch","appendChild","text","createTextNode","addVnodes","parentElm","before","vnodes","startIdx","insertBefore","removeVnodes","parent_1","parentNode","removeChild","oldVnode","oldAttrs","attrs","cur","old","setAttribute","removeAttribute","charCodeAt","setAttributeNS","updateChildren","oldCh","newCh","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","oldKeyToIdx","idxInOld","elmToMove","patchVnode","nextSibling","setTextContent","patch","parent_2"],"mappings":"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","sourcesContent":["import { isArray, isObject } from '../core/util.js';\nimport { createElement, createVNode, XMLNS, XML_NAMESPACE, XLINKNS } from './core.js';\nimport * as api from './domapi.js';\nvar colonChar = 58;\nvar xChar = 120;\nvar emptyNode = createVNode('', '');\nfunction isUndef(s) {\n return s === undefined;\n}\nfunction isDef(s) {\n return s !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var map = {};\n for (var i = beginIdx; i <= endIdx; ++i) {\n var key = children[i].key;\n if (key !== undefined) {\n if (process.env.NODE_ENV !== 'production') {\n if (map[key] != null) {\n console.error(\"Duplicate key \" + key);\n }\n }\n map[key] = i;\n }\n }\n return map;\n}\nfunction sameVnode(vnode1, vnode2) {\n var isSameKey = vnode1.key === vnode2.key;\n var isSameTag = vnode1.tag === vnode2.tag;\n return isSameTag && isSameKey;\n}\nfunction createElm(vnode) {\n var i;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n var elm = (vnode.elm = createElement(tag));\n updateAttrs(emptyNode, vnode);\n if (isArray(children)) {\n for (i = 0; i < children.length; ++i) {\n var ch = children[i];\n if (ch != null) {\n api.appendChild(elm, createElm(ch));\n }\n }\n }\n else if (isDef(vnode.text) && !isObject(vnode.text)) {\n api.appendChild(elm, api.createTextNode(vnode.text));\n }\n }\n else {\n vnode.elm = api.createTextNode(vnode.text);\n }\n return vnode.elm;\n}\nfunction addVnodes(parentElm, before, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (ch != null) {\n api.insertBefore(parentElm, createElm(ch), before);\n }\n }\n}\nfunction removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (ch != null) {\n if (isDef(ch.tag)) {\n var parent_1 = api.parentNode(ch.elm);\n api.removeChild(parent_1, ch.elm);\n }\n else {\n api.removeChild(parentElm, ch.elm);\n }\n }\n }\n}\nexport function updateAttrs(oldVnode, vnode) {\n var key;\n var elm = vnode.elm;\n var oldAttrs = oldVnode && oldVnode.attrs || {};\n var attrs = vnode.attrs || {};\n if (oldAttrs === attrs) {\n return;\n }\n for (key in attrs) {\n var cur = attrs[key];\n var old = oldAttrs[key];\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, '');\n }\n else if (cur === false) {\n elm.removeAttribute(key);\n }\n else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n }\n else if (key === 'xmlns:xlink' || key === 'xmlns') {\n elm.setAttributeNS(XMLNS, key, cur);\n }\n else if (key.charCodeAt(3) === colonChar) {\n elm.setAttributeNS(XML_NAMESPACE, key, cur);\n }\n else if (key.charCodeAt(5) === colonChar) {\n elm.setAttributeNS(XLINKNS, key, cur);\n }\n else {\n elm.setAttribute(key, cur);\n }\n }\n }\n }\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\nfunction updateChildren(parentElm, oldCh, newCh) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx;\n var idxInOld;\n var elmToMove;\n var before;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx];\n }\n else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n }\n else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n }\n else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newEndVnode)) {\n patchVnode(oldStartVnode, newEndVnode);\n api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldEndVnode, newStartVnode)) {\n patchVnode(oldEndVnode, newStartVnode);\n api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n if (isUndef(oldKeyToIdx)) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n idxInOld = oldKeyToIdx[newStartVnode.key];\n if (isUndef(idxInOld)) {\n api.insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);\n }\n else {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.tag !== newStartVnode.tag) {\n api.insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);\n }\n else {\n patchVnode(elmToMove, newStartVnode);\n oldCh[idxInOld] = undefined;\n api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n if (oldStartIdx > oldEndIdx) {\n before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx);\n }\n else {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n}\nfunction patchVnode(oldVnode, vnode) {\n var elm = (vnode.elm = oldVnode.elm);\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (oldVnode === vnode) {\n return;\n }\n updateAttrs(oldVnode, vnode);\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) {\n updateChildren(elm, oldCh, ch);\n }\n }\n else if (isDef(ch)) {\n if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n addVnodes(elm, null, ch, 0, ch.length - 1);\n }\n else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n else if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n }\n else if (oldVnode.text !== vnode.text) {\n if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n api.setTextContent(elm, vnode.text);\n }\n}\nexport default function patch(oldVnode, vnode) {\n if (sameVnode(oldVnode, vnode)) {\n patchVnode(oldVnode, vnode);\n }\n else {\n var elm = oldVnode.elm;\n var parent_2 = api.parentNode(elm);\n createElm(vnode);\n if (parent_2 !== null) {\n api.insertBefore(parent_2, vnode.elm, api.nextSibling(elm));\n removeVnodes(parent_2, [oldVnode], 0, 0);\n }\n }\n return vnode;\n}\n"]},"metadata":{},"sourceType":"module"} |