105 lines
3.7 KiB
JavaScript
105 lines
3.7 KiB
JavaScript
import {
|
|
insertEdge,
|
|
insertEdgeLabel,
|
|
markers_default,
|
|
positionEdgeLabel
|
|
} from "./chunk-TRQY2T3P.mjs";
|
|
import {
|
|
insertCluster,
|
|
insertNode,
|
|
labelHelper
|
|
} from "./chunk-HQMLCRZ6.mjs";
|
|
import {
|
|
interpolateToCurve
|
|
} from "./chunk-BSZA5ISF.mjs";
|
|
import {
|
|
common_default,
|
|
getConfig
|
|
} from "./chunk-Q52JI7PB.mjs";
|
|
import {
|
|
log
|
|
} from "./chunk-V7P66DNM.mjs";
|
|
import {
|
|
__name
|
|
} from "./chunk-PTVI3W5X.mjs";
|
|
|
|
// src/internals.ts
|
|
var internalHelpers = {
|
|
common: common_default,
|
|
getConfig,
|
|
insertCluster,
|
|
insertEdge,
|
|
insertEdgeLabel,
|
|
insertMarkers: markers_default,
|
|
insertNode,
|
|
interpolateToCurve,
|
|
labelHelper,
|
|
log,
|
|
positionEdgeLabel
|
|
};
|
|
|
|
// src/rendering-util/render.ts
|
|
var layoutAlgorithms = {};
|
|
var registerLayoutLoaders = /* @__PURE__ */ __name((loaders) => {
|
|
for (const loader of loaders) {
|
|
layoutAlgorithms[loader.name] = loader;
|
|
}
|
|
}, "registerLayoutLoaders");
|
|
var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
|
|
registerLayoutLoaders([
|
|
{
|
|
name: "dagre",
|
|
loader: /* @__PURE__ */ __name(async () => await import("./dagre-ZXKKJJHT.mjs"), "loader")
|
|
},
|
|
...true ? [
|
|
{
|
|
name: "cose-bilkent",
|
|
loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-WZ3F43K2.mjs"), "loader")
|
|
}
|
|
] : []
|
|
]);
|
|
}, "registerDefaultLayoutLoaders");
|
|
registerDefaultLayoutLoaders();
|
|
var render = /* @__PURE__ */ __name(async (data4Layout, svg) => {
|
|
if (!(data4Layout.layoutAlgorithm in layoutAlgorithms)) {
|
|
throw new Error(`Unknown layout algorithm: ${data4Layout.layoutAlgorithm}`);
|
|
}
|
|
if (data4Layout.diagramId) {
|
|
for (const node of data4Layout.nodes) {
|
|
const originalDomId = node.domId || node.id;
|
|
node.domId = `${data4Layout.diagramId}-${originalDomId}`;
|
|
}
|
|
}
|
|
const layoutDefinition = layoutAlgorithms[data4Layout.layoutAlgorithm];
|
|
const layoutRenderer = await layoutDefinition.loader();
|
|
const { theme, themeVariables } = data4Layout.config;
|
|
const { useGradient, gradientStart, gradientStop } = themeVariables;
|
|
const svgId = svg.attr("id");
|
|
svg.append("defs").append("filter").attr("id", `${svgId}-drop-shadow`).attr("height", "130%").attr("width", "130%").append("feDropShadow").attr("dx", "4").attr("dy", "4").attr("stdDeviation", 0).attr("flood-opacity", "0.06").attr("flood-color", `${theme?.includes("dark") ? "#FFFFFF" : "#000000"}`);
|
|
svg.append("defs").append("filter").attr("id", `${svgId}-drop-shadow-small`).attr("height", "150%").attr("width", "150%").append("feDropShadow").attr("dx", "2").attr("dy", "2").attr("stdDeviation", 0).attr("flood-opacity", "0.06").attr("flood-color", `${theme?.includes("dark") ? "#FFFFFF" : "#000000"}`);
|
|
if (useGradient) {
|
|
const gradient = svg.append("linearGradient").attr("id", svg.attr("id") + "-gradient").attr("gradientUnits", "objectBoundingBox").attr("x1", "0%").attr("y1", "0%").attr("x2", "100%").attr("y2", "0%");
|
|
gradient.append("svg:stop").attr("offset", "0%").attr("stop-color", gradientStart).attr("stop-opacity", 1);
|
|
gradient.append("svg:stop").attr("offset", "100%").attr("stop-color", gradientStop).attr("stop-opacity", 1);
|
|
}
|
|
return layoutRenderer.render(data4Layout, svg, internalHelpers, {
|
|
algorithm: layoutDefinition.algorithm
|
|
});
|
|
}, "render");
|
|
var getRegisteredLayoutAlgorithm = /* @__PURE__ */ __name((algorithm = "", { fallback = "dagre" } = {}) => {
|
|
if (algorithm in layoutAlgorithms) {
|
|
return algorithm;
|
|
}
|
|
if (fallback in layoutAlgorithms) {
|
|
log.warn(`Layout algorithm ${algorithm} is not registered. Using ${fallback} as fallback.`);
|
|
return fallback;
|
|
}
|
|
throw new Error(`Both layout algorithms ${algorithm} and ${fallback} are not registered.`);
|
|
}, "getRegisteredLayoutAlgorithm");
|
|
|
|
export {
|
|
registerLayoutLoaders,
|
|
render,
|
|
getRegisteredLayoutAlgorithm
|
|
};
|