diff --git a/lib/draw/BpmnRenderer.js b/lib/draw/BpmnRenderer.js index ce652332..ee9bb649 100644 --- a/lib/draw/BpmnRenderer.js +++ b/lib/draw/BpmnRenderer.js @@ -382,16 +382,16 @@ export default function BpmnRenderer( return drawPath(parentGfx, path, assign({ 'data-marker': type }, attrs)); } - function as(type) { - return function(parentGfx, element) { - return handlers[type](parentGfx, element); - }; - } - function renderer(type) { return handlers[type]; } + function as(type) { + return function(parentGfx, element) { + return renderer(type)(parentGfx, element); + }; + } + function renderEventContent(element, parentGfx) { var event = getSemantic(element); @@ -1872,6 +1872,7 @@ export default function BpmnRenderer( // extension API, use at your own risk this._drawPath = drawPath; + this._renderer = renderer; } @@ -1893,7 +1894,7 @@ BpmnRenderer.prototype.canRender = function(element) { BpmnRenderer.prototype.drawShape = function(parentGfx, element) { var type = element.type; - var h = this.handlers[type]; + var h = this._renderer(type); /* jshint -W040 */ return h(parentGfx, element); @@ -1901,7 +1902,7 @@ BpmnRenderer.prototype.drawShape = function(parentGfx, element) { BpmnRenderer.prototype.drawConnection = function(parentGfx, element) { var type = element.type; - var h = this.handlers[type]; + var h = this._renderer(type); /* jshint -W040 */ return h(parentGfx, element); diff --git a/test/spec/draw/BpmnRendererSpec.js b/test/spec/draw/BpmnRendererSpec.js index 36872c38..e6548dbc 100644 --- a/test/spec/draw/BpmnRendererSpec.js +++ b/test/spec/draw/BpmnRendererSpec.js @@ -671,8 +671,13 @@ describe('draw - bpmn renderer', function() { it('should expose helpers', inject(function(bpmnRenderer) { // then - expect(bpmnRenderer._drawPath).to.be.a('function'); + // unsafe to use render APIs + expect(bpmnRenderer._drawPath).to.be.a('function'); + expect(bpmnRenderer._renderer).to.be.a('function'); + + // very unsafe to use internal state + expect(bpmnRenderer.handlers).to.exist; })); });