fix: резюме подхватывает акцент темы из localStorage (формат light/dark)
This commit is contained in:
1 parent
9fc2dcb02e
commit
207e6121aa
40 files changed
+1040
-600
No files matched your search
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -24,21 +24,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -66,7 +77,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -24,21 +24,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -66,7 +77,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
+26
-15
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
+26
-15
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
+26
-15
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
+26
-15
@@ -27,21 +27,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -69,7 +80,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -17,21 +17,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -59,7 +70,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
@@ -17,21 +17,32 @@
|
||||
: "light"
|
||||
: m;
|
||||
d.dataset.theme = eff;
|
||||
var h = typeof t.h === "number" ? t.h : typeof t.hue === "number" ? t.hue : null;
|
||||
var s = typeof t.s === "number" ? t.s : typeof t.sat === "number" ? t.sat : null;
|
||||
var l = typeof t.l === "number" ? t.l : typeof t.light === "number" ? t.light : null;
|
||||
if (h !== null) d.style.setProperty("--theme-h", String(h));
|
||||
if (s !== null) d.style.setProperty("--theme-s", String(s));
|
||||
if (l !== null) {
|
||||
var L = Number(l);
|
||||
if (Number.isFinite(L)) d.style.setProperty("--theme-l", String(Math.min(70, Math.max(20, L))));
|
||||
var DEF = { h: 210, s: 90, l: 40 };
|
||||
function pickAccent(o) {
|
||||
if (!o) return null;
|
||||
var h = typeof o.h === "number" ? o.h : typeof o.hue === "number" ? o.hue : null;
|
||||
var s = typeof o.s === "number" ? o.s : typeof o.sat === "number" ? o.sat : null;
|
||||
var l = typeof o.l === "number" ? o.l : typeof o.light === "number" ? o.light : null;
|
||||
if (h === null && s === null && l === null) return null;
|
||||
return {
|
||||
h: h === null ? DEF.h : h,
|
||||
s: s === null ? DEF.s : Math.min(100, Math.max(30, s)),
|
||||
l: l === null ? DEF.l : Math.min(70, Math.max(20, l)),
|
||||
};
|
||||
}
|
||||
var hVal = h !== null ? h : 210;
|
||||
var sVal = s !== null ? s : 90;
|
||||
var lVal = l !== null ? Math.min(70, Math.max(20, Number(l))) : 40;
|
||||
var H = (((hVal % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, sVal)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, lVal)) / 100;
|
||||
// Текущий формат: отдельный акцент для светлой и тёмной темы ({light, dark}).
|
||||
// Старый плоский формат ({h, s, l}) остаётся совместимым.
|
||||
var acc =
|
||||
pickAccent(eff === "dark" ? t.dark : t.light) ||
|
||||
pickAccent(eff === "dark" ? t.light : t.dark) ||
|
||||
pickAccent(t) ||
|
||||
DEF;
|
||||
d.style.setProperty("--theme-h", String(acc.h));
|
||||
d.style.setProperty("--theme-s", String(acc.s));
|
||||
d.style.setProperty("--theme-l", String(acc.l));
|
||||
var H = (((acc.h % 360) + 360) % 360) / 360;
|
||||
var S = Math.min(100, Math.max(0, acc.s)) / 100;
|
||||
var Lv = Math.min(100, Math.max(0, acc.l)) / 100;
|
||||
var r, g, b;
|
||||
if (S === 0) { r = g = b = Lv; }
|
||||
else {
|
||||
@@ -59,7 +70,7 @@
|
||||
var f = t.font;
|
||||
if (f === "onest") f = "geologica";
|
||||
if (f === "anonymous") f = "mono";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "merriweather";
|
||||
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
|
||||
d.dataset.font = f;
|
||||
var mb = t.meshBg;
|
||||
if (mb === "off") {
|
||||
|
||||
Reference in new issue
Block a user