@@ -2,24 +2,31 @@ import { DefinitionWalker, Step } from '../definition';
2
2
import { SimpleEvent , race } from '../core' ;
3
3
import { DefinitionChangedEvent , DesignerState } from '../designer-state' ;
4
4
import { DefinitionChangeType } from '../designer-configuration' ;
5
+ import { SelectedStepIdProvider } from './editor-api' ;
5
6
6
7
export type EditorRendererHandler = ( step : Step | null ) => void ;
7
8
8
9
type RaceEventArgs = [ ( DefinitionChangedEvent | undefined ) ?, ( string | null | undefined ) ?, ( boolean | undefined ) ?] ;
9
10
10
11
export class EditorRenderer {
11
- public static create ( state : DesignerState , definitionWalker : DefinitionWalker , handler : EditorRendererHandler ) : EditorRenderer {
12
- const raceEvent = race ( 0 , state . onDefinitionChanged , state . onSelectedStepIdChanged , state . onIsReadonlyChanged ) ;
13
- const listener = new EditorRenderer ( state , definitionWalker , handler , raceEvent ) ;
12
+ public static create (
13
+ state : DesignerState ,
14
+ selectedStepIdProvider : SelectedStepIdProvider ,
15
+ definitionWalker : DefinitionWalker ,
16
+ handler : EditorRendererHandler
17
+ ) : EditorRenderer {
18
+ const raceEvent = race ( 0 , state . onDefinitionChanged , selectedStepIdProvider . onSelectedStepIdChanged , state . onIsReadonlyChanged ) ;
19
+ const listener = new EditorRenderer ( state , selectedStepIdProvider , definitionWalker , handler , raceEvent ) ;
14
20
raceEvent . subscribe ( listener . raceEventHandler ) ;
15
- listener . renderIfStepChanged ( state . selectedStepId ) ;
21
+ listener . renderIfStepChanged ( selectedStepIdProvider . selectedStepId ) ;
16
22
return listener ;
17
23
}
18
24
19
25
private currentStepId : string | null | undefined = undefined ;
20
26
21
27
private constructor (
22
28
private readonly state : DesignerState ,
29
+ private readonly selectedStepIdProvider : SelectedStepIdProvider ,
23
30
private readonly definitionWalker : DefinitionWalker ,
24
31
private readonly handler : EditorRendererHandler ,
25
32
private readonly raceEvent : SimpleEvent < RaceEventArgs >
@@ -43,12 +50,12 @@ export class EditorRenderer {
43
50
44
51
private readonly raceEventHandler = ( [ definitionChanged , selectedStepId , isReadonlyChanged ] : RaceEventArgs ) => {
45
52
if ( isReadonlyChanged !== undefined ) {
46
- this . render ( this . state . selectedStepId ) ;
53
+ this . render ( this . selectedStepIdProvider . selectedStepId ) ;
47
54
} else if ( definitionChanged ) {
48
55
if ( definitionChanged . changeType === DefinitionChangeType . rootReplaced ) {
49
- this . render ( this . state . selectedStepId ) ;
56
+ this . render ( this . selectedStepIdProvider . selectedStepId ) ;
50
57
} else {
51
- this . renderIfStepChanged ( this . state . selectedStepId ) ;
58
+ this . renderIfStepChanged ( this . selectedStepIdProvider . selectedStepId ) ;
52
59
}
53
60
} else if ( selectedStepId !== undefined ) {
54
61
this . renderIfStepChanged ( selectedStepId ) ;
0 commit comments