@vue/server-renderer 3.2.44 → 3.2.46

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.
@@ -1,11 +1,22 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var vue = require('vue');
3
+ var Vue = require('vue');
6
4
  var shared = require('@vue/shared');
7
5
  var compilerSsr = require('@vue/compiler-ssr');
8
6
 
7
+ function _interopNamespaceDefault(e) {
8
+ var n = Object.create(null);
9
+ if (e) {
10
+ for (var k in e) {
11
+ n[k] = e[k];
12
+ }
13
+ }
14
+ n.default = e;
15
+ return Object.freeze(n);
16
+ }
17
+
18
+ var Vue__namespace = /*#__PURE__*/_interopNamespaceDefault(Vue);
19
+
9
20
  // leading comma for empty string ""
10
21
  const shouldIgnoreProp = shared.makeMap(`,key,ref,innerHTML,textContent,ref_key,ref_for`);
11
22
  function ssrRenderAttrs(props, tag) {
@@ -77,6 +88,207 @@ function ssrRenderStyle(raw) {
77
88
  return shared.escapeHtml(shared.stringifyStyle(styles));
78
89
  }
79
90
 
91
+ function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {
92
+ return renderComponentVNode(Vue.createVNode(comp, props, children), parentComponent, slotScopeId);
93
+ }
94
+
95
+ function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) {
96
+ // template-compiled slots are always rendered as fragments
97
+ push(`<!--[-->`);
98
+ ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId);
99
+ push(`<!--]-->`);
100
+ }
101
+ function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) {
102
+ const slotFn = slots[slotName];
103
+ if (slotFn) {
104
+ const slotBuffer = [];
105
+ const bufferedPush = (item) => {
106
+ slotBuffer.push(item);
107
+ };
108
+ const ret = slotFn(slotProps, bufferedPush, parentComponent, slotScopeId ? ' ' + slotScopeId : '');
109
+ if (shared.isArray(ret)) {
110
+ // normal slot
111
+ renderVNodeChildren(push, ret, parentComponent, slotScopeId);
112
+ }
113
+ else {
114
+ // ssr slot.
115
+ // check if the slot renders all comments, in which case use the fallback
116
+ let isEmptySlot = true;
117
+ if (transition) {
118
+ isEmptySlot = false;
119
+ }
120
+ else {
121
+ for (let i = 0; i < slotBuffer.length; i++) {
122
+ if (!isComment(slotBuffer[i])) {
123
+ isEmptySlot = false;
124
+ break;
125
+ }
126
+ }
127
+ }
128
+ if (isEmptySlot) {
129
+ if (fallbackRenderFn) {
130
+ fallbackRenderFn();
131
+ }
132
+ }
133
+ else {
134
+ for (let i = 0; i < slotBuffer.length; i++) {
135
+ push(slotBuffer[i]);
136
+ }
137
+ }
138
+ }
139
+ }
140
+ else if (fallbackRenderFn) {
141
+ fallbackRenderFn();
142
+ }
143
+ }
144
+ const commentTestRE = /^<!--.*-->$/s;
145
+ const commentRE = /<!--[^]*?-->/gm;
146
+ function isComment(item) {
147
+ if (typeof item !== 'string' || !commentTestRE.test(item))
148
+ return false;
149
+ // if item is '<!---->' or '<!--[-->' or '<!--]-->', return true directly
150
+ if (item.length <= 8)
151
+ return true;
152
+ return !item.replace(commentRE, '').trim();
153
+ }
154
+
155
+ function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) {
156
+ parentPush('<!--teleport start-->');
157
+ const context = parentComponent.appContext.provides[Vue.ssrContextKey];
158
+ const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {});
159
+ const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []);
160
+ // record current index of the target buffer to handle nested teleports
161
+ // since the parent needs to be rendered before the child
162
+ const bufferIndex = targetBuffer.length;
163
+ let teleportContent;
164
+ if (disabled) {
165
+ contentRenderFn(parentPush);
166
+ teleportContent = `<!--teleport anchor-->`;
167
+ }
168
+ else {
169
+ const { getBuffer, push } = createBuffer();
170
+ contentRenderFn(push);
171
+ push(`<!--teleport anchor-->`);
172
+ teleportContent = getBuffer();
173
+ }
174
+ targetBuffer.splice(bufferIndex, 0, teleportContent);
175
+ parentPush('<!--teleport end-->');
176
+ }
177
+
178
+ function ssrInterpolate(value) {
179
+ return shared.escapeHtml(shared.toDisplayString(value));
180
+ }
181
+
182
+ function ssrRenderList(source, renderItem) {
183
+ if (shared.isArray(source) || shared.isString(source)) {
184
+ for (let i = 0, l = source.length; i < l; i++) {
185
+ renderItem(source[i], i);
186
+ }
187
+ }
188
+ else if (typeof source === 'number') {
189
+ for (let i = 0; i < source; i++) {
190
+ renderItem(i + 1, i);
191
+ }
192
+ }
193
+ else if (shared.isObject(source)) {
194
+ if (source[Symbol.iterator]) {
195
+ const arr = Array.from(source);
196
+ for (let i = 0, l = arr.length; i < l; i++) {
197
+ renderItem(arr[i], i);
198
+ }
199
+ }
200
+ else {
201
+ const keys = Object.keys(source);
202
+ for (let i = 0, l = keys.length; i < l; i++) {
203
+ const key = keys[i];
204
+ renderItem(source[key], key, i);
205
+ }
206
+ }
207
+ }
208
+ }
209
+
210
+ async function ssrRenderSuspense(push, { default: renderContent }) {
211
+ if (renderContent) {
212
+ renderContent();
213
+ }
214
+ else {
215
+ push(`<!---->`);
216
+ }
217
+ }
218
+
219
+ function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
220
+ if (typeof dir !== 'function' && dir.getSSRProps) {
221
+ return (dir.getSSRProps({
222
+ dir,
223
+ instance,
224
+ value,
225
+ oldValue: undefined,
226
+ arg,
227
+ modifiers
228
+ }, null) || {});
229
+ }
230
+ return {};
231
+ }
232
+
233
+ const ssrLooseEqual = shared.looseEqual;
234
+ function ssrLooseContain(arr, value) {
235
+ return shared.looseIndexOf(arr, value) > -1;
236
+ }
237
+ // for <input :type="type" v-model="model" value="value">
238
+ function ssrRenderDynamicModel(type, model, value) {
239
+ switch (type) {
240
+ case 'radio':
241
+ return shared.looseEqual(model, value) ? ' checked' : '';
242
+ case 'checkbox':
243
+ return (shared.isArray(model) ? ssrLooseContain(model, value) : model)
244
+ ? ' checked'
245
+ : '';
246
+ default:
247
+ // text types
248
+ return ssrRenderAttr('value', model);
249
+ }
250
+ }
251
+ // for <input v-bind="obj" v-model="model">
252
+ function ssrGetDynamicModelProps(existingProps = {}, model) {
253
+ const { type, value } = existingProps;
254
+ switch (type) {
255
+ case 'radio':
256
+ return shared.looseEqual(model, value) ? { checked: true } : null;
257
+ case 'checkbox':
258
+ return (shared.isArray(model) ? ssrLooseContain(model, value) : model)
259
+ ? { checked: true }
260
+ : null;
261
+ default:
262
+ // text types
263
+ return { value: model };
264
+ }
265
+ }
266
+
267
+ // internal runtime helpers
268
+
269
+ var helpers = /*#__PURE__*/Object.freeze({
270
+ __proto__: null,
271
+ ssrGetDirectiveProps: ssrGetDirectiveProps,
272
+ ssrGetDynamicModelProps: ssrGetDynamicModelProps,
273
+ ssrIncludeBooleanAttr: shared.includeBooleanAttr,
274
+ ssrInterpolate: ssrInterpolate,
275
+ ssrLooseContain: ssrLooseContain,
276
+ ssrLooseEqual: ssrLooseEqual,
277
+ ssrRenderAttr: ssrRenderAttr,
278
+ ssrRenderAttrs: ssrRenderAttrs,
279
+ ssrRenderClass: ssrRenderClass,
280
+ ssrRenderComponent: ssrRenderComponent,
281
+ ssrRenderDynamicAttr: ssrRenderDynamicAttr,
282
+ ssrRenderDynamicModel: ssrRenderDynamicModel,
283
+ ssrRenderList: ssrRenderList,
284
+ ssrRenderSlot: ssrRenderSlot,
285
+ ssrRenderSlotInner: ssrRenderSlotInner,
286
+ ssrRenderStyle: ssrRenderStyle,
287
+ ssrRenderSuspense: ssrRenderSuspense,
288
+ ssrRenderTeleport: ssrRenderTeleport,
289
+ ssrRenderVNode: renderVNode
290
+ });
291
+
80
292
  const compileCache = Object.create(null);
