165 lines
4.1 KiB
TypeScript
165 lines
4.1 KiB
TypeScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
import random from "../random/random.ts";
|
|
|
|
export default class colors {
|
|
static any() {
|
|
return random.pick([colors.rgb, colors.hsl, colors.keyword]);
|
|
}
|
|
|
|
static rgb() {
|
|
let values;
|
|
|
|
switch (random.number(4)) {
|
|
case 0:
|
|
// Rgb functional notation
|
|
if (random.bool()) {
|
|
// Ints
|
|
values = [random.number(255), random.number(255), random.number(255)];
|
|
} else {
|
|
// Percents
|
|
values = [
|
|
`%${random.number(255)}`,
|
|
`%${random.number(255)}`,
|
|
`%${random.number(255)}`
|
|
];
|
|
}
|
|
return `rgba(${values.join(",")})`;
|
|
case 1:
|
|
// Rgba functional notation
|
|
values = [
|
|
random.number(255),
|
|
random.number(255),
|
|
random.number(255),
|
|
random.float()
|
|
];
|
|
return `rgba(${values.join(",")})`;
|
|
case 2:
|
|
// 4 char hex
|
|
return `#${random.hex(4)}`;
|
|
default:
|
|
// 8 char hex
|
|
return `#${random.hex(8)}`;
|
|
}
|
|
}
|
|
|
|
static hsl() {
|
|
let values, opt;
|
|
|
|
switch (random.number(4)) {
|
|
case 0:
|
|
values = [
|
|
random.number(255),
|
|
`%${random.number(255)}`,
|
|
`%${random.number(255)}`
|
|
];
|
|
return `hsl(${values.join(",")})`;
|
|
case 1:
|
|
values = [
|
|
random.number(255),
|
|
`%${random.number(255)}`,
|
|
`%${random.number(255)}`,
|
|
`%${random.number(255)}`
|
|
];
|
|
return `hsl(${values.join(",")})`;
|
|
case 2:
|
|
opt = random.pick(["deg", "rad", "grad", "turn"]);
|
|
values = [
|
|
random.number(255) + opt,
|
|
`%${random.number(255)}`,
|
|
`%${random.number(255)}`,
|
|
`%${random.number(255)}`
|
|
];
|
|
return `hsl(${values.join(",")})`;
|
|
default:
|
|
values = [
|
|
random.number(255),
|
|
`%${random.number(255)}`,
|
|
`%${random.number(255)}`,
|
|
random.float()
|
|
];
|
|
return `hsl(${values.join(",")})`;
|
|
}
|
|
}
|
|
|
|
static keyword() {
|
|
return random.pick([
|
|
"lime",
|
|
"red",
|
|
"blue",
|
|
"invert",
|
|
"currentColor",
|
|
"ActiveBorder",
|
|
"ActiveCaption",
|
|
"AppWorkspace",
|
|
"Background",
|
|
"ButtonFace",
|
|
"ButtonHighlight",
|
|
"ButtonShadow",
|
|
"ButtonText",
|
|
"CaptionText",
|
|
"GrayText",
|
|
"Highlight",
|
|
"HighlightText",
|
|
"InactiveBorder",
|
|
"InactiveCaption",
|
|
"InactiveCaptionText",
|
|
"InfoBackground",
|
|
"InfoText",
|
|
"Menu",
|
|
"MenuText",
|
|
"Scrollbar",
|
|
"ThreeDDarkShadow",
|
|
"ThreeDFace",
|
|
"ThreeDHighlight",
|
|
"ThreeDLightShadow",
|
|
"ThreeDShadow",
|
|
"Window",
|
|
"WindowFrame",
|
|
"WindowText",
|
|
"-moz-ButtonDefault",
|
|
"-moz-ButtonHoverFace",
|
|
"-moz-ButtonHoverText",
|
|
"-moz-CellHighlight",
|
|
"-moz-CellHighlightText",
|
|
"-moz-Combobox",
|
|
"-moz-ComboboxText",
|
|
"-moz-Dialog",
|
|
"-moz-DialogText",
|
|
"-moz-dragtargetzone",
|
|
"-moz-EvenTreeRow",
|
|
"-moz-Field",
|
|
"-moz-FieldText",
|
|
"-moz-html-CellHighlight",
|
|
"-moz-html-CellHighlightText",
|
|
"-moz-mac-accentdarkestshadow",
|
|
"-moz-mac-accentdarkshadow",
|
|
"-moz-mac-accentface",
|
|
"-moz-mac-accentlightesthighlight",
|
|
"-moz-mac-accentlightshadow",
|
|
"-moz-mac-accentregularhighlight",
|
|
"-moz-mac-accentregularshadow",
|
|
"-moz-mac-chrome-active",
|
|
"-moz-mac-chrome-inactive",
|
|
"-moz-mac-focusring",
|
|
"-moz-mac-menuselect",
|
|
"-moz-mac-menushadow",
|
|
"-moz-mac-menutextselect",
|
|
"-moz-MenuHover",
|
|
"-moz-MenuHoverText",
|
|
"-moz-MenuBarText",
|
|
"-moz-MenuBarHoverText",
|
|
"-moz-nativehyperlinktext",
|
|
"-moz-OddTreeRow",
|
|
"-moz-win-communicationstext",
|
|
"-moz-win-mediatext",
|
|
"-moz-activehyperlinktext",
|
|
"-moz-default-background-color",
|
|
"-moz-default-color",
|
|
"-moz-hyperlinktext",
|
|
"-moz-visitedhyperlinktext"
|
|
]);
|
|
}
|
|
}
|