Initial commit
This commit is contained in:
103
node_modules/konva/cmj/shapes/Arrow.js
generated
vendored
Normal file
103
node_modules/konva/cmj/shapes/Arrow.js
generated
vendored
Normal file
@@ -0,0 +1,103 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Arrow = void 0;
|
||||
const Factory_1 = require("../Factory");
|
||||
const Line_1 = require("./Line");
|
||||
const Validators_1 = require("../Validators");
|
||||
const Global_1 = require("../Global");
|
||||
const Path_1 = require("./Path");
|
||||
class Arrow extends Line_1.Line {
|
||||
_sceneFunc(ctx) {
|
||||
super._sceneFunc(ctx);
|
||||
var PI2 = Math.PI * 2;
|
||||
var points = this.points();
|
||||
var tp = points;
|
||||
var fromTension = this.tension() !== 0 && points.length > 4;
|
||||
if (fromTension) {
|
||||
tp = this.getTensionPoints();
|
||||
}
|
||||
var length = this.pointerLength();
|
||||
var n = points.length;
|
||||
var dx, dy;
|
||||
if (fromTension) {
|
||||
const lp = [
|
||||
tp[tp.length - 4],
|
||||
tp[tp.length - 3],
|
||||
tp[tp.length - 2],
|
||||
tp[tp.length - 1],
|
||||
points[n - 2],
|
||||
points[n - 1],
|
||||
];
|
||||
const lastLength = Path_1.Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);
|
||||
const previous = Path_1.Path.getPointOnQuadraticBezier(Math.min(1, 1 - length / lastLength), lp[0], lp[1], lp[2], lp[3], lp[4], lp[5]);
|
||||
dx = points[n - 2] - previous.x;
|
||||
dy = points[n - 1] - previous.y;
|
||||
}
|
||||
else {
|
||||
dx = points[n - 2] - points[n - 4];
|
||||
dy = points[n - 1] - points[n - 3];
|
||||
}
|
||||
var radians = (Math.atan2(dy, dx) + PI2) % PI2;
|
||||
var width = this.pointerWidth();
|
||||
if (this.pointerAtEnding()) {
|
||||
ctx.save();
|
||||
ctx.beginPath();
|
||||
ctx.translate(points[n - 2], points[n - 1]);
|
||||
ctx.rotate(radians);
|
||||
ctx.moveTo(0, 0);
|
||||
ctx.lineTo(-length, width / 2);
|
||||
ctx.lineTo(-length, -width / 2);
|
||||
ctx.closePath();
|
||||
ctx.restore();
|
||||
this.__fillStroke(ctx);
|
||||
}
|
||||
if (this.pointerAtBeginning()) {
|
||||
ctx.save();
|
||||
ctx.beginPath();
|
||||
ctx.translate(points[0], points[1]);
|
||||
if (fromTension) {
|
||||
dx = (tp[0] + tp[2]) / 2 - points[0];
|
||||
dy = (tp[1] + tp[3]) / 2 - points[1];
|
||||
}
|
||||
else {
|
||||
dx = points[2] - points[0];
|
||||
dy = points[3] - points[1];
|
||||
}
|
||||
ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);
|
||||
ctx.moveTo(0, 0);
|
||||
ctx.lineTo(-length, width / 2);
|
||||
ctx.lineTo(-length, -width / 2);
|
||||
ctx.closePath();
|
||||
ctx.restore();
|
||||
this.__fillStroke(ctx);
|
||||
}
|
||||
}
|
||||
__fillStroke(ctx) {
|
||||
var isDashEnabled = this.dashEnabled();
|
||||
if (isDashEnabled) {
|
||||
this.attrs.dashEnabled = false;
|
||||
ctx.setLineDash([]);
|
||||
}
|
||||
ctx.fillStrokeShape(this);
|
||||
if (isDashEnabled) {
|
||||
this.attrs.dashEnabled = true;
|
||||
}
|
||||
}
|
||||
getSelfRect() {
|
||||
const lineRect = super.getSelfRect();
|
||||
const offset = this.pointerWidth() / 2;
|
||||
return {
|
||||
x: lineRect.x - offset,
|
||||
y: lineRect.y - offset,
|
||||
width: lineRect.width + offset * 2,
|
||||
height: lineRect.height + offset * 2,
|
||||
};
|
||||
}
|
||||
}
|
||||
exports.Arrow = Arrow;
|
||||
Arrow.prototype.className = 'Arrow';
|
||||
(0, Global_1._registerNode)(Arrow);
|
||||
Factory_1.Factory.addGetterSetter(Arrow, 'pointerLength', 10, (0, Validators_1.getNumberValidator)());
|
||||
Factory_1.Factory.addGetterSetter(Arrow, 'pointerWidth', 10, (0, Validators_1.getNumberValidator)());
|
||||
Factory_1.Factory.addGetterSetter(Arrow, 'pointerAtBeginning', false);
|
||||
Factory_1.Factory.addGetterSetter(Arrow, 'pointerAtEnding', true);
|
||||
Reference in New Issue
Block a user