refactor(ssr): prefix ssr helpers
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { escapeHtml, toDisplayString } from '@vue/shared'
|
||||
|
||||
export function interpolate(value: unknown): string {
|
||||
export function ssrInterpolate(value: unknown): string {
|
||||
return escapeHtml(toDisplayString(value))
|
||||
}
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
|
||||
const shouldIgnoreProp = makeMap(`key,ref,innerHTML,textContent`)
|
||||
|
||||
export function renderAttrs(
|
||||
export function ssrRenderAttrs(
|
||||
props: Record<string, unknown>,
|
||||
tag?: string
|
||||
): string {
|
||||
@@ -29,18 +29,18 @@ export function renderAttrs(
|
||||
}
|
||||
const value = props[key]
|
||||
if (key === 'class') {
|
||||
ret += ` class="${renderClass(value)}"`
|
||||
ret += ` class="${ssrRenderClass(value)}"`
|
||||
} else if (key === 'style') {
|
||||
ret += ` style="${renderStyle(value)}"`
|
||||
ret += ` style="${ssrRenderStyle(value)}"`
|
||||
} else {
|
||||
ret += renderDynamicAttr(key, value, tag)
|
||||
ret += ssrRenderDynamicAttr(key, value, tag)
|
||||
}
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
// render an attr with dynamic (unknown) key.
|
||||
export function renderDynamicAttr(
|
||||
export function ssrRenderDynamicAttr(
|
||||
key: string,
|
||||
value: unknown,
|
||||
tag?: string
|
||||
@@ -63,7 +63,7 @@ export function renderDynamicAttr(
|
||||
|
||||
// Render a v-bind attr with static key. The key is pre-processed at compile
|
||||
// time and we only need to check and escape value.
|
||||
export function renderAttr(key: string, value: unknown): string {
|
||||
export function ssrRenderAttr(key: string, value: unknown): string {
|
||||
if (!isRenderableValue(value)) {
|
||||
return ``
|
||||
}
|
||||
@@ -78,11 +78,11 @@ function isRenderableValue(value: unknown): boolean {
|
||||
return type === 'string' || type === 'number' || type === 'boolean'
|
||||
}
|
||||
|
||||
export function renderClass(raw: unknown): string {
|
||||
export function ssrRenderClass(raw: unknown): string {
|
||||
return escapeHtml(normalizeClass(raw))
|
||||
}
|
||||
|
||||
export function renderStyle(raw: unknown): string {
|
||||
export function ssrRenderStyle(raw: unknown): string {
|
||||
if (!raw) {
|
||||
return ''
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { isArray, isString, isObject } from '@vue/shared'
|
||||
|
||||
export function renderList(
|
||||
export function ssrRenderList(
|
||||
source: unknown,
|
||||
renderItem: (value: unknown, key: string | number, index?: number) => void
|
||||
) {
|
||||
@@ -9,7 +9,7 @@ export type SSRSlot = (
|
||||
parentComponent: ComponentInternalInstance | null
|
||||
) => void
|
||||
|
||||
export function renderSlot(
|
||||
export function ssrRenderSlot(
|
||||
slots: Slots | SSRSlots,
|
||||
slotName: string,
|
||||
slotProps: Props,
|
||||
@@ -1,42 +1,45 @@
|
||||
import { looseEqual as _looseEqual, looseIndexOf } from '@vue/shared'
|
||||
import { renderAttr } from './renderAttrs'
|
||||
import { looseEqual, looseIndexOf } from '@vue/shared'
|
||||
import { ssrRenderAttr } from './ssrRenderAttrs'
|
||||
|
||||
export const looseEqual = _looseEqual as (a: unknown, b: unknown) => boolean
|
||||
export const ssrLooseEqual = looseEqual as (a: unknown, b: unknown) => boolean
|
||||
|
||||
export function looseContain(arr: unknown[], value: unknown): boolean {
|
||||
export function ssrLooseContain(arr: unknown[], value: unknown): boolean {
|
||||
return looseIndexOf(arr, value) > -1
|
||||
}
|
||||
|
||||
// for <input :type="type" v-model="model" value="value">
|
||||
export function renderDynamicModel(
|
||||
export function ssrRenderDynamicModel(
|
||||
type: unknown,
|
||||
model: unknown,
|
||||
value: unknown
|
||||
) {
|
||||
switch (type) {
|
||||
case 'radio':
|
||||
return _looseEqual(model, value) ? ' checked' : ''
|
||||
return looseEqual(model, value) ? ' checked' : ''
|
||||
case 'checkbox':
|
||||
return (Array.isArray(model)
|
||||
? looseContain(model, value)
|
||||
? ssrLooseContain(model, value)
|
||||
: model)
|
||||
? ' checked'
|
||||
: ''
|
||||
default:
|
||||
// text types
|
||||
return renderAttr('value', model)
|
||||
return ssrRenderAttr('value', model)
|
||||
}
|
||||
}
|
||||
|
||||
// for <input v-bind="obj" v-model="model">
|
||||
export function getDynamicModelProps(existingProps: any = {}, model: unknown) {
|
||||
export function ssrGetDynamicModelProps(
|
||||
existingProps: any = {},
|
||||
model: unknown
|
||||
) {
|
||||
const { type, value } = existingProps
|
||||
switch (type) {
|
||||
case 'radio':
|
||||
return _looseEqual(model, value) ? { checked: true } : null
|
||||
return looseEqual(model, value) ? { checked: true } : null
|
||||
case 'checkbox':
|
||||
return (Array.isArray(model)
|
||||
? looseContain(model, value)
|
||||
? ssrLooseContain(model, value)
|
||||
: model)
|
||||
? { checked: true }
|
||||
: null
|
||||
Reference in New Issue
Block a user