diff --git a/src/diagrams/common/common.js b/src/diagrams/common/common.js
index cc91948fc..975bd6176 100644
--- a/src/diagrams/common/common.js
+++ b/src/diagrams/common/common.js
@@ -25,8 +25,10 @@ export const sanitizeText = (text, config) => {
return txt;
};
+export const lineBreakRegex = /
/gi;
+
const breakToPlaceholder = s => {
- return s.replace(/
/gi, '#br#');
+ return s.replace(lineBreakRegex, '#br#');
};
const placeholderToBreak = s => {
@@ -35,5 +37,6 @@ const placeholderToBreak = s => {
export default {
getRows,
- sanitizeText
+ sanitizeText,
+ lineBreakRegex
};
diff --git a/src/diagrams/flowchart/flowRenderer-v2.js b/src/diagrams/flowchart/flowRenderer-v2.js
index 5e4b2ef87..e382e0174 100644
--- a/src/diagrams/flowchart/flowRenderer-v2.js
+++ b/src/diagrams/flowchart/flowRenderer-v2.js
@@ -8,6 +8,7 @@ import { getConfig } from '../../config';
import { render } from '../../dagre-wrapper/index.js';
import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';
import { logger } from '../../logger';
+import common from '../common/common';
import { interpolateToCurve, getStylesFromArray } from '../../utils';
const conf = {};
@@ -61,7 +62,7 @@ export const addVertices = function(vert, g, svgId) {
const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');
svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));
- const rows = vertexText.split(/
/gi);
+ const rows = vertexText.split(common.lineBreakRegex);
for (let j = 0; j < rows.length; j++) {
const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');
@@ -243,7 +244,7 @@ export const addEdges = function(edges, g) {
edgeData.label = '' + edge.text + '';
} else {
edgeData.labelType = 'text';
- edgeData.label = edge.text.replace(/
/gi, '\n');
+ edgeData.label = edge.text.replace(common.lineBreakRegex, '\n');
if (typeof edge.style === 'undefined') {
edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';
diff --git a/src/diagrams/flowchart/flowRenderer.js b/src/diagrams/flowchart/flowRenderer.js
index 6f86d638d..bbb8af944 100644
--- a/src/diagrams/flowchart/flowRenderer.js
+++ b/src/diagrams/flowchart/flowRenderer.js
@@ -8,6 +8,7 @@ import { getConfig } from '../../config';
import dagreD3 from 'dagre-d3';
import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';
import { logger } from '../../logger';
+import common from '../common/common';
import { interpolateToCurve, getStylesFromArray } from '../../utils';
import flowChartShapes from './flowChartShapes';
@@ -62,7 +63,7 @@ export const addVertices = function(vert, g, svgId) {
const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');
svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));
- const rows = vertexText.split(/
/gi);
+ const rows = vertexText.split(common.lineBreakRegex);
for (let j = 0; j < rows.length; j++) {
const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');
@@ -225,7 +226,7 @@ export const addEdges = function(edges, g) {
edgeData.label = '' + edge.text + '';
} else {
edgeData.labelType = 'text';
- edgeData.label = edge.text.replace(/
/gi, '\n');
+ edgeData.label = edge.text.replace(common.lineBreakRegex, '\n');
if (typeof edge.style === 'undefined') {
edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';
diff --git a/src/diagrams/gantt/ganttRenderer.js b/src/diagrams/gantt/ganttRenderer.js
index 825b7dce8..b12fd5b5e 100644
--- a/src/diagrams/gantt/ganttRenderer.js
+++ b/src/diagrams/gantt/ganttRenderer.js
@@ -1,6 +1,7 @@
import * as d3 from 'd3';
import { parser } from './parser/gantt';
+import common from '../common/common';
import ganttDb from './ganttDb';
parser.yy = ganttDb;
@@ -358,7 +359,7 @@ export const draw = function(text, id) {
.data(numOccurances)
.enter()
.append(function(d) {
- const rows = d[0].split(/
/gi);
+ const rows = d[0].split(common.lineBreakRegex);
const dy = -(rows.length - 1) / 2;
const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');
diff --git a/src/diagrams/sequence/sequenceRenderer.js b/src/diagrams/sequence/sequenceRenderer.js
index c297a6526..523e396dc 100644
--- a/src/diagrams/sequence/sequenceRenderer.js
+++ b/src/diagrams/sequence/sequenceRenderer.js
@@ -3,6 +3,7 @@ import * as d3 from 'd3';
import svgDraw from './svgDraw';
import { logger } from '../../logger';
import { parser } from './parser/sequenceDiagram';
+import common from '../common/common';
import sequenceDb from './sequenceDb';
parser.yy = sequenceDb;
@@ -170,7 +171,7 @@ export const bounds = {
const _drawLongText = (text, x, y, g, width) => {
let textHeight = 0;
- const lines = text.split(/
/gi);
+ const lines = text.split(common.lineBreakRegex);
for (const line of lines) {
const textObj = svgDraw.getTextObj();
textObj.x = x;
@@ -235,7 +236,7 @@ const drawMessage = function(elem, startx, stopx, verticalPos, msg, sequenceInde
let textElems = [];
let counterBreaklines = 0;
let breaklineOffset = 17;
- const breaklines = msg.message.split(/
/gi);
+ const breaklines = msg.message.split(common.lineBreakRegex);
for (const breakline of breaklines) {
textElems.push(
g
diff --git a/src/diagrams/sequence/svgDraw.js b/src/diagrams/sequence/svgDraw.js
index d8047e403..edcdd160a 100644
--- a/src/diagrams/sequence/svgDraw.js
+++ b/src/diagrams/sequence/svgDraw.js
@@ -1,3 +1,5 @@
+import common from '../common/common';
+
export const drawRect = function(elem, rectData) {
const rectElem = elem.append('rect');
rectElem.attr('x', rectData.x);
@@ -18,7 +20,7 @@ export const drawRect = function(elem, rectData) {
export const drawText = function(elem, textData) {
// Remove and ignore br:s
- const nText = textData.text.replace(/
/gi, ' ');
+ const nText = textData.text.replace(common.lineBreakRegex, ' ');
const textElem = elem.append('text');
textElem.attr('x', textData.x);
@@ -321,7 +323,7 @@ const _drawTextCandidateFunc = (function() {
function byTspan(content, g, x, y, width, height, textAttrs, conf) {
const { actorFontSize, actorFontFamily } = conf;
- const lines = content.split(/
/gi);
+ const lines = content.split(common.lineBreakRegex);
for (let i = 0; i < lines.length; i++) {
const dy = i * actorFontSize - (actorFontSize * (lines.length - 1)) / 2;
const text = g
diff --git a/src/diagrams/state/shapes.js b/src/diagrams/state/shapes.js
index a436e23b3..8de5a03d9 100644
--- a/src/diagrams/state/shapes.js
+++ b/src/diagrams/state/shapes.js
@@ -282,7 +282,7 @@ const drawForkJoinState = (g, stateDef) => {
export const drawText = function(elem, textData) {
// Remove and ignore br:s
- const nText = textData.text.replace(/
/gi, ' ');
+ const nText = textData.text.replace(common.lineBreakRegex, ' ');
const textElem = elem.append('text');
textElem.attr('x', textData.x);
@@ -310,7 +310,7 @@ const _drawLongText = (_text, x, y, g) => {
let text = _text.replace(/\r\n/g, '
');
text = text.replace(/\n/g, '
');
- const lines = text.split(/
/gi);
+ const lines = text.split(common.lineBreakRegex);
let tHeight = 1.25 * getConfig().state.noteMargin;
for (const line of lines) {