81
293
  function ssrCompile(template, instance) {
82
294
  // TODO: This is copied from runtime-core/src/component.ts and should probably be refactored
@@ -106,33 +318,15 @@ function ssrCompile(template, instance) {
106
318
  }
107
319
  };
108
320
  const { code } = compilerSsr.compile(template, finalCompilerOptions);
109
- return (compileCache[cacheKey] = Function('require', code)(require));
110
- }
111
-
112
- function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) {
113
- parentPush('<!--teleport start-->');
114
- const context = parentComponent.appContext.provides[vue.ssrContextKey];
115
- const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {});
116
- const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []);
117
- // record current index of the target buffer to handle nested teleports
118
- // since the parent needs to be rendered before the child
119
- const bufferIndex = targetBuffer.length;
120
- let teleportContent;
121
- if (disabled) {
122
- contentRenderFn(parentPush);
123
- teleportContent = `<!--teleport anchor-->`;
124
- }
125
- else {
126
- const { getBuffer, push } = createBuffer();
127
- contentRenderFn(push);
128
- push(`<!--teleport anchor-->`);
129
- teleportContent = getBuffer();
130
- }
131
- targetBuffer.splice(bufferIndex, 0, teleportContent);
132
- parentPush('<!--teleport end-->');
321
+ const requireMap = {
322
+ vue: Vue__namespace,
323
+ 'vue/server-renderer': helpers
324
+ };
325
+ const fakeRequire = (id) => requireMap[id];
326
+ return (compileCache[cacheKey] = Function('require', code)(fakeRequire));
133
327
  }
