mirror of
https://bitbucket.org/wisemapping/wisemapping-frontend.git
synced 2025-04-08 22:13:20 +02:00
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import NodeModel from '../model/NodeModel';
|
|
import ThemeType from '../model/ThemeType';
|
|
import ClassicTheme from './ClassicTheme';
|
|
import DarkPrismTheme from './DarkPrismTheme';
|
|
import PrismTheme from './PrismTheme';
|
|
import Theme from './Theme';
|
|
|
|
class ThemeFactory {
|
|
private static prismTheme = new PrismTheme();
|
|
|
|
private static darkPrismTheme = new DarkPrismTheme();
|
|
|
|
private static classicTheme = new ClassicTheme();
|
|
|
|
static createById(id: ThemeType): Theme {
|
|
let result: Theme;
|
|
switch (id) {
|
|
case 'classic':
|
|
result = ThemeFactory.classicTheme;
|
|
break;
|
|
case 'dark-prism':
|
|
result = ThemeFactory.darkPrismTheme;
|
|
break;
|
|
case 'prism':
|
|
result = ThemeFactory.prismTheme;
|
|
break;
|
|
default: {
|
|
const exhaustiveCheck: never = id;
|
|
throw new Error(exhaustiveCheck);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
static create(model: NodeModel): Theme {
|
|
const mindmap = model.getMindmap();
|
|
const theme = mindmap.getTheme();
|
|
return ThemeFactory.createById(theme);
|
|
}
|
|
}
|
|
export default ThemeFactory;
|