Urara-Blog/node_modules/.pnpm-store/v3/files/32/ef6100469c6633ac179e2f2a36ae75866544b6c1c43395d77379b169ba59048d29aaa36a86f3d47bb244436044cbf2d99b9eeb25501ced5dfc5e886aebd1b6
2022-08-14 01:14:53 +08:00

310 lines
No EOL
10 KiB
Text

const Color = require("color");
const colorNames = require("./colorNames");
module.exports = {
generateForegorundColorFrom: function (input, percentage = 0.8) {
if (Color(input).isDark()) {
let arr = Color(input).mix(Color("white"), percentage).saturate(10).hsl().round().array()
return arr[0] + " " + arr[1] + "%" + " " + arr[2] + "%";
} else {
let arr = Color(input).mix(Color("black"), percentage).saturate(10).hsl().round().array()
return arr[0] + " " + arr[1] + "%" + " " + arr[2] + "%";
}
},
convertToHsl: function (input) {
let resultObj = {};
if (typeof input === "object" && input !== null) {
Object.entries(input).forEach(([rule, value]) => {
if (colorNames.hasOwnProperty(rule)) {
const hslArray = Color(value).hsl().round().array();
resultObj[colorNames[rule]] = hslArray[0] + " " + hslArray[1] + "%" + " " + hslArray[2] + "%";
} else {
resultObj[rule] = value;
}
// auto generate focus colors
if (!input.hasOwnProperty("primary-focus")) {
const darkerHslArray = Color(input["primary"]).darken(0.2).hsl().round().array();
resultObj["--pf"] = darkerHslArray[0] + " " + darkerHslArray[1] + "%" + " " + darkerHslArray[2] + "%";
}
if (!input.hasOwnProperty("secondary-focus")) {
const darkerHslArray = Color(input["secondary"]).darken(0.2).hsl().round().array();
resultObj["--sf"] = darkerHslArray[0] + " " + darkerHslArray[1] + "%" + " " + darkerHslArray[2] + "%";
}
if (!input.hasOwnProperty("accent-focus")) {
const darkerHslArray = Color(input["accent"]).darken(0.2).hsl().round().array();
resultObj["--af"] = darkerHslArray[0] + " " + darkerHslArray[1] + "%" + " " + darkerHslArray[2] + "%";
}
if (!input.hasOwnProperty("neutral-focus")) {
const darkerHslArray = Color(input["neutral"]).darken(0.2).hsl().round().array();
resultObj["--nf"] = darkerHslArray[0] + " " + darkerHslArray[1] + "%" + " " + darkerHslArray[2] + "%";
}
// auto generate base colors
if (!input.hasOwnProperty("base-100")) {
resultObj["--b1"] = 0 + " " + 0 + "%" + " " + 100 + "%";
}
if (!input.hasOwnProperty("base-200")) {
const darkerHslArray = Color(input["base-100"]).darken(0.1).hsl().round().array();
resultObj["--b2"] = darkerHslArray[0] + " " + darkerHslArray[1] + "%" + " " + darkerHslArray[2] + "%";
}
if (!input.hasOwnProperty("base-300")) {
if (input.hasOwnProperty("base-200")) {
const darkerHslArray = Color(input["base-200"]).darken(0.1).hsl().round().array();
resultObj["--b3"] = darkerHslArray[0] + " " + darkerHslArray[1] + "%" + " " + darkerHslArray[2] + "%";
} else {
const darkerHslArray = Color(input["base-100"]).darken(0.1).darken(0.1).hsl().round().array();
resultObj["--b3"] = darkerHslArray[0] + " " + darkerHslArray[1] + "%" + " " + darkerHslArray[2] + "%";
}
}
// auto generate state colors
if (!input.hasOwnProperty("info")) {
resultObj["--in"] = 198 + " " + 93 + "%" + " " + 60 + "%";
}
if (!input.hasOwnProperty("success")) {
resultObj["--su"] = 158 + " " + 64 + "%" + " " + 52 + "%";
}
if (!input.hasOwnProperty("warning")) {
resultObj["--wa"] = 43 + " " + 96 + "%" + " " + 56 + "%";
}
if (!input.hasOwnProperty("error")) {
resultObj["--er"] = 0 + " " + 91 + "%" + " " + 71 + "%";
}
// auto generate content colors
if (!input.hasOwnProperty("base-content")) {
resultObj["--bc"] = this.generateForegorundColorFrom(input["base-100"])
}
if (!input.hasOwnProperty("primary-content")) {
resultObj["--pc"] = this.generateForegorundColorFrom(input["primary"])
}
if (!input.hasOwnProperty("secondary-content")) {
resultObj["--sc"] = this.generateForegorundColorFrom(input["secondary"])
}
if (!input.hasOwnProperty("accent-content")) {
resultObj["--ac"] = this.generateForegorundColorFrom(input["accent"])
}
if (!input.hasOwnProperty("neutral-content")) {
resultObj["--nc"] = this.generateForegorundColorFrom(input["neutral"])
}
if (!input.hasOwnProperty("info-content")) {
if (input.hasOwnProperty("info")) {
resultObj["--inc"] = this.generateForegorundColorFrom(input["info"])
} else {
resultObj["--inc"] = 198 + " " + 100 + "%" + " " + 12 + "%";
}
}
if (!input.hasOwnProperty("success-content")) {
if (input.hasOwnProperty("success")) {
resultObj["--suc"] = this.generateForegorundColorFrom(input["success"])
} else {
resultObj["--suc"] = 158 + " " + 100 + "%" + " " + 10 + "%";
}
}
if (!input.hasOwnProperty("warning-content")) {
if (input.hasOwnProperty("warning")) {
resultObj["--wac"] = this.generateForegorundColorFrom(input["warning"])
} else {
resultObj["--wac"] = 43 + " " + 100 + "%" + " " + 11 + "%";
}
}
if (!input.hasOwnProperty("error-content")) {
if (input.hasOwnProperty("error")) {
resultObj["--erc"] = this.generateForegorundColorFrom(input["error"])
} else {
resultObj["--erc"] = 0 + " " + 100 + "%" + " " + 14 + "%";
}
}
// auto generate css variables
if (!input.hasOwnProperty("--rounded-box")) {
resultObj["--rounded-box"] = "1rem";
}
if (!input.hasOwnProperty("--rounded-btn")) {
resultObj["--rounded-btn"] = "0.5rem";
}
if (!input.hasOwnProperty("--rounded-badge")) {
resultObj["--rounded-badge"] = "1.9rem";
}
if (!input.hasOwnProperty("--animation-btn")) {
resultObj["--animation-btn"] = "0.25s";
}
if (!input.hasOwnProperty("--animation-input")) {
resultObj["--animation-input"] = ".2s";
}
if (!input.hasOwnProperty("--btn-text-case")) {
resultObj["--btn-text-case"] = "uppercase";
}
if (!input.hasOwnProperty("--btn-focus-scale")) {
resultObj["--btn-focus-scale"] = "0.95";
}
if (!input.hasOwnProperty("--border-btn")) {
resultObj["--border-btn"] = "1px";
}
if (!input.hasOwnProperty("--tab-border")) {
resultObj["--tab-border"] = "1px";
}
if (!input.hasOwnProperty("--tab-radius")) {
resultObj["--tab-radius"] = "0.5rem";
}
});
return resultObj;
}
return input;
},
injectThemes: function (addBase, config, themes) {
let includedThemesObj = new Object();
// add light themes
if (config("daisyui.themes") == false) {
Object.entries(themes).forEach(([theme, index]) => {
includedThemesObj[theme] = this.convertToHsl(themes[theme]);
});
}
// add default themes
if (config("daisyui.themes") != false) {
Object.entries(themes).forEach(([theme, index]) => {
includedThemesObj[theme] = this.convertToHsl(themes[theme]);
});
}
// add custom themes
if (Array.isArray(config("daisyui.themes"))) {
config("daisyui.themes").forEach((item, index) => {
if (typeof item === "object" && item !== null) {
Object.entries(item).forEach(([customThemeName, customThemevalue]) => {
includedThemesObj["[data-theme=" + customThemeName + "]"] =
this.convertToHsl(customThemevalue);
});
}
});
}
let themeOrder = [];
if (Array.isArray(config("daisyui.themes"))) {
config("daisyui.themes").forEach((theme, index) => {
if (typeof theme === "object" && theme !== null) {
Object.entries(theme).forEach(([customThemeName, customThemevalue]) => {
themeOrder.push(customThemeName);
});
} else if (
includedThemesObj.hasOwnProperty("[data-theme=" + theme + "]")
) {
themeOrder.push(theme);
}
});
} else if (config("daisyui.themes") != false) {
themeOrder = [
"light",
"dark",
"cupcake",
"bumblebee",
"emerald",
"corporate",
"synthwave",
"retro",
"cyberpunk",
"valentine",
"halloween",
"garden",
"forest",
"aqua",
"lofi",
"pastel",
"fantasy",
"wireframe",
"black",
"luxury",
"dracula",
"cmyk",
"autumn",
"business",
"acid",
"lemonade",
"night",
"coffee",
"winter",
];
} else if (config("daisyui.themes") == false) {
themeOrder.push("light");
}
// inject themes in order
themeOrder.forEach((themeName, index) => {
if (index === 0) {
// first theme as root
addBase({
[":root"]: includedThemesObj["[data-theme=" + themeName + "]"],
});
} else if (index === 1) {
// auto dark
if (config("daisyui.darkTheme")) {
if (
themeOrder[0] != config("daisyui.darkTheme") &&
themeOrder.includes(config("daisyui.darkTheme"))
) {
addBase({
["@media (prefers-color-scheme: dark)"]: {
[":root"]:
includedThemesObj[
`[data-theme=${config("daisyui.darkTheme")}]`
],
},
});
}
} else {
if (themeOrder[0] != "dark" && themeOrder.includes("dark")) {
addBase({
["@media (prefers-color-scheme: dark)"]: {
[":root"]: includedThemesObj["[data-theme=dark]"],
},
});
}
}
// theme 0 with name
addBase({
["[data-theme=" + themeOrder[0] + "]"]:
includedThemesObj["[data-theme=" + themeOrder[0] + "]"],
});
// theme 1 with name
addBase({
["[data-theme=" + themeOrder[1] + "]"]:
includedThemesObj["[data-theme=" + themeOrder[1] + "]"],
});
} else {
addBase({
["[data-theme=" + themeName + "]"]:
includedThemesObj["[data-theme=" + themeName + "]"],
});
}
});
return {
includedThemesObj: includedThemesObj,
themeOrder: themeOrder,
};
}
}