mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-09-09 10:36:43 +02:00
144 lines
2.7 KiB
TypeScript
144 lines
2.7 KiB
TypeScript
/** Returns the styles given options */
|
|
export interface FlowChartStyleOptions {
|
|
arrowheadColor: string;
|
|
border2: string;
|
|
clusterBkg: string;
|
|
clusterBorder: string;
|
|
edgeLabelBackground: string;
|
|
fontFamily: string;
|
|
lineColor: string;
|
|
mainBkg: string;
|
|
nodeBorder: string;
|
|
nodeTextColor: string;
|
|
tertiaryColor: string;
|
|
textColor: string;
|
|
titleColor: string;
|
|
[key: string]: string;
|
|
}
|
|
|
|
const genSections = (options: FlowChartStyleOptions) => {
|
|
let sections = '';
|
|
|
|
for (let i = 0; i < 5; i++) {
|
|
sections += `
|
|
.subgraph-lvl-${i} {
|
|
fill: ${options[`surface${i}`]};
|
|
stroke: ${options[`surfacePeer${i}`]};
|
|
}
|
|
`;
|
|
}
|
|
return sections;
|
|
};
|
|
|
|
const getStyles = (options: FlowChartStyleOptions) =>
|
|
`.label {
|
|
font-family: ${options.fontFamily};
|
|
color: ${options.nodeTextColor || options.textColor};
|
|
}
|
|
.cluster-label text {
|
|
fill: ${options.titleColor};
|
|
}
|
|
.cluster-label span {
|
|
color: ${options.titleColor};
|
|
}
|
|
|
|
.label text,span {
|
|
fill: ${options.nodeTextColor || options.textColor};
|
|
color: ${options.nodeTextColor || options.textColor};
|
|
}
|
|
|
|
.node rect,
|
|
.node circle,
|
|
.node ellipse,
|
|
.node polygon,
|
|
.node path {
|
|
fill: ${options.mainBkg};
|
|
stroke: ${options.nodeBorder};
|
|
stroke-width: 1px;
|
|
}
|
|
|
|
.node .label {
|
|
text-align: center;
|
|
}
|
|
.node.clickable {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.arrowheadPath {
|
|
fill: ${options.arrowheadColor};
|
|
}
|
|
|
|
.edgePath .path {
|
|
stroke: ${options.lineColor};
|
|
stroke-width: 2.0px;
|
|
}
|
|
|
|
.flowchart-link {
|
|
stroke: ${options.lineColor};
|
|
fill: none;
|
|
}
|
|
|
|
.edgeLabel {
|
|
background-color: ${options.edgeLabelBackground};
|
|
rect {
|
|
opacity: 0.85;
|
|
background-color: ${options.edgeLabelBackground};
|
|
fill: ${options.edgeLabelBackground};
|
|
}
|
|
text-align: center;
|
|
}
|
|
|
|
.cluster rect {
|
|
fill: ${options.clusterBkg};
|
|
stroke: ${options.clusterBorder};
|
|
stroke-width: 1px;
|
|
}
|
|
|
|
.cluster text {
|
|
fill: ${options.titleColor};
|
|
}
|
|
|
|
.cluster span {
|
|
color: ${options.titleColor};
|
|
}
|
|
/* .cluster div {
|
|
color: ${options.titleColor};
|
|
} */
|
|
|
|
div.mermaidTooltip {
|
|
position: absolute;
|
|
text-align: center;
|
|
max-width: 200px;
|
|
padding: 2px;
|
|
font-family: ${options.fontFamily};
|
|
font-size: 12px;
|
|
background: ${options.tertiaryColor};
|
|
border: 1px solid ${options.border2};
|
|
border-radius: 2px;
|
|
pointer-events: none;
|
|
z-index: 100;
|
|
}
|
|
|
|
.flowchartTitleText {
|
|
text-anchor: middle;
|
|
font-size: 18px;
|
|
fill: ${options.textColor};
|
|
}
|
|
.subgraph {
|
|
stroke-width:2;
|
|
rx:3;
|
|
}
|
|
// .subgraph-lvl-1 {
|
|
// fill:#ccc;
|
|
// // stroke:black;
|
|
// }
|
|
|
|
.flowchart-label text {
|
|
text-anchor: middle;
|
|
}
|
|
|
|
${genSections(options)}
|
|
`;
|
|
|
|
export default getStyles;
|