diff --git a/src/node/viewStateMachine.js b/src/node/viewStateMachine.js index 0da3995..b590489 100644 --- a/src/node/viewStateMachine.js +++ b/src/node/viewStateMachine.js @@ -86,15 +86,19 @@ const viewStateMachine = Machine( type: 'parallel', entry: 'positionView', on: { - DISPLAY: { - actions: [ - assign({ - pos: (context, event) => event.pos, - }), - 'positionView', - ], - cond: 'contentUnchanged', - }, + DISPLAY: [ + // Noop if nothing changed. + { cond: 'contentPosUnchanged' }, + { + actions: [ + assign({ + pos: (context, event) => event.pos, + }), + 'positionView', + ], + cond: 'contentUnchanged', + }, + ], }, states: { audio: { @@ -167,6 +171,12 @@ const viewStateMachine = Machine( contentUnchanged: (context, event) => { return isEqual(context.content, event.content) }, + contentPosUnchanged: (context, event) => { + return ( + isEqual(context.content, event.content) && + isEqual(context.pos, event.pos) + ) + }, optionsChanged: (context, event) => { return !isEqual(context.options, event.options) },