aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/palette.ts
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-06-15 23:17:33 +0800
committercrupest <crupest@outlook.com>2021-06-15 23:17:33 +0800
commit8b0b103859ad869021361de6090cbebff0574cdb (patch)
tree5bcfd87d1d425c5fab640f5b81a655902e6b999d /FrontEnd/src/palette.ts
parent7bc891cd64207bb4526669ba47e22a2feea71d51 (diff)
downloadtimeline-8b0b103859ad869021361de6090cbebff0574cdb.tar.gz
timeline-8b0b103859ad869021361de6090cbebff0574cdb.tar.bz2
timeline-8b0b103859ad869021361de6090cbebff0574cdb.zip
...
Diffstat (limited to 'FrontEnd/src/palette.ts')
-rw-r--r--FrontEnd/src/palette.ts33
1 files changed, 20 insertions, 13 deletions
diff --git a/FrontEnd/src/palette.ts b/FrontEnd/src/palette.ts
index 6385df66..767fe995 100644
--- a/FrontEnd/src/palette.ts
+++ b/FrontEnd/src/palette.ts
@@ -13,9 +13,9 @@ function darkenBy(color: Color, ratio: number): Color {
export interface PaletteColor {
color: string;
- inactive: string;
lighter: string;
darker: string;
+ inactive: string;
[key: string]: string;
}
@@ -39,9 +39,9 @@ export function generatePaletteColor(color: string): PaletteColor {
color: c.toString(),
inactive: (c.lightness() > 60
? darkenBy(c, 0.1)
- : lightenBy(c, 0.2)
+ : lightenBy(c, 0.1)
).toString(),
- lighter: lightenBy(c, 0.1).fade(0.1).toString(),
+ lighter: lightenBy(c, 0.1).toString(),
darker: darkenBy(c, 0.1).toString(),
};
}
@@ -89,21 +89,28 @@ export function generatePaletteCSS(palette: Palette): string {
.join("")}}`;
}
-const paletteSubject: BehaviorSubject<Palette> = new BehaviorSubject<Palette>(
- generatePalette({ primary: "#007bff" })
-);
+const paletteSubject: BehaviorSubject<Palette | null> =
+ new BehaviorSubject<Palette | null>(null);
-export const palette$: Observable<Palette> = paletteSubject.asObservable();
+export const palette$: Observable<Palette | null> =
+ paletteSubject.asObservable();
palette$.subscribe((palette) => {
const styleTagId = "timeline-palette-css";
- let styleTag = document.getElementById(styleTagId);
- if (styleTag == null) {
- styleTag = document.createElement("style");
- styleTag.id = styleTagId;
- document.head.append(styleTag);
+ if (palette != null) {
+ let styleTag = document.getElementById(styleTagId);
+ if (styleTag == null) {
+ styleTag = document.createElement("style");
+ styleTag.id = styleTagId;
+ document.head.append(styleTag);
+ }
+ styleTag.innerHTML = generatePaletteCSS(palette);
+ } else {
+ const styleTag = document.getElementById(styleTagId);
+ if (styleTag != null) {
+ styleTag.parentElement?.removeChild(styleTag);
+ }
}
- styleTag.innerHTML = generatePaletteCSS(palette);
});
export function setPalette(palette: Palette): () => void {