(theme: Theme, ...overlays: Partial<Theme | undefined>[])
| 153 | } |
| 154 | |
| 155 | export function mergeAndRealizeTheme(theme: Theme, ...overlays: Partial<Theme | undefined>[]): FullTheme { |
| 156 | const merged: any = { ...theme }; |
| 157 | |
| 158 | for (const overlay of overlays) { |
| 159 | if (overlay !== undefined) { |
| 160 | for (const key in overlay) { |
| 161 | // eslint-disable-next-line no-prototype-builtins |
| 162 | if (overlay.hasOwnProperty(key)) { |
| 163 | if (key === "bgCell") { |
| 164 | merged[key] = blend(overlay[key] as string, merged[key]); |
| 165 | } else { |
| 166 | merged[key] = (overlay as any)[key]; |
| 167 | } |
| 168 | } |
| 169 | } |
| 170 | } |
| 171 | } |
| 172 | |
| 173 | if ( |
| 174 | merged.headerFontFull === undefined || |
| 175 | theme.fontFamily !== merged.fontFamily || |
| 176 | theme.headerFontStyle !== merged.headerFontStyle |
| 177 | ) { |
| 178 | merged.headerFontFull = `${merged.headerFontStyle} ${merged.fontFamily}`; |
| 179 | } |
| 180 | |
| 181 | if ( |
| 182 | merged.baseFontFull === undefined || |
| 183 | theme.fontFamily !== merged.fontFamily || |
| 184 | theme.baseFontStyle !== merged.baseFontStyle |
| 185 | ) { |
| 186 | merged.baseFontFull = `${merged.baseFontStyle} ${merged.fontFamily}`; |
| 187 | } |
| 188 | |
| 189 | if ( |
| 190 | merged.markerFontFull === undefined || |
| 191 | theme.fontFamily !== merged.fontFamily || |
| 192 | theme.markerFontStyle !== merged.markerFontStyle |
| 193 | ) { |
| 194 | merged.markerFontFull = `${merged.markerFontStyle} ${merged.fontFamily}`; |
| 195 | } |
| 196 | |
| 197 | return merged; |
| 198 | } |
no test coverage detected
searching dependent graphs…