@yamada-ui/utils 1.4.0-next-20240820160301 → 1.4.1-dev-20240908075149
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/README.md +7 -13
- package/dist/assertion.js +1 -1
- package/dist/assertion.js.map +1 -1
- package/dist/assertion.mjs +1 -1
- package/dist/{chunk-MACQOGUC.mjs → chunk-3SWUCGN4.mjs} +6 -6
- package/dist/chunk-3SWUCGN4.mjs.map +1 -0
- package/dist/{chunk-YDBF2PXJ.mjs → chunk-CYNS65VQ.mjs} +2 -2
- package/dist/chunk-CYNS65VQ.mjs.map +1 -0
- package/dist/{chunk-TQFLAKYX.mjs → chunk-NBL5H4TH.mjs} +2 -2
- package/dist/chunk-NBL5H4TH.mjs.map +1 -0
- package/dist/{chunk-FXLTTSDS.mjs → chunk-S35WPDIT.mjs} +2 -2
- package/dist/{chunk-DXYCGUDF.mjs → chunk-VRHGQ632.mjs} +2 -2
- package/dist/{chunk-6FXNGGOF.mjs → chunk-ZFE4ZWCP.mjs} +2 -2
- package/dist/color.js +3 -3
- package/dist/color.js.map +1 -1
- package/dist/color.mjs +3 -3
- package/dist/dom.js.map +1 -1
- package/dist/dom.mjs +2 -2
- package/dist/function.js.map +1 -1
- package/dist/function.mjs +2 -2
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/object.d.mts +13 -13
- package/dist/object.d.ts +13 -13
- package/dist/object.js.map +1 -1
- package/dist/object.mjs +2 -2
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +2 -2
- package/package.json +2 -2
- package/dist/chunk-MACQOGUC.mjs.map +0 -1
- package/dist/chunk-TQFLAKYX.mjs.map +0 -1
- package/dist/chunk-YDBF2PXJ.mjs.map +0 -1
- /package/dist/{chunk-FXLTTSDS.mjs.map → chunk-S35WPDIT.mjs.map} +0 -0
- /package/dist/{chunk-DXYCGUDF.mjs.map → chunk-VRHGQ632.mjs.map} +0 -0
- /package/dist/{chunk-6FXNGGOF.mjs.map → chunk-ZFE4ZWCP.mjs.map} +0 -0
package/README.md
CHANGED
|
@@ -5,19 +5,13 @@
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```sh
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
or
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
or
|
|
18
|
-
|
|
19
|
-
```sh
|
|
20
|
-
$ npm install @yamada-ui/utils
|
|
8
|
+
pnpm add @yamada-ui/utils
|
|
9
|
+
# or
|
|
10
|
+
yarn add @yamada-ui/utils
|
|
11
|
+
# or
|
|
12
|
+
npm install @yamada-ui/utils
|
|
13
|
+
# or
|
|
14
|
+
bun add @yamada-ui/utils
|
|
21
15
|
```
|
|
22
16
|
|
|
23
17
|
## Contribution
|
package/dist/assertion.js
CHANGED
|
@@ -39,7 +39,7 @@ module.exports = __toCommonJS(assertion_exports);
|
|
|
39
39
|
var is = (x, y) => x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y;
|
|
40
40
|
var isNumber = (value) => typeof value === "number";
|
|
41
41
|
var isNotNumber = (value) => typeof value !== "number" || Number.isNaN(value) || !Number.isFinite(value);
|
|
42
|
-
var isNumeric = (value) => value
|
|
42
|
+
var isNumeric = (value) => !isNaN(parseFloat(String(value))) && isFinite(Number(value)) && /^-?\d*\.?\d+$/.test(String(value));
|
|
43
43
|
var isString = (value) => Object.prototype.toString.call(value) === "[object String]";
|
|
44
44
|
var isBoolean = (value) => typeof value === "boolean";
|
|
45
45
|
var isUndefined = (value) => typeof value === "undefined" && value === void 0;
|
package/dist/assertion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/assertion.ts"],"sourcesContent":["import type { Dict } from \"./index.types\"\n\nexport const is = (x: any, y: any) =>\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n\nexport const isNumber = (value: any): value is number =>\n typeof value === \"number\"\n\nexport const isNotNumber = (value: any): boolean =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport const isNumeric = (value: any): boolean =>\n value
|
|
1
|
+
{"version":3,"sources":["../src/assertion.ts"],"sourcesContent":["import type { Dict } from \"./index.types\"\n\nexport const is = (x: any, y: any) =>\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n\nexport const isNumber = (value: any): value is number =>\n typeof value === \"number\"\n\nexport const isNotNumber = (value: any): boolean =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport const isNumeric = (value: any): boolean =>\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n\nexport const isString = (value: any): value is string =>\n Object.prototype.toString.call(value) === \"[object String]\"\n\nexport const isBoolean = (value: any): value is boolean =>\n typeof value === \"boolean\"\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" && value === undefined\n\nexport const isNull = (value: any): value is null => value === null\n\nexport const isObject = <T extends Dict>(value: any): value is T =>\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n\nexport const isArray = <T extends any[]>(value: any): value is T =>\n Array.isArray(value)\n\nexport const isEmpty = (value: any): boolean =>\n !isArray(value) || !value.length || value.every((v) => v == null)\n\nexport const isFunction = <T extends Function = Function>(\n value: any,\n): value is T => typeof value === \"function\"\n\nexport const isUnit = (value: any): boolean =>\n /[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\nexport const cast = <T>(value: any) => value as T\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,KAAK,CAAC,GAAQ,MACxB,MAAM,MAAM,MAAM,KAAK,IAAI,MAAM,IAAI,MAAQ,MAAM,KAAK,MAAM;AAE1D,IAAM,WAAW,CAAC,UACvB,OAAO,UAAU;AAEZ,IAAM,cAAc,CAAC,UAC1B,OAAO,UAAU,YAAY,OAAO,MAAM,KAAK,KAAK,CAAC,OAAO,SAAS,KAAK;AAErE,IAAM,YAAY,CAAC,UACxB,CAAC,MAAM,WAAW,OAAO,KAAK,CAAC,CAAC,KAChC,SAAS,OAAO,KAAK,CAAC,KACtB,gBAAgB,KAAK,OAAO,KAAK,CAAC;AAE7B,IAAM,WAAW,CAAC,UACvB,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAErC,IAAM,YAAY,CAAC,UACxB,OAAO,UAAU;AAEZ,IAAM,cAAc,CAAC,UAC1B,OAAO,UAAU,eAAe,UAAU;AAErC,IAAM,SAAS,CAAC,UAA8B,UAAU;AAExD,IAAM,WAAW,CAAiB,UACvC,UAAU,SACT,OAAO,UAAU,YAAY,OAAO,UAAU,eAC/C,CAAC,QAAQ,KAAK;AAET,IAAM,UAAU,CAAkB,UACvC,MAAM,QAAQ,KAAK;AAEd,IAAM,UAAU,CAAC,UACtB,CAAC,QAAQ,KAAK,KAAK,CAAC,MAAM,UAAU,MAAM,MAAM,CAAC,MAAM,KAAK,IAAI;AAE3D,IAAM,aAAa,CACxB,UACe,OAAO,UAAU;AAE3B,IAAM,SAAS,CAAC,UACrB,oNAAoN;AAAA,EAClN;AACF;AAEK,IAAM,OAAO,CAAI,UAAe;","names":[]}
|
package/dist/assertion.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getMemoizedObject
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CYNS65VQ.mjs";
|
|
4
4
|
import {
|
|
5
5
|
isArray,
|
|
6
6
|
isNumber
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-NBL5H4TH.mjs";
|
|
8
8
|
|
|
9
9
|
// src/color.ts
|
|
10
10
|
import * as c from "color2k";
|
|
@@ -57,12 +57,12 @@ var isGray = (colorScheme) => colorScheme === "gray" || colorScheme === "neutral
|
|
|
57
57
|
var isAccessible = (colorScheme) => colorScheme === "yellow" || colorScheme === "cyan" || colorScheme === "lime";
|
|
58
58
|
var getColor = (color, fallback = "#000000") => (theme = {}, colorMode) => {
|
|
59
59
|
var _a, _b, _c, _d, _e, _f;
|
|
60
|
-
const [token,
|
|
61
|
-
if (
|
|
60
|
+
const [token, tone] = color.split(".");
|
|
61
|
+
if (tone) {
|
|
62
62
|
const [, relatedToken] = (_c = Object.entries((_b = (_a = theme.semantics) == null ? void 0 : _a.colorSchemes) != null ? _b : {}).find(
|
|
63
63
|
([semanticToken]) => token === semanticToken
|
|
64
64
|
)) != null ? _c : [];
|
|
65
|
-
if (relatedToken) color = `${relatedToken}.${
|
|
65
|
+
if (relatedToken) color = `${relatedToken}.${tone}`;
|
|
66
66
|
} else {
|
|
67
67
|
const [, relatedColor] = (_f = Object.entries((_e = (_d = theme.semantics) == null ? void 0 : _d.colors) != null ? _e : {}).find(
|
|
68
68
|
([semanticToken]) => token === semanticToken
|
|
@@ -311,4 +311,4 @@ export {
|
|
|
311
311
|
hsvTo,
|
|
312
312
|
sameColor
|
|
313
313
|
};
|
|
314
|
-
//# sourceMappingURL=chunk-
|
|
314
|
+
//# sourceMappingURL=chunk-3SWUCGN4.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/color.ts"],"sourcesContent":["import * as c from \"color2k\"\nimport { isArray, isNumber } from \"./assertion\"\nimport type { Dict, StringLiteral } from \"./index.types\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ColorMode = \"light\" | \"dark\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"rgba\" | \"rgb\" | \"hsl\" | \"hsla\"\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 const isGray = (colorScheme: string) =>\n colorScheme === \"gray\" || colorScheme === \"neutral\"\n\nexport const isAccessible = (colorScheme: string) =>\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n\nexport const getColor =\n (color: string, fallback: string = \"#000000\") =>\n (theme: Dict = {}, colorMode?: ColorMode) => {\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<\n string | number | [string | number, string | number] | undefined\n >(theme, `colors.${color}`, color)\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(colorMode !== \"dark\" ? hex[0] : hex[1]))\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\nexport const lightenColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n\nexport const darkenColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n\nexport const tintColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n\nexport const shadeColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n\nexport const transparentizeColor =\n (color: string, alpha: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.transparentize(raw, 1 - alpha)\n }\n\nexport const randomColor = ({\n string,\n colors,\n}: { string?: string; colors?: string[] } = {}) => {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors)\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors)\n\n return fallback\n}\n\nconst randomHex = () =>\n `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n\nconst 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\nconst 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\nconst randomFromList = (list: string[]) =>\n list[Math.floor(Math.random() * list.length)]\n\nconst getBrightness = (color: string) => {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport const isTone =\n (color: string) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = theme ? getColor(color)(theme, colorMode) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n\nexport const isLight =\n (color: string) => (theme?: Dict, colorMode?: ColorMode) =>\n isTone(color)(theme, colorMode) === \"dark\"\n\nexport const isDark =\n (color: string) => (theme?: Dict, colorMode?: ColorMode) =>\n isTone(color)(theme, colorMode) === \"light\"\n\nexport const convertColor =\n (color: string, fallback?: string) =>\n (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\nexport const 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 const getAlpha = (color: string) => c.parseToRgba(color)[3]\n\nexport const 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 const 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 const 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 const 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 const rgbaTo =\n ([r, g, b, a]: [number, number, number, number], fallback?: string) =>\n (format: ColorFormat = \"hex\") =>\n convertColor(c.rgba(r, g, b, a), fallback)(format)\n\nexport const hslaTo =\n ([h, s, l, a]: [number, number, number, number], fallback?: string) =>\n (format: ColorFormat = \"hex\") =>\n convertColor(c.hsla(h, s, l, a), fallback)(format)\n\nexport const hsvTo =\n ([h, s, v, a]: [number, number, number, number?], fallback?: string) =>\n (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\nexport const 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"]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
isObject,
|
|
5
5
|
isString,
|
|
6
6
|
isUndefined
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-NBL5H4TH.mjs";
|
|
8
8
|
|
|
9
9
|
// src/object.ts
|
|
10
10
|
var omitObjectHelper = (obj, path) => {
|
|
@@ -168,4 +168,4 @@ export {
|
|
|
168
168
|
getMemoizedObject,
|
|
169
169
|
assignAfter
|
|
170
170
|
};
|
|
171
|
-
//# sourceMappingURL=chunk-
|
|
171
|
+
//# sourceMappingURL=chunk-CYNS65VQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/object.ts"],"sourcesContent":["import {\n isObject,\n isArray,\n isFunction,\n isString,\n isUndefined,\n} from \"./assertion\"\nimport type { Dict } from \"./index.types\"\n\nconst 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 in obj) {\n const { [primaryKey]: _, ...rest } = obj\n\n return rest\n }\n\n if (obj[primaryKey] && isObject(obj[primaryKey])) {\n return {\n ...obj,\n [primaryKey]: omitObjectHelper(obj[primaryKey], restKeys),\n }\n }\n\n return obj\n}\n\nexport const omitObject = <\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D extends unknown = unknown,\n>(\n obj: Y,\n keys: M[] | readonly M[],\n) => {\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 const pickObject = <\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D extends unknown = unknown,\n>(\n obj: Y,\n keys: M[] | readonly M[],\n fallbackValue = \"__fallback\",\n) =>\n (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\nexport const 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 const 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 const filterUndefined = <Y extends Dict>(obj: Y): Y =>\n filterObject(obj, (_, val) => val !== null && val !== undefined)\n\nexport const merge = <Y extends Dict>(\n target: any,\n source: any,\n mergeArray: boolean = 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 const flattenObject = <Y extends Dict>(\n obj: any,\n maxDepth: number = Infinity,\n omitKeys: string[] = [],\n): Y => {\n if ((!isObject(obj) && !isArray(obj)) || !maxDepth) return obj\n\n return Object.entries(obj).reduce((result, [key, value]) => {\n if (\n isObject(value) &&\n !Object.keys(value).some((key) => omitKeys.includes(key))\n ) {\n Object.entries(flattenObject(value, maxDepth - 1, omitKeys)).forEach(\n ([childKey, childValue]) => {\n result[`${key}.${childKey}`] = childValue\n },\n )\n } else {\n result[key] = value\n }\n\n return result\n }, {} as any) as Y\n}\n\nexport const objectFromEntries = <Y extends Dict>(entries: any[][]): Y =>\n entries.reduce((result, [key, value]) => {\n result[key] = value\n\n return result\n }, {} as any) as Y\n\nexport const keysFormObject = <Y extends Dict>(obj: Y): (keyof Y)[] =>\n Object.keys(obj)\n\nexport const replaceObject = <Y extends 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((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {} as Dict) as Y\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport const getObject = (\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n) => {\n const k = isString(path) ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean) : [path]\n\n for (i = 0; i < k.length; i += 1) {\n if (!obj) break\n\n obj = obj[k[i]]\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport const memoizeObject = (func: typeof getObject) => {\n const cache = new WeakMap()\n\n const memoizedFunc = <Y extends unknown = any>(\n obj: Dict,\n path: string | number,\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 const assignAfter = (target: Record<string, any>, ...sources: any[]) => {\n if (target == null)\n throw new TypeError(\"Cannot convert undefined or null to object\")\n\n const result: Record<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":["prev","key"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var is = (x, y) => x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y;
|
|
3
3
|
var isNumber = (value) => typeof value === "number";
|
|
4
4
|
var isNotNumber = (value) => typeof value !== "number" || Number.isNaN(value) || !Number.isFinite(value);
|
|
5
|
-
var isNumeric = (value) => value
|
|
5
|
+
var isNumeric = (value) => !isNaN(parseFloat(String(value))) && isFinite(Number(value)) && /^-?\d*\.?\d+$/.test(String(value));
|
|
6
6
|
var isString = (value) => Object.prototype.toString.call(value) === "[object String]";
|
|
7
7
|
var isBoolean = (value) => typeof value === "boolean";
|
|
8
8
|
var isUndefined = (value) => typeof value === "undefined" && value === void 0;
|
|
@@ -32,4 +32,4 @@ export {
|
|
|
32
32
|
isUnit,
|
|
33
33
|
cast
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
35
|
+
//# sourceMappingURL=chunk-NBL5H4TH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/assertion.ts"],"sourcesContent":["import type { Dict } from \"./index.types\"\n\nexport const is = (x: any, y: any) =>\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n\nexport const isNumber = (value: any): value is number =>\n typeof value === \"number\"\n\nexport const isNotNumber = (value: any): boolean =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport const isNumeric = (value: any): boolean =>\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n\nexport const isString = (value: any): value is string =>\n Object.prototype.toString.call(value) === \"[object String]\"\n\nexport const isBoolean = (value: any): value is boolean =>\n typeof value === \"boolean\"\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" && value === undefined\n\nexport const isNull = (value: any): value is null => value === null\n\nexport const isObject = <T extends Dict>(value: any): value is T =>\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n\nexport const isArray = <T extends any[]>(value: any): value is T =>\n Array.isArray(value)\n\nexport const isEmpty = (value: any): boolean =>\n !isArray(value) || !value.length || value.every((v) => v == null)\n\nexport const isFunction = <T extends Function = Function>(\n value: any,\n): value is T => typeof value === \"function\"\n\nexport const isUnit = (value: any): boolean =>\n /[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\nexport const cast = <T>(value: any) => value as T\n"],"mappings":";AAEO,IAAM,KAAK,CAAC,GAAQ,MACxB,MAAM,MAAM,MAAM,KAAK,IAAI,MAAM,IAAI,MAAQ,MAAM,KAAK,MAAM;AAE1D,IAAM,WAAW,CAAC,UACvB,OAAO,UAAU;AAEZ,IAAM,cAAc,CAAC,UAC1B,OAAO,UAAU,YAAY,OAAO,MAAM,KAAK,KAAK,CAAC,OAAO,SAAS,KAAK;AAErE,IAAM,YAAY,CAAC,UACxB,CAAC,MAAM,WAAW,OAAO,KAAK,CAAC,CAAC,KAChC,SAAS,OAAO,KAAK,CAAC,KACtB,gBAAgB,KAAK,OAAO,KAAK,CAAC;AAE7B,IAAM,WAAW,CAAC,UACvB,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAErC,IAAM,YAAY,CAAC,UACxB,OAAO,UAAU;AAEZ,IAAM,cAAc,CAAC,UAC1B,OAAO,UAAU,eAAe,UAAU;AAErC,IAAM,SAAS,CAAC,UAA8B,UAAU;AAExD,IAAM,WAAW,CAAiB,UACvC,UAAU,SACT,OAAO,UAAU,YAAY,OAAO,UAAU,eAC/C,CAAC,QAAQ,KAAK;AAET,IAAM,UAAU,CAAkB,UACvC,MAAM,QAAQ,KAAK;AAEd,IAAM,UAAU,CAAC,UACtB,CAAC,QAAQ,KAAK,KAAK,CAAC,MAAM,UAAU,MAAM,MAAM,CAAC,MAAM,KAAK,IAAI;AAE3D,IAAM,aAAa,CACxB,UACe,OAAO,UAAU;AAE3B,IAAM,SAAS,CAAC,UACrB,oNAAoN;AAAA,EAClN;AACF;AAEK,IAAM,OAAO,CAAI,UAAe;","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isNumber,
|
|
3
3
|
isUndefined
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NBL5H4TH.mjs";
|
|
5
5
|
|
|
6
6
|
// src/dom.ts
|
|
7
7
|
var createdDom = () => !!(typeof window !== "undefined" && window.document && window.document.createElement);
|
|
@@ -136,4 +136,4 @@ export {
|
|
|
136
136
|
getActiveElement,
|
|
137
137
|
isActiveElement
|
|
138
138
|
};
|
|
139
|
-
//# sourceMappingURL=chunk-
|
|
139
|
+
//# sourceMappingURL=chunk-S35WPDIT.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isFunction
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NBL5H4TH.mjs";
|
|
4
4
|
|
|
5
5
|
// src/function.ts
|
|
6
6
|
var noop = () => {
|
|
@@ -20,4 +20,4 @@ export {
|
|
|
20
20
|
handlerAll,
|
|
21
21
|
funcAll
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
23
|
+
//# sourceMappingURL=chunk-VRHGQ632.mjs.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
isNumber,
|
|
3
3
|
isObject,
|
|
4
4
|
isString
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-NBL5H4TH.mjs";
|
|
6
6
|
|
|
7
7
|
// src/react.tsx
|
|
8
8
|
import * as React from "react";
|
|
@@ -193,4 +193,4 @@ export {
|
|
|
193
193
|
useAsyncRetry,
|
|
194
194
|
createId
|
|
195
195
|
};
|
|
196
|
-
//# sourceMappingURL=chunk-
|
|
196
|
+
//# sourceMappingURL=chunk-ZFE4ZWCP.mjs.map
|
package/dist/color.js
CHANGED
|
@@ -140,12 +140,12 @@ var isGray = (colorScheme) => colorScheme === "gray" || colorScheme === "neutral
|
|
|
140
140
|
var isAccessible = (colorScheme) => colorScheme === "yellow" || colorScheme === "cyan" || colorScheme === "lime";
|
|
141
141
|
var getColor = (color, fallback = "#000000") => (theme = {}, colorMode) => {
|
|
142
142
|
var _a, _b, _c, _d, _e, _f;
|
|
143
|
-
const [token,
|
|
144
|
-
if (
|
|
143
|
+
const [token, tone] = color.split(".");
|
|
144
|
+
if (tone) {
|
|
145
145
|
const [, relatedToken] = (_c = Object.entries((_b = (_a = theme.semantics) == null ? void 0 : _a.colorSchemes) != null ? _b : {}).find(
|
|
146
146
|
([semanticToken]) => token === semanticToken
|
|
147
147
|
)) != null ? _c : [];
|
|
148
|
-
if (relatedToken) color = `${relatedToken}.${
|
|
148
|
+
if (relatedToken) color = `${relatedToken}.${tone}`;
|
|
149
149
|
} else {
|
|
150
150
|
const [, relatedColor] = (_f = Object.entries((_e = (_d = theme.semantics) == null ? void 0 : _d.colors) != null ? _e : {}).find(
|
|
151
151
|
([semanticToken]) => token === semanticToken
|
package/dist/color.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/color.ts","../src/assertion.ts","../src/object.ts"],"sourcesContent":["import * as c from \"color2k\"\nimport { isArray, isNumber } from \"./assertion\"\nimport type { Dict, StringLiteral } from \"./index.types\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ColorMode = \"light\" | \"dark\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"rgba\" | \"rgb\" | \"hsl\" | \"hsla\"\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 const isGray = (colorScheme: string) =>\n colorScheme === \"gray\" || colorScheme === \"neutral\"\n\nexport const isAccessible = (colorScheme: string) =>\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n\nexport const getColor =\n (color: string, fallback: string = \"#000000\") =>\n (theme: Dict = {}, colorMode?: ColorMode) => {\n const [token, hue] = color.split(\".\")\n\n if (hue) {\n const [, relatedToken] =\n Object.entries<string>(theme.semantics?.colorSchemes ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedToken) color = `${relatedToken}.${hue}`\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<\n string | number | [string | number, string | number] | undefined\n >(theme, `colors.${color}`, color)\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(colorMode !== \"dark\" ? hex[0] : hex[1]))\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\nexport const lightenColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n\nexport const darkenColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n\nexport const tintColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n\nexport const shadeColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n\nexport const transparentizeColor =\n (color: string, alpha: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.transparentize(raw, 1 - alpha)\n }\n\nexport const randomColor = ({\n string,\n colors,\n}: { string?: string; colors?: string[] } = {}) => {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors)\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors)\n\n return fallback\n}\n\nconst randomHex = () =>\n `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n\nconst 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\nconst 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\nconst randomFromList = (list: string[]) =>\n list[Math.floor(Math.random() * list.length)]\n\nconst getBrightness = (color: string) => {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport const isTone =\n (color: string) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = theme ? getColor(color)(theme, colorMode) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n\nexport const isLight =\n (color: string) => (theme?: Dict, colorMode?: ColorMode) =>\n isTone(color)(theme, colorMode) === \"dark\"\n\nexport const isDark =\n (color: string) => (theme?: Dict, colorMode?: ColorMode) =>\n isTone(color)(theme, colorMode) === \"light\"\n\nexport const convertColor =\n (color: string, fallback?: string) =>\n (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\nexport const 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 const getAlpha = (color: string) => c.parseToRgba(color)[3]\n\nexport const 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 const 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 const 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 const 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 const rgbaTo =\n ([r, g, b, a]: [number, number, number, number], fallback?: string) =>\n (format: ColorFormat = \"hex\") =>\n convertColor(c.rgba(r, g, b, a), fallback)(format)\n\nexport const hslaTo =\n ([h, s, l, a]: [number, number, number, number], fallback?: string) =>\n (format: ColorFormat = \"hex\") =>\n convertColor(c.hsla(h, s, l, a), fallback)(format)\n\nexport const hsvTo =\n ([h, s, v, a]: [number, number, number, number?], fallback?: string) =>\n (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\nexport const 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 const is = (x: any, y: any) =>\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n\nexport const isNumber = (value: any): value is number =>\n typeof value === \"number\"\n\nexport const isNotNumber = (value: any): boolean =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport const isNumeric = (value: any): boolean =>\n value != null &&\n parseFloat(value.toString()) - parseFloat(value.toString()) + 1 >= 0\n\nexport const isString = (value: any): value is string =>\n Object.prototype.toString.call(value) === \"[object String]\"\n\nexport const isBoolean = (value: any): value is boolean =>\n typeof value === \"boolean\"\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" && value === undefined\n\nexport const isNull = (value: any): value is null => value === null\n\nexport const isObject = <T extends Dict>(value: any): value is T =>\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n\nexport const isArray = <T extends any[]>(value: any): value is T =>\n Array.isArray(value)\n\nexport const isEmpty = (value: any): boolean =>\n !isArray(value) || !value.length || value.every((v) => v == null)\n\nexport const isFunction = <T extends Function = Function>(\n value: any,\n): value is T => typeof value === \"function\"\n\nexport const isUnit = (value: any): boolean =>\n /[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\nexport const cast = <T>(value: any) => value as T\n","import {\n isObject,\n isArray,\n isFunction,\n isString,\n isUndefined,\n} from \"./assertion\"\nimport type { Dict, Union } from \"./index.types\"\n\nconst omitObjectHelper = <T extends Dict, K extends keyof T>(\n obj: T,\n path: Union<K>[],\n): any => {\n if (!path.length) return obj\n\n const [primaryKey, ...restKeys] = path\n\n if (restKeys.length === 0 && primaryKey in obj) {\n const { [primaryKey]: _, ...rest } = obj\n\n return rest\n }\n\n if (obj[primaryKey] && isObject(obj[primaryKey])) {\n return {\n ...obj,\n [primaryKey]: omitObjectHelper(obj[primaryKey], restKeys),\n }\n }\n\n return obj\n}\n\nexport const omitObject = <\n Y extends Dict,\n M extends keyof Y,\n D extends unknown,\n>(\n obj: Y,\n keys: Union<M>[],\n) => {\n return keys.reduce((prev, key) => {\n const path = (isString(key) ? key.split(\".\") : []) as Union<M>[]\n\n return omitObjectHelper(prev, path)\n }, obj) as unknown as D extends unknown ? Omit<Y, M> : D\n}\n\nexport const pickObject = <\n Y extends Dict,\n M extends keyof Y,\n D extends unknown,\n>(\n obj: Y,\n keys: Union<M>[],\n fallbackValue = \"__fallback\",\n) =>\n keys.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\nexport const splitObject = <T extends Dict, K extends keyof T>(\n obj: T,\n keys: K[],\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 T[K])) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [P in K]: T[P] }, Omit<T, K>]\n}\n\nexport const filterObject = <T extends Dict, K extends Dict>(\n obj: T,\n func: (key: keyof T, value: T[keyof T], obj: T) => boolean,\n): K => {\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 K\n}\n\nexport const filterUndefined = <T extends Dict>(obj: T): T =>\n filterObject(obj, (_, val) => val !== null && val !== undefined)\n\nexport const merge = <T extends Dict>(\n target: any,\n source: any,\n mergeArray: boolean = false,\n): T => {\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 T\n}\n\nexport const flattenObject = <T extends Dict>(\n obj: any,\n maxDepth: number = Infinity,\n omitKeys: string[] = [],\n): T => {\n if ((!isObject(obj) && !isArray(obj)) || !maxDepth) return obj\n\n return Object.entries(obj).reduce((result, [key, value]) => {\n if (\n isObject(value) &&\n !Object.keys(value).some((key) => omitKeys.includes(key))\n ) {\n Object.entries(flattenObject(value, maxDepth - 1, omitKeys)).forEach(\n ([childKey, childValue]) => {\n result[`${key}.${childKey}`] = childValue\n },\n )\n } else {\n result[key] = value\n }\n\n return result\n }, {} as any) as T\n}\n\nexport const objectFromEntries = <T extends Dict>(entries: any[][]): T =>\n entries.reduce((result, [key, value]) => {\n result[key] = value\n\n return result\n }, {} as any) as T\n\nexport const keysFormObject = <T extends Dict>(obj: T): (keyof T)[] =>\n Object.keys(obj)\n\nexport const replaceObject = <T extends any>(\n objOrArray: T,\n callBack: (value: any) => any,\n): T => {\n if (isArray(objOrArray)) {\n return objOrArray.map(callBack) as T\n } else if (isObject(objOrArray)) {\n return Object.entries(objOrArray).reduce((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {} as Dict) as T\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport const getObject = (\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n) => {\n const k = isString(path) ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean) : [path]\n\n for (i = 0; i < k.length; i += 1) {\n if (!obj) break\n\n obj = obj[k[i]]\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport const memoizeObject = (func: typeof getObject) => {\n const cache = new WeakMap()\n\n const memoizedFunc = <T extends unknown = any>(\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n ): T => {\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 T\n }\n\n return memoizedFunc\n}\n\nexport const getMemoizedObject = memoizeObject(getObject)\n\nexport const assignAfter = (target: Record<string, any>, ...sources: any[]) => {\n if (target == null)\n throw new TypeError(\"Cannot convert undefined or null to object\")\n\n const result: Record<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 * as c from \"color2k\"\nimport { isArray, isNumber } from \"./assertion\"\nimport type { Dict, StringLiteral } from \"./index.types\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ColorMode = \"light\" | \"dark\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"rgba\" | \"rgb\" | \"hsl\" | \"hsla\"\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 const isGray = (colorScheme: string) =>\n colorScheme === \"gray\" || colorScheme === \"neutral\"\n\nexport const isAccessible = (colorScheme: string) =>\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n\nexport const getColor =\n (color: string, fallback: string = \"#000000\") =>\n (theme: Dict = {}, colorMode?: ColorMode) => {\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<\n string | number | [string | number, string | number] | undefined\n >(theme, `colors.${color}`, color)\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(colorMode !== \"dark\" ? hex[0] : hex[1]))\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\nexport const lightenColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n\nexport const darkenColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n\nexport const tintColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n\nexport const shadeColor =\n (color: string, amount: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n\nexport const transparentizeColor =\n (color: string, alpha: number) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = getColor(color, color)(theme, colorMode)\n\n return c.transparentize(raw, 1 - alpha)\n }\n\nexport const randomColor = ({\n string,\n colors,\n}: { string?: string; colors?: string[] } = {}) => {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors)\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors)\n\n return fallback\n}\n\nconst randomHex = () =>\n `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n\nconst 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\nconst 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\nconst randomFromList = (list: string[]) =>\n list[Math.floor(Math.random() * list.length)]\n\nconst getBrightness = (color: string) => {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport const isTone =\n (color: string) => (theme?: Dict, colorMode?: ColorMode) => {\n const raw = theme ? getColor(color)(theme, colorMode) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n\nexport const isLight =\n (color: string) => (theme?: Dict, colorMode?: ColorMode) =>\n isTone(color)(theme, colorMode) === \"dark\"\n\nexport const isDark =\n (color: string) => (theme?: Dict, colorMode?: ColorMode) =>\n isTone(color)(theme, colorMode) === \"light\"\n\nexport const convertColor =\n (color: string, fallback?: string) =>\n (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\nexport const 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 const getAlpha = (color: string) => c.parseToRgba(color)[3]\n\nexport const 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 const 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 const 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 const 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 const rgbaTo =\n ([r, g, b, a]: [number, number, number, number], fallback?: string) =>\n (format: ColorFormat = \"hex\") =>\n convertColor(c.rgba(r, g, b, a), fallback)(format)\n\nexport const hslaTo =\n ([h, s, l, a]: [number, number, number, number], fallback?: string) =>\n (format: ColorFormat = \"hex\") =>\n convertColor(c.hsla(h, s, l, a), fallback)(format)\n\nexport const hsvTo =\n ([h, s, v, a]: [number, number, number, number?], fallback?: string) =>\n (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\nexport const 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 const is = (x: any, y: any) =>\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n\nexport const isNumber = (value: any): value is number =>\n typeof value === \"number\"\n\nexport const isNotNumber = (value: any): boolean =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport const isNumeric = (value: any): boolean =>\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n\nexport const isString = (value: any): value is string =>\n Object.prototype.toString.call(value) === \"[object String]\"\n\nexport const isBoolean = (value: any): value is boolean =>\n typeof value === \"boolean\"\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" && value === undefined\n\nexport const isNull = (value: any): value is null => value === null\n\nexport const isObject = <T extends Dict>(value: any): value is T =>\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n\nexport const isArray = <T extends any[]>(value: any): value is T =>\n Array.isArray(value)\n\nexport const isEmpty = (value: any): boolean =>\n !isArray(value) || !value.length || value.every((v) => v == null)\n\nexport const isFunction = <T extends Function = Function>(\n value: any,\n): value is T => typeof value === \"function\"\n\nexport const isUnit = (value: any): boolean =>\n /[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\nexport const cast = <T>(value: any) => value as T\n","import {\n isObject,\n isArray,\n isFunction,\n isString,\n isUndefined,\n} from \"./assertion\"\nimport type { Dict } from \"./index.types\"\n\nconst 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 in obj) {\n const { [primaryKey]: _, ...rest } = obj\n\n return rest\n }\n\n if (obj[primaryKey] && isObject(obj[primaryKey])) {\n return {\n ...obj,\n [primaryKey]: omitObjectHelper(obj[primaryKey], restKeys),\n }\n }\n\n return obj\n}\n\nexport const omitObject = <\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D extends unknown = unknown,\n>(\n obj: Y,\n keys: M[] | readonly M[],\n) => {\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 const pickObject = <\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D extends unknown = unknown,\n>(\n obj: Y,\n keys: M[] | readonly M[],\n fallbackValue = \"__fallback\",\n) =>\n (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\nexport const 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 const 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 const filterUndefined = <Y extends Dict>(obj: Y): Y =>\n filterObject(obj, (_, val) => val !== null && val !== undefined)\n\nexport const merge = <Y extends Dict>(\n target: any,\n source: any,\n mergeArray: boolean = 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 const flattenObject = <Y extends Dict>(\n obj: any,\n maxDepth: number = Infinity,\n omitKeys: string[] = [],\n): Y => {\n if ((!isObject(obj) && !isArray(obj)) || !maxDepth) return obj\n\n return Object.entries(obj).reduce((result, [key, value]) => {\n if (\n isObject(value) &&\n !Object.keys(value).some((key) => omitKeys.includes(key))\n ) {\n Object.entries(flattenObject(value, maxDepth - 1, omitKeys)).forEach(\n ([childKey, childValue]) => {\n result[`${key}.${childKey}`] = childValue\n },\n )\n } else {\n result[key] = value\n }\n\n return result\n }, {} as any) as Y\n}\n\nexport const objectFromEntries = <Y extends Dict>(entries: any[][]): Y =>\n entries.reduce((result, [key, value]) => {\n result[key] = value\n\n return result\n }, {} as any) as Y\n\nexport const keysFormObject = <Y extends Dict>(obj: Y): (keyof Y)[] =>\n Object.keys(obj)\n\nexport const replaceObject = <Y extends 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((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {} as Dict) as Y\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport const getObject = (\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n) => {\n const k = isString(path) ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean) : [path]\n\n for (i = 0; i < k.length; i += 1) {\n if (!obj) break\n\n obj = obj[k[i]]\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport const memoizeObject = (func: typeof getObject) => {\n const cache = new WeakMap()\n\n const memoizedFunc = <Y extends unknown = any>(\n obj: Dict,\n path: string | number,\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 const assignAfter = (target: Record<string, any>, ...sources: any[]) => {\n if (target == null)\n throw new TypeError(\"Cannot convert undefined or null to object\")\n\n const result: Record<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
|
@@ -25,9 +25,9 @@ import {
|
|
|
25
25
|
shadeColor,
|
|
26
26
|
tintColor,
|
|
27
27
|
transparentizeColor
|
|
28
|
-
} from "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
28
|
+
} from "./chunk-3SWUCGN4.mjs";
|
|
29
|
+
import "./chunk-CYNS65VQ.mjs";
|
|
30
|
+
import "./chunk-NBL5H4TH.mjs";
|
|
31
31
|
export {
|
|
32
32
|
COLOR_SCHEMES,
|
|
33
33
|
SEMANTIC_COLOR_SCHEMES,
|
package/dist/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dom.ts","../src/assertion.ts"],"sourcesContent":["import type React from \"react\"\nimport { isNumber, isUndefined } from \"./assertion\"\n\nexport const createdDom = (): boolean =>\n !!(\n typeof window !== \"undefined\" &&\n window.document &&\n window.document.createElement\n )\n\nexport const getPlatform = (): string =>\n (navigator as any).userAgentData?.platform ?? navigator.platform\n\nexport const vendor = (v: RegExp): boolean =>\n createdDom() && v.test(navigator.vendor)\nexport const platform = (v: RegExp): boolean =>\n createdDom() && v.test(getPlatform())\n\nexport const isMac = (): boolean => platform(/^mac/i)\nexport const isApple = (): boolean => platform(/mac|iphone|ipad|ipod/i)\nexport const isSafari = (): boolean => isApple() && vendor(/apple/i)\n\nexport const isElement = (el: any): el is Element =>\n el != null &&\n typeof el == \"object\" &&\n \"nodeType\" in el &&\n el.nodeType === Node.ELEMENT_NODE\n\nexport const 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 const isHidden = (el: HTMLElement): boolean => {\n if (el.parentElement && isHidden(el.parentElement)) return true\n\n return el.hidden\n}\n\nexport const isDisabled = (el: HTMLElement): boolean =>\n Boolean(el.getAttribute(\"disabled\")) === true ||\n Boolean(el.getAttribute(\"data-disabled\")) === true ||\n Boolean(el.getAttribute(\"aria-disabled\")) === true\n\nconst isVisible = (el: HTMLElement) => el.offsetWidth > 0 && el.offsetHeight > 0\n\nexport const hasTabIndex = (el: HTMLElement): boolean =>\n el.hasAttribute(\"tabindex\")\n\nexport const isContentEditable = (el: HTMLElement): boolean => {\n const value = el.getAttribute(\"contenteditable\")\n\n return value !== \"false\" && value != null\n}\n\nexport const isContains = (\n parent: HTMLElement | null,\n child: HTMLElement | null,\n): boolean | undefined => {\n return parent === child || parent?.contains(child)\n}\n\nexport const getPx = (value: string | number | 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 const getEventRelatedTarget = (\n ev: React.FocusEvent | React.MouseEvent,\n) =>\n (ev.relatedTarget ??\n ev.currentTarget.ownerDocument.activeElement) as HTMLElement | null\n\ntype Booleanish = boolean | \"true\" | \"false\"\n\nexport const dataAttr = (condition: boolean | undefined) =>\n (condition ? \"\" : undefined) as Booleanish\n\nexport const ariaAttr = (\n condition: boolean | undefined,\n): boolean | undefined => (condition ? true : undefined)\n\nexport type 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 const 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 const 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.indexOf(localName) >= 0) 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 const hasNegativeTabIndex = (el: HTMLElement): boolean =>\n hasTabIndex(el) && el.tabIndex === -1\n\nexport const isTabbable = (el?: HTMLElement | null): boolean =>\n el ? isHTMLElement(el) && isFocusable(el) && !hasNegativeTabIndex(el) : false\n\nexport const isTouchDevice = () => \"ontouchstart\" in window\n\nexport const getOwnerWindow = (\n node?: Element | null,\n): Window & typeof globalThis => getOwnerDocument(node)?.defaultView ?? window\n\nexport const getOwnerDocument = (el?: Element | null): Document =>\n isElement(el) ? el.ownerDocument : document\n\nexport const getActiveElement = (el?: HTMLElement): HTMLElement =>\n getOwnerDocument(el).activeElement as HTMLElement\n\nexport const isActiveElement = (el: HTMLElement) => {\n return getActiveElement(el) === el\n}\n","import type { Dict } from \"./index.types\"\n\nexport const is = (x: any, y: any) =>\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n\nexport const isNumber = (value: any): value is number =>\n typeof value === \"number\"\n\nexport const isNotNumber = (value: any): boolean =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport const isNumeric = (value: any): boolean =>\n value != null &&\n parseFloat(value.toString()) - parseFloat(value.toString()) + 1 >= 0\n\nexport const isString = (value: any): value is string =>\n Object.prototype.toString.call(value) === \"[object String]\"\n\nexport const isBoolean = (value: any): value is boolean =>\n typeof value === \"boolean\"\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" && value === undefined\n\nexport const isNull = (value: any): value is null => value === null\n\nexport const isObject = <T extends Dict>(value: any): value is T =>\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n\nexport const isArray = <T extends any[]>(value: any): value is T =>\n Array.isArray(value)\n\nexport const isEmpty = (value: any): boolean =>\n !isArray(value) || !value.length || value.every((v) => v == null)\n\nexport const isFunction = <T extends Function = Function>(\n value: any,\n): value is T => typeof value === \"function\"\n\nexport const isUnit = (value: any): boolean =>\n /[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\nexport const cast = <T>(value: any) => value as T\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/dom.ts","../src/assertion.ts"],"sourcesContent":["import type React from \"react\"\nimport { isNumber, isUndefined } from \"./assertion\"\n\nexport const createdDom = (): boolean =>\n !!(\n typeof window !== \"undefined\" &&\n window.document &&\n window.document.createElement\n )\n\nexport const getPlatform = (): string =>\n (navigator as any).userAgentData?.platform ?? navigator.platform\n\nexport const vendor = (v: RegExp): boolean =>\n createdDom() && v.test(navigator.vendor)\nexport const platform = (v: RegExp): boolean =>\n createdDom() && v.test(getPlatform())\n\nexport const isMac = (): boolean => platform(/^mac/i)\nexport const isApple = (): boolean => platform(/mac|iphone|ipad|ipod/i)\nexport const isSafari = (): boolean => isApple() && vendor(/apple/i)\n\nexport const isElement = (el: any): el is Element =>\n el != null &&\n typeof el == \"object\" &&\n \"nodeType\" in el &&\n el.nodeType === Node.ELEMENT_NODE\n\nexport const 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 const isHidden = (el: HTMLElement): boolean => {\n if (el.parentElement && isHidden(el.parentElement)) return true\n\n return el.hidden\n}\n\nexport const isDisabled = (el: HTMLElement): boolean =>\n Boolean(el.getAttribute(\"disabled\")) === true ||\n Boolean(el.getAttribute(\"data-disabled\")) === true ||\n Boolean(el.getAttribute(\"aria-disabled\")) === true\n\nconst isVisible = (el: HTMLElement) => el.offsetWidth > 0 && el.offsetHeight > 0\n\nexport const hasTabIndex = (el: HTMLElement): boolean =>\n el.hasAttribute(\"tabindex\")\n\nexport const isContentEditable = (el: HTMLElement): boolean => {\n const value = el.getAttribute(\"contenteditable\")\n\n return value !== \"false\" && value != null\n}\n\nexport const isContains = (\n parent: HTMLElement | null,\n child: HTMLElement | null,\n): boolean | undefined => {\n return parent === child || parent?.contains(child)\n}\n\nexport const getPx = (value: string | number | 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 const getEventRelatedTarget = (\n ev: React.FocusEvent | React.MouseEvent,\n) =>\n (ev.relatedTarget ??\n ev.currentTarget.ownerDocument.activeElement) as HTMLElement | null\n\ntype Booleanish = boolean | \"true\" | \"false\"\n\nexport const dataAttr = (condition: boolean | undefined) =>\n (condition ? \"\" : undefined) as Booleanish\n\nexport const ariaAttr = (\n condition: boolean | undefined,\n): boolean | undefined => (condition ? true : undefined)\n\nexport type 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 const 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 const 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.indexOf(localName) >= 0) 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 const hasNegativeTabIndex = (el: HTMLElement): boolean =>\n hasTabIndex(el) && el.tabIndex === -1\n\nexport const isTabbable = (el?: HTMLElement | null): boolean =>\n el ? isHTMLElement(el) && isFocusable(el) && !hasNegativeTabIndex(el) : false\n\nexport const isTouchDevice = () => \"ontouchstart\" in window\n\nexport const getOwnerWindow = (\n node?: Element | null,\n): Window & typeof globalThis => getOwnerDocument(node)?.defaultView ?? window\n\nexport const getOwnerDocument = (el?: Element | null): Document =>\n isElement(el) ? el.ownerDocument : document\n\nexport const getActiveElement = (el?: HTMLElement): HTMLElement =>\n getOwnerDocument(el).activeElement as HTMLElement\n\nexport const isActiveElement = (el: HTMLElement) => {\n return getActiveElement(el) === el\n}\n","import type { Dict } from \"./index.types\"\n\nexport const is = (x: any, y: any) =>\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n\nexport const isNumber = (value: any): value is number =>\n typeof value === \"number\"\n\nexport const isNotNumber = (value: any): boolean =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport const isNumeric = (value: any): boolean =>\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n\nexport const isString = (value: any): value is string =>\n Object.prototype.toString.call(value) === \"[object String]\"\n\nexport const isBoolean = (value: any): value is boolean =>\n typeof value === \"boolean\"\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" && value === undefined\n\nexport const isNull = (value: any): value is null => value === null\n\nexport const isObject = <T extends Dict>(value: any): value is T =>\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n\nexport const isArray = <T extends any[]>(value: any): value is T =>\n Array.isArray(value)\n\nexport const isEmpty = (value: any): boolean =>\n !isArray(value) || !value.length || value.every((v) => v == null)\n\nexport const isFunction = <T extends Function = Function>(\n value: any,\n): value is T => typeof value === \"function\"\n\nexport const isUnit = (value: any): boolean =>\n /[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\nexport const cast = <T>(value: any) => value as T\n"],"mappings":"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","names":[]}
|
package/dist/dom.mjs
CHANGED
package/dist/function.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/function.ts","../src/assertion.ts"],"sourcesContent":["import { isFunction } from \"./assertion\"\n\nexport const noop = () => {}\n\nexport const runIfFunc = <T, U extends Array<any>>(\n valOrFunc: T | ((...funcArgs: U) => T),\n ...args: U\n): T => (isFunction(valOrFunc) ? valOrFunc(...args) : valOrFunc)\n\nexport const handlerAll =\n <T extends (event: any, ...args: any[]) => void>(\n ...funcs: (T | undefined)[]\n ) =>\n (\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\nexport const funcAll =\n <T extends (...args: any[]) => any>(...funcs: (T | undefined)[]) =>\n (...args: T extends (...args: infer R) => any ? R : never) =>\n funcs.forEach((func) => func?.(...args))\n","import type { Dict } from \"./index.types\"\n\nexport const is = (x: any, y: any) =>\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n\nexport const isNumber = (value: any): value is number =>\n typeof value === \"number\"\n\nexport const isNotNumber = (value: any): boolean =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport const isNumeric = (value: any): boolean =>\n value
|
|
1
|
+
{"version":3,"sources":["../src/function.ts","../src/assertion.ts"],"sourcesContent":["import { isFunction } from \"./assertion\"\n\nexport const noop = () => {}\n\nexport const runIfFunc = <T, U extends Array<any>>(\n valOrFunc: T | ((...funcArgs: U) => T),\n ...args: U\n): T => (isFunction(valOrFunc) ? valOrFunc(...args) : valOrFunc)\n\nexport const handlerAll =\n <T extends (event: any, ...args: any[]) => void>(\n ...funcs: (T | undefined)[]\n ) =>\n (\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\nexport const funcAll =\n <T extends (...args: any[]) => any>(...funcs: (T | undefined)[]) =>\n (...args: T extends (...args: infer R) => any ? R : never) =>\n funcs.forEach((func) => func?.(...args))\n","import type { Dict } from \"./index.types\"\n\nexport const is = (x: any, y: any) =>\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n\nexport const isNumber = (value: any): value is number =>\n typeof value === \"number\"\n\nexport const isNotNumber = (value: any): boolean =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport const isNumeric = (value: any): boolean =>\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n\nexport const isString = (value: any): value is string =>\n Object.prototype.toString.call(value) === \"[object String]\"\n\nexport const isBoolean = (value: any): value is boolean =>\n typeof value === \"boolean\"\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" && value === undefined\n\nexport const isNull = (value: any): value is null => value === null\n\nexport const isObject = <T extends Dict>(value: any): value is T =>\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n\nexport const isArray = <T extends any[]>(value: any): value is T =>\n Array.isArray(value)\n\nexport const isEmpty = (value: any): boolean =>\n !isArray(value) || !value.length || value.every((v) => v == null)\n\nexport const isFunction = <T extends Function = Function>(\n value: any,\n): value is T => typeof value === \"function\"\n\nexport const isUnit = (value: any): boolean =>\n /[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\nexport const cast = <T>(value: any) => value as T\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACsCO,IAAM,aAAa,CACxB,UACe,OAAO,UAAU;;;ADtC3B,IAAM,OAAO,MAAM;AAAC;AAEpB,IAAM,YAAY,CACvB,cACG,SACI,WAAW,SAAS,IAAI,UAAU,GAAG,IAAI,IAAI;AAE/C,IAAM,aACX,IACK,UAEL,CACE,UACG,SACA;AACH,QAAM,KAAK,CAAC,SAAS;AACnB,iCAAO,OAAO,GAAG;AAEjB,WAAO,+BAAO;AAAA,EAChB,CAAC;AACH;AAEK,IAAM,UACX,IAAuC,UACvC,IAAI,SACF,MAAM,QAAQ,CAAC,SAAS,6BAAO,GAAG,KAAK;","names":[]}
|
package/dist/function.mjs
CHANGED
package/dist/index.js
CHANGED
|
@@ -167,7 +167,7 @@ module.exports = __toCommonJS(src_exports);
|
|
|
167
167
|
var is = (x, y) => x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y;
|
|
168
168
|
var isNumber = (value) => typeof value === "number";
|
|
169
169
|
var isNotNumber = (value) => typeof value !== "number" || Number.isNaN(value) || !Number.isFinite(value);
|
|
170
|
-
var isNumeric = (value) => value
|
|
170
|
+
var isNumeric = (value) => !isNaN(parseFloat(String(value))) && isFinite(Number(value)) && /^-?\d*\.?\d+$/.test(String(value));
|
|
171
171
|
var isString = (value) => Object.prototype.toString.call(value) === "[object String]";
|
|
172
172
|
var isBoolean = (value) => typeof value === "boolean";
|
|
173
173
|
var isUndefined = (value) => typeof value === "undefined" && value === void 0;
|
|
@@ -733,12 +733,12 @@ var isGray = (colorScheme) => colorScheme === "gray" || colorScheme === "neutral
|
|
|
733
733
|
var isAccessible = (colorScheme) => colorScheme === "yellow" || colorScheme === "cyan" || colorScheme === "lime";
|
|
734
734
|
var getColor = (color, fallback = "#000000") => (theme = {}, colorMode) => {
|
|
735
735
|
var _a, _b, _c, _d, _e, _f;
|
|
736
|
-
const [token,
|
|
737
|
-
if (
|
|
736
|
+
const [token, tone] = color.split(".");
|
|
737
|
+
if (tone) {
|
|
738
738
|
const [, relatedToken] = (_c = Object.entries((_b = (_a = theme.semantics) == null ? void 0 : _a.colorSchemes) != null ? _b : {}).find(
|
|
739
739
|
([semanticToken]) => token === semanticToken
|
|
740
740
|
)) != null ? _c : [];
|
|
741
|
-
if (relatedToken) color = `${relatedToken}.${
|
|
741
|
+
if (relatedToken) color = `${relatedToken}.${tone}`;
|
|
742
742
|
} else {
|
|
743
743
|
const [, relatedColor] = (_f = Object.entries((_e = (_d = theme.semantics) == null ? void 0 : _d.colors) != null ? _e : {}).find(
|
|
744
744
|
([semanticToken]) => token === semanticToken
|