wip(ssr): handle <textarea> with dynamic key v-bind

This commit is contained in:
Evan You
2020-02-04 22:49:47 -05:00
parent 1958314976
commit 8da6df7235
9 changed files with 239 additions and 13 deletions

View File

@@ -50,7 +50,8 @@ export const enum NodeTypes {
// ssr codegen
JS_BLOCK_STATEMENT,
JS_TEMPLATE_LITERAL,
JS_IF_STATEMENT
JS_IF_STATEMENT,
JS_ASSIGNMENT_EXPRESSION
}
export const enum ElementTypes {
@@ -102,8 +103,9 @@ export interface RootNode extends Node {
hoists: JSChildNode[]
imports: ImportItem[]
cached: number
codegenNode?: TemplateChildNode | JSChildNode | BlockStatement | undefined
temps: number
ssrHelpers?: symbol[]
codegenNode?: TemplateChildNode | JSChildNode | BlockStatement | undefined
}
export type ElementNode =
@@ -255,6 +257,7 @@ export type JSChildNode =
| ConditionalExpression
| SequenceExpression
| CacheExpression
| AssignmentExpression
export interface CallExpression extends Node {
type: NodeTypes.JS_CALL_EXPRESSION
@@ -335,6 +338,12 @@ export interface IfStatement extends Node {
alternate: IfStatement | BlockStatement | undefined
}
export interface AssignmentExpression extends Node {
type: NodeTypes.JS_ASSIGNMENT_EXPRESSION
left: SimpleExpressionNode
right: JSChildNode
}
// Codegen Node Types ----------------------------------------------------------
// createVNode(...)
@@ -709,3 +718,15 @@ export function createIfStatement(
loc: locStub
}
}
export function createAssignmentExpression(
left: AssignmentExpression['left'],
right: AssignmentExpression['right']
): AssignmentExpression {
return {
type: NodeTypes.JS_ASSIGNMENT_EXPRESSION,
left,
right,
loc: locStub
}
}