@yamada-ui/utils 1.5.3 → 1.5.4-dev-20241018141555
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/{chunk-MBMGLDTD.mjs → chunk-CE4MU3RP.mjs} +6 -2
- package/dist/{chunk-MBMGLDTD.mjs.map → chunk-CE4MU3RP.mjs.map} +1 -1
- package/dist/{chunk-K4FGNB3Y.mjs → chunk-YREUKSHW.mjs} +1 -2
- package/dist/chunk-YREUKSHW.mjs.map +1 -0
- package/dist/color.d.mts +1 -1
- package/dist/color.d.ts +1 -1
- package/dist/color.js +0 -1
- package/dist/color.js.map +1 -1
- package/dist/color.mjs +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -2
- package/dist/string.d.mts +2 -1
- package/dist/string.d.ts +2 -1
- package/dist/string.js +6 -1
- package/dist/string.js.map +1 -1
- package/dist/string.mjs +3 -1
- package/package.json +1 -1
- package/dist/chunk-K4FGNB3Y.mjs.map +0 -1
|
@@ -41,7 +41,10 @@ function antonym(value) {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
function toCamelCase(value) {
|
|
44
|
-
return value.toLowerCase().replace(/[_-](.)/g, (_, val) => val.toUpperCase())
|
|
44
|
+
return value.toLowerCase().replace(/[_-](.)/g, (_, val) => val.toUpperCase());
|
|
45
|
+
}
|
|
46
|
+
function toPascalCase(value) {
|
|
47
|
+
return toCamelCase(value).replace(/^(.)/, (_, val) => val.toUpperCase());
|
|
45
48
|
}
|
|
46
49
|
function toKebabCase(value) {
|
|
47
50
|
return value.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, "");
|
|
@@ -54,7 +57,8 @@ export {
|
|
|
54
57
|
escape,
|
|
55
58
|
antonym,
|
|
56
59
|
toCamelCase,
|
|
60
|
+
toPascalCase,
|
|
57
61
|
toKebabCase,
|
|
58
62
|
toTitleCase
|
|
59
63
|
};
|
|
60
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-CE4MU3RP.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/string.ts"],"sourcesContent":["import type { StringLiteral } from \"./index.types\"\n\nexport function escape(value: string, replaceValue = \"\"): string {\n return value.replace(/\\s+/g, replaceValue)\n}\n\nexport function antonym(value: string): string {\n switch (value) {\n case \"top\":\n return \"bottom\"\n\n case \"bottom\":\n return \"top\"\n\n case \"left\":\n return \"right\"\n\n case \"right\":\n return \"left\"\n\n case \"start\":\n return \"end\"\n\n case \"end\":\n return \"start\"\n\n case \"x\":\n return \"y\"\n\n case \"y\":\n return \"x\"\n\n case \"enter\":\n return \"exit\"\n\n case \"exit\":\n return \"enter\"\n\n case \"vertical\":\n return \"horizontal\"\n\n case \"horizontal\":\n return \"vertical\"\n\n case \"up\":\n return \"down\"\n\n case \"down\":\n return \"up\"\n\n case \"block\":\n return \"inline\"\n\n case \"inline\":\n return \"block\"\n\n default:\n return value\n }\n}\n\nexport function toCamelCase(value: StringLiteral): string {\n return value
|
|
1
|
+
{"version":3,"sources":["../src/string.ts"],"sourcesContent":["import type { StringLiteral } from \"./index.types\"\n\nexport function escape(value: string, replaceValue = \"\"): string {\n return value.replace(/\\s+/g, replaceValue)\n}\n\nexport function antonym(value: string): string {\n switch (value) {\n case \"top\":\n return \"bottom\"\n\n case \"bottom\":\n return \"top\"\n\n case \"left\":\n return \"right\"\n\n case \"right\":\n return \"left\"\n\n case \"start\":\n return \"end\"\n\n case \"end\":\n return \"start\"\n\n case \"x\":\n return \"y\"\n\n case \"y\":\n return \"x\"\n\n case \"enter\":\n return \"exit\"\n\n case \"exit\":\n return \"enter\"\n\n case \"vertical\":\n return \"horizontal\"\n\n case \"horizontal\":\n return \"vertical\"\n\n case \"up\":\n return \"down\"\n\n case \"down\":\n return \"up\"\n\n case \"block\":\n return \"inline\"\n\n case \"inline\":\n return \"block\"\n\n default:\n return value\n }\n}\n\nexport function toCamelCase(value: StringLiteral): string {\n return value.toLowerCase().replace(/[_-](.)/g, (_, val) => val.toUpperCase())\n}\n\nexport function toPascalCase(value: StringLiteral): string {\n return toCamelCase(value).replace(/^(.)/, (_, val) => val.toUpperCase())\n}\n\nexport function toKebabCase(value: StringLiteral): string {\n return value\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, \"$1-$2\")\n .toLowerCase()\n .replace(/^-/, \"\")\n}\n\nexport function toTitleCase(value: StringLiteral): string {\n return value\n .replace(/([A-Z])/g, \" $1\")\n .replace(/[_-](.)/g, (_, val) => ` ${val.toUpperCase()}`)\n .replace(/^./, (str) => str.toUpperCase())\n .trim()\n}\n"],"mappings":";AAEO,SAAS,OAAO,OAAe,eAAe,IAAY;AAC/D,SAAO,MAAM,QAAQ,QAAQ,YAAY;AAC3C;AAEO,SAAS,QAAQ,OAAuB;AAC7C,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,YAAY,OAA8B;AACxD,SAAO,MAAM,YAAY,EAAE,QAAQ,YAAY,CAAC,GAAG,QAAQ,IAAI,YAAY,CAAC;AAC9E;AAEO,SAAS,aAAa,OAA8B;AACzD,SAAO,YAAY,KAAK,EAAE,QAAQ,QAAQ,CAAC,GAAG,QAAQ,IAAI,YAAY,CAAC;AACzE;AAEO,SAAS,YAAY,OAA8B;AACxD,SAAO,MACJ,QAAQ,gCAAgC,OAAO,EAC/C,YAAY,EACZ,QAAQ,MAAM,EAAE;AACrB;AAEO,SAAS,YAAY,OAA8B;AACxD,SAAO,MACJ,QAAQ,YAAY,KAAK,EACzB,QAAQ,YAAY,CAAC,GAAG,QAAQ,IAAI,IAAI,YAAY,CAAC,EAAE,EACvD,QAAQ,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC,EACxC,KAAK;AACV;","names":[]}
|
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
// src/color.ts
|
|
11
11
|
import * as c from "color2k";
|
|
12
12
|
var SEMANTIC_COLOR_SCHEMES = [
|
|
13
|
-
"mono",
|
|
14
13
|
"primary",
|
|
15
14
|
"secondary",
|
|
16
15
|
"info",
|
|
@@ -363,4 +362,4 @@ export {
|
|
|
363
362
|
hsvTo,
|
|
364
363
|
sameColor
|
|
365
364
|
};
|
|
366
|
-
//# sourceMappingURL=chunk-
|
|
365
|
+
//# sourceMappingURL=chunk-YREUKSHW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/color.ts"],"sourcesContent":["import type { Dict, StringLiteral } from \"./index.types\"\nimport * as c from \"color2k\"\nimport { isArray, isNumber, isObject } from \"./assertion\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ThemeValue = number | string\ntype Breakpoint = \"base\" | StringLiteral\ntype ColorMode = \"dark\" | \"light\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"hsl\" | \"hsla\" | \"rgb\" | \"rgba\"\n\nexport const SEMANTIC_COLOR_SCHEMES = [\n \"primary\",\n \"secondary\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"link\",\n] as const\n\nexport const COLOR_SCHEMES = [\n \"gray\",\n \"neutral\",\n \"red\",\n \"rose\",\n \"pink\",\n \"flashy\",\n \"orange\",\n \"amber\",\n \"yellow\",\n \"lime\",\n \"green\",\n \"emerald\",\n \"teal\",\n \"cyan\",\n \"sky\",\n \"blue\",\n \"indigo\",\n \"violet\",\n \"purple\",\n \"fuchsia\",\n] as const\n\nexport type SemanticColorScheme =\n | (typeof SEMANTIC_COLOR_SCHEMES)[number]\n | StringLiteral\nexport type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport function isGray(colorScheme: string) {\n return colorScheme === \"gray\" || colorScheme === \"neutral\"\n}\n\nexport function isAccessible(colorScheme: string) {\n return (\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n )\n}\n\nexport function getColor(color: string, fallback = \"#000000\") {\n return function (\n theme: Dict = {},\n colorMode: ColorMode = \"light\",\n breakpoint: Breakpoint = \"base\",\n ) {\n const [token, tone] = color.split(\".\")\n\n if (tone) {\n const [, relatedToken] =\n Object.entries<string>(theme.semantics?.colorSchemes ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedToken) color = `${relatedToken}.${tone}`\n } else {\n const [, relatedColor] =\n Object.entries<string>(theme.semantics?.colors ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedColor) color = relatedColor\n }\n\n const hex = get<[ThemeValue, ThemeValue] | Dict<ThemeValue> | ThemeValue>(\n theme,\n `colors.${color}`,\n color,\n )\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(hex[colorMode !== \"dark\" ? 0 : 1]))\n } else if (isObject(hex)) {\n return c.toHex(String(hex[breakpoint]))\n } else {\n return c.toHex(String(hex))\n }\n } catch {\n try {\n return c.toHex(fallback)\n } catch {\n return \"#000000\"\n }\n }\n }\n}\n\nexport function lightenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n}\n\nexport function darkenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n}\n\nexport function tintColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n}\n\nexport function shadeColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n}\n\nexport function transparentizeColor(color: string, alpha: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.transparentize(raw, 1 - alpha)\n }\n}\n\nexport function randomColor({\n colors,\n string,\n}: { colors?: string[]; string?: string } = {}) {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors) ?? fallback\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors) ?? fallback\n\n return fallback\n}\n\nfunction randomHex() {\n return `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n}\n\nfunction randomColorFromString(str: string) {\n let hash = 0\n\n if (str.length === 0) return hash.toString()\n\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n hash = hash & hash\n }\n\n let color = \"#\"\n\n for (let j = 0; j < 3; j += 1) {\n const value = (hash >> (j * 8)) & 255\n\n color += `00${value.toString(16)}`.substr(-2)\n }\n\n return color\n}\n\nfunction randomColorFromList(str: string, list: string[]) {\n let index = 0\n\n if (str.length === 0) return list[0]\n\n for (let i = 0; i < str.length; i += 1) {\n index = str.charCodeAt(i) + ((index << 5) - index)\n\n index = index & index\n }\n\n index = ((index % list.length) + list.length) % list.length\n\n return list[index]\n}\n\nfunction randomFromList(list: string[]) {\n return list[Math.floor(Math.random() * list.length)]\n}\n\nfunction getBrightness(color: string) {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport function isTone(color: string) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n}\n\nexport function isLight(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"dark\"\n }\n}\n\nexport function isDark(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"light\"\n }\n}\n\nexport function convertColor(color: string, fallback?: string) {\n return function (format: ColorFormat): string | undefined {\n try {\n const isAlpha = format.endsWith(\"a\")\n\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n if (format.startsWith(\"hex\")) {\n let hexa = c.toHex(color)\n\n if (isAlpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, \"\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!isAlpha) {\n hsla = hsla.replace(/hsla/, \"hsl\")\n hsla = hsla.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return hsla\n } else {\n let rgba = c.toRgba(color)\n\n if (!isAlpha) {\n rgba = rgba.replace(/rgba/, \"rgb\")\n rgba = rgba.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return rgba\n }\n } catch {\n if (fallback) return convertColor(fallback)(format)\n }\n }\n}\n\nexport function calcFormat(color: string): ColorFormat {\n if (color.startsWith(\"hsl\")) {\n return color.startsWith(\"hsla\") ? \"hsla\" : \"hsl\"\n } else if (color.startsWith(\"rgb\")) {\n return color.startsWith(\"rgba\") ? \"rgba\" : \"rgb\"\n } else {\n return color.length === 9 ? \"hexa\" : \"hex\"\n }\n}\n\nexport function getAlpha(color: string) {\n return c.parseToRgba(color)[3]\n}\n\nexport function alphaToHex(a: number) {\n if (0 > a) a = 0\n if (1 < a) a = 1\n\n return Math.round(a * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nexport function parseToRgba(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToRgba(color)\n } catch {\n if (fallback) return c.parseToRgba(fallback)\n }\n}\n\nexport function parseToHsla(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToHsla(color)\n } catch {\n if (fallback) return c.parseToHsla(fallback)\n }\n}\n\nexport function parseToHsv(\n color: string,\n fallback?: string,\n): [number, number, number, number] {\n let [r, g, b, a] = parseToRgba(color, fallback) ?? [255, 255, 255, 1]\n\n r = r / 255\n g = g / 255\n b = b / 255\n\n const [min, max] = [Math.min(r, g, b), Math.max(r, g, b)]\n const delta = max - min\n\n let [h, v, s] = [0, max, max == 0 ? 0 : delta / max]\n\n switch (min) {\n case max:\n h = 0\n break\n\n case r:\n h = 60 * ((b - g) / delta) + 180\n break\n\n case g:\n h = 60 * ((r - b) / delta) + 300\n break\n\n case b:\n h = 60 * ((g - r) / delta) + 60\n break\n }\n\n return [h, s, v, a]\n}\n\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.rgba(r, g, b, a), fallback)(format)\n }\n}\n\nexport function hslaTo(\n [h, s, l, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.hsla(h, s, l, a), fallback)(format)\n }\n}\n\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\"): string | undefined {\n h = h / 60\n\n let rgb: [number, number, number] = [v, v, v]\n\n let i = Math.floor(h)\n let f = h - i\n let p = v * (1 - s)\n let q = v * (1 - s * f)\n let t = v * (1 - s * (1 - f))\n\n switch (i) {\n case 0:\n case 6:\n rgb = [v, t, p]\n break\n\n case 1:\n rgb = [q, v, p]\n break\n\n case 2:\n rgb = [p, v, t]\n break\n\n case 3:\n rgb = [p, q, v]\n break\n\n case 4:\n rgb = [t, p, v]\n break\n\n case 5:\n rgb = [v, p, q]\n break\n }\n\n let color = `rgb(${rgb.map((v) => Math.round(v * 255)).join(\", \")})`\n\n if (isNumber(a)) color = color.replace(/\\)$/, `, ${a})`)\n\n return convertColor(color, fallback)(format)\n }\n}\n\nexport function sameColor(\n color: string | undefined,\n comparison: string | undefined,\n) {\n if (!color) return false\n if (!comparison) return false\n\n const a = parseToRgba(color) ?? []\n const b = parseToRgba(comparison) ?? []\n\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]\n}\n"],"mappings":"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","names":["isDark","hsla","rgba","parseToRgba","parseToHsla","v"]}
|
package/dist/color.d.mts
CHANGED
|
@@ -3,7 +3,7 @@ import { StringLiteral, Dict } from './index.types.mjs';
|
|
|
3
3
|
type Breakpoint = "base" | StringLiteral;
|
|
4
4
|
type ColorMode = "dark" | "light";
|
|
5
5
|
type ColorFormat = "hex" | "hexa" | "hsl" | "hsla" | "rgb" | "rgba";
|
|
6
|
-
declare const SEMANTIC_COLOR_SCHEMES: readonly ["
|
|
6
|
+
declare const SEMANTIC_COLOR_SCHEMES: readonly ["primary", "secondary", "info", "success", "warning", "danger", "link"];
|
|
7
7
|
declare const COLOR_SCHEMES: readonly ["gray", "neutral", "red", "rose", "pink", "flashy", "orange", "amber", "yellow", "lime", "green", "emerald", "teal", "cyan", "sky", "blue", "indigo", "violet", "purple", "fuchsia"];
|
|
8
8
|
type SemanticColorScheme = (typeof SEMANTIC_COLOR_SCHEMES)[number] | StringLiteral;
|
|
9
9
|
type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral;
|
package/dist/color.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { StringLiteral, Dict } from './index.types.js';
|
|
|
3
3
|
type Breakpoint = "base" | StringLiteral;
|
|
4
4
|
type ColorMode = "dark" | "light";
|
|
5
5
|
type ColorFormat = "hex" | "hexa" | "hsl" | "hsla" | "rgb" | "rgba";
|
|
6
|
-
declare const SEMANTIC_COLOR_SCHEMES: readonly ["
|
|
6
|
+
declare const SEMANTIC_COLOR_SCHEMES: readonly ["primary", "secondary", "info", "success", "warning", "danger", "link"];
|
|
7
7
|
declare const COLOR_SCHEMES: readonly ["gray", "neutral", "red", "rose", "pink", "flashy", "orange", "amber", "yellow", "lime", "green", "emerald", "teal", "cyan", "sky", "blue", "indigo", "violet", "purple", "fuchsia"];
|
|
8
8
|
type SemanticColorScheme = (typeof SEMANTIC_COLOR_SCHEMES)[number] | StringLiteral;
|
|
9
9
|
type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral;
|
package/dist/color.js
CHANGED
package/dist/color.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/color.ts","../src/assertion.ts","../src/object.ts"],"sourcesContent":["import type { Dict, StringLiteral } from \"./index.types\"\nimport * as c from \"color2k\"\nimport { isArray, isNumber, isObject } from \"./assertion\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ThemeValue = number | string\ntype Breakpoint = \"base\" | StringLiteral\ntype ColorMode = \"dark\" | \"light\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"hsl\" | \"hsla\" | \"rgb\" | \"rgba\"\n\nexport const SEMANTIC_COLOR_SCHEMES = [\n \"mono\",\n \"primary\",\n \"secondary\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"link\",\n] as const\n\nexport const COLOR_SCHEMES = [\n \"gray\",\n \"neutral\",\n \"red\",\n \"rose\",\n \"pink\",\n \"flashy\",\n \"orange\",\n \"amber\",\n \"yellow\",\n \"lime\",\n \"green\",\n \"emerald\",\n \"teal\",\n \"cyan\",\n \"sky\",\n \"blue\",\n \"indigo\",\n \"violet\",\n \"purple\",\n \"fuchsia\",\n] as const\n\nexport type SemanticColorScheme =\n | (typeof SEMANTIC_COLOR_SCHEMES)[number]\n | StringLiteral\nexport type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport function isGray(colorScheme: string) {\n return colorScheme === \"gray\" || colorScheme === \"neutral\"\n}\n\nexport function isAccessible(colorScheme: string) {\n return (\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n )\n}\n\nexport function getColor(color: string, fallback = \"#000000\") {\n return function (\n theme: Dict = {},\n colorMode: ColorMode = \"light\",\n breakpoint: Breakpoint = \"base\",\n ) {\n const [token, tone] = color.split(\".\")\n\n if (tone) {\n const [, relatedToken] =\n Object.entries<string>(theme.semantics?.colorSchemes ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedToken) color = `${relatedToken}.${tone}`\n } else {\n const [, relatedColor] =\n Object.entries<string>(theme.semantics?.colors ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedColor) color = relatedColor\n }\n\n const hex = get<[ThemeValue, ThemeValue] | Dict<ThemeValue> | ThemeValue>(\n theme,\n `colors.${color}`,\n color,\n )\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(hex[colorMode !== \"dark\" ? 0 : 1]))\n } else if (isObject(hex)) {\n return c.toHex(String(hex[breakpoint]))\n } else {\n return c.toHex(String(hex))\n }\n } catch {\n try {\n return c.toHex(fallback)\n } catch {\n return \"#000000\"\n }\n }\n }\n}\n\nexport function lightenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n}\n\nexport function darkenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n}\n\nexport function tintColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n}\n\nexport function shadeColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n}\n\nexport function transparentizeColor(color: string, alpha: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.transparentize(raw, 1 - alpha)\n }\n}\n\nexport function randomColor({\n colors,\n string,\n}: { colors?: string[]; string?: string } = {}) {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors) ?? fallback\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors) ?? fallback\n\n return fallback\n}\n\nfunction randomHex() {\n return `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n}\n\nfunction randomColorFromString(str: string) {\n let hash = 0\n\n if (str.length === 0) return hash.toString()\n\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n hash = hash & hash\n }\n\n let color = \"#\"\n\n for (let j = 0; j < 3; j += 1) {\n const value = (hash >> (j * 8)) & 255\n\n color += `00${value.toString(16)}`.substr(-2)\n }\n\n return color\n}\n\nfunction randomColorFromList(str: string, list: string[]) {\n let index = 0\n\n if (str.length === 0) return list[0]\n\n for (let i = 0; i < str.length; i += 1) {\n index = str.charCodeAt(i) + ((index << 5) - index)\n\n index = index & index\n }\n\n index = ((index % list.length) + list.length) % list.length\n\n return list[index]\n}\n\nfunction randomFromList(list: string[]) {\n return list[Math.floor(Math.random() * list.length)]\n}\n\nfunction getBrightness(color: string) {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport function isTone(color: string) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n}\n\nexport function isLight(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"dark\"\n }\n}\n\nexport function isDark(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"light\"\n }\n}\n\nexport function convertColor(color: string, fallback?: string) {\n return function (format: ColorFormat): string | undefined {\n try {\n const isAlpha = format.endsWith(\"a\")\n\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n if (format.startsWith(\"hex\")) {\n let hexa = c.toHex(color)\n\n if (isAlpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, \"\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!isAlpha) {\n hsla = hsla.replace(/hsla/, \"hsl\")\n hsla = hsla.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return hsla\n } else {\n let rgba = c.toRgba(color)\n\n if (!isAlpha) {\n rgba = rgba.replace(/rgba/, \"rgb\")\n rgba = rgba.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return rgba\n }\n } catch {\n if (fallback) return convertColor(fallback)(format)\n }\n }\n}\n\nexport function calcFormat(color: string): ColorFormat {\n if (color.startsWith(\"hsl\")) {\n return color.startsWith(\"hsla\") ? \"hsla\" : \"hsl\"\n } else if (color.startsWith(\"rgb\")) {\n return color.startsWith(\"rgba\") ? \"rgba\" : \"rgb\"\n } else {\n return color.length === 9 ? \"hexa\" : \"hex\"\n }\n}\n\nexport function getAlpha(color: string) {\n return c.parseToRgba(color)[3]\n}\n\nexport function alphaToHex(a: number) {\n if (0 > a) a = 0\n if (1 < a) a = 1\n\n return Math.round(a * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nexport function parseToRgba(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToRgba(color)\n } catch {\n if (fallback) return c.parseToRgba(fallback)\n }\n}\n\nexport function parseToHsla(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToHsla(color)\n } catch {\n if (fallback) return c.parseToHsla(fallback)\n }\n}\n\nexport function parseToHsv(\n color: string,\n fallback?: string,\n): [number, number, number, number] {\n let [r, g, b, a] = parseToRgba(color, fallback) ?? [255, 255, 255, 1]\n\n r = r / 255\n g = g / 255\n b = b / 255\n\n const [min, max] = [Math.min(r, g, b), Math.max(r, g, b)]\n const delta = max - min\n\n let [h, v, s] = [0, max, max == 0 ? 0 : delta / max]\n\n switch (min) {\n case max:\n h = 0\n break\n\n case r:\n h = 60 * ((b - g) / delta) + 180\n break\n\n case g:\n h = 60 * ((r - b) / delta) + 300\n break\n\n case b:\n h = 60 * ((g - r) / delta) + 60\n break\n }\n\n return [h, s, v, a]\n}\n\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.rgba(r, g, b, a), fallback)(format)\n }\n}\n\nexport function hslaTo(\n [h, s, l, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.hsla(h, s, l, a), fallback)(format)\n }\n}\n\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\"): string | undefined {\n h = h / 60\n\n let rgb: [number, number, number] = [v, v, v]\n\n let i = Math.floor(h)\n let f = h - i\n let p = v * (1 - s)\n let q = v * (1 - s * f)\n let t = v * (1 - s * (1 - f))\n\n switch (i) {\n case 0:\n case 6:\n rgb = [v, t, p]\n break\n\n case 1:\n rgb = [q, v, p]\n break\n\n case 2:\n rgb = [p, v, t]\n break\n\n case 3:\n rgb = [p, q, v]\n break\n\n case 4:\n rgb = [t, p, v]\n break\n\n case 5:\n rgb = [v, p, q]\n break\n }\n\n let color = `rgb(${rgb.map((v) => Math.round(v * 255)).join(\", \")})`\n\n if (isNumber(a)) color = color.replace(/\\)$/, `, ${a})`)\n\n return convertColor(color, fallback)(format)\n }\n}\n\nexport function sameColor(\n color: string | undefined,\n comparison: string | undefined,\n) {\n if (!color) return false\n if (!comparison) return false\n\n const a = parseToRgba(color) ?? []\n const b = parseToRgba(comparison) ?? []\n\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]\n}\n","import type { Dict } from \"./index.types\"\n\nexport function is(x: any, y: any) {\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport function isNotNumber(value: any): boolean {\n return (\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n )\n}\n\nexport function isNumeric(value: any): boolean {\n return (\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n )\n}\n\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\nexport function isBoolean(value: any): value is boolean {\n return typeof value === \"boolean\"\n}\n\nexport function isUndefined(value: any): value is undefined {\n return typeof value === \"undefined\"\n}\n\nexport function isNull(value: any): value is null {\n return value === null\n}\n\nexport function isObject<T extends Dict>(value: any): value is T {\n return (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n )\n}\n\nexport function isArray<T extends any[]>(value: any): value is T {\n return Array.isArray(value)\n}\n\nexport function isEmpty(value: any): boolean {\n return !isArray(value) || !value.length || value.every((v) => v == null)\n}\n\nexport function isEmptyObject(value: any): boolean {\n return isObject(value) && !Object.keys(value).length\n}\n\nexport function isFunction<T extends Function = Function>(\n value: any,\n): value is T {\n return typeof value === \"function\"\n}\n\nexport function isUnit(value: any): boolean {\n return /[0-9].*(em|rem|ex|rex|cap|rcap|ch|rch|ic|ric|lh|rlh|vw|svw|lvw|dvw|vh|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax|cm|mm|Q|in|pc|pt|px|%|cqw|cqh|cqi|cqb|cqmin|cqmax)$/.test(\n value,\n )\n}\n\nexport function cast<T>(value: any) {\n return value as T\n}\n","import type { Dict } from \"./index.types\"\nimport {\n isArray,\n isFunction,\n isObject,\n isString,\n isUndefined,\n} from \"./assertion\"\n\nfunction omitObjectHelper<Y extends Dict, M extends keyof Y>(\n obj: Y,\n path: M[] | readonly M[],\n): any {\n if (!path.length) return obj\n\n const [primaryKey, ...restKeys] = path\n\n if (restKeys.length === 0 && primaryKey && primaryKey in obj) {\n const { [primaryKey]: _, ...rest } = obj\n\n return rest\n }\n\n if (primaryKey && obj[primaryKey] && isObject(obj[primaryKey])) {\n return {\n ...obj,\n [primaryKey]: omitObjectHelper(obj[primaryKey], restKeys),\n }\n }\n\n return obj\n}\n\nexport function omitObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[]) {\n return (keys as M[]).reduce((prev, key) => {\n const path = (isString(key) ? key.split(\".\") : []) as M[]\n\n return omitObjectHelper(prev, path)\n }, obj) as unknown as D extends unknown ? Omit<Y, M> : D\n}\n\nexport function pickObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[], fallbackValue = \"__fallback\") {\n return (keys as M[]).reduce((prev, key) => {\n const path = isString(key) ? key.split(\".\") : []\n\n if (!path.length) return prev\n\n const value = getMemoizedObject(obj, key as string, fallbackValue)\n\n if (value === fallbackValue) return prev\n\n prev = merge(\n prev,\n path.reduceRight(\n (prev, key) => ({ [key]: key === path.at(-1) ? value : prev }),\n {},\n ),\n )\n\n return prev\n }, {}) as D extends unknown ? { [H in M]: Y[H] } : D\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (keys.includes(key as Y[M])) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [P in M]: Y[P] }, Omit<Y, M>]\n}\n\nexport function filterObject<Y extends Dict, M extends Dict>(\n obj: Y,\n func: (key: keyof Y, value: Y[keyof Y], obj: Y) => boolean,\n): M {\n const result: Dict = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const shouldPass = func(key, value, obj)\n\n if (shouldPass) result[key] = value\n })\n\n return result as M\n}\n\nexport function filterUndefined<Y extends Dict>(obj: Y): Y {\n return filterObject(obj, (_, val) => val !== null && val !== undefined)\n}\n\nexport function merge<Y extends Dict>(\n target: any,\n source: any,\n mergeArray = false,\n): Y {\n let result = Object.assign({}, target)\n\n if (isObject(source)) {\n if (isObject(target)) {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n const targetValue: any = target[sourceKey]\n\n if (mergeArray && isArray(sourceValue) && isArray(targetValue)) {\n result[sourceKey] = targetValue.concat(...sourceValue)\n } else if (\n !isFunction(sourceValue) &&\n isObject(sourceValue) &&\n target.hasOwnProperty(sourceKey)\n ) {\n result[sourceKey] = merge(targetValue, sourceValue, mergeArray)\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\n }\n } else {\n result = source\n }\n }\n\n return result as Y\n}\n\nexport interface FlattenObjectOptions {\n maxDepth?: number\n omitKeys?: string[]\n separator?: string\n shouldProcess?: (obj: any) => boolean\n}\n\nexport function flattenObject<Y extends Dict>(\n obj: any,\n { maxDepth, omitKeys, separator, shouldProcess }: FlattenObjectOptions = {},\n): Y {\n maxDepth ??= Infinity\n omitKeys ??= []\n separator ??= \".\"\n\n if ((!isObject(obj) && !isArray(obj)) || !maxDepth) return obj\n\n return Object.entries(obj).reduce<any>((result, [key, value]) => {\n if (\n isObject(value) &&\n !Object.keys(value).some((key) => omitKeys.includes(key)) &&\n (!shouldProcess || shouldProcess(value))\n ) {\n Object.entries(\n flattenObject(value, {\n maxDepth: maxDepth - 1,\n omitKeys,\n separator,\n shouldProcess,\n }),\n ).forEach(([childKey, childValue]) => {\n result[`${key}${separator}${childKey}`] = childValue\n })\n } else {\n result[key] = value\n }\n\n return result\n }, {}) as Y\n}\n\nexport function objectFromEntries<Y extends Dict>(entries: any[][]): Y {\n return entries.reduce<any>((result, [key, value]) => {\n result[key] = value\n\n return result\n }, {}) as Y\n}\n\nexport function keysFormObject<Y extends object>(obj: Y): (keyof Y)[] {\n return Object.keys(obj) as (keyof Y)[]\n}\n\nexport function replaceObject<Y = any>(\n objOrArray: Y,\n callBack: (value: any) => any,\n): Y {\n if (isArray(objOrArray)) {\n return objOrArray.map(callBack) as Y\n } else if (isObject(objOrArray)) {\n return Object.entries(objOrArray).reduce<Dict>((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {}) as Y\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport function getObject(\n obj: Dict | undefined,\n path: number | string,\n fallback?: any,\n i?: number,\n) {\n const keys = isString(path)\n ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean)\n : [path]\n\n for (i = 0; i < keys.length; i += 1) {\n if (!obj) break\n\n const key = keys[i]\n\n obj = key ? obj[key] : undefined\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport function memoizeObject(func: typeof getObject) {\n const cache = new WeakMap()\n\n function memoizedFunc<Y>(\n obj: Dict,\n path: number | string,\n fallback?: any,\n i?: number,\n ): Y {\n if (isUndefined(obj)) return func(obj, path, fallback)\n\n if (!cache.has(obj)) cache.set(obj, new Map())\n\n const map = cache.get(obj)\n\n if (map.has(path)) return map.get(path)\n\n const value = func(obj, path, fallback, i)\n\n map.set(path, value)\n\n return value as Y\n }\n\n return memoizedFunc\n}\n\nexport const getMemoizedObject = memoizeObject(getObject)\n\nexport function assignAfter(target: { [key: string]: any }, ...sources: any[]) {\n const result: { [key: string]: unknown } = { ...target }\n\n for (const nextSource of sources) {\n if (nextSource == null) continue\n\n for (const nextKey in nextSource) {\n if (!Object.prototype.hasOwnProperty.call(nextSource, nextKey)) continue\n\n if (nextKey in result) delete result[nextKey]\n\n result[nextKey] = nextSource[nextKey]\n }\n }\n\n return result\n}\n"],"mappings":"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","names":["parseToHsla","parseToRgba","isDark","hsla","rgba","parseToRgba","parseToHsla","v"]}
|
|
1
|
+
{"version":3,"sources":["../src/color.ts","../src/assertion.ts","../src/object.ts"],"sourcesContent":["import type { Dict, StringLiteral } from \"./index.types\"\nimport * as c from \"color2k\"\nimport { isArray, isNumber, isObject } from \"./assertion\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ThemeValue = number | string\ntype Breakpoint = \"base\" | StringLiteral\ntype ColorMode = \"dark\" | \"light\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"hsl\" | \"hsla\" | \"rgb\" | \"rgba\"\n\nexport const SEMANTIC_COLOR_SCHEMES = [\n \"primary\",\n \"secondary\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"link\",\n] as const\n\nexport const COLOR_SCHEMES = [\n \"gray\",\n \"neutral\",\n \"red\",\n \"rose\",\n \"pink\",\n \"flashy\",\n \"orange\",\n \"amber\",\n \"yellow\",\n \"lime\",\n \"green\",\n \"emerald\",\n \"teal\",\n \"cyan\",\n \"sky\",\n \"blue\",\n \"indigo\",\n \"violet\",\n \"purple\",\n \"fuchsia\",\n] as const\n\nexport type SemanticColorScheme =\n | (typeof SEMANTIC_COLOR_SCHEMES)[number]\n | StringLiteral\nexport type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport function isGray(colorScheme: string) {\n return colorScheme === \"gray\" || colorScheme === \"neutral\"\n}\n\nexport function isAccessible(colorScheme: string) {\n return (\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n )\n}\n\nexport function getColor(color: string, fallback = \"#000000\") {\n return function (\n theme: Dict = {},\n colorMode: ColorMode = \"light\",\n breakpoint: Breakpoint = \"base\",\n ) {\n const [token, tone] = color.split(\".\")\n\n if (tone) {\n const [, relatedToken] =\n Object.entries<string>(theme.semantics?.colorSchemes ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedToken) color = `${relatedToken}.${tone}`\n } else {\n const [, relatedColor] =\n Object.entries<string>(theme.semantics?.colors ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedColor) color = relatedColor\n }\n\n const hex = get<[ThemeValue, ThemeValue] | Dict<ThemeValue> | ThemeValue>(\n theme,\n `colors.${color}`,\n color,\n )\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(hex[colorMode !== \"dark\" ? 0 : 1]))\n } else if (isObject(hex)) {\n return c.toHex(String(hex[breakpoint]))\n } else {\n return c.toHex(String(hex))\n }\n } catch {\n try {\n return c.toHex(fallback)\n } catch {\n return \"#000000\"\n }\n }\n }\n}\n\nexport function lightenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n}\n\nexport function darkenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n}\n\nexport function tintColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n}\n\nexport function shadeColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n}\n\nexport function transparentizeColor(color: string, alpha: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.transparentize(raw, 1 - alpha)\n }\n}\n\nexport function randomColor({\n colors,\n string,\n}: { colors?: string[]; string?: string } = {}) {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors) ?? fallback\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors) ?? fallback\n\n return fallback\n}\n\nfunction randomHex() {\n return `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n}\n\nfunction randomColorFromString(str: string) {\n let hash = 0\n\n if (str.length === 0) return hash.toString()\n\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n hash = hash & hash\n }\n\n let color = \"#\"\n\n for (let j = 0; j < 3; j += 1) {\n const value = (hash >> (j * 8)) & 255\n\n color += `00${value.toString(16)}`.substr(-2)\n }\n\n return color\n}\n\nfunction randomColorFromList(str: string, list: string[]) {\n let index = 0\n\n if (str.length === 0) return list[0]\n\n for (let i = 0; i < str.length; i += 1) {\n index = str.charCodeAt(i) + ((index << 5) - index)\n\n index = index & index\n }\n\n index = ((index % list.length) + list.length) % list.length\n\n return list[index]\n}\n\nfunction randomFromList(list: string[]) {\n return list[Math.floor(Math.random() * list.length)]\n}\n\nfunction getBrightness(color: string) {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport function isTone(color: string) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n}\n\nexport function isLight(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"dark\"\n }\n}\n\nexport function isDark(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"light\"\n }\n}\n\nexport function convertColor(color: string, fallback?: string) {\n return function (format: ColorFormat): string | undefined {\n try {\n const isAlpha = format.endsWith(\"a\")\n\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n if (format.startsWith(\"hex\")) {\n let hexa = c.toHex(color)\n\n if (isAlpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, \"\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!isAlpha) {\n hsla = hsla.replace(/hsla/, \"hsl\")\n hsla = hsla.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return hsla\n } else {\n let rgba = c.toRgba(color)\n\n if (!isAlpha) {\n rgba = rgba.replace(/rgba/, \"rgb\")\n rgba = rgba.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return rgba\n }\n } catch {\n if (fallback) return convertColor(fallback)(format)\n }\n }\n}\n\nexport function calcFormat(color: string): ColorFormat {\n if (color.startsWith(\"hsl\")) {\n return color.startsWith(\"hsla\") ? \"hsla\" : \"hsl\"\n } else if (color.startsWith(\"rgb\")) {\n return color.startsWith(\"rgba\") ? \"rgba\" : \"rgb\"\n } else {\n return color.length === 9 ? \"hexa\" : \"hex\"\n }\n}\n\nexport function getAlpha(color: string) {\n return c.parseToRgba(color)[3]\n}\n\nexport function alphaToHex(a: number) {\n if (0 > a) a = 0\n if (1 < a) a = 1\n\n return Math.round(a * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nexport function parseToRgba(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToRgba(color)\n } catch {\n if (fallback) return c.parseToRgba(fallback)\n }\n}\n\nexport function parseToHsla(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToHsla(color)\n } catch {\n if (fallback) return c.parseToHsla(fallback)\n }\n}\n\nexport function parseToHsv(\n color: string,\n fallback?: string,\n): [number, number, number, number] {\n let [r, g, b, a] = parseToRgba(color, fallback) ?? [255, 255, 255, 1]\n\n r = r / 255\n g = g / 255\n b = b / 255\n\n const [min, max] = [Math.min(r, g, b), Math.max(r, g, b)]\n const delta = max - min\n\n let [h, v, s] = [0, max, max == 0 ? 0 : delta / max]\n\n switch (min) {\n case max:\n h = 0\n break\n\n case r:\n h = 60 * ((b - g) / delta) + 180\n break\n\n case g:\n h = 60 * ((r - b) / delta) + 300\n break\n\n case b:\n h = 60 * ((g - r) / delta) + 60\n break\n }\n\n return [h, s, v, a]\n}\n\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.rgba(r, g, b, a), fallback)(format)\n }\n}\n\nexport function hslaTo(\n [h, s, l, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.hsla(h, s, l, a), fallback)(format)\n }\n}\n\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\"): string | undefined {\n h = h / 60\n\n let rgb: [number, number, number] = [v, v, v]\n\n let i = Math.floor(h)\n let f = h - i\n let p = v * (1 - s)\n let q = v * (1 - s * f)\n let t = v * (1 - s * (1 - f))\n\n switch (i) {\n case 0:\n case 6:\n rgb = [v, t, p]\n break\n\n case 1:\n rgb = [q, v, p]\n break\n\n case 2:\n rgb = [p, v, t]\n break\n\n case 3:\n rgb = [p, q, v]\n break\n\n case 4:\n rgb = [t, p, v]\n break\n\n case 5:\n rgb = [v, p, q]\n break\n }\n\n let color = `rgb(${rgb.map((v) => Math.round(v * 255)).join(\", \")})`\n\n if (isNumber(a)) color = color.replace(/\\)$/, `, ${a})`)\n\n return convertColor(color, fallback)(format)\n }\n}\n\nexport function sameColor(\n color: string | undefined,\n comparison: string | undefined,\n) {\n if (!color) return false\n if (!comparison) return false\n\n const a = parseToRgba(color) ?? []\n const b = parseToRgba(comparison) ?? []\n\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]\n}\n","import type { Dict } from \"./index.types\"\n\nexport function is(x: any, y: any) {\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport function isNotNumber(value: any): boolean {\n return (\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n )\n}\n\nexport function isNumeric(value: any): boolean {\n return (\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n )\n}\n\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\nexport function isBoolean(value: any): value is boolean {\n return typeof value === \"boolean\"\n}\n\nexport function isUndefined(value: any): value is undefined {\n return typeof value === \"undefined\"\n}\n\nexport function isNull(value: any): value is null {\n return value === null\n}\n\nexport function isObject<T extends Dict>(value: any): value is T {\n return (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n )\n}\n\nexport function isArray<T extends any[]>(value: any): value is T {\n return Array.isArray(value)\n}\n\nexport function isEmpty(value: any): boolean {\n return !isArray(value) || !value.length || value.every((v) => v == null)\n}\n\nexport function isEmptyObject(value: any): boolean {\n return isObject(value) && !Object.keys(value).length\n}\n\nexport function isFunction<T extends Function = Function>(\n value: any,\n): value is T {\n return typeof value === \"function\"\n}\n\nexport function isUnit(value: any): boolean {\n return /[0-9].*(em|rem|ex|rex|cap|rcap|ch|rch|ic|ric|lh|rlh|vw|svw|lvw|dvw|vh|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax|cm|mm|Q|in|pc|pt|px|%|cqw|cqh|cqi|cqb|cqmin|cqmax)$/.test(\n value,\n )\n}\n\nexport function cast<T>(value: any) {\n return value as T\n}\n","import type { Dict } from \"./index.types\"\nimport {\n isArray,\n isFunction,\n isObject,\n isString,\n isUndefined,\n} from \"./assertion\"\n\nfunction omitObjectHelper<Y extends Dict, M extends keyof Y>(\n obj: Y,\n path: M[] | readonly M[],\n): any {\n if (!path.length) return obj\n\n const [primaryKey, ...restKeys] = path\n\n if (restKeys.length === 0 && primaryKey && primaryKey in obj) {\n const { [primaryKey]: _, ...rest } = obj\n\n return rest\n }\n\n if (primaryKey && obj[primaryKey] && isObject(obj[primaryKey])) {\n return {\n ...obj,\n [primaryKey]: omitObjectHelper(obj[primaryKey], restKeys),\n }\n }\n\n return obj\n}\n\nexport function omitObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[]) {\n return (keys as M[]).reduce((prev, key) => {\n const path = (isString(key) ? key.split(\".\") : []) as M[]\n\n return omitObjectHelper(prev, path)\n }, obj) as unknown as D extends unknown ? Omit<Y, M> : D\n}\n\nexport function pickObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[], fallbackValue = \"__fallback\") {\n return (keys as M[]).reduce((prev, key) => {\n const path = isString(key) ? key.split(\".\") : []\n\n if (!path.length) return prev\n\n const value = getMemoizedObject(obj, key as string, fallbackValue)\n\n if (value === fallbackValue) return prev\n\n prev = merge(\n prev,\n path.reduceRight(\n (prev, key) => ({ [key]: key === path.at(-1) ? value : prev }),\n {},\n ),\n )\n\n return prev\n }, {}) as D extends unknown ? { [H in M]: Y[H] } : D\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (keys.includes(key as Y[M])) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [P in M]: Y[P] }, Omit<Y, M>]\n}\n\nexport function filterObject<Y extends Dict, M extends Dict>(\n obj: Y,\n func: (key: keyof Y, value: Y[keyof Y], obj: Y) => boolean,\n): M {\n const result: Dict = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const shouldPass = func(key, value, obj)\n\n if (shouldPass) result[key] = value\n })\n\n return result as M\n}\n\nexport function filterUndefined<Y extends Dict>(obj: Y): Y {\n return filterObject(obj, (_, val) => val !== null && val !== undefined)\n}\n\nexport function merge<Y extends Dict>(\n target: any,\n source: any,\n mergeArray = false,\n): Y {\n let result = Object.assign({}, target)\n\n if (isObject(source)) {\n if (isObject(target)) {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n const targetValue: any = target[sourceKey]\n\n if (mergeArray && isArray(sourceValue) && isArray(targetValue)) {\n result[sourceKey] = targetValue.concat(...sourceValue)\n } else if (\n !isFunction(sourceValue) &&\n isObject(sourceValue) &&\n target.hasOwnProperty(sourceKey)\n ) {\n result[sourceKey] = merge(targetValue, sourceValue, mergeArray)\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\n }\n } else {\n result = source\n }\n }\n\n return result as Y\n}\n\nexport interface FlattenObjectOptions {\n maxDepth?: number\n omitKeys?: string[]\n separator?: string\n shouldProcess?: (obj: any) => boolean\n}\n\nexport function flattenObject<Y extends Dict>(\n obj: any,\n { maxDepth, omitKeys, separator, shouldProcess }: FlattenObjectOptions = {},\n): Y {\n maxDepth ??= Infinity\n omitKeys ??= []\n separator ??= \".\"\n\n if ((!isObject(obj) && !isArray(obj)) || !maxDepth) return obj\n\n return Object.entries(obj).reduce<any>((result, [key, value]) => {\n if (\n isObject(value) &&\n !Object.keys(value).some((key) => omitKeys.includes(key)) &&\n (!shouldProcess || shouldProcess(value))\n ) {\n Object.entries(\n flattenObject(value, {\n maxDepth: maxDepth - 1,\n omitKeys,\n separator,\n shouldProcess,\n }),\n ).forEach(([childKey, childValue]) => {\n result[`${key}${separator}${childKey}`] = childValue\n })\n } else {\n result[key] = value\n }\n\n return result\n }, {}) as Y\n}\n\nexport function objectFromEntries<Y extends Dict>(entries: any[][]): Y {\n return entries.reduce<any>((result, [key, value]) => {\n result[key] = value\n\n return result\n }, {}) as Y\n}\n\nexport function keysFormObject<Y extends object>(obj: Y): (keyof Y)[] {\n return Object.keys(obj) as (keyof Y)[]\n}\n\nexport function replaceObject<Y = any>(\n objOrArray: Y,\n callBack: (value: any) => any,\n): Y {\n if (isArray(objOrArray)) {\n return objOrArray.map(callBack) as Y\n } else if (isObject(objOrArray)) {\n return Object.entries(objOrArray).reduce<Dict>((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {}) as Y\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport function getObject(\n obj: Dict | undefined,\n path: number | string,\n fallback?: any,\n i?: number,\n) {\n const keys = isString(path)\n ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean)\n : [path]\n\n for (i = 0; i < keys.length; i += 1) {\n if (!obj) break\n\n const key = keys[i]\n\n obj = key ? obj[key] : undefined\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport function memoizeObject(func: typeof getObject) {\n const cache = new WeakMap()\n\n function memoizedFunc<Y>(\n obj: Dict,\n path: number | string,\n fallback?: any,\n i?: number,\n ): Y {\n if (isUndefined(obj)) return func(obj, path, fallback)\n\n if (!cache.has(obj)) cache.set(obj, new Map())\n\n const map = cache.get(obj)\n\n if (map.has(path)) return map.get(path)\n\n const value = func(obj, path, fallback, i)\n\n map.set(path, value)\n\n return value as Y\n }\n\n return memoizedFunc\n}\n\nexport const getMemoizedObject = memoizeObject(getObject)\n\nexport function assignAfter(target: { [key: string]: any }, ...sources: any[]) {\n const result: { [key: string]: unknown } = { ...target }\n\n for (const nextSource of sources) {\n if (nextSource == null) continue\n\n for (const nextKey in nextSource) {\n if (!Object.prototype.hasOwnProperty.call(nextSource, nextKey)) continue\n\n if (nextKey in result) delete result[nextKey]\n\n result[nextKey] = nextSource[nextKey]\n }\n }\n\n return result\n}\n"],"mappings":"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","names":["parseToHsla","parseToRgba","isDark","hsla","rgba","parseToRgba","parseToHsla","v"]}
|
package/dist/color.mjs
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -10,5 +10,5 @@ export { interopDefault } from './module.mjs';
|
|
|
10
10
|
export { clampNumber, countDecimal, percentToValue, roundNumberToStep, toNumber, toPrecision, valueToPercent } from './number.mjs';
|
|
11
11
|
export { FlattenObjectOptions, assignAfter, filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, keysFormObject, memoizeObject, merge, objectFromEntries, omitObject, pickObject, replaceObject, splitObject } from './object.mjs';
|
|
12
12
|
export { AsyncFnReturn, AsyncState, AsyncStateRetry, FunctionReturningPromise, MaybeRenderProp, PromiseType, UseIsMountedProps, UseIsMountedReturn, assignRef, createContext, createId, cx, findChild, findChildren, getValidChildren, includesChildren, isRefObject, isSomeElement, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect } from './react.mjs';
|
|
13
|
-
export { antonym, escape, toCamelCase, toKebabCase, toTitleCase } from './string.mjs';
|
|
13
|
+
export { antonym, escape, toCamelCase, toKebabCase, toPascalCase, toTitleCase } from './string.mjs';
|
|
14
14
|
import 'react';
|
package/dist/index.d.ts
CHANGED
|
@@ -10,5 +10,5 @@ export { interopDefault } from './module.js';
|
|
|
10
10
|
export { clampNumber, countDecimal, percentToValue, roundNumberToStep, toNumber, toPrecision, valueToPercent } from './number.js';
|
|
11
11
|
export { FlattenObjectOptions, assignAfter, filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, keysFormObject, memoizeObject, merge, objectFromEntries, omitObject, pickObject, replaceObject, splitObject } from './object.js';
|
|
12
12
|
export { AsyncFnReturn, AsyncState, AsyncStateRetry, FunctionReturningPromise, MaybeRenderProp, PromiseType, UseIsMountedProps, UseIsMountedReturn, assignRef, createContext, createId, cx, findChild, findChildren, getValidChildren, includesChildren, isRefObject, isSomeElement, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect } from './react.js';
|
|
13
|
-
export { antonym, escape, toCamelCase, toKebabCase, toTitleCase } from './string.js';
|
|
13
|
+
export { antonym, escape, toCamelCase, toKebabCase, toPascalCase, toTitleCase } from './string.js';
|
|
14
14
|
import 'react';
|
package/dist/index.js
CHANGED
|
@@ -149,6 +149,7 @@ __export(src_exports, {
|
|
|
149
149
|
toCamelCase: () => toCamelCase,
|
|
150
150
|
toKebabCase: () => toKebabCase,
|
|
151
151
|
toNumber: () => toNumber,
|
|
152
|
+
toPascalCase: () => toPascalCase,
|
|
152
153
|
toPrecision: () => toPrecision,
|
|
153
154
|
toTitleCase: () => toTitleCase,
|
|
154
155
|
transparentizeColor: () => transparentizeColor,
|
|
@@ -425,7 +426,6 @@ function assignAfter(target, ...sources) {
|
|
|
425
426
|
|
|
426
427
|
// src/color.ts
|
|
427
428
|
var SEMANTIC_COLOR_SCHEMES = [
|
|
428
|
-
"mono",
|
|
429
429
|
"primary",
|
|
430
430
|
"secondary",
|
|
431
431
|
"info",
|
|
@@ -1265,7 +1265,10 @@ function antonym(value) {
|
|
|
1265
1265
|
}
|
|
1266
1266
|
}
|
|
1267
1267
|
function toCamelCase(value) {
|
|
1268
|
-
return value.toLowerCase().replace(/[_-](.)/g, (_, val) => val.toUpperCase())
|
|
1268
|
+
return value.toLowerCase().replace(/[_-](.)/g, (_, val) => val.toUpperCase());
|
|
1269
|
+
}
|
|
1270
|
+
function toPascalCase(value) {
|
|
1271
|
+
return toCamelCase(value).replace(/^(.)/, (_, val) => val.toUpperCase());
|
|
1269
1272
|
}
|
|
1270
1273
|
function toKebabCase(value) {
|
|
1271
1274
|
return value.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, "");
|
|
@@ -1394,6 +1397,7 @@ function toTitleCase(value) {
|
|
|
1394
1397
|
toCamelCase,
|
|
1395
1398
|
toKebabCase,
|
|
1396
1399
|
toNumber,
|
|
1400
|
+
toPascalCase,
|
|
1397
1401
|
toPrecision,
|
|
1398
1402
|
toTitleCase,
|
|
1399
1403
|
transparentizeColor,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/array.ts","../src/assertion.ts","../src/calc.ts","../src/color.ts","../src/object.ts","../src/dom.ts","../src/event.ts","../src/function.ts","../src/module.ts","../src/number.ts","../src/react.tsx","../src/string.ts"],"sourcesContent":["export * from \"./array\"\nexport * from \"./assertion\"\nexport * from \"./calc\"\nexport * from \"./color\"\nexport * from \"./dom\"\nexport * from \"./event\"\nexport * from \"./function\"\nexport type * from \"./index.types\"\nexport * from \"./module\"\nexport * from \"./number\"\nexport * from \"./object\"\nexport * from \"./react\"\nexport * from \"./string\"\n","export function filterEmpty<T extends any[]>(array: T) {\n return array.filter((value) => value != null)\n}\n","import type { Dict } from \"./index.types\"\n\nexport function is(x: any, y: any) {\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport function isNotNumber(value: any): boolean {\n return (\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n )\n}\n\nexport function isNumeric(value: any): boolean {\n return (\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n )\n}\n\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\nexport function isBoolean(value: any): value is boolean {\n return typeof value === \"boolean\"\n}\n\nexport function isUndefined(value: any): value is undefined {\n return typeof value === \"undefined\"\n}\n\nexport function isNull(value: any): value is null {\n return value === null\n}\n\nexport function isObject<T extends Dict>(value: any): value is T {\n return (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n )\n}\n\nexport function isArray<T extends any[]>(value: any): value is T {\n return Array.isArray(value)\n}\n\nexport function isEmpty(value: any): boolean {\n return !isArray(value) || !value.length || value.every((v) => v == null)\n}\n\nexport function isEmptyObject(value: any): boolean {\n return isObject(value) && !Object.keys(value).length\n}\n\nexport function isFunction<T extends Function = Function>(\n value: any,\n): value is T {\n return typeof value === \"function\"\n}\n\nexport function isUnit(value: any): boolean {\n return /[0-9].*(em|rem|ex|rex|cap|rcap|ch|rch|ic|ric|lh|rlh|vw|svw|lvw|dvw|vh|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax|cm|mm|Q|in|pc|pt|px|%|cqw|cqh|cqi|cqb|cqmin|cqmax)$/.test(\n value,\n )\n}\n\nexport function cast<T>(value: any) {\n return value as T\n}\n","type Operator = \"*\" | \"+\" | \"/\" | \"-\"\n\nexport type Operand = number | string\n\nfunction toExpression(operator: Operator, ...args: Operand[]) {\n return args.join(` ${operator} `).replace(/calc/g, \"\")\n}\n\nfunction add(...args: Operand[]) {\n return `calc(${toExpression(\"+\", ...args)})`\n}\n\nfunction subtract(...args: Operand[]) {\n return `calc(${toExpression(\"-\", ...args)})`\n}\n\nfunction multiply(...args: Operand[]) {\n return `calc(${toExpression(\"*\", ...args)})`\n}\n\nfunction divide(...args: Operand[]) {\n return `calc(${toExpression(\"/\", ...args)})`\n}\n\nfunction negate(value: Operand) {\n if (!isNaN(parseFloat(value.toString())))\n return String(value).startsWith(\"-\") ? String(value).slice(1) : `-${value}`\n\n return multiply(value, -1)\n}\n\ninterface Calc {\n add: (...args: Operand[]) => Calc\n divide: (...args: Operand[]) => Calc\n multiply: (...args: Operand[]) => Calc\n negate: () => Calc\n subtract: (...args: Operand[]) => Calc\n toString: () => string\n}\n\nexport const calc = Object.assign(\n (x: Operand): Calc => ({\n add: (...args) => calc(add(x, ...args)),\n divide: (...args) => calc(divide(x, ...args)),\n multiply: (...args) => calc(multiply(x, ...args)),\n negate: () => calc(negate(x)),\n subtract: (...args) => calc(subtract(x, ...args)),\n toString: () => x.toString(),\n }),\n {\n add,\n divide,\n multiply,\n negate,\n subtract,\n },\n)\n","import type { Dict, StringLiteral } from \"./index.types\"\nimport * as c from \"color2k\"\nimport { isArray, isNumber, isObject } from \"./assertion\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ThemeValue = number | string\ntype Breakpoint = \"base\" | StringLiteral\ntype ColorMode = \"dark\" | \"light\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"hsl\" | \"hsla\" | \"rgb\" | \"rgba\"\n\nexport const SEMANTIC_COLOR_SCHEMES = [\n \"mono\",\n \"primary\",\n \"secondary\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"link\",\n] as const\n\nexport const COLOR_SCHEMES = [\n \"gray\",\n \"neutral\",\n \"red\",\n \"rose\",\n \"pink\",\n \"flashy\",\n \"orange\",\n \"amber\",\n \"yellow\",\n \"lime\",\n \"green\",\n \"emerald\",\n \"teal\",\n \"cyan\",\n \"sky\",\n \"blue\",\n \"indigo\",\n \"violet\",\n \"purple\",\n \"fuchsia\",\n] as const\n\nexport type SemanticColorScheme =\n | (typeof SEMANTIC_COLOR_SCHEMES)[number]\n | StringLiteral\nexport type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport function isGray(colorScheme: string) {\n return colorScheme === \"gray\" || colorScheme === \"neutral\"\n}\n\nexport function isAccessible(colorScheme: string) {\n return (\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n )\n}\n\nexport function getColor(color: string, fallback = \"#000000\") {\n return function (\n theme: Dict = {},\n colorMode: ColorMode = \"light\",\n breakpoint: Breakpoint = \"base\",\n ) {\n const [token, tone] = color.split(\".\")\n\n if (tone) {\n const [, relatedToken] =\n Object.entries<string>(theme.semantics?.colorSchemes ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedToken) color = `${relatedToken}.${tone}`\n } else {\n const [, relatedColor] =\n Object.entries<string>(theme.semantics?.colors ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedColor) color = relatedColor\n }\n\n const hex = get<[ThemeValue, ThemeValue] | Dict<ThemeValue> | ThemeValue>(\n theme,\n `colors.${color}`,\n color,\n )\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(hex[colorMode !== \"dark\" ? 0 : 1]))\n } else if (isObject(hex)) {\n return c.toHex(String(hex[breakpoint]))\n } else {\n return c.toHex(String(hex))\n }\n } catch {\n try {\n return c.toHex(fallback)\n } catch {\n return \"#000000\"\n }\n }\n }\n}\n\nexport function lightenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n}\n\nexport function darkenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n}\n\nexport function tintColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n}\n\nexport function shadeColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n}\n\nexport function transparentizeColor(color: string, alpha: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.transparentize(raw, 1 - alpha)\n }\n}\n\nexport function randomColor({\n colors,\n string,\n}: { colors?: string[]; string?: string } = {}) {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors) ?? fallback\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors) ?? fallback\n\n return fallback\n}\n\nfunction randomHex() {\n return `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n}\n\nfunction randomColorFromString(str: string) {\n let hash = 0\n\n if (str.length === 0) return hash.toString()\n\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n hash = hash & hash\n }\n\n let color = \"#\"\n\n for (let j = 0; j < 3; j += 1) {\n const value = (hash >> (j * 8)) & 255\n\n color += `00${value.toString(16)}`.substr(-2)\n }\n\n return color\n}\n\nfunction randomColorFromList(str: string, list: string[]) {\n let index = 0\n\n if (str.length === 0) return list[0]\n\n for (let i = 0; i < str.length; i += 1) {\n index = str.charCodeAt(i) + ((index << 5) - index)\n\n index = index & index\n }\n\n index = ((index % list.length) + list.length) % list.length\n\n return list[index]\n}\n\nfunction randomFromList(list: string[]) {\n return list[Math.floor(Math.random() * list.length)]\n}\n\nfunction getBrightness(color: string) {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport function isTone(color: string) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n}\n\nexport function isLight(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"dark\"\n }\n}\n\nexport function isDark(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"light\"\n }\n}\n\nexport function convertColor(color: string, fallback?: string) {\n return function (format: ColorFormat): string | undefined {\n try {\n const isAlpha = format.endsWith(\"a\")\n\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n if (format.startsWith(\"hex\")) {\n let hexa = c.toHex(color)\n\n if (isAlpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, \"\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!isAlpha) {\n hsla = hsla.replace(/hsla/, \"hsl\")\n hsla = hsla.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return hsla\n } else {\n let rgba = c.toRgba(color)\n\n if (!isAlpha) {\n rgba = rgba.replace(/rgba/, \"rgb\")\n rgba = rgba.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return rgba\n }\n } catch {\n if (fallback) return convertColor(fallback)(format)\n }\n }\n}\n\nexport function calcFormat(color: string): ColorFormat {\n if (color.startsWith(\"hsl\")) {\n return color.startsWith(\"hsla\") ? \"hsla\" : \"hsl\"\n } else if (color.startsWith(\"rgb\")) {\n return color.startsWith(\"rgba\") ? \"rgba\" : \"rgb\"\n } else {\n return color.length === 9 ? \"hexa\" : \"hex\"\n }\n}\n\nexport function getAlpha(color: string) {\n return c.parseToRgba(color)[3]\n}\n\nexport function alphaToHex(a: number) {\n if (0 > a) a = 0\n if (1 < a) a = 1\n\n return Math.round(a * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nexport function parseToRgba(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToRgba(color)\n } catch {\n if (fallback) return c.parseToRgba(fallback)\n }\n}\n\nexport function parseToHsla(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToHsla(color)\n } catch {\n if (fallback) return c.parseToHsla(fallback)\n }\n}\n\nexport function parseToHsv(\n color: string,\n fallback?: string,\n): [number, number, number, number] {\n let [r, g, b, a] = parseToRgba(color, fallback) ?? [255, 255, 255, 1]\n\n r = r / 255\n g = g / 255\n b = b / 255\n\n const [min, max] = [Math.min(r, g, b), Math.max(r, g, b)]\n const delta = max - min\n\n let [h, v, s] = [0, max, max == 0 ? 0 : delta / max]\n\n switch (min) {\n case max:\n h = 0\n break\n\n case r:\n h = 60 * ((b - g) / delta) + 180\n break\n\n case g:\n h = 60 * ((r - b) / delta) + 300\n break\n\n case b:\n h = 60 * ((g - r) / delta) + 60\n break\n }\n\n return [h, s, v, a]\n}\n\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.rgba(r, g, b, a), fallback)(format)\n }\n}\n\nexport function hslaTo(\n [h, s, l, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.hsla(h, s, l, a), fallback)(format)\n }\n}\n\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\"): string | undefined {\n h = h / 60\n\n let rgb: [number, number, number] = [v, v, v]\n\n let i = Math.floor(h)\n let f = h - i\n let p = v * (1 - s)\n let q = v * (1 - s * f)\n let t = v * (1 - s * (1 - f))\n\n switch (i) {\n case 0:\n case 6:\n rgb = [v, t, p]\n break\n\n case 1:\n rgb = [q, v, p]\n break\n\n case 2:\n rgb = [p, v, t]\n break\n\n case 3:\n rgb = [p, q, v]\n break\n\n case 4:\n rgb = [t, p, v]\n break\n\n case 5:\n rgb = [v, p, q]\n break\n }\n\n let color = `rgb(${rgb.map((v) => Math.round(v * 255)).join(\", \")})`\n\n if (isNumber(a)) color = color.replace(/\\)$/, `, ${a})`)\n\n return convertColor(color, fallback)(format)\n }\n}\n\nexport function sameColor(\n color: string | undefined,\n comparison: string | undefined,\n) {\n if (!color) return false\n if (!comparison) return false\n\n const a = parseToRgba(color) ?? []\n const b = parseToRgba(comparison) ?? []\n\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]\n}\n","import type { Dict } from \"./index.types\"\nimport {\n isArray,\n isFunction,\n isObject,\n isString,\n isUndefined,\n} from \"./assertion\"\n\nfunction omitObjectHelper<Y extends Dict, M extends keyof Y>(\n obj: Y,\n path: M[] | readonly M[],\n): any {\n if (!path.length) return obj\n\n const [primaryKey, ...restKeys] = path\n\n if (restKeys.length === 0 && primaryKey && primaryKey in obj) {\n const { [primaryKey]: _, ...rest } = obj\n\n return rest\n }\n\n if (primaryKey && obj[primaryKey] && isObject(obj[primaryKey])) {\n return {\n ...obj,\n [primaryKey]: omitObjectHelper(obj[primaryKey], restKeys),\n }\n }\n\n return obj\n}\n\nexport function omitObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[]) {\n return (keys as M[]).reduce((prev, key) => {\n const path = (isString(key) ? key.split(\".\") : []) as M[]\n\n return omitObjectHelper(prev, path)\n }, obj) as unknown as D extends unknown ? Omit<Y, M> : D\n}\n\nexport function pickObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[], fallbackValue = \"__fallback\") {\n return (keys as M[]).reduce((prev, key) => {\n const path = isString(key) ? key.split(\".\") : []\n\n if (!path.length) return prev\n\n const value = getMemoizedObject(obj, key as string, fallbackValue)\n\n if (value === fallbackValue) return prev\n\n prev = merge(\n prev,\n path.reduceRight(\n (prev, key) => ({ [key]: key === path.at(-1) ? value : prev }),\n {},\n ),\n )\n\n return prev\n }, {}) as D extends unknown ? { [H in M]: Y[H] } : D\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (keys.includes(key as Y[M])) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [P in M]: Y[P] }, Omit<Y, M>]\n}\n\nexport function filterObject<Y extends Dict, M extends Dict>(\n obj: Y,\n func: (key: keyof Y, value: Y[keyof Y], obj: Y) => boolean,\n): M {\n const result: Dict = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const shouldPass = func(key, value, obj)\n\n if (shouldPass) result[key] = value\n })\n\n return result as M\n}\n\nexport function filterUndefined<Y extends Dict>(obj: Y): Y {\n return filterObject(obj, (_, val) => val !== null && val !== undefined)\n}\n\nexport function merge<Y extends Dict>(\n target: any,\n source: any,\n mergeArray = false,\n): Y {\n let result = Object.assign({}, target)\n\n if (isObject(source)) {\n if (isObject(target)) {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n const targetValue: any = target[sourceKey]\n\n if (mergeArray && isArray(sourceValue) && isArray(targetValue)) {\n result[sourceKey] = targetValue.concat(...sourceValue)\n } else if (\n !isFunction(sourceValue) &&\n isObject(sourceValue) &&\n target.hasOwnProperty(sourceKey)\n ) {\n result[sourceKey] = merge(targetValue, sourceValue, mergeArray)\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\n }\n } else {\n result = source\n }\n }\n\n return result as Y\n}\n\nexport interface FlattenObjectOptions {\n maxDepth?: number\n omitKeys?: string[]\n separator?: string\n shouldProcess?: (obj: any) => boolean\n}\n\nexport function flattenObject<Y extends Dict>(\n obj: any,\n { maxDepth, omitKeys, separator, shouldProcess }: FlattenObjectOptions = {},\n): Y {\n maxDepth ??= Infinity\n omitKeys ??= []\n separator ??= \".\"\n\n if ((!isObject(obj) && !isArray(obj)) || !maxDepth) return obj\n\n return Object.entries(obj).reduce<any>((result, [key, value]) => {\n if (\n isObject(value) &&\n !Object.keys(value).some((key) => omitKeys.includes(key)) &&\n (!shouldProcess || shouldProcess(value))\n ) {\n Object.entries(\n flattenObject(value, {\n maxDepth: maxDepth - 1,\n omitKeys,\n separator,\n shouldProcess,\n }),\n ).forEach(([childKey, childValue]) => {\n result[`${key}${separator}${childKey}`] = childValue\n })\n } else {\n result[key] = value\n }\n\n return result\n }, {}) as Y\n}\n\nexport function objectFromEntries<Y extends Dict>(entries: any[][]): Y {\n return entries.reduce<any>((result, [key, value]) => {\n result[key] = value\n\n return result\n }, {}) as Y\n}\n\nexport function keysFormObject<Y extends object>(obj: Y): (keyof Y)[] {\n return Object.keys(obj) as (keyof Y)[]\n}\n\nexport function replaceObject<Y = any>(\n objOrArray: Y,\n callBack: (value: any) => any,\n): Y {\n if (isArray(objOrArray)) {\n return objOrArray.map(callBack) as Y\n } else if (isObject(objOrArray)) {\n return Object.entries(objOrArray).reduce<Dict>((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {}) as Y\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport function getObject(\n obj: Dict | undefined,\n path: number | string,\n fallback?: any,\n i?: number,\n) {\n const keys = isString(path)\n ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean)\n : [path]\n\n for (i = 0; i < keys.length; i += 1) {\n if (!obj) break\n\n const key = keys[i]\n\n obj = key ? obj[key] : undefined\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport function memoizeObject(func: typeof getObject) {\n const cache = new WeakMap()\n\n function memoizedFunc<Y>(\n obj: Dict,\n path: number | string,\n fallback?: any,\n i?: number,\n ): Y {\n if (isUndefined(obj)) return func(obj, path, fallback)\n\n if (!cache.has(obj)) cache.set(obj, new Map())\n\n const map = cache.get(obj)\n\n if (map.has(path)) return map.get(path)\n\n const value = func(obj, path, fallback, i)\n\n map.set(path, value)\n\n return value as Y\n }\n\n return memoizedFunc\n}\n\nexport const getMemoizedObject = memoizeObject(getObject)\n\nexport function assignAfter(target: { [key: string]: any }, ...sources: any[]) {\n const result: { [key: string]: unknown } = { ...target }\n\n for (const nextSource of sources) {\n if (nextSource == null) continue\n\n for (const nextKey in nextSource) {\n if (!Object.prototype.hasOwnProperty.call(nextSource, nextKey)) continue\n\n if (nextKey in result) delete result[nextKey]\n\n result[nextKey] = nextSource[nextKey]\n }\n }\n\n return result\n}\n","import type React from \"react\"\nimport { isNumber, isUndefined } from \"./assertion\"\n\nexport function createdDom(): boolean {\n return !!(\n typeof window !== \"undefined\" &&\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n window.document?.createElement\n )\n}\n\nexport function getPlatform(): string {\n return (navigator as any).userAgentData?.platform ?? navigator.platform\n}\n\nexport function vendor(v: RegExp): boolean {\n return createdDom() && v.test(navigator.vendor)\n}\n\nexport function platform(v: RegExp): boolean {\n return createdDom() && v.test(getPlatform())\n}\n\nexport function isMac(): boolean {\n return platform(/^mac/i)\n}\n\nexport function isApple(): boolean {\n return platform(/mac|iphone|ipad|ipod/i)\n}\n\nexport function isSafari(): boolean {\n return isApple() && vendor(/apple/i)\n}\n\nexport function isElement(el: any): el is Element {\n return (\n el != null &&\n typeof el == \"object\" &&\n \"nodeType\" in el &&\n el.nodeType === Node.ELEMENT_NODE\n )\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n if (!isElement(el)) return false\n\n const win = el.ownerDocument.defaultView ?? window\n\n return el instanceof win.HTMLElement\n}\n\nexport function isHidden(el: HTMLElement): boolean {\n if (el.parentElement && isHidden(el.parentElement)) return true\n\n return el.hidden\n}\n\nexport function isDisabled(el: HTMLElement): boolean {\n return (\n Boolean(el.getAttribute(\"disabled\")) ||\n Boolean(el.getAttribute(\"data-disabled\")) ||\n Boolean(el.getAttribute(\"aria-disabled\"))\n )\n}\n\nfunction isVisible(el: HTMLElement) {\n return el.offsetWidth > 0 && el.offsetHeight > 0\n}\n\nexport function hasTabIndex(el: HTMLElement): boolean {\n return el.hasAttribute(\"tabindex\")\n}\n\nexport function isContentEditable(el: HTMLElement): boolean {\n const value = el.getAttribute(\"contenteditable\")\n\n return value !== \"false\" && value != null\n}\n\nexport function isContains(\n parent: HTMLElement | null,\n child: HTMLElement | null,\n): boolean | undefined {\n return parent === child || parent?.contains(child)\n}\n\nexport function getPx(value: number | string | undefined): number {\n if (isNumber(value)) return value\n\n if (isUndefined(value)) return 0\n\n if (value.includes(\"px\")) return parseFloat(value)\n\n const isBrowser = createdDom()\n let fontSize = 16\n\n if (isBrowser) {\n const style = window.getComputedStyle(document.documentElement)\n\n const computedFontSize = parseFloat(style.fontSize)\n\n if (!isNaN(computedFontSize)) fontSize = computedFontSize\n }\n\n return parseFloat(value) * fontSize\n}\n\nexport function getEventRelatedTarget(ev: React.FocusEvent | React.MouseEvent) {\n return (ev.relatedTarget ??\n ev.currentTarget.ownerDocument.activeElement) as HTMLElement | null\n}\n\ntype Booleanish = \"false\" | \"true\" | boolean\n\nexport function dataAttr(condition: boolean | undefined) {\n return (condition ? \"\" : undefined) as Booleanish\n}\n\nexport function ariaAttr(condition: boolean | undefined): boolean | undefined {\n return condition ? true : undefined\n}\n\nexport interface FocusableElement {\n focus: (options?: FocusOptions) => void\n}\n\nconst focusableElList = [\n \"input:not(:disabled):not([disabled])\",\n \"select:not(:disabled):not([disabled])\",\n \"textarea:not(:disabled):not([disabled])\",\n \"embed\",\n \"iframe\",\n \"object\",\n \"a[href]\",\n \"area[href]\",\n \"button:not(:disabled):not([disabled])\",\n \"[tabindex]\",\n \"audio[controls]\",\n \"video[controls]\",\n \"*[tabindex]:not([aria-disabled])\",\n \"*[contenteditable]\",\n]\n\nconst focusableElSelector: string = focusableElList.join()\n\nexport function getAllFocusable<T extends HTMLElement>(container: T): T[] {\n const focusableEls: T[] = Array.from(\n container.querySelectorAll<T>(focusableElSelector),\n )\n\n focusableEls.unshift(container)\n\n return focusableEls.filter((el) => isFocusable(el) && isVisible(el))\n}\n\nexport function isFocusable(el: HTMLElement): boolean {\n if (!isHTMLElement(el) || isHidden(el) || isDisabled(el)) {\n return false\n }\n\n const { localName } = el\n const focusableTags = [\"input\", \"select\", \"textarea\", \"button\"]\n\n if (focusableTags.includes(localName)) return true\n\n const others = {\n a: () => el.hasAttribute(\"href\"),\n audio: () => el.hasAttribute(\"controls\"),\n video: () => el.hasAttribute(\"controls\"),\n }\n\n if (localName in others) return others[localName as keyof typeof others]()\n\n if (isContentEditable(el)) return true\n\n return hasTabIndex(el)\n}\n\nexport function hasNegativeTabIndex(el: HTMLElement): boolean {\n return hasTabIndex(el) && el.tabIndex === -1\n}\n\nexport function isTabbable(el?: HTMLElement | null): boolean {\n return el\n ? isHTMLElement(el) && isFocusable(el) && !hasNegativeTabIndex(el)\n : false\n}\n\nexport function isTouchDevice(): boolean {\n return \"ontouchstart\" in window\n}\n\nexport function getOwnerWindow(\n node?: Element | null,\n): typeof globalThis & Window {\n return getOwnerDocument(node).defaultView ?? window\n}\n\nexport function getOwnerDocument(el?: Element | null): Document {\n return isElement(el) ? el.ownerDocument : document\n}\n\nexport function getActiveElement(el?: HTMLElement): HTMLElement | null {\n return getOwnerDocument(el).activeElement as HTMLElement | null\n}\n\nexport function isActiveElement(el: HTMLElement): boolean {\n return getActiveElement(el) === el\n}\n","export type AnyPointerEvent = MouseEvent | PointerEvent | TouchEvent\n\nexport type PointType = \"client\" | \"page\"\n\nexport interface Point {\n x: number\n y: number\n}\n\nexport interface PointerEventInfo {\n point: Point\n}\n\nexport type MixedEventListener = (\n e: AnyPointerEvent,\n info: PointerEventInfo,\n) => void\n\nexport function isMouseEvent(ev: any): ev is MouseEvent {\n const win = getEventWindow(ev)\n\n if (typeof win.PointerEvent !== \"undefined\" && ev instanceof win.PointerEvent)\n return !!(ev.pointerType === \"mouse\")\n\n return ev instanceof win.MouseEvent\n}\n\nexport function isTouchEvent(ev: AnyPointerEvent): ev is TouchEvent {\n return !!(ev as TouchEvent).touches\n}\n\nexport function isMultiTouchEvent(ev: AnyPointerEvent) {\n return isTouchEvent(ev) && ev.touches.length > 1\n}\n\nexport function getEventWindow(ev: Event): typeof globalThis {\n return ((ev as UIEvent).view ?? window) as unknown as typeof globalThis\n}\n\nexport function pointFromTouch(e: TouchEvent, type: PointType = \"page\") {\n const point = e.touches[0] || e.changedTouches[0]\n\n return { x: point?.[`${type}X`] ?? 0, y: point?.[`${type}Y`] ?? 0 }\n}\n\nexport function pointFromMouse(\n point: MouseEvent | PointerEvent,\n type: PointType = \"page\",\n) {\n return {\n x: point[`${type}X`],\n y: point[`${type}Y`],\n }\n}\n\nexport function getEventPoint(ev: AnyPointerEvent, type: PointType = \"page\") {\n return isTouchEvent(ev) ? pointFromTouch(ev, type) : pointFromMouse(ev, type)\n}\n\nexport function addDomEvent(\n target: EventTarget,\n type: string,\n cb: EventListener,\n options?: AddEventListenerOptions,\n) {\n target.addEventListener(type, cb, options)\n\n return () => {\n target.removeEventListener(type, cb, options)\n }\n}\n\nfunction filter(cb: EventListener): EventListener {\n return function (ev: Event) {\n const isMouse = isMouseEvent(ev)\n\n if (!isMouse || ev.button === 0) cb(ev)\n }\n}\n\nfunction wrap(cb: MixedEventListener, filterPrimary = false): EventListener {\n function listener(ev: any) {\n return cb(ev, { point: getEventPoint(ev) })\n }\n\n const fn = filterPrimary ? filter(listener) : listener\n\n return fn as EventListener\n}\n\nexport function addPointerEvent(\n target: EventTarget,\n type: string,\n cb: MixedEventListener,\n options?: AddEventListenerOptions,\n) {\n return addDomEvent(target, type, wrap(cb, type === \"pointerdown\"), options)\n}\n","import { isFunction } from \"./assertion\"\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const noop = () => {}\n\nexport function runIfFunc<T, U extends any[]>(\n valOrFunc: ((...funcArgs: U) => T) | T,\n ...args: U\n): T {\n return isFunction(valOrFunc) ? valOrFunc(...args) : valOrFunc\n}\n\nexport function handlerAll<T extends (event: any, ...args: any[]) => void>(\n ...funcs: (T | undefined)[]\n) {\n return function (\n event: T extends (event: infer R, ...args: any[]) => any ? R : never,\n ...args: T extends (event: any, ...args: infer R) => any ? R : never\n ) {\n funcs.some((func) => {\n func?.(event, ...args)\n\n return event?.defaultPrevented\n })\n }\n}\n\nexport function funcAll<T extends (...args: any[]) => any>(\n ...funcs: (T | undefined)[]\n) {\n return function (...args: T extends (...args: infer R) => any ? R : never) {\n return funcs.forEach((func) => func?.(...args))\n }\n}\n","export function interopDefault<T>(module: T): T {\n return (module as { default: T }).default || module\n}\n","export function toNumber(n: any): number {\n const num = parseFloat(n)\n\n return typeof num !== \"number\" || Number.isNaN(num) ? 0 : num\n}\n\nexport function toPrecision(n: number, precision?: number): string {\n n = toNumber(n)\n\n const scale = 10 ** (precision ?? 10)\n\n n = Math.round(n * scale) / scale\n\n return precision ? n.toFixed(precision) : n.toString()\n}\n\nexport function countDecimal(n: number): number {\n if (!Number.isFinite(n)) return 0\n\n let e = 1\n let p = 0\n\n while (Math.round(n * e) / e !== n) {\n e *= 10\n p += 1\n }\n\n return p\n}\n\nexport function roundNumberToStep(n: number, from: number, step: number) {\n const nextValue = Math.round((n - from) / step) * step + from\n\n const precision = countDecimal(step)\n\n return toPrecision(nextValue, precision)\n}\n\nexport function valueToPercent(n: number, min: number, max: number): number {\n return ((n - min) * 100) / (max - min)\n}\n\nexport function percentToValue(n: number, min: number, max: number) {\n return (max - min) * n + min\n}\n\nexport function clampNumber(n: number, min: number, max: number): number {\n return Math.min(Math.max(n, min), max)\n}\n","import * as React from \"react\"\nimport { isNumber, isObject, isString } from \"./assertion\"\n\nexport type MaybeRenderProp<Y> =\n | ((props: Y) => React.ReactNode)\n | React.ReactNode\n\ninterface Options<Y = any> {\n name?: string\n defaultValue?: Y\n errorMessage?: string\n strict?: boolean\n}\n\ntype CreateContextReturn<Y> = [React.Provider<Y>, () => Y, React.Context<Y>]\n\nexport function createContext<Y = any>(options: {\n name?: string\n defaultValue?: Y\n errorMessage?: string\n strict?: true\n}): CreateContextReturn<Y>\n\nexport function createContext<Y = any>(options: {\n name?: string\n defaultValue?: Y\n errorMessage?: string\n strict?: false\n}): CreateContextReturn<undefined | Y>\n\nexport function createContext<Y = any>({\n name,\n defaultValue,\n errorMessage = \"useContext: `context` is undefined. Seems you forgot to wrap component within the Provider\",\n strict = true,\n}: Options<Y> = {}) {\n const Context = React.createContext<undefined | Y>(defaultValue)\n\n Context.displayName = name\n\n const useContext = () => {\n const context = React.useContext(Context)\n\n if (!context && strict) {\n const error = new Error(errorMessage)\n error.name = \"ContextError\"\n Error.captureStackTrace(error, useContext)\n throw error\n }\n\n return context\n }\n\n return [Context.Provider, useContext, Context] as CreateContextReturn<\n undefined | Y\n >\n}\n\nexport const useSafeLayoutEffect = Boolean(globalThis.document)\n ? React.useLayoutEffect\n : React.useEffect\n\nexport function useUnmountEffect(callback: () => void) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(() => () => callback(), [])\n}\n\nexport interface UseIsMountedProps {\n delay?: number\n rerender?: boolean\n}\n\nexport function useIsMounted({\n delay = 0,\n rerender = false,\n}: UseIsMountedProps = {}): [() => boolean, boolean] {\n const isMountedRef = React.useRef(false)\n const [isMounted, setIsMounted] = React.useState(false)\n\n useSafeLayoutEffect(() => {\n isMountedRef.current = true\n\n let timeoutId: any = null\n\n if (rerender) {\n if (delay > 0) {\n timeoutId = setTimeout(() => setIsMounted(true), delay)\n } else {\n setIsMounted(true)\n }\n }\n\n return () => {\n isMountedRef.current = false\n\n if (rerender) setIsMounted(false)\n\n if (timeoutId) clearTimeout(timeoutId)\n }\n }, [delay, rerender])\n\n return [React.useCallback(() => isMountedRef.current, []), isMounted]\n}\n\nexport type UseIsMountedReturn = ReturnType<typeof useIsMounted>\n\nexport function getValidChildren(\n children: React.ReactNode,\n): React.ReactElement[] {\n return React.Children.toArray(children).filter((child) =>\n React.isValidElement(child),\n )\n}\n\nexport function isValidElement(child: any): child is React.ReactNode {\n return React.isValidElement(child) || isString(child) || isNumber(child)\n}\n\nexport function isSomeElement(child: any, type: any): boolean {\n if (child.type === type) return true\n\n if (!!child.__ui__ && !!type.__ui__) {\n if (child.__ui__ === type.__ui__) return true\n }\n\n const payload = child.type._payload\n\n if (!!payload?.value?.__ui__ && !!type.__ui__) {\n if (payload?.value?.__ui__ === type.__ui__) return true\n }\n\n return false\n}\n\nexport function findChild(\n children: React.ReactElement[],\n ...types: (React.JSXElementConstructor<any> | string)[]\n): React.ReactElement | undefined {\n const child = children.find((child) =>\n types.some((type) => isSomeElement(child, type)),\n )\n\n return child\n}\n\nexport function findChildren(\n children: React.ReactElement[],\n ...types: (React.JSXElementConstructor<any> | string)[]\n): [React.ReactElement | undefined, ...React.ReactElement[]] {\n const child = children.find((child) =>\n types.some((type) => isSomeElement(child, type)),\n )\n\n if (child) {\n return children.sort((a, b) => {\n if (types.some((type) => isSomeElement(a, type))) {\n return -1\n } else if (types.some((type) => isSomeElement(b, type))) {\n return 1\n } else {\n return 0\n }\n }) as [React.ReactElement | undefined, ...React.ReactElement[]]\n } else {\n return [undefined, ...children]\n }\n}\n\nexport function includesChildren(\n children: React.ReactElement[],\n ...types: (React.JSXElementConstructor<any> | string)[]\n): boolean {\n return children.some((child) => {\n if (types.some((type) => isSomeElement(child, type))) return true\n\n const children = getValidChildren(child.props.children)\n\n return children.length ? includesChildren(children, ...types) : false\n })\n}\n\nexport function omitChildren(\n children: React.ReactElement[],\n ...types: (React.JSXElementConstructor<any> | string)[]\n): React.ReactElement[] {\n return children.filter((child) =>\n types.every((type) => !isSomeElement(child, type)),\n )\n}\n\nexport function pickChildren(\n children: React.ReactElement[],\n ...types: (React.JSXElementConstructor<any> | string)[]\n): React.ReactElement[] {\n return children.filter((child) =>\n types.every((type) => isSomeElement(child, type)),\n )\n}\n\nexport function cx(...classNames: (string | undefined)[]) {\n return classNames.filter(Boolean).join(\" \")\n}\n\ntype ReactRef<T> = React.LegacyRef<T> | React.MutableRefObject<T> | React.Ref<T>\n\nexport function isRefObject(val: any): val is { current: any } {\n return isObject(val) && \"current\" in val\n}\n\nexport function assignRef<T = any>(ref: ReactRef<T> | undefined, value: T) {\n if (ref == null) return\n\n if (typeof ref === \"function\") {\n ref(value)\n\n return\n }\n\n try {\n // @ts-ignore\n ref.current = value\n } catch {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nexport function mergeRefs<T = any>(\n ...refs: (null | ReactRef<T> | undefined)[]\n) {\n return function (node: null | T) {\n return refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport function useMergeRefs<T = any>(...refs: (ReactRef<T> | undefined)[]) {\n return React.useMemo(() => mergeRefs(...refs), [refs])\n}\n\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n callback: T | undefined,\n deps: React.DependencyList = [],\n) {\n const callbackRef = React.useRef(callback)\n\n React.useEffect(() => {\n callbackRef.current = callback\n })\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(\n ((...args) => callbackRef.current?.(...args)) as T,\n deps,\n )\n}\n\n/**\n * `useUpdateEffect` is a custom hook that skips side effects on the initial render, and only runs them when the dependency array changes.\n *\n * @see Docs https://yamada-ui.com/hooks/use-update-effect\n */\nexport function useUpdateEffect(\n callback: React.EffectCallback,\n deps: React.DependencyList,\n) {\n const renderCycleRef = React.useRef(false)\n const effectCycleRef = React.useRef(false)\n\n React.useEffect(() => {\n const mounted = renderCycleRef.current\n const run = mounted && effectCycleRef.current\n\n if (run) return callback()\n\n effectCycleRef.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n React.useEffect(() => {\n renderCycleRef.current = true\n\n return () => {\n renderCycleRef.current = false\n }\n }, [])\n}\n\nexport type FunctionReturningPromise = (...args: any[]) => Promise<any>\n\n/**\n * `useAsync` is a custom hook that executes an asynchronous function and tracks its state.\n *\n * @see Docs https://yamada-ui.com/hooks/use-async\n */\nexport function useAsync<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n) {\n const [state, callback] = useAsyncFunc(func, deps, { loading: true })\n\n React.useEffect(() => {\n callback()\n }, [callback])\n\n return state\n}\n\nexport type AsyncState<T> =\n | {\n error: Error\n loading: false\n value?: undefined\n }\n | {\n loading: boolean\n error?: undefined\n value?: undefined\n }\n | {\n loading: false\n value: T\n error?: undefined\n }\n | {\n loading: true\n error?: Error | undefined\n value?: T\n }\n\nexport type PromiseType<P extends Promise<any>> =\n P extends Promise<infer T> ? T : never\n\ntype StateFromFunctionReturningPromise<T extends FunctionReturningPromise> =\n AsyncState<PromiseType<ReturnType<T>>>\n\nexport type AsyncFnReturn<\n T extends FunctionReturningPromise = FunctionReturningPromise,\n> = [StateFromFunctionReturningPromise<T>, T]\n\nexport function useAsyncFunc<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n initialState: StateFromFunctionReturningPromise<T> = { loading: false },\n): AsyncFnReturn<T> {\n const lastCallId = React.useRef(0)\n const [isMounted] = useIsMounted()\n const [state, setState] =\n React.useState<StateFromFunctionReturningPromise<T>>(initialState)\n\n const callback = React.useCallback(\n (...args: Parameters<T>): ReturnType<T> => {\n const callId = ++lastCallId.current\n\n if (!state.loading)\n setState((prevState) => ({ ...prevState, loading: true }))\n\n return func(...args).then(\n (value) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ loading: false, value })\n\n return value\n },\n (error) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ error, loading: false })\n\n return error\n },\n ) as ReturnType<T>\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps,\n )\n\n return [state, callback as unknown as T]\n}\n\nexport type AsyncStateRetry<T> = {\n retry(): void\n} & AsyncState<T>\n\nexport function useAsyncRetry<T>(\n func: () => Promise<T>,\n deps: React.DependencyList = [],\n) {\n const [attempt, setAttempt] = React.useState<number>(0)\n const state = useAsync(func, [...deps, attempt])\n\n const stateLoading = state.loading\n\n const retry = React.useCallback(() => {\n if (stateLoading) return\n\n setAttempt((currentAttempt) => currentAttempt + 1)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...deps, stateLoading])\n\n return { ...state, retry }\n}\n\nlet createIdCounter = 0\n\nexport function createId(prefix: string) {\n return `${prefix}-${++createIdCounter}-${new Date().getTime()}`\n}\n","import type { StringLiteral } from \"./index.types\"\n\nexport function escape(value: string, replaceValue = \"\"): string {\n return value.replace(/\\s+/g, replaceValue)\n}\n\nexport function antonym(value: string): string {\n switch (value) {\n case \"top\":\n return \"bottom\"\n\n case \"bottom\":\n return \"top\"\n\n case \"left\":\n return \"right\"\n\n case \"right\":\n return \"left\"\n\n case \"start\":\n return \"end\"\n\n case \"end\":\n return \"start\"\n\n case \"x\":\n return \"y\"\n\n case \"y\":\n return \"x\"\n\n case \"enter\":\n return \"exit\"\n\n case \"exit\":\n return \"enter\"\n\n case \"vertical\":\n return \"horizontal\"\n\n case \"horizontal\":\n return \"vertical\"\n\n case \"up\":\n return \"down\"\n\n case \"down\":\n return \"up\"\n\n case \"block\":\n return \"inline\"\n\n case \"inline\":\n return \"block\"\n\n default:\n return value\n }\n}\n\nexport function toCamelCase(value: StringLiteral): string {\n return value\n .toLowerCase()\n .replace(/[_-](.)/g, (_, val) => val.toUpperCase())\n .replace(/^(.)/, (_, val) => val.toUpperCase())\n}\n\nexport function toKebabCase(value: StringLiteral): string {\n return value\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, \"$1-$2\")\n .toLowerCase()\n .replace(/^-/, \"\")\n}\n\nexport function toTitleCase(value: StringLiteral): string {\n return value\n .replace(/([A-Z])/g, \" $1\")\n .replace(/[_-](.)/g, (_, val) => ` ${val.toUpperCase()}`)\n .replace(/^./, (str) => str.toUpperCase())\n .trim()\n}\n"],"mappings":"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","names":["createContext","isValidElement","parseToHsla","parseToRgba","prev","key","isDark","hsla","rgba","parseToRgba","parseToHsla","v","module","createContext","useContext","isValidElement","child","children"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/array.ts","../src/assertion.ts","../src/calc.ts","../src/color.ts","../src/object.ts","../src/dom.ts","../src/event.ts","../src/function.ts","../src/module.ts","../src/number.ts","../src/react.tsx","../src/string.ts"],"sourcesContent":["export * from \"./array\"\nexport * from \"./assertion\"\nexport * from \"./calc\"\nexport * from \"./color\"\nexport * from \"./dom\"\nexport * from \"./event\"\nexport * from \"./function\"\nexport type * from \"./index.types\"\nexport * from \"./module\"\nexport * from \"./number\"\nexport * from \"./object\"\nexport * from \"./react\"\nexport * from \"./string\"\n","export function filterEmpty<T extends any[]>(array: T) {\n return array.filter((value) => value != null)\n}\n","import type { Dict } from \"./index.types\"\n\nexport function is(x: any, y: any) {\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport function isNotNumber(value: any): boolean {\n return (\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n )\n}\n\nexport function isNumeric(value: any): boolean {\n return (\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n )\n}\n\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\nexport function isBoolean(value: any): value is boolean {\n return typeof value === \"boolean\"\n}\n\nexport function isUndefined(value: any): value is undefined {\n return typeof value === \"undefined\"\n}\n\nexport function isNull(value: any): value is null {\n return value === null\n}\n\nexport function isObject<T extends Dict>(value: any): value is T {\n return (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n )\n}\n\nexport function isArray<T extends any[]>(value: any): value is T {\n return Array.isArray(value)\n}\n\nexport function isEmpty(value: any): boolean {\n return !isArray(value) || !value.length || value.every((v) => v == null)\n}\n\nexport function isEmptyObject(value: any): boolean {\n return isObject(value) && !Object.keys(value).length\n}\n\nexport function isFunction<T extends Function = Function>(\n value: any,\n): value is T {\n return typeof value === \"function\"\n}\n\nexport function isUnit(value: any): boolean {\n return /[0-9].*(em|rem|ex|rex|cap|rcap|ch|rch|ic|ric|lh|rlh|vw|svw|lvw|dvw|vh|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax|cm|mm|Q|in|pc|pt|px|%|cqw|cqh|cqi|cqb|cqmin|cqmax)$/.test(\n value,\n )\n}\n\nexport function cast<T>(value: any) {\n return value as T\n}\n","type Operator = \"*\" | \"+\" | \"/\" | \"-\"\n\nexport type Operand = number | string\n\nfunction toExpression(operator: Operator, ...args: Operand[]) {\n return args.join(` ${operator} `).replace(/calc/g, \"\")\n}\n\nfunction add(...args: Operand[]) {\n return `calc(${toExpression(\"+\", ...args)})`\n}\n\nfunction subtract(...args: Operand[]) {\n return `calc(${toExpression(\"-\", ...args)})`\n}\n\nfunction multiply(...args: Operand[]) {\n return `calc(${toExpression(\"*\", ...args)})`\n}\n\nfunction divide(...args: Operand[]) {\n return `calc(${toExpression(\"/\", ...args)})`\n}\n\nfunction negate(value: Operand) {\n if (!isNaN(parseFloat(value.toString())))\n return String(value).startsWith(\"-\") ? String(value).slice(1) : `-${value}`\n\n return multiply(value, -1)\n}\n\ninterface Calc {\n add: (...args: Operand[]) => Calc\n divide: (...args: Operand[]) => Calc\n multiply: (...args: Operand[]) => Calc\n negate: () => Calc\n subtract: (...args: Operand[]) => Calc\n toString: () => string\n}\n\nexport const calc = Object.assign(\n (x: Operand): Calc => ({\n add: (...args) => calc(add(x, ...args)),\n divide: (...args) => calc(divide(x, ...args)),\n multiply: (...args) => calc(multiply(x, ...args)),\n negate: () => calc(negate(x)),\n subtract: (...args) => calc(subtract(x, ...args)),\n toString: () => x.toString(),\n }),\n {\n add,\n divide,\n multiply,\n negate,\n subtract,\n },\n)\n","import type { Dict, StringLiteral } from \"./index.types\"\nimport * as c from \"color2k\"\nimport { isArray, isNumber, isObject } from \"./assertion\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ThemeValue = number | string\ntype Breakpoint = \"base\" | StringLiteral\ntype ColorMode = \"dark\" | \"light\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"hsl\" | \"hsla\" | \"rgb\" | \"rgba\"\n\nexport const SEMANTIC_COLOR_SCHEMES = [\n \"primary\",\n \"secondary\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"link\",\n] as const\n\nexport const COLOR_SCHEMES = [\n \"gray\",\n \"neutral\",\n \"red\",\n \"rose\",\n \"pink\",\n \"flashy\",\n \"orange\",\n \"amber\",\n \"yellow\",\n \"lime\",\n \"green\",\n \"emerald\",\n \"teal\",\n \"cyan\",\n \"sky\",\n \"blue\",\n \"indigo\",\n \"violet\",\n \"purple\",\n \"fuchsia\",\n] as const\n\nexport type SemanticColorScheme =\n | (typeof SEMANTIC_COLOR_SCHEMES)[number]\n | StringLiteral\nexport type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport function isGray(colorScheme: string) {\n return colorScheme === \"gray\" || colorScheme === \"neutral\"\n}\n\nexport function isAccessible(colorScheme: string) {\n return (\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n )\n}\n\nexport function getColor(color: string, fallback = \"#000000\") {\n return function (\n theme: Dict = {},\n colorMode: ColorMode = \"light\",\n breakpoint: Breakpoint = \"base\",\n ) {\n const [token, tone] = color.split(\".\")\n\n if (tone) {\n const [, relatedToken] =\n Object.entries<string>(theme.semantics?.colorSchemes ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedToken) color = `${relatedToken}.${tone}`\n } else {\n const [, relatedColor] =\n Object.entries<string>(theme.semantics?.colors ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedColor) color = relatedColor\n }\n\n const hex = get<[ThemeValue, ThemeValue] | Dict<ThemeValue> | ThemeValue>(\n theme,\n `colors.${color}`,\n color,\n )\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(hex[colorMode !== \"dark\" ? 0 : 1]))\n } else if (isObject(hex)) {\n return c.toHex(String(hex[breakpoint]))\n } else {\n return c.toHex(String(hex))\n }\n } catch {\n try {\n return c.toHex(fallback)\n } catch {\n return \"#000000\"\n }\n }\n }\n}\n\nexport function lightenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n}\n\nexport function darkenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n}\n\nexport function tintColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n}\n\nexport function shadeColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n}\n\nexport function transparentizeColor(color: string, alpha: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.transparentize(raw, 1 - alpha)\n }\n}\n\nexport function randomColor({\n colors,\n string,\n}: { colors?: string[]; string?: string } = {}) {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors) ?? fallback\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors) ?? fallback\n\n return fallback\n}\n\nfunction randomHex() {\n return `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n}\n\nfunction randomColorFromString(str: string) {\n let hash = 0\n\n if (str.length === 0) return hash.toString()\n\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n hash = hash & hash\n }\n\n let color = \"#\"\n\n for (let j = 0; j < 3; j += 1) {\n const value = (hash >> (j * 8)) & 255\n\n color += `00${value.toString(16)}`.substr(-2)\n }\n\n return color\n}\n\nfunction randomColorFromList(str: string, list: string[]) {\n let index = 0\n\n if (str.length === 0) return list[0]\n\n for (let i = 0; i < str.length; i += 1) {\n index = str.charCodeAt(i) + ((index << 5) - index)\n\n index = index & index\n }\n\n index = ((index % list.length) + list.length) % list.length\n\n return list[index]\n}\n\nfunction randomFromList(list: string[]) {\n return list[Math.floor(Math.random() * list.length)]\n}\n\nfunction getBrightness(color: string) {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport function isTone(color: string) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n}\n\nexport function isLight(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"dark\"\n }\n}\n\nexport function isDark(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"light\"\n }\n}\n\nexport function convertColor(color: string, fallback?: string) {\n return function (format: ColorFormat): string | undefined {\n try {\n const isAlpha = format.endsWith(\"a\")\n\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n if (format.startsWith(\"hex\")) {\n let hexa = c.toHex(color)\n\n if (isAlpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, \"\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!isAlpha) {\n hsla = hsla.replace(/hsla/, \"hsl\")\n hsla = hsla.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return hsla\n } else {\n let rgba = c.toRgba(color)\n\n if (!isAlpha) {\n rgba = rgba.replace(/rgba/, \"rgb\")\n rgba = rgba.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return rgba\n }\n } catch {\n if (fallback) return convertColor(fallback)(format)\n }\n }\n}\n\nexport function calcFormat(color: string): ColorFormat {\n if (color.startsWith(\"hsl\")) {\n return color.startsWith(\"hsla\") ? \"hsla\" : \"hsl\"\n } else if (color.startsWith(\"rgb\")) {\n return color.startsWith(\"rgba\") ? \"rgba\" : \"rgb\"\n } else {\n return color.length === 9 ? \"hexa\" : \"hex\"\n }\n}\n\nexport function getAlpha(color: string) {\n return c.parseToRgba(color)[3]\n}\n\nexport function alphaToHex(a: number) {\n if (0 > a) a = 0\n if (1 < a) a = 1\n\n return Math.round(a * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nexport function parseToRgba(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToRgba(color)\n } catch {\n if (fallback) return c.parseToRgba(fallback)\n }\n}\n\nexport function parseToHsla(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToHsla(color)\n } catch {\n if (fallback) return c.parseToHsla(fallback)\n }\n}\n\nexport function parseToHsv(\n color: string,\n fallback?: string,\n): [number, number, number, number] {\n let [r, g, b, a] = parseToRgba(color, fallback) ?? [255, 255, 255, 1]\n\n r = r / 255\n g = g / 255\n b = b / 255\n\n const [min, max] = [Math.min(r, g, b), Math.max(r, g, b)]\n const delta = max - min\n\n let [h, v, s] = [0, max, max == 0 ? 0 : delta / max]\n\n switch (min) {\n case max:\n h = 0\n break\n\n case r:\n h = 60 * ((b - g) / delta) + 180\n break\n\n case g:\n h = 60 * ((r - b) / delta) + 300\n break\n\n case b:\n h = 60 * ((g - r) / delta) + 60\n break\n }\n\n return [h, s, v, a]\n}\n\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.rgba(r, g, b, a), fallback)(format)\n }\n}\n\nexport function hslaTo(\n [h, s, l, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.hsla(h, s, l, a), fallback)(format)\n }\n}\n\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\"): string | undefined {\n h = h / 60\n\n let rgb: [number, number, number] = [v, v, v]\n\n let i = Math.floor(h)\n let f = h - i\n let p = v * (1 - s)\n let q = v * (1 - s * f)\n let t = v * (1 - s * (1 - f))\n\n switch (i) {\n case 0:\n case 6:\n rgb = [v, t, p]\n break\n\n case 1:\n rgb = [q, v, p]\n break\n\n case 2:\n rgb = [p, v, t]\n break\n\n case 3:\n rgb = [p, q, v]\n break\n\n case 4:\n rgb = [t, p, v]\n break\n\n case 5:\n rgb = [v, p, q]\n break\n }\n\n let color = `rgb(${rgb.map((v) => Math.round(v * 255)).join(\", \")})`\n\n if (isNumber(a)) color = color.replace(/\\)$/, `, ${a})`)\n\n return convertColor(color, fallback)(format)\n }\n}\n\nexport function sameColor(\n color: string | undefined,\n comparison: string | undefined,\n) {\n if (!color) return false\n if (!comparison) return false\n\n const a = parseToRgba(color) ?? []\n const b = parseToRgba(comparison) ?? []\n\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]\n}\n","import type { Dict } from \"./index.types\"\nimport {\n isArray,\n isFunction,\n isObject,\n isString,\n isUndefined,\n} from \"./assertion\"\n\nfunction omitObjectHelper<Y extends Dict, M extends keyof Y>(\n obj: Y,\n path: M[] | readonly M[],\n): any {\n if (!path.length) return obj\n\n const [primaryKey, ...restKeys] = path\n\n if (restKeys.length === 0 && primaryKey && primaryKey in obj) {\n const { [primaryKey]: _, ...rest } = obj\n\n return rest\n }\n\n if (primaryKey && obj[primaryKey] && isObject(obj[primaryKey])) {\n return {\n ...obj,\n [primaryKey]: omitObjectHelper(obj[primaryKey], restKeys),\n }\n }\n\n return obj\n}\n\nexport function omitObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[]) {\n return (keys as M[]).reduce((prev, key) => {\n const path = (isString(key) ? key.split(\".\") : []) as M[]\n\n return omitObjectHelper(prev, path)\n }, obj) as unknown as D extends unknown ? Omit<Y, M> : D\n}\n\nexport function pickObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[], fallbackValue = \"__fallback\") {\n return (keys as M[]).reduce((prev, key) => {\n const path = isString(key) ? key.split(\".\") : []\n\n if (!path.length) return prev\n\n const value = getMemoizedObject(obj, key as string, fallbackValue)\n\n if (value === fallbackValue) return prev\n\n prev = merge(\n prev,\n path.reduceRight(\n (prev, key) => ({ [key]: key === path.at(-1) ? value : prev }),\n {},\n ),\n )\n\n return prev\n }, {}) as D extends unknown ? { [H in M]: Y[H] } : D\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (keys.includes(key as Y[M])) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [P in M]: Y[P] }, Omit<Y, M>]\n}\n\nexport function filterObject<Y extends Dict, M extends Dict>(\n obj: Y,\n func: (key: keyof Y, value: Y[keyof Y], obj: Y) => boolean,\n): M {\n const result: Dict = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const shouldPass = func(key, value, obj)\n\n if (shouldPass) result[key] = value\n })\n\n return result as M\n}\n\nexport function filterUndefined<Y extends Dict>(obj: Y): Y {\n return filterObject(obj, (_, val) => val !== null && val !== undefined)\n}\n\nexport function merge<Y extends Dict>(\n target: any,\n source: any,\n mergeArray = false,\n): Y {\n let result = Object.assign({}, target)\n\n if (isObject(source)) {\n if (isObject(target)) {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n const targetValue: any = target[sourceKey]\n\n if (mergeArray && isArray(sourceValue) && isArray(targetValue)) {\n result[sourceKey] = targetValue.concat(...sourceValue)\n } else if (\n !isFunction(sourceValue) &&\n isObject(sourceValue) &&\n target.hasOwnProperty(sourceKey)\n ) {\n result[sourceKey] = merge(targetValue, sourceValue, mergeArray)\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\n }\n } else {\n result = source\n }\n }\n\n return result as Y\n}\n\nexport interface FlattenObjectOptions {\n maxDepth?: number\n omitKeys?: string[]\n separator?: string\n shouldProcess?: (obj: any) => boolean\n}\n\nexport function flattenObject<Y extends Dict>(\n obj: any,\n { maxDepth, omitKeys, separator, shouldProcess }: FlattenObjectOptions = {},\n): Y {\n maxDepth ??= Infinity\n omitKeys ??= []\n separator ??= \".\"\n\n if ((!isObject(obj) && !isArray(obj)) || !maxDepth) return obj\n\n return Object.entries(obj).reduce<any>((result, [key, value]) => {\n if (\n isObject(value) &&\n !Object.keys(value).some((key) => omitKeys.includes(key)) &&\n (!shouldProcess || shouldProcess(value))\n ) {\n Object.entries(\n flattenObject(value, {\n maxDepth: maxDepth - 1,\n omitKeys,\n separator,\n shouldProcess,\n }),\n ).forEach(([childKey, childValue]) => {\n result[`${key}${separator}${childKey}`] = childValue\n })\n } else {\n result[key] = value\n }\n\n return result\n }, {}) as Y\n}\n\nexport function objectFromEntries<Y extends Dict>(entries: any[][]): Y {\n return entries.reduce<any>((result, [key, value]) => {\n result[key] = value\n\n return result\n }, {}) as Y\n}\n\nexport function keysFormObject<Y extends object>(obj: Y): (keyof Y)[] {\n return Object.keys(obj) as (keyof Y)[]\n}\n\nexport function replaceObject<Y = any>(\n objOrArray: Y,\n callBack: (value: any) => any,\n): Y {\n if (isArray(objOrArray)) {\n return objOrArray.map(callBack) as Y\n } else if (isObject(objOrArray)) {\n return Object.entries(objOrArray).reduce<Dict>((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {}) as Y\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport function getObject(\n obj: Dict | undefined,\n path: number | string,\n fallback?: any,\n i?: number,\n) {\n const keys = isString(path)\n ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean)\n : [path]\n\n for (i = 0; i < keys.length; i += 1) {\n if (!obj) break\n\n const key = keys[i]\n\n obj = key ? obj[key] : undefined\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport function memoizeObject(func: typeof getObject) {\n const cache = new WeakMap()\n\n function memoizedFunc<Y>(\n obj: Dict,\n path: number | string,\n fallback?: any,\n i?: number,\n ): Y {\n if (isUndefined(obj)) return func(obj, path, fallback)\n\n if (!cache.has(obj)) cache.set(obj, new Map())\n\n const map = cache.get(obj)\n\n if (map.has(path)) return map.get(path)\n\n const value = func(obj, path, fallback, i)\n\n map.set(path, value)\n\n return value as Y\n }\n\n return memoizedFunc\n}\n\nexport const getMemoizedObject = memoizeObject(getObject)\n\nexport function assignAfter(target: { [key: string]: any }, ...sources: any[]) {\n const result: { [key: string]: unknown } = { ...target }\n\n for (const nextSource of sources) {\n if (nextSource == null) continue\n\n for (const nextKey in nextSource) {\n if (!Object.prototype.hasOwnProperty.call(nextSource, nextKey)) continue\n\n if (nextKey in result) delete result[nextKey]\n\n result[nextKey] = nextSource[nextKey]\n }\n }\n\n return result\n}\n","import type React from \"react\"\nimport { isNumber, isUndefined } from \"./assertion\"\n\nexport function createdDom(): boolean {\n return !!(\n typeof window !== \"undefined\" &&\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n window.document?.createElement\n )\n}\n\nexport function getPlatform(): string {\n return (navigator as any).userAgentData?.platform ?? navigator.platform\n}\n\nexport function vendor(v: RegExp): boolean {\n return createdDom() && v.test(navigator.vendor)\n}\n\nexport function platform(v: RegExp): boolean {\n return createdDom() && v.test(getPlatform())\n}\n\nexport function isMac(): boolean {\n return platform(/^mac/i)\n}\n\nexport function isApple(): boolean {\n return platform(/mac|iphone|ipad|ipod/i)\n}\n\nexport function isSafari(): boolean {\n return isApple() && vendor(/apple/i)\n}\n\nexport function isElement(el: any): el is Element {\n return (\n el != null &&\n typeof el == \"object\" &&\n \"nodeType\" in el &&\n el.nodeType === Node.ELEMENT_NODE\n )\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n if (!isElement(el)) return false\n\n const win = el.ownerDocument.defaultView ?? window\n\n return el instanceof win.HTMLElement\n}\n\nexport function isHidden(el: HTMLElement): boolean {\n if (el.parentElement && isHidden(el.parentElement)) return true\n\n return el.hidden\n}\n\nexport function isDisabled(el: HTMLElement): boolean {\n return (\n Boolean(el.getAttribute(\"disabled\")) ||\n Boolean(el.getAttribute(\"data-disabled\")) ||\n Boolean(el.getAttribute(\"aria-disabled\"))\n )\n}\n\nfunction isVisible(el: HTMLElement) {\n return el.offsetWidth > 0 && el.offsetHeight > 0\n}\n\nexport function hasTabIndex(el: HTMLElement): boolean {\n return el.hasAttribute(\"tabindex\")\n}\n\nexport function isContentEditable(el: HTMLElement): boolean {\n const value = el.getAttribute(\"contenteditable\")\n\n return value !== \"false\" && value != null\n}\n\nexport function isContains(\n parent: HTMLElement | null,\n child: HTMLElement | null,\n): boolean | undefined {\n return parent === child || parent?.contains(child)\n}\n\nexport function getPx(value: number | string | undefined): number {\n if (isNumber(value)) return value\n\n if (isUndefined(value)) return 0\n\n if (value.includes(\"px\")) return parseFloat(value)\n\n const isBrowser = createdDom()\n let fontSize = 16\n\n if (isBrowser) {\n const style = window.getComputedStyle(document.documentElement)\n\n const computedFontSize = parseFloat(style.fontSize)\n\n if (!isNaN(computedFontSize)) fontSize = computedFontSize\n }\n\n return parseFloat(value) * fontSize\n}\n\nexport function getEventRelatedTarget(ev: React.FocusEvent | React.MouseEvent) {\n return (ev.relatedTarget ??\n ev.currentTarget.ownerDocument.activeElement) as HTMLElement | null\n}\n\ntype Booleanish = \"false\" | \"true\" | boolean\n\nexport function dataAttr(condition: boolean | undefined) {\n return (condition ? \"\" : undefined) as Booleanish\n}\n\nexport function ariaAttr(condition: boolean | undefined): boolean | undefined {\n return condition ? true : undefined\n}\n\nexport interface FocusableElement {\n focus: (options?: FocusOptions) => void\n}\n\nconst focusableElList = [\n \"input:not(:disabled):not([disabled])\",\n \"select:not(:disabled):not([disabled])\",\n \"textarea:not(:disabled):not([disabled])\",\n \"embed\",\n \"iframe\",\n \"object\",\n \"a[href]\",\n \"area[href]\",\n \"button:not(:disabled):not([disabled])\",\n \"[tabindex]\",\n \"audio[controls]\",\n \"video[controls]\",\n \"*[tabindex]:not([aria-disabled])\",\n \"*[contenteditable]\",\n]\n\nconst focusableElSelector: string = focusableElList.join()\n\nexport function getAllFocusable<T extends HTMLElement>(container: T): T[] {\n const focusableEls: T[] = Array.from(\n container.querySelectorAll<T>(focusableElSelector),\n )\n\n focusableEls.unshift(container)\n\n return focusableEls.filter((el) => isFocusable(el) && isVisible(el))\n}\n\nexport function isFocusable(el: HTMLElement): boolean {\n if (!isHTMLElement(el) || isHidden(el) || isDisabled(el)) {\n return false\n }\n\n const { localName } = el\n const focusableTags = [\"input\", \"select\", \"textarea\", \"button\"]\n\n if (focusableTags.includes(localName)) return true\n\n const others = {\n a: () => el.hasAttribute(\"href\"),\n audio: () => el.hasAttribute(\"controls\"),\n video: () => el.hasAttribute(\"controls\"),\n }\n\n if (localName in others) return others[localName as keyof typeof others]()\n\n if (isContentEditable(el)) return true\n\n return hasTabIndex(el)\n}\n\nexport function hasNegativeTabIndex(el: HTMLElement): boolean {\n return hasTabIndex(el) && el.tabIndex === -1\n}\n\nexport function isTabbable(el?: HTMLElement | null): boolean {\n return el\n ? isHTMLElement(el) && isFocusable(el) && !hasNegativeTabIndex(el)\n : false\n}\n\nexport function isTouchDevice(): boolean {\n return \"ontouchstart\" in window\n}\n\nexport function getOwnerWindow(\n node?: Element | null,\n): typeof globalThis & Window {\n return getOwnerDocument(node).defaultView ?? window\n}\n\nexport function getOwnerDocument(el?: Element | null): Document {\n return isElement(el) ? el.ownerDocument : document\n}\n\nexport function getActiveElement(el?: HTMLElement): HTMLElement | null {\n return getOwnerDocument(el).activeElement as HTMLElement | null\n}\n\nexport function isActiveElement(el: HTMLElement): boolean {\n return getActiveElement(el) === el\n}\n","export type AnyPointerEvent = MouseEvent | PointerEvent | TouchEvent\n\nexport type PointType = \"client\" | \"page\"\n\nexport interface Point {\n x: number\n y: number\n}\n\nexport interface PointerEventInfo {\n point: Point\n}\n\nexport type MixedEventListener = (\n e: AnyPointerEvent,\n info: PointerEventInfo,\n) => void\n\nexport function isMouseEvent(ev: any): ev is MouseEvent {\n const win = getEventWindow(ev)\n\n if (typeof win.PointerEvent !== \"undefined\" && ev instanceof win.PointerEvent)\n return !!(ev.pointerType === \"mouse\")\n\n return ev instanceof win.MouseEvent\n}\n\nexport function isTouchEvent(ev: AnyPointerEvent): ev is TouchEvent {\n return !!(ev as TouchEvent).touches\n}\n\nexport function isMultiTouchEvent(ev: AnyPointerEvent) {\n return isTouchEvent(ev) && ev.touches.length > 1\n}\n\nexport function getEventWindow(ev: Event): typeof globalThis {\n return ((ev as UIEvent).view ?? window) as unknown as typeof globalThis\n}\n\nexport function pointFromTouch(e: TouchEvent, type: PointType = \"page\") {\n const point = e.touches[0] || e.changedTouches[0]\n\n return { x: point?.[`${type}X`] ?? 0, y: point?.[`${type}Y`] ?? 0 }\n}\n\nexport function pointFromMouse(\n point: MouseEvent | PointerEvent,\n type: PointType = \"page\",\n) {\n return {\n x: point[`${type}X`],\n y: point[`${type}Y`],\n }\n}\n\nexport function getEventPoint(ev: AnyPointerEvent, type: PointType = \"page\") {\n return isTouchEvent(ev) ? pointFromTouch(ev, type) : pointFromMouse(ev, type)\n}\n\nexport function addDomEvent(\n target: EventTarget,\n type: string,\n cb: EventListener,\n options?: AddEventListenerOptions,\n) {\n target.addEventListener(type, cb, options)\n\n return () => {\n target.removeEventListener(type, cb, options)\n }\n}\n\nfunction filter(cb: EventListener): EventListener {\n return function (ev: Event) {\n const isMouse = isMouseEvent(ev)\n\n if (!isMouse || ev.button === 0) cb(ev)\n }\n}\n\nfunction wrap(cb: MixedEventListener, filterPrimary = false): EventListener {\n function listener(ev: any) {\n return cb(ev, { point: getEventPoint(ev) })\n }\n\n const fn = filterPrimary ? filter(listener) : listener\n\n return fn as EventListener\n}\n\nexport function addPointerEvent(\n target: EventTarget,\n type: string,\n cb: MixedEventListener,\n options?: AddEventListenerOptions,\n) {\n return addDomEvent(target, type, wrap(cb, type === \"pointerdown\"), options)\n}\n","import { isFunction } from \"./assertion\"\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const noop = () => {}\n\nexport function runIfFunc<T, U extends any[]>(\n valOrFunc: ((...funcArgs: U) => T) | T,\n ...args: U\n): T {\n return isFunction(valOrFunc) ? valOrFunc(...args) : valOrFunc\n}\n\nexport function handlerAll<T extends (event: any, ...args: any[]) => void>(\n ...funcs: (T | undefined)[]\n) {\n return function (\n event: T extends (event: infer R, ...args: any[]) => any ? R : never,\n ...args: T extends (event: any, ...args: infer R) => any ? R : never\n ) {\n funcs.some((func) => {\n func?.(event, ...args)\n\n return event?.defaultPrevented\n })\n }\n}\n\nexport function funcAll<T extends (...args: any[]) => any>(\n ...funcs: (T | undefined)[]\n) {\n return function (...args: T extends (...args: infer R) => any ? R : never) {\n return funcs.forEach((func) => func?.(...args))\n }\n}\n","export function interopDefault<T>(module: T): T {\n return (module as { default: T }).default || module\n}\n","export function toNumber(n: any): number {\n const num = parseFloat(n)\n\n return typeof num !== \"number\" || Number.isNaN(num) ? 0 : num\n}\n\nexport function toPrecision(n: number, precision?: number): string {\n n = toNumber(n)\n\n const scale = 10 ** (precision ?? 10)\n\n n = Math.round(n * scale) / scale\n\n return precision ? n.toFixed(precision) : n.toString()\n}\n\nexport function countDecimal(n: number): number {\n if (!Number.isFinite(n)) return 0\n\n let e = 1\n let p = 0\n\n while (Math.round(n * e) / e !== n) {\n e *= 10\n p += 1\n }\n\n return p\n}\n\nexport function roundNumberToStep(n: number, from: number, step: number) {\n const nextValue = Math.round((n - from) / step) * step + from\n\n const precision = countDecimal(step)\n\n return toPrecision(nextValue, precision)\n}\n\nexport function valueToPercent(n: number, min: number, max: number): number {\n return ((n - min) * 100) / (max - min)\n}\n\nexport function percentToValue(n: number, min: number, max: number) {\n return (max - min) * n + min\n}\n\nexport function clampNumber(n: number, min: number, max: number): number {\n return Math.min(Math.max(n, min), max)\n}\n","import * as React from \"react\"\nimport { isNumber, isObject, isString } from \"./assertion\"\n\nexport type MaybeRenderProp<Y> =\n | ((props: Y) => React.ReactNode)\n | React.ReactNode\n\ninterface Options<Y = any> {\n name?: string\n defaultValue?: Y\n errorMessage?: string\n strict?: boolean\n}\n\ntype CreateContextReturn<Y> = [React.Provider<Y>, () => Y, React.Context<Y>]\n\nexport function createContext<Y = any>(options: {\n name?: string\n defaultValue?: Y\n errorMessage?: string\n strict?: true\n}): CreateContextReturn<Y>\n\nexport function createContext<Y = any>(options: {\n name?: string\n defaultValue?: Y\n errorMessage?: string\n strict?: false\n}): CreateContextReturn<undefined | Y>\n\nexport function createContext<Y = any>({\n name,\n defaultValue,\n errorMessage = \"useContext: `context` is undefined. Seems you forgot to wrap component within the Provider\",\n strict = true,\n}: Options<Y> = {}) {\n const Context = React.createContext<undefined | Y>(defaultValue)\n\n Context.displayName = name\n\n const useContext = () => {\n const context = React.useContext(Context)\n\n if (!context && strict) {\n const error = new Error(errorMessage)\n error.name = \"ContextError\"\n Error.captureStackTrace(error, useContext)\n throw error\n }\n\n return context\n }\n\n return [Context.Provider, useContext, Context] as CreateContextReturn<\n undefined | Y\n >\n}\n\nexport const useSafeLayoutEffect = Boolean(globalThis.document)\n ? React.useLayoutEffect\n : React.useEffect\n\nexport function useUnmountEffect(callback: () => void) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(() => () => callback(), [])\n}\n\nexport interface UseIsMountedProps {\n delay?: number\n rerender?: boolean\n}\n\nexport function useIsMounted({\n delay = 0,\n rerender = false,\n}: UseIsMountedProps = {}): [() => boolean, boolean] {\n const isMountedRef = React.useRef(false)\n const [isMounted, setIsMounted] = React.useState(false)\n\n useSafeLayoutEffect(() => {\n isMountedRef.current = true\n\n let timeoutId: any = null\n\n if (rerender) {\n if (delay > 0) {\n timeoutId = setTimeout(() => setIsMounted(true), delay)\n } else {\n setIsMounted(true)\n }\n }\n\n return () => {\n isMountedRef.current = false\n\n if (rerender) setIsMounted(false)\n\n if (timeoutId) clearTimeout(timeoutId)\n }\n }, [delay, rerender])\n\n return [React.useCallback(() => isMountedRef.current, []), isMounted]\n}\n\nexport type UseIsMountedReturn = ReturnType<typeof useIsMounted>\n\nexport function getValidChildren(\n children: React.ReactNode,\n): React.ReactElement[] {\n return React.Children.toArray(children).filter((child) =>\n React.isValidElement(child),\n )\n}\n\nexport function isValidElement(child: any): child is React.ReactNode {\n return React.isValidElement(child) || isString(child) || isNumber(child)\n}\n\nexport function isSomeElement(child: any, type: any): boolean {\n if (child.type === type) return true\n\n if (!!child.__ui__ && !!type.__ui__) {\n if (child.__ui__ === type.__ui__) return true\n }\n\n const payload = child.type._payload\n\n if (!!payload?.value?.__ui__ && !!type.__ui__) {\n if (payload?.value?.__ui__ === type.__ui__) return true\n }\n\n return false\n}\n\nexport function findChild(\n children: React.ReactElement[],\n ...types: (React.JSXElementConstructor<any> | string)[]\n): React.ReactElement | undefined {\n const child = children.find((child) =>\n types.some((type) => isSomeElement(child, type)),\n )\n\n return child\n}\n\nexport function findChildren(\n children: React.ReactElement[],\n ...types: (React.JSXElementConstructor<any> | string)[]\n): [React.ReactElement | undefined, ...React.ReactElement[]] {\n const child = children.find((child) =>\n types.some((type) => isSomeElement(child, type)),\n )\n\n if (child) {\n return children.sort((a, b) => {\n if (types.some((type) => isSomeElement(a, type))) {\n return -1\n } else if (types.some((type) => isSomeElement(b, type))) {\n return 1\n } else {\n return 0\n }\n }) as [React.ReactElement | undefined, ...React.ReactElement[]]\n } else {\n return [undefined, ...children]\n }\n}\n\nexport function includesChildren(\n children: React.ReactElement[],\n ...types: (React.JSXElementConstructor<any> | string)[]\n): boolean {\n return children.some((child) => {\n if (types.some((type) => isSomeElement(child, type))) return true\n\n const children = getValidChildren(child.props.children)\n\n return children.length ? includesChildren(children, ...types) : false\n })\n}\n\nexport function omitChildren(\n children: React.ReactElement[],\n ...types: (React.JSXElementConstructor<any> | string)[]\n): React.ReactElement[] {\n return children.filter((child) =>\n types.every((type) => !isSomeElement(child, type)),\n )\n}\n\nexport function pickChildren(\n children: React.ReactElement[],\n ...types: (React.JSXElementConstructor<any> | string)[]\n): React.ReactElement[] {\n return children.filter((child) =>\n types.every((type) => isSomeElement(child, type)),\n )\n}\n\nexport function cx(...classNames: (string | undefined)[]) {\n return classNames.filter(Boolean).join(\" \")\n}\n\ntype ReactRef<T> = React.LegacyRef<T> | React.MutableRefObject<T> | React.Ref<T>\n\nexport function isRefObject(val: any): val is { current: any } {\n return isObject(val) && \"current\" in val\n}\n\nexport function assignRef<T = any>(ref: ReactRef<T> | undefined, value: T) {\n if (ref == null) return\n\n if (typeof ref === \"function\") {\n ref(value)\n\n return\n }\n\n try {\n // @ts-ignore\n ref.current = value\n } catch {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nexport function mergeRefs<T = any>(\n ...refs: (null | ReactRef<T> | undefined)[]\n) {\n return function (node: null | T) {\n return refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport function useMergeRefs<T = any>(...refs: (ReactRef<T> | undefined)[]) {\n return React.useMemo(() => mergeRefs(...refs), [refs])\n}\n\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n callback: T | undefined,\n deps: React.DependencyList = [],\n) {\n const callbackRef = React.useRef(callback)\n\n React.useEffect(() => {\n callbackRef.current = callback\n })\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(\n ((...args) => callbackRef.current?.(...args)) as T,\n deps,\n )\n}\n\n/**\n * `useUpdateEffect` is a custom hook that skips side effects on the initial render, and only runs them when the dependency array changes.\n *\n * @see Docs https://yamada-ui.com/hooks/use-update-effect\n */\nexport function useUpdateEffect(\n callback: React.EffectCallback,\n deps: React.DependencyList,\n) {\n const renderCycleRef = React.useRef(false)\n const effectCycleRef = React.useRef(false)\n\n React.useEffect(() => {\n const mounted = renderCycleRef.current\n const run = mounted && effectCycleRef.current\n\n if (run) return callback()\n\n effectCycleRef.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n React.useEffect(() => {\n renderCycleRef.current = true\n\n return () => {\n renderCycleRef.current = false\n }\n }, [])\n}\n\nexport type FunctionReturningPromise = (...args: any[]) => Promise<any>\n\n/**\n * `useAsync` is a custom hook that executes an asynchronous function and tracks its state.\n *\n * @see Docs https://yamada-ui.com/hooks/use-async\n */\nexport function useAsync<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n) {\n const [state, callback] = useAsyncFunc(func, deps, { loading: true })\n\n React.useEffect(() => {\n callback()\n }, [callback])\n\n return state\n}\n\nexport type AsyncState<T> =\n | {\n error: Error\n loading: false\n value?: undefined\n }\n | {\n loading: boolean\n error?: undefined\n value?: undefined\n }\n | {\n loading: false\n value: T\n error?: undefined\n }\n | {\n loading: true\n error?: Error | undefined\n value?: T\n }\n\nexport type PromiseType<P extends Promise<any>> =\n P extends Promise<infer T> ? T : never\n\ntype StateFromFunctionReturningPromise<T extends FunctionReturningPromise> =\n AsyncState<PromiseType<ReturnType<T>>>\n\nexport type AsyncFnReturn<\n T extends FunctionReturningPromise = FunctionReturningPromise,\n> = [StateFromFunctionReturningPromise<T>, T]\n\nexport function useAsyncFunc<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n initialState: StateFromFunctionReturningPromise<T> = { loading: false },\n): AsyncFnReturn<T> {\n const lastCallId = React.useRef(0)\n const [isMounted] = useIsMounted()\n const [state, setState] =\n React.useState<StateFromFunctionReturningPromise<T>>(initialState)\n\n const callback = React.useCallback(\n (...args: Parameters<T>): ReturnType<T> => {\n const callId = ++lastCallId.current\n\n if (!state.loading)\n setState((prevState) => ({ ...prevState, loading: true }))\n\n return func(...args).then(\n (value) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ loading: false, value })\n\n return value\n },\n (error) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ error, loading: false })\n\n return error\n },\n ) as ReturnType<T>\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps,\n )\n\n return [state, callback as unknown as T]\n}\n\nexport type AsyncStateRetry<T> = {\n retry(): void\n} & AsyncState<T>\n\nexport function useAsyncRetry<T>(\n func: () => Promise<T>,\n deps: React.DependencyList = [],\n) {\n const [attempt, setAttempt] = React.useState<number>(0)\n const state = useAsync(func, [...deps, attempt])\n\n const stateLoading = state.loading\n\n const retry = React.useCallback(() => {\n if (stateLoading) return\n\n setAttempt((currentAttempt) => currentAttempt + 1)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...deps, stateLoading])\n\n return { ...state, retry }\n}\n\nlet createIdCounter = 0\n\nexport function createId(prefix: string) {\n return `${prefix}-${++createIdCounter}-${new Date().getTime()}`\n}\n","import type { StringLiteral } from \"./index.types\"\n\nexport function escape(value: string, replaceValue = \"\"): string {\n return value.replace(/\\s+/g, replaceValue)\n}\n\nexport function antonym(value: string): string {\n switch (value) {\n case \"top\":\n return \"bottom\"\n\n case \"bottom\":\n return \"top\"\n\n case \"left\":\n return \"right\"\n\n case \"right\":\n return \"left\"\n\n case \"start\":\n return \"end\"\n\n case \"end\":\n return \"start\"\n\n case \"x\":\n return \"y\"\n\n case \"y\":\n return \"x\"\n\n case \"enter\":\n return \"exit\"\n\n case \"exit\":\n return \"enter\"\n\n case \"vertical\":\n return \"horizontal\"\n\n case \"horizontal\":\n return \"vertical\"\n\n case \"up\":\n return \"down\"\n\n case \"down\":\n return \"up\"\n\n case \"block\":\n return \"inline\"\n\n case \"inline\":\n return \"block\"\n\n default:\n return value\n }\n}\n\nexport function toCamelCase(value: StringLiteral): string {\n return value.toLowerCase().replace(/[_-](.)/g, (_, val) => val.toUpperCase())\n}\n\nexport function toPascalCase(value: StringLiteral): string {\n return toCamelCase(value).replace(/^(.)/, (_, val) => val.toUpperCase())\n}\n\nexport function toKebabCase(value: StringLiteral): string {\n return value\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, \"$1-$2\")\n .toLowerCase()\n .replace(/^-/, \"\")\n}\n\nexport function toTitleCase(value: StringLiteral): string {\n return value\n .replace(/([A-Z])/g, \" $1\")\n .replace(/[_-](.)/g, (_, val) => ` ${val.toUpperCase()}`)\n .replace(/^./, (str) => str.toUpperCase())\n .trim()\n}\n"],"mappings":"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","names":["createContext","isValidElement","parseToHsla","parseToRgba","prev","key","isDark","hsla","rgba","parseToRgba","parseToHsla","v","module","createContext","useContext","isValidElement","child","children"]}
|
package/dist/index.mjs
CHANGED
|
@@ -40,8 +40,9 @@ import {
|
|
|
40
40
|
escape,
|
|
41
41
|
toCamelCase,
|
|
42
42
|
toKebabCase,
|
|
43
|
+
toPascalCase,
|
|
43
44
|
toTitleCase
|
|
44
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-CE4MU3RP.mjs";
|
|
45
46
|
import {
|
|
46
47
|
filterEmpty
|
|
47
48
|
} from "./chunk-5EG6NSMV.mjs";
|
|
@@ -75,7 +76,7 @@ import {
|
|
|
75
76
|
shadeColor,
|
|
76
77
|
tintColor,
|
|
77
78
|
transparentizeColor
|
|
78
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-YREUKSHW.mjs";
|
|
79
80
|
import {
|
|
80
81
|
assignAfter,
|
|
81
82
|
filterObject,
|
|
@@ -275,6 +276,7 @@ export {
|
|
|
275
276
|
toCamelCase,
|
|
276
277
|
toKebabCase,
|
|
277
278
|
toNumber,
|
|
279
|
+
toPascalCase,
|
|
278
280
|
toPrecision,
|
|
279
281
|
toTitleCase,
|
|
280
282
|
transparentizeColor,
|
package/dist/string.d.mts
CHANGED
|
@@ -3,7 +3,8 @@ import { StringLiteral } from './index.types.mjs';
|
|
|
3
3
|
declare function escape(value: string, replaceValue?: string): string;
|
|
4
4
|
declare function antonym(value: string): string;
|
|
5
5
|
declare function toCamelCase(value: StringLiteral): string;
|
|
6
|
+
declare function toPascalCase(value: StringLiteral): string;
|
|
6
7
|
declare function toKebabCase(value: StringLiteral): string;
|
|
7
8
|
declare function toTitleCase(value: StringLiteral): string;
|
|
8
9
|
|
|
9
|
-
export { antonym, escape, toCamelCase, toKebabCase, toTitleCase };
|
|
10
|
+
export { antonym, escape, toCamelCase, toKebabCase, toPascalCase, toTitleCase };
|
package/dist/string.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ import { StringLiteral } from './index.types.js';
|
|
|
3
3
|
declare function escape(value: string, replaceValue?: string): string;
|
|
4
4
|
declare function antonym(value: string): string;
|
|
5
5
|
declare function toCamelCase(value: StringLiteral): string;
|
|
6
|
+
declare function toPascalCase(value: StringLiteral): string;
|
|
6
7
|
declare function toKebabCase(value: StringLiteral): string;
|
|
7
8
|
declare function toTitleCase(value: StringLiteral): string;
|
|
8
9
|
|
|
9
|
-
export { antonym, escape, toCamelCase, toKebabCase, toTitleCase };
|
|
10
|
+
export { antonym, escape, toCamelCase, toKebabCase, toPascalCase, toTitleCase };
|
package/dist/string.js
CHANGED
|
@@ -24,6 +24,7 @@ __export(string_exports, {
|
|
|
24
24
|
escape: () => escape,
|
|
25
25
|
toCamelCase: () => toCamelCase,
|
|
26
26
|
toKebabCase: () => toKebabCase,
|
|
27
|
+
toPascalCase: () => toPascalCase,
|
|
27
28
|
toTitleCase: () => toTitleCase
|
|
28
29
|
});
|
|
29
30
|
module.exports = __toCommonJS(string_exports);
|
|
@@ -69,7 +70,10 @@ function antonym(value) {
|
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
72
|
function toCamelCase(value) {
|
|
72
|
-
return value.toLowerCase().replace(/[_-](.)/g, (_, val) => val.toUpperCase())
|
|
73
|
+
return value.toLowerCase().replace(/[_-](.)/g, (_, val) => val.toUpperCase());
|
|
74
|
+
}
|
|
75
|
+
function toPascalCase(value) {
|
|
76
|
+
return toCamelCase(value).replace(/^(.)/, (_, val) => val.toUpperCase());
|
|
73
77
|
}
|
|
74
78
|
function toKebabCase(value) {
|
|
75
79
|
return value.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, "");
|
|
@@ -83,6 +87,7 @@ function toTitleCase(value) {
|
|
|
83
87
|
escape,
|
|
84
88
|
toCamelCase,
|
|
85
89
|
toKebabCase,
|
|
90
|
+
toPascalCase,
|
|
86
91
|
toTitleCase
|
|
87
92
|
});
|
|
88
93
|
//# sourceMappingURL=string.js.map
|
package/dist/string.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/string.ts"],"sourcesContent":["import type { StringLiteral } from \"./index.types\"\n\nexport function escape(value: string, replaceValue = \"\"): string {\n return value.replace(/\\s+/g, replaceValue)\n}\n\nexport function antonym(value: string): string {\n switch (value) {\n case \"top\":\n return \"bottom\"\n\n case \"bottom\":\n return \"top\"\n\n case \"left\":\n return \"right\"\n\n case \"right\":\n return \"left\"\n\n case \"start\":\n return \"end\"\n\n case \"end\":\n return \"start\"\n\n case \"x\":\n return \"y\"\n\n case \"y\":\n return \"x\"\n\n case \"enter\":\n return \"exit\"\n\n case \"exit\":\n return \"enter\"\n\n case \"vertical\":\n return \"horizontal\"\n\n case \"horizontal\":\n return \"vertical\"\n\n case \"up\":\n return \"down\"\n\n case \"down\":\n return \"up\"\n\n case \"block\":\n return \"inline\"\n\n case \"inline\":\n return \"block\"\n\n default:\n return value\n }\n}\n\nexport function toCamelCase(value: StringLiteral): string {\n return value
|
|
1
|
+
{"version":3,"sources":["../src/string.ts"],"sourcesContent":["import type { StringLiteral } from \"./index.types\"\n\nexport function escape(value: string, replaceValue = \"\"): string {\n return value.replace(/\\s+/g, replaceValue)\n}\n\nexport function antonym(value: string): string {\n switch (value) {\n case \"top\":\n return \"bottom\"\n\n case \"bottom\":\n return \"top\"\n\n case \"left\":\n return \"right\"\n\n case \"right\":\n return \"left\"\n\n case \"start\":\n return \"end\"\n\n case \"end\":\n return \"start\"\n\n case \"x\":\n return \"y\"\n\n case \"y\":\n return \"x\"\n\n case \"enter\":\n return \"exit\"\n\n case \"exit\":\n return \"enter\"\n\n case \"vertical\":\n return \"horizontal\"\n\n case \"horizontal\":\n return \"vertical\"\n\n case \"up\":\n return \"down\"\n\n case \"down\":\n return \"up\"\n\n case \"block\":\n return \"inline\"\n\n case \"inline\":\n return \"block\"\n\n default:\n return value\n }\n}\n\nexport function toCamelCase(value: StringLiteral): string {\n return value.toLowerCase().replace(/[_-](.)/g, (_, val) => val.toUpperCase())\n}\n\nexport function toPascalCase(value: StringLiteral): string {\n return toCamelCase(value).replace(/^(.)/, (_, val) => val.toUpperCase())\n}\n\nexport function toKebabCase(value: StringLiteral): string {\n return value\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, \"$1-$2\")\n .toLowerCase()\n .replace(/^-/, \"\")\n}\n\nexport function toTitleCase(value: StringLiteral): string {\n return value\n .replace(/([A-Z])/g, \" $1\")\n .replace(/[_-](.)/g, (_, val) => ` ${val.toUpperCase()}`)\n .replace(/^./, (str) => str.toUpperCase())\n .trim()\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,OAAO,OAAe,eAAe,IAAY;AAC/D,SAAO,MAAM,QAAQ,QAAQ,YAAY;AAC3C;AAEO,SAAS,QAAQ,OAAuB;AAC7C,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,IAET;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,YAAY,OAA8B;AACxD,SAAO,MAAM,YAAY,EAAE,QAAQ,YAAY,CAAC,GAAG,QAAQ,IAAI,YAAY,CAAC;AAC9E;AAEO,SAAS,aAAa,OAA8B;AACzD,SAAO,YAAY,KAAK,EAAE,QAAQ,QAAQ,CAAC,GAAG,QAAQ,IAAI,YAAY,CAAC;AACzE;AAEO,SAAS,YAAY,OAA8B;AACxD,SAAO,MACJ,QAAQ,gCAAgC,OAAO,EAC/C,YAAY,EACZ,QAAQ,MAAM,EAAE;AACrB;AAEO,SAAS,YAAY,OAA8B;AACxD,SAAO,MACJ,QAAQ,YAAY,KAAK,EACzB,QAAQ,YAAY,CAAC,GAAG,QAAQ,IAAI,IAAI,YAAY,CAAC,EAAE,EACvD,QAAQ,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC,EACxC,KAAK;AACV;","names":[]}
|
package/dist/string.mjs
CHANGED
|
@@ -3,13 +3,15 @@ import {
|
|
|
3
3
|
escape,
|
|
4
4
|
toCamelCase,
|
|
5
5
|
toKebabCase,
|
|
6
|
+
toPascalCase,
|
|
6
7
|
toTitleCase
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-CE4MU3RP.mjs";
|
|
8
9
|
export {
|
|
9
10
|
antonym,
|
|
10
11
|
escape,
|
|
11
12
|
toCamelCase,
|
|
12
13
|
toKebabCase,
|
|
14
|
+
toPascalCase,
|
|
13
15
|
toTitleCase
|
|
14
16
|
};
|
|
15
17
|
//# sourceMappingURL=string.mjs.map
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/color.ts"],"sourcesContent":["import type { Dict, StringLiteral } from \"./index.types\"\nimport * as c from \"color2k\"\nimport { isArray, isNumber, isObject } from \"./assertion\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ThemeValue = number | string\ntype Breakpoint = \"base\" | StringLiteral\ntype ColorMode = \"dark\" | \"light\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"hsl\" | \"hsla\" | \"rgb\" | \"rgba\"\n\nexport const SEMANTIC_COLOR_SCHEMES = [\n \"mono\",\n \"primary\",\n \"secondary\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"link\",\n] as const\n\nexport const COLOR_SCHEMES = [\n \"gray\",\n \"neutral\",\n \"red\",\n \"rose\",\n \"pink\",\n \"flashy\",\n \"orange\",\n \"amber\",\n \"yellow\",\n \"lime\",\n \"green\",\n \"emerald\",\n \"teal\",\n \"cyan\",\n \"sky\",\n \"blue\",\n \"indigo\",\n \"violet\",\n \"purple\",\n \"fuchsia\",\n] as const\n\nexport type SemanticColorScheme =\n | (typeof SEMANTIC_COLOR_SCHEMES)[number]\n | StringLiteral\nexport type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport function isGray(colorScheme: string) {\n return colorScheme === \"gray\" || colorScheme === \"neutral\"\n}\n\nexport function isAccessible(colorScheme: string) {\n return (\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n )\n}\n\nexport function getColor(color: string, fallback = \"#000000\") {\n return function (\n theme: Dict = {},\n colorMode: ColorMode = \"light\",\n breakpoint: Breakpoint = \"base\",\n ) {\n const [token, tone] = color.split(\".\")\n\n if (tone) {\n const [, relatedToken] =\n Object.entries<string>(theme.semantics?.colorSchemes ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedToken) color = `${relatedToken}.${tone}`\n } else {\n const [, relatedColor] =\n Object.entries<string>(theme.semantics?.colors ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedColor) color = relatedColor\n }\n\n const hex = get<[ThemeValue, ThemeValue] | Dict<ThemeValue> | ThemeValue>(\n theme,\n `colors.${color}`,\n color,\n )\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(hex[colorMode !== \"dark\" ? 0 : 1]))\n } else if (isObject(hex)) {\n return c.toHex(String(hex[breakpoint]))\n } else {\n return c.toHex(String(hex))\n }\n } catch {\n try {\n return c.toHex(fallback)\n } catch {\n return \"#000000\"\n }\n }\n }\n}\n\nexport function lightenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n}\n\nexport function darkenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n}\n\nexport function tintColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n}\n\nexport function shadeColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n}\n\nexport function transparentizeColor(color: string, alpha: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.transparentize(raw, 1 - alpha)\n }\n}\n\nexport function randomColor({\n colors,\n string,\n}: { colors?: string[]; string?: string } = {}) {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors) ?? fallback\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors) ?? fallback\n\n return fallback\n}\n\nfunction randomHex() {\n return `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n}\n\nfunction randomColorFromString(str: string) {\n let hash = 0\n\n if (str.length === 0) return hash.toString()\n\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n hash = hash & hash\n }\n\n let color = \"#\"\n\n for (let j = 0; j < 3; j += 1) {\n const value = (hash >> (j * 8)) & 255\n\n color += `00${value.toString(16)}`.substr(-2)\n }\n\n return color\n}\n\nfunction randomColorFromList(str: string, list: string[]) {\n let index = 0\n\n if (str.length === 0) return list[0]\n\n for (let i = 0; i < str.length; i += 1) {\n index = str.charCodeAt(i) + ((index << 5) - index)\n\n index = index & index\n }\n\n index = ((index % list.length) + list.length) % list.length\n\n return list[index]\n}\n\nfunction randomFromList(list: string[]) {\n return list[Math.floor(Math.random() * list.length)]\n}\n\nfunction getBrightness(color: string) {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport function isTone(color: string) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n}\n\nexport function isLight(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"dark\"\n }\n}\n\nexport function isDark(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"light\"\n }\n}\n\nexport function convertColor(color: string, fallback?: string) {\n return function (format: ColorFormat): string | undefined {\n try {\n const isAlpha = format.endsWith(\"a\")\n\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n if (format.startsWith(\"hex\")) {\n let hexa = c.toHex(color)\n\n if (isAlpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, \"\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!isAlpha) {\n hsla = hsla.replace(/hsla/, \"hsl\")\n hsla = hsla.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return hsla\n } else {\n let rgba = c.toRgba(color)\n\n if (!isAlpha) {\n rgba = rgba.replace(/rgba/, \"rgb\")\n rgba = rgba.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return rgba\n }\n } catch {\n if (fallback) return convertColor(fallback)(format)\n }\n }\n}\n\nexport function calcFormat(color: string): ColorFormat {\n if (color.startsWith(\"hsl\")) {\n return color.startsWith(\"hsla\") ? \"hsla\" : \"hsl\"\n } else if (color.startsWith(\"rgb\")) {\n return color.startsWith(\"rgba\") ? \"rgba\" : \"rgb\"\n } else {\n return color.length === 9 ? \"hexa\" : \"hex\"\n }\n}\n\nexport function getAlpha(color: string) {\n return c.parseToRgba(color)[3]\n}\n\nexport function alphaToHex(a: number) {\n if (0 > a) a = 0\n if (1 < a) a = 1\n\n return Math.round(a * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nexport function parseToRgba(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToRgba(color)\n } catch {\n if (fallback) return c.parseToRgba(fallback)\n }\n}\n\nexport function parseToHsla(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToHsla(color)\n } catch {\n if (fallback) return c.parseToHsla(fallback)\n }\n}\n\nexport function parseToHsv(\n color: string,\n fallback?: string,\n): [number, number, number, number] {\n let [r, g, b, a] = parseToRgba(color, fallback) ?? [255, 255, 255, 1]\n\n r = r / 255\n g = g / 255\n b = b / 255\n\n const [min, max] = [Math.min(r, g, b), Math.max(r, g, b)]\n const delta = max - min\n\n let [h, v, s] = [0, max, max == 0 ? 0 : delta / max]\n\n switch (min) {\n case max:\n h = 0\n break\n\n case r:\n h = 60 * ((b - g) / delta) + 180\n break\n\n case g:\n h = 60 * ((r - b) / delta) + 300\n break\n\n case b:\n h = 60 * ((g - r) / delta) + 60\n break\n }\n\n return [h, s, v, a]\n}\n\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.rgba(r, g, b, a), fallback)(format)\n }\n}\n\nexport function hslaTo(\n [h, s, l, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.hsla(h, s, l, a), fallback)(format)\n }\n}\n\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\"): string | undefined {\n h = h / 60\n\n let rgb: [number, number, number] = [v, v, v]\n\n let i = Math.floor(h)\n let f = h - i\n let p = v * (1 - s)\n let q = v * (1 - s * f)\n let t = v * (1 - s * (1 - f))\n\n switch (i) {\n case 0:\n case 6:\n rgb = [v, t, p]\n break\n\n case 1:\n rgb = [q, v, p]\n break\n\n case 2:\n rgb = [p, v, t]\n break\n\n case 3:\n rgb = [p, q, v]\n break\n\n case 4:\n rgb = [t, p, v]\n break\n\n case 5:\n rgb = [v, p, q]\n break\n }\n\n let color = `rgb(${rgb.map((v) => Math.round(v * 255)).join(\", \")})`\n\n if (isNumber(a)) color = color.replace(/\\)$/, `, ${a})`)\n\n return convertColor(color, fallback)(format)\n }\n}\n\nexport function sameColor(\n color: string | undefined,\n comparison: string | undefined,\n) {\n if (!color) return false\n if (!comparison) return false\n\n const a = parseToRgba(color) ?? []\n const b = parseToRgba(comparison) ?? []\n\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]\n}\n"],"mappings":"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","names":["isDark","hsla","rgba","parseToRgba","parseToHsla","v"]}
|