aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/index.ts9
-rw-r--r--src/modules/color/index.ts73
2 files changed, 47 insertions, 35 deletions
diff --git a/src/index.ts b/src/index.ts
index 27923560..dc67c9d5 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -40,12 +40,17 @@ export * as allLocales from './locales';
export { Aircraft, AircraftType } from './modules/airline';
export type { AirlineModule } from './modules/airline';
export type { AnimalModule } from './modules/animal';
+export { CssFunction, CssSpace } from './modules/color';
export type {
Casing,
ColorFormat,
ColorModule,
- CSSFunction,
- CSSSpace,
+ /** @deprecated Use CssFunctionType instead */
+ CssFunctionType as CSSFunction,
+ CssFunctionType,
+ /** @deprecated Use CssSpaceType instead */
+ CssSpaceType as CSSSpace,
+ CssSpaceType,
NumberColorFormat,
StringColorFormat,
} from './modules/color';
diff --git a/src/modules/color/index.ts b/src/modules/color/index.ts
index 67fa9b9a..5100776a 100644
--- a/src/modules/color/index.ts
+++ b/src/modules/color/index.ts
@@ -3,32 +3,39 @@ import type { Faker } from '../../faker';
/**
* Color space names supported by CSS.
*/
-export const CSS_SPACES = [
- 'sRGB',
- 'display-p3',
- 'rec2020',
- 'a98-rgb',
- 'prophoto-rgb',
- 'rec2020',
-] as const;
+export enum CssSpace {
+ SRGB = 'sRGB',
+ DisplayP3 = 'display-p3',
+ REC2020 = 'rec2020',
+ A98RGB = 'a98-rgb',
+ ProphotoRGB = 'prophoto-rgb',
+}
+
+/**
+ * Color space names supported by CSS.
+ */
+export type CssSpaceType = `${CssSpace}`;
/**
* Functions supported by CSS to produce color.
*/
-export const CSS_FUNCTIONS = [
- 'rgb',
- 'rgba',
- 'hsl',
- 'hsla',
- 'hwb',
- 'cmyk',
- 'lab',
- 'lch',
- 'color',
-] as const;
-
-export type CSSFunction = (typeof CSS_FUNCTIONS)[number];
-export type CSSSpace = (typeof CSS_SPACES)[number];
+export enum CssFunction {
+ RGB = 'rgb',
+ RGBA = 'rgba',
+ HSL = 'hsl',
+ HSLA = 'hsla',
+ HWB = 'hwb',
+ CMYK = 'cmyk',
+ LAB = 'lab',
+ LCH = 'lch',
+ COLOR = 'color',
+}
+
+/**
+ * Functions supported by CSS to produce color.
+ */
+export type CssFunctionType = `${CssFunction}`;
+
export type StringColorFormat = 'css' | 'binary';
export type NumberColorFormat = 'decimal';
export type ColorFormat = StringColorFormat | NumberColorFormat;
@@ -95,8 +102,8 @@ function toBinary(values: number[]): string {
*/
function toCSS(
values: number[],
- cssFunction: CSSFunction = 'rgb',
- space: CSSSpace = 'sRGB'
+ cssFunction: CssFunctionType = 'rgb',
+ space: CssSpaceType = 'sRGB'
): string {
const percentage = (value: number) => Math.round(value * 100);
switch (cssFunction) {
@@ -141,8 +148,8 @@ function toCSS(
function toColorFormat(
values: number[],
format: ColorFormat,
- cssFunction: CSSFunction = 'rgb',
- space: CSSSpace = 'sRGB'
+ cssFunction: CssFunctionType = 'rgb',
+ space: CssSpaceType = 'sRGB'
): string | number[] {
switch (format) {
case 'css':
@@ -205,7 +212,7 @@ export class ColorModule {
* @since 7.0.0
*/
cssSupportedFunction(): string {
- return this.faker.helpers.arrayElement(CSS_FUNCTIONS);
+ return this.faker.helpers.objectValue(CssFunction);
}
/**
@@ -217,7 +224,7 @@ export class ColorModule {
* @since 7.0.0
*/
cssSupportedSpace(): string {
- return this.faker.helpers.arrayElement(CSS_SPACES);
+ return this.faker.helpers.objectValue(CssSpace);
}
/**
@@ -367,7 +374,7 @@ export class ColorModule {
} = options || {};
options = { format, includeAlpha, prefix, casing };
let color: string | number[];
- let cssFunction: CSSFunction = 'rgb';
+ let cssFunction: CssFunctionType = 'rgb';
if (format === 'hex') {
color = this.faker.string.hexadecimal({
length: includeAlpha ? 8 : 6,
@@ -893,7 +900,7 @@ export class ColorModule {
*
* @default 'sRGB'
*/
- space?: CSSSpace;
+ space?: CssSpaceType;
}): string;
/**
* Returns a random color based on CSS color space specified.
@@ -920,7 +927,7 @@ export class ColorModule {
*
* @default 'sRGB'
*/
- space?: CSSSpace;
+ space?: CssSpaceType;
}): number[];
/**
* Returns a random color based on CSS color space specified.
@@ -949,11 +956,11 @@ export class ColorModule {
*
* @default 'sRGB'
*/
- space?: CSSSpace;
+ space?: CssSpaceType;
}): string | number[];
colorByCSSColorSpace(options?: {
format?: ColorFormat;
- space?: CSSSpace;
+ space?: CssSpaceType;
}): string | number[] {
if (options?.format === 'css' && !options?.space) {
options = { ...options, space: 'sRGB' };