@mrts/colorkit 0.3.21 → 0.3.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,7 +1,15 @@
1
- import { ColorData, ParsedColor } from "@mrts/colorsets";
2
1
  import chroma from "chroma-js";
2
+ import { ColorData, ParsedColor } from "@mrts/colorsets";
3
3
 
4
4
  //#region src/types.d.ts
5
5
  type ColorArgument = string | ColorData | ParsedColor | chroma.Color;
6
6
  //#endregion
7
- export { ColorArgument };
7
+ //#region src/utils.d.ts
8
+ declare function chromaColor(arg: ColorArgument): chroma.Color | undefined;
9
+ declare function chromaColorFromString(s: string): chroma.Color | undefined;
10
+ declare function chromaColorFromParsedColor(pc: ParsedColor): chroma.Color | undefined;
11
+ //#endregion
12
+ //#region src/contrast.d.ts
13
+ declare function contrastColor(c: ColorArgument, candidates?: ColorArgument[]): chroma.Color;
14
+ //#endregion
15
+ export { ColorArgument, chromaColor, chromaColorFromParsedColor, chromaColorFromString, contrastColor };
package/dist/index.mjs CHANGED
@@ -1,5 +1,42 @@
1
- //#region src/index.ts
2
- e;
1
+ import chroma from "chroma-js";
2
+ import colorParse from "color-parse";
3
+
4
+ //#region src/utils.ts
5
+ function chromaColor(arg) {
6
+ if (typeof arg == "string") return chromaColorFromString(arg);
7
+ else if (typeof arg == "object") if ("_rgb" in arg) return arg;
8
+ else if ("parsed" in arg) return chromaColorFromParsedColor(arg.parsed);
9
+ else return chromaColorFromParsedColor(arg);
10
+ }
11
+ function chromaColorFromString(s) {
12
+ try {
13
+ return chroma(s);
14
+ } catch {
15
+ return chromaColorFromParsedColor(colorParse(s));
16
+ }
17
+ }
18
+ function chromaColorFromParsedColor(pc) {
19
+ if (pc.space == "rgb") return chroma.rgb(pc.values[0], pc.values[1], pc.values[2], pc.alpha);
20
+ else if (pc.space == "oklch") return chroma.oklch(pc.values[0], pc.values[1], pc.values[2], pc.alpha);
21
+ }
22
+
23
+ //#endregion
24
+ //#region src/contrast.ts
25
+ function contrastColor(c, candidates = [chroma("black"), chroma("white")]) {
26
+ const chromaCandidates = candidates.map((arg) => chromaColor(arg)).filter((c$1) => c$1 != void 0);
27
+ const cc = chromaColor(c);
28
+ if (cc == void 0) return chromaCandidates[0];
29
+ let bestCandidate = chromaCandidates[0];
30
+ let bestContrast = chroma.contrast(cc, bestCandidate);
31
+ for (const candidate of chromaCandidates.slice(1)) {
32
+ const contrast = chroma.contrast(cc, candidate);
33
+ if (contrast > bestContrast) {
34
+ bestCandidate = candidate;
35
+ bestContrast = contrast;
36
+ }
37
+ }
38
+ return bestCandidate;
39
+ }
3
40
 
4
41
  //#endregion
5
- export { };
42
+ export { chromaColor, chromaColorFromParsedColor, chromaColorFromString, contrastColor };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrts/colorkit",
3
- "version": "0.3.21",
3
+ "version": "0.3.22",
4
4
  "private": false,
5
5
  "description": "Color Kit (chroma-js based)",
6
6
  "type": "module",
@@ -32,5 +32,5 @@
32
32
  "chroma-js": "^3.2.0",
33
33
  "color-parse": "^2.0.2"
34
34
  },
35
- "gitHead": "c5a3d173dc241074f81df5b1e2f419888c883849"
35
+ "gitHead": "59ceac082db5af612cea7fd7782720d99ba5ba48"
36
36
  }