134
328
 
135
- const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, normalizeVNode } = vue.ssrUtils;
329
+ const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, normalizeVNode } = Vue.ssrUtils;
136
330
  // Each component has a buffer array.
137
331
  // A buffer array can contain one of the following:
138
332
  // - plain string
@@ -261,7 +455,7 @@ function renderComponentSubTree(instance, slotScopeId) {
261
455
  }
262
456
  else {
263
457
  const componentName = comp.name || comp.__file || `<Anonymous>`;
264
- vue.warn(`Component ${componentName} is missing template or render function.`);
458
+ Vue.warn(`Component ${componentName} is missing template or render function.`);
265
459
  push(`<!---->`);
266
460
  }
267
461
  }
@@ -270,16 +464,16 @@ function renderComponentSubTree(instance, slotScopeId) {
270
464
  function renderVNode(push, vnode, parentComponent, slotScopeId) {
271
465
  const { type, shapeFlag, children } = vnode;
272
466
  switch (type) {
273
- case vue.Text:
467
+ case Vue.Text:
274
468
  push(shared.escapeHtml(children));
275
469
  break;
276
- case vue.Comment:
470
+ case Vue.Comment:
277
471
  push(children ? `<!--${shared.escapeHtmlComment(children)}-->` : `<!---->`);
278
472
  break;
279
- case vue.Static:
473
+ case Vue.Static:
280
474
  push(children);
281
475
  break;
282
- case vue.Fragment:
476
+ case Vue.Fragment:
283
477
  if (vnode.slotScopeIds) {
284
478
  slotScopeId =
285
479
  (slotScopeId ? slotScopeId + ' ' : '') + vnode.slotScopeIds.join(' ');
@@ -302,7 +496,7 @@ function renderVNode(push, vnode, parentComponent, slotScopeId) {
302
496
  renderVNode(push, vnode.ssContent, parentComponent, slotScopeId);
303
497
  }
304
498
  else {
305
- vue.warn('[@vue/server-renderer] Invalid VNode type:', type, `(${typeof type})`);
499
+ Vue.warn('[@vue/server-renderer] Invalid VNode type:', type, `(${typeof type})`);
306
500
  }
307
501
  }
308
502
  }
@@ -376,19 +570,19 @@ function applySSRDirectives(vnode, rawProps, dirs) {
376
570
  toMerge.push(props);
377
571
  }
378
572
  }
379
- return vue.mergeProps(rawProps || {}, ...toMerge);
573
+ return Vue.mergeProps(rawProps || {}, ...toMerge);
380
574
  }
