diff --git a/lib/Viewer.js b/lib/Viewer.js index 175361c7..52dd6969 100644 --- a/lib/Viewer.js +++ b/lib/Viewer.js @@ -8,35 +8,6 @@ var Diagram = require('diagram-js'), var Importer = require('./import/Importer'); -function getSvgContents(diagram) { - var outerNode = diagram.get('canvas').getContainer(); - var svg = outerNode.innerHTML; - - svg = svg.replace(/^.*]*>|<\/svg>.*$/g, '') - .replace('Created with Snap', '') - .replace(/ - *
  • remove outer-bound-marker (a safari mobile work around)
  • - * - */ -function svgDomCleanUp(svg) { - var svgDoc = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); - svgDoc.innerHTML = svg; - _.forEach(svgDoc.querySelectorAll('.outer-bound-marker'), function (e) { - e.remove(); - }); - return svgDoc; -} - - function initListeners(diagram, listeners) { var events = diagram.get('eventBus'); @@ -160,27 +131,32 @@ Viewer.prototype.createModdle = function() { return new BpmnModdle(); }; -var SVG_HEADER = -'\n' + -'\n' + -'\n' + -'\n'; - -var SVG_FOOTER = ''; - Viewer.prototype.saveSVG = function(options, done) { + if (!done) { done = options; options = {}; } - if (!this.definitions) { - return done(new Error('no definitions loaded')); - } + var canvas = this.get('canvas'); - var svgContents = getSvgContents(this.diagram); + var contentNode = canvas.getLayer('base'), + defsNode = canvas._paper.select('defs'); - var svg = SVG_HEADER + svgContents + SVG_FOOTER; + var contents = contentNode.innerSVG(), + defs = (defsNode && defsNode.outerSVG()) || ''; + + var bbox = contentNode.getBBox(); + + var svg = + '\n' + + '\n' + + '\n' + + '' + + defs + contents + + ''; done(null, svg); };