MCPcopy
hub / github.com/vuejs/core / initVModelForSSR

Function initVModelForSSR

packages/runtime-dom/src/directives/vModel.ts:349–385  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

347// SSR vnode transforms, only used when user includes client-oriented render
348// function in SSR
349export function initVModelForSSR(): void {
350 vModelText.getSSRProps = ({ value }) => ({ value })
351
352 vModelRadio.getSSRProps = ({ value }, vnode) => {
353 if (vnode.props && looseEqual(vnode.props.value, value)) {
354 return { checked: true }
355 }
356 }
357
358 vModelCheckbox.getSSRProps = ({ value }, vnode) => {
359 if (isArray(value)) {
360 if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {
361 return { checked: true }
362 }
363 } else if (isSet(value)) {
364 if (vnode.props && value.has(vnode.props.value)) {
365 return { checked: true }
366 }
367 } else if (value) {
368 return { checked: true }
369 }
370 }
371
372 vModelDynamic.getSSRProps = (binding, vnode) => {
373 if (typeof vnode.type !== 'string') {
374 return
375 }
376 const modelToUse = resolveDynamicModel(
377 // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase
378 vnode.type.toUpperCase(),
379 vnode.props && vnode.props.type,
380 )
381 if (modelToUse.getSSRProps) {
382 return modelToUse.getSSRProps(binding, vnode)
383 }
384 }
385}
386
387export type VModelDirective =
388 | typeof vModelText

Callers 1

index.tsFile · 0.90

Calls 5

looseEqualFunction · 0.90
looseIndexOfFunction · 0.90
isSetFunction · 0.90
resolveDynamicModelFunction · 0.85
hasMethod · 0.80

Tested by

no test coverage detected