11import { MoveViewPortBehavior } from '../behaviors/move-view-port-behavior' ;
22import { SelectStepBehavior } from '../behaviors/select-step-behavior' ;
3+ import { race } from '../core/simple-event-race' ;
34import { Vector } from '../core/vector' ;
45import { Step } from '../definition' ;
56import { DesignerComponentProvider , DesignerContext , ViewPort } from '../designer-context' ;
@@ -21,12 +22,19 @@ export class Workspace implements DesignerComponentProvider {
2122 } ) ;
2223
2324 context . setProvider ( workspace ) ;
24- context . onDefinitionChanged . subscribe ( ( ) => workspace . render ( ) ) ;
2525 context . onViewPortChanged . subscribe ( vp => workspace . onViewPortChanged ( vp ) ) ;
26- context . onSelectedStepChanged . subscribe ( s => workspace . onSelectedStepChanged ( s ) ) ;
2726 context . onIsDraggingChanged . subscribe ( i => workspace . onIsDraggingChanged ( i ) ) ;
2827 context . onIsSmartEditorCollapsedChanged . subscribe ( ( ) => workspace . onIsSmartEditorCollapsedChanged ( ) ) ;
2928
29+ race ( 0 , context . onDefinitionChanged , context . onSelectedStepChanged ) . subscribe ( v => {
30+ const [ definiton , selectedStep ] = v ;
31+ if ( definiton ) {
32+ workspace . render ( ) ;
33+ } else if ( selectedStep !== undefined ) {
34+ workspace . onSelectedStepChanged ( selectedStep ) ;
35+ }
36+ } ) ;
37+
3038 view . bindMouseDown ( ( p , t , b ) => workspace . onMouseDown ( p , t , b ) ) ;
3139 view . bindTouchStart ( e => workspace . onTouchStart ( e ) ) ;
3240 view . bindWheel ( e => workspace . onWheel ( e ) ) ;
@@ -157,9 +165,10 @@ export class Workspace implements DesignerComponentProvider {
157165 }
158166 if ( step ) {
159167 this . selectedStepComponent = this . getRootComponent ( ) . findById ( step . id ) ;
160- if ( this . selectedStepComponent ) {
161- this . selectedStepComponent . setState ( StepComponentState . selected ) ;
168+ if ( ! this . selectedStepComponent ) {
169+ throw new Error ( `Cannot find a step component by id ${ step . id } ` ) ;
162170 }
171+ this . selectedStepComponent . setState ( StepComponentState . selected ) ;
163172 }
164173 }
165174
0 commit comments