@@ -25,7 +25,6 @@ export enum IRNodeTypes {
25
25
26
26
INSERT_NODE ,
27
27
PREPEND_NODE ,
28
- CREATE_TEXT_NODE ,
29
28
CREATE_COMPONENT_NODE ,
30
29
SLOT_OUTLET_NODE ,
31
30
@@ -36,6 +35,9 @@ export enum IRNodeTypes {
36
35
FOR ,
37
36
38
37
GET_TEXT_CHILD ,
38
+
39
+ CREATE_NODES ,
40
+ SET_NODES ,
39
41
}
40
42
41
43
export interface BaseIRNode {
@@ -78,6 +80,8 @@ export interface IfIRNode extends BaseIRNode {
78
80
positive : BlockIRNode
79
81
negative ?: BlockIRNode | IfIRNode
80
82
once ?: boolean
83
+ parent ?: number
84
+ anchor ?: number
81
85
}
82
86
83
87
export interface IRFor {
@@ -95,6 +99,8 @@ export interface ForIRNode extends BaseIRNode, IRFor {
95
99
once : boolean
96
100
component : boolean
97
101
onlyChild : boolean
102
+ parent ?: number
103
+ anchor ?: number
98
104
}
99
105
100
106
export interface SetPropIRNode extends BaseIRNode {
@@ -118,12 +124,11 @@ export interface SetDynamicEventsIRNode extends BaseIRNode {
118
124
event : SimpleExpressionNode
119
125
}
120
126
121
- export interface SetTextIRNode extends BaseIRNode {
122
- type : IRNodeTypes . SET_TEXT
127
+ export interface SetNodesIRNode extends BaseIRNode {
128
+ type : IRNodeTypes . SET_NODES
123
129
element : number
124
130
values : SimpleExpressionNode [ ]
125
131
generated ?: boolean // whether this is a generated empty text node by `processTextLikeContainer`
126
- jsx ?: boolean
127
132
}
128
133
129
134
export type KeyOverride = [ find : string , replacement : string ]
@@ -160,11 +165,10 @@ export interface SetTemplateRefIRNode extends BaseIRNode {
160
165
effect : boolean
161
166
}
162
167
163
- export interface CreateTextNodeIRNode extends BaseIRNode {
164
- type : IRNodeTypes . CREATE_TEXT_NODE
168
+ export interface CreateNodesIRNode extends BaseIRNode {
169
+ type : IRNodeTypes . CREATE_NODES
165
170
id : number
166
171
values ?: SimpleExpressionNode [ ]
167
- jsx ?: boolean
168
172
}
169
173
170
174
export interface InsertNodeIRNode extends BaseIRNode {
@@ -200,6 +204,8 @@ export interface CreateComponentIRNode extends BaseIRNode {
200
204
root : boolean
201
205
once : boolean
202
206
dynamic ?: SimpleExpressionNode
207
+ parent ?: number
208
+ anchor ?: number
203
209
}
204
210
205
211
export interface DeclareOldRefIRNode extends BaseIRNode {
@@ -213,6 +219,8 @@ export interface SlotOutletIRNode extends BaseIRNode {
213
219
name : SimpleExpressionNode
214
220
props : IRProps [ ]
215
221
fallback ?: BlockIRNode
222
+ parent ?: number
223
+ anchor ?: number
216
224
}
217
225
218
226
export interface GetTextChildIRNode extends BaseIRNode {
@@ -224,12 +232,12 @@ export type IRNode = OperationNode | RootIRNode
224
232
export type OperationNode =
225
233
| SetPropIRNode
226
234
| SetDynamicPropsIRNode
227
- | SetTextIRNode
235
+ | SetNodesIRNode
228
236
| SetEventIRNode
229
237
| SetDynamicEventsIRNode
230
238
| SetHtmlIRNode
231
239
| SetTemplateRefIRNode
232
- | CreateTextNodeIRNode
240
+ | CreateNodesIRNode
233
241
| InsertNodeIRNode
234
242
| PrependNodeIRNode
235
243
| DirectiveIRNode
@@ -263,6 +271,7 @@ export interface IRDynamicInfo {
263
271
children : IRDynamicInfo [ ]
264
272
template ?: number
265
273
hasDynamicChild ?: boolean
274
+ operation ?: OperationNode
266
275
}
267
276
268
277
export interface IREffect {
@@ -290,3 +299,19 @@ export type VaporDirectiveNode = Overwrite<
290
299
arg : Exclude < DirectiveNode [ 'arg' ] , CompoundExpressionNode >
291
300
}
292
301
>
302
+
303
+ export type InsertionStateTypes =
304
+ | IfIRNode
305
+ | ForIRNode
306
+ | SlotOutletIRNode
307
+ | CreateComponentIRNode
308
+
309
+ export function isBlockOperation ( op : OperationNode ) : op is InsertionStateTypes {
310
+ const type = op . type
311
+ return (
312
+ type === IRNodeTypes . CREATE_COMPONENT_NODE ||
313
+ type === IRNodeTypes . SLOT_OUTLET_NODE ||
314
+ type === IRNodeTypes . IF ||
315
+ type === IRNodeTypes . FOR
316
+ )
317
+ }
0 commit comments