@vue/compat 3.2.38 → 3.2.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/vue.cjs.js +141 -120
- package/dist/vue.cjs.prod.js +138 -127
- package/dist/vue.esm-browser.js +129 -120
- package/dist/vue.esm-browser.prod.js +1 -1
- package/dist/vue.esm-bundler.js +128 -129
- package/dist/vue.global.js +129 -120
- package/dist/vue.global.prod.js +1 -1
- package/dist/vue.runtime.esm-browser.js +74 -78
- package/dist/vue.runtime.esm-browser.prod.js +1 -1
- package/dist/vue.runtime.esm-bundler.js +73 -87
- package/dist/vue.runtime.global.js +74 -78
- package/dist/vue.runtime.global.prod.js +1 -1
- package/package.json +7 -2
package/dist/vue.esm-bundler.js
CHANGED
|
@@ -1897,7 +1897,9 @@ function queuePostFlushCb(cb) {
|
|
|
1897
1897
|
}
|
|
1898
1898
|
queueFlush();
|
|
1899
1899
|
}
|
|
1900
|
-
function flushPreFlushCbs(seen,
|
|
1900
|
+
function flushPreFlushCbs(seen,
|
|
1901
|
+
// if currently flushing, skip the current job itself
|
|
1902
|
+
i = isFlushing ? flushIndex + 1 : 0) {
|
|
1901
1903
|
if ((process.env.NODE_ENV !== 'production')) {
|
|
1902
1904
|
seen = seen || new Map();
|
|
1903
1905
|
}
|
|
@@ -4871,7 +4873,7 @@ function injectHook(type, hook, target = currentInstance, prepend = false) {
|
|
|
4871
4873
|
const createHook = (lifecycle) => (hook, target = currentInstance) =>
|
|
4872
4874
|
// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
|
|
4873
4875
|
(!isInSSRComponentSetup || lifecycle === "sp" /* LifecycleHooks.SERVER_PREFETCH */) &&
|
|
4874
|
-
injectHook(lifecycle, hook, target);
|
|
4876
|
+
injectHook(lifecycle, (...args) => hook(...args), target);
|
|
4875
4877
|
const onBeforeMount = createHook("bm" /* LifecycleHooks.BEFORE_MOUNT */);
|
|
4876
4878
|
const onMounted = createHook("m" /* LifecycleHooks.MOUNTED */);
|
|
4877
4879
|
const onBeforeUpdate = createHook("bu" /* LifecycleHooks.BEFORE_UPDATE */);
|
|
@@ -5423,7 +5425,10 @@ function createSlots(slots, dynamicSlots) {
|
|
|
5423
5425
|
slots[slot.name] = slot.key
|
|
5424
5426
|
? (...args) => {
|
|
5425
5427
|
const res = slot.fn(...args);
|
|
5426
|
-
|
|
5428
|
+
// attach branch key so each conditional branch is considered a
|
|
5429
|
+
// different fragment
|
|
5430
|
+
if (res)
|
|
5431
|
+
res.key = slot.key;
|
|
5427
5432
|
return res;
|
|
5428
5433
|
}
|
|
5429
5434
|
: slot.fn;
|
|
@@ -7203,7 +7208,7 @@ function createCompatVue(createApp, createSingletonApp) {
|
|
|
7203
7208
|
return vm;
|
|
7204
7209
|
}
|
|
7205
7210
|
}
|
|
7206
|
-
Vue.version = `2.6.14-compat:${"3.2.
|
|
7211
|
+
Vue.version = `2.6.14-compat:${"3.2.40"}`;
|
|
7207
7212
|
Vue.config = singletonApp.config;
|
|
7208
7213
|
Vue.use = (p, ...options) => {
|
|
7209
7214
|
if (p && isFunction(p.install)) {
|
|
@@ -7920,7 +7925,7 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
7920
7925
|
const isFragmentStart = isComment(node) && node.data === '[';
|
|
7921
7926
|
const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);
|
|
7922
7927
|
const { type, ref, shapeFlag, patchFlag } = vnode;
|
|
7923
|
-
|
|
7928
|
+
let domType = node.nodeType;
|
|
7924
7929
|
vnode.el = node;
|
|
7925
7930
|
if (patchFlag === -2 /* PatchFlags.BAIL */) {
|
|
7926
7931
|
optimized = false;
|
|
@@ -7961,10 +7966,12 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
7961
7966
|
}
|
|
7962
7967
|
break;
|
|
7963
7968
|
case Static:
|
|
7964
|
-
if (
|
|
7965
|
-
|
|
7969
|
+
if (isFragmentStart) {
|
|
7970
|
+
// entire template is static but SSRed as a fragment
|
|
7971
|
+
node = nextSibling(node);
|
|
7972
|
+
domType = node.nodeType;
|
|
7966
7973
|
}
|
|
7967
|
-
|
|
7974
|
+
if (domType === 1 /* DOMNodeTypes.ELEMENT */ || domType === 3 /* DOMNodeTypes.TEXT */) {
|
|
7968
7975
|
// determine anchor, adopt content
|
|
7969
7976
|
nextNode = node;
|
|
7970
7977
|
// if the static vnode has its content stripped during build,
|
|
@@ -7981,7 +7988,10 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
7981
7988
|
}
|
|
7982
7989
|
nextNode = nextSibling(nextNode);
|
|
7983
7990
|
}
|
|
7984
|
-
return nextNode;
|
|
7991
|
+
return isFragmentStart ? nextSibling(nextNode) : nextNode;
|
|
7992
|
+
}
|
|
7993
|
+
else {
|
|
7994
|
+
onMismatch();
|
|
7985
7995
|
}
|
|
7986
7996
|
break;
|
|
7987
7997
|
case Fragment:
|
|
@@ -8339,7 +8349,7 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
8339
8349
|
if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {
|
|
8340
8350
|
setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);
|
|
8341
8351
|
}
|
|
8342
|
-
const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP,
|
|
8352
|
+
const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, insertStaticContent: hostInsertStaticContent } = options;
|
|
8343
8353
|
// Note: functions inside this closure should use `const xxx = () => {}`
|
|
8344
8354
|
// style in order to prevent being inlined by minifiers.
|
|
8345
8355
|
const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = (process.env.NODE_ENV !== 'production') && isHmrUpdating ? false : !!n2.dynamicChildren) => {
|
|
@@ -8466,56 +8476,44 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
8466
8476
|
const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
|
|
8467
8477
|
let el;
|
|
8468
8478
|
let vnodeHook;
|
|
8469
|
-
const { type, props, shapeFlag, transition,
|
|
8470
|
-
|
|
8471
|
-
|
|
8472
|
-
|
|
8473
|
-
|
|
8474
|
-
|
|
8475
|
-
// Only static vnodes can be reused, so its mounted DOM nodes should be
|
|
8476
|
-
// exactly the same, and we can simply do a clone here.
|
|
8477
|
-
// only do this in production since cloned trees cannot be HMR updated.
|
|
8478
|
-
el = vnode.el = hostCloneNode(vnode.el);
|
|
8479
|
+
const { type, props, shapeFlag, transition, dirs } = vnode;
|
|
8480
|
+
el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);
|
|
8481
|
+
// mount children first, since some props may rely on child content
|
|
8482
|
+
// being already rendered, e.g. `<select value>`
|
|
8483
|
+
if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {
|
|
8484
|
+
hostSetElementText(el, vnode.children);
|
|
8479
8485
|
}
|
|
8480
|
-
else {
|
|
8481
|
-
|
|
8482
|
-
// mount children first, since some props may rely on child content
|
|
8483
|
-
// being already rendered, e.g. `<select value>`
|
|
8484
|
-
if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {
|
|
8485
|
-
hostSetElementText(el, vnode.children);
|
|
8486
|
-
}
|
|
8487
|
-
else if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {
|
|
8488
|
-
mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);
|
|
8489
|
-
}
|
|
8490
|
-
if (dirs) {
|
|
8491
|
-
invokeDirectiveHook(vnode, null, parentComponent, 'created');
|
|
8492
|
-
}
|
|
8493
|
-
// props
|
|
8494
|
-
if (props) {
|
|
8495
|
-
for (const key in props) {
|
|
8496
|
-
if (key !== 'value' && !isReservedProp(key)) {
|
|
8497
|
-
hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
|
|
8498
|
-
}
|
|
8499
|
-
}
|
|
8500
|
-
/**
|
|
8501
|
-
* Special case for setting value on DOM elements:
|
|
8502
|
-
* - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024)
|
|
8503
|
-
* - it needs to be forced (#1471)
|
|
8504
|
-
* #2353 proposes adding another renderer option to configure this, but
|
|
8505
|
-
* the properties affects are so finite it is worth special casing it
|
|
8506
|
-
* here to reduce the complexity. (Special casing it also should not
|
|
8507
|
-
* affect non-DOM renderers)
|
|
8508
|
-
*/
|
|
8509
|
-
if ('value' in props) {
|
|
8510
|
-
hostPatchProp(el, 'value', null, props.value);
|
|
8511
|
-
}
|
|
8512
|
-
if ((vnodeHook = props.onVnodeBeforeMount)) {
|
|
8513
|
-
invokeVNodeHook(vnodeHook, parentComponent, vnode);
|
|
8514
|
-
}
|
|
8515
|
-
}
|
|
8516
|
-
// scopeId
|
|
8517
|
-
setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);
|
|
8486
|
+
else if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {
|
|
8487
|
+
mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);
|
|
8518
8488
|
}
|
|
8489
|
+
if (dirs) {
|
|
8490
|
+
invokeDirectiveHook(vnode, null, parentComponent, 'created');
|
|
8491
|
+
}
|
|
8492
|
+
// props
|
|
8493
|
+
if (props) {
|
|
8494
|
+
for (const key in props) {
|
|
8495
|
+
if (key !== 'value' && !isReservedProp(key)) {
|
|
8496
|
+
hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
|
|
8497
|
+
}
|
|
8498
|
+
}
|
|
8499
|
+
/**
|
|
8500
|
+
* Special case for setting value on DOM elements:
|
|
8501
|
+
* - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024)
|
|
8502
|
+
* - it needs to be forced (#1471)
|
|
8503
|
+
* #2353 proposes adding another renderer option to configure this, but
|
|
8504
|
+
* the properties affects are so finite it is worth special casing it
|
|
8505
|
+
* here to reduce the complexity. (Special casing it also should not
|
|
8506
|
+
* affect non-DOM renderers)
|
|
8507
|
+
*/
|
|
8508
|
+
if ('value' in props) {
|
|
8509
|
+
hostPatchProp(el, 'value', null, props.value);
|
|
8510
|
+
}
|
|
8511
|
+
if ((vnodeHook = props.onVnodeBeforeMount)) {
|
|
8512
|
+
invokeVNodeHook(vnodeHook, parentComponent, vnode);
|
|
8513
|
+
}
|
|
8514
|
+
}
|
|
8515
|
+
// scopeId
|
|
8516
|
+
setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);
|
|
8519
8517
|
if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {
|
|
8520
8518
|
Object.defineProperty(el, '__vnode', {
|
|
8521
8519
|
value: vnode,
|
|
@@ -8702,6 +8700,13 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
8702
8700
|
};
|
|
8703
8701
|
const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {
|
|
8704
8702
|
if (oldProps !== newProps) {
|
|
8703
|
+
if (oldProps !== EMPTY_OBJ) {
|
|
8704
|
+
for (const key in oldProps) {
|
|
8705
|
+
if (!isReservedProp(key) && !(key in newProps)) {
|
|
8706
|
+
hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
|
|
8707
|
+
}
|
|
8708
|
+
}
|
|
8709
|
+
}
|
|
8705
8710
|
for (const key in newProps) {
|
|
8706
8711
|
// empty string is not valid prop
|
|
8707
8712
|
if (isReservedProp(key))
|
|
@@ -8713,13 +8718,6 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
8713
8718
|
hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
|
|
8714
8719
|
}
|
|
8715
8720
|
}
|
|
8716
|
-
if (oldProps !== EMPTY_OBJ) {
|
|
8717
|
-
for (const key in oldProps) {
|
|
8718
|
-
if (!isReservedProp(key) && !(key in newProps)) {
|
|
8719
|
-
hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
|
|
8720
|
-
}
|
|
8721
|
-
}
|
|
8722
|
-
}
|
|
8723
8721
|
if ('value' in newProps) {
|
|
8724
8722
|
hostPatchProp(el, 'value', oldProps.value, newProps.value);
|
|
8725
8723
|
}
|
|
@@ -10346,7 +10344,10 @@ function normalizeVNode(child) {
|
|
|
10346
10344
|
}
|
|
10347
10345
|
// optimized normalization for template-compiled render fns
|
|
10348
10346
|
function cloneIfMounted(child) {
|
|
10349
|
-
return child.el === null
|
|
10347
|
+
return (child.el === null && child.patchFlag !== -1 /* PatchFlags.HOISTED */) ||
|
|
10348
|
+
child.memo
|
|
10349
|
+
? child
|
|
10350
|
+
: cloneVNode(child);
|
|
10350
10351
|
}
|
|
10351
10352
|
function normalizeChildren(vnode, children) {
|
|
10352
10353
|
let type = 0;
|
|
@@ -10704,7 +10705,8 @@ function finishComponentSetup(instance, isSSR, skipOptions) {
|
|
|
10704
10705
|
if (!isSSR && compile && !Component.render) {
|
|
10705
10706
|
const template = (instance.vnode.props &&
|
|
10706
10707
|
instance.vnode.props['inline-template']) ||
|
|
10707
|
-
Component.template
|
|
10708
|
+
Component.template ||
|
|
10709
|
+
resolveMergedOptions(instance).template;
|
|
10708
10710
|
if (template) {
|
|
10709
10711
|
if ((process.env.NODE_ENV !== 'production')) {
|
|
10710
10712
|
startMeasure(instance, `compile`);
|
|
@@ -11283,7 +11285,7 @@ function isMemoSame(cached, memo) {
|
|
|
11283
11285
|
}
|
|
11284
11286
|
|
|
11285
11287
|
// Core API ------------------------------------------------------------------
|
|
11286
|
-
const version = "3.2.
|
|
11288
|
+
const version = "3.2.40";
|
|
11287
11289
|
const _ssrUtils = {
|
|
11288
11290
|
createComponentInstance,
|
|
11289
11291
|
setupComponent,
|
|
@@ -11349,22 +11351,6 @@ const nodeOps = {
|
|
|
11349
11351
|
setScopeId(el, id) {
|
|
11350
11352
|
el.setAttribute(id, '');
|
|
11351
11353
|
},
|
|
11352
|
-
cloneNode(el) {
|
|
11353
|
-
const cloned = el.cloneNode(true);
|
|
11354
|
-
// #3072
|
|
11355
|
-
// - in `patchDOMProp`, we store the actual value in the `el._value` property.
|
|
11356
|
-
// - normally, elements using `:value` bindings will not be hoisted, but if
|
|
11357
|
-
// the bound value is a constant, e.g. `:value="true"` - they do get
|
|
11358
|
-
// hoisted.
|
|
11359
|
-
// - in production, hoisted nodes are cloned when subsequent inserts, but
|
|
11360
|
-
// cloneNode() does not copy the custom property we attached.
|
|
11361
|
-
// - This may need to account for other custom DOM properties we attach to
|
|
11362
|
-
// elements in addition to `_value` in the future.
|
|
11363
|
-
if (`_value` in el) {
|
|
11364
|
-
cloned._value = el._value;
|
|
11365
|
-
}
|
|
11366
|
-
return cloned;
|
|
11367
|
-
},
|
|
11368
11354
|
// __UNSAFE__
|
|
11369
11355
|
// Reason: innerHTML.
|
|
11370
11356
|
// Static content here can only come from compiled templates.
|
|
@@ -11535,14 +11521,14 @@ const isEnumeratedAttr = /*#__PURE__*/ makeMap('contenteditable,draggable,spellc
|
|
|
11535
11521
|
;
|
|
11536
11522
|
function compatCoerceAttr(el, key, value, instance = null) {
|
|
11537
11523
|
if (isEnumeratedAttr(key)) {
|
|
11538
|
-
const
|
|
11524
|
+
const v2CoercedValue = value === null
|
|
11539
11525
|
? 'false'
|
|
11540
11526
|
: typeof value !== 'boolean' && value !== undefined
|
|
11541
11527
|
? 'true'
|
|
11542
11528
|
: null;
|
|
11543
|
-
if (
|
|
11544
|
-
compatUtils.softAssertCompatEnabled("ATTR_ENUMERATED_COERCION" /* DeprecationTypes.ATTR_ENUMERATED_COERCION */, instance, key, value,
|
|
11545
|
-
el.setAttribute(key,
|
|
11529
|
+
if (v2CoercedValue &&
|
|
11530
|
+
compatUtils.softAssertCompatEnabled("ATTR_ENUMERATED_COERCION" /* DeprecationTypes.ATTR_ENUMERATED_COERCION */, instance, key, value, v2CoercedValue)) {
|
|
11531
|
+
el.setAttribute(key, v2CoercedValue);
|
|
11546
11532
|
return true;
|
|
11547
11533
|
}
|
|
11548
11534
|
}
|
|
@@ -11603,7 +11589,6 @@ prevChildren, parentComponent, parentSuspense, unmountChildren) {
|
|
|
11603
11589
|
}
|
|
11604
11590
|
else if (type === 'number') {
|
|
11605
11591
|
// e.g. <img :width="null">
|
|
11606
|
-
// the value of some IDL attr must be greater than 0, e.g. input.size = 0 -> error
|
|
11607
11592
|
value = 0;
|
|
11608
11593
|
needRemove = true;
|
|
11609
11594
|
}
|
|
@@ -11627,7 +11612,8 @@ prevChildren, parentComponent, parentSuspense, unmountChildren) {
|
|
|
11627
11612
|
el[key] = value;
|
|
11628
11613
|
}
|
|
11629
11614
|
catch (e) {
|
|
11630
|
-
if
|
|
11615
|
+
// do not warn if value is auto-coerced from nullish values
|
|
11616
|
+
if ((process.env.NODE_ENV !== 'production') && !needRemove) {
|
|
11631
11617
|
warn$1(`Failed setting prop "${key}" on <${el.tagName.toLowerCase()}>: ` +
|
|
11632
11618
|
`value ${value} is invalid.`, e);
|
|
11633
11619
|
}
|
|
@@ -14174,34 +14160,42 @@ function parseChildren(context, mode, ancestors) {
|
|
|
14174
14160
|
const shouldCondense = context.options.whitespace !== 'preserve';
|
|
14175
14161
|
for (let i = 0; i < nodes.length; i++) {
|
|
14176
14162
|
const node = nodes[i];
|
|
14177
|
-
if (
|
|
14178
|
-
if (
|
|
14179
|
-
|
|
14180
|
-
|
|
14181
|
-
|
|
14182
|
-
|
|
14183
|
-
|
|
14184
|
-
|
|
14185
|
-
|
|
14186
|
-
!
|
|
14187
|
-
|
|
14188
|
-
(
|
|
14189
|
-
|
|
14190
|
-
|
|
14191
|
-
|
|
14192
|
-
|
|
14193
|
-
|
|
14194
|
-
|
|
14163
|
+
if (node.type === 2 /* NodeTypes.TEXT */) {
|
|
14164
|
+
if (!context.inPre) {
|
|
14165
|
+
if (!/[^\t\r\n\f ]/.test(node.content)) {
|
|
14166
|
+
const prev = nodes[i - 1];
|
|
14167
|
+
const next = nodes[i + 1];
|
|
14168
|
+
// Remove if:
|
|
14169
|
+
// - the whitespace is the first or last node, or:
|
|
14170
|
+
// - (condense mode) the whitespace is adjacent to a comment, or:
|
|
14171
|
+
// - (condense mode) the whitespace is between two elements AND contains newline
|
|
14172
|
+
if (!prev ||
|
|
14173
|
+
!next ||
|
|
14174
|
+
(shouldCondense &&
|
|
14175
|
+
(prev.type === 3 /* NodeTypes.COMMENT */ ||
|
|
14176
|
+
next.type === 3 /* NodeTypes.COMMENT */ ||
|
|
14177
|
+
(prev.type === 1 /* NodeTypes.ELEMENT */ &&
|
|
14178
|
+
next.type === 1 /* NodeTypes.ELEMENT */ &&
|
|
14179
|
+
/[\r\n]/.test(node.content))))) {
|
|
14180
|
+
removedWhitespace = true;
|
|
14181
|
+
nodes[i] = null;
|
|
14182
|
+
}
|
|
14183
|
+
else {
|
|
14184
|
+
// Otherwise, the whitespace is condensed into a single space
|
|
14185
|
+
node.content = ' ';
|
|
14186
|
+
}
|
|
14195
14187
|
}
|
|
14196
|
-
else {
|
|
14197
|
-
//
|
|
14198
|
-
|
|
14188
|
+
else if (shouldCondense) {
|
|
14189
|
+
// in condense mode, consecutive whitespaces in text are condensed
|
|
14190
|
+
// down to a single space.
|
|
14191
|
+
node.content = node.content.replace(/[\t\r\n\f ]+/g, ' ');
|
|
14199
14192
|
}
|
|
14200
14193
|
}
|
|
14201
|
-
else
|
|
14202
|
-
//
|
|
14203
|
-
//
|
|
14204
|
-
|
|
14194
|
+
else {
|
|
14195
|
+
// #6410 normalize windows newlines in <pre>:
|
|
14196
|
+
// in SSR, browsers normalize server-rendered \r\n into a single \n
|
|
14197
|
+
// in the DOM
|
|
14198
|
+
node.content = node.content.replace(/\r\n/g, '\n');
|
|
14205
14199
|
}
|
|
14206
14200
|
}
|
|
14207
14201
|
// Remove comment nodes if desired by configuration.
|
|
@@ -14890,11 +14884,6 @@ function walk$1(node, context, doNotHoistNode = false) {
|
|
|
14890
14884
|
}
|
|
14891
14885
|
}
|
|
14892
14886
|
}
|
|
14893
|
-
else if (child.type === 12 /* NodeTypes.TEXT_CALL */ &&
|
|
14894
|
-
getConstantType(child.content, context) >= 2 /* ConstantTypes.CAN_HOIST */) {
|
|
14895
|
-
child.codegenNode = context.hoist(child.codegenNode);
|
|
14896
|
-
hoistedCount++;
|
|
14897
|
-
}
|
|
14898
14887
|
// walk further
|
|
14899
14888
|
if (child.type === 1 /* NodeTypes.ELEMENT */) {
|
|
14900
14889
|
const isComponent = child.tagType === 1 /* ElementTypes.COMPONENT */;
|
|
@@ -16934,6 +16923,14 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
|
|
|
16934
16923
|
let hasDynamicKeys = false;
|
|
16935
16924
|
let hasVnodeHook = false;
|
|
16936
16925
|
const dynamicPropNames = [];
|
|
16926
|
+
const pushMergeArg = (arg) => {
|
|
16927
|
+
if (properties.length) {
|
|
16928
|
+
mergeArgs.push(createObjectExpression(dedupeProperties(properties), elementLoc));
|
|
16929
|
+
properties = [];
|
|
16930
|
+
}
|
|
16931
|
+
if (arg)
|
|
16932
|
+
mergeArgs.push(arg);
|
|
16933
|
+
};
|
|
16937
16934
|
const analyzePatchFlag = ({ key, value }) => {
|
|
16938
16935
|
if (isStaticExp(key)) {
|
|
16939
16936
|
const name = key.content;
|
|
@@ -17046,11 +17043,9 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
|
|
|
17046
17043
|
if (!arg && (isVBind || isVOn)) {
|
|
17047
17044
|
hasDynamicKeys = true;
|
|
17048
17045
|
if (exp) {
|
|
17049
|
-
if (properties.length) {
|
|
17050
|
-
mergeArgs.push(createObjectExpression(dedupeProperties(properties), elementLoc));
|
|
17051
|
-
properties = [];
|
|
17052
|
-
}
|
|
17053
17046
|
if (isVBind) {
|
|
17047
|
+
// have to merge early for compat build check
|
|
17048
|
+
pushMergeArg();
|
|
17054
17049
|
{
|
|
17055
17050
|
// 2.x v-bind object order compat
|
|
17056
17051
|
if ((process.env.NODE_ENV !== 'production')) {
|
|
@@ -17084,7 +17079,7 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
|
|
|
17084
17079
|
}
|
|
17085
17080
|
else {
|
|
17086
17081
|
// v-on="obj" -> toHandlers(obj)
|
|
17087
|
-
|
|
17082
|
+
pushMergeArg({
|
|
17088
17083
|
type: 14 /* NodeTypes.JS_CALL_EXPRESSION */,
|
|
17089
17084
|
loc,
|
|
17090
17085
|
callee: context.helper(TO_HANDLERS),
|
|
@@ -17104,7 +17099,12 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
|
|
|
17104
17099
|
// has built-in directive transform.
|
|
17105
17100
|
const { props, needRuntime } = directiveTransform(prop, node, context);
|
|
17106
17101
|
!ssr && props.forEach(analyzePatchFlag);
|
|
17107
|
-
|
|
17102
|
+
if (isVOn && arg && !isStaticExp(arg)) {
|
|
17103
|
+
pushMergeArg(createObjectExpression(props, elementLoc));
|
|
17104
|
+
}
|
|
17105
|
+
else {
|
|
17106
|
+
properties.push(...props);
|
|
17107
|
+
}
|
|
17108
17108
|
if (needRuntime) {
|
|
17109
17109
|
runtimeDirectives.push(prop);
|
|
17110
17110
|
if (isSymbol(needRuntime)) {
|
|
@@ -17126,9 +17126,8 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
|
|
|
17126
17126
|
let propsExpression = undefined;
|
|
17127
17127
|
// has v-bind="object" or v-on="object", wrap with mergeProps
|
|
17128
17128
|
if (mergeArgs.length) {
|
|
17129
|
-
|
|
17130
|
-
|
|
17131
|
-
}
|
|
17129
|
+
// close up any not-yet-merged props
|
|
17130
|
+
pushMergeArg();
|
|
17132
17131
|
if (mergeArgs.length > 1) {
|
|
17133
17132
|
propsExpression = createCallExpression(context.helper(MERGE_PROPS), mergeArgs, elementLoc);
|
|
17134
17133
|
}
|