bpmn-js 9.0.0-subprocesses.2 → 9.0.0-subprocesses.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * bpmn-js - bpmn-navigated-viewer v9.0.0-subprocesses.2
2
+ * bpmn-js - bpmn-navigated-viewer v9.0.0-subprocesses.3
3
3
  *
4
4
  * Copyright (c) 2014-present, camunda Services GmbH
5
5
  *
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * Source Code: https://github.com/bpmn-io/bpmn-js
10
10
  *
11
- * Date: 2021-11-05
11
+ * Date: 2021-11-19
12
12
  */
13
13
  (function (global, factory) {
14
14
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -2531,8 +2531,8 @@
2531
2531
  }
2532
2532
 
2533
2533
  function as(type) {
2534
- return function(parentGfx, element, attrs) {
2535
- return handlers[type](parentGfx, element, attrs);
2534
+ return function(parentGfx, element) {
2535
+ return handlers[type](parentGfx, element);
2536
2536
  };
2537
2537
  }
2538
2538
 
@@ -2540,58 +2540,58 @@
2540
2540
  return handlers[type];
2541
2541
  }
2542
2542
 
2543
- function renderEventContent(element, parentGfx, attrs) {
2543
+ function renderEventContent(element, parentGfx) {
2544
2544
 
2545
2545
  var event = getSemantic(element);
2546
2546
  var isThrowing = isThrowEvent(event);
2547
2547
 
2548
2548
  if (event.eventDefinitions && event.eventDefinitions.length>1) {
2549
2549
  if (event.parallelMultiple) {
2550
- return renderer('bpmn:ParallelMultipleEventDefinition')(parentGfx, element, attrs, isThrowing);
2550
+ return renderer('bpmn:ParallelMultipleEventDefinition')(parentGfx, element, isThrowing);
2551
2551
  }
2552
2552
  else {
2553
- return renderer('bpmn:MultipleEventDefinition')(parentGfx, element, attrs, isThrowing);
2553
+ return renderer('bpmn:MultipleEventDefinition')(parentGfx, element, isThrowing);
2554
2554
  }
2555
2555
  }
2556
2556
 
2557
2557
  if (isTypedEvent(event, 'bpmn:MessageEventDefinition')) {
2558
- return renderer('bpmn:MessageEventDefinition')(parentGfx, element, attrs, isThrowing);
2558
+ return renderer('bpmn:MessageEventDefinition')(parentGfx, element, isThrowing);
2559
2559
  }
2560
2560
 
2561
2561
  if (isTypedEvent(event, 'bpmn:TimerEventDefinition')) {
2562
- return renderer('bpmn:TimerEventDefinition')(parentGfx, element, attrs, isThrowing);
2562
+ return renderer('bpmn:TimerEventDefinition')(parentGfx, element, isThrowing);
2563
2563
  }
2564
2564
 
2565
2565
  if (isTypedEvent(event, 'bpmn:ConditionalEventDefinition')) {
2566
- return renderer('bpmn:ConditionalEventDefinition')(parentGfx, element, attrs);
2566
+ return renderer('bpmn:ConditionalEventDefinition')(parentGfx, element);
2567
2567
  }
2568
2568
 
2569
2569
  if (isTypedEvent(event, 'bpmn:SignalEventDefinition')) {
2570
- return renderer('bpmn:SignalEventDefinition')(parentGfx, element, attrs, isThrowing);
2570
+ return renderer('bpmn:SignalEventDefinition')(parentGfx, element, isThrowing);
2571
2571
  }
2572
2572
 
2573
2573
  if (isTypedEvent(event, 'bpmn:EscalationEventDefinition')) {
2574
- return renderer('bpmn:EscalationEventDefinition')(parentGfx, element, attrs, isThrowing);
2574
+ return renderer('bpmn:EscalationEventDefinition')(parentGfx, element, isThrowing);
2575
2575
  }
2576
2576
 
2577
2577
  if (isTypedEvent(event, 'bpmn:LinkEventDefinition')) {
2578
- return renderer('bpmn:LinkEventDefinition')(parentGfx, element, attrs, isThrowing);
2578
+ return renderer('bpmn:LinkEventDefinition')(parentGfx, element, isThrowing);
2579
2579
  }
2580
2580
 
2581
2581
  if (isTypedEvent(event, 'bpmn:ErrorEventDefinition')) {
2582
- return renderer('bpmn:ErrorEventDefinition')(parentGfx, element, attrs, isThrowing);
2582
+ return renderer('bpmn:ErrorEventDefinition')(parentGfx, element, isThrowing);
2583
2583
  }
2584
2584
 
2585
2585
  if (isTypedEvent(event, 'bpmn:CancelEventDefinition')) {
2586
- return renderer('bpmn:CancelEventDefinition')(parentGfx, element, attrs, isThrowing);
2586
+ return renderer('bpmn:CancelEventDefinition')(parentGfx, element, isThrowing);
2587
2587
  }
2588
2588
 
2589
2589
  if (isTypedEvent(event, 'bpmn:CompensateEventDefinition')) {
2590
- return renderer('bpmn:CompensateEventDefinition')(parentGfx, element, attrs, isThrowing);
2590
+ return renderer('bpmn:CompensateEventDefinition')(parentGfx, element, isThrowing);
2591
2591
  }
2592
2592
 
2593
2593
  if (isTypedEvent(event, 'bpmn:TerminateEventDefinition')) {
2594
- return renderer('bpmn:TerminateEventDefinition')(parentGfx, element, attrs, isThrowing);
2594
+ return renderer('bpmn:TerminateEventDefinition')(parentGfx, element, isThrowing);
2595
2595
  }
2596
2596
 
2597
2597
  return null;
@@ -2614,20 +2614,20 @@
2614
2614
  return text;
2615
2615
  }
2616
2616
 
2617
- function renderEmbeddedLabel(parentGfx, element, align, attrs) {
2617
+ function renderEmbeddedLabel(parentGfx, element, align) {
2618
2618
  var semantic = getSemantic(element);
2619
2619
 
2620
2620
  return renderLabel(parentGfx, semantic.name, {
2621
2621
  box: element,
2622
2622
  align: align,
2623
2623
  padding: 5,
2624
- style: assign({
2624
+ style: {
2625
2625
  fill: getLabelColor(element, defaultLabelColor, defaultStrokeColor)
2626
- }, attrs)
2626
+ }
2627
2627
  });
2628
2628
  }
2629
2629
 
2630
- function renderExternalLabel(parentGfx, element, attrs) {
2630
+ function renderExternalLabel(parentGfx, element) {
2631
2631
 
2632
2632
  var box = {
2633
2633
  width: 90,
@@ -2644,22 +2644,21 @@
2644
2644
  textRenderer.getExternalStyle(),
2645
2645
  {
2646
2646
  fill: getLabelColor(element, defaultLabelColor, defaultStrokeColor)
2647
- },
2648
- attrs
2647
+ }
2649
2648
  )
2650
2649
  });
2651
2650
  }
2652
2651
 
2653
- function renderLaneLabel(parentGfx, text, element, attrs) {
2652
+ function renderLaneLabel(parentGfx, text, element) {
2654
2653
  var textBox = renderLabel(parentGfx, text, {
2655
2654
  box: {
2656
2655
  height: 30,
2657
2656
  width: element.height
2658
2657
  },
2659
2658
  align: 'center-middle',
2660
- style: assign({
2659
+ style: {
2661
2660
  fill: getLabelColor(element, defaultLabelColor, defaultStrokeColor)
2662
- }, attrs)
2661
+ }
2663
2662
  });
2664
2663
 
2665
2664
  var top = -1 * element.height;
@@ -2686,11 +2685,11 @@
2686
2685
 
2687
2686
  return drawCircle(parentGfx, element.width, element.height, attrs);
2688
2687
  },
2689
- 'bpmn:StartEvent': function(parentGfx, element, attrs) {
2690
- attrs = assign({
2688
+ 'bpmn:StartEvent': function(parentGfx, element) {
2689
+ var attrs = {
2691
2690
  fill: getFillColor(element, defaultFillColor),
2692
2691
  stroke: getStrokeColor(element, defaultStrokeColor)
2693
- }, attrs);
2692
+ };
2694
2693
 
2695
2694
  var semantic = getSemantic(element);
2696
2695
 
@@ -2709,7 +2708,7 @@
2709
2708
 
2710
2709
  return circle;
2711
2710
  },
2712
- 'bpmn:MessageEventDefinition': function(parentGfx, element, attrs, isThrowing) {
2711
+ 'bpmn:MessageEventDefinition': function(parentGfx, element, isThrowing) {
2713
2712
  var pathData = pathMap.getScaledPath('EVENT_MESSAGE', {
2714
2713
  xScaleFactor: 0.9,
2715
2714
  yScaleFactor: 0.9,
@@ -2724,24 +2723,20 @@
2724
2723
  var fill = isThrowing ? getStrokeColor(element, defaultStrokeColor) : getFillColor(element, defaultFillColor);
2725
2724
  var stroke = isThrowing ? getFillColor(element, defaultFillColor) : getStrokeColor(element, defaultStrokeColor);
2726
2725
 
2727
- attrs = assign({
2726
+ var messagePath = drawPath(parentGfx, pathData, {
2728
2727
  strokeWidth: 1,
2729
2728
  fill: fill,
2730
2729
  stroke: stroke
2731
- }, attrs);
2732
-
2733
- var messagePath = drawPath(parentGfx, pathData, attrs);
2730
+ });
2734
2731
 
2735
2732
  return messagePath;
2736
2733
  },
2737
- 'bpmn:TimerEventDefinition': function(parentGfx, element, attrs) {
2738
- var outerAttrs = assign({
2734
+ 'bpmn:TimerEventDefinition': function(parentGfx, element) {
2735
+ var circle = drawCircle(parentGfx, element.width, element.height, 0.2 * element.height, {
2739
2736
  strokeWidth: 2,
2740
2737
  fill: getFillColor(element, defaultFillColor),
2741
2738
  stroke: getStrokeColor(element, defaultStrokeColor)
2742
- }, attrs);
2743
-
2744
- var circle = drawCircle(parentGfx, element.width, element.height, 0.2 * element.height, outerAttrs);
2739
+ });
2745
2740
 
2746
2741
  var pathData = pathMap.getScaledPath('EVENT_TIMER_WH', {
2747
2742
  xScaleFactor: 0.75,
@@ -2754,13 +2749,11 @@
2754
2749
  }
2755
2750
  });
2756
2751
 
2757
- var innerAttrs = assign({
2752
+ drawPath(parentGfx, pathData, {
2758
2753
  strokeWidth: 2,
2759
2754
  strokeLinecap: 'square',
2760
2755
  stroke: getStrokeColor(element, defaultStrokeColor)
2761
- }, attrs);
2762
-
2763
- drawPath(parentGfx, pathData, innerAttrs);
2756
+ });
2764
2757
 
2765
2758
  for (var i = 0;i < 12; i++) {
2766
2759
 
@@ -2778,25 +2771,17 @@
2778
2771
  var width = element.width / 2;
2779
2772
  var height = element.height / 2;
2780
2773
 
2781
- var lineAttrs = assign({
2774
+ drawPath(parentGfx, linePathData, {
2782
2775
  strokeWidth: 1,
2783
2776
  strokeLinecap: 'square',
2784
2777
  transform: 'rotate(' + (i * 30) + ',' + height + ',' + width + ')',
2785
2778
  stroke: getStrokeColor(element, defaultStrokeColor)
2786
- }, attrs);
2787
-
2788
- drawPath(parentGfx, linePathData, lineAttrs);
2779
+ });
2789
2780
  }
2790
2781
 
2791
2782
  return circle;
2792
2783
  },
2793
- 'bpmn:EscalationEventDefinition': function(parentGfx, event, attrs, isThrowing) {
2794
- attrs = assign({
2795
- strokeWidth: 1,
2796
- fill: fill,
2797
- stroke: getStrokeColor(event, defaultStrokeColor)
2798
- }, attrs);
2799
-
2784
+ 'bpmn:EscalationEventDefinition': function(parentGfx, event, isThrowing) {
2800
2785
  var pathData = pathMap.getScaledPath('EVENT_ESCALATION', {
2801
2786
  xScaleFactor: 1,
2802
2787
  yScaleFactor: 1,
@@ -2810,14 +2795,13 @@
2810
2795
 
2811
2796
  var fill = isThrowing ? getStrokeColor(event, defaultStrokeColor) : 'none';
2812
2797
 
2813
- return drawPath(parentGfx, pathData, attrs);
2814
- },
2815
- 'bpmn:ConditionalEventDefinition': function(parentGfx, event, attrs) {
2816
- attrs = assign({
2798
+ return drawPath(parentGfx, pathData, {
2817
2799
  strokeWidth: 1,
2800
+ fill: fill,
2818
2801
  stroke: getStrokeColor(event, defaultStrokeColor)
2819
- }, attrs);
2820
-
2802
+ });
2803
+ },
2804
+ 'bpmn:ConditionalEventDefinition': function(parentGfx, event) {
2821
2805
  var pathData = pathMap.getScaledPath('EVENT_CONDITIONAL', {
2822
2806
  xScaleFactor: 1,
2823
2807
  yScaleFactor: 1,
@@ -2829,9 +2813,12 @@
2829
2813
  }
2830
2814
  });
2831
2815
 
2832
- return drawPath(parentGfx, pathData, attrs);
2816
+ return drawPath(parentGfx, pathData, {
2817
+ strokeWidth: 1,
2818
+ stroke: getStrokeColor(event, defaultStrokeColor)
2819
+ });
2833
2820
  },
2834
- 'bpmn:LinkEventDefinition': function(parentGfx, event, attrs, isThrowing) {
2821
+ 'bpmn:LinkEventDefinition': function(parentGfx, event, isThrowing) {
2835
2822
  var pathData = pathMap.getScaledPath('EVENT_LINK', {
2836
2823
  xScaleFactor: 1,
2837
2824
  yScaleFactor: 1,
@@ -2845,15 +2832,13 @@
2845
2832
 
2846
2833
  var fill = isThrowing ? getStrokeColor(event, defaultStrokeColor) : 'none';
2847
2834
 
2848
- attrs = assign({
2835
+ return drawPath(parentGfx, pathData, {
2849
2836
  strokeWidth: 1,
2850
2837
  fill: fill,
2851
2838
  stroke: getStrokeColor(event, defaultStrokeColor)
2852
- }, attrs);
2853
-
2854
- return drawPath(parentGfx, pathData, attrs);
2839
+ });
2855
2840
  },
2856
- 'bpmn:ErrorEventDefinition': function(parentGfx, event, attrs, isThrowing) {
2841
+ 'bpmn:ErrorEventDefinition': function(parentGfx, event, isThrowing) {
2857
2842
  var pathData = pathMap.getScaledPath('EVENT_ERROR', {
2858
2843
  xScaleFactor: 1.1,
2859
2844
  yScaleFactor: 1.1,
@@ -2867,15 +2852,13 @@
2867
2852
 
2868
2853
  var fill = isThrowing ? getStrokeColor(event, defaultStrokeColor) : 'none';
2869
2854
 
2870
- attrs = assign({
2855
+ return drawPath(parentGfx, pathData, {
2871
2856
  strokeWidth: 1,
2872
2857
  fill: fill,
2873
2858
  stroke: getStrokeColor(event, defaultStrokeColor)
2874
- }, attrs);
2875
-
2876
- return drawPath(parentGfx, pathData, attrs);
2859
+ });
2877
2860
  },
2878
- 'bpmn:CancelEventDefinition': function(parentGfx, event, attrs, isThrowing) {
2861
+ 'bpmn:CancelEventDefinition': function(parentGfx, event, isThrowing) {
2879
2862
  var pathData = pathMap.getScaledPath('EVENT_CANCEL_45', {
2880
2863
  xScaleFactor: 1.0,
2881
2864
  yScaleFactor: 1.0,
@@ -2889,19 +2872,17 @@
2889
2872
 
2890
2873
  var fill = isThrowing ? getStrokeColor(event, defaultStrokeColor) : 'none';
2891
2874
 
2892
- attrs = assign({
2875
+ var path = drawPath(parentGfx, pathData, {
2893
2876
  strokeWidth: 1,
2894
2877
  fill: fill,
2895
2878
  stroke: getStrokeColor(event, defaultStrokeColor)
2896
- }, attrs);
2897
-
2898
- var path = drawPath(parentGfx, pathData, attrs);
2879
+ });
2899
2880
 
2900
2881
  rotate(path, 45);
2901
2882
 
2902
2883
  return path;
2903
2884
  },
2904
- 'bpmn:CompensateEventDefinition': function(parentGfx, event, attrs, isThrowing) {
2885
+ 'bpmn:CompensateEventDefinition': function(parentGfx, event, isThrowing) {
2905
2886
  var pathData = pathMap.getScaledPath('EVENT_COMPENSATION', {
2906
2887
  xScaleFactor: 1,
2907
2888
  yScaleFactor: 1,
@@ -2915,15 +2896,13 @@
2915
2896
 
2916
2897
  var fill = isThrowing ? getStrokeColor(event, defaultStrokeColor) : 'none';
2917
2898
 
2918
- attrs = assign({
2899
+ return drawPath(parentGfx, pathData, {
2919
2900
  strokeWidth: 1,
2920
2901
  fill: fill,
2921
2902
  stroke: getStrokeColor(event, defaultStrokeColor)
2922
- }, attrs);
2923
-
2924
- return drawPath(parentGfx, pathData, attrs);
2903
+ });
2925
2904
  },
2926
- 'bpmn:SignalEventDefinition': function(parentGfx, event, attrs, isThrowing) {
2905
+ 'bpmn:SignalEventDefinition': function(parentGfx, event, isThrowing) {
2927
2906
  var pathData = pathMap.getScaledPath('EVENT_SIGNAL', {
2928
2907
  xScaleFactor: 0.9,
2929
2908
  yScaleFactor: 0.9,
@@ -2937,15 +2916,13 @@
2937
2916
 
2938
2917
  var fill = isThrowing ? getStrokeColor(event, defaultStrokeColor) : 'none';
2939
2918
 
2940
- attrs = assign({
2919
+ return drawPath(parentGfx, pathData, {
2941
2920
  strokeWidth: 1,
2942
2921
  fill: fill,
2943
2922
  stroke: getStrokeColor(event, defaultStrokeColor)
2944
- }, attrs);
2945
-
2946
- return drawPath(parentGfx, pathData, attrs);
2923
+ });
2947
2924
  },
2948
- 'bpmn:MultipleEventDefinition': function(parentGfx, event, attrs, isThrowing) {
2925
+ 'bpmn:MultipleEventDefinition': function(parentGfx, event, isThrowing) {
2949
2926
  var pathData = pathMap.getScaledPath('EVENT_MULTIPLE', {
2950
2927
  xScaleFactor: 1.1,
2951
2928
  yScaleFactor: 1.1,
@@ -2959,14 +2936,12 @@
2959
2936
 
2960
2937
  var fill = isThrowing ? getStrokeColor(event, defaultStrokeColor) : 'none';
2961
2938
 
2962
- attrs = assign({
2939
+ return drawPath(parentGfx, pathData, {
2963
2940
  strokeWidth: 1,
2964
2941
  fill: fill
2965
- }, attrs);
2966
-
2967
- return drawPath(parentGfx, pathData, attrs);
2942
+ });
2968
2943
  },
2969
- 'bpmn:ParallelMultipleEventDefinition': function(parentGfx, event, attrs) {
2944
+ 'bpmn:ParallelMultipleEventDefinition': function(parentGfx, event) {
2970
2945
  var pathData = pathMap.getScaledPath('EVENT_PARALLEL_MULTIPLE', {
2971
2946
  xScaleFactor: 1.2,
2972
2947
  yScaleFactor: 1.2,
@@ -2978,54 +2953,47 @@
2978
2953
  }
2979
2954
  });
2980
2955
 
2981
- attrs = assign({
2956
+ return drawPath(parentGfx, pathData, {
2982
2957
  strokeWidth: 1,
2983
2958
  fill: getStrokeColor(event, defaultStrokeColor),
2984
2959
  stroke: getStrokeColor(event, defaultStrokeColor)
2985
- }, attrs);
2986
-
2987
-
2988
- return drawPath(parentGfx, pathData, attrs);
2960
+ });
2989
2961
  },
2990
- 'bpmn:EndEvent': function(parentGfx, element, attrs) {
2991
- var outerAttrs = assign({
2962
+ 'bpmn:EndEvent': function(parentGfx, element) {
2963
+ var circle = renderer('bpmn:Event')(parentGfx, element, {
2992
2964
  strokeWidth: 4,
2993
2965
  fill: getFillColor(element, defaultFillColor),
2994
- stroke: getStrokeColor(element, defaultStrokeColor),
2995
- }, attrs);
2996
-
2997
- var circle = renderer('bpmn:Event')(parentGfx, element, outerAttrs);
2966
+ stroke: getStrokeColor(element, defaultStrokeColor)
2967
+ });
2998
2968
 
2999
- renderEventContent(element, parentGfx, attrs);
2969
+ renderEventContent(element, parentGfx);
3000
2970
 
3001
2971
  return circle;
3002
2972
  },
3003
- 'bpmn:TerminateEventDefinition': function(parentGfx, element, attrs) {
3004
- attrs = assign({
3005
- fill: getFillColor(element, defaultFillColor),
3006
- stroke: getStrokeColor(element, defaultStrokeColor),
3007
- strokeWidth: 4
3008
- }, attrs);
3009
-
3010
- var circle = drawCircle(parentGfx, element.width, element.height, 8, attrs);
2973
+ 'bpmn:TerminateEventDefinition': function(parentGfx, element) {
2974
+ var circle = drawCircle(parentGfx, element.width, element.height, 8, {
2975
+ strokeWidth: 4,
2976
+ fill: getStrokeColor(element, defaultStrokeColor),
2977
+ stroke: getStrokeColor(element, defaultStrokeColor)
2978
+ });
3011
2979
 
3012
2980
  return circle;
3013
2981
  },
3014
- 'bpmn:IntermediateEvent': function(parentGfx, element, attrs) {
3015
- var outerAttrs = assign({
2982
+ 'bpmn:IntermediateEvent': function(parentGfx, element) {
2983
+ var outer = renderer('bpmn:Event')(parentGfx, element, {
3016
2984
  strokeWidth: 1,
3017
2985
  fill: getFillColor(element, defaultFillColor),
3018
2986
  stroke: getStrokeColor(element, defaultStrokeColor)
3019
- }, attrs);
3020
-
3021
- var outer = renderer('bpmn:Event')(parentGfx, element, outerAttrs);
2987
+ });
3022
2988
 
3023
2989
  /* inner */
3024
- drawCircle(parentGfx, element.width, element.height, INNER_OUTER_DIST, assign({}, outerAttrs, {
2990
+ drawCircle(parentGfx, element.width, element.height, INNER_OUTER_DIST, {
2991
+ strokeWidth: 1,
3025
2992
  fill: getFillColor(element, 'none'),
3026
- }));
2993
+ stroke: getStrokeColor(element, defaultStrokeColor)
2994
+ });
3027
2995
 
3028
- renderEventContent(element, parentGfx, attrs);
2996
+ renderEventContent(element, parentGfx);
3029
2997
 
3030
2998
  return outer;
3031
2999
  },
@@ -3043,21 +3011,21 @@
3043
3011
  return drawRect(parentGfx, element.width, element.height, TASK_BORDER_RADIUS, attrs);
3044
3012
  },
3045
3013
 
3046
- 'bpmn:Task': function(parentGfx, element, attrs) {
3047
- attrs = assign({
3014
+ 'bpmn:Task': function(parentGfx, element) {
3015
+ var attrs = {
3048
3016
  fill: getFillColor(element, defaultFillColor),
3049
3017
  stroke: getStrokeColor(element, defaultStrokeColor)
3050
- }, attrs);
3018
+ };
3051
3019
 
3052
3020
  var rect = renderer('bpmn:Activity')(parentGfx, element, attrs);
3053
3021
 
3054
3022
  renderEmbeddedLabel(parentGfx, element, 'center-middle');
3055
- attachTaskMarkers(parentGfx, element, attrs);
3023
+ attachTaskMarkers(parentGfx, element);
3056
3024
 
3057
3025
  return rect;
3058
3026
  },
3059
- 'bpmn:ServiceTask': function(parentGfx, element, attrs) {
3060
- var task = renderer('bpmn:Task')(parentGfx, element, attrs);
3027
+ 'bpmn:ServiceTask': function(parentGfx, element) {
3028
+ var task = renderer('bpmn:Task')(parentGfx, element);
3061
3029
 
3062
3030
  var pathDataBG = pathMap.getScaledPath('TASK_TYPE_SERVICE', {
3063
3031
  abspos: {
@@ -3066,12 +3034,11 @@
3066
3034
  }
3067
3035
  });
3068
3036
 
3069
- var serviceAttrs = assign({
3037
+ /* service bg */ drawPath(parentGfx, pathDataBG, {
3070
3038
  strokeWidth: 1,
3071
3039
  fill: getFillColor(element, defaultFillColor),
3072
3040
  stroke: getStrokeColor(element, defaultStrokeColor)
3073
- }, attrs);
3074
- /* service bg */ drawPath(parentGfx, pathDataBG, serviceAttrs);
3041
+ });
3075
3042
 
3076
3043
  var fillPathData = pathMap.getScaledPath('TASK_TYPE_SERVICE_FILL', {
3077
3044
  abspos: {
@@ -3080,11 +3047,10 @@
3080
3047
  }
3081
3048
  });
3082
3049
 
3083
- var fillAttrs = assign({
3050
+ /* service fill */ drawPath(parentGfx, fillPathData, {
3084
3051
  strokeWidth: 0,
3085
3052
  fill: getFillColor(element, defaultFillColor)
3086
- }, attrs);
3087
- /* service fill */ drawPath(parentGfx, fillPathData, fillAttrs);
3053
+ });
3088
3054
 
3089
3055
  var pathData = pathMap.getScaledPath('TASK_TYPE_SERVICE', {
3090
3056
  abspos: {
@@ -3093,12 +3059,16 @@
3093
3059
  }
3094
3060
  });
3095
3061
 
3096
- /* service */ drawPath(parentGfx, pathData, serviceAttrs);
3062
+ /* service */ drawPath(parentGfx, pathData, {
3063
+ strokeWidth: 1,
3064
+ fill: getFillColor(element, defaultFillColor),
3065
+ stroke: getStrokeColor(element, defaultStrokeColor)
3066
+ });
3097
3067
 
3098
3068
  return task;
3099
3069
  },
3100
- 'bpmn:UserTask': function(parentGfx, element, attrs) {
3101
- var task = renderer('bpmn:Task')(parentGfx, element, attrs);
3070
+ 'bpmn:UserTask': function(parentGfx, element) {
3071
+ var task = renderer('bpmn:Task')(parentGfx, element);
3102
3072
 
3103
3073
  var x = 15;
3104
3074
  var y = 12;
@@ -3110,12 +3080,11 @@
3110
3080
  }
3111
3081
  });
3112
3082
 
3113
- var userAttrs = assign({
3083
+ /* user path */ drawPath(parentGfx, pathData, {
3114
3084
  strokeWidth: 0.5,
3115
3085
  fill: getFillColor(element, defaultFillColor),
3116
3086
  stroke: getStrokeColor(element, defaultStrokeColor)
3117
- }, attrs);
3118
- /* user path */ drawPath(parentGfx, pathData, userAttrs);
3087
+ });
3119
3088
 
3120
3089
  var pathData2 = pathMap.getScaledPath('TASK_TYPE_USER_2', {
3121
3090
  abspos: {
@@ -3124,7 +3093,11 @@
3124
3093
  }
3125
3094
  });
3126
3095
 
3127
- /* user2 path */ drawPath(parentGfx, pathData2, userAttrs);
3096
+ /* user2 path */ drawPath(parentGfx, pathData2, {
3097
+ strokeWidth: 0.5,
3098
+ fill: getFillColor(element, defaultFillColor),
3099
+ stroke: getStrokeColor(element, defaultStrokeColor)
3100
+ });
3128
3101
 
3129
3102
  var pathData3 = pathMap.getScaledPath('TASK_TYPE_USER_3', {
3130
3103
  abspos: {
@@ -3133,12 +3106,16 @@
3133
3106
  }
3134
3107
  });
3135
3108
 
3136
- /* user3 path */ drawPath(parentGfx, pathData3, userAttrs);
3109
+ /* user3 path */ drawPath(parentGfx, pathData3, {
3110
+ strokeWidth: 0.5,
3111
+ fill: getStrokeColor(element, defaultStrokeColor),
3112
+ stroke: getStrokeColor(element, defaultStrokeColor)
3113
+ });
3137
3114
 
3138
3115
  return task;
3139
3116
  },
3140
- 'bpmn:ManualTask': function(parentGfx, element, attrs) {
3141
- var task = renderer('bpmn:Task')(parentGfx, element, attrs);
3117
+ 'bpmn:ManualTask': function(parentGfx, element) {
3118
+ var task = renderer('bpmn:Task')(parentGfx, element);
3142
3119
 
3143
3120
  var pathData = pathMap.getScaledPath('TASK_TYPE_MANUAL', {
3144
3121
  abspos: {
@@ -3147,17 +3124,16 @@
3147
3124
  }
3148
3125
  });
3149
3126
 
3150
- var manualAttrs = assign({
3127
+ /* manual path */ drawPath(parentGfx, pathData, {
3151
3128
  strokeWidth: 0.5, // 0.25,
3152
3129
  fill: getFillColor(element, defaultFillColor),
3153
3130
  stroke: getStrokeColor(element, defaultStrokeColor)
3154
- }, attrs);
3155
- /* manual path */ drawPath(parentGfx, pathData, manualAttrs);
3131
+ });
3156
3132
 
3157
3133
  return task;
3158
3134
  },
3159
- 'bpmn:SendTask': function(parentGfx, element, attrs) {
3160
- var task = renderer('bpmn:Task')(parentGfx, element, attrs);
3135
+ 'bpmn:SendTask': function(parentGfx, element) {
3136
+ var task = renderer('bpmn:Task')(parentGfx, element);
3161
3137
 
3162
3138
  var pathData = pathMap.getScaledPath('TASK_TYPE_SEND', {
3163
3139
  xScaleFactor: 1,
@@ -3170,25 +3146,22 @@
3170
3146
  }
3171
3147
  });
3172
3148
 
3173
- /* send path */
3174
- var pathAttrs = assign({
3149
+ /* send path */ drawPath(parentGfx, pathData, {
3175
3150
  strokeWidth: 1,
3176
3151
  fill: getStrokeColor(element, defaultStrokeColor),
3177
3152
  stroke: getFillColor(element, defaultFillColor)
3178
- }, attrs);
3179
-
3180
- drawPath(parentGfx, pathData, pathAttrs);
3153
+ });
3181
3154
 
3182
3155
  return task;
3183
3156
  },
3184
- 'bpmn:ReceiveTask' : function(parentGfx, element, attrs) {
3157
+ 'bpmn:ReceiveTask' : function(parentGfx, element) {
3185
3158
  var semantic = getSemantic(element);
3186
3159
 
3187
- var task = renderer('bpmn:Task')(parentGfx, element, attrs);
3160
+ var task = renderer('bpmn:Task')(parentGfx, element);
3188
3161
  var pathData;
3189
3162
 
3190
3163
  if (semantic.instantiate) {
3191
- drawCircle(parentGfx, 28, 28, 20 * 0.22, assign({ strokeWidth: 1 }, attrs));
3164
+ drawCircle(parentGfx, 28, 28, 20 * 0.22, { strokeWidth: 1 });
3192
3165
 
3193
3166
  pathData = pathMap.getScaledPath('TASK_TYPE_INSTANTIATING_SEND', {
3194
3167
  abspos: {
@@ -3210,18 +3183,16 @@
3210
3183
  });
3211
3184
  }
3212
3185
 
3213
- var receiveAttrs = assign({
3186
+ /* receive path */ drawPath(parentGfx, pathData, {
3214
3187
  strokeWidth: 1,
3215
3188
  fill: getFillColor(element, defaultFillColor),
3216
3189
  stroke: getStrokeColor(element, defaultStrokeColor)
3217
- }, attrs);
3218
-
3219
- /* receive path */ drawPath(parentGfx, pathData, receiveAttrs);
3190
+ });
3220
3191
 
3221
3192
  return task;
3222
3193
  },
3223
- 'bpmn:ScriptTask': function(parentGfx, element, attrs) {
3224
- var task = renderer('bpmn:Task')(parentGfx, element, attrs);
3194
+ 'bpmn:ScriptTask': function(parentGfx, element) {
3195
+ var task = renderer('bpmn:Task')(parentGfx, element);
3225
3196
 
3226
3197
  var pathData = pathMap.getScaledPath('TASK_TYPE_SCRIPT', {
3227
3198
  abspos: {
@@ -3230,16 +3201,15 @@
3230
3201
  }
3231
3202
  });
3232
3203
 
3233
- var scriptAttrs = assign({
3204
+ /* script path */ drawPath(parentGfx, pathData, {
3234
3205
  strokeWidth: 1,
3235
3206
  stroke: getStrokeColor(element, defaultStrokeColor)
3236
- }, attrs);
3237
- /* script path */ drawPath(parentGfx, pathData, scriptAttrs);
3207
+ });
3238
3208
 
3239
3209
  return task;
3240
3210
  },
3241
- 'bpmn:BusinessRuleTask': function(parentGfx, element, attrs) {
3242
- var task = renderer('bpmn:Task')(parentGfx, element, attrs);
3211
+ 'bpmn:BusinessRuleTask': function(parentGfx, element) {
3212
+ var task = renderer('bpmn:Task')(parentGfx, element);
3243
3213
 
3244
3214
  var headerPathData = pathMap.getScaledPath('TASK_TYPE_BUSINESS_RULE_HEADER', {
3245
3215
  abspos: {
@@ -3248,12 +3218,12 @@
3248
3218
  }
3249
3219
  });
3250
3220
 
3251
- var headerAttrs = assign({
3221
+ var businessHeaderPath = drawPath(parentGfx, headerPathData);
3222
+ attr$1(businessHeaderPath, {
3252
3223
  strokeWidth: 1,
3253
3224
  fill: getFillColor(element, '#aaaaaa'),
3254
3225
  stroke: getStrokeColor(element, defaultStrokeColor)
3255
- }, attrs);
3256
- drawPath(parentGfx, headerPathData, headerAttrs);
3226
+ });
3257
3227
 
3258
3228
  var headerData = pathMap.getScaledPath('TASK_TYPE_BUSINESS_RULE_MAIN', {
3259
3229
  abspos: {
@@ -3262,11 +3232,11 @@
3262
3232
  }
3263
3233
  });
3264
3234
 
3265
- var businessAttrs = assign({
3235
+ var businessPath = drawPath(parentGfx, headerData);
3236
+ attr$1(businessPath, {
3266
3237
  strokeWidth: 1,
3267
3238
  stroke: getStrokeColor(element, defaultStrokeColor)
3268
- }, attrs);
3269
- drawPath(parentGfx, headerData, businessAttrs);
3239
+ });
3270
3240
 
3271
3241
  return task;
3272
3242
  },
@@ -3289,42 +3259,41 @@
3289
3259
  renderEmbeddedLabel(parentGfx, element, expanded ? 'center-top' : 'center-middle');
3290
3260
 
3291
3261
  if (expanded) {
3292
- attachTaskMarkers(parentGfx, element, attrs);
3262
+ attachTaskMarkers(parentGfx, element);
3293
3263
  } else {
3294
- attachTaskMarkers(parentGfx, element, attrs, ['SubProcessMarker']);
3264
+ attachTaskMarkers(parentGfx, element, ['SubProcessMarker']);
3295
3265
  }
3296
3266
 
3297
3267
  return rect;
3298
3268
  },
3299
- 'bpmn:AdHocSubProcess': function(parentGfx, element, attrs) {
3300
- return renderer('bpmn:SubProcess')(parentGfx, element, attrs);
3269
+ 'bpmn:AdHocSubProcess': function(parentGfx, element) {
3270
+ return renderer('bpmn:SubProcess')(parentGfx, element);
3301
3271
  },
3302
- 'bpmn:Transaction': function(parentGfx, element, attrs) {
3303
- var outer = renderer('bpmn:SubProcess')(parentGfx, element, attrs);
3272
+ 'bpmn:Transaction': function(parentGfx, element) {
3273
+ var outer = renderer('bpmn:SubProcess')(parentGfx, element);
3304
3274
 
3305
3275
  var innerAttrs = styles.style([ 'no-fill', 'no-events' ], {
3306
3276
  stroke: getStrokeColor(element, defaultStrokeColor)
3307
3277
  });
3308
3278
 
3309
- /* inner path */ drawRect(parentGfx, element.width, element.height, TASK_BORDER_RADIUS - 2, INNER_OUTER_DIST, assign(innerAttrs, attrs));
3279
+ /* inner path */ drawRect(parentGfx, element.width, element.height, TASK_BORDER_RADIUS - 2, INNER_OUTER_DIST, innerAttrs);
3310
3280
 
3311
3281
  return outer;
3312
3282
  },
3313
- 'bpmn:CallActivity': function(parentGfx, element, attrs) {
3314
- attrs = assign({
3283
+ 'bpmn:CallActivity': function(parentGfx, element) {
3284
+ return renderer('bpmn:SubProcess')(parentGfx, element, {
3315
3285
  strokeWidth: 5
3316
- }, attrs);
3317
-
3318
- return renderer('bpmn:SubProcess')(parentGfx, element, attrs);
3286
+ });
3319
3287
  },
3320
- 'bpmn:Participant': function(parentGfx, element, attrs) {
3321
- var outerAttrs = assign({
3288
+ 'bpmn:Participant': function(parentGfx, element) {
3289
+
3290
+ var attrs = {
3322
3291
  fillOpacity: DEFAULT_FILL_OPACITY,
3323
3292
  fill: getFillColor(element, defaultFillColor),
3324
3293
  stroke: getStrokeColor(element, defaultStrokeColor)
3325
- }, attrs);
3294
+ };
3326
3295
 
3327
- var lane = renderer('bpmn:Lane')(parentGfx, element, outerAttrs);
3296
+ var lane = renderer('bpmn:Lane')(parentGfx, element, attrs);
3328
3297
 
3329
3298
  var expandedPool = isExpanded(element);
3330
3299
 
@@ -3332,9 +3301,9 @@
3332
3301
  drawLine(parentGfx, [
3333
3302
  { x: 30, y: 0 },
3334
3303
  { x: 30, y: element.height }
3335
- ], assign({
3304
+ ], {
3336
3305
  stroke: getStrokeColor(element, defaultStrokeColor)
3337
- }, attrs));
3306
+ });
3338
3307
  var text = getSemantic(element).name;
3339
3308
  renderLaneLabel(parentGfx, text, element);
3340
3309
  } else {
@@ -3352,7 +3321,7 @@
3352
3321
  var participantMultiplicity = !!(getSemantic(element).participantMultiplicity);
3353
3322
 
3354
3323
  if (participantMultiplicity) {
3355
- renderer('ParticipantMultiplicityMarker')(parentGfx, element, attrs);
3324
+ renderer('ParticipantMultiplicityMarker')(parentGfx, element);
3356
3325
  }
3357
3326
 
3358
3327
  return lane;
@@ -3373,23 +3342,20 @@
3373
3342
 
3374
3343
  return rect;
3375
3344
  },
3376
- 'bpmn:InclusiveGateway': function(parentGfx, element, attrs) {
3377
- var diamond = renderer('bpmn:Gateway')(parentGfx, element, attrs);
3345
+ 'bpmn:InclusiveGateway': function(parentGfx, element) {
3346
+ var diamond = renderer('bpmn:Gateway')(parentGfx, element);
3378
3347
 
3379
-
3380
- var circleAttrs = assign({
3348
+ /* circle path */
3349
+ drawCircle(parentGfx, element.width, element.height, element.height * 0.24, {
3381
3350
  strokeWidth: 2.5,
3382
3351
  fill: getFillColor(element, defaultFillColor),
3383
3352
  stroke: getStrokeColor(element, defaultStrokeColor)
3384
- }, attrs);
3385
-
3386
- /* circle path */
3387
- drawCircle(parentGfx, element.width, element.height, element.height * 0.24, circleAttrs);
3353
+ });
3388
3354
 
3389
3355
  return diamond;
3390
3356
  },
3391
- 'bpmn:ExclusiveGateway': function(parentGfx, element, attrs) {
3392
- var diamond = renderer('bpmn:Gateway')(parentGfx, element, attrs);
3357
+ 'bpmn:ExclusiveGateway': function(parentGfx, element) {
3358
+ var diamond = renderer('bpmn:Gateway')(parentGfx, element);
3393
3359
 
3394
3360
  var pathData = pathMap.getScaledPath('GATEWAY_EXCLUSIVE', {
3395
3361
  xScaleFactor: 0.4,
@@ -3403,17 +3369,17 @@
3403
3369
  });
3404
3370
 
3405
3371
  if ((getDi(element).isMarkerVisible)) {
3406
- drawPath(parentGfx, pathData, assign({
3372
+ drawPath(parentGfx, pathData, {
3407
3373
  strokeWidth: 1,
3408
3374
  fill: getStrokeColor(element, defaultStrokeColor),
3409
3375
  stroke: getStrokeColor(element, defaultStrokeColor)
3410
- }, attrs));
3376
+ });
3411
3377
  }
3412
3378
 
3413
3379
  return diamond;
3414
3380
  },
3415
- 'bpmn:ComplexGateway': function(parentGfx, element, attrs) {
3416
- var diamond = renderer('bpmn:Gateway')(parentGfx, element, attrs);
3381
+ 'bpmn:ComplexGateway': function(parentGfx, element) {
3382
+ var diamond = renderer('bpmn:Gateway')(parentGfx, element);
3417
3383
 
3418
3384
  var pathData = pathMap.getScaledPath('GATEWAY_COMPLEX', {
3419
3385
  xScaleFactor: 0.5,
@@ -3426,17 +3392,16 @@
3426
3392
  }
3427
3393
  });
3428
3394
 
3429
- var innerAttrs = assign({
3395
+ /* complex path */ drawPath(parentGfx, pathData, {
3430
3396
  strokeWidth: 1,
3431
3397
  fill: getStrokeColor(element, defaultStrokeColor),
3432
3398
  stroke: getStrokeColor(element, defaultStrokeColor)
3433
- }, attrs);
3434
- /* complex path */ drawPath(parentGfx, pathData, innerAttrs);
3399
+ });
3435
3400
 
3436
3401
  return diamond;
3437
3402
  },
3438
- 'bpmn:ParallelGateway': function(parentGfx, element, attrs) {
3439
- var diamond = renderer('bpmn:Gateway')(parentGfx, element, attrs);
3403
+ 'bpmn:ParallelGateway': function(parentGfx, element) {
3404
+ var diamond = renderer('bpmn:Gateway')(parentGfx, element);
3440
3405
 
3441
3406
  var pathData = pathMap.getScaledPath('GATEWAY_PARALLEL', {
3442
3407
  xScaleFactor: 0.6,
@@ -3449,27 +3414,25 @@
3449
3414
  }
3450
3415
  });
3451
3416
 
3452
- var innerAttrs = assign({
3417
+ /* parallel path */ drawPath(parentGfx, pathData, {
3453
3418
  strokeWidth: 1,
3454
3419
  fill: getStrokeColor(element, defaultStrokeColor),
3455
3420
  stroke: getStrokeColor(element, defaultStrokeColor)
3456
- }, attrs);
3457
- /* parallel path */ drawPath(parentGfx, pathData, innerAttrs);
3421
+ });
3458
3422
 
3459
3423
  return diamond;
3460
3424
  },
3461
- 'bpmn:EventBasedGateway': function(parentGfx, element, attrs) {
3425
+ 'bpmn:EventBasedGateway': function(parentGfx, element) {
3462
3426
 
3463
3427
  var semantic = getSemantic(element);
3464
3428
 
3465
- var diamond = renderer('bpmn:Gateway')(parentGfx, element, attrs);
3429
+ var diamond = renderer('bpmn:Gateway')(parentGfx, element);
3466
3430
 
3467
- var outerAttrs = assign({
3431
+ /* outer circle path */ drawCircle(parentGfx, element.width, element.height, element.height * 0.20, {
3468
3432
  strokeWidth: 1,
3469
3433
  fill: 'none',
3470
3434
  stroke: getStrokeColor(element, defaultStrokeColor)
3471
- }, attrs);
3472
- /* outer circle path */ drawCircle(parentGfx, element.width, element.height, element.height * 0.20, outerAttrs);
3435
+ });
3473
3436
 
3474
3437
  var type = semantic.eventGatewayType;
3475
3438
  var instantiate = !!semantic.instantiate;
@@ -3487,12 +3450,13 @@
3487
3450
  }
3488
3451
  });
3489
3452
 
3490
- var innerAttrs = assign({
3453
+ var attrs = {
3491
3454
  strokeWidth: 2,
3492
3455
  fill: getFillColor(element, 'none'),
3493
3456
  stroke: getStrokeColor(element, defaultStrokeColor)
3494
- }, attrs);
3495
- /* event path */ drawPath(parentGfx, pathData, innerAttrs);
3457
+ };
3458
+
3459
+ /* event path */ drawPath(parentGfx, pathData, attrs);
3496
3460
  }
3497
3461
 
3498
3462
  if (type === 'Parallel') {
@@ -3508,7 +3472,7 @@
3508
3472
  }
3509
3473
  });
3510
3474
 
3511
- var parallelPath = drawPath(parentGfx, pathData, attrs);
3475
+ var parallelPath = drawPath(parentGfx, pathData);
3512
3476
  attr$1(parallelPath, {
3513
3477
  strokeWidth: 1,
3514
3478
  fill: 'none'
@@ -3516,12 +3480,12 @@
3516
3480
  } else if (type === 'Exclusive') {
3517
3481
 
3518
3482
  if (!instantiate) {
3519
- var innerCircleAttrs = assign({
3483
+ var innerCircle = drawCircle(parentGfx, element.width, element.height, element.height * 0.26);
3484
+ attr$1(innerCircle, {
3520
3485
  strokeWidth: 1,
3521
3486
  fill: 'none',
3522
3487
  stroke: getStrokeColor(element, defaultStrokeColor)
3523
- }, attrs);
3524
- drawCircle(parentGfx, element.width, element.height, element.height * 0.26, innerCircleAttrs);
3488
+ });
3525
3489
  }
3526
3490
 
3527
3491
  drawEvent();
@@ -3530,28 +3494,26 @@
3530
3494
 
3531
3495
  return diamond;
3532
3496
  },
3533
- 'bpmn:Gateway': function(parentGfx, element, attrs) {
3534
- attrs = assign({
3497
+ 'bpmn:Gateway': function(parentGfx, element) {
3498
+ var attrs = {
3535
3499
  fill: getFillColor(element, defaultFillColor),
3536
3500
  fillOpacity: DEFAULT_FILL_OPACITY,
3537
3501
  stroke: getStrokeColor(element, defaultStrokeColor)
3538
- }, attrs);
3502
+ };
3539
3503
 
3540
3504
  return drawDiamond(parentGfx, element.width, element.height, attrs);
3541
3505
  },
3542
- 'bpmn:SequenceFlow': function(parentGfx, element, attrs) {
3543
- attrs = attrs || {};
3544
-
3506
+ 'bpmn:SequenceFlow': function(parentGfx, element) {
3545
3507
  var pathData = createPathFromConnection(element);
3546
3508
 
3547
- var fill = attrs.fill || getFillColor(element, defaultFillColor),
3548
- stroke = attrs.stroke || getStrokeColor(element, defaultStrokeColor);
3509
+ var fill = getFillColor(element, defaultFillColor),
3510
+ stroke = getStrokeColor(element, defaultStrokeColor);
3549
3511
 
3550
- attrs = assign({
3512
+ var attrs = {
3551
3513
  strokeLinejoin: 'round',
3552
3514
  markerEnd: marker('sequenceflow-end', fill, stroke),
3553
3515
  stroke: getStrokeColor(element, defaultStrokeColor)
3554
- }, attrs || {});
3516
+ };
3555
3517
 
3556
3518
  var path = drawPath(parentGfx, pathData, attrs);
3557
3519
 
@@ -3605,52 +3567,41 @@
3605
3567
 
3606
3568
  return drawLine(parentGfx, element.waypoints, attrs);
3607
3569
  },
3608
- 'bpmn:DataInputAssociation': function(parentGfx, element, attrs) {
3609
- attrs = attrs || {};
3610
-
3611
- var fill = attrs.fill || getFillColor(element, defaultFillColor),
3612
- stroke = attrs.stroke || getStrokeColor(element, defaultStrokeColor);
3570
+ 'bpmn:DataInputAssociation': function(parentGfx, element) {
3571
+ var fill = getFillColor(element, defaultFillColor),
3572
+ stroke = getStrokeColor(element, defaultStrokeColor);
3613
3573
 
3614
- attrs = assign({
3574
+ return renderer('bpmn:Association')(parentGfx, element, {
3615
3575
  markerEnd: marker('association-end', fill, stroke)
3616
- }, attrs);
3617
-
3618
- return renderer('bpmn:Association')(parentGfx, element, attrs);
3576
+ });
3619
3577
  },
3620
- 'bpmn:DataOutputAssociation': function(parentGfx, element, attrs) {
3621
- attrs = attrs || {};
3622
-
3623
- var fill = attrs.fill || getFillColor(element, defaultFillColor),
3624
- stroke = attrs.stroke || getStrokeColor(element, defaultStrokeColor);
3625
-
3578
+ 'bpmn:DataOutputAssociation': function(parentGfx, element) {
3579
+ var fill = getFillColor(element, defaultFillColor),
3580
+ stroke = getStrokeColor(element, defaultStrokeColor);
3626
3581
 
3627
- attrs = assign({
3582
+ return renderer('bpmn:Association')(parentGfx, element, {
3628
3583
  markerEnd: marker('association-end', fill, stroke)
3629
- }, attrs);
3630
-
3631
- return renderer('bpmn:Association')(parentGfx, element, attrs);
3584
+ });
3632
3585
  },
3633
- 'bpmn:MessageFlow': function(parentGfx, element, attrs) {
3634
- attrs = attrs || {};
3586
+ 'bpmn:MessageFlow': function(parentGfx, element) {
3635
3587
 
3636
3588
  var semantic = getSemantic(element),
3637
3589
  di = getDi(element);
3638
3590
 
3639
- var fill = attrs.fill || getFillColor(element, defaultFillColor),
3640
- stroke = attrs.stroke || getStrokeColor(element, defaultStrokeColor);
3591
+ var fill = getFillColor(element, defaultFillColor),
3592
+ stroke = getStrokeColor(element, defaultStrokeColor);
3641
3593
 
3642
3594
  var pathData = createPathFromConnection(element);
3643
3595
 
3644
-
3645
- attrs = assign({
3596
+ var attrs = {
3646
3597
  markerEnd: marker('messageflow-end', fill, stroke),
3647
3598
  markerStart: marker('messageflow-start', fill, stroke),
3648
3599
  strokeDasharray: '10, 12',
3649
3600
  strokeLinecap: 'round',
3650
3601
  strokeLinejoin: 'round',
3651
3602
  strokeWidth: '1.5px',
3652
- stroke: stroke
3653
- }, attrs);
3603
+ stroke: getStrokeColor(element, defaultStrokeColor)
3604
+ };
3654
3605
 
3655
3606
  var path = drawPath(parentGfx, pathData, attrs);
3656
3607
 
@@ -3697,7 +3648,7 @@
3697
3648
 
3698
3649
  return path;
3699
3650
  },
3700
- 'bpmn:DataObject': function(parentGfx, element, attrs) {
3651
+ 'bpmn:DataObject': function(parentGfx, element) {
3701
3652
  var pathData = pathMap.getScaledPath('DATA_OBJECT_PATH', {
3702
3653
  xScaleFactor: 1,
3703
3654
  yScaleFactor: 1,
@@ -3709,56 +3660,46 @@
3709
3660
  }
3710
3661
  });
3711
3662
 
3712
- var outerAttrs = assign({
3663
+ var elementObject = drawPath(parentGfx, pathData, {
3713
3664
  fill: getFillColor(element, defaultFillColor),
3714
3665
  fillOpacity: DEFAULT_FILL_OPACITY,
3715
3666
  stroke: getStrokeColor(element, defaultStrokeColor)
3716
- }, attrs);
3717
- var elementObject = drawPath(parentGfx, pathData, outerAttrs);
3667
+ });
3718
3668
 
3719
3669
  var semantic = getSemantic(element);
3720
3670
 
3721
3671
  if (isCollection(semantic)) {
3722
- renderDataItemCollection(parentGfx, element, attrs);
3672
+ renderDataItemCollection(parentGfx, element);
3723
3673
  }
3724
3674
 
3725
3675
  return elementObject;
3726
3676
  },
3727
3677
  'bpmn:DataObjectReference': as('bpmn:DataObject'),
3728
- 'bpmn:DataInput': function(parentGfx, element, attrs) {
3678
+ 'bpmn:DataInput': function(parentGfx, element) {
3729
3679
 
3730
3680
  var arrowPathData = pathMap.getRawPath('DATA_ARROW');
3731
3681
 
3732
3682
  // page
3733
- var elementObject = renderer('bpmn:DataObject')(parentGfx, element, attrs);
3683
+ var elementObject = renderer('bpmn:DataObject')(parentGfx, element);
3734
3684
 
3735
- var innerAttrs = assign({ strokeWidth: 1 }, attrs);
3736
- /* input arrow path */ drawPath(parentGfx, arrowPathData, innerAttrs);
3685
+ /* input arrow path */ drawPath(parentGfx, arrowPathData, { strokeWidth: 1 });
3737
3686
 
3738
3687
  return elementObject;
3739
3688
  },
3740
- 'bpmn:DataOutput': function(parentGfx, element, attrs) {
3689
+ 'bpmn:DataOutput': function(parentGfx, element) {
3741
3690
  var arrowPathData = pathMap.getRawPath('DATA_ARROW');
3742
3691
 
3743
3692
  // page
3744
- var elementObject = renderer('bpmn:DataObject')(parentGfx, element, attrs);
3693
+ var elementObject = renderer('bpmn:DataObject')(parentGfx, element);
3745
3694
 
3746
- var arrowAttrs = assign({
3695
+ /* output arrow path */ drawPath(parentGfx, arrowPathData, {
3747
3696
  strokeWidth: 1,
3748
3697
  fill: 'black'
3749
- }, attrs);
3750
- /* output arrow path */ drawPath(parentGfx, arrowPathData, arrowAttrs);
3698
+ });
3751
3699
 
3752
3700
  return elementObject;
3753
3701
  },
3754
- 'bpmn:DataStoreReference': function(parentGfx, element, attrs) {
3755
- attrs = assign({
3756
- strokeWidth: 2,
3757
- fill: getFillColor(element, defaultFillColor),
3758
- fillOpacity: DEFAULT_FILL_OPACITY,
3759
- stroke: getStrokeColor(element, defaultStrokeColor)
3760
- }, attrs);
3761
-
3702
+ 'bpmn:DataStoreReference': function(parentGfx, element) {
3762
3703
  var DATA_STORE_PATH = pathMap.getScaledPath('DATA_STORE', {
3763
3704
  xScaleFactor: 1,
3764
3705
  yScaleFactor: 1,
@@ -3770,20 +3711,25 @@
3770
3711
  }
3771
3712
  });
3772
3713
 
3773
- var elementStore = drawPath(parentGfx, DATA_STORE_PATH, attrs);
3714
+ var elementStore = drawPath(parentGfx, DATA_STORE_PATH, {
3715
+ strokeWidth: 2,
3716
+ fill: getFillColor(element, defaultFillColor),
3717
+ fillOpacity: DEFAULT_FILL_OPACITY,
3718
+ stroke: getStrokeColor(element, defaultStrokeColor)
3719
+ });
3774
3720
 
3775
3721
  return elementStore;
3776
3722
  },
3777
- 'bpmn:BoundaryEvent': function(parentGfx, element, attrs) {
3723
+ 'bpmn:BoundaryEvent': function(parentGfx, element) {
3778
3724
 
3779
3725
  var semantic = getSemantic(element),
3780
3726
  cancel = semantic.cancelActivity;
3781
3727
 
3782
- attrs = assign({
3728
+ var attrs = {
3783
3729
  strokeWidth: 1,
3784
3730
  fill: getFillColor(element, defaultFillColor),
3785
3731
  stroke: getStrokeColor(element, defaultStrokeColor)
3786
- }, attrs);
3732
+ };
3787
3733
 
3788
3734
  if (!cancel) {
3789
3735
  attrs.strokeDasharray = '6';
@@ -3804,32 +3750,30 @@
3804
3750
 
3805
3751
  /* inner path */ drawCircle(parentGfx, element.width, element.height, INNER_OUTER_DIST, innerAttrs);
3806
3752
 
3807
- renderEventContent(element, parentGfx, attrs);
3753
+ renderEventContent(element, parentGfx);
3808
3754
 
3809
3755
  return outer;
3810
3756
  },
3811
- 'bpmn:Group': function(parentGfx, element, attrs) {
3757
+ 'bpmn:Group': function(parentGfx, element) {
3812
3758
 
3813
- attrs = assign({
3759
+ var group = drawRect(parentGfx, element.width, element.height, TASK_BORDER_RADIUS, {
3814
3760
  stroke: getStrokeColor(element, defaultStrokeColor),
3815
3761
  strokeWidth: 1,
3816
3762
  strokeDasharray: '8,3,1,3',
3817
3763
  fill: 'none',
3818
3764
  pointerEvents: 'none'
3819
- }, attrs);
3820
-
3821
- var group = drawRect(parentGfx, element.width, element.height, TASK_BORDER_RADIUS, attrs);
3765
+ });
3822
3766
 
3823
3767
  return group;
3824
3768
  },
3825
3769
  'label': function(parentGfx, element) {
3826
3770
  return renderExternalLabel(parentGfx, element);
3827
3771
  },
3828
- 'bpmn:TextAnnotation': function(parentGfx, element, attrs) {
3829
- var style = assign({}, attrs, {
3772
+ 'bpmn:TextAnnotation': function(parentGfx, element) {
3773
+ var style = {
3830
3774
  'fill': 'none',
3831
3775
  'stroke': 'none'
3832
- });
3776
+ };
3833
3777
 
3834
3778
  var textElement = drawRect(parentGfx, element.width, element.height, 0, 0, style);
3835
3779
 
@@ -3844,10 +3788,9 @@
3844
3788
  }
3845
3789
  });
3846
3790
 
3847
- var pathAttrs = assign({
3791
+ drawPath(parentGfx, textPathData, {
3848
3792
  stroke: getStrokeColor(element, defaultStrokeColor)
3849
- }, attrs);
3850
- drawPath(parentGfx, textPathData, pathAttrs);
3793
+ });
3851
3794
 
3852
3795
  var text = getSemantic(element).text || '';
3853
3796
  renderLabel(parentGfx, text, {
@@ -3861,13 +3804,7 @@
3861
3804
 
3862
3805
  return textElement;
3863
3806
  },
3864
- 'ParticipantMultiplicityMarker': function(parentGfx, element, attrs) {
3865
- attrs = assign({
3866
- strokeWidth: 2,
3867
- fill: getFillColor(element, defaultFillColor),
3868
- stroke: getStrokeColor(element, defaultStrokeColor)
3869
- }, attrs);
3870
-
3807
+ 'ParticipantMultiplicityMarker': function(parentGfx, element) {
3871
3808
  var markerPath = pathMap.getScaledPath('MARKER_PARALLEL', {
3872
3809
  xScaleFactor: 1,
3873
3810
  yScaleFactor: 1,
@@ -3879,15 +3816,18 @@
3879
3816
  }
3880
3817
  });
3881
3818
 
3882
- drawMarker('participant-multiplicity', parentGfx, markerPath, attrs);
3819
+ drawMarker('participant-multiplicity', parentGfx, markerPath, {
3820
+ strokeWidth: 2,
3821
+ fill: getFillColor(element, defaultFillColor),
3822
+ stroke: getStrokeColor(element, defaultStrokeColor)
3823
+ });
3883
3824
  },
3884
- 'SubProcessMarker': function(parentGfx, element, attrs) {
3885
- attrs = assign({
3825
+ 'SubProcessMarker': function(parentGfx, element) {
3826
+ var markerRect = drawRect(parentGfx, 14, 14, 0, {
3827
+ strokeWidth: 1,
3886
3828
  fill: getFillColor(element, defaultFillColor),
3887
3829
  stroke: getStrokeColor(element, defaultStrokeColor)
3888
- }, attrs);
3889
-
3890
- var markerRect = drawRect(parentGfx, 14, 14, 0, assign({ strokeWidth: 1 }, attrs));
3830
+ });
3891
3831
 
3892
3832
  // Process marker is placed in the middle of the box
3893
3833
  // therefore fixed values can be used here
@@ -3904,14 +3844,12 @@
3904
3844
  }
3905
3845
  });
3906
3846
 
3907
- drawMarker('sub-process', parentGfx, markerPath, attrs);
3908
- },
3909
- 'ParallelMarker': function(parentGfx, element, attrs, position) {
3910
- attrs = assign({
3847
+ drawMarker('sub-process', parentGfx, markerPath, {
3911
3848
  fill: getFillColor(element, defaultFillColor),
3912
3849
  stroke: getStrokeColor(element, defaultStrokeColor)
3913
- }, attrs);
3914
-
3850
+ });
3851
+ },
3852
+ 'ParallelMarker': function(parentGfx, element, position) {
3915
3853
  var markerPath = pathMap.getScaledPath('MARKER_PARALLEL', {
3916
3854
  xScaleFactor: 1,
3917
3855
  yScaleFactor: 1,
@@ -3923,13 +3861,12 @@
3923
3861
  }
3924
3862
  });
3925
3863
 
3926
- drawMarker('parallel', parentGfx, markerPath, attrs);
3927
- },
3928
- 'SequentialMarker': function(parentGfx, element, attrs, position) {
3929
- attrs = assign({
3864
+ drawMarker('parallel', parentGfx, markerPath, {
3930
3865
  fill: getFillColor(element, defaultFillColor),
3931
3866
  stroke: getStrokeColor(element, defaultStrokeColor)
3932
- }, attrs);
3867
+ });
3868
+ },
3869
+ 'SequentialMarker': function(parentGfx, element, position) {
3933
3870
  var markerPath = pathMap.getScaledPath('MARKER_SEQUENTIAL', {
3934
3871
  xScaleFactor: 1,
3935
3872
  yScaleFactor: 1,
@@ -3941,15 +3878,12 @@
3941
3878
  }
3942
3879
  });
3943
3880
 
3944
- drawMarker('sequential', parentGfx, markerPath, attrs);
3945
- },
3946
- 'CompensationMarker': function(parentGfx, element, attrs, position) {
3947
- attrs = assign({
3948
- strokeWidth: 1,
3881
+ drawMarker('sequential', parentGfx, markerPath, {
3949
3882
  fill: getFillColor(element, defaultFillColor),
3950
3883
  stroke: getStrokeColor(element, defaultStrokeColor)
3951
- }, attrs);
3952
-
3884
+ });
3885
+ },
3886
+ 'CompensationMarker': function(parentGfx, element, position) {
3953
3887
  var markerMath = pathMap.getScaledPath('MARKER_COMPENSATION', {
3954
3888
  xScaleFactor: 1,
3955
3889
  yScaleFactor: 1,
@@ -3961,17 +3895,13 @@
3961
3895
  }
3962
3896
  });
3963
3897
 
3964
- drawMarker('compensation', parentGfx, markerMath, attrs);
3965
- },
3966
- 'LoopMarker': function(parentGfx, element, attrs, position) {
3967
- attrs = assign({
3898
+ drawMarker('compensation', parentGfx, markerMath, {
3968
3899
  strokeWidth: 1,
3969
3900
  fill: getFillColor(element, defaultFillColor),
3970
- stroke: getStrokeColor(element, defaultStrokeColor),
3971
- strokeLinecap: 'round',
3972
- strokeMiterlimit: 0.5
3973
- }, attrs);
3974
-
3901
+ stroke: getStrokeColor(element, defaultStrokeColor)
3902
+ });
3903
+ },
3904
+ 'LoopMarker': function(parentGfx, element, position) {
3975
3905
  var markerPath = pathMap.getScaledPath('MARKER_LOOP', {
3976
3906
  xScaleFactor: 1,
3977
3907
  yScaleFactor: 1,
@@ -3983,15 +3913,15 @@
3983
3913
  }
3984
3914
  });
3985
3915
 
3986
- drawMarker('loop', parentGfx, markerPath, attrs);
3987
- },
3988
- 'AdhocMarker': function(parentGfx, element, attrs, position) {
3989
- attrs = assign({
3916
+ drawMarker('loop', parentGfx, markerPath, {
3990
3917
  strokeWidth: 1,
3991
- fill: getStrokeColor(element, defaultStrokeColor),
3992
- stroke: getStrokeColor(element, defaultStrokeColor)
3993
- }, attrs);
3994
-
3918
+ fill: getFillColor(element, defaultFillColor),
3919
+ stroke: getStrokeColor(element, defaultStrokeColor),
3920
+ strokeLinecap: 'round',
3921
+ strokeMiterlimit: 0.5
3922
+ });
3923
+ },
3924
+ 'AdhocMarker': function(parentGfx, element, position) {
3995
3925
  var markerPath = pathMap.getScaledPath('MARKER_ADHOC', {
3996
3926
  xScaleFactor: 1,
3997
3927
  yScaleFactor: 1,
@@ -4003,11 +3933,15 @@
4003
3933
  }
4004
3934
  });
4005
3935
 
4006
- drawMarker('adhoc', parentGfx, markerPath, attrs);
3936
+ drawMarker('adhoc', parentGfx, markerPath, {
3937
+ strokeWidth: 1,
3938
+ fill: getStrokeColor(element, defaultStrokeColor),
3939
+ stroke: getStrokeColor(element, defaultStrokeColor)
3940
+ });
4007
3941
  }
4008
3942
  };
4009
3943
 
4010
- function attachTaskMarkers(parentGfx, element, attrs, taskMarkers) {
3944
+ function attachTaskMarkers(parentGfx, element, taskMarkers) {
4011
3945
  var obj = getSemantic(element);
4012
3946
 
4013
3947
  var subprocess = taskMarkers && taskMarkers.indexOf('SubProcessMarker') !== -1;
@@ -4032,15 +3966,15 @@
4032
3966
  }
4033
3967
 
4034
3968
  forEach(taskMarkers, function(marker) {
4035
- renderer(marker)(parentGfx, element, attrs, position);
3969
+ renderer(marker)(parentGfx, element, position);
4036
3970
  });
4037
3971
 
4038
3972
  if (obj.isForCompensation) {
4039
- renderer('CompensationMarker')(parentGfx, element, attrs, position);
3973
+ renderer('CompensationMarker')(parentGfx, element, position);
4040
3974
  }
4041
3975
 
4042
3976
  if (obj.$type === 'bpmn:AdHocSubProcess') {
4043
- renderer('AdhocMarker')(parentGfx, element, attrs, position);
3977
+ renderer('AdhocMarker')(parentGfx, element, position);
4044
3978
  }
4045
3979
 
4046
3980
  var loopCharacteristics = obj.loopCharacteristics,
@@ -4049,23 +3983,20 @@
4049
3983
  if (loopCharacteristics) {
4050
3984
 
4051
3985
  if (isSequential === undefined) {
4052
- renderer('LoopMarker')(parentGfx, element, attrs, position);
3986
+ renderer('LoopMarker')(parentGfx, element, position);
4053
3987
  }
4054
3988
 
4055
3989
  if (isSequential === false) {
4056
- renderer('ParallelMarker')(parentGfx, element, attrs, position);
3990
+ renderer('ParallelMarker')(parentGfx, element, position);
4057
3991
  }
4058
3992
 
4059
3993
  if (isSequential === true) {
4060
- renderer('SequentialMarker')(parentGfx, element, attrs, position);
3994
+ renderer('SequentialMarker')(parentGfx, element, position);
4061
3995
  }
4062
3996
  }
4063
3997
  }
4064
3998
 
4065
- function renderDataItemCollection(parentGfx, element, attrs) {
4066
- attrs = assign({
4067
- strokeWidth: 2
4068
- }, attrs);
3999
+ function renderDataItemCollection(parentGfx, element) {
4069
4000
 
4070
4001
  var yPosition = (element.height - 18) / element.height;
4071
4002
 
@@ -4080,7 +4011,9 @@
4080
4011
  }
4081
4012
  });
4082
4013
 
4083
- /* collection path */ drawPath(parentGfx, pathData, attrs);
4014
+ /* collection path */ drawPath(parentGfx, pathData, {
4015
+ strokeWidth: 2
4016
+ });
4084
4017
  }
4085
4018
 
4086
4019
 
@@ -4106,20 +4039,20 @@
4106
4039
  return is$1(element, 'bpmn:BaseElement');
4107
4040
  };
4108
4041
 
4109
- BpmnRenderer.prototype.drawShape = function(parentGfx, element, attrs) {
4042
+ BpmnRenderer.prototype.drawShape = function(parentGfx, element) {
4110
4043
  var type = element.type;
4111
4044
  var h = this.handlers[type];
4112
4045
 
4113
4046
  /* jshint -W040 */
4114
- return h(parentGfx, element, attrs);
4047
+ return h(parentGfx, element);
4115
4048
  };
4116
4049
 
4117
- BpmnRenderer.prototype.drawConnection = function(parentGfx, element, attrs) {
4050
+ BpmnRenderer.prototype.drawConnection = function(parentGfx, element) {
4118
4051
  var type = element.type;
4119
4052
  var h = this.handlers[type];
4120
4053
 
4121
4054
  /* jshint -W040 */
4122
- return h(parentGfx, element, attrs);
4055
+ return h(parentGfx, element);
4123
4056
  };
4124
4057
 
4125
4058
  BpmnRenderer.prototype.getShapePath = function(element) {
@@ -7545,6 +7478,8 @@
7545
7478
 
7546
7479
  var ARROW_DOWN_SVG = '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M4.81801948,3.50735931 L10.4996894,9.1896894 L10.5,4 L12,4 L12,12 L4,12 L4,10.5 L9.6896894,10.4996894 L3.75735931,4.56801948 C3.46446609,4.27512627 3.46446609,3.80025253 3.75735931,3.50735931 C4.05025253,3.21446609 4.52512627,3.21446609 4.81801948,3.50735931 Z"/></svg>';
7547
7480
 
7481
+ var OPEN_CLASS = 'bjs-breadcrumbs-shown';
7482
+
7548
7483
  /**
7549
7484
  * Adds Overlays that allow switching planes on collapsed subprocesses.
7550
7485
  *
@@ -7554,8 +7489,9 @@
7554
7489
  * @param {canvas} canvas
7555
7490
  */
7556
7491
  function DrilldownOverlays(eventBus, elementRegistry, overlays, canvas) {
7557
- var breadcrumbs = domify('<ul class="bjs-breadcrumbs djs-element-hidden"></ul>');
7492
+ var breadcrumbs = domify('<ul class="bjs-breadcrumbs"></ul>');
7558
7493
  var container = canvas.getContainer();
7494
+ var containerClasses = classes(container);
7559
7495
  container.appendChild(breadcrumbs);
7560
7496
 
7561
7497
  function updateBreadcrumbs(plane) {
@@ -7580,11 +7516,9 @@
7580
7516
 
7581
7517
  breadcrumbs.innerHTML = '';
7582
7518
 
7583
- if (path.length > 1) {
7584
- breadcrumbs.classList.remove('djs-element-hidden');
7585
- } else {
7586
- breadcrumbs.classList.add('djs-element-hidden');
7587
- }
7519
+ // show breadcrumbs and expose state to .djs-container
7520
+ var visible = path.length > 1;
7521
+ containerClasses.toggle(OPEN_CLASS, visible);
7588
7522
 
7589
7523
  path.forEach(function(el) {
7590
7524
  breadcrumbs.appendChild(el);
@@ -8527,8 +8461,9 @@
8527
8461
  var BASE_LAYER = 'base';
8528
8462
  var HIDDEN_MARKER = 'djs-element-hidden';
8529
8463
 
8530
- // render plane contents behind additional layers
8531
- var PLANE_LAYER_INDEX = -10;
8464
+ // render plane contents behind utility layers
8465
+ var PLANE_LAYER_INDEX = 0;
8466
+ var UTILITY_LAYER_INDEX = 1;
8532
8467
 
8533
8468
 
8534
8469
  var REQUIRED_MODEL_ATTRS = {
@@ -8690,7 +8625,7 @@
8690
8625
  * @returns {SVGElement}
8691
8626
  */
8692
8627
  Canvas.prototype.getDefaultLayer = function() {
8693
- return this.getLayer(BASE_LAYER);
8628
+ return this.getLayer(BASE_LAYER, PLANE_LAYER_INDEX);
8694
8629
  };
8695
8630
 
8696
8631
  /**
@@ -8739,8 +8674,8 @@
8739
8674
  */
8740
8675
  Canvas.prototype._createLayer = function(name, index) {
8741
8676
 
8742
- if (!index) {
8743
- index = 0;
8677
+ if (typeof index === 'undefined') {
8678
+ index = UTILITY_LAYER_INDEX;
8744
8679
  }
8745
8680
 
8746
8681
  var childIndex = reduce(this._layers, function(childIndex, layer) {
@@ -9483,13 +9418,17 @@
9483
9418
  * Scrolls the viewbox to contain the given element.
9484
9419
  * Optionally specify a padding to be applied to the edges.
9485
9420
  *
9486
- * @param {Object} [element] the element to scroll to.
9421
+ * @param {Object|String} [element] the element to scroll to.
9487
9422
  * @param {Object|Number} [padding=100] the padding to be applied. Can also specify top, bottom, left and right.
9488
9423
  *
9489
9424
  */
9490
9425
  Canvas.prototype.scrollToElement = function(element, padding) {
9491
9426
  var defaultPadding = 100;
9492
9427
 
9428
+ if (typeof element === 'string') {
9429
+ element = this._elementRegistry.get(element);
9430
+ }
9431
+
9493
9432
  // switch to correct Plane
9494
9433
  var targetPlane = this.findPlane(element);
9495
9434
  if (targetPlane !== this._activePlane) {