@@ -117,6 +117,88 @@ export class Element implements Node {
117117 }
118118}
119119
120+ export abstract class DeferredTrigger implements Node {
121+ constructor ( public sourceSpan : ParseSourceSpan ) { }
122+
123+ visit < Result > ( visitor : Visitor < Result > ) : Result {
124+ return visitor . visitDeferredTrigger ( this ) ;
125+ }
126+ }
127+
128+ export class BoundDeferredTrigger extends DeferredTrigger {
129+ constructor ( public value : AST , sourceSpan : ParseSourceSpan ) {
130+ super ( sourceSpan ) ;
131+ }
132+ }
133+
134+ export class IdleDeferredTrigger extends DeferredTrigger { }
135+
136+ export class ImmediateDeferredTrigger extends DeferredTrigger { }
137+
138+ export class HoverDeferredTrigger extends DeferredTrigger { }
139+
140+ export class TimerDeferredTrigger extends DeferredTrigger {
141+ constructor ( public delay : number , sourceSpan : ParseSourceSpan ) {
142+ super ( sourceSpan ) ;
143+ }
144+ }
145+
146+ export class InteractionDeferredTrigger extends DeferredTrigger {
147+ constructor ( public reference : string | null , sourceSpan : ParseSourceSpan ) {
148+ super ( sourceSpan ) ;
149+ }
150+ }
151+
152+ export class ViewportDeferredTrigger extends DeferredTrigger {
153+ constructor ( public reference : string | null , sourceSpan : ParseSourceSpan ) {
154+ super ( sourceSpan ) ;
155+ }
156+ }
157+
158+ export class DeferredBlockPlaceholder implements Node {
159+ constructor (
160+ public children : Node [ ] , public minimumTime : number | null , public sourceSpan : ParseSourceSpan ,
161+ public startSourceSpan : ParseSourceSpan , public endSourceSpan : ParseSourceSpan | null ) { }
162+
163+ visit < Result > ( visitor : Visitor < Result > ) : Result {
164+ return visitor . visitDeferredBlockPlaceholder ( this ) ;
165+ }
166+ }
167+
168+ export class DeferredBlockLoading implements Node {
169+ constructor (
170+ public children : Node [ ] , public afterTime : number | null , public minimumTime : number | null ,
171+ public sourceSpan : ParseSourceSpan , public startSourceSpan : ParseSourceSpan ,
172+ public endSourceSpan : ParseSourceSpan | null ) { }
173+
174+ visit < Result > ( visitor : Visitor < Result > ) : Result {
175+ return visitor . visitDeferredBlockLoading ( this ) ;
176+ }
177+ }
178+
179+ export class DeferredBlockError implements Node {
180+ constructor (
181+ public children : Node [ ] , public sourceSpan : ParseSourceSpan ,
182+ public startSourceSpan : ParseSourceSpan , public endSourceSpan : ParseSourceSpan | null ) { }
183+
184+ visit < Result > ( visitor : Visitor < Result > ) : Result {
185+ return visitor . visitDeferredBlockError ( this ) ;
186+ }
187+ }
188+
189+ export class DeferredBlock implements Node {
190+ constructor (
191+ public children : Node [ ] , public triggers : DeferredTrigger [ ] ,
192+ public prefetchTriggers : DeferredTrigger [ ] , public placeholder : DeferredBlockPlaceholder | null ,
193+ public loading : DeferredBlockLoading | null , public error : DeferredBlockError | null ,
194+ public sourceSpan : ParseSourceSpan , public startSourceSpan : ParseSourceSpan ,
195+ public endSourceSpan : ParseSourceSpan | null ) { }
196+
197+ visit < Result > ( visitor : Visitor < Result > ) : Result {
198+ return visitor . visitDeferredBlock ( this ) ;
199+ }
200+ }
201+
120202export class Template implements Node {
121203 constructor (
122204 // tagName is the name of the container element, if applicable.
@@ -196,6 +278,11 @@ export interface Visitor<Result = any> {
196278 visitText ( text : Text ) : Result ;
197279 visitBoundText ( text : BoundText ) : Result ;
198280 visitIcu ( icu : Icu ) : Result ;
281+ visitDeferredBlock ( deferred : DeferredBlock ) : Result ;
282+ visitDeferredBlockPlaceholder ( block : DeferredBlockPlaceholder ) : Result ;
283+ visitDeferredBlockError ( block : DeferredBlockError ) : Result ;
284+ visitDeferredBlockLoading ( block : DeferredBlockLoading ) : Result ;
285+ visitDeferredTrigger ( trigger : DeferredTrigger ) : Result ;
199286}
200287
201288export class RecursiveVisitor implements Visitor < void > {
@@ -214,6 +301,23 @@ export class RecursiveVisitor implements Visitor<void> {
214301 visitAll ( this , template . references ) ;
215302 visitAll ( this , template . variables ) ;
216303 }
304+ visitDeferredBlock ( deferred : DeferredBlock ) : void {
305+ visitAll ( this , deferred . triggers ) ;
306+ visitAll ( this , deferred . prefetchTriggers ) ;
307+ visitAll ( this , deferred . children ) ;
308+ deferred . placeholder ?. visit ( this ) ;
309+ deferred . loading ?. visit ( this ) ;
310+ deferred . error ?. visit ( this ) ;
311+ }
312+ visitDeferredBlockPlaceholder ( block : DeferredBlockPlaceholder ) : void {
313+ visitAll ( this , block . children ) ;
314+ }
315+ visitDeferredBlockError ( block : DeferredBlockError ) : void {
316+ visitAll ( this , block . children ) ;
317+ }
318+ visitDeferredBlockLoading ( block : DeferredBlockLoading ) : void {
319+ visitAll ( this , block . children ) ;
320+ }
217321 visitContent ( content : Content ) : void { }
218322 visitVariable ( variable : Variable ) : void { }
219323 visitReference ( reference : Reference ) : void { }
@@ -223,6 +327,7 @@ export class RecursiveVisitor implements Visitor<void> {
223327 visitText ( text : Text ) : void { }
224328 visitBoundText ( text : BoundText ) : void { }
225329 visitIcu ( icu : Icu ) : void { }
330+ visitDeferredTrigger ( trigger : DeferredTrigger ) : void { }
226331}
227332
228333
0 commit comments