|
|
@@ -1,5 +1,5 @@
|
|
|
/*!
|
|
|
- * Vue.js v2.6.10
|
|
|
+ * Vue.js v2.6.11
|
|
|
* (c) 2014-2019 Evan You
|
|
|
* Released under the MIT License.
|
|
|
*/
|
|
|
@@ -1996,7 +1996,7 @@ if (typeof Promise !== 'undefined' && isNative(Promise)) {
|
|
|
isUsingMicroTask = true;
|
|
|
} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
|
|
|
// Fallback to setImmediate.
|
|
|
- // Techinically it leverages the (macro) task queue,
|
|
|
+ // Technically it leverages the (macro) task queue,
|
|
|
// but it is still a better choice than setTimeout.
|
|
|
timerFunc = () => {
|
|
|
setImmediate(flushCallbacks);
|
|
|
@@ -2085,7 +2085,7 @@ let initProxy;
|
|
|
warn(
|
|
|
`Property "${key}" must be accessed with "$data.${key}" because ` +
|
|
|
'properties starting with "$" or "_" are not proxied in the Vue instance to ' +
|
|
|
- 'prevent conflicts with Vue internals' +
|
|
|
+ 'prevent conflicts with Vue internals. ' +
|
|
|
'See: https://vuejs.org/v2/api/#data',
|
|
|
target
|
|
|
);
|
|
|
@@ -2940,7 +2940,7 @@ function bindDynamicKeys (baseObj, values) {
|
|
|
if (typeof key === 'string' && key) {
|
|
|
baseObj[values[i]] = values[i + 1];
|
|
|
} else if (key !== '' && key !== null) {
|
|
|
- // null is a speical value for explicitly removing a binding
|
|
|
+ // null is a special value for explicitly removing a binding
|
|
|
warn(
|
|
|
`Invalid value for dynamic directive argument (expected string or null): ${key}`,
|
|
|
this
|
|
|
@@ -3432,6 +3432,12 @@ function _createElement (
|
|
|
ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
|
|
|
if (config.isReservedTag(tag)) {
|
|
|
// platform built-in elements
|
|
|
+ if (isDef(data) && isDef(data.nativeOn)) {
|
|
|
+ warn(
|
|
|
+ `The .native modifier for v-on is only valid on components but it was used on <${tag}>.`,
|
|
|
+ context
|
|
|
+ );
|
|
|
+ }
|
|
|
vnode = new VNode(
|
|
|
config.parsePlatformTagName(tag), data, children,
|
|
|
undefined, undefined, context
|
|
|
@@ -3555,7 +3561,7 @@ function renderMixin (Vue) {
|
|
|
// render self
|
|
|
let vnode;
|
|
|
try {
|
|
|
- // There's no need to maintain a stack becaues all render fns are called
|
|
|
+ // There's no need to maintain a stack because all render fns are called
|
|
|
// separately from one another. Nested component's render fns are called
|
|
|
// when parent component is patched.
|
|
|
currentRenderingInstance = vm;
|
|
|
@@ -5464,7 +5470,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
|
|
|
value: FunctionalRenderContext
|
|
|
});
|
|
|
|
|
|
-Vue.version = '2.6.10';
|
|
|
+Vue.version = '2.6.11';
|
|
|
|
|
|
/* */
|
|
|
|
|
|
@@ -6136,7 +6142,7 @@ function createPatchFunction (backend) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- function removeVnodes (parentElm, vnodes, startIdx, endIdx) {
|
|
|
+ function removeVnodes (vnodes, startIdx, endIdx) {
|
|
|
for (; startIdx <= endIdx; ++startIdx) {
|
|
|
const ch = vnodes[startIdx];
|
|
|
if (isDef(ch)) {
|
|
|
@@ -6247,7 +6253,7 @@ function createPatchFunction (backend) {
|
|
|
refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
|
|
|
addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
|
|
|
} else if (newStartIdx > newEndIdx) {
|
|
|
- removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
|
|
|
+ removeVnodes(oldCh, oldStartIdx, oldEndIdx);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -6339,7 +6345,7 @@ function createPatchFunction (backend) {
|
|
|
if (isDef(oldVnode.text)) nodeOps.setTextContent(elm, '');
|
|
|
addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
|
|
|
} else if (isDef(oldCh)) {
|
|
|
- removeVnodes(elm, oldCh, 0, oldCh.length - 1);
|
|
|
+ removeVnodes(oldCh, 0, oldCh.length - 1);
|
|
|
} else if (isDef(oldVnode.text)) {
|
|
|
nodeOps.setTextContent(elm, '');
|
|
|
}
|
|
|
@@ -6566,7 +6572,7 @@ function createPatchFunction (backend) {
|
|
|
|
|
|
// destroy old node
|
|
|
if (isDef(parentElm)) {
|
|
|
- removeVnodes(parentElm, [oldVnode], 0, 0);
|
|
|
+ removeVnodes([oldVnode], 0, 0);
|
|
|
} else if (isDef(oldVnode.tag)) {
|
|
|
invokeDestroyHook(oldVnode);
|
|
|
}
|
|
|
@@ -9261,7 +9267,7 @@ const startTagOpen = new RegExp(`^<${qnameCapture}`);
|
|
|
const startTagClose = /^\s*(\/?)>/;
|
|
|
const endTag = new RegExp(`^<\\/${qnameCapture}[^>]*>`);
|
|
|
const doctype = /^<!DOCTYPE [^>]+>/i;
|
|
|
-// #7298: escape - to avoid being pased as HTML comment when inlined in page
|
|
|
+// #7298: escape - to avoid being passed as HTML comment when inlined in page
|
|
|
const comment = /^<!\--/;
|
|
|
const conditionalComment = /^<!\[/;
|
|
|
|
|
|
@@ -9546,7 +9552,7 @@ function parseHTML (html, options) {
|
|
|
/* */
|
|
|
|
|
|
const onRE = /^@|^v-on:/;
|
|
|
-const dirRE = /^v-|^@|^:/;
|
|
|
+const dirRE = /^v-|^@|^:|^#/;
|
|
|
const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
|
|
|
const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
|
|
|
const stripParensRE = /^\(|\)$/g;
|
|
|
@@ -10170,7 +10176,7 @@ function processSlotContent (el) {
|
|
|
if (el.parent && !maybeComponent(el.parent)) {
|
|
|
warn$2(
|
|
|
`<template v-slot> can only appear at the root level inside ` +
|
|
|
- `the receiving the component`,
|
|
|
+ `the receiving component`,
|
|
|
el
|
|
|
);
|
|
|
}
|
|
|
@@ -10729,7 +10735,7 @@ function isDirectChildOfTemplateFor (node) {
|
|
|
|
|
|
/* */
|
|
|
|
|
|
-const fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*(?:[\w$]+)?\s*\(/;
|
|
|
+const fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/;
|
|
|
const fnInvokeRE = /\([^)]*?\);*$/;
|
|
|
const simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
|
|
|
|
|
|
@@ -11554,6 +11560,8 @@ function checkNode (node, warn) {
|
|
|
const range = node.rawAttrsMap[name];
|
|
|
if (name === 'v-for') {
|
|
|
checkFor(node, `v-for="${value}"`, warn, range);
|
|
|
+ } else if (name === 'v-slot' || name[0] === '#') {
|
|
|
+ checkFunctionParameterExpression(value, `${name}="${value}"`, warn, range);
|
|
|
} else if (onRE.test(name)) {
|
|
|
checkEvent(value, `${name}="${value}"`, warn, range);
|
|
|
} else {
|
|
|
@@ -11573,9 +11581,9 @@ function checkNode (node, warn) {
|
|
|
}
|
|
|
|
|
|
function checkEvent (exp, text, warn, range) {
|
|
|
- const stipped = exp.replace(stripStringRE, '');
|
|
|
- const keywordMatch = stipped.match(unaryOperatorsRE);
|
|
|
- if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {
|
|
|
+ const stripped = exp.replace(stripStringRE, '');
|
|
|
+ const keywordMatch = stripped.match(unaryOperatorsRE);
|
|
|
+ if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') {
|
|
|
warn(
|
|
|
`avoid using JavaScript unary operator as property name: ` +
|
|
|
`"${keywordMatch[0]}" in expression ${text.trim()}`,
|
|
|
@@ -11630,6 +11638,19 @@ function checkExpression (exp, text, warn, range) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function checkFunctionParameterExpression (exp, text, warn, range) {
|
|
|
+ try {
|
|
|
+ new Function(exp, '');
|
|
|
+ } catch (e) {
|
|
|
+ warn(
|
|
|
+ `invalid function parameter expression: ${e.message} in\n\n` +
|
|
|
+ ` ${exp}\n\n` +
|
|
|
+ ` Raw expression: ${text.trim()}\n`,
|
|
|
+ range
|
|
|
+ );
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/* */
|
|
|
|
|
|
const range = 2;
|