JointJS
Chromeアップデート後JointJSのportsが変な所にある
Transform list APIが変な動作をするせいで起こるらしい
改善はVectorizer transform
をオーバーライドすればいい
V.matrixToTransformString = function(matrix) {
matrix || (matrix = true);
return 'matrix(' + [
matrix.a || 1,
matrix.b || 0,
matrix.c || 0,
matrix.d || 1,
matrix.e || 0,
matrix.f || 0
] + ')';
};
V.prototype.transform = function(matrix, opt) {
var node = this.node;
if (V.isUndefined(matrix)) {
return (node.parentNode)
? this.getTransformToElement(node.parentNode)
: node.getScreenCTM();
}
if (opt && opt.absolute) {
return this.attr('transform', V.matrixToTransformString(matrix));
}
var svgTransform = V.createSVGTransform(matrix);
node.transform.baseVal.appendItem(svgTransform);
return this;
};
coffee version
V.matrixToTransformString = (matrix) ->
matrix || (matrix = true)
return 'matrix(' + [
matrix.a || 1,
matrix.b || 0,
matrix.c || 0,
matrix.d || 1,
matrix.e || 0,
matrix.f || 0
] + ')'
V.prototype.transform = (matrix, opt) ->
node = this.node
if V.isUndefined(matrix)
if (node.parentNode)
return this.getTransformToElement(node.parentNode)
else
return node.getScreenCTM()
if (opt && opt.absolute)
return this.attr('transform', V.matrixToTransformString(matrix));
svgTransform = V.createSVGTransform(matrix);
node.transform.baseVal.appendItem(svgTransform);
return this