Im trying to follow the GitHub - bpmn-io/bpmn-js-example-custom-rendering: An example of creating custom rendering for bpmn-js example.
for some reason the canRender(element) method is not called…
this is the code Im using for the customRender:
import BaseRenderer, { getRoundRectPath, is, isAny } from 'bpmn/dist/bpmn-modeler.development';
import {
  append as svgAppend,
  attr as svgAttr,
  create as svgCreate,
  remove as svgRemove
} from '../node_modules/tiny-svg/dist/index.cjs';
// Priority is set higher as 1000(=default) to make our rendercall first 
const HIGH_PRIORITY = 1500;
const TASK_BORDER_RADIUS = 2;
// Create custom renderer
// By extending BaseRenderer we make sure our renderer will be called whenever a shape or connection is to be rendered.
export default class CustomRenderer extends BaseRenderer {
  constructor(eventBus, bpmnRenderer) {
    super(eventBus, HIGH_PRIORITY);
    console.log("customrenderer available");
    this.bpmnRenderer = bpmnRenderer;
  }
  canRender(element) {
    console.log("canRender available in customrenderer");
    // only render tasks and events (ignore labels)
    return isAny(element, [ 'bpmn:Task', 'bpmn:Event' ]) && !element.labelTarget;
  }
  drawShape(parentNode, element) {
    const shape = this.bpmnRenderer.drawShape(parentNode, element);
    if (is(element, 'bpmn:Task')) {
      const rect = drawRect(parentNode, 100, 80, TASK_BORDER_RADIUS, '#52B415');
      prependTo(rect, parentNode);
      svgRemove(shape);
      return shape;
    }
    const rect = drawRect(parentNode, 30, 20, TASK_BORDER_RADIUS, '#cc0000');
    svgAttr(rect, {
      transform: 'translate(-20, -10)'
    });
    return shape;
  }
  getShapePath(shape) {
    if (is(shape, 'bpmn:Task')) {
      return getRoundRectPath(shape, TASK_BORDER_RADIUS);
    }
    return this.bpmnRenderer.getShapePath(shape);
  }
}
CustomRenderer.$inject = [ 'eventBus', 'bpmnRenderer' ];
// Helpers
// copied from https://github.com/bpmn-io/bpmn-js/blob/master/lib/draw/BpmnRenderer.js
function drawRect(parentNode, width, height, borderRadius, strokeColor) {
  const rect = svgCreate('rect');
  svgAttr(rect, {
    width: width,
    height: height,
    rx: borderRadius,
    ry: borderRadius,
    stroke: strokeColor || '#000',
    strokeWidth: 2,
    fill: '#fff'
  });
  svgAppend(parentNode, rect);
  return rect;
}
// copied from https://github.com/bpmn-io/diagram-js/blob/master/lib/core/GraphicsFactory.js
function prependTo(newNode, parentNode, siblingNode) {
  parentNode.insertBefore(newNode, siblingNode || parentNode.firstChild);
}
Did I forget something to add?



