bpmn-js 11.1.0 → 11.2.0

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.
Files changed (44) hide show
  1. package/README.md +0 -8
  2. package/dist/assets/bpmn-font/css/bpmn-codes.css +6 -6
  3. package/dist/assets/bpmn-font/css/bpmn-embedded.css +18 -13
  4. package/dist/assets/bpmn-font/css/bpmn.css +14 -15
  5. package/dist/assets/bpmn-font/font/bpmn.eot +0 -0
  6. package/dist/assets/bpmn-font/font/bpmn.svg +12 -12
  7. package/dist/assets/bpmn-font/font/bpmn.ttf +0 -0
  8. package/dist/assets/bpmn-font/font/bpmn.woff +0 -0
  9. package/dist/assets/bpmn-font/font/bpmn.woff2 +0 -0
  10. package/dist/assets/diagram-js.css +7 -6
  11. package/dist/bpmn-modeler.development.js +2560 -1187
  12. package/dist/bpmn-modeler.production.min.js +44 -42
  13. package/dist/bpmn-navigated-viewer.development.js +310 -219
  14. package/dist/bpmn-navigated-viewer.production.min.js +6 -6
  15. package/dist/bpmn-viewer.development.js +310 -219
  16. package/dist/bpmn-viewer.production.min.js +6 -6
  17. package/lib/Modeler.js +2 -0
  18. package/lib/draw/BpmnRenderer.js +185 -196
  19. package/lib/features/align-elements/dist/align-bottom-tool.svg +1 -0
  20. package/lib/features/align-elements/dist/align-horizontal-center-tool.svg +1 -0
  21. package/lib/features/align-elements/dist/align-left-tool.svg +1 -0
  22. package/lib/features/align-elements/dist/align-right-tool.svg +1 -0
  23. package/lib/features/align-elements/dist/align-tool.svg +1 -0
  24. package/lib/features/align-elements/dist/align-top-tool.svg +1 -0
  25. package/lib/features/align-elements/dist/align-vertical-center-tool.svg +1 -0
  26. package/lib/features/context-pad/ContextPadProvider.js +0 -1
  27. package/lib/features/create-append-anything/AppendContextPadProvider.js +77 -0
  28. package/lib/features/create-append-anything/AppendMenuProvider.js +175 -0
  29. package/lib/features/create-append-anything/AppendRules.js +83 -0
  30. package/lib/features/create-append-anything/CreateAppendEditorActions.js +51 -0
  31. package/lib/features/create-append-anything/CreateAppendKeyboardBindings.js +97 -0
  32. package/lib/features/create-append-anything/CreateMenuProvider.js +112 -0
  33. package/lib/features/create-append-anything/CreatePaletteProvider.js +77 -0
  34. package/lib/features/create-append-anything/index.js +37 -0
  35. package/lib/features/create-append-anything/util/OptionsUtil.js +612 -0
  36. package/lib/features/editor-actions/BpmnEditorActions.js +0 -1
  37. package/lib/features/modeling/ElementFactory.js +11 -0
  38. package/lib/features/palette/dist/create.svg +1 -0
  39. package/lib/features/popup-menu/ReplaceMenuProvider.js +7 -2
  40. package/lib/features/popup-menu/index.js +6 -3
  41. package/lib/icons/Icons.js +11 -0
  42. package/lib/icons/resources/append.svg +3 -0
  43. package/lib/icons/resources/create.svg +3 -0
  44. package/package.json +20 -7