381
575
  function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
382
576
  const target = vnode.props && vnode.props.to;
383
577
  const disabled = vnode.props && vnode.props.disabled;
384
578
  if (!target) {
385
579
  if (!disabled) {
386
- vue.warn(`[@vue/server-renderer] Teleport is missing target prop.`);
580
+ Vue.warn(`[@vue/server-renderer] Teleport is missing target prop.`);
387
581
  }
388
582
  return [];
389
583
  }
390
584
  if (!shared.isString(target)) {
391
- vue.warn(`[@vue/server-renderer] Teleport target must be a query selector string.`);
585
+ Vue.warn(`[@vue/server-renderer] Teleport target must be a query selector string.`);
392
586
  return [];
393
587
  }
394
588
  ssrRenderTeleport(push, push => {
@@ -396,8 +590,8 @@ function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
396
590
  }, target, disabled || disabled === '', parentComponent);
397
591
  }
398
592
 
399
- const { isVNode } = vue.ssrUtils;
400
- async function unrollBuffer(buffer) {
593
+ const { isVNode: isVNode$1 } = Vue.ssrUtils;
594
+ async function unrollBuffer$1(buffer) {
401
595
  if (buffer.hasAsync) {
402
596
  let ret = '';
403
597
  for (let i = 0; i < buffer.length; i++) {
@@ -409,7 +603,7 @@ async function unrollBuffer(buffer) {
409
603
  ret += item;
410
604
  }
411
605
  else {
412
- ret += await unrollBuffer(item);
606
+ ret += await unrollBuffer$1(item);
413
607
  }
414
608
  }
415
609
  return ret;
@@ -417,10 +611,10 @@ async function unrollBuffer(buffer) {
417
611
  else {
418
612
  // sync buffer can be more efficiently unrolled without unnecessary await
419
613
  // ticks
420
- return unrollBufferSync(buffer);
614
+ return unrollBufferSync$1(buffer);
421
615
  }
422
616
  }
423
- function unrollBufferSync(buffer) {
617
+ function unrollBufferSync$1(buffer) {
424
618
  let ret = '';
425
619
  for (let i = 0; i < buffer.length; i++) {
426
620
  let item = buffer[i];
@@ -429,23 +623,23 @@ function unrollBufferSync(buffer) {
429
623
  }
430
624
  else {
431
625
  // since this is a sync buffer, child buffers are never promises
432
- ret += unrollBufferSync(item);
626
+ ret += unrollBufferSync$1(item);
433
627
  }
434
628
  }
435
629
  return ret;
436
630
  }
437
631
  async function renderToString(input, context = {}) {
438
- if (isVNode(input)) {
632
+ if (isVNode$1(input)) {
439
633
  // raw vnode, wrap with app (for context)
440
- return renderToString(vue.createApp({ render: () => input }), context);
634
+ return renderToString(Vue.createApp({ render: () => input }), context);
441
635
  }
442
636
  // rendering an app
443
- const vnode = vue.createVNode(input._component, input._props);
637
+ const vnode = Vue.createVNode(input._component, input._props);
444
638
  vnode.appContext = input._context;
445
639
  // provide the ssr context to the tree
446
- input.provide(vue.ssrContextKey, context);
640
+ input.provide(Vue.ssrContextKey, context);
447
641
  const buffer = await renderComponentVNode(vnode);
448
- const result = await unrollBuffer(buffer);
642
+ const result = await unrollBuffer$1(buffer);
449
643
  await resolveTeleports(context);
450
644
  if (context.__watcherHandles) {
451
645
  for (const unwatch of context.__watcherHandles) {
@@ -460,13 +654,13 @@ async function resolveTeleports(context) {
460
654
  for (const key in context.__teleportBuffers) {
461
655
  // note: it's OK to await sequentially here because the Promises were
462
656
  // created eagerly in parallel.
463
- context.teleports[key] = await unrollBuffer(await Promise.all([context.__teleportBuffers[key]]));
657
+ context.teleports[key] = await unrollBuffer$1(await Promise.all([context.__teleportBuffers[key]]));
464
658
  }
465
659
  }
466
660
  }
467
661
 
468
- const { isVNode: isVNode$1 } = vue.ssrUtils;
469
- async function unrollBuffer$1(buffer, stream) {
662
+ const { isVNode } = Vue.ssrUtils;
663
+ async function unrollBuffer(buffer, stream) {
470
664
  if (buffer.hasAsync) {
471
665
  for (let i = 0; i < buffer.length; i++) {
472
666
  let item = buffer[i];
@@ -477,17 +671,17 @@ async function unrollBuffer$1(buffer, stream) {
477
671
  stream.push(item);
478
672
  }
479
673
  else {
480
- await unrollBuffer$1(item, stream);
674
+ await unrollBuffer(item, stream);
481
675
  }
482
676
  }
483
677
  }
484
678
  else {
485
679
  // sync buffer can be more efficiently unrolled without unnecessary await
486
680
  // ticks
487
- unrollBufferSync$1(buffer, stream);
681
+ unrollBufferSync(buffer, stream);
488
682
  }
489
683
  }
490
- function unrollBufferSync$1(buffer, stream) {
684
+ function unrollBufferSync(buffer, stream) {
491
685
  for (let i = 0; i < buffer.length; i++) {
492
686
  let item = buffer[i];
493
687
  if (shared.isString(item)) {
@@ -495,22 +689,22 @@ function unrollBufferSync$1(buffer, stream) {
495
689
  }
496
690
  else {
497
691
  // since this is a sync buffer, child buffers are never promises
498
- unrollBufferSync$1(item, stream);
692
+ unrollBufferSync(item, stream);
499
693
  }
500
694
  }
501
695
  }
502
696
  function renderToSimpleStream(input, context, stream) {
503
- if (isVNode$1(input)) {
697
+ if (isVNode(input)) {
504
698
  // raw vnode, wrap with app (for context)
505
- return renderToSimpleStream(vue.createApp({ render: () => input }), context, stream);
699
+ return renderToSimpleStream(Vue.createApp({ render: () => input }), context, stream);
506
700
  }
507
701
  // rendering an app
508
- const vnode = vue.createVNode(input._component, input._props);
702
+ const vnode = Vue.createVNode(input._component, input._props);
509
703
  vnode.appContext = input._context;
510
704
  // provide the ssr context to the tree
511
- input.provide(vue.ssrContextKey, context);
705
+ input.provide(Vue.ssrContextKey, context);
512
706
  Promise.resolve(renderComponentVNode(vnode))
513
- .then(buffer => unrollBuffer$1(buffer, stream))
707
+ .then(buffer => unrollBuffer(buffer, stream))
514
708
  .then(() => resolveTeleports(context))
515
709
  .then(() => {
516
710
  if (context.__watcherHandles) {
@@ -617,160 +811,7 @@ function pipeToWebWritable(input, context = {}, writable) {
617
811
  });
618
812
  }
619
813
 
620
- function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {
621
- return renderComponentVNode(vue.createVNode(comp, props, children), parentComponent, slotScopeId);
622
- }
623
-
624
- function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) {
625
- // template-compiled slots are always rendered as fragments
626
- push(`<!--[-->`);
627
- ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId);
628
- push(`<!--]-->`);
629
- }
630
- function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) {
631
- const slotFn = slots[slotName];
632
- if (slotFn) {
633
- const slotBuffer = [];
634
- const bufferedPush = (item) => {
635
- slotBuffer.push(item);
636
- };
637
- const ret = slotFn(slotProps, bufferedPush, parentComponent, slotScopeId ? ' ' + slotScopeId : '');
638
- if (shared.isArray(ret)) {
639
- // normal slot
640
- renderVNodeChildren(push, ret, parentComponent, slotScopeId);
641
- }
642
- else {
643
- // ssr slot.
644
- // check if the slot renders all comments, in which case use the fallback
645
- let isEmptySlot = true;
646
- if (transition) {
647
- isEmptySlot = false;
648
- }
649
- else {
650
- for (let i = 0; i < slotBuffer.length; i++) {
651
- if (!isComment(slotBuffer[i])) {
652
- isEmptySlot = false;
653
- break;
654
- }
655
- }
656
- }
657
- if (isEmptySlot) {
658
- if (fallbackRenderFn) {
659
- fallbackRenderFn();
660
- }
661
- }
662
- else {
663
- for (let i = 0; i < slotBuffer.length; i++) {
664
- push(slotBuffer[i]);
665
- }
666
- }
667
- }
668
- }
669
- else if (fallbackRenderFn) {
670
- fallbackRenderFn();
671
- }
672
- }
673
- const commentTestRE = /^<!--.*-->$/s;
674
- const commentRE = /<!--[^]*?-->/gm;
675
- function isComment(item) {
676
- if (typeof item !== 'string' || !commentTestRE.test(item))
677
- return false;
678
- // if item is '<!---->' or '<!--[-->' or '<!--]-->', return true directly
679
- if (item.length <= 8)
680
- return true;
681
- return !item.replace(commentRE, '').trim();
682
- }
683
-
684
- function ssrInterpolate(value) {
685
- return shared.escapeHtml(shared.toDisplayString(value));
686
- }
687
-
688
- function ssrRenderList(source, renderItem) {
689
- if (shared.isArray(source) || shared.isString(source)) {
690
- for (let i = 0, l = source.length; i < l; i++) {
691
- renderItem(source[i], i);
692
- }
693
- }
694
- else if (typeof source === 'number') {
695
- for (let i = 0; i < source; i++) {
696
- renderItem(i + 1, i);
697
- }
698
- }
699
- else if (shared.isObject(source)) {
700
- if (source[Symbol.iterator]) {
701
- const arr = Array.from(source);
702
- for (let i = 0, l = arr.length; i < l; i++) {
703
- renderItem(arr[i], i);
704
- }
705
- }
706
- else {
707
- const keys = Object.keys(source);
708
- for (let i = 0, l = keys.length; i < l; i++) {
709
- const key = keys[i];
710
- renderItem(source[key], key, i);
711
- }
712
- }
713
- }
714
- }
715
-
716
- async function ssrRenderSuspense(push, { default: renderContent }) {
717
- if (renderContent) {
718
- renderContent();
719
- }
720
- else {
721
- push(`<!---->`);
722
- }
723
- }
724
-
725
- function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
726
- if (typeof dir !== 'function' && dir.getSSRProps) {
727
- return (dir.getSSRProps({
728
- dir,
729
- instance,
730
- value,
731
- oldValue: undefined,
732
- arg,
733
- modifiers
734
- }, null) || {});
735
- }
736
- return {};
737
- }
738
-
739
- const ssrLooseEqual = shared.looseEqual;
740
- function ssrLooseContain(arr, value) {
741
- return shared.looseIndexOf(arr, value) > -1;
742
- }
743
- // for <input :type="type" v-model="model" value="value">
744
- function ssrRenderDynamicModel(type, model, value) {
745
- switch (type) {
746
- case 'radio':
747
- return shared.looseEqual(model, value) ? ' checked' : '';
748
- case 'checkbox':
749
- return (shared.isArray(model) ? ssrLooseContain(model, value) : model)
750
- ? ' checked'
751
- : '';
752
- default:
753
- // text types
754
- return ssrRenderAttr('value', model);
755
- }
756
- }
757
- // for <input v-bind="obj" v-model="model">
758
- function ssrGetDynamicModelProps(existingProps = {}, model) {
759
- const { type, value } = existingProps;
760
- switch (type) {
761
- case 'radio':
762
- return shared.looseEqual(model, value) ? { checked: true } : null;
763
- case 'checkbox':
764
- return (shared.isArray(model) ? ssrLooseContain(model, value) : model)
765
- ? { checked: true }
766
- : null;
767
- default:
768
- // text types
769
- return { value: model };
770
- }
771
- }
772
-
773
- vue.initDirectivesForSSR();
814
+ Vue.initDirectivesForSSR();
774
815
 
775
816
  exports.ssrIncludeBooleanAttr = shared.includeBooleanAttr;
776
817
  exports.pipeToNodeWritable = pipeToNodeWritable;