bpmn-js 0.28.3 → 0.31.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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * bpmn-js - bpmn-modeler v0.28.3
2
+ * bpmn-js - bpmn-modeler v0.31.0
3
3
  *
4
4
  * Copyright (c) 2014-present, camunda Services GmbH
5
5
  *
@@ -8,9 +8,9 @@
8
8
  *
9
9
  * Source Code: https://github.com/bpmn-io/bpmn-js
10
10
  *
11
- * Date: 2018-03-05
11
+ * Date: 2018-04-02
12
12
  */
13
- (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.BpmnJS = f()}})(function(){var define,module,exports;return (function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(_dereq_,module,exports){
13
+ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.BpmnJS = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){
14
14
  'use strict';
15
15
 
16
16
  var inherits = _dereq_(283);
@@ -267,7 +267,7 @@ var domify = _dereq_(285).domify,
267
267
  domQuery = _dereq_(285).query,
268
268
  domRemove = _dereq_(285).remove;
269
269
 
270
- var innerSVG = _dereq_(312);
270
+ var innerSVG = _dereq_(304).innerSVG;
271
271
 
272
272
  var Diagram = _dereq_(116),
273
273
  BpmnModdle = _dereq_(105);
@@ -760,7 +760,7 @@ function addProjectLogo(container) {
760
760
 
761
761
  /* </project-logo> */
762
762
 
763
- },{"102":102,"105":105,"116":116,"210":210,"232":232,"247":247,"283":283,"284":284,"285":285,"312":312,"4":4,"96":96}],4:[function(_dereq_,module,exports){
763
+ },{"102":102,"105":105,"116":116,"210":210,"232":232,"247":247,"283":283,"284":284,"285":285,"304":304,"4":4,"96":96}],4:[function(_dereq_,module,exports){
764
764
  module.exports = {
765
765
  __depends__: [
766
766
  _dereq_(8),
@@ -963,10 +963,10 @@ var getCirclePath = BpmnRenderUtil.getCirclePath,
963
963
 
964
964
  var domQuery = _dereq_(285).query;
965
965
 
966
- var svgAppend = _dereq_(304),
967
- svgAttr = _dereq_(306),
968
- svgCreate = _dereq_(310),
969
- svgClasses = _dereq_(307);
966
+ var svgAppend = _dereq_(304).append,
967
+ svgAttr = _dereq_(304).attr,
968
+ svgCreate = _dereq_(304).create,
969
+ svgClasses = _dereq_(304).classes;
970
970
 
971
971
  var rotate = _dereq_(277).rotate,
972
972
  transform = _dereq_(277).transform,
@@ -2753,7 +2753,7 @@ BpmnRenderer.prototype.getShapePath = function(element) {
2753
2753
  return getRectPath(element);
2754
2754
  };
2755
2755
 
2756
- },{"101":101,"127":127,"276":276,"277":277,"278":278,"282":282,"283":283,"284":284,"285":285,"304":304,"306":306,"307":307,"310":310,"5":5,"99":99}],7:[function(_dereq_,module,exports){
2756
+ },{"101":101,"127":127,"276":276,"277":277,"278":278,"282":282,"283":283,"284":284,"285":285,"304":304,"5":5,"99":99}],7:[function(_dereq_,module,exports){
2757
2757
  'use strict';
2758
2758
 
2759
2759
  /**
@@ -4800,10 +4800,10 @@ module.exports = {
4800
4800
  };
4801
4801
 
4802
4802
  },{"171":171,"26":26}],28:[function(_dereq_,module,exports){
4803
- var svgAppend = _dereq_(304),
4804
- svgAttr = _dereq_(306),
4805
- svgCreate = _dereq_(310),
4806
- svgRemove = _dereq_(313);
4803
+ var svgAppend = _dereq_(304).append,
4804
+ svgAttr = _dereq_(304).attr,
4805
+ svgCreate = _dereq_(304).create,
4806
+ svgRemove = _dereq_(304).remove;
4807
4807
 
4808
4808
  var getBusinessObject = _dereq_(101).getBusinessObject,
4809
4809
  is = _dereq_(101).is;
@@ -4923,7 +4923,7 @@ LabelEditingPreview.$inject = [ 'eventBus', 'canvas', 'elementRegistry', 'pathMa
4923
4923
 
4924
4924
  module.exports = LabelEditingPreview;
4925
4925
 
4926
- },{"101":101,"277":277,"304":304,"306":306,"310":310,"313":313}],29:[function(_dereq_,module,exports){
4926
+ },{"101":101,"277":277,"304":304}],29:[function(_dereq_,module,exports){
4927
4927
  'use strict';
4928
4928
 
4929
4929
  var assign = _dereq_(284).assign;
@@ -11724,7 +11724,7 @@ var assign = _dereq_(284).assign,
11724
11724
 
11725
11725
  var domQuery = _dereq_(285).query;
11726
11726
 
11727
- var svgAttr = _dereq_(306);
11727
+ var svgAttr = _dereq_(304).attr;
11728
11728
 
11729
11729
  var LOW_PRIORITY = 250;
11730
11730
 
@@ -11827,7 +11827,7 @@ inherits(BpmnReplacePreview, CommandInterceptor);
11827
11827
 
11828
11828
  module.exports = BpmnReplacePreview;
11829
11829
 
11830
- },{"118":118,"283":283,"284":284,"285":285,"306":306}],83:[function(_dereq_,module,exports){
11830
+ },{"118":118,"283":283,"284":284,"285":285,"304":304}],83:[function(_dereq_,module,exports){
11831
11831
  module.exports = {
11832
11832
  __depends__: [ _dereq_(216) ],
11833
11833
  __init__: [ 'bpmnReplacePreview' ],
@@ -20536,10 +20536,7 @@ forEach(hooks, function(hook) {
20536
20536
  'use strict';
20537
20537
 
20538
20538
  var uniqueBy = _dereq_(284).uniqueBy,
20539
- isArray = _dereq_(284).isArray,
20540
- assign = _dereq_(284).assign;
20541
-
20542
- var InternalEvent = _dereq_(124).Event;
20539
+ isArray = _dereq_(284).isArray;
20543
20540
 
20544
20541
 
20545
20542
  /**
@@ -20880,7 +20877,7 @@ CommandStack.prototype._fire = function(command, qualifier, event) {
20880
20877
  var names = qualifier ? [ command + '.' + qualifier, qualifier ] : [ command ],
20881
20878
  i, name, result;
20882
20879
 
20883
- event = assign(new InternalEvent(), event);
20880
+ event = this._eventBus.createEvent(event);
20884
20881
 
20885
20882
  for (i = 0; (name = names[i]); i++) {
20886
20883
  result = this._eventBus.fire('commandStack.' + name, event);
@@ -21043,7 +21040,7 @@ CommandStack.prototype._setHandler = function(command, handler) {
21043
21040
  this._handlerMap[command] = handler;
21044
21041
  };
21045
21042
 
21046
- },{"124":124,"284":284}],120:[function(_dereq_,module,exports){
21043
+ },{"284":284}],120:[function(_dereq_,module,exports){
21047
21044
  module.exports = {
21048
21045
  commandStack: [ 'type', _dereq_(119) ]
21049
21046
  };
@@ -21062,13 +21059,13 @@ var isNumber = _dereq_(284).isNumber,
21062
21059
  var Collections = _dereq_(262),
21063
21060
  Elements = _dereq_(265);
21064
21061
 
21065
- var svgAppend = _dereq_(304),
21066
- svgAttr = _dereq_(306),
21067
- svgClasses = _dereq_(307),
21068
- svgCreate = _dereq_(310),
21069
- svgTransform = _dereq_(314);
21062
+ var svgAppend = _dereq_(304).append,
21063
+ svgAttr = _dereq_(304).attr,
21064
+ svgClasses = _dereq_(304).classes,
21065
+ svgCreate = _dereq_(304).create,
21066
+ svgTransform = _dereq_(304).transform;
21070
21067
 
21071
- var createMatrix = _dereq_(311).createMatrix;
21068
+ var createMatrix = _dereq_(304).createMatrix;
21072
21069
 
21073
21070
 
21074
21071
  function round(number, resolution) {
@@ -22094,7 +22091,7 @@ Canvas.prototype.resized = function() {
22094
22091
  this._eventBus.fire('canvas.resized');
22095
22092
  };
22096
22093
 
22097
- },{"262":262,"265":265,"284":284,"304":304,"306":306,"307":307,"310":310,"311":311,"314":314}],122:[function(_dereq_,module,exports){
22094
+ },{"262":262,"265":265,"284":284,"304":304}],122:[function(_dereq_,module,exports){
22098
22095
  'use strict';
22099
22096
 
22100
22097
  var Model = _dereq_(253);
@@ -22150,7 +22147,7 @@ ElementFactory.prototype.create = function(type, attrs) {
22150
22147
 
22151
22148
  var ELEMENT_ID = 'data-element-id';
22152
22149
 
22153
- var svgAttr = _dereq_(306);
22150
+ var svgAttr = _dereq_(304).attr;
22154
22151
 
22155
22152
 
22156
22153
  /**
@@ -22356,7 +22353,7 @@ ElementRegistry.prototype._validateId = function(id) {
22356
22353
  }
22357
22354
  };
22358
22355
 
22359
- },{"306":306}],124:[function(_dereq_,module,exports){
22356
+ },{"304":304}],124:[function(_dereq_,module,exports){
22360
22357
  'use strict';
22361
22358
 
22362
22359
  var isFunction = _dereq_(284).isFunction,
@@ -22582,6 +22579,22 @@ EventBus.prototype.off = function(event, callback) {
22582
22579
  };
22583
22580
 
22584
22581
 
22582
+ /**
22583
+ * Create an EventBus event.
22584
+ *
22585
+ * @param {Object} data
22586
+ *
22587
+ * @return {Object} event, recognized by the eventBus
22588
+ */
22589
+ EventBus.prototype.createEvent = function(data) {
22590
+ var event = new InternalEvent();
22591
+
22592
+ event.init(data);
22593
+
22594
+ return event;
22595
+ };
22596
+
22597
+
22585
22598
  /**
22586
22599
  * Fires a named event.
22587
22600
  *
@@ -22638,12 +22651,11 @@ EventBus.prototype.fire = function(type, data) {
22638
22651
 
22639
22652
  // we make sure we fire instances of our home made
22640
22653
  // events here. We wrap them only once, though
22641
- if (data instanceof Event) {
22654
+ if (data instanceof InternalEvent) {
22642
22655
  // we are fine, we alread have an event
22643
22656
  event = data;
22644
22657
  } else {
22645
- event = new Event();
22646
- event.init(data);
22658
+ event = this.createEvent(data);
22647
22659
  }
22648
22660
 
22649
22661
  // ensure we pass the event as the first parameter
@@ -22785,19 +22797,17 @@ EventBus.prototype._getListeners = function(name) {
22785
22797
  /**
22786
22798
  * A event that is emitted via the event bus.
22787
22799
  */
22788
- function Event() { }
22789
-
22790
- module.exports.Event = Event;
22800
+ function InternalEvent() { }
22791
22801
 
22792
- Event.prototype.stopPropagation = function() {
22802
+ InternalEvent.prototype.stopPropagation = function() {
22793
22803
  this.cancelBubble = true;
22794
22804
  };
22795
22805
 
22796
- Event.prototype.preventDefault = function() {
22806
+ InternalEvent.prototype.preventDefault = function() {
22797
22807
  this.defaultPrevented = true;
22798
22808
  };
22799
22809
 
22800
- Event.prototype.init = function(data) {
22810
+ InternalEvent.prototype.init = function(data) {
22801
22811
  assign(this, data || {});
22802
22812
  };
22803
22813
 
@@ -22826,11 +22836,11 @@ var translate = _dereq_(277).translate;
22826
22836
 
22827
22837
  var domClear = _dereq_(285).clear;
22828
22838
 
22829
- var svgAppend = _dereq_(304),
22830
- svgAttr = _dereq_(306),
22831
- svgClasses = _dereq_(307),
22832
- svgCreate = _dereq_(310),
22833
- svgRemove = _dereq_(313);
22839
+ var svgAppend = _dereq_(304).append,
22840
+ svgAttr = _dereq_(304).attr,
22841
+ svgClasses = _dereq_(304).classes,
22842
+ svgCreate = _dereq_(304).create,
22843
+ svgRemove = _dereq_(304).remove;
22834
22844
 
22835
22845
 
22836
22846
  /**
@@ -23039,7 +23049,7 @@ function prependTo(newNode, parentNode, siblingNode) {
23039
23049
  parentNode.insertBefore(newNode, siblingNode || parentNode.firstChild);
23040
23050
  }
23041
23051
 
23042
- },{"268":268,"277":277,"284":284,"285":285,"304":304,"306":306,"307":307,"310":310,"313":313}],126:[function(_dereq_,module,exports){
23052
+ },{"268":268,"277":277,"284":284,"285":285,"304":304}],126:[function(_dereq_,module,exports){
23043
23053
  module.exports = {
23044
23054
  __depends__: [ _dereq_(130) ],
23045
23055
  __init__: [ 'canvas' ],
@@ -23152,9 +23162,9 @@ var renderUtil = _dereq_(276);
23152
23162
  var componentsToPath = renderUtil.componentsToPath,
23153
23163
  createLine = renderUtil.createLine;
23154
23164
 
23155
- var svgAppend = _dereq_(304),
23156
- svgAttr = _dereq_(306),
23157
- svgCreate = _dereq_(310);
23165
+ var svgAppend = _dereq_(304).append,
23166
+ svgAttr = _dereq_(304).attr,
23167
+ svgCreate = _dereq_(304).create;
23158
23168
 
23159
23169
  // apply default renderer with lowest possible priority
23160
23170
  // so that it only kicks in if noone else could render
@@ -23245,7 +23255,7 @@ DefaultRenderer.$inject = [ 'eventBus', 'styles' ];
23245
23255
 
23246
23256
  module.exports = DefaultRenderer;
23247
23257
 
23248
- },{"127":127,"276":276,"283":283,"304":304,"306":306,"310":310}],129:[function(_dereq_,module,exports){
23258
+ },{"127":127,"276":276,"283":283,"304":304}],129:[function(_dereq_,module,exports){
23249
23259
  'use strict';
23250
23260
 
23251
23261
  var isArray = _dereq_(284).isArray,
@@ -24271,8 +24281,8 @@ var COMMAND_BENDPOINT_UPDATE = 'connection.updateWaypoints',
24271
24281
 
24272
24282
  var round = Math.round;
24273
24283
 
24274
- var svgClasses = _dereq_(307),
24275
- svgRemove = _dereq_(313);
24284
+ var svgClasses = _dereq_(304).classes,
24285
+ svgRemove = _dereq_(304).remove;
24276
24286
 
24277
24287
  var translate = _dereq_(277).translate;
24278
24288
 
@@ -24522,7 +24532,7 @@ BendpointMove.$inject = [ 'injector', 'eventBus', 'canvas', 'dragging', 'graphic
24522
24532
 
24523
24533
  module.exports = BendpointMove;
24524
24534
 
24525
- },{"141":141,"267":267,"277":277,"307":307,"313":313}],140:[function(_dereq_,module,exports){
24535
+ },{"141":141,"267":267,"277":277,"304":304}],140:[function(_dereq_,module,exports){
24526
24536
  'use strict';
24527
24537
 
24528
24538
  var assign = _dereq_(284).assign,
@@ -24731,10 +24741,10 @@ var Events = _dereq_(266),
24731
24741
  var BENDPOINT_CLS = module.exports.BENDPOINT_CLS = 'djs-bendpoint';
24732
24742
  var SEGMENT_DRAGGER_CLS = module.exports.SEGMENT_DRAGGER_CLS = 'djs-segment-dragger';
24733
24743
 
24734
- var svgAppend = _dereq_(304),
24735
- svgAttr = _dereq_(306),
24736
- svgClasses = _dereq_(307),
24737
- svgCreate = _dereq_(310);
24744
+ var svgAppend = _dereq_(304).append,
24745
+ svgAttr = _dereq_(304).attr,
24746
+ svgClasses = _dereq_(304).classes,
24747
+ svgCreate = _dereq_(304).create;
24738
24748
 
24739
24749
  var rotate = _dereq_(277).rotate,
24740
24750
  translate = _dereq_(277).translate;
@@ -24853,7 +24863,7 @@ module.exports.addSegmentDragger = function(parentGfx, segmentStart, segmentEnd)
24853
24863
  return groupGfx;
24854
24864
  };
24855
24865
 
24856
- },{"266":266,"267":267,"277":277,"304":304,"306":306,"307":307,"310":310}],142:[function(_dereq_,module,exports){
24866
+ },{"266":266,"267":267,"277":277,"304":304}],142:[function(_dereq_,module,exports){
24857
24867
  'use strict';
24858
24868
 
24859
24869
  var forEach = _dereq_(284).forEach;
@@ -24872,11 +24882,11 @@ var BENDPOINT_CLS = BendpointUtil.BENDPOINT_CLS,
24872
24882
 
24873
24883
  var getApproxIntersection = _dereq_(270).getApproxIntersection;
24874
24884
 
24875
- var svgAppend = _dereq_(304),
24876
- svgAttr = _dereq_(306),
24877
- svgClasses = _dereq_(307),
24878
- svgCreate = _dereq_(310),
24879
- svgRemove = _dereq_(313);
24885
+ var svgAppend = _dereq_(304).append,
24886
+ svgAttr = _dereq_(304).attr,
24887
+ svgClasses = _dereq_(304).classes,
24888
+ svgCreate = _dereq_(304).create,
24889
+ svgRemove = _dereq_(304).remove;
24880
24890
 
24881
24891
  var translate = _dereq_(277).translate;
24882
24892
 
@@ -25146,7 +25156,7 @@ Bendpoints.$inject = [
25146
25156
 
25147
25157
  module.exports = Bendpoints;
25148
25158
 
25149
- },{"141":141,"267":267,"270":270,"277":277,"284":284,"285":285,"304":304,"306":306,"307":307,"310":310,"313":313}],143:[function(_dereq_,module,exports){
25159
+ },{"141":141,"267":267,"270":270,"277":277,"284":284,"285":285,"304":304}],143:[function(_dereq_,module,exports){
25150
25160
  'use strict';
25151
25161
 
25152
25162
  var Geometry = _dereq_(267),
@@ -25156,8 +25166,8 @@ var Geometry = _dereq_(267),
25156
25166
  var MARKER_CONNECT_HOVER = 'connect-hover',
25157
25167
  MARKER_CONNECT_UPDATING = 'djs-updating';
25158
25168
 
25159
- var svgClasses = _dereq_(307),
25160
- svgRemove = _dereq_(313);
25169
+ var svgClasses = _dereq_(304).classes,
25170
+ svgRemove = _dereq_(304).remove;
25161
25171
 
25162
25172
  var translate = _dereq_(277).translate;
25163
25173
 
@@ -25549,7 +25559,7 @@ ConnectionSegmentMove.$inject = [
25549
25559
 
25550
25560
  module.exports = ConnectionSegmentMove;
25551
25561
 
25552
- },{"141":141,"251":251,"267":267,"277":277,"307":307,"313":313}],144:[function(_dereq_,module,exports){
25562
+ },{"141":141,"251":251,"267":267,"277":277,"304":304}],144:[function(_dereq_,module,exports){
25553
25563
  module.exports = {
25554
25564
  __depends__: [ _dereq_(161), _dereq_(226) ],
25555
25565
  __init__: [ 'bendpoints', 'bendpointSnapping' ],
@@ -25671,10 +25681,10 @@ var getElementLineIntersection = _dereq_(251).getElementLineIntersection,
25671
25681
  var MARKER_OK = 'connect-ok',
25672
25682
  MARKER_NOT_OK = 'connect-not-ok';
25673
25683
 
25674
- var svgAppend = _dereq_(304),
25675
- svgAttr = _dereq_(306),
25676
- svgCreate = _dereq_(310),
25677
- svgRemove = _dereq_(313);
25684
+ var svgAppend = _dereq_(304).append,
25685
+ svgAttr = _dereq_(304).attr,
25686
+ svgCreate = _dereq_(304).create,
25687
+ svgRemove = _dereq_(304).remove;
25678
25688
 
25679
25689
 
25680
25690
  function Connect(eventBus, dragging, modeling, rules, canvas, graphicsFactory) {
@@ -25848,7 +25858,7 @@ Connect.$inject = [ 'eventBus', 'dragging', 'modeling', 'rules', 'canvas', 'grap
25848
25858
 
25849
25859
  module.exports = Connect;
25850
25860
 
25851
- },{"251":251,"304":304,"306":306,"310":310,"313":313}],150:[function(_dereq_,module,exports){
25861
+ },{"251":251,"304":304}],150:[function(_dereq_,module,exports){
25852
25862
  module.exports = {
25853
25863
  __depends__: [
25854
25864
  _dereq_(232),
@@ -26654,11 +26664,11 @@ var MARKER_OK = 'drop-ok',
26654
26664
  MARKER_ATTACH = 'attach-ok',
26655
26665
  MARKER_NEW_PARENT = 'new-parent';
26656
26666
 
26657
- var svgAppend = _dereq_(304),
26658
- svgAttr = _dereq_(306),
26659
- svgClasses = _dereq_(307),
26660
- svgCreate = _dereq_(310),
26661
- svgRemove = _dereq_(313);
26667
+ var svgAppend = _dereq_(304).append,
26668
+ svgAttr = _dereq_(304).attr,
26669
+ svgClasses = _dereq_(304).classes,
26670
+ svgCreate = _dereq_(304).create,
26671
+ svgRemove = _dereq_(304).remove;
26662
26672
 
26663
26673
  var translate = _dereq_(277).translate;
26664
26674
 
@@ -26936,7 +26946,7 @@ Create.$inject = [
26936
26946
  ];
26937
26947
 
26938
26948
  module.exports = Create;
26939
- },{"277":277,"304":304,"306":306,"307":307,"310":310,"313":313}],156:[function(_dereq_,module,exports){
26949
+ },{"277":277,"304":304}],156:[function(_dereq_,module,exports){
26940
26950
  module.exports = {
26941
26951
  __depends__: [
26942
26952
  _dereq_(161),
@@ -27188,8 +27198,6 @@ var domEvent = _dereq_(285).event,
27188
27198
  Cursor = _dereq_(264),
27189
27199
  ClickTrap = _dereq_(261);
27190
27200
 
27191
- var EventBusEvent = _dereq_(124).Event;
27192
-
27193
27201
  var DRAG_ACTIVE_CLS = 'djs-drag-active';
27194
27202
 
27195
27203
 
@@ -27327,7 +27335,14 @@ function Dragging(eventBus, canvas, selection) {
27327
27335
  function fire(type, dragContext) {
27328
27336
  dragContext = dragContext || context;
27329
27337
 
27330
- var event = assign(new EventBusEvent(), dragContext.payload, dragContext.data, { isTouch: dragContext.isTouch });
27338
+ var event = eventBus.createEvent(
27339
+ assign(
27340
+ {},
27341
+ dragContext.payload,
27342
+ dragContext.data,
27343
+ { isTouch: dragContext.isTouch }
27344
+ )
27345
+ );
27331
27346
 
27332
27347
  // default integration
27333
27348
  if (eventBus.fire('drag.' + type, event) === false) {
@@ -27709,7 +27724,7 @@ Dragging.$inject = [ 'eventBus', 'canvas', 'selection' ];
27709
27724
 
27710
27725
  module.exports = Dragging;
27711
27726
 
27712
- },{"124":124,"261":261,"264":264,"266":266,"284":284,"285":285}],160:[function(_dereq_,module,exports){
27727
+ },{"261":261,"264":264,"266":266,"284":284,"285":285}],160:[function(_dereq_,module,exports){
27713
27728
  'use strict';
27714
27729
 
27715
27730
  var domClosest = _dereq_(285).closest;
@@ -28307,9 +28322,9 @@ var forEach = _dereq_(284).forEach,
28307
28322
 
28308
28323
  var isPrimaryButton = _dereq_(272).isPrimaryButton;
28309
28324
 
28310
- var svgAppend = _dereq_(304),
28311
- svgAttr = _dereq_(306),
28312
- svgCreate = _dereq_(310);
28325
+ var svgAppend = _dereq_(304).append,
28326
+ svgAttr = _dereq_(304).attr,
28327
+ svgCreate = _dereq_(304).create;
28313
28328
 
28314
28329
  var domQuery = _dereq_(285).query;
28315
28330
 
@@ -28641,7 +28656,7 @@ module.exports = InteractionEvents;
28641
28656
  * @property {SVGElement} gfx
28642
28657
  * @property {Event} originalEvent
28643
28658
  */
28644
- },{"272":272,"276":276,"284":284,"285":285,"304":304,"306":306,"310":310}],169:[function(_dereq_,module,exports){
28659
+ },{"272":272,"276":276,"284":284,"285":285,"304":304}],169:[function(_dereq_,module,exports){
28645
28660
  module.exports = {
28646
28661
  __init__: [ 'interactionEvents' ],
28647
28662
  interactionEvents: [ 'type', _dereq_(168) ]
@@ -29133,10 +29148,10 @@ var getEnclosedElements = _dereq_(265).getEnclosedElements;
29133
29148
 
29134
29149
  var hasSecondaryModifier = _dereq_(272).hasSecondaryModifier;
29135
29150
 
29136
- var svgAppend = _dereq_(304),
29137
- svgAttr = _dereq_(306),
29138
- svgCreate = _dereq_(310),
29139
- svgRemove = _dereq_(313);
29151
+ var svgAppend = _dereq_(304).append,
29152
+ svgAttr = _dereq_(304).attr,
29153
+ svgCreate = _dereq_(304).create,
29154
+ svgRemove = _dereq_(304).remove;
29140
29155
 
29141
29156
  var LASSO_TOOL_CURSOR = 'crosshair';
29142
29157
 
@@ -29379,7 +29394,7 @@ function toBBox(event) {
29379
29394
  return bbox;
29380
29395
  }
29381
29396
 
29382
- },{"265":265,"272":272,"284":284,"304":304,"306":306,"310":310,"313":313}],175:[function(_dereq_,module,exports){
29397
+ },{"265":265,"272":272,"284":284,"304":304}],175:[function(_dereq_,module,exports){
29383
29398
  'use strict';
29384
29399
 
29385
29400
  module.exports = {
@@ -32234,10 +32249,10 @@ var flatten = _dereq_(284).flatten,
32234
32249
 
32235
32250
  var Elements = _dereq_(265);
32236
32251
 
32237
- var svgAppend = _dereq_(304),
32238
- svgAttr = _dereq_(306),
32239
- svgClear = _dereq_(308),
32240
- svgCreate = _dereq_(310);
32252
+ var svgAppend = _dereq_(304).append,
32253
+ svgAttr = _dereq_(304).attr,
32254
+ svgClear = _dereq_(304).clear,
32255
+ svgCreate = _dereq_(304).create;
32241
32256
 
32242
32257
  var translate = _dereq_(277).translate;
32243
32258
 
@@ -32468,7 +32483,7 @@ function isConnection(element) {
32468
32483
  return element.waypoints;
32469
32484
  }
32470
32485
 
32471
- },{"265":265,"277":277,"284":284,"304":304,"306":306,"308":308,"310":310}],205:[function(_dereq_,module,exports){
32486
+ },{"265":265,"277":277,"284":284,"304":304}],205:[function(_dereq_,module,exports){
32472
32487
  module.exports = {
32473
32488
  __depends__: [
32474
32489
  _dereq_(169),
@@ -32590,9 +32605,9 @@ var getBBox = _dereq_(265).getBBox;
32590
32605
 
32591
32606
  var LOW_PRIORITY = 500;
32592
32607
 
32593
- var svgAppend = _dereq_(304),
32594
- svgAttr = _dereq_(306),
32595
- svgCreate = _dereq_(310);
32608
+ var svgAppend = _dereq_(304).append,
32609
+ svgAttr = _dereq_(304).attr,
32610
+ svgCreate = _dereq_(304).create;
32596
32611
 
32597
32612
  var domQuery = _dereq_(285).query;
32598
32613
 
@@ -32706,7 +32721,7 @@ Outline.$inject = ['eventBus', 'styles', 'elementRegistry'];
32706
32721
 
32707
32722
  module.exports = Outline;
32708
32723
 
32709
- },{"265":265,"284":284,"285":285,"304":304,"306":306,"310":310}],208:[function(_dereq_,module,exports){
32724
+ },{"265":265,"284":284,"285":285,"304":304}],208:[function(_dereq_,module,exports){
32710
32725
  'use strict';
32711
32726
 
32712
32727
  module.exports = {
@@ -34232,10 +34247,10 @@ module.exports = {
34232
34247
 
34233
34248
  var forEach = _dereq_(284).forEach;
34234
34249
 
34235
- var svgAppend = _dereq_(304),
34236
- svgAttr = _dereq_(306),
34237
- svgClone = _dereq_(309),
34238
- svgCreate = _dereq_(310);
34250
+ var svgAppend = _dereq_(304).append,
34251
+ svgAttr = _dereq_(304).attr,
34252
+ svgClone = _dereq_(304).clone,
34253
+ svgCreate = _dereq_(304).create;
34239
34254
 
34240
34255
  /**
34241
34256
  * Adds support for previews of moving/resizing elements.
@@ -34348,7 +34363,7 @@ function isConnection(element) {
34348
34363
  return element.waypoints;
34349
34364
  }
34350
34365
 
34351
- },{"284":284,"304":304,"306":306,"309":309,"310":310}],216:[function(_dereq_,module,exports){
34366
+ },{"284":284,"304":304}],216:[function(_dereq_,module,exports){
34352
34367
  'use strict';
34353
34368
 
34354
34369
  module.exports = {
@@ -34644,11 +34659,11 @@ var HANDLE_OFFSET = -2,
34644
34659
 
34645
34660
  var CLS_RESIZER = 'djs-resizer';
34646
34661
 
34647
- var svgAppend = _dereq_(304),
34648
- svgAttr = _dereq_(306),
34649
- svgClasses = _dereq_(307),
34650
- svgClear = _dereq_(308),
34651
- svgCreate = _dereq_(310);
34662
+ var svgAppend = _dereq_(304).append,
34663
+ svgAttr = _dereq_(304).attr,
34664
+ svgClasses = _dereq_(304).classes,
34665
+ svgClear = _dereq_(304).clear,
34666
+ svgCreate = _dereq_(304).create;
34652
34667
 
34653
34668
  var domEvent = _dereq_(285).event;
34654
34669
 
@@ -34808,7 +34823,7 @@ ResizeHandles.$inject = [ 'eventBus', 'canvas', 'selection', 'resize' ];
34808
34823
 
34809
34824
  module.exports = ResizeHandles;
34810
34825
 
34811
- },{"251":251,"272":272,"277":277,"284":284,"285":285,"304":304,"306":306,"307":307,"308":308,"310":310}],221:[function(_dereq_,module,exports){
34826
+ },{"251":251,"272":272,"277":277,"284":284,"285":285,"304":304}],221:[function(_dereq_,module,exports){
34812
34827
  'use strict';
34813
34828
 
34814
34829
  var MARKER_RESIZING = 'djs-resizing',
@@ -34816,10 +34831,10 @@ var MARKER_RESIZING = 'djs-resizing',
34816
34831
 
34817
34832
  var LOW_PRIORITY = 500;
34818
34833
 
34819
- var svgAttr = _dereq_(306),
34820
- svgRemove = _dereq_(313);
34834
+ var svgAttr = _dereq_(304).attr,
34835
+ svgRemove = _dereq_(304).remove;
34821
34836
 
34822
- var svgClasses = _dereq_(307);
34837
+ var svgClasses = _dereq_(304).classes;
34823
34838
 
34824
34839
 
34825
34840
  /**
@@ -34899,7 +34914,7 @@ ResizePreview.$inject = [
34899
34914
 
34900
34915
  module.exports = ResizePreview;
34901
34916
 
34902
- },{"306":306,"307":307,"313":313}],222:[function(_dereq_,module,exports){
34917
+ },{"304":304}],222:[function(_dereq_,module,exports){
34903
34918
  'use strict';
34904
34919
 
34905
34920
  var filter = _dereq_(284).filter;
@@ -36474,10 +36489,10 @@ var HIGHER_PRIORITY = 1250;
36474
36489
  var isSnapped = SnapUtil.isSnapped,
36475
36490
  setSnapped = SnapUtil.setSnapped;
36476
36491
 
36477
- var svgAppend = _dereq_(304),
36478
- svgAttr = _dereq_(306),
36479
- svgClasses = _dereq_(307),
36480
- svgCreate = _dereq_(310);
36492
+ var svgAppend = _dereq_(304).append,
36493
+ svgAttr = _dereq_(304).attr,
36494
+ svgClasses = _dereq_(304).classes,
36495
+ svgCreate = _dereq_(304).create;
36481
36496
 
36482
36497
 
36483
36498
  /**
@@ -36707,7 +36722,7 @@ Snapping.prototype.getSiblings = function(element, target) {
36707
36722
  });
36708
36723
  };
36709
36724
 
36710
- },{"233":233,"234":234,"284":284,"304":304,"306":306,"307":307,"310":310}],236:[function(_dereq_,module,exports){
36725
+ },{"233":233,"234":234,"284":284,"304":304}],236:[function(_dereq_,module,exports){
36711
36726
  'use strict';
36712
36727
 
36713
36728
  var SpaceUtil = _dereq_(238);
@@ -37003,11 +37018,11 @@ var MARKER_DRAGGING = 'djs-dragging',
37003
37018
 
37004
37019
  var LOW_PRIORITY = 250;
37005
37020
 
37006
- var svgAppend = _dereq_(304),
37007
- svgAttr = _dereq_(306),
37008
- svgClasses = _dereq_(307),
37009
- svgCreate = _dereq_(310),
37010
- svgRemove = _dereq_(313);
37021
+ var svgAppend = _dereq_(304).append,
37022
+ svgAttr = _dereq_(304).attr,
37023
+ svgClasses = _dereq_(304).classes,
37024
+ svgCreate = _dereq_(304).create,
37025
+ svgRemove = _dereq_(304).remove;
37011
37026
 
37012
37027
  var translate = _dereq_(277).translate;
37013
37028
 
@@ -37266,7 +37281,7 @@ function isConnection(element) {
37266
37281
  return element.waypoints;
37267
37282
  }
37268
37283
 
37269
- },{"277":277,"284":284,"304":304,"306":306,"307":307,"310":310,"313":313}],238:[function(_dereq_,module,exports){
37284
+ },{"277":277,"284":284,"304":304}],238:[function(_dereq_,module,exports){
37270
37285
  'use strict';
37271
37286
 
37272
37287
  /**
@@ -37850,9 +37865,9 @@ module.exports = {
37850
37865
  },{"242":242}],244:[function(_dereq_,module,exports){
37851
37866
  'use strict';
37852
37867
 
37853
- var svgAppend = _dereq_(304),
37854
- svgAttr = _dereq_(306),
37855
- svgCreate = _dereq_(310);
37868
+ var svgAppend = _dereq_(304).append,
37869
+ svgAttr = _dereq_(304).attr,
37870
+ svgCreate = _dereq_(304).create;
37856
37871
 
37857
37872
 
37858
37873
  function TouchFix(canvas, eventBus) {
@@ -37906,7 +37921,7 @@ TouchFix.prototype.addBBoxMarker = function(svg) {
37906
37921
  svgAppend(svg, rect2);
37907
37922
  };
37908
37923
 
37909
- },{"304":304,"306":306,"310":310}],245:[function(_dereq_,module,exports){
37924
+ },{"304":304}],245:[function(_dereq_,module,exports){
37910
37925
  'use strict';
37911
37926
 
37912
37927
  var forEach = _dereq_(284).forEach,
@@ -40730,8 +40745,8 @@ module.exports.saveClear = function(collection, removeFn) {
40730
40745
  },{}],276:[function(_dereq_,module,exports){
40731
40746
  'use strict';
40732
40747
 
40733
- var svgAttr = _dereq_(306),
40734
- svgCreate = _dereq_(310);
40748
+ var svgAttr = _dereq_(304).attr,
40749
+ svgCreate = _dereq_(304).create;
40735
40750
 
40736
40751
 
40737
40752
  module.exports.componentsToPath = function(elements) {
@@ -40768,12 +40783,12 @@ module.exports.updateLine = function(gfx, points) {
40768
40783
  return gfx;
40769
40784
  };
40770
40785
 
40771
- },{"306":306,"310":310}],277:[function(_dereq_,module,exports){
40786
+ },{"304":304}],277:[function(_dereq_,module,exports){
40772
40787
  'use strict';
40773
40788
 
40774
- var svgTransform = _dereq_(314);
40789
+ var svgTransform = _dereq_(304).transform;
40775
40790
 
40776
- var createTransform = _dereq_(311).createTransform;
40791
+ var createTransform = _dereq_(304).createTransform;
40777
40792
 
40778
40793
 
40779
40794
  /**
@@ -40833,7 +40848,7 @@ module.exports.scale = function(gfx, amount) {
40833
40848
  svgTransform(gfx, scale);
40834
40849
  };
40835
40850
 
40836
- },{"311":311,"314":314}],278:[function(_dereq_,module,exports){
40851
+ },{"304":304}],278:[function(_dereq_,module,exports){
40837
40852
  'use strict';
40838
40853
 
40839
40854
  var isObject = _dereq_(284).isObject,
@@ -40842,10 +40857,10 @@ var isObject = _dereq_(284).isObject,
40842
40857
  forEach = _dereq_(284).forEach,
40843
40858
  reduce = _dereq_(284).reduce;
40844
40859
 
40845
- var svgAppend = _dereq_(304),
40846
- svgAttr = _dereq_(306),
40847
- svgCreate = _dereq_(310),
40848
- svgRemove = _dereq_(313);
40860
+ var svgAppend = _dereq_(304).append,
40861
+ svgAttr = _dereq_(304).attr,
40862
+ svgCreate = _dereq_(304).create,
40863
+ svgRemove = _dereq_(304).remove;
40849
40864
 
40850
40865
  var DEFAULT_BOX_PADDING = 0;
40851
40866
 
@@ -41166,10 +41181,12 @@ Text.prototype.layoutText = function(text, options) {
41166
41181
 
41167
41182
  module.exports = Text;
41168
41183
 
41169
- },{"284":284,"304":304,"306":306,"310":310,"313":313}],279:[function(_dereq_,module,exports){
41170
- 'use strict';
41171
-
41172
- Object.defineProperty(exports, '__esModule', { value: true });
41184
+ },{"284":284,"304":304}],279:[function(_dereq_,module,exports){
41185
+ (function (global, factory) {
41186
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
41187
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
41188
+ (factory((global.didi = {})));
41189
+ }(this, (function (exports) { 'use strict';
41173
41190
 
41174
41191
  var CLASS_PATTERN = /^class /;
41175
41192
 
@@ -41505,6 +41522,10 @@ exports.annotate = annotate;
41505
41522
  exports.Module = Module;
41506
41523
  exports.Injector = Injector;
41507
41524
 
41525
+ Object.defineProperty(exports, '__esModule', { value: true });
41526
+
41527
+ })));
41528
+
41508
41529
  },{}],280:[function(_dereq_,module,exports){
41509
41530
  /*! Hammer.JS - v2.0.7 - 2016-04-22
41510
41531
  * http://hammerjs.github.io/
@@ -44339,9 +44360,11 @@ if (typeof Object.create === 'function') {
44339
44360
  }
44340
44361
 
44341
44362
  },{}],284:[function(_dereq_,module,exports){
44342
- 'use strict';
44343
-
44344
- Object.defineProperty(exports, '__esModule', { value: true });
44363
+ (function (global, factory) {
44364
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
44365
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
44366
+ (factory((global.MinDash = {})));
44367
+ }(this, (function (exports) { 'use strict';
44345
44368
 
44346
44369
  /**
44347
44370
  * Flatten array, one level deep.
@@ -44965,11 +44988,17 @@ exports.pick = pick;
44965
44988
  exports.omit = omit;
44966
44989
  exports.merge = merge;
44967
44990
 
44968
- },{}],285:[function(_dereq_,module,exports){
44969
- 'use strict';
44970
-
44971
44991
  Object.defineProperty(exports, '__esModule', { value: true });
44972
44992
 
44993
+ })));
44994
+
44995
+ },{}],285:[function(_dereq_,module,exports){
44996
+ (function (global, factory) {
44997
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
44998
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
44999
+ (factory((global.MinDom = {})));
45000
+ }(this, (function (exports) { 'use strict';
45001
+
44973
45002
  /**
44974
45003
  * Set attribute `name` to `val`, or get attr `name`.
44975
45004
  *
@@ -45519,6 +45548,10 @@ exports.query = query;
45519
45548
  exports.queryAll = all;
45520
45549
  exports.remove = remove;
45521
45550
 
45551
+ Object.defineProperty(exports, '__esModule', { value: true });
45552
+
45553
+ })));
45554
+
45522
45555
  },{}],286:[function(_dereq_,module,exports){
45523
45556
  'use strict';
45524
45557
 
@@ -46403,7 +46436,8 @@ var Types = _dereq_(297),
46403
46436
  serializeAsProperty = common.serializeAsProperty;
46404
46437
 
46405
46438
  var XML_PREAMBLE = '<?xml version="1.0" encoding="UTF-8"?>\n',
46406
- ESCAPE_CHARS = /(<|>|'|"|&|\n\r|\n)/g,
46439
+ ESCAPE_ATTR_CHARS = /<|>|'|"|&|\n\r|\n/g,
46440
+ ESCAPE_CHARS = /<|>|&/g,
46407
46441
  DEFAULT_NS_MAP = common.DEFAULT_NS_MAP,
46408
46442
  XSI_TYPE = common.XSI_TYPE;
46409
46443
 
@@ -46549,16 +46583,32 @@ function getSerializableProperties(element) {
46549
46583
  });
46550
46584
  }
46551
46585
 
46586
+ var ESCAPE_ATTR_MAP = {
46587
+ '\n': '#10',
46588
+ '\n\r': '#10',
46589
+ '"': '#34',
46590
+ '\'': '#39',
46591
+ '<': '#60',
46592
+ '>': '#62',
46593
+ '&': '#38'
46594
+ };
46595
+
46552
46596
  var ESCAPE_MAP = {
46553
- '\n': '10',
46554
- '\n\r': '10',
46555
- '"': '34',
46556
- '\'': '39',
46557
- '<': '60',
46558
- '>': '62',
46559
- '&': '38'
46597
+ '<': 'lt',
46598
+ '>': 'gt',
46599
+ '&': 'amp'
46560
46600
  };
46561
46601
 
46602
+ function escape(str, charPattern, replaceMap) {
46603
+
46604
+ // ensure we are handling strings here
46605
+ str = isString(str) ? str : '' + str;
46606
+
46607
+ return str.replace(charPattern, function(s) {
46608
+ return '&' + replaceMap[s] + ';';
46609
+ });
46610
+ }
46611
+
46562
46612
  /**
46563
46613
  * Escape a string attribute to not contain any bad values (line breaks, '"', ...)
46564
46614
  *
@@ -46566,13 +46616,11 @@ var ESCAPE_MAP = {
46566
46616
  * @return {String} the escaped string
46567
46617
  */
46568
46618
  function escapeAttr(str) {
46619
+ return escape(str, ESCAPE_ATTR_CHARS, ESCAPE_ATTR_MAP);
46620
+ }
46569
46621
 
46570
- // ensure we are handling strings here
46571
- str = isString(str) ? str : '' + str;
46572
-
46573
- return str.replace(ESCAPE_CHARS, function(str) {
46574
- return '&#' + ESCAPE_MAP[str] + ';';
46575
- });
46622
+ function escapeBody(str) {
46623
+ return escape(str, ESCAPE_CHARS, ESCAPE_MAP);
46576
46624
  }
46577
46625
 
46578
46626
  function filterAttributes(props) {
@@ -46602,18 +46650,13 @@ ReferenceSerializer.prototype.serializeTo = function(writer) {
46602
46650
 
46603
46651
  function BodySerializer() {}
46604
46652
 
46605
- BodySerializer.prototype.serializeValue = BodySerializer.prototype.serializeTo = function(writer) {
46606
- var escape = this.escape;
46607
-
46608
- if (escape) {
46609
- writer.append('<![CDATA[');
46610
- }
46611
-
46612
- writer.append(this.value);
46613
-
46614
- if (escape) {
46615
- writer.append(']]>');
46616
- }
46653
+ BodySerializer.prototype.serializeValue =
46654
+ BodySerializer.prototype.serializeTo = function(writer) {
46655
+ writer.append(
46656
+ this.escape
46657
+ ? escapeBody(this.value)
46658
+ : this.value
46659
+ );
46617
46660
  };
46618
46661
 
46619
46662
  BodySerializer.prototype.build = function(prop, value) {
@@ -49940,7 +49983,14 @@ module.exports = findPathIntersections;
49940
49983
  for (j = i + 1; j < l; j++) {
49941
49984
  w = s.charCodeAt(j);
49942
49985
 
49943
- if (w > 96 && w < 123 || w > 64 && w < 91 || w > 47 && w < 59 || w === 45 || w === 95) {
49986
+ if (
49987
+ w > 96 && w < 123 ||
49988
+ w > 64 && w < 91 ||
49989
+ w > 47 && w < 59 ||
49990
+ w === 46 || // '.'
49991
+ w === 45 || // '-'
49992
+ w === 95 // '_'
49993
+ ) {
49944
49994
  continue;
49945
49995
  }
49946
49996
 
@@ -50684,777 +50734,784 @@ else {
50684
50734
  } )( this );
50685
50735
 
50686
50736
  },{}],304:[function(_dereq_,module,exports){
50687
- /**
50688
- * append utility
50689
- */
50737
+ (function (global, factory) {
50738
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
50739
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
50740
+ (factory((global.TinySVG = {})));
50741
+ }(this, (function (exports) { 'use strict';
50690
50742
 
50691
- module.exports = append;
50743
+ function ensureImported(element, target) {
50692
50744
 
50693
- var appendTo = _dereq_(305);
50745
+ if (element.ownerDocument !== target.ownerDocument) {
50746
+ try {
50747
+ // may fail on webkit
50748
+ return target.ownerDocument.importNode(element, true);
50749
+ } catch (e) {
50750
+ // ignore
50751
+ }
50752
+ }
50694
50753
 
50695
- /**
50696
- * Append a node to an element
50697
- *
50698
- * @param {SVGElement} element
50699
- * @param {SVGElement} node
50700
- *
50701
- * @return {SVGElement} the element
50702
- */
50703
- function append(element, node) {
50704
- appendTo(node, element);
50705
- return element;
50706
- }
50707
- },{"305":305}],305:[function(_dereq_,module,exports){
50708
- /**
50709
- * appendTo utility
50710
- */
50711
- module.exports = appendTo;
50754
+ return element;
50755
+ }
50712
50756
 
50713
- var ensureImported = _dereq_(315);
50757
+ /**
50758
+ * appendTo utility
50759
+ */
50714
50760
 
50715
- /**
50716
- * Append a node to a target element and return the appended node.
50717
- *
50718
- * @param {SVGElement} element
50719
- * @param {SVGElement} node
50720
- *
50721
- * @return {SVGElement} the appended node
50722
- */
50723
- function appendTo(element, target) {
50724
- target.appendChild(ensureImported(element, target));
50725
- return element;
50726
- }
50727
- },{"315":315}],306:[function(_dereq_,module,exports){
50728
- /**
50729
- * attribute accessor utility
50730
- */
50731
-
50732
- module.exports = attr;
50733
-
50734
-
50735
- var LENGTH_ATTR = 2;
50736
-
50737
- var CSS_PROPERTIES = {
50738
- 'alignment-baseline': 1,
50739
- 'baseline-shift': 1,
50740
- 'clip': 1,
50741
- 'clip-path': 1,
50742
- 'clip-rule': 1,
50743
- 'color': 1,
50744
- 'color-interpolation': 1,
50745
- 'color-interpolation-filters': 1,
50746
- 'color-profile': 1,
50747
- 'color-rendering': 1,
50748
- 'cursor': 1,
50749
- 'direction': 1,
50750
- 'display': 1,
50751
- 'dominant-baseline': 1,
50752
- 'enable-background': 1,
50753
- 'fill': 1,
50754
- 'fill-opacity': 1,
50755
- 'fill-rule': 1,
50756
- 'filter': 1,
50757
- 'flood-color': 1,
50758
- 'flood-opacity': 1,
50759
- 'font': 1,
50760
- 'font-family': 1,
50761
- 'font-size': LENGTH_ATTR,
50762
- 'font-size-adjust': 1,
50763
- 'font-stretch': 1,
50764
- 'font-style': 1,
50765
- 'font-variant': 1,
50766
- 'font-weight': 1,
50767
- 'glyph-orientation-horizontal': 1,
50768
- 'glyph-orientation-vertical': 1,
50769
- 'image-rendering': 1,
50770
- 'kerning': 1,
50771
- 'letter-spacing': 1,
50772
- 'lighting-color': 1,
50773
- 'marker': 1,
50774
- 'marker-end': 1,
50775
- 'marker-mid': 1,
50776
- 'marker-start': 1,
50777
- 'mask': 1,
50778
- 'opacity': 1,
50779
- 'overflow': 1,
50780
- 'pointer-events': 1,
50781
- 'shape-rendering': 1,
50782
- 'stop-color': 1,
50783
- 'stop-opacity': 1,
50784
- 'stroke': 1,
50785
- 'stroke-dasharray': 1,
50786
- 'stroke-dashoffset': 1,
50787
- 'stroke-linecap': 1,
50788
- 'stroke-linejoin': 1,
50789
- 'stroke-miterlimit': 1,
50790
- 'stroke-opacity': 1,
50791
- 'stroke-width': LENGTH_ATTR,
50792
- 'text-anchor': 1,
50793
- 'text-decoration': 1,
50794
- 'text-rendering': 1,
50795
- 'unicode-bidi': 1,
50796
- 'visibility': 1,
50797
- 'word-spacing': 1,
50798
- 'writing-mode': 1
50799
- };
50800
-
50801
-
50802
- function getAttribute(node, name) {
50803
- if (CSS_PROPERTIES[name]) {
50804
- return node.style[name];
50805
- } else {
50806
- return node.getAttributeNS(null, name);
50761
+ /**
50762
+ * Append a node to a target element and return the appended node.
50763
+ *
50764
+ * @param {SVGElement} element
50765
+ * @param {SVGElement} node
50766
+ *
50767
+ * @return {SVGElement} the appended node
50768
+ */
50769
+ function appendTo(element, target) {
50770
+ target.appendChild(ensureImported(element, target));
50771
+ return element;
50772
+ }
50773
+
50774
+ /**
50775
+ * append utility
50776
+ */
50777
+
50778
+ /**
50779
+ * Append a node to an element
50780
+ *
50781
+ * @param {SVGElement} element
50782
+ * @param {SVGElement} node
50783
+ *
50784
+ * @return {SVGElement} the element
50785
+ */
50786
+ function append(element, node) {
50787
+ appendTo(node, element);
50788
+ return element;
50807
50789
  }
50808
- }
50809
50790
 
50810
- function setAttribute(node, name, value) {
50811
- var hyphenated = name.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
50791
+ /**
50792
+ * attribute accessor utility
50793
+ */
50794
+
50795
+ var LENGTH_ATTR = 2;
50796
+
50797
+ var CSS_PROPERTIES = {
50798
+ 'alignment-baseline': 1,
50799
+ 'baseline-shift': 1,
50800
+ 'clip': 1,
50801
+ 'clip-path': 1,
50802
+ 'clip-rule': 1,
50803
+ 'color': 1,
50804
+ 'color-interpolation': 1,
50805
+ 'color-interpolation-filters': 1,
50806
+ 'color-profile': 1,
50807
+ 'color-rendering': 1,
50808
+ 'cursor': 1,
50809
+ 'direction': 1,
50810
+ 'display': 1,
50811
+ 'dominant-baseline': 1,
50812
+ 'enable-background': 1,
50813
+ 'fill': 1,
50814
+ 'fill-opacity': 1,
50815
+ 'fill-rule': 1,
50816
+ 'filter': 1,
50817
+ 'flood-color': 1,
50818
+ 'flood-opacity': 1,
50819
+ 'font': 1,
50820
+ 'font-family': 1,
50821
+ 'font-size': LENGTH_ATTR,
50822
+ 'font-size-adjust': 1,
50823
+ 'font-stretch': 1,
50824
+ 'font-style': 1,
50825
+ 'font-variant': 1,
50826
+ 'font-weight': 1,
50827
+ 'glyph-orientation-horizontal': 1,
50828
+ 'glyph-orientation-vertical': 1,
50829
+ 'image-rendering': 1,
50830
+ 'kerning': 1,
50831
+ 'letter-spacing': 1,
50832
+ 'lighting-color': 1,
50833
+ 'marker': 1,
50834
+ 'marker-end': 1,
50835
+ 'marker-mid': 1,
50836
+ 'marker-start': 1,
50837
+ 'mask': 1,
50838
+ 'opacity': 1,
50839
+ 'overflow': 1,
50840
+ 'pointer-events': 1,
50841
+ 'shape-rendering': 1,
50842
+ 'stop-color': 1,
50843
+ 'stop-opacity': 1,
50844
+ 'stroke': 1,
50845
+ 'stroke-dasharray': 1,
50846
+ 'stroke-dashoffset': 1,
50847
+ 'stroke-linecap': 1,
50848
+ 'stroke-linejoin': 1,
50849
+ 'stroke-miterlimit': 1,
50850
+ 'stroke-opacity': 1,
50851
+ 'stroke-width': LENGTH_ATTR,
50852
+ 'text-anchor': 1,
50853
+ 'text-decoration': 1,
50854
+ 'text-rendering': 1,
50855
+ 'unicode-bidi': 1,
50856
+ 'visibility': 1,
50857
+ 'word-spacing': 1,
50858
+ 'writing-mode': 1
50859
+ };
50812
50860
 
50813
- var type = CSS_PROPERTIES[hyphenated];
50814
50861
 
50815
- if (type) {
50816
- // append pixel unit, unless present
50817
- if (type === LENGTH_ATTR && typeof value === 'number') {
50818
- value = String(value) + 'px';
50862
+ function getAttribute(node, name) {
50863
+ if (CSS_PROPERTIES[name]) {
50864
+ return node.style[name];
50865
+ } else {
50866
+ return node.getAttributeNS(null, name);
50819
50867
  }
50868
+ }
50820
50869
 
50821
- node.style[hyphenated] = value;
50822
- } else {
50823
- node.setAttributeNS(null, name, value);
50870
+ function setAttribute(node, name, value) {
50871
+ var hyphenated = name.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
50872
+
50873
+ var type = CSS_PROPERTIES[hyphenated];
50874
+
50875
+ if (type) {
50876
+ // append pixel unit, unless present
50877
+ if (type === LENGTH_ATTR && typeof value === 'number') {
50878
+ value = String(value) + 'px';
50879
+ }
50880
+
50881
+ node.style[hyphenated] = value;
50882
+ } else {
50883
+ node.setAttributeNS(null, name, value);
50884
+ }
50824
50885
  }
50825
- }
50826
50886
 
50827
- function setAttributes(node, attrs) {
50887
+ function setAttributes(node, attrs) {
50828
50888
 
50829
- var names = Object.keys(attrs), i, name;
50889
+ var names = Object.keys(attrs), i, name;
50830
50890
 
50831
- for (i = 0, name; (name = names[i]); i++) {
50832
- setAttribute(node, name, attrs[name]);
50891
+ for (i = 0, name; (name = names[i]); i++) {
50892
+ setAttribute(node, name, attrs[name]);
50893
+ }
50833
50894
  }
50834
- }
50835
50895
 
50836
- /**
50837
- * Gets or sets raw attributes on a node.
50838
- *
50839
- * @param {SVGElement} node
50840
- * @param {Object} [attrs]
50841
- * @param {String} [name]
50842
- * @param {String} [value]
50843
- *
50844
- * @return {String}
50845
- */
50846
- function attr(node, name, value) {
50847
- if (typeof name === 'string') {
50848
- if (value !== undefined) {
50849
- setAttribute(node, name, value);
50896
+ /**
50897
+ * Gets or sets raw attributes on a node.
50898
+ *
50899
+ * @param {SVGElement} node
50900
+ * @param {Object} [attrs]
50901
+ * @param {String} [name]
50902
+ * @param {String} [value]
50903
+ *
50904
+ * @return {String}
50905
+ */
50906
+ function attr(node, name, value) {
50907
+ if (typeof name === 'string') {
50908
+ if (value !== undefined) {
50909
+ setAttribute(node, name, value);
50910
+ } else {
50911
+ return getAttribute(node, name);
50912
+ }
50850
50913
  } else {
50851
- return getAttribute(node, name);
50914
+ setAttributes(node, name);
50852
50915
  }
50853
- } else {
50854
- setAttributes(node, name);
50855
- }
50856
50916
 
50857
- return node;
50858
- }
50917
+ return node;
50918
+ }
50859
50919
 
50860
- },{}],307:[function(_dereq_,module,exports){
50861
- /**
50862
- * Clear utility
50863
- */
50864
- module.exports = classes;
50865
-
50866
- var index = function(arr, obj) {
50867
- if (arr.indexOf) {
50868
- return arr.indexOf(obj);
50869
- }
50870
-
50871
-
50872
- for (var i = 0; i < arr.length; ++i) {
50873
- if (arr[i] === obj) {
50874
- return i;
50920
+ /**
50921
+ * Clear utility
50922
+ */
50923
+ function index(arr, obj) {
50924
+ if (arr.indexOf) {
50925
+ return arr.indexOf(obj);
50875
50926
  }
50876
- }
50877
-
50878
- return -1;
50879
- };
50880
50927
 
50881
- var re = /\s+/;
50882
50928
 
50883
- var toString = Object.prototype.toString;
50929
+ for (var i = 0; i < arr.length; ++i) {
50930
+ if (arr[i] === obj) {
50931
+ return i;
50932
+ }
50933
+ }
50884
50934
 
50885
- function defined(o) {
50886
- return typeof o !== 'undefined';
50887
- }
50935
+ return -1;
50936
+ }
50888
50937
 
50889
- /**
50890
- * Wrap `el` in a `ClassList`.
50891
- *
50892
- * @param {Element} el
50893
- * @return {ClassList}
50894
- * @api public
50895
- */
50938
+ var re = /\s+/;
50896
50939
 
50897
- function classes(el) {
50898
- return new ClassList(el);
50899
- }
50940
+ var toString = Object.prototype.toString;
50900
50941
 
50901
- function ClassList(el) {
50902
- if (!el || !el.nodeType) {
50903
- throw new Error('A DOM element reference is required');
50942
+ function defined(o) {
50943
+ return typeof o !== 'undefined';
50904
50944
  }
50905
- this.el = el;
50906
- this.list = el.classList;
50907
- }
50908
-
50909
- /**
50910
- * Add class `name` if not already present.
50911
- *
50912
- * @param {String} name
50913
- * @return {ClassList}
50914
- * @api public
50915
- */
50916
50945
 
50917
- ClassList.prototype.add = function(name) {
50946
+ /**
50947
+ * Wrap `el` in a `ClassList`.
50948
+ *
50949
+ * @param {Element} el
50950
+ * @return {ClassList}
50951
+ * @api public
50952
+ */
50918
50953
 
50919
- // classList
50920
- if (this.list) {
50921
- this.list.add(name);
50922
- return this;
50954
+ function classes(el) {
50955
+ return new ClassList(el);
50923
50956
  }
50924
50957
 
50925
- // fallback
50926
- var arr = this.array();
50927
- var i = index(arr, name);
50928
- if (!~i) {
50929
- arr.push(name);
50958
+ function ClassList(el) {
50959
+ if (!el || !el.nodeType) {
50960
+ throw new Error('A DOM element reference is required');
50961
+ }
50962
+ this.el = el;
50963
+ this.list = el.classList;
50930
50964
  }
50931
50965
 
50932
- if (defined(this.el.className.baseVal)) {
50933
- this.el.className.baseVal = arr.join(' ');
50934
- } else {
50935
- this.el.className = arr.join(' ');
50936
- }
50966
+ /**
50967
+ * Add class `name` if not already present.
50968
+ *
50969
+ * @param {String} name
50970
+ * @return {ClassList}
50971
+ * @api public
50972
+ */
50937
50973
 
50938
- return this;
50939
- };
50974
+ ClassList.prototype.add = function(name) {
50940
50975
 
50941
- /**
50942
- * Remove class `name` when present, or
50943
- * pass a regular expression to remove
50944
- * any which match.
50945
- *
50946
- * @param {String|RegExp} name
50947
- * @return {ClassList}
50948
- * @api public
50949
- */
50976
+ // classList
50977
+ if (this.list) {
50978
+ this.list.add(name);
50979
+ return this;
50980
+ }
50950
50981
 
50951
- ClassList.prototype.remove = function(name) {
50952
- if ('[object RegExp]' === toString.call(name)) {
50953
- return this.removeMatching(name);
50954
- }
50982
+ // fallback
50983
+ var arr = this.array();
50984
+ var i = index(arr, name);
50985
+ if (!~i) {
50986
+ arr.push(name);
50987
+ }
50988
+
50989
+ if (defined(this.el.className.baseVal)) {
50990
+ this.el.className.baseVal = arr.join(' ');
50991
+ } else {
50992
+ this.el.className = arr.join(' ');
50993
+ }
50955
50994
 
50956
- // classList
50957
- if (this.list) {
50958
- this.list.remove(name);
50959
50995
  return this;
50960
- }
50996
+ };
50961
50997
 
50962
- // fallback
50963
- var arr = this.array();
50964
- var i = index(arr, name);
50965
- if (~i) {
50966
- arr.splice(i, 1);
50967
- }
50968
- this.el.className.baseVal = arr.join(' ');
50969
- return this;
50970
- };
50998
+ /**
50999
+ * Remove class `name` when present, or
51000
+ * pass a regular expression to remove
51001
+ * any which match.
51002
+ *
51003
+ * @param {String|RegExp} name
51004
+ * @return {ClassList}
51005
+ * @api public
51006
+ */
50971
51007
 
50972
- /**
50973
- * Remove all classes matching `re`.
50974
- *
50975
- * @param {RegExp} re
50976
- * @return {ClassList}
50977
- * @api private
50978
- */
51008
+ ClassList.prototype.remove = function(name) {
51009
+ if ('[object RegExp]' === toString.call(name)) {
51010
+ return this.removeMatching(name);
51011
+ }
50979
51012
 
50980
- ClassList.prototype.removeMatching = function(re) {
50981
- var arr = this.array();
50982
- for (var i = 0; i < arr.length; i++) {
50983
- if (re.test(arr[i])) {
50984
- this.remove(arr[i]);
51013
+ // classList
51014
+ if (this.list) {
51015
+ this.list.remove(name);
51016
+ return this;
50985
51017
  }
50986
- }
50987
- return this;
50988
- };
50989
51018
 
50990
- /**
50991
- * Toggle class `name`, can force state via `force`.
50992
- *
50993
- * For browsers that support classList, but do not support `force` yet,
50994
- * the mistake will be detected and corrected.
50995
- *
50996
- * @param {String} name
50997
- * @param {Boolean} force
50998
- * @return {ClassList}
50999
- * @api public
51000
- */
51019
+ // fallback
51020
+ var arr = this.array();
51021
+ var i = index(arr, name);
51022
+ if (~i) {
51023
+ arr.splice(i, 1);
51024
+ }
51025
+ this.el.className.baseVal = arr.join(' ');
51026
+ return this;
51027
+ };
51001
51028
 
51002
- ClassList.prototype.toggle = function(name, force) {
51003
- // classList
51004
- if (this.list) {
51005
- if (defined(force)) {
51006
- if (force !== this.list.toggle(name, force)) {
51007
- this.list.toggle(name); // toggle again to correct
51029
+ /**
51030
+ * Remove all classes matching `re`.
51031
+ *
51032
+ * @param {RegExp} re
51033
+ * @return {ClassList}
51034
+ * @api private
51035
+ */
51036
+
51037
+ ClassList.prototype.removeMatching = function(re) {
51038
+ var arr = this.array();
51039
+ for (var i = 0; i < arr.length; i++) {
51040
+ if (re.test(arr[i])) {
51041
+ this.remove(arr[i]);
51008
51042
  }
51009
- } else {
51010
- this.list.toggle(name);
51011
51043
  }
51012
51044
  return this;
51013
- }
51045
+ };
51014
51046
 
51015
- // fallback
51016
- if (defined(force)) {
51017
- if (!force) {
51018
- this.remove(name);
51019
- } else {
51020
- this.add(name);
51047
+ /**
51048
+ * Toggle class `name`, can force state via `force`.
51049
+ *
51050
+ * For browsers that support classList, but do not support `force` yet,
51051
+ * the mistake will be detected and corrected.
51052
+ *
51053
+ * @param {String} name
51054
+ * @param {Boolean} force
51055
+ * @return {ClassList}
51056
+ * @api public
51057
+ */
51058
+
51059
+ ClassList.prototype.toggle = function(name, force) {
51060
+ // classList
51061
+ if (this.list) {
51062
+ if (defined(force)) {
51063
+ if (force !== this.list.toggle(name, force)) {
51064
+ this.list.toggle(name); // toggle again to correct
51065
+ }
51066
+ } else {
51067
+ this.list.toggle(name);
51068
+ }
51069
+ return this;
51021
51070
  }
51022
- } else {
51023
- if (this.has(name)) {
51024
- this.remove(name);
51071
+
51072
+ // fallback
51073
+ if (defined(force)) {
51074
+ if (!force) {
51075
+ this.remove(name);
51076
+ } else {
51077
+ this.add(name);
51078
+ }
51025
51079
  } else {
51026
- this.add(name);
51080
+ if (this.has(name)) {
51081
+ this.remove(name);
51082
+ } else {
51083
+ this.add(name);
51084
+ }
51027
51085
  }
51028
- }
51029
51086
 
51030
- return this;
51031
- };
51087
+ return this;
51088
+ };
51032
51089
 
51033
- /**
51034
- * Return an array of classes.
51035
- *
51036
- * @return {Array}
51037
- * @api public
51038
- */
51090
+ /**
51091
+ * Return an array of classes.
51092
+ *
51093
+ * @return {Array}
51094
+ * @api public
51095
+ */
51039
51096
 
51040
- ClassList.prototype.array = function() {
51041
- var className = this.el.getAttribute('class') || '';
51042
- var str = className.replace(/^\s+|\s+$/g, '');
51043
- var arr = str.split(re);
51044
- if ('' === arr[0]) {
51045
- arr.shift();
51046
- }
51047
- return arr;
51048
- };
51097
+ ClassList.prototype.array = function() {
51098
+ var className = this.el.getAttribute('class') || '';
51099
+ var str = className.replace(/^\s+|\s+$/g, '');
51100
+ var arr = str.split(re);
51101
+ if ('' === arr[0]) {
51102
+ arr.shift();
51103
+ }
51104
+ return arr;
51105
+ };
51049
51106
 
51050
- /**
51051
- * Check if class `name` is present.
51052
- *
51053
- * @param {String} name
51054
- * @return {ClassList}
51055
- * @api public
51056
- */
51107
+ /**
51108
+ * Check if class `name` is present.
51109
+ *
51110
+ * @param {String} name
51111
+ * @return {ClassList}
51112
+ * @api public
51113
+ */
51057
51114
 
51058
- ClassList.prototype.has =
51059
- ClassList.prototype.contains = function(name) {
51060
- return (
51061
- this.list ?
51062
- this.list.contains(name) :
51063
- !! ~index(this.array(), name)
51064
- );
51065
- };
51066
-
51067
- },{}],308:[function(_dereq_,module,exports){
51068
- /**
51069
- * Clear utility
51070
- */
51071
-
51072
- module.exports = clear;
51073
-
51115
+ ClassList.prototype.has =
51116
+ ClassList.prototype.contains = function(name) {
51117
+ return (
51118
+ this.list ?
51119
+ this.list.contains(name) :
51120
+ !! ~index(this.array(), name)
51121
+ );
51122
+ };
51074
51123
 
51075
- var remove = _dereq_(313);
51124
+ function remove(element) {
51125
+ var parent = element.parentNode;
51076
51126
 
51077
- /**
51078
- * Removes all children from the given element
51079
- *
51080
- * @param {DOMElement} element
51081
- * @return {DOMElement} the element (for chaining)
51082
- */
51083
- function clear(element) {
51084
- var child;
51127
+ if (parent) {
51128
+ parent.removeChild(element);
51129
+ }
51085
51130
 
51086
- while ((child = element.firstChild)) {
51087
- remove(child);
51131
+ return element;
51088
51132
  }
51089
51133
 
51090
- return element;
51091
- }
51092
- },{"313":313}],309:[function(_dereq_,module,exports){
51093
- module.exports = clone;
51094
-
51095
- function clone(element) {
51096
- return element.cloneNode(true);
51097
- }
51098
- },{}],310:[function(_dereq_,module,exports){
51099
- /**
51100
- * Create utility for SVG elements
51101
- */
51102
-
51103
- module.exports = create;
51104
-
51105
-
51106
- var attr = _dereq_(306);
51107
- var parse = _dereq_(317);
51108
- var ns = _dereq_(316);
51134
+ /**
51135
+ * Clear utility
51136
+ */
51109
51137
 
51138
+ /**
51139
+ * Removes all children from the given element
51140
+ *
51141
+ * @param {DOMElement} element
51142
+ * @return {DOMElement} the element (for chaining)
51143
+ */
51144
+ function clear(element) {
51145
+ var child;
51110
51146
 
51111
- /**
51112
- * Create a specific type from name or SVG markup.
51113
- *
51114
- * @param {String} name the name or markup of the element
51115
- * @param {Object} [attrs] attributes to set on the element
51116
- *
51117
- * @returns {SVGElement}
51118
- */
51119
- function create(name, attrs) {
51120
- var element;
51147
+ while ((child = element.firstChild)) {
51148
+ remove(child);
51149
+ }
51121
51150
 
51122
- if (name.charAt(0) === '<') {
51123
- element = parse(name).firstChild;
51124
- element = document.importNode(element, true);
51125
- } else {
51126
- element = document.createElementNS(ns.svg, name);
51151
+ return element;
51127
51152
  }
51128
51153
 
51129
- if (attrs) {
51130
- attr(element, attrs);
51154
+ function clone(element) {
51155
+ return element.cloneNode(true);
51131
51156
  }
51132
51157
 
51133
- return element;
51134
- }
51135
- },{"306":306,"316":316,"317":317}],311:[function(_dereq_,module,exports){
51136
- /**
51137
- * Geometry helpers
51138
- */
51158
+ var ns = {
51159
+ svg: 'http://www.w3.org/2000/svg'
51160
+ };
51139
51161
 
51162
+ /**
51163
+ * DOM parsing utility
51164
+ */
51140
51165
 
51141
- var create = _dereq_(310);
51166
+ var SVG_START = '<svg xmlns="' + ns.svg + '"';
51142
51167
 
51143
- // fake node used to instantiate svg geometry elements
51144
- var node = create('svg');
51168
+ function parse(svg) {
51145
51169
 
51146
- function extend(object, props) {
51147
- var i, k, keys = Object.keys(props);
51170
+ // ensure we import a valid svg document
51171
+ if (svg.substring(0, 4) === '<svg') {
51172
+ if (svg.indexOf(ns.svg) === -1) {
51173
+ svg = SVG_START + svg.substring(4);
51174
+ }
51175
+ } else {
51176
+ // namespace svg
51177
+ svg = SVG_START + '>' + svg + '</svg>';
51178
+ }
51148
51179
 
51149
- for (i = 0; (k = keys[i]); i++) {
51150
- object[k] = props[k];
51180
+ return parseDocument(svg);
51151
51181
  }
51152
51182
 
51153
- return object;
51154
- }
51183
+ function parseDocument(svg) {
51155
51184
 
51185
+ var parser;
51156
51186
 
51157
- function createPoint(x, y) {
51158
- var point = node.createSVGPoint();
51187
+ // parse
51188
+ parser = new DOMParser();
51189
+ parser.async = false;
51159
51190
 
51160
- switch (arguments.length) {
51161
- case 0:
51162
- return point;
51163
- case 2:
51164
- x = {
51165
- x: x,
51166
- y: y
51167
- };
51168
- break;
51191
+ return parser.parseFromString(svg, 'text/xml');
51169
51192
  }
51170
51193
 
51171
- return extend(point, x);
51172
- }
51194
+ /**
51195
+ * Create utility for SVG elements
51196
+ */
51173
51197
 
51174
- function createMatrix(a, b, c, d, e, f) {
51175
- var matrix = node.createSVGMatrix();
51176
51198
 
51177
- switch (arguments.length) {
51178
- case 0:
51179
- return matrix;
51180
- case 6:
51181
- a = {
51182
- a: a,
51183
- b: b,
51184
- c: c,
51185
- d: d,
51186
- e: e,
51187
- f: f
51188
- };
51189
- break;
51190
- }
51191
-
51192
- return extend(matrix, a);
51193
- }
51199
+ /**
51200
+ * Create a specific type from name or SVG markup.
51201
+ *
51202
+ * @param {String} name the name or markup of the element
51203
+ * @param {Object} [attrs] attributes to set on the element
51204
+ *
51205
+ * @returns {SVGElement}
51206
+ */
51207
+ function create(name, attrs) {
51208
+ var element;
51194
51209
 
51195
- function createTransform(matrix) {
51196
- if (matrix) {
51197
- return node.createSVGTransformFromMatrix(matrix);
51198
- } else {
51199
- return node.createSVGTransform();
51200
- }
51201
- }
51210
+ if (name.charAt(0) === '<') {
51211
+ element = parse(name).firstChild;
51212
+ element = document.importNode(element, true);
51213
+ } else {
51214
+ element = document.createElementNS(ns.svg, name);
51215
+ }
51202
51216
 
51217
+ if (attrs) {
51218
+ attr(element, attrs);
51219
+ }
51203
51220
 
51204
- module.exports.createTransform = createTransform;
51205
- module.exports.createMatrix = createMatrix;
51206
- module.exports.createPoint = createPoint;
51207
- },{"310":310}],312:[function(_dereq_,module,exports){
51208
- /**
51209
- * innerHTML like functionality for SVG elements.
51210
- * based on innerSVG (https://code.google.com/p/innersvg)
51211
- */
51221
+ return element;
51222
+ }
51212
51223
 
51213
- module.exports = innerSVG;
51224
+ /**
51225
+ * Events handling utility
51226
+ */
51214
51227
 
51228
+ function on(node, event, listener, useCapture) {
51229
+ node.addEventListener(event, listener, useCapture);
51230
+ }
51215
51231
 
51216
- var clear = _dereq_(308);
51217
- var appendTo = _dereq_(305);
51218
- var parse = _dereq_(317);
51219
- var serialize = _dereq_(318);
51232
+ function off(node, event, listener, useCapture) {
51233
+ node.removeEventListener(event, listener, useCapture);
51234
+ }
51220
51235
 
51236
+ /**
51237
+ * Geometry helpers
51238
+ */
51221
51239
 
51222
- function set(element, svg) {
51240
+ // fake node used to instantiate svg geometry elements
51241
+ var node = create('svg');
51223
51242
 
51224
- var node,
51225
- documentElement = parse(svg).documentElement;
51243
+ function extend(object, props) {
51244
+ var i, k, keys = Object.keys(props);
51226
51245
 
51227
- // clear element contents
51228
- clear(element);
51246
+ for (i = 0; (k = keys[i]); i++) {
51247
+ object[k] = props[k];
51248
+ }
51229
51249
 
51230
- if (!svg) {
51231
- return;
51250
+ return object;
51232
51251
  }
51233
51252
 
51234
- // import + append each node
51235
- node = documentElement.firstChild;
51236
51253
 
51237
- while (node) {
51238
- appendTo(node, element);
51239
- node = node.nextSibling;
51240
- }
51241
- }
51254
+ function createPoint(x, y) {
51255
+ var point = node.createSVGPoint();
51242
51256
 
51243
- function get(element) {
51244
- var child = element.firstChild,
51245
- output = [];
51257
+ switch (arguments.length) {
51258
+ case 0:
51259
+ return point;
51260
+ case 2:
51261
+ x = {
51262
+ x: x,
51263
+ y: y
51264
+ };
51265
+ break;
51266
+ }
51246
51267
 
51247
- while (child) {
51248
- serialize(child, output);
51249
- child = child.nextSibling;
51268
+ return extend(point, x);
51250
51269
  }
51251
51270
 
51252
- return output.join('');
51253
- }
51271
+ function createMatrix(a, b, c, d, e, f) {
51272
+ var matrix = node.createSVGMatrix();
51254
51273
 
51255
- function innerSVG(element, svg) {
51274
+ switch (arguments.length) {
51275
+ case 0:
51276
+ return matrix;
51277
+ case 6:
51278
+ a = {
51279
+ a: a,
51280
+ b: b,
51281
+ c: c,
51282
+ d: d,
51283
+ e: e,
51284
+ f: f
51285
+ };
51286
+ break;
51287
+ }
51256
51288
 
51257
- if (svg !== undefined) {
51289
+ return extend(matrix, a);
51290
+ }
51258
51291
 
51259
- try {
51260
- set(element, svg);
51261
- } catch (e) {
51262
- throw new Error('error parsing SVG: ' + e.message);
51292
+ function createTransform(matrix) {
51293
+ if (matrix) {
51294
+ return node.createSVGTransformFromMatrix(matrix);
51295
+ } else {
51296
+ return node.createSVGTransform();
51263
51297
  }
51264
-
51265
- return element;
51266
- } else {
51267
- return get(element);
51268
51298
  }
51269
- }
51270
- },{"305":305,"308":308,"317":317,"318":318}],313:[function(_dereq_,module,exports){
51271
- module.exports = remove;
51272
51299
 
51273
- function remove(element) {
51274
- var parent = element.parentNode;
51300
+ /**
51301
+ * Serialization util
51302
+ */
51275
51303
 
51276
- if (parent) {
51277
- parent.removeChild(element);
51278
- }
51304
+ var TEXT_ENTITIES = /([&<>]{1})/g;
51305
+ var ATTR_ENTITIES = /([\n\r"]{1})/g;
51279
51306
 
51280
- return element;
51281
- }
51282
- },{}],314:[function(_dereq_,module,exports){
51283
- /**
51284
- * transform accessor utility
51285
- */
51307
+ var ENTITY_REPLACEMENT = {
51308
+ '&': '&amp;',
51309
+ '<': '&lt;',
51310
+ '>': '&gt;',
51311
+ '"': '\''
51312
+ };
51286
51313
 
51287
- module.exports = transform;
51314
+ function escape(str, pattern) {
51288
51315
 
51289
- function wrapMatrix(transformList, transform) {
51290
- if (transform instanceof SVGMatrix) {
51291
- return transformList.createSVGTransformFromMatrix(transform);
51292
- } else {
51293
- return transform;
51316
+ function replaceFn(match, entity) {
51317
+ return ENTITY_REPLACEMENT[entity] || entity;
51318
+ }
51319
+
51320
+ return str.replace(pattern, replaceFn);
51294
51321
  }
51295
- }
51296
51322
 
51297
- function setTransforms(transformList, transforms) {
51298
- var i, t;
51323
+ function serialize(node, output) {
51299
51324
 
51300
- transformList.clear();
51325
+ var i, len, attrMap, attrNode, childNodes;
51301
51326
 
51302
- for (i = 0; (t = transforms[i]); i++) {
51303
- transformList.appendItem(wrapMatrix(transformList, t));
51304
- }
51327
+ switch (node.nodeType) {
51328
+ // TEXT
51329
+ case 3:
51330
+ // replace special XML characters
51331
+ output.push(escape(node.textContent, TEXT_ENTITIES));
51332
+ break;
51305
51333
 
51306
- transformList.consolidate();
51307
- }
51334
+ // ELEMENT
51335
+ case 1:
51336
+ output.push('<', node.tagName);
51308
51337
 
51309
- function transform(node, transforms) {
51310
- var transformList = node.transform.baseVal;
51338
+ if (node.hasAttributes()) {
51339
+ attrMap = node.attributes;
51340
+ for (i = 0, len = attrMap.length; i < len; ++i) {
51341
+ attrNode = attrMap.item(i);
51342
+ output.push(' ', attrNode.name, '="', escape(attrNode.value, ATTR_ENTITIES), '"');
51343
+ }
51344
+ }
51311
51345
 
51312
- if (arguments.length === 1) {
51313
- return transformList.consolidate();
51314
- } else {
51315
- if (transforms.length) {
51316
- setTransforms(transformList, transforms);
51317
- } else {
51318
- transformList.initialize(wrapMatrix(transformList, transforms));
51319
- }
51320
- }
51321
- }
51322
- },{}],315:[function(_dereq_,module,exports){
51323
- module.exports = ensureImported;
51346
+ if (node.hasChildNodes()) {
51347
+ output.push('>');
51348
+ childNodes = node.childNodes;
51349
+ for (i = 0, len = childNodes.length; i < len; ++i) {
51350
+ serialize(childNodes.item(i), output);
51351
+ }
51352
+ output.push('</', node.tagName, '>');
51353
+ } else {
51354
+ output.push('/>');
51355
+ }
51356
+ break;
51324
51357
 
51325
- function ensureImported(element, target) {
51358
+ // COMMENT
51359
+ case 8:
51360
+ output.push('<!--', escape(node.nodeValue, TEXT_ENTITIES), '-->');
51361
+ break;
51326
51362
 
51327
- if (element.ownerDocument !== target.ownerDocument) {
51328
- try {
51329
- // may fail on webkit
51330
- return target.ownerDocument.importNode(element, true);
51331
- } catch (e) {
51332
- // ignore
51363
+ // CDATA
51364
+ case 4:
51365
+ output.push('<![CDATA[', node.nodeValue, ']]>');
51366
+ break;
51367
+
51368
+ default:
51369
+ throw new Error('unable to handle node ' + node.nodeType);
51333
51370
  }
51371
+
51372
+ return output;
51334
51373
  }
51335
51374
 
51336
- return element;
51337
- }
51338
- },{}],316:[function(_dereq_,module,exports){
51339
- var ns = {
51340
- svg: 'http://www.w3.org/2000/svg'
51341
- };
51375
+ /**
51376
+ * innerHTML like functionality for SVG elements.
51377
+ * based on innerSVG (https://code.google.com/p/innersvg)
51378
+ */
51342
51379
 
51343
- module.exports = ns;
51344
- },{}],317:[function(_dereq_,module,exports){
51345
- /**
51346
- * DOM parsing utility
51347
- */
51348
51380
 
51349
- module.exports = parse;
51381
+ function set(element, svg) {
51350
51382
 
51383
+ var node,
51384
+ documentElement = parse(svg).documentElement;
51351
51385
 
51352
- var ns = _dereq_(316);
51386
+ // clear element contents
51387
+ clear(element);
51353
51388
 
51354
- var SVG_START = '<svg xmlns="' + ns.svg + '"';
51389
+ if (!svg) {
51390
+ return;
51391
+ }
51355
51392
 
51356
- function parse(svg) {
51393
+ // import + append each node
51394
+ node = documentElement.firstChild;
51357
51395
 
51358
- // ensure we import a valid svg document
51359
- if (svg.substring(0, 4) === '<svg') {
51360
- if (svg.indexOf(ns.svg) === -1) {
51361
- svg = SVG_START + svg.substring(4);
51396
+ while (node) {
51397
+ appendTo(node, element);
51398
+ node = node.nextSibling;
51362
51399
  }
51363
- } else {
51364
- // namespace svg
51365
- svg = SVG_START + '>' + svg + '</svg>';
51366
51400
  }
51367
51401
 
51368
- return parseDocument(svg);
51369
- }
51402
+ function get(element) {
51403
+ var child = element.firstChild,
51404
+ output = [];
51370
51405
 
51371
- function parseDocument(svg) {
51406
+ while (child) {
51407
+ serialize(child, output);
51408
+ child = child.nextSibling;
51409
+ }
51372
51410
 
51373
- var parser;
51411
+ return output.join('');
51412
+ }
51374
51413
 
51375
- // parse
51376
- parser = new DOMParser();
51377
- parser.async = false;
51414
+ function innerSVG(element, svg) {
51378
51415
 
51379
- return parser.parseFromString(svg, 'text/xml');
51380
- }
51381
- },{"316":316}],318:[function(_dereq_,module,exports){
51382
- /**
51383
- * Serialization util
51384
- */
51416
+ if (svg !== undefined) {
51385
51417
 
51386
- module.exports = serialize;
51418
+ try {
51419
+ set(element, svg);
51420
+ } catch (e) {
51421
+ throw new Error('error parsing SVG: ' + e.message);
51422
+ }
51387
51423
 
51424
+ return element;
51425
+ } else {
51426
+ return get(element);
51427
+ }
51428
+ }
51388
51429
 
51389
- var TEXT_ENTITIES = /([&<>]{1})/g;
51390
- var ATTR_ENTITIES = /([\n\r"]{1})/g;
51430
+ /**
51431
+ * Selection utilities
51432
+ */
51391
51433
 
51392
- var ENTITY_REPLACEMENT = {
51393
- '&': '&amp;',
51394
- '<': '&lt;',
51395
- '>': '&gt;',
51396
- '"': '\''
51397
- };
51434
+ function select(node, selector) {
51435
+ return node.querySelector(selector);
51436
+ }
51398
51437
 
51399
- function escape(str, pattern) {
51438
+ function selectAll(node, selector) {
51439
+ var nodes = node.querySelectorAll(selector);
51400
51440
 
51401
- function replaceFn(match, entity) {
51402
- return ENTITY_REPLACEMENT[entity] || entity;
51441
+ return [].map.call(nodes, function(element) {
51442
+ return element;
51443
+ });
51403
51444
  }
51404
51445
 
51405
- return str.replace(pattern, replaceFn);
51406
- }
51446
+ /**
51447
+ * Replace utility
51448
+ */
51407
51449
 
51408
- function serialize(node, output) {
51450
+ function replace(element, replacement) {
51451
+ element.parentNode.replaceChild(ensureImported(replacement, element), element);
51452
+ return replacement;
51453
+ }
51409
51454
 
51410
- var i, len, attrMap, attrNode, childNodes;
51455
+ /**
51456
+ * transform accessor utility
51457
+ */
51411
51458
 
51412
- switch (node.nodeType) {
51413
- // TEXT
51414
- case 3:
51415
- // replace special XML characters
51416
- output.push(escape(node.textContent, TEXT_ENTITIES));
51417
- break;
51459
+ function wrapMatrix(transformList, transform) {
51460
+ if (transform instanceof SVGMatrix) {
51461
+ return transformList.createSVGTransformFromMatrix(transform);
51462
+ } else {
51463
+ return transform;
51464
+ }
51465
+ }
51418
51466
 
51419
- // ELEMENT
51420
- case 1:
51421
- output.push('<', node.tagName);
51467
+ function setTransforms(transformList, transforms) {
51468
+ var i, t;
51422
51469
 
51423
- if (node.hasAttributes()) {
51424
- attrMap = node.attributes;
51425
- for (i = 0, len = attrMap.length; i < len; ++i) {
51426
- attrNode = attrMap.item(i);
51427
- output.push(' ', attrNode.name, '="', escape(attrNode.value, ATTR_ENTITIES), '"');
51428
- }
51429
- }
51470
+ transformList.clear();
51430
51471
 
51431
- if (node.hasChildNodes()) {
51432
- output.push('>');
51433
- childNodes = node.childNodes;
51434
- for (i = 0, len = childNodes.length; i < len; ++i) {
51435
- serialize(childNodes.item(i), output);
51436
- }
51437
- output.push('</', node.tagName, '>');
51438
- } else {
51439
- output.push('/>');
51472
+ for (i = 0; (t = transforms[i]); i++) {
51473
+ transformList.appendItem(wrapMatrix(transformList, t));
51440
51474
  }
51441
- break;
51442
51475
 
51443
- // COMMENT
51444
- case 8:
51445
- output.push('<!--', escape(node.nodeValue, TEXT_ENTITIES), '-->');
51446
- break;
51476
+ transformList.consolidate();
51477
+ }
51447
51478
 
51448
- // CDATA
51449
- case 4:
51450
- output.push('<![CDATA[', node.nodeValue, ']]>');
51451
- break;
51479
+ function transform(node, transforms) {
51480
+ var transformList = node.transform.baseVal;
51452
51481
 
51453
- default:
51454
- throw new Error('unable to handle node ' + node.nodeType);
51455
- }
51482
+ if (arguments.length === 1) {
51483
+ return transformList.consolidate();
51484
+ } else {
51485
+ if (transforms.length) {
51486
+ setTransforms(transformList, transforms);
51487
+ } else {
51488
+ transformList.initialize(wrapMatrix(transformList, transforms));
51489
+ }
51490
+ }
51491
+ }
51492
+
51493
+ exports.append = append;
51494
+ exports.appendTo = appendTo;
51495
+ exports.attr = attr;
51496
+ exports.classes = classes;
51497
+ exports.clear = clear;
51498
+ exports.clone = clone;
51499
+ exports.create = create;
51500
+ exports.innerSVG = innerSVG;
51501
+ exports.remove = remove;
51502
+ exports.replace = replace;
51503
+ exports.transform = transform;
51504
+ exports.on = on;
51505
+ exports.off = off;
51506
+ exports.createPoint = createPoint;
51507
+ exports.createMatrix = createMatrix;
51508
+ exports.createTransform = createTransform;
51509
+ exports.select = select;
51510
+ exports.selectAll = selectAll;
51511
+
51512
+ Object.defineProperty(exports, '__esModule', { value: true });
51513
+
51514
+ })));
51456
51515
 
51457
- return output;
51458
- }
51459
51516
  },{}]},{},[1])(1)
51460
51517
  });