@@ -83,33 +83,33 @@ export default function BpmnRenderer(
83
83
 
84
84
  var markers = {};
85
85
 
86
- var computeStyle = styles.computeStyle;
87
-
88
- function addMarker(id, options) {
89
- var attrs = assign({
90
- fill: black,
91
- strokeWidth: 1,
86
+ function shapeStyle(attrs) {
87
+ return styles.computeStyle(attrs, {
92
88
  strokeLinecap: 'round',
93
- strokeDasharray: 'none'
94
- }, options.attrs);
95
-
96
- var ref = options.ref || { x: 0, y: 0 };
97
-
98
- var scale = options.scale || 1;
99
-
100
- // fix for safari / chrome / firefox bug not correctly
101
- // resetting stroke dash array
102
- if (attrs.strokeDasharray === 'none') {
103
- attrs.strokeDasharray = [ 10000, 1 ];
104
- }
105
-
106
- var marker = svgCreate('marker');
89
+ strokeLinejoin: 'round',
90
+ stroke: black,
91
+ strokeWidth: 2,
92
+ fill: 'white'
93
+ });
94
+ }
107
95
 
108
- svgAttr(options.element, attrs);
96
+ function lineStyle(attrs) {
97
+ return styles.computeStyle(attrs, [ 'no-fill' ], {
98
+ strokeLinecap: 'round',
99
+ strokeLinejoin: 'round',
100
+ stroke: black,
101
+ strokeWidth: 2
102
+ });
103
+ }
109
104
 
110
- svgAppend(marker, options.element);
105
+ function addMarker(id, options) {
106
+ var {
107
+ ref = { x: 0, y: 0 },
108
+ scale = 1,
109
+ element
110
+ } = options;
111
111
 
112
- svgAttr(marker, {
112
+ var marker = svgCreate('marker', {
113
113
  id: id,
114
114
  viewBox: '0 0 20 20',
115
115
  refX: ref.x,
@@ -119,6 +119,8 @@ export default function BpmnRenderer(
119
119
  orient: 'auto'
120
120
  });
121
121
 
122
+ svgAppend(marker, element);
123
+
122
124
  var defs = domQuery('defs', canvas._svg);
123
125
 
124
126
  if (!defs) {
@@ -151,105 +153,116 @@ export default function BpmnRenderer(
151
153
  function createMarker(id, type, fill, stroke) {
152
154
 
153
155
  if (type === 'sequenceflow-end') {
154
- var sequenceflowEnd = svgCreate('path');
155
- svgAttr(sequenceflowEnd, { d: 'M 1 5 L 11 10 L 1 15 Z' });
156
+ var sequenceflowEnd = svgCreate('path', {
157
+ d: 'M 1 5 L 11 10 L 1 15 Z',
158
+ ...shapeStyle({
159
+ fill: stroke,
160
+ stroke: stroke,
161
+ strokeWidth: 1
162
+ })
163
+ });
156
164
 
157
165
  addMarker(id, {
158
166
  element: sequenceflowEnd,
159
167
  ref: { x: 11, y: 10 },
160
- scale: 0.5,
161
- attrs: {
162
- fill: stroke,
163
- stroke: stroke
164
- }
168
+ scale: 0.5
165
169
  });
166
170
  }
167
171
 
168
172
  if (type === 'messageflow-start') {
169
- var messageflowStart = svgCreate('circle');
170
- svgAttr(messageflowStart, { cx: 6, cy: 6, r: 3.5 });
173
+ var messageflowStart = svgCreate('circle', {
174
+ cx: 6,
175
+ cy: 6,
176
+ r: 3.5,
177
+ ...shapeStyle({
178
+ fill: fill,
179
+ stroke: stroke,
180
+ strokeWidth: 1
181
+ })
182
+ });
171
183
 
172
184
  addMarker(id, {
173
185
  element: messageflowStart,
174
- attrs: {
175
- fill: fill,
176
- stroke: stroke
177
- },
178
186
  ref: { x: 6, y: 6 }
179
187
  });
180
188
  }
181
189
 
182
190
  if (type === 'messageflow-end') {
183
- var messageflowEnd = svgCreate('path');
184
- svgAttr(messageflowEnd, { d: 'm 1 5 l 0 -3 l 7 3 l -7 3 z' });
191
+ var messageflowEnd = svgCreate('path', {
192
+ d: 'm 1 5 l 0 -3 l 7 3 l -7 3 z',
193
+ ...shapeStyle({
194
+ fill: fill,
195
+ stroke: stroke,
196
+ strokeWidth: 1
197
+ })
198
+ });
185
199
 
186
200
  addMarker(id, {
187
201
  element: messageflowEnd,
188
- attrs: {
189
- fill: fill,
190
- stroke: stroke,
191
- strokeLinecap: 'butt'
192
- },
193
202
  ref: { x: 8.5, y: 5 }
194
203
  });
195
204
  }
196
205
 
197
206
  if (type === 'association-start') {
198
- var associationStart = svgCreate('path');
199
- svgAttr(associationStart, { d: 'M 11 5 L 1 10 L 11 15' });
200
-
201
- addMarker(id, {
202
- element: associationStart,
203
- attrs: {
207
+ var associationStart = svgCreate('path', {
208
+ d: 'M 11 5 L 1 10 L 11 15',
209
+ ...lineStyle({
204
210
  fill: 'none',
205
211
  stroke: stroke,
206
212
  strokeWidth: 1.5
207
- },
213
+ })
214
+ });
215
+
216
+ addMarker(id, {
217
+ element: associationStart,
208
218
  ref: { x: 1, y: 10 },
209
219
  scale: 0.5
210
220
  });
211
221
  }
212
222
 
213
223
  if (type === 'association-end') {
214
- var associationEnd = svgCreate('path');
215
- svgAttr(associationEnd, { d: 'M 1 5 L 11 10 L 1 15' });
216
-
217
- addMarker(id, {
218
- element: associationEnd,
219
- attrs: {
224
+ var associationEnd = svgCreate('path', {
225
+ d: 'M 1 5 L 11 10 L 1 15',
226
+ ...lineStyle({
220
227
  fill: 'none',
221
228
  stroke: stroke,
222
229
  strokeWidth: 1.5
223
- },
224
- ref: { x: 12, y: 10 },
230
+ })
231
+ });
232
+
233
+ addMarker(id, {
234
+ element: associationEnd,
235
+ ref: { x: 11, y: 10 },
225
236
  scale: 0.5
226
237
  });
227
238
  }
228
239
 
229
240
  if (type === 'conditional-flow-marker') {
230
- var conditionalflowMarker = svgCreate('path');
231
- svgAttr(conditionalflowMarker, { d: 'M 0 10 L 8 6 L 16 10 L 8 14 Z' });
232
-
233
- addMarker(id, {
234
- element: conditionalflowMarker,
235
- attrs: {
241
+ var conditionalFlowMarker = svgCreate('path', {
242
+ d: 'M 0 10 L 8 6 L 16 10 L 8 14 Z',
243
+ ...shapeStyle({
236
244
  fill: fill,
237
245
  stroke: stroke
238
- },
246
+ })
247
+ });
248
+
249
+ addMarker(id, {
250
+ element: conditionalFlowMarker,
239
251
  ref: { x: -1, y: 10 },
240
252
  scale: 0.5
241
253
  });
242
254
  }
243
255
 
244
256
  if (type === 'conditional-default-flow-marker') {
245
- var conditionaldefaultflowMarker = svgCreate('path');
246
- svgAttr(conditionaldefaultflowMarker, { d: 'M 6 4 L 10 16' });
257
+ var defaultFlowMarker = svgCreate('path', {
258
+ d: 'M 6 4 L 10 16',
259
+ ...shapeStyle({
260
+ stroke: stroke
261
+ })
262
+ });
247
263
 
248
264
  addMarker(id, {
249
- element: conditionaldefaultflowMarker,
250
- attrs: {
251
- stroke: stroke
252
- },
265
+ element: defaultFlowMarker,
253
266
  ref: { x: 0, y: 10 },
254
267
  scale: 0.5
255
268
  });
@@ -265,11 +278,7 @@ export default function BpmnRenderer(
265
278
 
266
279
  offset = offset || 0;
267
280
 
268
- attrs = computeStyle(attrs, {
269
- stroke: black,
270
- strokeWidth: 2,
271
- fill: 'white'
272
- });
281
+ attrs = shapeStyle(attrs);
273
282
 
274
283
  if (attrs.fill === 'none') {
275
284
  delete attrs.fillOpacity;
@@ -278,13 +287,12 @@ export default function BpmnRenderer(
278
287
  var cx = width / 2,
279
288
  cy = height / 2;
280
289
 
281
- var circle = svgCreate('circle');
282
- svgAttr(circle, {
290
+ var circle = svgCreate('circle', {
283
291
  cx: cx,
284
292
  cy: cy,
285
- r: Math.round((width + height) / 4 - offset)
293
+ r: Math.round((width + height) / 4 - offset),
294
+ ...attrs
286
295
  });
287
- svgAttr(circle, attrs);
288
296
 
289
297
  svgAppend(parentGfx, circle);
290
298
 
@@ -300,22 +308,17 @@ export default function BpmnRenderer(
300
308
 
301
309
  offset = offset || 0;
302
310
 
303
- attrs = computeStyle(attrs, {
304
- stroke: black,
305
- strokeWidth: 2,
306
- fill: 'white'
307
- });
311
+ attrs = shapeStyle(attrs);
308
312
 
309
- var rect = svgCreate('rect');
310
- svgAttr(rect, {
313
+ var rect = svgCreate('rect', {
311
314
  x: offset,
312
315
  y: offset,
313
316
  width: width - offset * 2,
314
317
  height: height - offset * 2,
315
318
  rx: r,
316
- ry: r
319
+ ry: r,
320
+ ...attrs
317
321
  });
318
- svgAttr(rect, attrs);
319
322
 
320
323
  svgAppend(parentGfx, rect);
321
324
 
@@ -327,53 +330,66 @@ export default function BpmnRenderer(
327
330
  var x_2 = width / 2;
328
331
  var y_2 = height / 2;
329
332
 
330
- var points = [ { x: x_2, y: 0 }, { x: width, y: y_2 }, { x: x_2, y: height }, { x: 0, y: y_2 } ];
333
+ var points = [
334
+ { x: x_2, y: 0 },
335
+ { x: width, y: y_2 },
336
+ { x: x_2, y: height },
337
+ { x: 0, y: y_2 }
338
+ ];
331
339
 
332
340
  var pointsString = points.map(function(point) {
333
341
  return point.x + ',' + point.y;
334
342
  }).join(' ');
335
343
 
336
- attrs = computeStyle(attrs, {
337
- stroke: black,
338
- strokeWidth: 2,
339
- fill: 'white'
340
- });
344
+ attrs = shapeStyle(attrs);
341
345
 
342
- var polygon = svgCreate('polygon');
343
- svgAttr(polygon, {
346
+ var polygon = svgCreate('polygon', {
347
+ ...attrs,
344
348
  points: pointsString
345
349
  });
346
- svgAttr(polygon, attrs);
347
350
 
348
351
  svgAppend(parentGfx, polygon);
349
352
 
350
353
  return polygon;
351
354
  }
352
355
 
353
- function drawLine(parentGfx, waypoints, attrs) {
354
- attrs = computeStyle(attrs, [ 'no-fill' ], {
355
- stroke: black,
356
- strokeWidth: 2,
357
- fill: 'none'
358
- });
356
+ /**
357
+ * @param {SVGElement} parentGfx
358
+ * @param {Point[]} waypoints
359
+ * @param {any} attrs
360
+ * @param {number} [radius]
361
+ *
362
+ * @return {SVGElement}
363
+ */
364
+ function drawLine(parentGfx, waypoints, attrs, radius) {
365
+ attrs = lineStyle(attrs);
359
366
 
360
- var line = createLine(waypoints, attrs);
367
+ var line = createLine(waypoints, attrs, radius);
361
368
 
362
369
  svgAppend(parentGfx, line);
363
370
 
364
371
  return line;
365
372
  }
366
373
 
374
+ /**
375
+ * @param {SVGElement} parentGfx
376
+ * @param {Point[]} waypoints
377
+ * @param {any} attrs
378
+ *
379
+ * @return {SVGElement}
380
+ */
381
+ function drawConnectionSegments(parentGfx, waypoints, attrs) {
382
+ return drawLine(parentGfx, waypoints, attrs, 5);
383
+ }
384
+
367
385
  function drawPath(parentGfx, d, attrs) {
368
386
 
369
- attrs = computeStyle(attrs, [ 'no-fill' ], {
370
- strokeWidth: 2,
371
- stroke: black
372
- });
387
+ attrs = lineStyle(attrs);
373
388
 
374
- var path = svgCreate('path');
375
- svgAttr(path, { d: d });
376
- svgAttr(path, attrs);
389
+ var path = svgCreate('path', {
390
+ ...attrs,
391
+ d
392
+ });
377
393
 
378
394
  svgAppend(parentGfx, path);
379
395
 
@@ -474,7 +490,7 @@ export default function BpmnRenderer(
474
490
  return renderLabel(parentGfx, semantic.name, {
475
491
  box: element,
476
492
  align: align,
477
- padding: 5,
493
+ padding: 7,
478
494
  style: {
479
495
  fill: getLabelColor(element, defaultLabelColor, defaultStrokeColor)
480
496
  }
@@ -520,16 +536,6 @@ export default function BpmnRenderer(
520
536
  transform(textBox, 0, -top, 270);
521
537
  }
522
538
 
523
- function createPathFromConnection(connection) {
524
- var waypoints = connection.waypoints;
525
-
526
- var pathData = 'm ' + waypoints[0].x + ',' + waypoints[0].y;
527
- for (var i = 1; i < waypoints.length; i++) {
528
- pathData += 'L' + waypoints[i].x + ',' + waypoints[i].y + ' ';
529
- }
530
- return pathData;
531
- }
532
-
533
539
  var handlers = this.handlers = {
534
540
  'bpmn:Event': function(parentGfx, element, attrs) {
535
541
 
@@ -550,7 +556,6 @@ export default function BpmnRenderer(
550
556
  if (!semantic.isInterrupting) {
551
557
  attrs = {
552
558
  strokeDasharray: '6',
553
- strokeLinecap: 'round',
554
559
  fill: getFillColor(element, defaultFillColor),
555
560
  stroke: getStrokeColor(element, defaultStrokeColor)
556
561
  };
@@ -605,7 +610,6 @@ export default function BpmnRenderer(
605
610
 
606
611
  drawPath(parentGfx, pathData, {
607
612
  strokeWidth: 2,
608
- strokeLinecap: 'square',
609
613
  stroke: getStrokeColor(element, defaultStrokeColor)
610
614
  });
611
615
 
@@ -627,7 +631,6 @@ export default function BpmnRenderer(
627
631
 
628
632
  drawPath(parentGfx, linePathData, {
629
633
  strokeWidth: 1,
630
- strokeLinecap: 'square',
631
634
  transform: 'rotate(' + (i * 30) + ',' + height + ',' + width + ')',
632
635
  stroke: getStrokeColor(element, defaultStrokeColor)
633
636
  });
@@ -835,14 +838,14 @@ export default function BpmnRenderer(
835
838
  },
836
839
  'bpmn:IntermediateEvent': function(parentGfx, element) {
837
840
  var outer = renderer('bpmn:Event')(parentGfx, element, {
838
- strokeWidth: 1,
841
+ strokeWidth: 1.5,
839
842
  fill: getFillColor(element, defaultFillColor),
840
843
  stroke: getStrokeColor(element, defaultStrokeColor)
841
844
  });
842
845
 
843
846
  /* inner */
844
847
  drawCircle(parentGfx, element.width, element.height, INNER_OUTER_DIST, {
845
- strokeWidth: 1,
848
+ strokeWidth: 1.5,
846
849
  fill: getFillColor(element, 'none'),
847
850
  stroke: getStrokeColor(element, defaultStrokeColor)
848
851
  });
@@ -1095,10 +1098,11 @@ export default function BpmnRenderer(
1095
1098
  return task;
1096
1099
  },
1097
1100
  'bpmn:SubProcess': function(parentGfx, element, attrs) {
1098
- attrs = assign({
1101
+ attrs = {
1099
1102
  fill: getFillColor(element, defaultFillColor),
1100
- stroke: getStrokeColor(element, defaultStrokeColor)
1101
- }, attrs);
1103
+ stroke: getStrokeColor(element, defaultStrokeColor),
1104
+ ...attrs
1105
+ };
1102
1106
 
1103
1107
  var rect = renderer('bpmn:Activity')(parentGfx, element, attrs);
1104
1108
 
@@ -1106,7 +1110,8 @@ export default function BpmnRenderer(
1106
1110
 
1107
1111
  if (isEventSubProcess(element)) {
1108
1112
  svgAttr(rect, {
1109
- strokeDasharray: '1,2'
1113
+ strokeDasharray: '0, 5.5',
1114
+ strokeWidth: 2.5
1110
1115
  });
1111
1116
  }
1112
1117
 
@@ -1124,13 +1129,14 @@ export default function BpmnRenderer(
1124
1129
  return renderer('bpmn:SubProcess')(parentGfx, element);
1125
1130
  },
1126
1131
  'bpmn:Transaction': function(parentGfx, element) {
1127
- var outer = renderer('bpmn:SubProcess')(parentGfx, element);
1132
+ var outer = renderer('bpmn:SubProcess')(parentGfx, element, { strokeWidth: 1.5 });
1128
1133
 
1129
1134
  var innerAttrs = styles.style([ 'no-fill', 'no-events' ], {
1130
- stroke: getStrokeColor(element, defaultStrokeColor)
1135
+ stroke: getStrokeColor(element, defaultStrokeColor),
1136
+ strokeWidth: 1.5
1131
1137
  });
1132
1138
 
1133
- /* inner path */ drawRect(parentGfx, element.width, element.height, TASK_BORDER_RADIUS - 2, INNER_OUTER_DIST, innerAttrs);
1139
+ /* inner path */ drawRect(parentGfx, element.width, element.height, TASK_BORDER_RADIUS - 3, INNER_OUTER_DIST, innerAttrs);
1134
1140
 
1135
1141
  return outer;
1136
1142
  },
@@ -1141,10 +1147,13 @@ export default function BpmnRenderer(
1141
1147
  },
1142
1148
  'bpmn:Participant': function(parentGfx, element) {
1143
1149
 
1150
+ var strokeWidth = 1.5;
1151
+
1144
1152
  var attrs = {
1145
1153
  fillOpacity: DEFAULT_FILL_OPACITY,
1146
1154
  fill: getFillColor(element, defaultFillColor),
1147
- stroke: getStrokeColor(element, defaultStrokeColor)
1155
+ stroke: getStrokeColor(element, defaultStrokeColor),
1156
+ strokeWidth
1148
1157
  };
1149
1158
 
1150
1159
  var lane = renderer('bpmn:Lane')(parentGfx, element, attrs);
@@ -1156,13 +1165,14 @@ export default function BpmnRenderer(
1156
1165
  { x: 30, y: 0 },
1157
1166
  { x: 30, y: element.height }
1158
1167
  ], {
1159
- stroke: getStrokeColor(element, defaultStrokeColor)
1168
+ stroke: getStrokeColor(element, defaultStrokeColor),
1169
+ strokeWidth
1160
1170
  });
1161
1171
  var text = getSemantic(element).name;
1162
1172
  renderLaneLabel(parentGfx, text, element);
1163
1173
  } else {
1164
1174
 
1165
- // Collapsed pool draw text inline
1175
+ // collapsed pool draw text inline
1166
1176
  var text2 = getSemantic(element).name;
1167
1177
  renderLabel(parentGfx, text2, {
1168
1178
  box: element, align: 'center-middle',
@@ -1181,11 +1191,13 @@ export default function BpmnRenderer(
1181
1191
  return lane;
1182
1192
  },
1183
1193
  'bpmn:Lane': function(parentGfx, element, attrs) {
1184
- var rect = drawRect(parentGfx, element.width, element.height, 0, assign({
1194
+ var rect = drawRect(parentGfx, element.width, element.height, 0, {
1185
1195
  fill: getFillColor(element, defaultFillColor),
1186
1196
  fillOpacity: HIGH_FILL_OPACITY,
1187
- stroke: getStrokeColor(element, defaultStrokeColor)
1188
- }, attrs));
1197
+ stroke: getStrokeColor(element, defaultStrokeColor),
1198
+ strokeWidth: 1.5,
1199
+ ...attrs
1200
+ });
1189
1201
 
1190
1202
  var semantic = getSemantic(element);
1191
1203
 
@@ -1304,13 +1316,11 @@ export default function BpmnRenderer(
1304
1316
  }
1305
1317
  });
1306
1318
 
1307
- var attrs = {
1319
+ /* event path */ drawPath(parentGfx, pathData, {
1308
1320
  strokeWidth: 2,
1309
1321
  fill: getFillColor(element, 'none'),
1310
1322
  stroke: getStrokeColor(element, defaultStrokeColor)
1311
- };
1312
-
1313
- /* event path */ drawPath(parentGfx, pathData, attrs);
1323
+ });
1314
1324
  }
1315
1325
 
1316
1326
  if (type === 'Parallel') {
@@ -1326,16 +1336,14 @@ export default function BpmnRenderer(
1326
1336
  }
1327
1337
  });
1328
1338
 
1329
- var parallelPath = drawPath(parentGfx, pathData);
1330
- svgAttr(parallelPath, {
1339
+ drawPath(parentGfx, pathData, {
1331
1340
  strokeWidth: 1,
1332
1341
  fill: 'none'
1333
1342
  });
1334
1343
  } else if (type === 'Exclusive') {
1335
1344
 
1336
1345
  if (!instantiate) {
1337
- var innerCircle = drawCircle(parentGfx, element.width, element.height, element.height * 0.26);
1338
- svgAttr(innerCircle, {
1346
+ drawCircle(parentGfx, element.width, element.height, element.height * 0.26, {
1339
1347
  strokeWidth: 1,
1340
1348
  fill: 'none',
1341
1349
  stroke: getStrokeColor(element, defaultStrokeColor)
@@ -1349,27 +1357,20 @@ export default function BpmnRenderer(
1349
1357
  return diamond;
1350
1358
  },
1351
1359
  'bpmn:Gateway': function(parentGfx, element) {
1352
- var attrs = {
1360
+ return drawDiamond(parentGfx, element.width, element.height, {
1353
1361
  fill: getFillColor(element, defaultFillColor),
1354
1362
  fillOpacity: DEFAULT_FILL_OPACITY,
1355
1363
  stroke: getStrokeColor(element, defaultStrokeColor)
1356
- };
1357
-
1358
- return drawDiamond(parentGfx, element.width, element.height, attrs);
1364
+ });
1359
1365
  },
1360
1366
  'bpmn:SequenceFlow': function(parentGfx, element) {
1361
- var pathData = createPathFromConnection(element);
1362
-
1363
1367
  var fill = getFillColor(element, defaultFillColor),
1364
1368
  stroke = getStrokeColor(element, defaultStrokeColor);
1365
1369
 
1366
- var attrs = {
1367
- strokeLinejoin: 'round',
1370
+ var path = drawConnectionSegments(parentGfx, element.waypoints, {
1368
1371
  markerEnd: marker('sequenceflow-end', fill, stroke),
1369
1372
  stroke: getStrokeColor(element, defaultStrokeColor)
1370
- };
1371
-
1372
- var path = drawPath(parentGfx, pathData, attrs);
1373
+ });
1373
1374
 
1374
1375
  var sequenceFlow = getSemantic(element);
1375
1376
 
@@ -1403,12 +1404,11 @@ export default function BpmnRenderer(
1403
1404
  var fill = getFillColor(element, defaultFillColor),
1404
1405
  stroke = getStrokeColor(element, defaultStrokeColor);
1405
1406
 
1406
- attrs = assign({
1407
- strokeDasharray: '0.5, 5',
1408
- strokeLinecap: 'round',
1409
- strokeLinejoin: 'round',
1410
- stroke: getStrokeColor(element, defaultStrokeColor)
1411
- }, attrs || {});
1407
+ attrs = {
1408
+ strokeDasharray: '0, 5',
1409
+ stroke: getStrokeColor(element, defaultStrokeColor),
1410
+ ...attrs
1411
+ };
1412
1412
 
1413
1413
  if (semantic.associationDirection === 'One' ||
1414
1414
  semantic.associationDirection === 'Both') {
@@ -1419,7 +1419,7 @@ export default function BpmnRenderer(
1419
1419
  attrs.markerStart = marker('association-start', fill, stroke);
1420
1420
  }
1421
1421
 
1422
- return drawLine(parentGfx, element.waypoints, attrs);
1422
+ return drawConnectionSegments(parentGfx, element.waypoints, attrs);
1423
1423
  },
1424
1424
  'bpmn:DataInputAssociation': function(parentGfx, element) {
1425
1425
  var fill = getFillColor(element, defaultFillColor),
@@ -1445,19 +1445,13 @@ export default function BpmnRenderer(
1445
1445
  var fill = getFillColor(element, defaultFillColor),
1446
1446
  stroke = getStrokeColor(element, defaultStrokeColor);
1447
1447
 
1448
- var pathData = createPathFromConnection(element);
1449
-
1450
- var attrs = {
1448
+ var path = drawConnectionSegments(parentGfx, element.waypoints, {
1451
1449
  markerEnd: marker('messageflow-end', fill, stroke),
1452
1450
  markerStart: marker('messageflow-start', fill, stroke),
1453
- strokeDasharray: '10, 12',
1454
- strokeLinecap: 'round',
1455
- strokeLinejoin: 'round',
1456
- strokeWidth: '1.5px',
1451
+ strokeDasharray: '10, 11',
1452
+ strokeWidth: 1.5,
1457
1453
  stroke: getStrokeColor(element, defaultStrokeColor)
1458
- };
1459
-
1460
- var path = drawPath(parentGfx, pathData, attrs);
1454
+ });
1461
1455
 
1462
1456
  if (semantic.messageRef) {
1463
1457
  var midPoint = path.getPointAtLength(path.getTotalLength() / 2);
@@ -1580,25 +1574,26 @@ export default function BpmnRenderer(
1580
1574
  cancel = semantic.cancelActivity;
1581
1575
 
1582
1576
  var attrs = {
1583
- strokeWidth: 1,
1577
+ strokeWidth: 1.5,
1584
1578
  fill: getFillColor(element, defaultFillColor),
1585
1579
  stroke: getStrokeColor(element, defaultStrokeColor)
1586
1580
  };
1587
1581
 
1588
1582
  if (!cancel) {
1589
1583
  attrs.strokeDasharray = '6';
1590
- attrs.strokeLinecap = 'round';
1591
1584
  }
1592
1585
 
1593
1586
  // apply fillOpacity
1594
- var outerAttrs = assign({}, attrs, {
1587
+ var outerAttrs = {
1588
+ ...attrs,
1595
1589
  fillOpacity: 1
1596
- });
1590
+ };
1597
1591
 
1598
1592
  // apply no-fill
1599
- var innerAttrs = assign({}, attrs, {
1593
+ var innerAttrs = {
1594
+ ...attrs,
1600
1595
  fill: 'none'
1601
- });
1596
+ };
1602
1597
 
1603
1598
  var outer = renderer('bpmn:Event')(parentGfx, element, outerAttrs);
1604
1599
 
@@ -1609,27 +1604,22 @@ export default function BpmnRenderer(
1609
1604
  return outer;
1610
1605
  },
1611
1606
  'bpmn:Group': function(parentGfx, element) {
1612
-
1613
- var group = drawRect(parentGfx, element.width, element.height, TASK_BORDER_RADIUS, {
1607
+ return drawRect(parentGfx, element.width, element.height, TASK_BORDER_RADIUS, {
1614
1608
  stroke: getStrokeColor(element, defaultStrokeColor),
1615
- strokeWidth: 1,
1616
- strokeDasharray: '8,3,1,3',
1609
+ strokeWidth: 1.5,
1610
+ strokeDasharray: '10,6,0,6',
1617
1611
  fill: 'none',
1618
1612
  pointerEvents: 'none'
1619
1613
  });
1620
-
1621
- return group;
1622
1614
  },
1623
1615
  'label': function(parentGfx, element) {
1624
1616
  return renderExternalLabel(parentGfx, element);
1625
1617
  },
1626
1618
  'bpmn:TextAnnotation': function(parentGfx, element) {
1627
- var style = {
1619
+ var textElement = drawRect(parentGfx, element.width, element.height, 0, 0, {
1628
1620
  'fill': 'none',
1629
1621
  'stroke': 'none'
1630
- };
1631
-
1632
- var textElement = drawRect(parentGfx, element.width, element.height, 0, 0, style);
1622
+ });
1633
1623
 
1634
1624
  var textPathData = pathMap.getScaledPath('TEXT_ANNOTATION', {
1635
1625
  xScaleFactor: 1,
@@ -1650,7 +1640,7 @@ export default function BpmnRenderer(
1650
1640
  renderLabel(parentGfx, text, {
1651
1641
  box: element,
1652
1642
  align: 'left-top',
1653
- padding: 5,
1643
+ padding: 7,
1654
1644
  style: {
1655
1645
  fill: getLabelColor(element, defaultLabelColor, defaultStrokeColor)
1656
1646
  }
@@ -1768,10 +1758,9 @@ export default function BpmnRenderer(
1768
1758
  });
1769
1759
 
1770
1760
  drawMarker('loop', parentGfx, markerPath, {
1771
- strokeWidth: 1,
1761
+ strokeWidth: 1.5,
1772
1762
  fill: getFillColor(element, defaultFillColor),
1773
1763
  stroke: getStrokeColor(element, defaultStrokeColor),
1774
- strokeLinecap: 'round',
1775
1764
  strokeMiterlimit: 0.5
1776
1765
  });
1777
1766
  },