161 lines
6.2 KiB
JavaScript
161 lines
6.2 KiB
JavaScript
import {
|
|
__name
|
|
} from "./chunk-I65GBZ6F.js";
|
|
|
|
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-HN2XXSSU.mjs
|
|
var markerOffsets = {
|
|
aggregation: 17.25,
|
|
extension: 17.25,
|
|
composition: 17.25,
|
|
dependency: 6,
|
|
lollipop: 13.5,
|
|
arrow_point: 4
|
|
//arrow_cross: 24,
|
|
};
|
|
var markerOffsets2 = {
|
|
arrow_point: 9,
|
|
arrow_cross: 12.5,
|
|
arrow_circle: 12.5
|
|
};
|
|
function calculateDeltaAndAngle(point1, point2) {
|
|
if (point1 === void 0 || point2 === void 0) {
|
|
return { angle: 0, deltaX: 0, deltaY: 0 };
|
|
}
|
|
point1 = pointTransformer(point1);
|
|
point2 = pointTransformer(point2);
|
|
const [x1, y1] = [point1.x, point1.y];
|
|
const [x2, y2] = [point2.x, point2.y];
|
|
const deltaX = x2 - x1;
|
|
const deltaY = y2 - y1;
|
|
return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };
|
|
}
|
|
__name(calculateDeltaAndAngle, "calculateDeltaAndAngle");
|
|
var pointTransformer = __name((data) => {
|
|
if (Array.isArray(data)) {
|
|
return { x: data[0], y: data[1] };
|
|
}
|
|
return data;
|
|
}, "pointTransformer");
|
|
var getLineFunctionsWithOffset = __name((edge) => {
|
|
return {
|
|
x: __name(function(d, i, data) {
|
|
let offset = 0;
|
|
const DIRECTION = pointTransformer(data[0]).x < pointTransformer(data[data.length - 1]).x ? "left" : "right";
|
|
if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {
|
|
const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);
|
|
offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);
|
|
} else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {
|
|
const { angle, deltaX } = calculateDeltaAndAngle(
|
|
data[data.length - 1],
|
|
data[data.length - 2]
|
|
);
|
|
offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);
|
|
}
|
|
const differenceToEnd = Math.abs(
|
|
pointTransformer(d).x - pointTransformer(data[data.length - 1]).x
|
|
);
|
|
const differenceInYEnd = Math.abs(
|
|
pointTransformer(d).y - pointTransformer(data[data.length - 1]).y
|
|
);
|
|
const differenceToStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);
|
|
const differenceInYStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);
|
|
const startMarkerHeight = markerOffsets[edge.arrowTypeStart];
|
|
const endMarkerHeight = markerOffsets[edge.arrowTypeEnd];
|
|
const extraRoom = 1;
|
|
if (differenceToEnd < endMarkerHeight && differenceToEnd > 0 && differenceInYEnd < endMarkerHeight) {
|
|
let adjustment = endMarkerHeight + extraRoom - differenceToEnd;
|
|
adjustment *= DIRECTION === "right" ? -1 : 1;
|
|
offset -= adjustment;
|
|
}
|
|
if (differenceToStart < startMarkerHeight && differenceToStart > 0 && differenceInYStart < startMarkerHeight) {
|
|
let adjustment = startMarkerHeight + extraRoom - differenceToStart;
|
|
adjustment *= DIRECTION === "right" ? -1 : 1;
|
|
offset += adjustment;
|
|
}
|
|
return pointTransformer(d).x + offset;
|
|
}, "x"),
|
|
y: __name(function(d, i, data) {
|
|
let offset = 0;
|
|
const DIRECTION = pointTransformer(data[0]).y < pointTransformer(data[data.length - 1]).y ? "down" : "up";
|
|
if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {
|
|
const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);
|
|
offset = markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);
|
|
} else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {
|
|
const { angle, deltaY } = calculateDeltaAndAngle(
|
|
data[data.length - 1],
|
|
data[data.length - 2]
|
|
);
|
|
offset = markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);
|
|
}
|
|
const differenceToEnd = Math.abs(
|
|
pointTransformer(d).y - pointTransformer(data[data.length - 1]).y
|
|
);
|
|
const differenceInXEnd = Math.abs(
|
|
pointTransformer(d).x - pointTransformer(data[data.length - 1]).x
|
|
);
|
|
const differenceToStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);
|
|
const differenceInXStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);
|
|
const startMarkerHeight = markerOffsets[edge.arrowTypeStart];
|
|
const endMarkerHeight = markerOffsets[edge.arrowTypeEnd];
|
|
const extraRoom = 1;
|
|
if (differenceToEnd < endMarkerHeight && differenceToEnd > 0 && differenceInXEnd < endMarkerHeight) {
|
|
let adjustment = endMarkerHeight + extraRoom - differenceToEnd;
|
|
adjustment *= DIRECTION === "up" ? -1 : 1;
|
|
offset -= adjustment;
|
|
}
|
|
if (differenceToStart < startMarkerHeight && differenceToStart > 0 && differenceInXStart < startMarkerHeight) {
|
|
let adjustment = startMarkerHeight + extraRoom - differenceToStart;
|
|
adjustment *= DIRECTION === "up" ? -1 : 1;
|
|
offset += adjustment;
|
|
}
|
|
return pointTransformer(d).y + offset;
|
|
}, "y")
|
|
};
|
|
}, "getLineFunctionsWithOffset");
|
|
if (void 0) {
|
|
const { it, expect, describe } = void 0;
|
|
describe("calculateDeltaAndAngle", () => {
|
|
it("should calculate the angle and deltas between two points", () => {
|
|
expect(calculateDeltaAndAngle([0, 0], [0, 1])).toStrictEqual({
|
|
angle: 1.5707963267948966,
|
|
deltaX: 0,
|
|
deltaY: 1
|
|
});
|
|
expect(calculateDeltaAndAngle([1, 0], [0, -1])).toStrictEqual({
|
|
angle: 0.7853981633974483,
|
|
deltaX: -1,
|
|
deltaY: -1
|
|
});
|
|
expect(calculateDeltaAndAngle({ x: 1, y: 0 }, [0, -1])).toStrictEqual({
|
|
angle: 0.7853981633974483,
|
|
deltaX: -1,
|
|
deltaY: -1
|
|
});
|
|
expect(calculateDeltaAndAngle({ x: 1, y: 0 }, { x: 1, y: 0 })).toStrictEqual({
|
|
angle: NaN,
|
|
deltaX: 0,
|
|
deltaY: 0
|
|
});
|
|
});
|
|
it("should calculate the angle and deltas if one point in undefined", () => {
|
|
expect(calculateDeltaAndAngle(void 0, [0, 1])).toStrictEqual({
|
|
angle: 0,
|
|
deltaX: 0,
|
|
deltaY: 0
|
|
});
|
|
expect(calculateDeltaAndAngle([0, 1], void 0)).toStrictEqual({
|
|
angle: 0,
|
|
deltaX: 0,
|
|
deltaY: 0
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
export {
|
|
markerOffsets,
|
|
markerOffsets2,
|
|
getLineFunctionsWithOffset
|
|
};
|
|
//# sourceMappingURL=chunk-2HSIUWWJ.js.map
|