diff --git a/lib/align-to-origin.js b/lib/align-to-origin.js index 0d212e9..bd716c0 100644 --- a/lib/align-to-origin.js +++ b/lib/align-to-origin.js @@ -89,6 +89,10 @@ export default function AlignToOrigin(config, injector, eventBus, commandStack, var elements = canvas.getRootElement().children; + if (!elements.length) { + return; + } + var delta = computeAdjustment(bounds, config); if (delta.x === 0 && delta.y === 0) { diff --git a/test/spec/AlignToOrigin.event.bpmn b/test/spec/AlignToOrigin.event.bpmn new file mode 100644 index 0000000..6276a74 --- /dev/null +++ b/test/spec/AlignToOrigin.event.bpmn @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/test/spec/AlignToOrigin.spec.js b/test/spec/AlignToOrigin.spec.js index 4f85810..854a5bd 100644 --- a/test/spec/AlignToOrigin.spec.js +++ b/test/spec/AlignToOrigin.spec.js @@ -160,4 +160,34 @@ describe('alignToOrigin', function() { }); + + it('should handle last element removal', async function() { + + // given + var diagramXML = require('./AlignToOrigin.event.bpmn'); + + var modeler = new BpmnModeler({ + container: 'body', + additionalModules: [ + AlignToOriginModule + ] + }); + + await modeler.importXML(diagramXML); + + var elementRegistry = modeler.get('elementRegistry'); + var modeling = modeler.get('modeling'); + var commandStack = modeler.get('commandStack'); + + // when + modeling.removeElements([ + elementRegistry.get('Event') + ]); + + commandStack.undo(); + + // then + expect(elementRegistry.get('Event')).to.exist; + }); + }); \ No newline at end of file