removed references to `arguments` object in various files
parent
942f537f17
commit
452ba705ea
|
@ -75,7 +75,7 @@ class mxDefaultKeyHandler {
|
|||
let old = this.handler.escape;
|
||||
|
||||
this.handler.escape = (evt) => {
|
||||
old.apply(this, arguments);
|
||||
old.apply(this, [editor]);
|
||||
editor.hideProperties();
|
||||
editor.fireEvent(new mxEventObject(mxEvent.ESCAPE, 'event', evt));
|
||||
};
|
||||
|
|
|
@ -115,7 +115,7 @@ class mxDefaultToolbar {
|
|||
|
||||
if (funct != null) {
|
||||
this.editor.insertFunction = () => {
|
||||
funct.apply(this, arguments);
|
||||
funct.apply(this, [container]);
|
||||
this.toolbar.resetMode();
|
||||
};
|
||||
} else {
|
||||
|
|
|
@ -1401,8 +1401,7 @@ class mxEditor extends mxEventSource {
|
|||
try {
|
||||
// Creates the array of arguments by replacing the actionname
|
||||
// with the editor instance in the args of this function
|
||||
let args = arguments;
|
||||
args[0] = this;
|
||||
let args = [this, cell, evt];
|
||||
|
||||
// Invokes the function on the editor using the args
|
||||
action.apply(this, args);
|
||||
|
|
|
@ -2,6 +2,20 @@
|
|||
* Copyright (c) 2006-2016, JGraph Ltd
|
||||
* Copyright (c) 2006-2016, Gaudenz Alder
|
||||
*/
|
||||
import mxGeometry from "../model/mxGeometry";
|
||||
import mxCell from "../model/mxCell";
|
||||
import mxPoint from "../util/mxPoint";
|
||||
import mxEventObject from "../util/mxEventObject";
|
||||
import mxEvent from "../util/mxEvent";
|
||||
import mxConstants from "../util/mxConstants";
|
||||
import mxUtils from "../util/mxUtils";
|
||||
import mxMouseEvent from "../util/mxMouseEvent";
|
||||
import mxImageShape from "../shape/mxImageShape";
|
||||
import mxCellMarker from "./mxCellMarker";
|
||||
import mxConstraintHandler from "./mxConstraintHandler";
|
||||
import mxPolyline from "../shape/mxPolyline";
|
||||
import mxEventSource from "../util/mxEventSource";
|
||||
import mxRectangle from "../util/mxRectangle";
|
||||
|
||||
class mxConnectionHandler extends mxEventSource {
|
||||
/**
|
||||
|
@ -421,7 +435,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
* released.
|
||||
*/
|
||||
isInsertBefore = (edge, source, target, evt, dropTarget) => {
|
||||
return this.insertBeforeSource && source != target;
|
||||
return this.insertBeforeSource && source !== target;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -456,7 +470,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
let shape = (this.livePreview && this.edgeState != null) ?
|
||||
this.graph.cellRenderer.createShape(this.edgeState) :
|
||||
new mxPolyline([], mxConstants.INVALID_COLOR);
|
||||
shape.dialect = (this.graph.dialect != mxConstants.DIALECT_SVG) ?
|
||||
shape.dialect = (this.graph.dialect !== mxConstants.DIALECT_SVG) ?
|
||||
mxConstants.DIALECT_VML : mxConstants.DIALECT_SVG;
|
||||
shape.scale = this.graph.view.scale;
|
||||
shape.pointerEvents = false;
|
||||
|
@ -558,7 +572,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
if (this.previous != null) {
|
||||
this.error = this.validateConnection(this.previous.cell, cell);
|
||||
|
||||
if (this.error != null && this.error.length == 0) {
|
||||
if (this.error != null && this.error.length === 0) {
|
||||
cell = null;
|
||||
|
||||
// Enables create target inside groups
|
||||
|
@ -583,7 +597,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
if (this.isConnecting()) {
|
||||
return this.error == null;
|
||||
} else {
|
||||
return isValidState.apply(marker, arguments);
|
||||
return this.isValidState.apply(marker, arguments);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -709,7 +723,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
* state - <mxCellState> whose connect icons should be returned.
|
||||
*/
|
||||
isMoveIconToFrontForState = (state) => {
|
||||
if (state.text != null && state.text.node.parentNode == this.graph.container) {
|
||||
if (state.text != null && state.text.node.parentNode === this.graph.container) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -745,7 +759,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
icon.dialect = mxConstants.DIALECT_STRICTHTML;
|
||||
icon.init(this.graph.container);
|
||||
} else {
|
||||
icon.dialect = (this.graph.dialect == mxConstants.DIALECT_SVG) ?
|
||||
icon.dialect = (this.graph.dialect === mxConstants.DIALECT_SVG) ?
|
||||
mxConstants.DIALECT_SVG : mxConstants.DIALECT_VML;
|
||||
icon.init(this.graph.getView().getOverlayPane());
|
||||
|
||||
|
@ -818,12 +832,12 @@ class mxConnectionHandler extends mxEventSource {
|
|||
if (this.graph.isSwimlane(state.cell)) {
|
||||
let size = this.graph.getStartSize(state.cell);
|
||||
|
||||
cx = (size.width != 0) ? state.x + size.width * scale / 2 : cx;
|
||||
cy = (size.height != 0) ? state.y + size.height * scale / 2 : cy;
|
||||
cx = (size.width !== 0) ? state.x + size.width * scale / 2 : cx;
|
||||
cy = (size.height !== 0) ? state.y + size.height * scale / 2 : cy;
|
||||
|
||||
let alpha = mxUtils.toRadians(mxUtils.getValue(state.style, mxConstants.STYLE_ROTATION) || 0);
|
||||
|
||||
if (alpha != 0) {
|
||||
if (alpha !== 0) {
|
||||
let cos = Math.cos(alpha);
|
||||
let sin = Math.sin(alpha);
|
||||
let ct = new mxPoint(state.getCenterX(), state.getCenterY());
|
||||
|
@ -865,9 +879,9 @@ class mxConnectionHandler extends mxEventSource {
|
|||
* <icons> is null or <icons> and <icon> are not null.
|
||||
*/
|
||||
isStartEvent = (me) => {
|
||||
return ((this.constraintHandler.currentFocus != null && this.constraintHandler.currentConstraint != null) ||
|
||||
(this.previous != null && this.error == null && (this.icons == null || (this.icons != null &&
|
||||
this.icon != null))));
|
||||
return ((this.constraintHandler.currentFocus !== null && this.constraintHandler.currentConstraint !== null) ||
|
||||
(this.previous !== null && this.error === null && (this.icons === null || (this.icons !== null &&
|
||||
this.icon !== null))));
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -974,7 +988,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
(me.isSource(this.marker.highlight.shape) ||
|
||||
(mxEvent.isAltDown(me.getEvent()) && me.getState() != null) ||
|
||||
this.marker.highlight.isHighlightAt(clientX, clientY) ||
|
||||
((gridX != clientX || gridY != clientY) && me.getState() == null &&
|
||||
((gridX !== clientX || gridY !== clientY) && me.getState() == null &&
|
||||
this.marker.highlight.isHighlightAt(gridX, gridY)));
|
||||
};
|
||||
|
||||
|
@ -992,9 +1006,9 @@ class mxConnectionHandler extends mxEventSource {
|
|||
// Handles special case where grid is large and connection point is at actual point in which
|
||||
// case the outline is not followed as long as we're < gridSize / 2 away from that point
|
||||
if (this.marker.highlight != null && this.marker.highlight.state != null &&
|
||||
this.marker.highlight.state.cell == this.constraintHandler.currentFocus.cell) {
|
||||
this.marker.highlight.state.cell === this.constraintHandler.currentFocus.cell) {
|
||||
// Direct repaint needed if cell already highlighted
|
||||
if (this.marker.highlight.shape.stroke != 'transparent') {
|
||||
if (this.marker.highlight.shape.stroke !== 'transparent') {
|
||||
this.marker.highlight.shape.stroke = 'transparent';
|
||||
this.marker.highlight.repaint();
|
||||
}
|
||||
|
@ -1059,7 +1073,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
// are not equal (due to grid snapping) and there is no hit on shape or highlight
|
||||
// but ignores cases where parent is used for non-connectable child cells
|
||||
if (this.graph.isCellConnectable(me.getCell()) &&
|
||||
this.marker.getValidState() != me.getState()) {
|
||||
this.marker.getValidState() !== me.getState()) {
|
||||
this.marker.highlight.shape.stroke = 'transparent';
|
||||
this.currentState = null;
|
||||
} else {
|
||||
|
@ -1242,7 +1256,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
|
||||
let len = Math.sqrt(dx * dx + dy * dy);
|
||||
|
||||
if (len == 0) {
|
||||
if (len === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1298,7 +1312,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
me.consume();
|
||||
} else if (!this.isEnabled() || !this.graph.isEnabled()) {
|
||||
this.constraintHandler.reset();
|
||||
} else if (this.previous != this.currentState && this.edgeState == null) {
|
||||
} else if (this.previous !== this.currentState && this.edgeState == null) {
|
||||
this.destroyIcons();
|
||||
|
||||
// Sets the cursor on the current shape
|
||||
|
@ -1312,7 +1326,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
}
|
||||
|
||||
this.previous = this.currentState;
|
||||
} else if (this.previous == this.currentState && this.currentState != null && this.icons == null &&
|
||||
} else if (this.previous === this.currentState && this.currentState != null && this.icons == null &&
|
||||
!this.graph.isMouseDown) {
|
||||
// Makes sure that no cursors are changed
|
||||
me.consume();
|
||||
|
@ -1323,7 +1337,7 @@ class mxConnectionHandler extends mxEventSource {
|
|||
let target = me.getSource();
|
||||
|
||||
for (let i = 0; i < this.icons.length && !hitsIcon; i++) {
|
||||
hitsIcon = target == this.icons[i].node || target.parentNode == this.icons[i].node;
|
||||
hitsIcon = target === this.icons[i].node || target.parentNode === this.icons[i].node;
|
||||
}
|
||||
|
||||
if (!hitsIcon) {
|
||||
|
@ -1520,8 +1534,8 @@ class mxConnectionHandler extends mxEventSource {
|
|||
*/
|
||||
checkConstraints = (c1, c2) => {
|
||||
return (c1 == null || c2 == null || c1.point == null || c2.point == null ||
|
||||
!c1.point.equals(c2.point) || c1.dx != c2.dx || c1.dy != c2.dy ||
|
||||
c1.perimeter != c2.perimeter);
|
||||
!c1.point.equals(c2.point) || c1.dx !== c2.dx || c1.dy !== c2.dy ||
|
||||
c1.perimeter !== c2.perimeter);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1555,12 +1569,12 @@ class mxConnectionHandler extends mxEventSource {
|
|||
|
||||
// Inserts the edge if no validation error exists and if constraints differ
|
||||
if (this.error == null && (source == null || target == null ||
|
||||
source != target || this.checkConstraints(c1, c2))) {
|
||||
source !== target || this.checkConstraints(c1, c2))) {
|
||||
this.connect(source, target, me.getEvent(), me.getCell());
|
||||
} else {
|
||||
// Selects the source terminal for self-references
|
||||
if (this.previous != null && this.marker.validState != null &&
|
||||
this.previous.cell == this.marker.validState.cell) {
|
||||
this.previous.cell === this.marker.validState.cell) {
|
||||
this.graph.selectCellForEvent(this.marker.source, me.getEvent());
|
||||
}
|
||||
|
||||
|
@ -1721,8 +1735,8 @@ class mxConnectionHandler extends mxEventSource {
|
|||
let parent = this.graph.getDefaultParent();
|
||||
|
||||
if (source != null && target != null &&
|
||||
model.getParent(source) == model.getParent(target) &&
|
||||
model.getParent(model.getParent(source)) != model.getRoot()) {
|
||||
model.getParent(source) === model.getParent(target) &&
|
||||
model.getParent(model.getParent(source)) !== model.getRoot()) {
|
||||
parent = model.getParent(source);
|
||||
|
||||
if ((source.geometry != null && source.geometry.relative) &&
|
||||
|
@ -1761,11 +1775,11 @@ class mxConnectionHandler extends mxEventSource {
|
|||
let tmp = source;
|
||||
|
||||
while (tmp.parent != null && tmp.geometry != null &&
|
||||
tmp.geometry.relative && tmp.parent != edge.parent) {
|
||||
tmp.geometry.relative && tmp.parent !== edge.parent) {
|
||||
tmp = this.graph.model.getParent(tmp);
|
||||
}
|
||||
|
||||
if (tmp != null && tmp.parent != null && tmp.parent == edge.parent) {
|
||||
if (tmp != null && tmp.parent != null && tmp.parent === edge.parent) {
|
||||
model.add(parent, edge, tmp.parent.getIndex(tmp));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,15 @@
|
|||
* Copyright (c) 2006-2015, Gaudenz Alder
|
||||
* Updated to ES9 syntax by David Morrissey 2021
|
||||
*/
|
||||
import mxCellMarker from "./mxCellMarker";
|
||||
import mxPoint from "../util/mxPoint";
|
||||
import mxConstants from "../util/mxConstants";
|
||||
import mxUtils from "../examples/map-background/leaflet";
|
||||
import mxImageShape from "../shape/mxImageShape";
|
||||
import mxRectangleShape from "../shape/mxRectangleShape";
|
||||
import mxConnectionConstraint from "../view/mxConnectionConstraint";
|
||||
import mxEvent from "../util/mxEvent";
|
||||
import mxConstraintHandler from "./mxConstraintHandler";
|
||||
|
||||
class mxEdgeHandler {
|
||||
/**
|
||||
|
@ -265,7 +274,7 @@ class mxEdgeHandler {
|
|||
// for the initial configuration and preview
|
||||
this.abspoints = this.getSelectionPoints(this.state);
|
||||
this.shape = this.createSelectionShape(this.abspoints);
|
||||
this.shape.dialect = (this.graph.dialect != mxConstants.DIALECT_SVG) ?
|
||||
this.shape.dialect = (this.graph.dialect !== mxConstants.DIALECT_SVG) ?
|
||||
mxConstants.DIALECT_MIXEDHTML : mxConstants.DIALECT_SVG;
|
||||
this.shape.init(this.graph.getView().getOverlayPane());
|
||||
this.shape.pointerEvents = false;
|
||||
|
@ -274,7 +283,7 @@ class mxEdgeHandler {
|
|||
|
||||
// Updates preferHtml
|
||||
this.preferHtml = this.state.text != null &&
|
||||
this.state.text.node.parentNode == this.graph.container;
|
||||
this.state.text.node.parentNode === this.graph.container;
|
||||
|
||||
if (!this.preferHtml) {
|
||||
// Checks source terminal
|
||||
|
@ -282,7 +291,7 @@ class mxEdgeHandler {
|
|||
|
||||
if (sourceState != null) {
|
||||
this.preferHtml = sourceState.text != null &&
|
||||
sourceState.text.node.parentNode == this.graph.container;
|
||||
sourceState.text.node.parentNode === this.graph.container;
|
||||
}
|
||||
|
||||
if (!this.preferHtml) {
|
||||
|
@ -291,7 +300,7 @@ class mxEdgeHandler {
|
|||
|
||||
if (targetState != null) {
|
||||
this.preferHtml = targetState.text != null &&
|
||||
targetState.text.node.parentNode == this.graph.container;
|
||||
targetState.text.node.parentNode === this.graph.container;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -337,9 +346,9 @@ class mxEdgeHandler {
|
|||
*/
|
||||
isVirtualBendsEnabled = (evt) => {
|
||||
return this.virtualBendsEnabled && (this.state.style[mxConstants.STYLE_EDGE] == null ||
|
||||
this.state.style[mxConstants.STYLE_EDGE] == mxConstants.NONE ||
|
||||
this.state.style[mxConstants.STYLE_NOEDGESTYLE] == 1) &&
|
||||
mxUtils.getValue(this.state.style, mxConstants.STYLE_SHAPE, null) != 'arrow';
|
||||
this.state.style[mxConstants.STYLE_EDGE] === mxConstants.NONE ||
|
||||
this.state.style[mxConstants.STYLE_NOEDGESTYLE] === 1) &&
|
||||
mxUtils.getValue(this.state.style, mxConstants.STYLE_SHAPE, null) !== 'arrow';
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -473,7 +482,7 @@ class mxEdgeHandler {
|
|||
let cell = getCell.apply(this, arguments);
|
||||
|
||||
// Checks for cell at preview point (with grid)
|
||||
if ((cell == self.state.cell || cell == null) && self.currentPoint != null) {
|
||||
if ((cell === self.state.cell || cell == null) && self.currentPoint != null) {
|
||||
cell = self.graph.getCellAt(self.currentPoint.x, self.currentPoint.y);
|
||||
}
|
||||
|
||||
|
@ -490,7 +499,7 @@ class mxEdgeHandler {
|
|||
|
||||
if ((this.graph.isSwimlane(cell) && self.currentPoint != null &&
|
||||
this.graph.hitsSwimlaneContent(cell, self.currentPoint.x, self.currentPoint.y)) ||
|
||||
(!self.isConnectableCell(cell)) || (cell == self.state.cell ||
|
||||
(!self.isConnectableCell(cell)) || (cell === self.state.cell ||
|
||||
(cell != null && !self.graph.connectableEdges && model.isEdge(cell))) ||
|
||||
model.isAncestor(self.state.cell, cell)) {
|
||||
cell = null;
|
||||
|
@ -550,8 +559,8 @@ class mxEdgeHandler {
|
|||
|
||||
for (let i = 0; i < this.abspoints.length; i++) {
|
||||
if (this.isHandleVisible(i)) {
|
||||
let source = i == 0;
|
||||
let target = i == this.abspoints.length - 1;
|
||||
let source = i === 0;
|
||||
let target = i === this.abspoints.length - 1;
|
||||
let terminal = source || target;
|
||||
|
||||
if (terminal || this.graph.isCellBendable(cell)) {
|
||||
|
@ -625,7 +634,7 @@ class mxEdgeHandler {
|
|||
let geo = this.graph.getCellGeometry(this.state.cell);
|
||||
let edgeStyle = (geo != null) ? this.graph.view.getEdgeStyle(this.state, geo.points, source, target) : null;
|
||||
|
||||
return edgeStyle != mxEdgeStyle.EntityRelation || index == 0 || index == this.abspoints.length - 1;
|
||||
return edgeStyle !== mxEdgeStyle.EntityRelation || index === 0 || index === this.abspoints.length - 1;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -689,7 +698,7 @@ class mxEdgeHandler {
|
|||
bend.dialect = mxConstants.DIALECT_STRICTHTML;
|
||||
bend.init(this.graph.container);
|
||||
} else {
|
||||
bend.dialect = (this.graph.dialect != mxConstants.DIALECT_SVG) ?
|
||||
bend.dialect = (this.graph.dialect !== mxConstants.DIALECT_SVG) ?
|
||||
mxConstants.DIALECT_MIXEDHTML : mxConstants.DIALECT_SVG;
|
||||
bend.init(this.graph.getView().getOverlayPane());
|
||||
}
|
||||
|
@ -853,7 +862,7 @@ class mxEdgeHandler {
|
|||
if (this.index <= mxEvent.CUSTOM_HANDLE && this.index > mxEvent.VIRTUAL_HANDLE) {
|
||||
if (this.customHandles != null) {
|
||||
for (let i = 0; i < this.customHandles.length; i++) {
|
||||
if (i != mxEvent.CUSTOM_HANDLE - this.index) {
|
||||
if (i !== mxEvent.CUSTOM_HANDLE - this.index) {
|
||||
this.customHandles[i].setVisible(false);
|
||||
}
|
||||
}
|
||||
|
@ -993,9 +1002,9 @@ class mxEdgeHandler {
|
|||
// Handles special case where grid is large and connection point is at actual point in which
|
||||
// case the outline is not followed as long as we're < gridSize / 2 away from that point
|
||||
if (this.marker.highlight != null && this.marker.highlight.state != null &&
|
||||
this.marker.highlight.state.cell == this.constraintHandler.currentFocus.cell) {
|
||||
this.marker.highlight.state.cell === this.constraintHandler.currentFocus.cell) {
|
||||
// Direct repaint needed if cell already highlighted
|
||||
if (this.marker.highlight.shape.stroke != 'transparent') {
|
||||
if (this.marker.highlight.shape.stroke !== 'transparent') {
|
||||
this.marker.highlight.shape.stroke = 'transparent';
|
||||
this.marker.highlight.repaint();
|
||||
}
|
||||
|
@ -1166,7 +1175,7 @@ class mxEdgeHandler {
|
|||
(me.isSource(this.marker.highlight.shape) ||
|
||||
(mxEvent.isAltDown(me.getEvent()) && me.getState() != null) ||
|
||||
this.marker.highlight.isHighlightAt(clientX, clientY) ||
|
||||
((gridX != clientX || gridY != clientY) && me.getState() == null &&
|
||||
((gridX !== clientX || gridY !== clientY) && me.getState() == null &&
|
||||
this.marker.highlight.isHighlightAt(gridX, gridY)));
|
||||
};
|
||||
|
||||
|
@ -1212,7 +1221,7 @@ class mxEdgeHandler {
|
|||
this.marker.highlight.repaint();
|
||||
} else if (this.marker.hasValidState()) {
|
||||
this.marker.highlight.shape.stroke = (this.graph.isCellConnectable(me.getCell()) &&
|
||||
this.marker.getValidState() != me.getState()) ?
|
||||
this.marker.getValidState() !== me.getState()) ?
|
||||
'transparent' : mxConstants.DEFAULT_VALID_COLOR;
|
||||
this.marker.highlight.shape.strokewidth = mxConstants.HIGHLIGHT_STROKEWIDTH / s / s;
|
||||
this.marker.highlight.repaint();
|
||||
|
@ -1356,7 +1365,7 @@ class mxEdgeHandler {
|
|||
this.index = null;
|
||||
|
||||
// Ignores event if mouse has not been moved
|
||||
if (me.getX() != this.startX || me.getY() != this.startY) {
|
||||
if (me.getX() !== this.startX || me.getY() !== this.startY) {
|
||||
let clone = !this.graph.isIgnoreTerminalEvent(me.getEvent()) && this.graph.isCloneEvent(me.getEvent()) &&
|
||||
this.cloneEnabled && this.graph.isCellsCloneable();
|
||||
|
||||
|
@ -1394,8 +1403,8 @@ class mxEdgeHandler {
|
|||
|
||||
if (terminal == null && this.marker.hasValidState() && this.marker.highlight != null &&
|
||||
this.marker.highlight.shape != null &&
|
||||
this.marker.highlight.shape.stroke != 'transparent' &&
|
||||
this.marker.highlight.shape.stroke != 'white') {
|
||||
this.marker.highlight.shape.stroke !== 'transparent' &&
|
||||
this.marker.highlight.shape.stroke !== 'white') {
|
||||
terminal = this.marker.validState.cell;
|
||||
}
|
||||
|
||||
|
@ -1461,7 +1470,7 @@ class mxEdgeHandler {
|
|||
this.reset();
|
||||
|
||||
// Updates the selection if the edge has been cloned
|
||||
if (edge != this.state.cell) {
|
||||
if (edge !== this.state.cell) {
|
||||
this.graph.setSelectionCell(edge);
|
||||
}
|
||||
}
|
||||
|
@ -1791,7 +1800,7 @@ class mxEdgeHandler {
|
|||
* Returns the fillcolor for the handle at the given index.
|
||||
*/
|
||||
getHandleFillColor = (index) => {
|
||||
let isSource = index == 0;
|
||||
let isSource = index === 0;
|
||||
let cell = this.state.cell;
|
||||
let terminal = this.graph.getModel().getTerminal(cell, isSource);
|
||||
let color = mxConstants.HANDLE_FILLCOLOR;
|
||||
|
@ -1941,7 +1950,7 @@ class mxEdgeHandler {
|
|||
* Returns true if the given custom handle is visible.
|
||||
*/
|
||||
isCustomHandleVisible = (handle) => {
|
||||
return !this.graph.isEditing() && this.state.view.graph.getSelectionCount() == 1;
|
||||
return !this.graph.isEditing() && this.state.view.graph.getSelectionCount() === 1;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -2150,7 +2159,7 @@ class mxEdgeHandler {
|
|||
let parent = this.graph.model.getParent(this.state.cell);
|
||||
let pstate = this.graph.view.getState(parent);
|
||||
|
||||
if (pstate != null && pstate.parentHighlight == this.parentHighlight) {
|
||||
if (pstate != null && pstate.parentHighlight === this.parentHighlight) {
|
||||
pstate.parentHighlight = null;
|
||||
}
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ class mxEdgeSegmentHandler extends mxElbowEdgeHandler {
|
|||
*/
|
||||
getPreviewPoints = (point) => {
|
||||
if (this.isSource || this.isTarget) {
|
||||
return getPreviewPoints.apply(this, arguments);
|
||||
return super.getPreviewPoints(point);
|
||||
} else {
|
||||
let pts = this.getCurrentPoints();
|
||||
let last = this.convertPoint(pts[0].clone(), false);
|
||||
|
@ -52,13 +52,13 @@ class mxEdgeSegmentHandler extends mxElbowEdgeHandler {
|
|||
for (let i = 1; i < pts.length; i++) {
|
||||
let pt = this.convertPoint(pts[i].clone(), false);
|
||||
|
||||
if (i == this.index) {
|
||||
if (Math.round(last.x - pt.x) == 0) {
|
||||
if (i === this.index) {
|
||||
if (Math.round(last.x - pt.x) === 0) {
|
||||
last.x = point.x;
|
||||
pt.x = point.x;
|
||||
}
|
||||
|
||||
if (Math.round(last.y - pt.y) == 0) {
|
||||
if (Math.round(last.y - pt.y) === 0) {
|
||||
last.y = point.y;
|
||||
pt.y = point.y;
|
||||
}
|
||||
|
@ -97,7 +97,7 @@ class mxEdgeSegmentHandler extends mxElbowEdgeHandler {
|
|||
* Overridden to perform optimization of the edge style result.
|
||||
*/
|
||||
updatePreviewState = (edge, point, terminalState, me) => {
|
||||
updatePreviewState.apply(this, arguments);
|
||||
super.updatePreviewState(edge, point, terminalState, me);
|
||||
|
||||
// Checks and corrects preview by running edge style again
|
||||
if (!this.isSource && !this.isTarget) {
|
||||
|
@ -112,8 +112,8 @@ class mxEdgeSegmentHandler extends mxElbowEdgeHandler {
|
|||
var pt2 = pts[i];
|
||||
|
||||
// Merges adjacent segments only if more than 2 to allow for straight edges
|
||||
if ((Math.round(pt0.x - pt1.x) != 0 || Math.round(pt1.x - pt2.x) != 0) &&
|
||||
(Math.round(pt0.y - pt1.y) != 0 || Math.round(pt1.y - pt2.y) != 0)) {
|
||||
if ((Math.round(pt0.x - pt1.x) !== 0 || Math.round(pt1.x - pt2.x) !== 0) &&
|
||||
(Math.round(pt0.y - pt1.y) !== 0 || Math.round(pt1.y - pt2.y) !== 0)) {
|
||||
result.push(this.convertPoint(pt1.clone(), false));
|
||||
}
|
||||
|
||||
|
@ -219,7 +219,7 @@ class mxEdgeSegmentHandler extends mxElbowEdgeHandler {
|
|||
}
|
||||
}
|
||||
|
||||
edge = connect.apply(this, arguments);
|
||||
edge = super.connect(edge, terminal, isSource, isClone, me);
|
||||
} finally {
|
||||
model.endUpdate();
|
||||
}
|
||||
|
@ -242,7 +242,7 @@ class mxEdgeSegmentHandler extends mxElbowEdgeHandler {
|
|||
* Starts the handling of the mouse gesture.
|
||||
*/
|
||||
start = (x, y, index) => {
|
||||
start.apply(this, arguments);
|
||||
super.start(x, y, index);
|
||||
|
||||
if (this.bends != null && this.bends[index] != null &&
|
||||
!this.isSource && !this.isTarget) {
|
||||
|
@ -303,7 +303,7 @@ class mxEdgeSegmentHandler extends mxElbowEdgeHandler {
|
|||
*/
|
||||
redraw = () => {
|
||||
this.refresh();
|
||||
redraw.apply(this, arguments);
|
||||
super.redraw();
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -124,7 +124,7 @@ class mxEditorCodec extends mxObjectCodec {
|
|||
return;
|
||||
}
|
||||
|
||||
decodeChild.apply(this, arguments);
|
||||
super.decodeChild.apply(this, [dec, child, obj]);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -42,7 +42,7 @@ class mxModelCodec extends mxObjectCodec {
|
|||
if (child.nodeName === 'root') {
|
||||
this.decodeRoot(dec, child, obj);
|
||||
} else {
|
||||
decodeChild.apply(this, arguments);
|
||||
decodeChild.apply(this, [dec, child, obj]);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -62,9 +62,9 @@ class mxCompositeLayout extends mxGraphLayout {
|
|||
*/
|
||||
moveCell = (cell, x, y) => {
|
||||
if (this.master != null) {
|
||||
this.master.moveCell.apply(this.master, arguments);
|
||||
this.master.moveCell.apply(this.master, [cell, x, y]);
|
||||
} else {
|
||||
this.layouts[0].moveCell.apply(this.layouts[0], arguments);
|
||||
this.layouts[0].moveCell.apply(this.layouts[0], [cell, x, y]);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -80,7 +80,7 @@ class mxCompositeLayout extends mxGraphLayout {
|
|||
model.beginUpdate();
|
||||
try {
|
||||
for (let i = 0; i < this.layouts.length; i++) {
|
||||
this.layouts[i].execute.apply(this.layouts[i], arguments);
|
||||
this.layouts[i].execute.apply(this.layouts[i], [parent]);
|
||||
}
|
||||
} finally {
|
||||
model.endUpdate();
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2006-2015, Gaudenz Alder
|
||||
* Updated to ES9 syntax by David Morrissey 2021
|
||||
*/
|
||||
import mxCompactTreeLayout from "./mxCompactTreeLayout";
|
||||
|
||||
class mxRadialTreeLayout extends mxCompactTreeLayout {
|
||||
/**
|
||||
|
@ -155,7 +156,7 @@ class mxRadialTreeLayout extends mxCompactTreeLayout {
|
|||
this.edgeRouting = false;
|
||||
//this.horizontal = false;
|
||||
|
||||
execute.apply(this, arguments);
|
||||
super.execute(parent, root);
|
||||
|
||||
let bounds = null;
|
||||
let rootBounds = this.getVertexBounds(this.root);
|
||||
|
@ -253,7 +254,7 @@ class mxRadialTreeLayout extends mxCompactTreeLayout {
|
|||
* rowNum - Integer indicating which row is being processed.
|
||||
*/
|
||||
calcRowDims = (row, rowNum) => {
|
||||
if (row == null || row.length == 0) {
|
||||
if (row == null || row.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -374,8 +374,8 @@ class mxGeometry extends mxRectangle {
|
|||
* Returns true if the given object equals this geometry.
|
||||
*/
|
||||
equals = (obj) => {
|
||||
return equals.apply(this, arguments) &&
|
||||
this.relative == obj.relative &&
|
||||
return super.equals(obj) &&
|
||||
this.relative === obj.relative &&
|
||||
((this.sourcePoint == null && obj.sourcePoint == null) || (this.sourcePoint != null && this.sourcePoint.equals(obj.sourcePoint))) &&
|
||||
((this.targetPoint == null && obj.targetPoint == null) || (this.targetPoint != null && this.targetPoint.equals(obj.targetPoint))) &&
|
||||
((this.points == null && obj.points == null) || (this.points != null && mxUtils.equalPoints(this.points, obj.points))) &&
|
||||
|
|
|
@ -68,8 +68,7 @@ class mxArrowConnector extends mxShape {
|
|||
* Overrides mxShape to reset spacing.
|
||||
*/
|
||||
resetStyles = () => {
|
||||
resetStyles.apply(this, arguments);
|
||||
|
||||
super.resetStyles();
|
||||
this.arrowSpacing = mxConstants.ARROW_SPACING;
|
||||
};
|
||||
|
||||
|
@ -77,7 +76,7 @@ class mxArrowConnector extends mxShape {
|
|||
* Overrides apply to get smooth transition from default start- and endsize.
|
||||
*/
|
||||
apply = (state) => {
|
||||
apply.apply(this, arguments);
|
||||
super.apply(state);
|
||||
|
||||
if (this.style != null) {
|
||||
this.startSize = mxUtils.getNumber(this.style, mxConstants.STYLE_STARTSIZE, mxConstants.ARROW_SIZE / 5) * 3;
|
||||
|
@ -91,7 +90,7 @@ class mxArrowConnector extends mxShape {
|
|||
* Augments the bounding box with the edge width and markers.
|
||||
*/
|
||||
augmentBoundingBox = (bbox) => {
|
||||
augmentBoundingBox.apply(this, arguments);
|
||||
super.augmentBoundingBox(bbox);
|
||||
|
||||
let w = this.getEdgeWidth();
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2006-2015, Gaudenz Alder
|
||||
* Updated to ES9 syntax by David Morrissey 2021
|
||||
*/
|
||||
import mxConstants from "../util/mxConstants";
|
||||
|
||||
class mxConnector extends mxPolyLine {
|
||||
/**
|
||||
|
@ -39,7 +40,7 @@ class mxConnector extends mxPolyLine {
|
|||
*/
|
||||
updateBoundingBox = () => {
|
||||
this.useSvgBoundingBox = this.style != null && this.style[mxConstants.STYLE_CURVED] === 1;
|
||||
updateBoundingBox.apply(this, arguments);
|
||||
super.updateBoundingBox();
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
* Updated to ES9 syntax by David Morrissey 2021
|
||||
*/
|
||||
|
||||
import mxUtils from "../util/mxUtils";
|
||||
import mxConstants from "../util/mxConstants";
|
||||
|
||||
class mxImageShape extends mxRectangleShape {
|
||||
/**
|
||||
* Variable: preserveImageAspect
|
||||
|
@ -70,7 +73,7 @@ class mxImageShape extends mxRectangleShape {
|
|||
* state - <mxCellState> of the corresponding cell.
|
||||
*/
|
||||
apply = (state) => {
|
||||
apply.apply(this, arguments);
|
||||
super.apply(state);
|
||||
|
||||
this.fill = null;
|
||||
this.stroke = null;
|
||||
|
@ -139,7 +142,7 @@ class mxImageShape extends mxRectangleShape {
|
|||
// FlipH/V are implicit via mxShape.updateTransform
|
||||
c.image(x, y, w, h, this.image, this.preserveImageAspect, false, false);
|
||||
|
||||
let stroke = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_BORDER, null);
|
||||
stroke = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_BORDER, null);
|
||||
|
||||
if (stroke != null) {
|
||||
c.setShadow(false);
|
||||
|
@ -148,7 +151,7 @@ class mxImageShape extends mxRectangleShape {
|
|||
c.stroke();
|
||||
}
|
||||
} else {
|
||||
paintBackground.apply(this, arguments);
|
||||
this.paintBackground(c, x, y, w, h);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -3,241 +3,242 @@
|
|||
* Copyright (c) 2006-2015, Gaudenz Alder
|
||||
* Updated to ES9 syntax by David Morrissey 2021
|
||||
*/
|
||||
/**
|
||||
* Class: mxLabel
|
||||
*
|
||||
* Extends <mxShape> to implement an image shape with a label.
|
||||
* This shape is registered under <mxConstants.SHAPE_LABEL> in
|
||||
* <mxCellRenderer>.
|
||||
*
|
||||
* Constructor: mxLabel
|
||||
*
|
||||
* Constructs a new label shape.
|
||||
*
|
||||
* Parameters:
|
||||
*
|
||||
* bounds - <mxRectangle> that defines the bounds. This is stored in
|
||||
* <mxShape.bounds>.
|
||||
* fill - String that defines the fill color. This is stored in <fill>.
|
||||
* stroke - String that defines the stroke color. This is stored in <stroke>.
|
||||
* strokewidth - Optional integer that defines the stroke width. Default is
|
||||
* 1. This is stored in <strokewidth>.
|
||||
*/
|
||||
function mxLabel(bounds, fill, stroke, strokewidth) {
|
||||
mxRectangleShape.call(this, bounds, fill, stroke, strokewidth);
|
||||
import mxRectangle from "../util/mxRectangle";
|
||||
import mxConstants from "../util/mxConstants";
|
||||
import mxRectangleShape from "./mxRectangleShape";
|
||||
|
||||
class mxLabel extends mxRectangleShape {
|
||||
/**
|
||||
* Variable: imageSize
|
||||
*
|
||||
* Default width and height for the image. Default is
|
||||
* <mxConstants.DEFAULT_IMAGESIZE>.
|
||||
*/
|
||||
imageSize = mxConstants.DEFAULT_IMAGESIZE;
|
||||
|
||||
/**
|
||||
* Variable: spacing
|
||||
*
|
||||
* Default value for image spacing. Default is 2.
|
||||
*/
|
||||
spacing = 2;
|
||||
|
||||
/**
|
||||
* Variable: indicatorSize
|
||||
*
|
||||
* Default width and height for the indicicator. Default is 10.
|
||||
*/
|
||||
indicatorSize = 10;
|
||||
|
||||
/**
|
||||
* Variable: indicatorSpacing
|
||||
*
|
||||
* Default spacing between image and indicator. Default is 2.
|
||||
*/
|
||||
indicatorSpacing = 2;
|
||||
|
||||
/**
|
||||
* Class: mxLabel
|
||||
*
|
||||
* Extends <mxShape> to implement an image shape with a label.
|
||||
* This shape is registered under <mxConstants.SHAPE_LABEL> in
|
||||
* <mxCellRenderer>.
|
||||
*
|
||||
* Constructor: mxLabel
|
||||
*
|
||||
* Constructs a new label shape.
|
||||
*
|
||||
* Parameters:
|
||||
*
|
||||
* bounds - <mxRectangle> that defines the bounds. This is stored in
|
||||
* <mxShape.bounds>.
|
||||
* fill - String that defines the fill color. This is stored in <fill>.
|
||||
* stroke - String that defines the stroke color. This is stored in <stroke>.
|
||||
* strokewidth - Optional integer that defines the stroke width. Default is
|
||||
* 1. This is stored in <strokewidth>.
|
||||
*/
|
||||
constructor(bounds, fill, stroke, strokewidth) {
|
||||
super(bounds, fill, stroke, strokewidth);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function: init
|
||||
*
|
||||
* Initializes the shape and the <indicator>.
|
||||
*/
|
||||
init = (container) => {
|
||||
super.init(container);
|
||||
|
||||
if (this.indicatorShape != null) {
|
||||
this.indicator = new this.indicatorShape();
|
||||
this.indicator.dialect = this.dialect;
|
||||
this.indicator.init(this.node);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: redraw
|
||||
*
|
||||
* Reconfigures this shape. This will update the colors of the indicator
|
||||
* and reconfigure it if required.
|
||||
*/
|
||||
redraw = () => {
|
||||
if (this.indicator != null) {
|
||||
this.indicator.fill = this.indicatorColor;
|
||||
this.indicator.stroke = this.indicatorStrokeColor;
|
||||
this.indicator.gradient = this.indicatorGradientColor;
|
||||
this.indicator.direction = this.indicatorDirection;
|
||||
this.indicator.redraw();
|
||||
}
|
||||
super.redraw();
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: isHtmlAllowed
|
||||
*
|
||||
* Returns true for non-rounded, non-rotated shapes with no glass gradient and
|
||||
* no indicator shape.
|
||||
*/
|
||||
isHtmlAllowed = () => {
|
||||
return super.isHtmlAllowed() &&
|
||||
this.indicatorColor == null && this.indicatorShape == null;
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: paintForeground
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
paintForeground = (c, x, y, w, h) => {
|
||||
this.paintImage(c, x, y, w, h);
|
||||
this.paintIndicator(c, x, y, w, h);
|
||||
super.paintForeground(c, x, y, w, h);
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: paintImage
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
paintImage = (c, x, y, w, h) => {
|
||||
if (this.image != null) {
|
||||
let bounds = this.getImageBounds(x, y, w, h);
|
||||
c.image(bounds.x, bounds.y, bounds.width, bounds.height, this.image, false, false, false);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: getImageBounds
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
getImageBounds = (x, y, w, h) => {
|
||||
let align = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_ALIGN, mxConstants.ALIGN_LEFT);
|
||||
let valign = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_VERTICAL_ALIGN, mxConstants.ALIGN_MIDDLE);
|
||||
let width = mxUtils.getNumber(this.style, mxConstants.STYLE_IMAGE_WIDTH, mxConstants.DEFAULT_IMAGESIZE);
|
||||
let height = mxUtils.getNumber(this.style, mxConstants.STYLE_IMAGE_HEIGHT, mxConstants.DEFAULT_IMAGESIZE);
|
||||
let spacing = mxUtils.getNumber(this.style, mxConstants.STYLE_SPACING, this.spacing) + 5;
|
||||
|
||||
if (align == mxConstants.ALIGN_CENTER) {
|
||||
x += (w - width) / 2;
|
||||
} else if (align == mxConstants.ALIGN_RIGHT) {
|
||||
x += w - width - spacing;
|
||||
} else // default is left
|
||||
{
|
||||
x += spacing;
|
||||
}
|
||||
|
||||
if (valign == mxConstants.ALIGN_TOP) {
|
||||
y += spacing;
|
||||
} else if (valign == mxConstants.ALIGN_BOTTOM) {
|
||||
y += h - height - spacing;
|
||||
} else // default is middle
|
||||
{
|
||||
y += (h - height) / 2;
|
||||
}
|
||||
|
||||
return new mxRectangle(x, y, width, height);
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: paintIndicator
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
paintIndicator = (c, x, y, w, h) => {
|
||||
if (this.indicator != null) {
|
||||
this.indicator.bounds = this.getIndicatorBounds(x, y, w, h);
|
||||
this.indicator.paint(c);
|
||||
} else if (this.indicatorImage != null) {
|
||||
let bounds = this.getIndicatorBounds(x, y, w, h);
|
||||
c.image(bounds.x, bounds.y, bounds.width, bounds.height, this.indicatorImage, false, false, false);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: getIndicatorBounds
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
getIndicatorBounds = (x, y, w, h) => {
|
||||
let align = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_ALIGN, mxConstants.ALIGN_LEFT);
|
||||
let valign = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_VERTICAL_ALIGN, mxConstants.ALIGN_MIDDLE);
|
||||
let width = mxUtils.getNumber(this.style, mxConstants.STYLE_INDICATOR_WIDTH, this.indicatorSize);
|
||||
let height = mxUtils.getNumber(this.style, mxConstants.STYLE_INDICATOR_HEIGHT, this.indicatorSize);
|
||||
let spacing = this.spacing + 5;
|
||||
|
||||
if (align == mxConstants.ALIGN_RIGHT) {
|
||||
x += w - width - spacing;
|
||||
} else if (align == mxConstants.ALIGN_CENTER) {
|
||||
x += (w - width) / 2;
|
||||
} else // default is left
|
||||
{
|
||||
x += spacing;
|
||||
}
|
||||
|
||||
if (valign === mxConstants.ALIGN_BOTTOM) {
|
||||
y += h - height - spacing;
|
||||
} else if (valign === mxConstants.ALIGN_TOP) {
|
||||
y += spacing;
|
||||
} else // default is middle
|
||||
{
|
||||
y += (h - height) / 2;
|
||||
}
|
||||
|
||||
return new mxRectangle(x, y, width, height);
|
||||
};
|
||||
/**
|
||||
* Function: redrawHtmlShape
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
redrawHtmlShape = () => {
|
||||
super.redrawHtmlShape();
|
||||
|
||||
// Removes all children
|
||||
while (this.node.hasChildNodes()) {
|
||||
this.node.removeChild(this.node.lastChild);
|
||||
}
|
||||
|
||||
if (this.image != null) {
|
||||
let node = document.createElement('img');
|
||||
node.style.position = 'relative';
|
||||
node.setAttribute('border', '0');
|
||||
|
||||
let bounds = this.getImageBounds(this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height);
|
||||
bounds.x -= this.bounds.x;
|
||||
bounds.y -= this.bounds.y;
|
||||
|
||||
node.style.left = Math.round(bounds.x) + 'px';
|
||||
node.style.top = Math.round(bounds.y) + 'px';
|
||||
node.style.width = Math.round(bounds.width) + 'px';
|
||||
node.style.height = Math.round(bounds.height) + 'px';
|
||||
|
||||
node.src = this.image;
|
||||
|
||||
this.node.appendChild(node);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Extends mxShape.
|
||||
*/
|
||||
mxUtils.extend(mxLabel, mxRectangleShape);
|
||||
|
||||
/**
|
||||
* Variable: imageSize
|
||||
*
|
||||
* Default width and height for the image. Default is
|
||||
* <mxConstants.DEFAULT_IMAGESIZE>.
|
||||
*/
|
||||
imageSize = mxConstants.DEFAULT_IMAGESIZE;
|
||||
|
||||
/**
|
||||
* Variable: spacing
|
||||
*
|
||||
* Default value for image spacing. Default is 2.
|
||||
*/
|
||||
spacing = 2;
|
||||
|
||||
/**
|
||||
* Variable: indicatorSize
|
||||
*
|
||||
* Default width and height for the indicicator. Default is 10.
|
||||
*/
|
||||
indicatorSize = 10;
|
||||
|
||||
/**
|
||||
* Variable: indicatorSpacing
|
||||
*
|
||||
* Default spacing between image and indicator. Default is 2.
|
||||
*/
|
||||
indicatorSpacing = 2;
|
||||
|
||||
/**
|
||||
* Function: init
|
||||
*
|
||||
* Initializes the shape and the <indicator>.
|
||||
*/
|
||||
init = (container) => {
|
||||
init.apply(this, arguments);
|
||||
|
||||
if (this.indicatorShape != null) {
|
||||
this.indicator = new this.indicatorShape();
|
||||
this.indicator.dialect = this.dialect;
|
||||
this.indicator.init(this.node);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: redraw
|
||||
*
|
||||
* Reconfigures this shape. This will update the colors of the indicator
|
||||
* and reconfigure it if required.
|
||||
*/
|
||||
redraw = () => {
|
||||
if (this.indicator != null) {
|
||||
this.indicator.fill = this.indicatorColor;
|
||||
this.indicator.stroke = this.indicatorStrokeColor;
|
||||
this.indicator.gradient = this.indicatorGradientColor;
|
||||
this.indicator.direction = this.indicatorDirection;
|
||||
this.indicator.redraw();
|
||||
}
|
||||
|
||||
redraw.apply(this, arguments);
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: isHtmlAllowed
|
||||
*
|
||||
* Returns true for non-rounded, non-rotated shapes with no glass gradient and
|
||||
* no indicator shape.
|
||||
*/
|
||||
isHtmlAllowed = () => {
|
||||
return isHtmlAllowed.apply(this, arguments) &&
|
||||
this.indicatorColor == null && this.indicatorShape == null;
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: paintForeground
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
paintForeground = (c, x, y, w, h) => {
|
||||
this.paintImage(c, x, y, w, h);
|
||||
this.paintIndicator(c, x, y, w, h);
|
||||
|
||||
paintForeground.apply(this, arguments);
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: paintImage
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
paintImage = (c, x, y, w, h) => {
|
||||
if (this.image != null) {
|
||||
let bounds = this.getImageBounds(x, y, w, h);
|
||||
c.image(bounds.x, bounds.y, bounds.width, bounds.height, this.image, false, false, false);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: getImageBounds
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
getImageBounds = (x, y, w, h) => {
|
||||
let align = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_ALIGN, mxConstants.ALIGN_LEFT);
|
||||
let valign = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_VERTICAL_ALIGN, mxConstants.ALIGN_MIDDLE);
|
||||
let width = mxUtils.getNumber(this.style, mxConstants.STYLE_IMAGE_WIDTH, mxConstants.DEFAULT_IMAGESIZE);
|
||||
let height = mxUtils.getNumber(this.style, mxConstants.STYLE_IMAGE_HEIGHT, mxConstants.DEFAULT_IMAGESIZE);
|
||||
let spacing = mxUtils.getNumber(this.style, mxConstants.STYLE_SPACING, this.spacing) + 5;
|
||||
|
||||
if (align == mxConstants.ALIGN_CENTER) {
|
||||
x += (w - width) / 2;
|
||||
} else if (align == mxConstants.ALIGN_RIGHT) {
|
||||
x += w - width - spacing;
|
||||
} else // default is left
|
||||
{
|
||||
x += spacing;
|
||||
}
|
||||
|
||||
if (valign == mxConstants.ALIGN_TOP) {
|
||||
y += spacing;
|
||||
} else if (valign == mxConstants.ALIGN_BOTTOM) {
|
||||
y += h - height - spacing;
|
||||
} else // default is middle
|
||||
{
|
||||
y += (h - height) / 2;
|
||||
}
|
||||
|
||||
return new mxRectangle(x, y, width, height);
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: paintIndicator
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
paintIndicator = (c, x, y, w, h) => {
|
||||
if (this.indicator != null) {
|
||||
this.indicator.bounds = this.getIndicatorBounds(x, y, w, h);
|
||||
this.indicator.paint(c);
|
||||
} else if (this.indicatorImage != null) {
|
||||
let bounds = this.getIndicatorBounds(x, y, w, h);
|
||||
c.image(bounds.x, bounds.y, bounds.width, bounds.height, this.indicatorImage, false, false, false);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Function: getIndicatorBounds
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
getIndicatorBounds = (x, y, w, h) => {
|
||||
let align = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_ALIGN, mxConstants.ALIGN_LEFT);
|
||||
let valign = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_VERTICAL_ALIGN, mxConstants.ALIGN_MIDDLE);
|
||||
let width = mxUtils.getNumber(this.style, mxConstants.STYLE_INDICATOR_WIDTH, this.indicatorSize);
|
||||
let height = mxUtils.getNumber(this.style, mxConstants.STYLE_INDICATOR_HEIGHT, this.indicatorSize);
|
||||
let spacing = this.spacing + 5;
|
||||
|
||||
if (align == mxConstants.ALIGN_RIGHT) {
|
||||
x += w - width - spacing;
|
||||
} else if (align == mxConstants.ALIGN_CENTER) {
|
||||
x += (w - width) / 2;
|
||||
} else // default is left
|
||||
{
|
||||
x += spacing;
|
||||
}
|
||||
|
||||
if (valign == mxConstants.ALIGN_BOTTOM) {
|
||||
y += h - height - spacing;
|
||||
} else if (valign == mxConstants.ALIGN_TOP) {
|
||||
y += spacing;
|
||||
} else // default is middle
|
||||
{
|
||||
y += (h - height) / 2;
|
||||
}
|
||||
|
||||
return new mxRectangle(x, y, width, height);
|
||||
};
|
||||
/**
|
||||
* Function: redrawHtmlShape
|
||||
*
|
||||
* Generic background painting implementation.
|
||||
*/
|
||||
redrawHtmlShape = () => {
|
||||
redrawHtmlShape.apply(this, arguments);
|
||||
|
||||
// Removes all children
|
||||
while (this.node.hasChildNodes()) {
|
||||
this.node.removeChild(this.node.lastChild);
|
||||
}
|
||||
|
||||
if (this.image != null) {
|
||||
let node = document.createElement('img');
|
||||
node.style.position = 'relative';
|
||||
node.setAttribute('border', '0');
|
||||
|
||||
let bounds = this.getImageBounds(this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height);
|
||||
bounds.x -= this.bounds.x;
|
||||
bounds.y -= this.bounds.y;
|
||||
|
||||
node.style.left = Math.round(bounds.x) + 'px';
|
||||
node.style.top = Math.round(bounds.y) + 'px';
|
||||
node.style.width = Math.round(bounds.width) + 'px';
|
||||
node.style.height = Math.round(bounds.height) + 'px';
|
||||
|
||||
node.src = this.image;
|
||||
|
||||
this.node.appendChild(node);
|
||||
}
|
||||
};
|
||||
export default mxLabel;
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
* Updated to ES9 syntax by David Morrissey 2021
|
||||
*/
|
||||
|
||||
import mxConstants from "../util/mxConstants";
|
||||
import mxUtils from "../util/mxUtils";
|
||||
|
||||
class mxRectangleShape extends mxShape {
|
||||
/**
|
||||
* Class: mxRectangleShape
|
||||
|
@ -61,9 +64,9 @@ class mxRectangleShape extends mxShape {
|
|||
events = mxUtils.getValue(this.style, mxConstants.STYLE_POINTER_EVENTS, '1') == '1';
|
||||
}
|
||||
|
||||
if (events || (this.fill != null && this.fill != mxConstants.NONE) ||
|
||||
(this.stroke != null && this.stroke != mxConstants.NONE)) {
|
||||
if (!events && (this.fill == null || this.fill == mxConstants.NONE)) {
|
||||
if (events || (this.fill != null && this.fill !== mxConstants.NONE) ||
|
||||
(this.stroke != null && this.stroke !== mxConstants.NONE)) {
|
||||
if (!events && (this.fill == null || this.fill === mxConstants.NONE)) {
|
||||
c.pointerEvents = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -736,16 +736,16 @@ class mxShape {
|
|||
if (c != null && this.outline) {
|
||||
let stroke = c.stroke;
|
||||
|
||||
c.stroke = () => {
|
||||
c.stroke = (...args) => {
|
||||
strokeDrawn = true;
|
||||
stroke.apply(this, arguments);
|
||||
stroke.apply(this, args);
|
||||
};
|
||||
|
||||
let fillAndStroke = c.fillAndStroke;
|
||||
|
||||
c.fillAndStroke = () => {
|
||||
c.fillAndStroke = (...args) => {
|
||||
strokeDrawn = true;
|
||||
fillAndStroke.apply(this, arguments);
|
||||
fillAndStroke.apply(this, args);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,12 @@
|
|||
* Updated to ES9 syntax by David Morrissey 2021
|
||||
*/
|
||||
|
||||
import mxClient from "../mxClient";
|
||||
import mxConstants from "../util/mxConstants";
|
||||
import mxUtils from "../util/mxUtils";
|
||||
import mxPoint from "../util/mxPoint";
|
||||
import mxSvgCanvas2D from "../util/mxSvgCanvas2D";
|
||||
|
||||
class mxText extends mxShape {
|
||||
/**
|
||||
* Variable: baseSpacingTop
|
||||
|
@ -76,7 +82,7 @@ class mxText extends mxShape {
|
|||
* This is needed to make sure no clipping is applied to borders. Default is 4
|
||||
* for IE 8 standards mode and 3 for all others.
|
||||
*/
|
||||
textWidthPadding = (document.documentMode == 8 && !mxClient.IS_EM) ? 4 : 3;
|
||||
textWidthPadding = 3;
|
||||
|
||||
/**
|
||||
* Variable: lastValue
|
||||
|
@ -193,7 +199,7 @@ class mxText extends mxShape {
|
|||
* true if the browser is not in IE8 standards mode.
|
||||
*/
|
||||
isHtmlAllowed = () => {
|
||||
return document.documentMode != 8 || mxClient.IS_EM;
|
||||
return document.documentMode !== 8 || mxClient.IS_EM;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -237,31 +243,31 @@ class mxText extends mxShape {
|
|||
this.clipped, this.getTextRotation(), this.node);
|
||||
} else {
|
||||
// Checks if text contains HTML markup
|
||||
let realHtml = mxUtils.isNode(this.value) || this.dialect == mxConstants.DIALECT_STRICTHTML;
|
||||
let realHtml = mxUtils.isNode(this.value) || this.dialect === mxConstants.DIALECT_STRICTHTML;
|
||||
|
||||
// Always renders labels as HTML in VML
|
||||
let fmt = (realHtml || c instanceof mxVmlCanvas2D) ? 'html' : '';
|
||||
let val = this.value;
|
||||
|
||||
if (!realHtml && fmt == 'html') {
|
||||
if (!realHtml && fmt === 'html') {
|
||||
val = mxUtils.htmlEntities(val, false);
|
||||
}
|
||||
|
||||
if (fmt == 'html' && !mxUtils.isNode(this.value)) {
|
||||
if (fmt === 'html' && !mxUtils.isNode(this.value)) {
|
||||
val = mxUtils.replaceTrailingNewlines(val, '<div><br></div>');
|
||||
}
|
||||
|
||||
// Handles trailing newlines to make sure they are visible in rendering output
|
||||
val = (!mxUtils.isNode(this.value) && this.replaceLinefeeds && fmt == 'html') ?
|
||||
val = (!mxUtils.isNode(this.value) && this.replaceLinefeeds && fmt === 'html') ?
|
||||
val.replace(/\n/g, '<br/>') : val;
|
||||
|
||||
let dir = this.textDirection;
|
||||
|
||||
if (dir == mxConstants.TEXT_DIRECTION_AUTO && !realHtml) {
|
||||
if (dir === mxConstants.TEXT_DIRECTION_AUTO && !realHtml) {
|
||||
dir = this.getAutoDirection();
|
||||
}
|
||||
|
||||
if (dir != mxConstants.TEXT_DIRECTION_LTR && dir != mxConstants.TEXT_DIRECTION_RTL) {
|
||||
if (dir !== mxConstants.TEXT_DIRECTION_LTR && dir !== mxConstants.TEXT_DIRECTION_RTL) {
|
||||
dir = null;
|
||||
}
|
||||
|
||||
|
@ -276,8 +282,8 @@ class mxText extends mxShape {
|
|||
* Renders the text using the given DOM nodes.
|
||||
*/
|
||||
redraw = () => {
|
||||
if (this.visible && this.checkBounds() && this.cacheEnabled && this.lastValue == this.value &&
|
||||
(mxUtils.isNode(this.value) || this.dialect == mxConstants.DIALECT_STRICTHTML)) {
|
||||
if (this.visible && this.checkBounds() && this.cacheEnabled && this.lastValue === this.value &&
|
||||
(mxUtils.isNode(this.value) || this.dialect === mxConstants.DIALECT_STRICTHTML)) {
|
||||
if (this.node.nodeName === 'DIV') {
|
||||
if (mxClient.IS_SVG) {
|
||||
this.redrawHtmlShapeWithCss3();
|
||||
|
@ -300,13 +306,13 @@ class mxText extends mxShape {
|
|||
this.updateBoundingBox();
|
||||
} else {
|
||||
// Fallback if canvas does not support updateText (VML)
|
||||
redraw.apply(this, arguments);
|
||||
super.redraw();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
redraw.apply(this, arguments);
|
||||
super.redraw();
|
||||
|
||||
if (mxUtils.isNode(this.value) || this.dialect == mxConstants.DIALECT_STRICTHTML) {
|
||||
if (mxUtils.isNode(this.value) || this.dialect === mxConstants.DIALECT_STRICTHTML) {
|
||||
this.lastValue = this.value;
|
||||
} else {
|
||||
this.lastValue = null;
|
||||
|
@ -320,7 +326,7 @@ class mxText extends mxShape {
|
|||
* Resets all styles.
|
||||
*/
|
||||
resetStyles = () => {
|
||||
resetStyles.apply(this, arguments);
|
||||
super.resetStyles();
|
||||
|
||||
this.color = 'black';
|
||||
this.align = mxConstants.ALIGN_CENTER;
|
||||
|
@ -351,7 +357,7 @@ class mxText extends mxShape {
|
|||
*/
|
||||
apply = (state) => {
|
||||
let old = this.spacing;
|
||||
apply.apply(this, arguments);
|
||||
super.apply(state);
|
||||
|
||||
if (this.style != null) {
|
||||
this.fontStyle = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSTYLE, this.fontStyle);
|
||||
|
@ -428,19 +434,19 @@ class mxText extends mxShape {
|
|||
let h = (this.style != null) ? mxUtils.getValue(this.style, mxConstants.STYLE_LABEL_POSITION, mxConstants.ALIGN_CENTER) : null;
|
||||
let v = (this.style != null) ? mxUtils.getValue(this.style, mxConstants.STYLE_VERTICAL_LABEL_POSITION, mxConstants.ALIGN_MIDDLE) : null;
|
||||
|
||||
if (!this.ignoreStringSize && node != null && this.overflow != 'fill' && (!this.clipped ||
|
||||
!this.ignoreClippedStringSize || h != mxConstants.ALIGN_CENTER || v != mxConstants.ALIGN_MIDDLE)) {
|
||||
if (!this.ignoreStringSize && node != null && this.overflow !== 'fill' && (!this.clipped ||
|
||||
!this.ignoreClippedStringSize || h !== mxConstants.ALIGN_CENTER || v !== mxConstants.ALIGN_MIDDLE)) {
|
||||
let ow = null;
|
||||
let oh = null;
|
||||
|
||||
if (node.ownerSVGElement != null) {
|
||||
if (node.firstChild != null && node.firstChild.firstChild != null &&
|
||||
node.firstChild.firstChild.nodeName == 'foreignObject') {
|
||||
node.firstChild.firstChild.nodeName === 'foreignObject') {
|
||||
// Uses second inner DIV for font metrics
|
||||
node = node.firstChild.firstChild.firstChild.firstChild;
|
||||
oh = node.offsetHeight * this.scale;
|
||||
|
||||
if (this.overflow == 'width') {
|
||||
if (this.overflow === 'width') {
|
||||
ow = this.boundingBox.width;
|
||||
} else {
|
||||
ow = node.offsetWidth * this.scale;
|
||||
|
@ -452,7 +458,7 @@ class mxText extends mxShape {
|
|||
// Workaround for bounding box of empty string
|
||||
if (typeof (this.value) == 'string' && mxUtils.trim(this.value) == 0) {
|
||||
this.boundingBox = null;
|
||||
} else if (b.width == 0 && b.height == 0) {
|
||||
} else if (b.width === 0 && b.height === 0) {
|
||||
this.boundingBox = null;
|
||||
} else {
|
||||
this.boundingBox = new mxRectangle(b.x, b.y, b.width, b.height);
|
||||
|
@ -483,7 +489,7 @@ class mxText extends mxShape {
|
|||
|
||||
let sizeDiv = node;
|
||||
|
||||
if (sizeDiv.firstChild != null && sizeDiv.firstChild.nodeName == 'DIV') {
|
||||
if (sizeDiv.firstChild != null && sizeDiv.firstChild.nodeName === 'DIV') {
|
||||
sizeDiv = sizeDiv.firstChild;
|
||||
}
|
||||
|
||||
|
@ -502,7 +508,7 @@ class mxText extends mxShape {
|
|||
}
|
||||
|
||||
if (this.boundingBox != null) {
|
||||
if (rot != 0) {
|
||||
if (rot !== 0) {
|
||||
// Accounts for pre-rotated x and y
|
||||
let bbox = mxUtils.getBoundingBox(new mxRectangle(
|
||||
this.margin.x * this.boundingBox.width,
|
||||
|
@ -560,7 +566,7 @@ class mxText extends mxShape {
|
|||
* Sets the state of the canvas for drawing the shape.
|
||||
*/
|
||||
configureCanvas = (c, x, y, w, h) => {
|
||||
configureCanvas.apply(this, arguments);
|
||||
super.configureCanvas(c, x, y, w, h);
|
||||
|
||||
c.setFontColor(this.color);
|
||||
c.setFontBackgroundColor(this.background);
|
||||
|
@ -591,7 +597,7 @@ class mxText extends mxShape {
|
|||
getHtmlValue = () => {
|
||||
let val = this.value;
|
||||
|
||||
if (this.dialect != mxConstants.DIALECT_STRICTHTML) {
|
||||
if (this.dialect !== mxConstants.DIALECT_STRICTHTML) {
|
||||
val = mxUtils.htmlEntities(val, false);
|
||||
}
|
||||
|
||||
|
@ -615,21 +621,21 @@ class mxText extends mxShape {
|
|||
'font-family: ' + this.family + '; color: ' + this.color + '; line-height: ' + lh +
|
||||
'; pointer-events: ' + ((this.pointerEvents) ? 'all' : 'none') + '; ';
|
||||
|
||||
if ((this.fontStyle & mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD) {
|
||||
if ((this.fontStyle & mxConstants.FONT_BOLD) === mxConstants.FONT_BOLD) {
|
||||
css += 'font-weight: bold; ';
|
||||
}
|
||||
|
||||
if ((this.fontStyle & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC) {
|
||||
if ((this.fontStyle & mxConstants.FONT_ITALIC) === mxConstants.FONT_ITALIC) {
|
||||
css += 'font-style: italic; ';
|
||||
}
|
||||
|
||||
let deco = [];
|
||||
|
||||
if ((this.fontStyle & mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE) {
|
||||
if ((this.fontStyle & mxConstants.FONT_UNDERLINE) === mxConstants.FONT_UNDERLINE) {
|
||||
deco.push('underline');
|
||||
}
|
||||
|
||||
if ((this.fontStyle & mxConstants.FONT_STRIKETHROUGH) == mxConstants.FONT_STRIKETHROUGH) {
|
||||
if ((this.fontStyle & mxConstants.FONT_STRIKETHROUGH) === mxConstants.FONT_STRIKETHROUGH) {
|
||||
deco.push('line-through');
|
||||
}
|
||||
|
||||
|
@ -685,17 +691,17 @@ class mxText extends mxShape {
|
|||
(this.border != null) ? mxUtils.htmlEntities(this.border) : null,
|
||||
flex, block, this.scale, (dx, dy, flex, item, block, ofl) => {
|
||||
let r = this.getTextRotation();
|
||||
let tr = ((this.scale != 1) ? 'scale(' + this.scale + ') ' : '') +
|
||||
((r != 0) ? 'rotate(' + r + 'deg) ' : '') +
|
||||
((this.margin.x != 0 || this.margin.y != 0) ?
|
||||
let tr = ((this.scale !== 1) ? 'scale(' + this.scale + ') ' : '') +
|
||||
((r !== 0) ? 'rotate(' + r + 'deg) ' : '') +
|
||||
((this.margin.x !== 0 || this.margin.y !== 0) ?
|
||||
'translate(' + (this.margin.x * 100) + '%,' +
|
||||
(this.margin.y * 100) + '%)' : '');
|
||||
|
||||
if (tr != '') {
|
||||
if (tr !== '') {
|
||||
tr = 'transform-origin: 0 0; transform: ' + tr + '; ';
|
||||
}
|
||||
|
||||
if (ofl == '') {
|
||||
if (ofl === '') {
|
||||
flex += item;
|
||||
item = 'display:inline-block; min-width: 100%; ' + tr;
|
||||
} else {
|
||||
|
@ -734,7 +740,7 @@ class mxText extends mxShape {
|
|||
let dx = this.margin.x;
|
||||
let dy = this.margin.y;
|
||||
|
||||
if (theta != 0) {
|
||||
if (theta !== 0) {
|
||||
mxUtils.setPrefixedStyle(style, 'transformOrigin', (-dx * 100) + '%' + ' ' + (-dy * 100) + '%');
|
||||
mxUtils.setPrefixedStyle(style, 'transform', 'translate(' + (dx * 100) + '%' + ',' + (dy * 100) + '%) ' +
|
||||
'scale(' + this.scale + ') rotate(' + theta + 'deg)');
|
||||
|
@ -744,9 +750,9 @@ class mxText extends mxShape {
|
|||
'translate(' + (dx * 100) + '%' + ',' + (dy * 100) + '%)');
|
||||
}
|
||||
|
||||
style.left = Math.round(this.bounds.x - Math.ceil(dx * ((this.overflow != 'fill' &&
|
||||
this.overflow != 'width') ? 3 : 1))) + 'px';
|
||||
style.top = Math.round(this.bounds.y - dy * ((this.overflow != 'fill') ? 3 : 1)) + 'px';
|
||||
style.left = Math.round(this.bounds.x - Math.ceil(dx * ((this.overflow !== 'fill' &&
|
||||
this.overflow !== 'width') ? 3 : 1))) + 'px';
|
||||
style.top = Math.round(this.bounds.y - dy * ((this.overflow !== 'fill') ? 3 : 1)) + 'px';
|
||||
|
||||
if (this.opacity < 100) {
|
||||
style.opacity = this.opacity / 100;
|
||||
|
@ -766,7 +772,7 @@ class mxText extends mxShape {
|
|||
} else {
|
||||
let val = this.value;
|
||||
|
||||
if (this.dialect != mxConstants.DIALECT_STRICTHTML) {
|
||||
if (this.dialect !== mxConstants.DIALECT_STRICTHTML) {
|
||||
// LATER: Can be cached in updateValue
|
||||
val = mxUtils.htmlEntities(val, false);
|
||||
}
|
||||
|
@ -828,10 +834,10 @@ class mxText extends mxShape {
|
|||
|
||||
sizeDiv = td;
|
||||
|
||||
if (sizeDiv.firstChild != null && sizeDiv.firstChild.nodeName == 'DIV') {
|
||||
if (sizeDiv.firstChild != null && sizeDiv.firstChild.nodeName === 'DIV') {
|
||||
sizeDiv = sizeDiv.firstChild;
|
||||
|
||||
if (this.wrap && td.style.wordWrap == 'break-word') {
|
||||
if (this.wrap && td.style.wordWrap === 'break-word') {
|
||||
sizeDiv.style.width = '100%';
|
||||
}
|
||||
}
|
||||
|
@ -844,7 +850,7 @@ class mxText extends mxShape {
|
|||
|
||||
oh = sizeDiv.offsetHeight + 2;
|
||||
|
||||
} else if (sizeDiv.firstChild != null && sizeDiv.firstChild.nodeName == 'DIV') {
|
||||
} else if (sizeDiv.firstChild != null && sizeDiv.firstChild.nodeName === 'DIV') {
|
||||
sizeDiv = sizeDiv.firstChild;
|
||||
oh = sizeDiv.offsetHeight;
|
||||
}
|
||||
|
@ -859,10 +865,10 @@ class mxText extends mxShape {
|
|||
let h = this.bounds.height / s;
|
||||
|
||||
// Handles special case for live preview with no wrapper DIV and no textDiv
|
||||
if (this.overflow == 'fill') {
|
||||
if (this.overflow === 'fill') {
|
||||
oh = h;
|
||||
ow = w;
|
||||
} else if (this.overflow == 'width') {
|
||||
} else if (this.overflow === 'width') {
|
||||
oh = sizeDiv.scrollHeight;
|
||||
ow = w;
|
||||
}
|
||||
|
@ -873,7 +879,7 @@ class mxText extends mxShape {
|
|||
|
||||
h = oh;
|
||||
|
||||
if (this.overflow != 'fill' && this.overflow != 'width') {
|
||||
if (this.overflow !== 'fill' && this.overflow !== 'width') {
|
||||
if (this.clipped) {
|
||||
ow = Math.min(w, ow);
|
||||
}
|
||||
|
@ -912,7 +918,7 @@ class mxText extends mxShape {
|
|||
let top_fix = (h - h * cos + w * sin) / 2 + real_sin * tx - real_cos * ty;
|
||||
let left_fix = (w - w * cos + h * sin) / 2 - real_cos * tx - real_sin * ty;
|
||||
|
||||
if (rad != 0) {
|
||||
if (rad !== 0) {
|
||||
let f = 'progid:DXImageTransform.Microsoft.Matrix(M11=' + real_cos + ', M12=' +
|
||||
real_sin + ', M21=' + (-real_sin) + ', M22=' + real_cos + ', sizingMethod=\'auto expand\')';
|
||||
|
||||
|
@ -943,17 +949,17 @@ class mxText extends mxShape {
|
|||
} else {
|
||||
let val = this.value;
|
||||
|
||||
if (this.dialect != mxConstants.DIALECT_STRICTHTML) {
|
||||
if (this.dialect !== mxConstants.DIALECT_STRICTHTML) {
|
||||
val = mxUtils.htmlEntities(val, false);
|
||||
}
|
||||
|
||||
// Handles trailing newlines to make sure they are visible in rendering output
|
||||
val = mxUtils.replaceTrailingNewlines(val, '<div><br></div>');
|
||||
val = (this.replaceLinefeeds) ? val.replace(/\n/g, '<br/>') : val;
|
||||
let bg = (this.background != null && this.background != mxConstants.NONE) ? this.background : null;
|
||||
let bd = (this.border != null && this.border != mxConstants.NONE) ? this.border : null;
|
||||
let bg = (this.background != null && this.background !== mxConstants.NONE) ? this.background : null;
|
||||
let bd = (this.border != null && this.border !== mxConstants.NONE) ? this.border : null;
|
||||
|
||||
if (this.overflow == 'fill' || this.overflow == 'width') {
|
||||
if (this.overflow === 'fill' || this.overflow === 'width') {
|
||||
if (bg != null) {
|
||||
this.node.style.backgroundColor = bg;
|
||||
}
|
||||
|
@ -989,11 +995,11 @@ class mxText extends mxShape {
|
|||
if (divs.length > 0) {
|
||||
let dir = this.textDirection;
|
||||
|
||||
if (dir == mxConstants.TEXT_DIRECTION_AUTO && this.dialect != mxConstants.DIALECT_STRICTHTML) {
|
||||
if (dir === mxConstants.TEXT_DIRECTION_AUTO && this.dialect !== mxConstants.DIALECT_STRICTHTML) {
|
||||
dir = this.getAutoDirection();
|
||||
}
|
||||
|
||||
if (dir == mxConstants.TEXT_DIRECTION_LTR || dir == mxConstants.TEXT_DIRECTION_RTL) {
|
||||
if (dir === mxConstants.TEXT_DIRECTION_LTR || dir === mxConstants.TEXT_DIRECTION_RTL) {
|
||||
divs[divs.length - 1].setAttribute('dir', dir);
|
||||
} else {
|
||||
divs[divs.length - 1].removeAttribute('dir');
|
||||
|
@ -1016,13 +1022,13 @@ class mxText extends mxShape {
|
|||
style.verticalAlign = 'top';
|
||||
style.color = this.color;
|
||||
|
||||
if ((this.fontStyle & mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD) {
|
||||
if ((this.fontStyle & mxConstants.FONT_BOLD) === mxConstants.FONT_BOLD) {
|
||||
style.fontWeight = 'bold';
|
||||
} else {
|
||||
style.fontWeight = '';
|
||||
}
|
||||
|
||||
if ((this.fontStyle & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC) {
|
||||
if ((this.fontStyle & mxConstants.FONT_ITALIC) === mxConstants.FONT_ITALIC) {
|
||||
style.fontStyle = 'italic';
|
||||
} else {
|
||||
style.fontStyle = '';
|
||||
|
@ -1030,19 +1036,19 @@ class mxText extends mxShape {
|
|||
|
||||
let txtDecor = [];
|
||||
|
||||
if ((this.fontStyle & mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE) {
|
||||
if ((this.fontStyle & mxConstants.FONT_UNDERLINE) === mxConstants.FONT_UNDERLINE) {
|
||||
txtDecor.push('underline');
|
||||
}
|
||||
|
||||
if ((this.fontStyle & mxConstants.FONT_STRIKETHROUGH) == mxConstants.FONT_STRIKETHROUGH) {
|
||||
if ((this.fontStyle & mxConstants.FONT_STRIKETHROUGH) === mxConstants.FONT_STRIKETHROUGH) {
|
||||
txtDecor.push('line-through');
|
||||
}
|
||||
|
||||
style.textDecoration = txtDecor.join(' ');
|
||||
|
||||
if (this.align == mxConstants.ALIGN_CENTER) {
|
||||
if (this.align === mxConstants.ALIGN_CENTER) {
|
||||
style.textAlign = 'center';
|
||||
} else if (this.align == mxConstants.ALIGN_RIGHT) {
|
||||
} else if (this.align === mxConstants.ALIGN_RIGHT) {
|
||||
style.textAlign = 'right';
|
||||
} else {
|
||||
style.textAlign = 'left';
|
||||
|
@ -1066,11 +1072,11 @@ class mxText extends mxShape {
|
|||
|
||||
style.maxHeight = h + 'px';
|
||||
style.maxWidth = w + 'px';
|
||||
} else if (this.overflow == 'fill') {
|
||||
} else if (this.overflow === 'fill') {
|
||||
style.width = (w + 1) + 'px';
|
||||
style.height = (h + 1) + 'px';
|
||||
style.overflow = 'hidden';
|
||||
} else if (this.overflow == 'width') {
|
||||
} else if (this.overflow === 'width') {
|
||||
style.width = (w + 1) + 'px';
|
||||
style.maxHeight = (h + 1) + 'px';
|
||||
style.overflow = 'hidden';
|
||||
|
@ -1081,13 +1087,13 @@ class mxText extends mxShape {
|
|||
style.whiteSpace = 'normal';
|
||||
style.width = w + 'px';
|
||||
|
||||
if (enableWrap && this.overflow != 'fill' && this.overflow != 'width') {
|
||||
if (enableWrap && this.overflow !== 'fill' && this.overflow !== 'width') {
|
||||
let sizeDiv = node;
|
||||
|
||||
if (sizeDiv.firstChild != null && sizeDiv.firstChild.nodeName == 'DIV') {
|
||||
if (sizeDiv.firstChild != null && sizeDiv.firstChild.nodeName === 'DIV') {
|
||||
sizeDiv = sizeDiv.firstChild;
|
||||
|
||||
if (node.style.wordWrap == 'break-word') {
|
||||
if (node.style.wordWrap === 'break-word') {
|
||||
sizeDiv.style.width = '100%';
|
||||
}
|
||||
}
|
||||
|
@ -1095,7 +1101,7 @@ class mxText extends mxShape {
|
|||
let tmp = sizeDiv.offsetWidth;
|
||||
|
||||
// Workaround for text measuring in hidden containers
|
||||
if (tmp == 0) {
|
||||
if (tmp === 0) {
|
||||
let prev = node.parentNode;
|
||||
node.style.visibility = 'hidden';
|
||||
document.body.appendChild(node);
|
||||
|
@ -1135,17 +1141,17 @@ class mxText extends mxShape {
|
|||
let dx = 0;
|
||||
let dy = 0;
|
||||
|
||||
if (this.align == mxConstants.ALIGN_CENTER) {
|
||||
if (this.align === mxConstants.ALIGN_CENTER) {
|
||||
dx = (this.spacingLeft - this.spacingRight) / 2;
|
||||
} else if (this.align == mxConstants.ALIGN_RIGHT) {
|
||||
} else if (this.align === mxConstants.ALIGN_RIGHT) {
|
||||
dx = -this.spacingRight - this.baseSpacingRight;
|
||||
} else {
|
||||
dx = this.spacingLeft + this.baseSpacingLeft;
|
||||
}
|
||||
|
||||
if (this.valign == mxConstants.ALIGN_MIDDLE) {
|
||||
if (this.valign === mxConstants.ALIGN_MIDDLE) {
|
||||
dy = (this.spacingTop - this.spacingBottom) / 2;
|
||||
} else if (this.valign == mxConstants.ALIGN_BOTTOM) {
|
||||
} else if (this.valign === mxConstants.ALIGN_BOTTOM) {
|
||||
dy = -this.spacingBottom - this.baseSpacingBottom;
|
||||
|
||||
} else {
|
||||
|
|
|
@ -190,16 +190,16 @@ class mxAbstractCanvas2D {
|
|||
*
|
||||
* Adds the given operation to the path.
|
||||
*/
|
||||
mxAbstractCanvas2addOp = () => {
|
||||
mxAbstractCanvas2addOp = (...args) => {
|
||||
if (this.path != null) {
|
||||
this.path.push(arguments[0]);
|
||||
this.path.push(args[0]);
|
||||
|
||||
if (arguments.length > 2) {
|
||||
if (args.length > 2) {
|
||||
let s = this.state;
|
||||
|
||||
for (let i = 2; i < arguments.length; i += 2) {
|
||||
this.lastX = arguments[i - 1];
|
||||
this.lastY = arguments[i];
|
||||
for (let i = 2; i < args.length; i += 2) {
|
||||
this.lastX = args[i - 1];
|
||||
this.lastY = args[i];
|
||||
|
||||
this.path.push(this.format((this.lastX + s.dx) * s.scale));
|
||||
this.path.push(this.format((this.lastY + s.dy) * s.scale));
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
import mxUtils from "./mxUtils";
|
||||
import mxEventSource from "./mxEventSource";
|
||||
import mxEventObject from "./mxEventObject";
|
||||
import mxEvent from "./mxEvent";
|
||||
|
||||
class mxAnimation extends mxEventSource {
|
||||
/**
|
||||
|
|
|
@ -651,13 +651,13 @@ class mxDragSource {
|
|||
* implementation uses <mxGraph.getCellAt>.
|
||||
*/
|
||||
drop = (graph, evt, dropTarget, x, y) => {
|
||||
this.dropHandler.apply(this, arguments);
|
||||
this.dropHandler(graph, evt, dropTarget, x, y);
|
||||
|
||||
// Had to move this to after the insert because it will
|
||||
// affect the scrollbars of the window in IE to try and
|
||||
// make the complete container visible.
|
||||
// LATER: Should be made optional.
|
||||
if (graph.container.style.visibility != 'hidden') {
|
||||
if (graph.container.style.visibility !== 'hidden') {
|
||||
graph.container.focus();
|
||||
}
|
||||
};
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
* Copyright (c) 2006-2015, Gaudenz Alder
|
||||
* Updated to ES9 syntax by David Morrissey 2021
|
||||
*/
|
||||
import mxUtils from "./mxUtils";
|
||||
|
||||
let mxEffects = {
|
||||
/**
|
||||
* Class: mxEffects
|
||||
|
@ -56,7 +58,7 @@ let mxEffects = {
|
|||
if (state != null) {
|
||||
isRequired = true;
|
||||
|
||||
if (change.constructor != mxGeometryChange || graph.model.isEdge(change.cell)) {
|
||||
if (change.constructor !== mxGeometryChange || graph.model.isEdge(change.cell)) {
|
||||
mxUtils.setOpacity(state.shape.node, 100 * step / maxStep);
|
||||
} else {
|
||||
let scale = graph.getView().scale;
|
||||
|
@ -67,7 +69,7 @@ let mxEffects = {
|
|||
let sx = (change.geometry.width - change.previous.width) * scale;
|
||||
let sy = (change.geometry.height - change.previous.height) * scale;
|
||||
|
||||
if (step == 0) {
|
||||
if (step === 0) {
|
||||
state.x -= dx;
|
||||
state.y -= dy;
|
||||
state.width -= sx;
|
||||
|
|
|
@ -47,13 +47,13 @@ class mxEventObject {
|
|||
* new mxEventObject("eventName", key1, val1, .., keyN, valN)
|
||||
* (end)
|
||||
*/
|
||||
constructor(name) {
|
||||
constructor(name, ...args) {
|
||||
this.name = name;
|
||||
this.properties = [];
|
||||
|
||||
for (let i = 1; i < arguments.length; i += 2) {
|
||||
if (arguments[i + 1] != null) {
|
||||
this.properties[arguments[i]] = arguments[i + 1];
|
||||
for (let i = 0; i < args.length; i += 2) {
|
||||
if (args[i + 1] != null) {
|
||||
this.properties[args[i]] = args[i + 1];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -53,13 +53,13 @@ class mxImageExport {
|
|||
drawState = (state, canvas) => {
|
||||
if (state != null) {
|
||||
this.visitStatesRecursive(state, canvas, mxUtils.bind(this, () => {
|
||||
this.drawCellState.apply(this, arguments);
|
||||
this.drawCellState(state, canvas);
|
||||
}));
|
||||
|
||||
// Paints the overlays
|
||||
if (this.includeOverlays) {
|
||||
this.visitStatesRecursive(state, canvas, mxUtils.bind(this, () => {
|
||||
this.drawOverlays.apply(this, arguments);
|
||||
this.drawOverlays(state, canvas);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -284,7 +284,7 @@ let mxLog = {
|
|||
* mxLog.debug('Hello, World!');
|
||||
* (end)
|
||||
*/
|
||||
debug: () => {
|
||||
debug: function() {
|
||||
if (mxLog.DEBUG) {
|
||||
mxLog.writeln.apply(this, arguments);
|
||||
}
|
||||
|
@ -302,7 +302,7 @@ let mxLog = {
|
|||
* mxLog.warn('Hello, World!');
|
||||
* (end)
|
||||
*/
|
||||
warn: () => {
|
||||
warn: function() {
|
||||
if (mxLog.WARN) {
|
||||
mxLog.writeln.apply(this, arguments);
|
||||
}
|
||||
|
@ -313,7 +313,7 @@ let mxLog = {
|
|||
*
|
||||
* Adds the specified strings to the console.
|
||||
*/
|
||||
write: () => {
|
||||
write: function() {
|
||||
let string = '';
|
||||
|
||||
for (let i = 0; i < arguments.length; i++) {
|
||||
|
@ -346,7 +346,7 @@ let mxLog = {
|
|||
* Adds the specified strings to the console, appending a linefeed at the
|
||||
* end of each string.
|
||||
*/
|
||||
writeln: () => {
|
||||
writeln: function() {
|
||||
let string = '';
|
||||
|
||||
for (let i = 0; i < arguments.length; i++) {
|
||||
|
|
|
@ -95,7 +95,7 @@ class mxMorphing extends mxAnimation {
|
|||
* Animation step.
|
||||
*/
|
||||
updateAnimation = () => {
|
||||
updateAnimation.apply(this, arguments);
|
||||
super.updateAnimation();
|
||||
let move = new mxCellStatePreview(this.graph);
|
||||
|
||||
if (this.cells != null) {
|
||||
|
|
|
@ -369,7 +369,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
* Returns any offsets for rendering pixels.
|
||||
*/
|
||||
mxSvgCanvas2reset = () => {
|
||||
mxAbstractCanvas2reset.apply(this, arguments);
|
||||
this.mxAbstractCanvas2reset();
|
||||
this.gradients = [];
|
||||
};
|
||||
|
||||
|
@ -426,10 +426,10 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
let s = this.state;
|
||||
|
||||
if (text != null && s.fontSize > 0) {
|
||||
let dy = (valign == mxConstants.ALIGN_TOP) ? 1 :
|
||||
(valign == mxConstants.ALIGN_BOTTOM) ? 0 : 0.3;
|
||||
let anchor = (align == mxConstants.ALIGN_RIGHT) ? 'end' :
|
||||
(align == mxConstants.ALIGN_LEFT) ? 'start' :
|
||||
let dy = (valign === mxConstants.ALIGN_TOP) ? 1 :
|
||||
(valign === mxConstants.ALIGN_BOTTOM) ? 0 : 0.3;
|
||||
let anchor = (align === mxConstants.ALIGN_RIGHT) ? 'end' :
|
||||
(align === mxConstants.ALIGN_LEFT) ? 'start' :
|
||||
'middle';
|
||||
|
||||
let alt = this.createElement('text');
|
||||
|
@ -440,7 +440,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
alt.setAttribute('font-size', Math.round(s.fontSize) + 'px');
|
||||
|
||||
// Text-anchor start is default in SVG
|
||||
if (anchor != 'start') {
|
||||
if (anchor !== 'start') {
|
||||
alt.setAttribute('text-anchor', anchor);
|
||||
}
|
||||
|
||||
|
@ -448,17 +448,17 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
alt.setAttribute('font-weight', 'bold');
|
||||
}
|
||||
|
||||
if ((s.fontStyle & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC) {
|
||||
if ((s.fontStyle & mxConstants.FONT_ITALIC) === mxConstants.FONT_ITALIC) {
|
||||
alt.setAttribute('font-style', 'italic');
|
||||
}
|
||||
|
||||
let txtDecor = [];
|
||||
|
||||
if ((s.fontStyle & mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE) {
|
||||
if ((s.fontStyle & mxConstants.FONT_UNDERLINE) === mxConstants.FONT_UNDERLINE) {
|
||||
txtDecor.push('underline');
|
||||
}
|
||||
|
||||
if ((s.fontStyle & mxConstants.FONT_STRIKETHROUGH) == mxConstants.FONT_STRIKETHROUGH) {
|
||||
if ((s.fontStyle & mxConstants.FONT_STRIKETHROUGH) === mxConstants.FONT_STRIKETHROUGH) {
|
||||
txtDecor.push('line-through');
|
||||
}
|
||||
|
||||
|
@ -481,11 +481,11 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxSvgCanvas2createGradientId = (start, end, alpha1, alpha2, direction) => {
|
||||
// Removes illegal characters from gradient ID
|
||||
if (start.charAt(0) == '#') {
|
||||
if (start.charAt(0) === '#') {
|
||||
start = start.substring(1);
|
||||
}
|
||||
|
||||
if (end.charAt(0) == '#') {
|
||||
if (end.charAt(0) === '#') {
|
||||
end = end.substring(1);
|
||||
}
|
||||
|
||||
|
@ -499,16 +499,16 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
|
||||
if (direction == null || direction == mxConstants.DIRECTION_SOUTH) {
|
||||
dir = 's';
|
||||
} else if (direction == mxConstants.DIRECTION_EAST) {
|
||||
} else if (direction === mxConstants.DIRECTION_EAST) {
|
||||
dir = 'e';
|
||||
} else {
|
||||
let tmp = start;
|
||||
start = end;
|
||||
end = tmp;
|
||||
|
||||
if (direction == mxConstants.DIRECTION_NORTH) {
|
||||
if (direction === mxConstants.DIRECTION_NORTH) {
|
||||
dir = 's';
|
||||
} else if (direction == mxConstants.DIRECTION_WEST) {
|
||||
} else if (direction === mxConstants.DIRECTION_WEST) {
|
||||
dir = 'e';
|
||||
}
|
||||
}
|
||||
|
@ -534,7 +534,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
if (svg != null) {
|
||||
gradient = svg.ownerDocument.getElementById(tmpId);
|
||||
|
||||
while (gradient != null && gradient.ownerSVGElement != svg) {
|
||||
while (gradient != null && gradient.ownerSVGElement !== svg) {
|
||||
tmpId = id + '-' + counter++;
|
||||
gradient = svg.ownerDocument.getElementById(tmpId);
|
||||
}
|
||||
|
@ -572,13 +572,13 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
gradient.setAttribute('x2', '0%');
|
||||
gradient.setAttribute('y2', '0%');
|
||||
|
||||
if (direction == null || direction == mxConstants.DIRECTION_SOUTH) {
|
||||
if (direction == null || direction === mxConstants.DIRECTION_SOUTH) {
|
||||
gradient.setAttribute('y2', '100%');
|
||||
} else if (direction == mxConstants.DIRECTION_EAST) {
|
||||
} else if (direction === mxConstants.DIRECTION_EAST) {
|
||||
gradient.setAttribute('x2', '100%');
|
||||
} else if (direction == mxConstants.DIRECTION_NORTH) {
|
||||
} else if (direction === mxConstants.DIRECTION_NORTH) {
|
||||
gradient.setAttribute('y1', '100%');
|
||||
} else if (direction == mxConstants.DIRECTION_WEST) {
|
||||
} else if (direction === mxConstants.DIRECTION_WEST) {
|
||||
gradient.setAttribute('x1', '100%');
|
||||
}
|
||||
|
||||
|
@ -609,7 +609,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
let s = this.state;
|
||||
|
||||
if (node != null) {
|
||||
if (node.nodeName == 'path') {
|
||||
if (node.nodeName === 'path') {
|
||||
// Checks if the path is not empty
|
||||
if (this.path != null && this.path.length > 0) {
|
||||
node.setAttribute('d', this.path.join(' '));
|
||||
|
@ -622,7 +622,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
this.updateFill();
|
||||
} else if (!this.styleEnabled) {
|
||||
// Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=814952
|
||||
if (node.nodeName == 'ellipse' && mxClient.IS_FF) {
|
||||
if (node.nodeName === 'ellipse' && mxClient.IS_FF) {
|
||||
node.setAttribute('fill', 'transparent');
|
||||
} else {
|
||||
node.setAttribute('fill', 'none');
|
||||
|
@ -689,7 +689,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
let id = this.getSvgGradient(String(s.fillColor), String(s.gradientColor),
|
||||
s.gradientFillAlpha, s.gradientAlpha, s.gradientDirection);
|
||||
|
||||
if (this.root.ownerDocument == document && this.useAbsoluteIds) {
|
||||
if (this.root.ownerDocument === document && this.useAbsoluteIds) {
|
||||
// Workaround for no fill with base tag in page (escape brackets)
|
||||
let base = this.getBaseUrl().replace(/([\(\)])/g, '\\$1');
|
||||
this.node.setAttribute('fill', 'url(' + base + '#' + id + ')');
|
||||
|
@ -727,11 +727,11 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
|
||||
let sw = this.getCurrentStrokeWidth();
|
||||
|
||||
if (sw != 1) {
|
||||
if (sw !== 1) {
|
||||
this.node.setAttribute('stroke-width', sw);
|
||||
}
|
||||
|
||||
if (this.node.nodeName == 'path') {
|
||||
if (this.node.nodeName === 'path') {
|
||||
this.updateStrokeAttributes();
|
||||
}
|
||||
|
||||
|
@ -750,7 +750,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
let s = this.state;
|
||||
|
||||
// Linejoin miter is default in SVG
|
||||
if (s.lineJoin != null && s.lineJoin != 'miter') {
|
||||
if (s.lineJoin != null && s.lineJoin !== 'miter') {
|
||||
this.node.setAttribute('stroke-linejoin', s.lineJoin);
|
||||
}
|
||||
|
||||
|
@ -758,18 +758,18 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
// flat is called butt in SVG
|
||||
let value = s.lineCap;
|
||||
|
||||
if (value == 'flat') {
|
||||
if (value === 'flat') {
|
||||
value = 'butt';
|
||||
}
|
||||
|
||||
// Linecap butt is default in SVG
|
||||
if (value != 'butt') {
|
||||
if (value !== 'butt') {
|
||||
this.node.setAttribute('stroke-linecap', value);
|
||||
}
|
||||
}
|
||||
|
||||
// Miterlimit 10 is default in our document
|
||||
if (s.miterLimit != null && (!this.styleEnabled || s.miterLimit != 10)) {
|
||||
if (s.miterLimit != null && (!this.styleEnabled || s.miterLimit !== 10)) {
|
||||
this.node.setAttribute('stroke-miterlimit', s.miterLimit);
|
||||
}
|
||||
};
|
||||
|
@ -822,11 +822,11 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
let s = this.state;
|
||||
|
||||
// Firefox uses transparent for no fill in ellipses
|
||||
if (shadow.getAttribute('fill') != 'none' && (!mxClient.IS_FF || shadow.getAttribute('fill') != 'transparent')) {
|
||||
if (shadow.getAttribute('fill') !== 'none' && (!mxClient.IS_FF || shadow.getAttribute('fill') !== 'transparent')) {
|
||||
shadow.setAttribute('fill', s.shadowColor);
|
||||
}
|
||||
|
||||
if (shadow.getAttribute('stroke') != 'none') {
|
||||
if (shadow.getAttribute('stroke') !== 'none') {
|
||||
shadow.setAttribute('stroke', s.shadowColor);
|
||||
}
|
||||
|
||||
|
@ -852,7 +852,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
|
||||
// Workaround for implicit namespace handling in HTML5 export, IE adds NS1 namespace so use code below
|
||||
// in all IE versions except quirks mode. KNOWN: Adds xlink namespace to each image tag in output.
|
||||
if (node.setAttributeNS == null || (this.root.ownerDocument != document)) {
|
||||
if (node.setAttributeNS == null || (this.root.ownerDocument !== document)) {
|
||||
node.setAttribute('xlink:href', link);
|
||||
} else {
|
||||
node.setAttributeNS(mxConstants.NS_XLINK, 'xlink:href', link);
|
||||
|
@ -869,7 +869,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
* Sets the rotation of the canvas. Note that rotation cannot be concatenated.
|
||||
*/
|
||||
mxSvgCanvas2rotate = (theta, flipH, flipV, cx, cy) => {
|
||||
if (theta != 0 || flipH || flipV) {
|
||||
if (theta !== 0 || flipH || flipV) {
|
||||
let s = this.state;
|
||||
cx += s.dx;
|
||||
cy += s.dy;
|
||||
|
@ -883,7 +883,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
// Rotation state is part of the AffineTransform in state.transform
|
||||
if (flipH && flipV) {
|
||||
theta += 180;
|
||||
} else if (flipH != flipV) {
|
||||
} else if (flipH !== flipV) {
|
||||
let tx = (flipH) ? cx : 0;
|
||||
let sx = (flipH) ? -1 : 1;
|
||||
|
||||
|
@ -899,7 +899,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
theta *= -1;
|
||||
}
|
||||
|
||||
if (theta != 0) {
|
||||
if (theta !== 0) {
|
||||
s.transform += 'rotate(' + this.format(theta) + ',' + this.format(cx) + ',' + this.format(cy) + ')';
|
||||
}
|
||||
|
||||
|
@ -915,7 +915,7 @@ class mxSvgCanvas2D extends mxAbstractCanvas2D {
|
|||
* Extends superclass to create path.
|
||||
*/
|
||||
mxSvgCanvas2begin = () => {
|
||||
mxAbstractCanvas2begin.apply(this, arguments);
|
||||
this.mxAbstractCanvas2begin();
|
||||
this.node = this.createElement('path');
|
||||
};
|
||||
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
* Copyright (c) 2006-2015, Gaudenz Alder
|
||||
* Updated to ES9 syntax by David Morrissey 2021
|
||||
*/
|
||||
import mxEffects from "./mxEffects";
|
||||
import mxXmlRequest from "./mxXmlRequest";
|
||||
|
||||
let mxUtils = {
|
||||
/**
|
||||
* Class: mxUtils
|
||||
|
@ -159,11 +162,11 @@ let mxUtils = {
|
|||
* function to the specified scope. Inside funct, the "this" keyword
|
||||
* becomes a reference to that scope.
|
||||
*/
|
||||
bind: (scope, funct) => {
|
||||
/*bind: (scope, funct) => {
|
||||
return () => {
|
||||
return funct.apply(scope, arguments);
|
||||
};
|
||||
},
|
||||
},*/
|
||||
|
||||
/**
|
||||
* Function: eval
|
||||
|
@ -1237,7 +1240,7 @@ let mxUtils = {
|
|||
|
||||
if (headers) {
|
||||
req.setRequestHeaders = (request, params) => {
|
||||
setRequestHeaders.apply(this, arguments);
|
||||
setRequestHeaders.apply(this, [url, onload, onerror, binary, timeout, ontimeout, headers]);
|
||||
|
||||
for (var key in headers) {
|
||||
request.setRequestHeader(key, headers[key]);
|
||||
|
@ -2630,7 +2633,7 @@ let mxUtils = {
|
|||
*/
|
||||
animateChanges: (graph, changes) => {
|
||||
// LATER: Deprecated, remove this function
|
||||
mxEffects.animateChanges.apply(this, arguments);
|
||||
mxEffects.animateChanges.apply(this, [graph, changes]);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -2640,7 +2643,7 @@ let mxUtils = {
|
|||
* will be removed later.
|
||||
*/
|
||||
cascadeOpacity: (graph, cell, opacity) => {
|
||||
mxEffects.cascadeOpacity.apply(this, arguments);
|
||||
mxEffects.cascadeOpacity.apply(this, [graph, cell, opacity]);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -2650,7 +2653,7 @@ let mxUtils = {
|
|||
* will be removed later.
|
||||
*/
|
||||
fadeOut: (node, from, remove, step, delay, isEnabled) => {
|
||||
mxEffects.fadeOut.apply(this, arguments);
|
||||
mxEffects.fadeOut.apply(this, [node, from, remove, step, delay, isEnabled]);
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
* Copyright (c) 2006-2015, Gaudenz Alder
|
||||
* Updated to ES9 syntax by David Morrissey 2021
|
||||
*/
|
||||
import mxAbstractCanvas2D from "./mxAbstractCanvas2D";
|
||||
import mxConstants from "./mxConstants";
|
||||
|
||||
class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
||||
/**
|
||||
|
@ -117,9 +119,8 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2save = () => {
|
||||
if (this.compressed) {
|
||||
mxAbstractCanvas2save.apply(this, arguments);
|
||||
this.mxAbstractCanvas2save();
|
||||
}
|
||||
|
||||
this.root.appendChild(this.createElement('save'));
|
||||
};
|
||||
|
||||
|
@ -130,9 +131,8 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2restore = () => {
|
||||
if (this.compressed) {
|
||||
mxAbstractCanvas2restore.apply(this, arguments);
|
||||
this.mxAbstractCanvas2restore();
|
||||
}
|
||||
|
||||
this.root.appendChild(this.createElement('restore'));
|
||||
};
|
||||
|
||||
|
@ -185,7 +185,7 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
mxXmlCanvas2rotate = (theta, flipH, flipV, cx, cy) => {
|
||||
let elem = this.createElement('rotate');
|
||||
|
||||
if (theta != 0 || flipH || flipV) {
|
||||
if (theta !== 0 || flipH || flipV) {
|
||||
elem.setAttribute('theta', this.format(theta));
|
||||
elem.setAttribute('flipH', (flipH) ? '1' : '0');
|
||||
elem.setAttribute('flipV', (flipV) ? '1' : '0');
|
||||
|
@ -207,11 +207,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setAlpha = (value) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.alpha == value) {
|
||||
if (this.state.alpha === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setAlpha.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setAlpha.apply(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('alpha');
|
||||
|
@ -231,11 +230,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setFillAlpha = (value) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.fillAlpha == value) {
|
||||
if (this.state.fillAlpha === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setFillAlpha.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setFillAlpha(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('fillalpha');
|
||||
|
@ -255,11 +253,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setStrokeAlpha = (value) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.strokeAlpha == value) {
|
||||
if (this.state.strokeAlpha === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setStrokeAlpha.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setStrokeAlpha(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('strokealpha');
|
||||
|
@ -277,16 +274,15 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
* value - Hexadecimal representation of the color or 'none'.
|
||||
*/
|
||||
mxXmlCanvas2setFillColor = (value) => {
|
||||
if (value == mxConstants.NONE) {
|
||||
if (value === mxConstants.NONE) {
|
||||
value = null;
|
||||
}
|
||||
|
||||
if (this.compressed) {
|
||||
if (this.state.fillColor == value) {
|
||||
if (this.state.fillColor === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setFillColor.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setFillColor(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('fillcolor');
|
||||
|
@ -316,7 +312,7 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setGradient = (color1, color2, x, y, w, h, direction, alpha1, alpha2) => {
|
||||
if (color1 != null && color2 != null) {
|
||||
mxAbstractCanvas2setGradient.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setGradient(color1, color2, x, y, w, h, direction, alpha1, alpha2);
|
||||
|
||||
let elem = this.createElement('gradient');
|
||||
elem.setAttribute('c1', color1);
|
||||
|
@ -353,16 +349,15 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
* value - Hexadecimal representation of the color or 'none'.
|
||||
*/
|
||||
mxXmlCanvas2setStrokeColor = (value) => {
|
||||
if (value == mxConstants.NONE) {
|
||||
if (value === mxConstants.NONE) {
|
||||
value = null;
|
||||
}
|
||||
|
||||
if (this.compressed) {
|
||||
if (this.state.strokeColor == value) {
|
||||
if (this.state.strokeColor === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setStrokeColor.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setStrokeColor(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('strokecolor');
|
||||
|
@ -381,11 +376,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setStrokeWidth = (value) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.strokeWidth == value) {
|
||||
if (this.state.strokeWidth === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setStrokeWidth.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setStrokeWidth(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('strokewidth');
|
||||
|
@ -406,11 +400,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setDashed = (value, fixDash) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.dashed == value) {
|
||||
if (this.state.dashed === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setDashed.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setDashed(value, fixDash);
|
||||
}
|
||||
|
||||
let elem = this.createElement('dashed');
|
||||
|
@ -437,11 +430,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setDashPattern = (value) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.dashPattern == value) {
|
||||
if (this.state.dashPattern === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setDashPattern.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setDashPattern(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('dashpattern');
|
||||
|
@ -461,11 +453,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setLineCap = (value) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.lineCap == value) {
|
||||
if (this.state.lineCap === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setLineCap.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setLineCap(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('linecap');
|
||||
|
@ -485,11 +476,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setLineJoin = (value) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.lineJoin == value) {
|
||||
if (this.state.lineJoin === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setLineJoin.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setLineJoin(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('linejoin');
|
||||
|
@ -508,11 +498,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setMiterLimit = (value) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.miterLimit == value) {
|
||||
if (this.state.miterLimit === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setMiterLimit.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setMiterLimit(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('miterlimit');
|
||||
|
@ -531,16 +520,15 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setFontColor = (value) => {
|
||||
if (this.textEnabled) {
|
||||
if (value == mxConstants.NONE) {
|
||||
if (value === mxConstants.NONE) {
|
||||
value = null;
|
||||
}
|
||||
|
||||
if (this.compressed) {
|
||||
if (this.state.fontColor == value) {
|
||||
if (this.state.fontColor === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setFontColor.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setFontColor(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('fontcolor');
|
||||
|
@ -560,16 +548,15 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setFontBackgroundColor = (value) => {
|
||||
if (this.textEnabled) {
|
||||
if (value == mxConstants.NONE) {
|
||||
if (value === mxConstants.NONE) {
|
||||
value = null;
|
||||
}
|
||||
|
||||
if (this.compressed) {
|
||||
if (this.state.fontBackgroundColor == value) {
|
||||
if (this.state.fontBackgroundColor === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setFontBackgroundColor.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setFontBackgroundColor(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('fontbackgroundcolor');
|
||||
|
@ -589,16 +576,15 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setFontBorderColor = (value) => {
|
||||
if (this.textEnabled) {
|
||||
if (value == mxConstants.NONE) {
|
||||
if (value === mxConstants.NONE) {
|
||||
value = null;
|
||||
}
|
||||
|
||||
if (this.compressed) {
|
||||
if (this.state.fontBorderColor == value) {
|
||||
if (this.state.fontBorderColor === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setFontBorderColor.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setFontBorderColor(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('fontbordercolor');
|
||||
|
@ -619,11 +605,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
mxXmlCanvas2setFontSize = (value) => {
|
||||
if (this.textEnabled) {
|
||||
if (this.compressed) {
|
||||
if (this.state.fontSize == value) {
|
||||
if (this.state.fontSize === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setFontSize.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setFontSize(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('fontsize');
|
||||
|
@ -645,11 +630,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
mxXmlCanvas2setFontFamily = (value) => {
|
||||
if (this.textEnabled) {
|
||||
if (this.compressed) {
|
||||
if (this.state.fontFamily == value) {
|
||||
if (this.state.fontFamily === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setFontFamily.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setFontFamily(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('fontfamily');
|
||||
|
@ -675,11 +659,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
}
|
||||
|
||||
if (this.compressed) {
|
||||
if (this.state.fontStyle == value) {
|
||||
if (this.state.fontStyle === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setFontStyle.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setFontStyle.apply(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('fontstyle');
|
||||
|
@ -699,11 +682,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setShadow = (value) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.shadow == value) {
|
||||
if (this.state.shadow === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setShadow.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setShadow(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('shadow');
|
||||
|
@ -722,15 +704,15 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setShadowColor = (value) => {
|
||||
if (this.compressed) {
|
||||
if (value == mxConstants.NONE) {
|
||||
if (value === mxConstants.NONE) {
|
||||
value = null;
|
||||
}
|
||||
|
||||
if (this.state.shadowColor == value) {
|
||||
if (this.state.shadowColor === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setShadowColor.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setShadowColor(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('shadowcolor');
|
||||
|
@ -750,17 +732,15 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setShadowAlpha = (value) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.shadowAlpha == value) {
|
||||
if (this.state.shadowAlpha === value) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setShadowAlpha.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setShadowAlpha(value);
|
||||
}
|
||||
|
||||
let elem = this.createElement('shadowalpha');
|
||||
elem.setAttribute('alpha', value);
|
||||
this.root.appendChild(elem);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -775,11 +755,10 @@ class mxXmlCanvas2D extends mxAbstractCanvas2D {
|
|||
*/
|
||||
mxXmlCanvas2setShadowOffset = (dx, dy) => {
|
||||
if (this.compressed) {
|
||||
if (this.state.shadowDx == dx && this.state.shadowDy == dy) {
|
||||
if (this.state.shadowDx === dx && this.state.shadowDy === dy) {
|
||||
return;
|
||||
}
|
||||
|
||||
mxAbstractCanvas2setShadowOffset.apply(this, arguments);
|
||||
this.mxAbstractCanvas2setShadowOffset(dx, dy);
|
||||
}
|
||||
|
||||
let elem = this.createElement('shadowoffset');
|
||||
|
|
|
@ -4029,14 +4029,15 @@ class mxGraph extends mxEventSource {
|
|||
* relative - Optional boolean that specifies if the geometry is relative.
|
||||
* Default is false.
|
||||
*/
|
||||
insertVertex = (parent, id, value,
|
||||
x, y, width, height,
|
||||
style, relative) => {
|
||||
insertVertex = (...args) => {
|
||||
let parent, id, value,
|
||||
x, y, width, height,
|
||||
style, relative;
|
||||
|
||||
if (arguments.length === 1) {
|
||||
if (args.length === 1) {
|
||||
// If only a single parameter, treat as an object
|
||||
// This syntax can be more readable
|
||||
let params = arguments[0];
|
||||
let params = args[0];
|
||||
parent = params.parent;
|
||||
id = params.id;
|
||||
value = params.value;
|
||||
|
@ -4048,6 +4049,11 @@ class mxGraph extends mxEventSource {
|
|||
|
||||
style = params.style;
|
||||
relative = params.relative;
|
||||
} else {
|
||||
// Otherwise treat as arguments
|
||||
[parent, id, value,
|
||||
x, y, width, height,
|
||||
style, relative] = args;
|
||||
}
|
||||
|
||||
let vertex = this.createVertex(
|
||||
|
@ -4096,18 +4102,22 @@ class mxGraph extends mxEventSource {
|
|||
* target - <mxCell> that defines the target of the edge.
|
||||
* style - Optional string that defines the cell style.
|
||||
*/
|
||||
insertEdge = (parent, id, value, source, target, style) => {
|
||||
insertEdge = (...args) => {
|
||||
let parent, id, value, source, target, style;
|
||||
|
||||
if (arguments.length === 1) {
|
||||
if (args.length === 1) {
|
||||
// If only a single parameter, treat as an object
|
||||
// This syntax can be more readable
|
||||
let params = arguments[0];
|
||||
let params = args[0];
|
||||
parent = params.parent;
|
||||
id = params.id;
|
||||
value = params.value;
|
||||
source = params.source;
|
||||
target = params.target;
|
||||
style = params.style;
|
||||
} else {
|
||||
// otherwise treat as individual arguments
|
||||
[parent, id, value, source, target, style] = args;
|
||||
}
|
||||
|
||||
let edge = this.createEdge(parent, id, value, source, target, style);
|
||||
|
|
|
@ -10,6 +10,7 @@ import mxRectangle from "../util/mxRectangle";
|
|||
import mxRectangleShape from "../shape/mxRectangleShape";
|
||||
import mxMouseEvent from "FIXME";
|
||||
import mxGraph from "./mxGraph";
|
||||
import mxImageShape from "../shape/mxImageShape";
|
||||
|
||||
class mxOutline {
|
||||
/**
|
||||
|
@ -182,7 +183,7 @@ class mxOutline {
|
|||
let outlineGraphModelChanged = this.outline.graphModelChanged;
|
||||
this.outline.graphModelChanged = mxUtils.bind(this, (changes) => {
|
||||
if (!this.suspended && this.outline != null) {
|
||||
outlineGraphModelChanged.apply(this.outline, arguments);
|
||||
outlineGraphModelChanged.apply(this.outline, [changes]);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -197,11 +198,11 @@ class mxOutline {
|
|||
this.outline.labelsVisible = this.labelsVisible;
|
||||
this.outline.setEnabled(false);
|
||||
|
||||
this.updateHandler = mxUtils.bind(this, (sender, evt) => {
|
||||
this.updateHandler = (sender, evt) => {
|
||||
if (!this.suspended && !this.active) {
|
||||
this.update();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// Updates the scale of the outline after a change of the main graph
|
||||
this.source.getModel().addListener(mxEvent.CHANGE, this.updateHandler);
|
||||
|
@ -218,18 +219,18 @@ class mxOutline {
|
|||
// Updates blue rectangle on scroll
|
||||
mxEvent.addListener(this.source.container, 'scroll', this.updateHandler);
|
||||
|
||||
this.panHandler = mxUtils.bind(this, (sender) => {
|
||||
this.panHandler = (sender, evt) => {
|
||||
if (this.updateOnPan) {
|
||||
this.updateHandler.apply(this, arguments);
|
||||
this.updateHandler.apply(this, [sender, evt]);
|
||||
}
|
||||
});
|
||||
};
|
||||
this.source.addListener(mxEvent.PAN, this.panHandler);
|
||||
|
||||
// Refreshes the graph in the outline after a refresh of the main graph
|
||||
this.refreshHandler = mxUtils.bind(this, (sender) => {
|
||||
this.refreshHandler = (sender) => {
|
||||
this.outline.setStylesheet(this.source.getStylesheet());
|
||||
this.outline.refresh();
|
||||
});
|
||||
};
|
||||
this.source.addListener(mxEvent.REFRESH, this.refreshHandler);
|
||||
|
||||
// Creates the blue rectangle for the viewport
|
||||
|
@ -419,14 +420,14 @@ class mxOutline {
|
|||
let scale = (isNaN(outlineScale)) ? this.minScale : Math.max(this.minScale, outlineScale);
|
||||
|
||||
if (scale > 0) {
|
||||
if (this.outline.getView().scale != scale) {
|
||||
if (this.outline.getView().scale !== scale) {
|
||||
this.outline.getView().scale = scale;
|
||||
revalidate = true;
|
||||
}
|
||||
|
||||
let navView = this.outline.getView();
|
||||
|
||||
if (navView.currentRoot != this.source.getView().currentRoot) {
|
||||
if (navView.currentRoot !== this.source.getView().currentRoot) {
|
||||
navView.setCurrentRoot(this.source.getView().currentRoot);
|
||||
}
|
||||
|
||||
|
@ -448,7 +449,7 @@ class mxOutline {
|
|||
ty = ty - unscaledGraphBounds.y;
|
||||
}
|
||||
|
||||
if (navView.translate.x != tx || navView.translate.y != ty) {
|
||||
if (navView.translate.x !== tx || navView.translate.y !== ty) {
|
||||
navView.translate.x = tx;
|
||||
navView.translate.y = ty;
|
||||
revalidate = true;
|
||||
|
@ -474,21 +475,21 @@ class mxOutline {
|
|||
|
||||
let b = this.selectionBorder.bounds;
|
||||
|
||||
if (b.x != this.bounds.x || b.y != this.bounds.y || b.width != this.bounds.width || b.height != this.bounds.height) {
|
||||
if (b.x !== this.bounds.x || b.y !== this.bounds.y || b.width !== this.bounds.width || b.height !== this.bounds.height) {
|
||||
this.selectionBorder.bounds = this.bounds;
|
||||
this.selectionBorder.redraw();
|
||||
}
|
||||
|
||||
// Updates the bounds of the zoom handle at the bottom right
|
||||
let b = this.sizer.bounds;
|
||||
b = this.sizer.bounds;
|
||||
var b2 = new mxRectangle(this.bounds.x + this.bounds.width - b.width / 2,
|
||||
this.bounds.y + this.bounds.height - b.height / 2, b.width, b.height);
|
||||
|
||||
if (b.x != b2.x || b.y != b2.y || b.width != b2.width || b.height != b2.height) {
|
||||
if (b.x !== b2.x || b.y !== b2.y || b.width !== b2.width || b.height !== b2.height) {
|
||||
this.sizer.bounds = b2;
|
||||
|
||||
// Avoids update of visibility in redraw for VML
|
||||
if (this.sizer.node.style.visibility != 'hidden') {
|
||||
if (this.sizer.node.style.visibility !== 'hidden') {
|
||||
this.sizer.redraw();
|
||||
}
|
||||
}
|
||||
|
@ -576,7 +577,7 @@ class mxOutline {
|
|||
b.width, b.height);
|
||||
|
||||
// Avoids update of visibility in redraw for VML
|
||||
if (this.sizer.node.style.visibility != 'hidden') {
|
||||
if (this.sizer.node.style.visibility !== 'hidden') {
|
||||
this.sizer.redraw();
|
||||
}
|
||||
|
||||
|
|
|
@ -911,7 +911,7 @@ class mxPrintPreview {
|
|||
}
|
||||
}
|
||||
|
||||
redraw.apply(this, arguments);
|
||||
redraw.apply(this, [state, force, rendering]); // CHECK ME!!!
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -65,24 +65,23 @@ class mxTemporaryCellStates {
|
|||
c.setLink(link);
|
||||
}
|
||||
|
||||
oldPaint.apply(this, arguments);
|
||||
oldPaint.apply(this, [c]);
|
||||
|
||||
if (link != null) {
|
||||
c.setLink(null);
|
||||
}
|
||||
};
|
||||
|
||||
self.oldDoRedrawShape.apply(view.graph.cellRenderer, arguments);
|
||||
self.oldDoRedrawShape.apply(view.graph.cellRenderer, [state]);
|
||||
state.shape.paint = oldPaint;
|
||||
};
|
||||
}
|
||||
|
||||
// Overrides validateCellState to ignore invisible cells
|
||||
view.validateCellState = (cell, resurse) => {
|
||||
view.validateCellState = (cell, recurse) => {
|
||||
if (cell == null || isCellVisibleFn == null || isCellVisibleFn(cell)) {
|
||||
return self.oldValidateCellState.apply(view, arguments);
|
||||
return self.oldValidateCellState.apply(view, [cell, recurse]);
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,65 +1,10 @@
|
|||
import Head from 'next/head'
|
||||
import styles from '../styles/Home.module.css'
|
||||
import HelloWorld from "./HelloWorld";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<div className={styles.container}>
|
||||
<Head>
|
||||
<title>Create Next App</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
</Head>
|
||||
|
||||
<main className={styles.main}>
|
||||
<h1 className={styles.title}>
|
||||
Welcome to <a href="https://nextjs.org">Next.js!</a>
|
||||
</h1>
|
||||
|
||||
<p className={styles.description}>
|
||||
Get started by editing{' '}
|
||||
<code className={styles.code}>pages/index.js</code>
|
||||
</p>
|
||||
|
||||
<div className={styles.grid}>
|
||||
<a href="https://nextjs.org/docs" className={styles.card}>
|
||||
<h3>Documentation →</h3>
|
||||
<p>Find in-depth information about Next.js features and API.</p>
|
||||
</a>
|
||||
|
||||
<a href="https://nextjs.org/learn" className={styles.card}>
|
||||
<h3>Learn →</h3>
|
||||
<p>Learn about Next.js in an interactive course with quizzes!</p>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://github.com/vercel/next.js/tree/master/examples"
|
||||
className={styles.card}
|
||||
>
|
||||
<h3>Examples →</h3>
|
||||
<p>Discover and deploy boilerplate example Next.js projects.</p>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
|
||||
className={styles.card}
|
||||
>
|
||||
<h3>Deploy →</h3>
|
||||
<p>
|
||||
Instantly deploy your Next.js site to a public URL with Vercel.
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer className={styles.footer}>
|
||||
<a
|
||||
href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
Powered by{' '}
|
||||
<img src="/vercel.svg" alt="Vercel Logo" className={styles.logo} />
|
||||
</a>
|
||||
</footer>
|
||||
</div>
|
||||
)
|
||||
return <>
|
||||
<HelloWorld />
|
||||
</>;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue