1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
/*
* SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/>
*
* SPDX-License-Identifier: EPL-2.0
*/
import cancelSVG from '@material-icons/svg/svg/cancel/baseline.svg?raw';
import labelSVG from '@material-icons/svg/svg/label/baseline.svg?raw';
import labelOutlinedSVG from '@material-icons/svg/svg/label/outline.svg?raw';
import { alpha, styled, type CSSObject } from '@mui/material/styles';
import svgURL from '../utils/svgURL';
function createEdgeColor(
suffix: string,
stroke: string,
fill?: string,
): CSSObject {
return {
[`.edge-${suffix}`]: {
'& text': {
fill: stroke,
},
'& [stroke="black"]': {
stroke,
},
'& [fill="black"]': {
fill: fill ?? stroke,
},
},
};
}
export default styled('div', {
name: 'GraphTheme',
})(({ theme }) => ({
'& svg': {
userSelect: 'none',
'.node': {
'& text': {
fontFamily: theme.typography.fontFamily,
fill: theme.palette.text.primary,
},
'& [stroke="black"]': {
stroke: theme.palette.text.primary,
},
'& [fill="green"]': {
fill:
theme.palette.mode === 'dark'
? theme.palette.primary.dark
: theme.palette.primary.light,
},
'& [fill="white"]': {
fill: theme.palette.background.default,
},
},
'.node-INDIVIDUAL': {
'& [stroke="black"]': {
strokeWidth: 2,
},
},
'.node-shadow[fill="white"]': {
fill: alpha(
theme.palette.text.primary,
theme.palette.mode === 'dark' ? 0.32 : 0.24,
),
},
'.node-exists-UNKNOWN [stroke="black"]': {
strokeDasharray: '5 2',
},
'.node-exists-FALSE': {
'& [fill="green"]': {
fill: theme.palette.background.default,
},
'& [stroke="black"]': {
strokeDasharray: '1 3',
stroke: theme.palette.text.secondary,
},
},
'.edge': {
'& text': {
fontFamily: theme.typography.fontFamily,
fill: theme.palette.text.primary,
},
'& [stroke="black"]': {
stroke: theme.palette.text.primary,
},
'& [fill="black"]': {
fill: theme.palette.text.primary,
},
},
...createEdgeColor('UNKNOWN', theme.palette.text.secondary, 'none'),
...createEdgeColor('ERROR', theme.palette.error.main),
'.icon': {
maskSize: '12px 12px',
maskPosition: '50% 50%',
maskRepeat: 'no-repeat',
width: '100%',
height: '100%',
},
'.icon-TRUE': {
maskImage: svgURL(labelSVG),
background: theme.palette.text.primary,
},
'.icon-UNKNOWN': {
maskImage: svgURL(labelOutlinedSVG),
background: theme.palette.text.secondary,
},
'.icon-ERROR': {
maskImage: svgURL(cancelSVG),
background: theme.palette.error.main,
},
'text.label-UNKNOWN': {
fill: theme.palette.text.secondary,
},
'text.label-ERROR': {
fill: theme.palette.error.main,
},
},
}));
|