@yamada-ui/utils 2.0.3-dev-20251023021940 → 2.1.0-next-20251025000229
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/cjs/calc.cjs.map +1 -1
- package/dist/cjs/color.cjs +13 -9
- package/dist/cjs/color.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/object.cjs +4 -0
- package/dist/cjs/object.cjs.map +1 -1
- package/dist/esm/calc.js.map +1 -1
- package/dist/esm/color.js +13 -9
- package/dist/esm/color.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/object.js +4 -1
- package/dist/esm/object.js.map +1 -1
- package/dist/types/calc.d.ts +1 -1
- package/dist/types/color.d.ts +6 -29
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.types.d.ts +5 -5
- package/dist/types/object.d.ts +16 -15
- package/package.json +1 -1
package/dist/cjs/calc.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calc.cjs","names":[],"sources":["../../src/calc.ts"],"sourcesContent":["type Operator = \"*\" | \"+\" | \"-\" | \"/\"\
|
|
1
|
+
{"version":3,"file":"calc.cjs","names":[],"sources":["../../src/calc.ts"],"sourcesContent":["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"],"mappings":";;AAIA,SAAS,aAAa,UAAoB,GAAG,MAAiB;AAC5D,QAAO,KAAK,KAAK,IAAI,SAAS,GAAG,CAAC,QAAQ,SAAS,GAAG;;AAGxD,SAAS,IAAI,GAAG,MAAiB;AAC/B,QAAO,QAAQ,aAAa,KAAK,GAAG,KAAK,CAAC;;AAG5C,SAAS,SAAS,GAAG,MAAiB;AACpC,QAAO,QAAQ,aAAa,KAAK,GAAG,KAAK,CAAC;;AAG5C,SAAS,SAAS,GAAG,MAAiB;AACpC,QAAO,QAAQ,aAAa,KAAK,GAAG,KAAK,CAAC;;AAG5C,SAAS,OAAO,GAAG,MAAiB;AAClC,QAAO,QAAQ,aAAa,KAAK,GAAG,KAAK,CAAC;;AAG5C,SAAS,OAAO,OAAgB;AAC9B,KAAI,CAAC,MAAM,WAAW,MAAM,UAAU,CAAC,CAAC,CACtC,QAAO,OAAO,MAAM,CAAC,WAAW,IAAI,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI;AAEtE,QAAO,SAAS,OAAO,GAAG;;AAY5B,MAAa,OAAO,OAAO,QACxB,OAAsB;CACrB,MAAM,GAAG,SAAS,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC;CACvC,SAAS,GAAG,SAAS,KAAK,OAAO,GAAG,GAAG,KAAK,CAAC;CAC7C,WAAW,GAAG,SAAS,KAAK,SAAS,GAAG,GAAG,KAAK,CAAC;CACjD,cAAc,KAAK,OAAO,EAAE,CAAC;CAC7B,WAAW,GAAG,SAAS,KAAK,SAAS,GAAG,GAAG,KAAK,CAAC;CACjD,gBAAgB,EAAE,UAAU;CAC7B,GACD;CACE;CACA;CACA;CACA;CACA;CACD,CACF"}
|
package/dist/cjs/color.cjs
CHANGED
|
@@ -53,24 +53,24 @@ const TONES = [
|
|
|
53
53
|
function convertColor(color, fallback) {
|
|
54
54
|
return function(format) {
|
|
55
55
|
try {
|
|
56
|
-
const
|
|
56
|
+
const isAlpha = format.endsWith("a");
|
|
57
57
|
if (/^[0-9a-fA-F]{6}$/.test(color)) color = "#" + color;
|
|
58
58
|
if (format.startsWith("hex")) {
|
|
59
59
|
let hexa = color2k.toHex(color);
|
|
60
|
-
if (
|
|
60
|
+
if (isAlpha) {
|
|
61
61
|
if (hexa.length === 7) hexa += "ff";
|
|
62
|
-
} else hexa = hexa.replace(/^#([0-9a-fA-F]{6})[0-9a-fA-F]{2}$/, "
|
|
62
|
+
} else hexa = hexa.replace(/^#(?:[0-9a-fA-F]{6})[0-9a-fA-F]{2}$/, "$1");
|
|
63
63
|
return hexa;
|
|
64
64
|
} else if (format.startsWith("hsl")) {
|
|
65
65
|
let hsla = color2k.toHsla(color);
|
|
66
|
-
if (!
|
|
66
|
+
if (!isAlpha) {
|
|
67
67
|
hsla = hsla.replace(/hsla/, "hsl");
|
|
68
68
|
hsla = hsla.replace(/,\s*\d+(\.\d+)?\)$/, ")");
|
|
69
69
|
}
|
|
70
70
|
return hsla;
|
|
71
71
|
} else {
|
|
72
72
|
let rgba = color2k.toRgba(color);
|
|
73
|
-
if (!
|
|
73
|
+
if (!isAlpha) {
|
|
74
74
|
rgba = rgba.replace(/rgba/, "rgb");
|
|
75
75
|
rgba = rgba.replace(/,\s*\d+(\.\d+)?\)$/, ")");
|
|
76
76
|
}
|
|
@@ -82,7 +82,8 @@ function convertColor(color, fallback) {
|
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
84
|
function calcFormat(color) {
|
|
85
|
-
if (color.startsWith("hsl")
|
|
85
|
+
if (color.startsWith("hsl")) return color.startsWith("hsla") ? "hsla" : "hsl";
|
|
86
|
+
else if (color.startsWith("rgb")) return color.startsWith("rgba") ? "rgba" : "rgb";
|
|
86
87
|
else return color.length === 9 ? "hexa" : "hex";
|
|
87
88
|
}
|
|
88
89
|
function getAlpha(color) {
|
|
@@ -110,9 +111,12 @@ function parseToHsla(color, fallback) {
|
|
|
110
111
|
}
|
|
111
112
|
}
|
|
112
113
|
function parseToHsv(color, fallback) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
let [r, g, b, a] = parseToRgba(color, fallback) ?? [
|
|
115
|
+
255,
|
|
116
|
+
255,
|
|
117
|
+
255,
|
|
118
|
+
1
|
|
119
|
+
];
|
|
116
120
|
r = r / 255;
|
|
117
121
|
g = g / 255;
|
|
118
122
|
b = b / 255;
|
package/dist/cjs/color.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.cjs","names":["c","rgb: [number, number, number]","v","isNumber"],"sources":["../../src/color.ts"],"sourcesContent":["import * as c from \"color2k\"\nimport { isNumber } from \"./assertion\"\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 \"error\",\n \"link\",\n] as const\n\nexport const DEFAULT_COLOR_SCHEMES = [\n \"gray\",\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 const COLOR_SCHEMES = [\n ...SEMANTIC_COLOR_SCHEMES,\n ...DEFAULT_COLOR_SCHEMES,\n]\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport function convertColor(\n color: string,\n fallback: string,\n): {\n (format: ColorFormat): string\n}\nexport function convertColor(\n color: string,\n fallback?: string,\n): {\n (format: ColorFormat): string | undefined\n}\nexport function convertColor(color: string, fallback?: string) {\n return function (format: ColorFormat) {\n try {\n const alpha = 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 (alpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/^#([0-9a-fA-F]{6})[0-9a-fA-F]{2}$/, \"#$1\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!alpha) {\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 (!alpha) {\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\") || color.startsWith(\"rgb\")) {\n return color.split(\"(\")[0] as ColorFormat\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(\n color: string,\n fallback: string,\n): [number, number, number, number]\nexport function parseToRgba(\n color: string,\n fallback?: string,\n): [number, number, number, number] | undefined\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(\n color: string,\n fallback: string,\n): [number, number, number, number]\nexport function parseToHsla(\n color: string,\n fallback?: string,\n): [number, number, number, number] | undefined\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]\nexport function parseToHsv(\n color: string,\n fallback?: string,\n): [number, number, number, number] | undefined\nexport function parseToHsv(color: string, fallback?: string) {\n const rgba = parseToRgba(color, fallback)\n\n if (!rgba) return undefined\n\n let [r, g, b, a] = rgba\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\n// @ts-ignore\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback: string,\n): {\n (format: ColorFormat): string\n}\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n): {\n (format: ColorFormat): string | undefined\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\n// @ts-ignore\nexport function hslaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback: string,\n): {\n (format: ColorFormat): string\n}\nexport function hslaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n): {\n (format: ColorFormat): string | undefined\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\n// @ts-ignore\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback: string,\n): {\n (format: ColorFormat): string\n}\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n): {\n (format: ColorFormat): string | undefined\n}\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\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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"}
|
|
1
|
+
{"version":3,"file":"color.cjs","names":["c","rgb: [number, number, number]","v","isNumber"],"sources":["../../src/color.ts"],"sourcesContent":["import * as c from \"color2k\"\nimport { isNumber } from \"./assertion\"\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 \"error\",\n \"link\",\n] as const\n\nexport const DEFAULT_COLOR_SCHEMES = [\n \"gray\",\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 const COLOR_SCHEMES = [\n ...SEMANTIC_COLOR_SCHEMES,\n ...DEFAULT_COLOR_SCHEMES,\n]\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\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}$/, \"$1\")\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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"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -31,6 +31,7 @@ exports.createdDom = require_dom.createdDom;
|
|
|
31
31
|
exports.cx = require_string.cx;
|
|
32
32
|
exports.dataAttr = require_dom.dataAttr;
|
|
33
33
|
exports.escape = require_string.escape;
|
|
34
|
+
exports.extractObject = require_object.extractObject;
|
|
34
35
|
exports.filterEmpty = require_array.filterEmpty;
|
|
35
36
|
exports.filterObject = require_object.filterObject;
|
|
36
37
|
exports.filterUndefined = require_object.filterUndefined;
|
package/dist/cjs/object.cjs
CHANGED
|
@@ -35,6 +35,9 @@ function filterObject(obj, func) {
|
|
|
35
35
|
function filterUndefined(obj) {
|
|
36
36
|
return filterObject(obj, (_, val) => val !== null && val !== void 0);
|
|
37
37
|
}
|
|
38
|
+
function extractObject(obj, getter) {
|
|
39
|
+
return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, getter(value)]));
|
|
40
|
+
}
|
|
38
41
|
function merge(target, source, options = {
|
|
39
42
|
mergeArray: false,
|
|
40
43
|
shouldProcess: () => true
|
|
@@ -103,6 +106,7 @@ function wrapWithKey(obj, key) {
|
|
|
103
106
|
}
|
|
104
107
|
|
|
105
108
|
//#endregion
|
|
109
|
+
exports.extractObject = extractObject;
|
|
106
110
|
exports.filterObject = filterObject;
|
|
107
111
|
exports.filterUndefined = filterUndefined;
|
|
108
112
|
exports.flattenObject = flattenObject;
|
package/dist/cjs/object.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.cjs","names":["result: Dict","picked: Dict","omitted: Dict","isFunction","isObject","targetValue: any","isArray","isString","isUndefined"],"sources":["../../src/object.ts"],"sourcesContent":["import type { Dict } from \"./index.types\"\nimport {\n isArray,\n isFunction,\n isObject,\n isString,\n isUndefined,\n} from \"./assertion\"\n\nexport function omitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n): Omit<Y, M> {\n if (!keys.length) return obj\n\n const result: Dict = {}\n\n Object.keys(obj).forEach((key) => {\n if (keys.includes(key as M)) return\n\n result[key] = obj[key]\n })\n\n return result as Omit<Y, M>\n}\n\nexport function pickObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n): { [D in M]: Y[D] } {\n if (!keys.length) return {} as { [D in M]: Y[D] }\n\n const result = {} as { [D in M]: Y[D] }\n\n keys.forEach((key) => {\n if (key in obj) result[key] = obj[key]\n })\n\n return result\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n funcOrKeys?: M[] | readonly M[],\n): [{ [D in M]: Y[D] }, Omit<Y, M>]\n\nexport function splitObject<Y extends Dict, M extends Dict>(\n obj: Dict,\n funcOrKeys?: (key: string) => boolean,\n): [Y, M]\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n funcOrKeys?: ((key: string) => boolean) | M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (\n isFunction(funcOrKeys) ? funcOrKeys(key) : funcOrKeys?.includes(key as M)\n ) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [D in M]: Y[D] }, 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 interface
|
|
1
|
+
{"version":3,"file":"object.cjs","names":["result: Dict","picked: Dict","omitted: Dict","isFunction","isObject","targetValue: any","isArray","isString","isUndefined"],"sources":["../../src/object.ts"],"sourcesContent":["import type { Dict } from \"./index.types\"\nimport {\n isArray,\n isFunction,\n isObject,\n isString,\n isUndefined,\n} from \"./assertion\"\n\nexport function omitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n): Omit<Y, M> {\n if (!keys.length) return obj\n\n const result: Dict = {}\n\n Object.keys(obj).forEach((key) => {\n if (keys.includes(key as M)) return\n\n result[key] = obj[key]\n })\n\n return result as Omit<Y, M>\n}\n\nexport function pickObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n): { [D in M]: Y[D] } {\n if (!keys.length) return {} as { [D in M]: Y[D] }\n\n const result = {} as { [D in M]: Y[D] }\n\n keys.forEach((key) => {\n if (key in obj) result[key] = obj[key]\n })\n\n return result\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n funcOrKeys?: M[] | readonly M[],\n): [{ [D in M]: Y[D] }, Omit<Y, M>]\n\nexport function splitObject<Y extends Dict, M extends Dict>(\n obj: Dict,\n funcOrKeys?: (key: string) => boolean,\n): [Y, M]\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n funcOrKeys?: ((key: string) => boolean) | M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (\n isFunction(funcOrKeys) ? funcOrKeys(key) : funcOrKeys?.includes(key as M)\n ) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [D in M]: Y[D] }, 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 extractObject<Y extends Dict, M>(\n obj: Y,\n getter: (value: Y[keyof Y]) => M,\n) {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [key, getter(value)]),\n ) as { [key in keyof Y]: M }\n}\n\nexport interface mergeOptions {\n debug?: boolean\n mergeArray?: boolean\n shouldProcess?: (value: any) => boolean\n}\n\nexport function merge<Y extends Dict>(\n target: any,\n source: any,\n options: mergeOptions = { mergeArray: false, shouldProcess: () => true },\n): Y {\n let result = Object.assign({}, target)\n\n if (isObject(source) && options.shouldProcess?.(source)) {\n if (isObject(target)) {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n const targetValue: any = target[sourceKey]\n\n if (options.shouldProcess(sourceValue)) {\n if (\n options.mergeArray &&\n isArray(sourceValue) &&\n isArray(targetValue)\n ) {\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, options)\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\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 separator?: string\n shouldProcess?: (value: any) => boolean\n}\n\nexport function flattenObject<Y extends Dict>(\n obj: any,\n {\n maxDepth = Infinity,\n separator = \".\",\n shouldProcess = () => true,\n }: FlattenObjectOptions = {},\n): Y {\n if (!isObject(obj) && !isArray(obj)) return obj\n\n return Object.entries(obj).reduce<any>((result, [key, value]) => {\n if (isObject(value) && shouldProcess(value) && maxDepth > 1) {\n Object.entries(\n flattenObject(value, {\n maxDepth: maxDepth - 1,\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 objectKeys<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) {\n const keys = isString(path)\n ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean)\n : [path]\n\n for (const key of keys) {\n if (!obj) break\n\n obj = obj[key]\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 ): 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)\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 wrapWithKey<Y>(obj: Y, key?: string) {\n if (key) {\n return { [key]: obj }\n } else {\n return obj\n }\n}\n"],"mappings":"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"}
|
package/dist/esm/calc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calc.js","names":[],"sources":["../../src/calc.ts"],"sourcesContent":["type Operator = \"*\" | \"+\" | \"-\" | \"/\"\
|
|
1
|
+
{"version":3,"file":"calc.js","names":[],"sources":["../../src/calc.ts"],"sourcesContent":["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"],"mappings":";AAIA,SAAS,aAAa,UAAoB,GAAG,MAAiB;AAC5D,QAAO,KAAK,KAAK,IAAI,SAAS,GAAG,CAAC,QAAQ,SAAS,GAAG;;AAGxD,SAAS,IAAI,GAAG,MAAiB;AAC/B,QAAO,QAAQ,aAAa,KAAK,GAAG,KAAK,CAAC;;AAG5C,SAAS,SAAS,GAAG,MAAiB;AACpC,QAAO,QAAQ,aAAa,KAAK,GAAG,KAAK,CAAC;;AAG5C,SAAS,SAAS,GAAG,MAAiB;AACpC,QAAO,QAAQ,aAAa,KAAK,GAAG,KAAK,CAAC;;AAG5C,SAAS,OAAO,GAAG,MAAiB;AAClC,QAAO,QAAQ,aAAa,KAAK,GAAG,KAAK,CAAC;;AAG5C,SAAS,OAAO,OAAgB;AAC9B,KAAI,CAAC,MAAM,WAAW,MAAM,UAAU,CAAC,CAAC,CACtC,QAAO,OAAO,MAAM,CAAC,WAAW,IAAI,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI;AAEtE,QAAO,SAAS,OAAO,GAAG;;AAY5B,MAAa,OAAO,OAAO,QACxB,OAAsB;CACrB,MAAM,GAAG,SAAS,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC;CACvC,SAAS,GAAG,SAAS,KAAK,OAAO,GAAG,GAAG,KAAK,CAAC;CAC7C,WAAW,GAAG,SAAS,KAAK,SAAS,GAAG,GAAG,KAAK,CAAC;CACjD,cAAc,KAAK,OAAO,EAAE,CAAC;CAC7B,WAAW,GAAG,SAAS,KAAK,SAAS,GAAG,GAAG,KAAK,CAAC;CACjD,gBAAgB,EAAE,UAAU;CAC7B,GACD;CACE;CACA;CACA;CACA;CACA;CACD,CACF"}
|
package/dist/esm/color.js
CHANGED
|
@@ -51,24 +51,24 @@ const TONES = [
|
|
|
51
51
|
function convertColor(color, fallback) {
|
|
52
52
|
return function(format) {
|
|
53
53
|
try {
|
|
54
|
-
const
|
|
54
|
+
const isAlpha = format.endsWith("a");
|
|
55
55
|
if (/^[0-9a-fA-F]{6}$/.test(color)) color = "#" + color;
|
|
56
56
|
if (format.startsWith("hex")) {
|
|
57
57
|
let hexa = c.toHex(color);
|
|
58
|
-
if (
|
|
58
|
+
if (isAlpha) {
|
|
59
59
|
if (hexa.length === 7) hexa += "ff";
|
|
60
|
-
} else hexa = hexa.replace(/^#([0-9a-fA-F]{6})[0-9a-fA-F]{2}$/, "
|
|
60
|
+
} else hexa = hexa.replace(/^#(?:[0-9a-fA-F]{6})[0-9a-fA-F]{2}$/, "$1");
|
|
61
61
|
return hexa;
|
|
62
62
|
} else if (format.startsWith("hsl")) {
|
|
63
63
|
let hsla = c.toHsla(color);
|
|
64
|
-
if (!
|
|
64
|
+
if (!isAlpha) {
|
|
65
65
|
hsla = hsla.replace(/hsla/, "hsl");
|
|
66
66
|
hsla = hsla.replace(/,\s*\d+(\.\d+)?\)$/, ")");
|
|
67
67
|
}
|
|
68
68
|
return hsla;
|
|
69
69
|
} else {
|
|
70
70
|
let rgba = c.toRgba(color);
|
|
71
|
-
if (!
|
|
71
|
+
if (!isAlpha) {
|
|
72
72
|
rgba = rgba.replace(/rgba/, "rgb");
|
|
73
73
|
rgba = rgba.replace(/,\s*\d+(\.\d+)?\)$/, ")");
|
|
74
74
|
}
|
|
@@ -80,7 +80,8 @@ function convertColor(color, fallback) {
|
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
function calcFormat(color) {
|
|
83
|
-
if (color.startsWith("hsl")
|
|
83
|
+
if (color.startsWith("hsl")) return color.startsWith("hsla") ? "hsla" : "hsl";
|
|
84
|
+
else if (color.startsWith("rgb")) return color.startsWith("rgba") ? "rgba" : "rgb";
|
|
84
85
|
else return color.length === 9 ? "hexa" : "hex";
|
|
85
86
|
}
|
|
86
87
|
function getAlpha(color) {
|
|
@@ -108,9 +109,12 @@ function parseToHsla(color, fallback) {
|
|
|
108
109
|
}
|
|
109
110
|
}
|
|
110
111
|
function parseToHsv(color, fallback) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
let [r, g, b, a] = parseToRgba(color, fallback) ?? [
|
|
113
|
+
255,
|
|
114
|
+
255,
|
|
115
|
+
255,
|
|
116
|
+
1
|
|
117
|
+
];
|
|
114
118
|
r = r / 255;
|
|
115
119
|
g = g / 255;
|
|
116
120
|
b = b / 255;
|
package/dist/esm/color.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.js","names":["rgb: [number, number, number]","v"],"sources":["../../src/color.ts"],"sourcesContent":["import * as c from \"color2k\"\nimport { isNumber } from \"./assertion\"\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 \"error\",\n \"link\",\n] as const\n\nexport const DEFAULT_COLOR_SCHEMES = [\n \"gray\",\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 const COLOR_SCHEMES = [\n ...SEMANTIC_COLOR_SCHEMES,\n ...DEFAULT_COLOR_SCHEMES,\n]\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport function convertColor(\n color: string,\n fallback: string,\n): {\n (format: ColorFormat): string\n}\nexport function convertColor(\n color: string,\n fallback?: string,\n): {\n (format: ColorFormat): string | undefined\n}\nexport function convertColor(color: string, fallback?: string) {\n return function (format: ColorFormat) {\n try {\n const alpha = 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 (alpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/^#([0-9a-fA-F]{6})[0-9a-fA-F]{2}$/, \"#$1\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!alpha) {\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 (!alpha) {\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\") || color.startsWith(\"rgb\")) {\n return color.split(\"(\")[0] as ColorFormat\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(\n color: string,\n fallback: string,\n): [number, number, number, number]\nexport function parseToRgba(\n color: string,\n fallback?: string,\n): [number, number, number, number] | undefined\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(\n color: string,\n fallback: string,\n): [number, number, number, number]\nexport function parseToHsla(\n color: string,\n fallback?: string,\n): [number, number, number, number] | undefined\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]\nexport function parseToHsv(\n color: string,\n fallback?: string,\n): [number, number, number, number] | undefined\nexport function parseToHsv(color: string, fallback?: string) {\n const rgba = parseToRgba(color, fallback)\n\n if (!rgba) return undefined\n\n let [r, g, b, a] = rgba\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\n// @ts-ignore\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback: string,\n): {\n (format: ColorFormat): string\n}\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n): {\n (format: ColorFormat): string | undefined\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\n// @ts-ignore\nexport function hslaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback: string,\n): {\n (format: ColorFormat): string\n}\nexport function hslaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n): {\n (format: ColorFormat): string | undefined\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\n// @ts-ignore\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback: string,\n): {\n (format: ColorFormat): string\n}\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n): {\n (format: ColorFormat): string | undefined\n}\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\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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"}
|
|
1
|
+
{"version":3,"file":"color.js","names":["rgb: [number, number, number]","v"],"sources":["../../src/color.ts"],"sourcesContent":["import * as c from \"color2k\"\nimport { isNumber } from \"./assertion\"\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 \"error\",\n \"link\",\n] as const\n\nexport const DEFAULT_COLOR_SCHEMES = [\n \"gray\",\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 const COLOR_SCHEMES = [\n ...SEMANTIC_COLOR_SCHEMES,\n ...DEFAULT_COLOR_SCHEMES,\n]\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\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}$/, \"$1\")\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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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import { addDomEvent, focusTransfer, focusTrap, getEventPoint, getEventWindow, i
|
|
|
8
8
|
import { isRtl } from "./i18n.js";
|
|
9
9
|
import { interopDefault } from "./module.js";
|
|
10
10
|
import { clampNumber, countDecimal, percentToValue, roundNumberToStep, toNumber, toPrecision, valueToPercent } from "./number.js";
|
|
11
|
-
import { filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, memoizeObject, merge, objectKeys, omitObject, pickObject, replaceObject, splitObject, wrapWithKey } from "./object.js";
|
|
11
|
+
import { extractObject, filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, memoizeObject, merge, objectKeys, omitObject, pickObject, replaceObject, splitObject, wrapWithKey } from "./object.js";
|
|
12
12
|
import { antonym, bem, cx, escape, isSize, toCamelCase, toKebabCase, toPascalCase, toTitleCase, transformSize } from "./string.js";
|
|
13
13
|
|
|
14
|
-
export { COLOR_SCHEMES, DEFAULT_COLOR_SCHEMES, SEMANTIC_COLOR_SCHEMES, TONES, addDomEvent, alphaToHex, antonym, ariaAttr, bem, calc, calcFormat, cast, clampNumber, contains, convertColor, countDecimal, createdDom, cx, dataAttr, escape, filterEmpty, filterObject, filterUndefined, flattenObject, fnAll, focusTransfer, focusTrap, getActiveElement, getAlpha, getDocument, getDocumentElement, getEventPoint, getEventWindow, getFirstFocusableElement, getFirstTabbableElement, getFocusableElements, getLastTabbableElement, getMemoizedObject, getNextTabbableElement, getNodeName, getObject, getParentNode, getPlatform, getPx, getTabIndex, getTabbableElementEdges, getTabbableElements, getUserAgent, getWindow, handlerAll, hslaTo, hsvTo, interopDefault, is, isActiveElement, isAndroid, isApple, isArray, isBoolean, isBooleanish, isChrome, isDate, isDisabledElement, isDocument, isEditableElement, isEmpty, isEmptyObject, isFirefox, isFocusableElement, isFrame, isFunction, isHTMLElement, isHiddenElement, isIPad, isIPhone, isInputElement, isIos, isMac, isMouseEvent, isMultiTouchEvent, isNode, isNotNumber, isNull, isNumber, isNumeric, isObject, isRegExp, isRtl, isSafari, isShadowRoot, isSize, isString, isTabbableElement, isTouchDevice, isTouchEvent, isTruthyDataAttr, isUndefined, isUnit, isVisibleElement, isVisualViewport, isWebKit, isWindow, memoizeObject, merge, noop, objectKeys, omitObject, parseToHsla, parseToHsv, parseToRgba, percentToValue, pickObject, platform, pointFromMouse, pointFromTouch, replaceObject, rgbaTo, roundNumberToStep, runIfFn, sameColor, scrollLock, setAttribute, setStyle, splitObject, toArray, toCamelCase, toKebabCase, toNumber, toPascalCase, toPrecision, toTitleCase, transformSize, userAgent, uuid, valueToPercent, vendor, wrapWithKey };
|
|
14
|
+
export { COLOR_SCHEMES, DEFAULT_COLOR_SCHEMES, SEMANTIC_COLOR_SCHEMES, TONES, addDomEvent, alphaToHex, antonym, ariaAttr, bem, calc, calcFormat, cast, clampNumber, contains, convertColor, countDecimal, createdDom, cx, dataAttr, escape, extractObject, filterEmpty, filterObject, filterUndefined, flattenObject, fnAll, focusTransfer, focusTrap, getActiveElement, getAlpha, getDocument, getDocumentElement, getEventPoint, getEventWindow, getFirstFocusableElement, getFirstTabbableElement, getFocusableElements, getLastTabbableElement, getMemoizedObject, getNextTabbableElement, getNodeName, getObject, getParentNode, getPlatform, getPx, getTabIndex, getTabbableElementEdges, getTabbableElements, getUserAgent, getWindow, handlerAll, hslaTo, hsvTo, interopDefault, is, isActiveElement, isAndroid, isApple, isArray, isBoolean, isBooleanish, isChrome, isDate, isDisabledElement, isDocument, isEditableElement, isEmpty, isEmptyObject, isFirefox, isFocusableElement, isFrame, isFunction, isHTMLElement, isHiddenElement, isIPad, isIPhone, isInputElement, isIos, isMac, isMouseEvent, isMultiTouchEvent, isNode, isNotNumber, isNull, isNumber, isNumeric, isObject, isRegExp, isRtl, isSafari, isShadowRoot, isSize, isString, isTabbableElement, isTouchDevice, isTouchEvent, isTruthyDataAttr, isUndefined, isUnit, isVisibleElement, isVisualViewport, isWebKit, isWindow, memoizeObject, merge, noop, objectKeys, omitObject, parseToHsla, parseToHsv, parseToRgba, percentToValue, pickObject, platform, pointFromMouse, pointFromTouch, replaceObject, rgbaTo, roundNumberToStep, runIfFn, sameColor, scrollLock, setAttribute, setStyle, splitObject, toArray, toCamelCase, toKebabCase, toNumber, toPascalCase, toPrecision, toTitleCase, transformSize, userAgent, uuid, valueToPercent, vendor, wrapWithKey };
|
package/dist/esm/object.js
CHANGED
|
@@ -35,6 +35,9 @@ function filterObject(obj, func) {
|
|
|
35
35
|
function filterUndefined(obj) {
|
|
36
36
|
return filterObject(obj, (_, val) => val !== null && val !== void 0);
|
|
37
37
|
}
|
|
38
|
+
function extractObject(obj, getter) {
|
|
39
|
+
return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, getter(value)]));
|
|
40
|
+
}
|
|
38
41
|
function merge(target, source, options = {
|
|
39
42
|
mergeArray: false,
|
|
40
43
|
shouldProcess: () => true
|
|
@@ -103,5 +106,5 @@ function wrapWithKey(obj, key) {
|
|
|
103
106
|
}
|
|
104
107
|
|
|
105
108
|
//#endregion
|
|
106
|
-
export { filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, memoizeObject, merge, objectKeys, omitObject, pickObject, replaceObject, splitObject, wrapWithKey };
|
|
109
|
+
export { extractObject, filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, memoizeObject, merge, objectKeys, omitObject, pickObject, replaceObject, splitObject, wrapWithKey };
|
|
107
110
|
//# sourceMappingURL=object.js.map
|
package/dist/esm/object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","names":["result: Dict","picked: Dict","omitted: Dict","targetValue: any"],"sources":["../../src/object.ts"],"sourcesContent":["import type { Dict } from \"./index.types\"\nimport {\n isArray,\n isFunction,\n isObject,\n isString,\n isUndefined,\n} from \"./assertion\"\n\nexport function omitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n): Omit<Y, M> {\n if (!keys.length) return obj\n\n const result: Dict = {}\n\n Object.keys(obj).forEach((key) => {\n if (keys.includes(key as M)) return\n\n result[key] = obj[key]\n })\n\n return result as Omit<Y, M>\n}\n\nexport function pickObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n): { [D in M]: Y[D] } {\n if (!keys.length) return {} as { [D in M]: Y[D] }\n\n const result = {} as { [D in M]: Y[D] }\n\n keys.forEach((key) => {\n if (key in obj) result[key] = obj[key]\n })\n\n return result\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n funcOrKeys?: M[] | readonly M[],\n): [{ [D in M]: Y[D] }, Omit<Y, M>]\n\nexport function splitObject<Y extends Dict, M extends Dict>(\n obj: Dict,\n funcOrKeys?: (key: string) => boolean,\n): [Y, M]\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n funcOrKeys?: ((key: string) => boolean) | M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (\n isFunction(funcOrKeys) ? funcOrKeys(key) : funcOrKeys?.includes(key as M)\n ) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [D in M]: Y[D] }, 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 interface
|
|
1
|
+
{"version":3,"file":"object.js","names":["result: Dict","picked: Dict","omitted: Dict","targetValue: any"],"sources":["../../src/object.ts"],"sourcesContent":["import type { Dict } from \"./index.types\"\nimport {\n isArray,\n isFunction,\n isObject,\n isString,\n isUndefined,\n} from \"./assertion\"\n\nexport function omitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n): Omit<Y, M> {\n if (!keys.length) return obj\n\n const result: Dict = {}\n\n Object.keys(obj).forEach((key) => {\n if (keys.includes(key as M)) return\n\n result[key] = obj[key]\n })\n\n return result as Omit<Y, M>\n}\n\nexport function pickObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n): { [D in M]: Y[D] } {\n if (!keys.length) return {} as { [D in M]: Y[D] }\n\n const result = {} as { [D in M]: Y[D] }\n\n keys.forEach((key) => {\n if (key in obj) result[key] = obj[key]\n })\n\n return result\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n funcOrKeys?: M[] | readonly M[],\n): [{ [D in M]: Y[D] }, Omit<Y, M>]\n\nexport function splitObject<Y extends Dict, M extends Dict>(\n obj: Dict,\n funcOrKeys?: (key: string) => boolean,\n): [Y, M]\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n funcOrKeys?: ((key: string) => boolean) | M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (\n isFunction(funcOrKeys) ? funcOrKeys(key) : funcOrKeys?.includes(key as M)\n ) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [D in M]: Y[D] }, 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 extractObject<Y extends Dict, M>(\n obj: Y,\n getter: (value: Y[keyof Y]) => M,\n) {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [key, getter(value)]),\n ) as { [key in keyof Y]: M }\n}\n\nexport interface mergeOptions {\n debug?: boolean\n mergeArray?: boolean\n shouldProcess?: (value: any) => boolean\n}\n\nexport function merge<Y extends Dict>(\n target: any,\n source: any,\n options: mergeOptions = { mergeArray: false, shouldProcess: () => true },\n): Y {\n let result = Object.assign({}, target)\n\n if (isObject(source) && options.shouldProcess?.(source)) {\n if (isObject(target)) {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n const targetValue: any = target[sourceKey]\n\n if (options.shouldProcess(sourceValue)) {\n if (\n options.mergeArray &&\n isArray(sourceValue) &&\n isArray(targetValue)\n ) {\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, options)\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\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 separator?: string\n shouldProcess?: (value: any) => boolean\n}\n\nexport function flattenObject<Y extends Dict>(\n obj: any,\n {\n maxDepth = Infinity,\n separator = \".\",\n shouldProcess = () => true,\n }: FlattenObjectOptions = {},\n): Y {\n if (!isObject(obj) && !isArray(obj)) return obj\n\n return Object.entries(obj).reduce<any>((result, [key, value]) => {\n if (isObject(value) && shouldProcess(value) && maxDepth > 1) {\n Object.entries(\n flattenObject(value, {\n maxDepth: maxDepth - 1,\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 objectKeys<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) {\n const keys = isString(path)\n ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean)\n : [path]\n\n for (const key of keys) {\n if (!obj) break\n\n obj = obj[key]\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 ): 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)\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 wrapWithKey<Y>(obj: Y, key?: string) {\n if (key) {\n return { [key]: obj }\n } else {\n return obj\n }\n}\n"],"mappings":"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"}
|
package/dist/types/calc.d.ts
CHANGED
package/dist/types/color.d.ts
CHANGED
|
@@ -2,41 +2,18 @@
|
|
|
2
2
|
type ColorFormat = "hex" | "hexa" | "hsl" | "hsla" | "rgb" | "rgba";
|
|
3
3
|
declare const SEMANTIC_COLOR_SCHEMES: readonly ["mono", "primary", "secondary", "info", "success", "warning", "danger", "error", "link"];
|
|
4
4
|
declare const DEFAULT_COLOR_SCHEMES: readonly ["gray", "red", "rose", "pink", "flashy", "orange", "amber", "yellow", "lime", "green", "emerald", "teal", "cyan", "sky", "blue", "indigo", "violet", "purple", "fuchsia"];
|
|
5
|
-
declare const COLOR_SCHEMES: ("mono" | "primary" | "secondary" | "info" | "success" | "warning" | "danger" | "
|
|
5
|
+
declare const COLOR_SCHEMES: ("error" | "mono" | "primary" | "secondary" | "info" | "success" | "warning" | "danger" | "link" | "gray" | "red" | "rose" | "pink" | "flashy" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia")[];
|
|
6
6
|
declare const TONES: readonly [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
7
|
-
declare function convertColor(color: string, fallback
|
|
8
|
-
(format: ColorFormat): string;
|
|
9
|
-
};
|
|
10
|
-
declare function convertColor(color: string, fallback?: string): {
|
|
11
|
-
(format: ColorFormat): string | undefined;
|
|
12
|
-
};
|
|
7
|
+
declare function convertColor(color: string, fallback?: string): (format: ColorFormat) => string | undefined;
|
|
13
8
|
declare function calcFormat(color: string): ColorFormat;
|
|
14
9
|
declare function getAlpha(color: string): number;
|
|
15
10
|
declare function alphaToHex(a: number): string;
|
|
16
|
-
declare function parseToRgba(color: string, fallback: string): [number, number, number, number];
|
|
17
11
|
declare function parseToRgba(color: string, fallback?: string): [number, number, number, number] | undefined;
|
|
18
|
-
declare function parseToHsla(color: string, fallback: string): [number, number, number, number];
|
|
19
12
|
declare function parseToHsla(color: string, fallback?: string): [number, number, number, number] | undefined;
|
|
20
|
-
declare function parseToHsv(color: string, fallback
|
|
21
|
-
declare function
|
|
22
|
-
declare function
|
|
23
|
-
|
|
24
|
-
};
|
|
25
|
-
declare function rgbaTo([r, g, b, a]: [number, number, number, number], fallback?: string): {
|
|
26
|
-
(format: ColorFormat): string | undefined;
|
|
27
|
-
};
|
|
28
|
-
declare function hslaTo([r, g, b, a]: [number, number, number, number], fallback: string): {
|
|
29
|
-
(format: ColorFormat): string;
|
|
30
|
-
};
|
|
31
|
-
declare function hslaTo([r, g, b, a]: [number, number, number, number], fallback?: string): {
|
|
32
|
-
(format: ColorFormat): string | undefined;
|
|
33
|
-
};
|
|
34
|
-
declare function hsvTo([h, s, v, a]: [number, number, number, number?], fallback: string): {
|
|
35
|
-
(format: ColorFormat): string;
|
|
36
|
-
};
|
|
37
|
-
declare function hsvTo([h, s, v, a]: [number, number, number, number?], fallback?: string): {
|
|
38
|
-
(format: ColorFormat): string | undefined;
|
|
39
|
-
};
|
|
13
|
+
declare function parseToHsv(color: string, fallback?: string): [number, number, number, number];
|
|
14
|
+
declare function rgbaTo([r, g, b, a]: [number, number, number, number], fallback?: string): (format?: ColorFormat) => string | undefined;
|
|
15
|
+
declare function hslaTo([h, s, l, a]: [number, number, number, number], fallback?: string): (format?: ColorFormat) => string | undefined;
|
|
16
|
+
declare function hsvTo([h, s, v, a]: [number, number, number, number?], fallback?: string): (format?: ColorFormat) => string | undefined;
|
|
40
17
|
declare function sameColor(color: string | undefined, comparison: string | undefined): boolean;
|
|
41
18
|
//#endregion
|
|
42
19
|
export { COLOR_SCHEMES, ColorFormat, DEFAULT_COLOR_SCHEMES, SEMANTIC_COLOR_SCHEMES, TONES, alphaToHex, calcFormat, convertColor, getAlpha, hslaTo, hsvTo, parseToHsla, parseToHsv, parseToRgba, rgbaTo, sameColor };
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { filterEmpty, toArray } from "./array.js";
|
|
2
2
|
import { AnyString, Booleanish, DeepMerge, DeepPartial, Dict, FunctionOrValue, Length, Merge, Path, Prettify, Primitive, Value } from "./index.types.js";
|
|
3
3
|
import { cast, is, isArray, isBoolean, isBooleanish, isDate, isEmpty, isEmptyObject, isFunction, isNotNumber, isNull, isNumber, isNumeric, isObject, isRegExp, isString, isUndefined, isUnit } from "./assertion.js";
|
|
4
|
-
import { calc } from "./calc.js";
|
|
4
|
+
import { Operand, calc } from "./calc.js";
|
|
5
5
|
import { COLOR_SCHEMES, ColorFormat, DEFAULT_COLOR_SCHEMES, SEMANTIC_COLOR_SCHEMES, TONES, alphaToHex, calcFormat, convertColor, getAlpha, hslaTo, hsvTo, parseToHsla, parseToHsv, parseToRgba, rgbaTo, sameColor } from "./color.js";
|
|
6
6
|
import { ariaAttr, contains, createdDom, dataAttr, getActiveElement, getDocument, getDocumentElement, getFirstFocusableElement, getFirstTabbableElement, getFocusableElements, getLastTabbableElement, getNextTabbableElement, getNodeName, getParentNode, getPlatform, getPx, getTabIndex, getTabbableElementEdges, getTabbableElements, getUserAgent, getWindow, isActiveElement, isAndroid, isApple, isChrome, isDisabledElement, isDocument, isEditableElement, isFirefox, isFocusableElement, isFrame, isHTMLElement, isHiddenElement, isIPad, isIPhone, isInputElement, isIos, isMac, isNode, isSafari, isShadowRoot, isTabbableElement, isTouchDevice, isTruthyDataAttr, isVisibleElement, isVisualViewport, isWebKit, isWindow, platform, scrollLock, setAttribute, setStyle, userAgent, uuid, vendor } from "./dom.js";
|
|
7
7
|
import { AnyPointerEvent, EventMap, EventType, Point, addDomEvent, focusTransfer, focusTrap, getEventPoint, getEventWindow, isMouseEvent, isMultiTouchEvent, isTouchEvent, pointFromMouse, pointFromTouch } from "./event.js";
|
|
@@ -9,6 +9,6 @@ import { fnAll, handlerAll, noop, runIfFn } from "./function.js";
|
|
|
9
9
|
import { isRtl } from "./i18n.js";
|
|
10
10
|
import { interopDefault } from "./module.js";
|
|
11
11
|
import { clampNumber, countDecimal, percentToValue, roundNumberToStep, toNumber, toPrecision, valueToPercent } from "./number.js";
|
|
12
|
-
import { FlattenObjectOptions,
|
|
12
|
+
import { FlattenObjectOptions, extractObject, filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, memoizeObject, merge, mergeOptions, objectKeys, omitObject, pickObject, replaceObject, splitObject, wrapWithKey } from "./object.js";
|
|
13
13
|
import { antonym, bem, cx, escape, isSize, toCamelCase, toKebabCase, toPascalCase, toTitleCase, transformSize } from "./string.js";
|
|
14
|
-
export { AnyPointerEvent, AnyString, Booleanish, COLOR_SCHEMES, ColorFormat, DEFAULT_COLOR_SCHEMES, DeepMerge, DeepPartial, Dict, EventMap, EventType, FlattenObjectOptions, FunctionOrValue, Length, Merge,
|
|
14
|
+
export { AnyPointerEvent, AnyString, Booleanish, COLOR_SCHEMES, ColorFormat, DEFAULT_COLOR_SCHEMES, DeepMerge, DeepPartial, Dict, EventMap, EventType, FlattenObjectOptions, FunctionOrValue, Length, Merge, Operand, Path, Point, Prettify, Primitive, SEMANTIC_COLOR_SCHEMES, TONES, Value, addDomEvent, alphaToHex, antonym, ariaAttr, bem, calc, calcFormat, cast, clampNumber, contains, convertColor, countDecimal, createdDom, cx, dataAttr, escape, extractObject, filterEmpty, filterObject, filterUndefined, flattenObject, fnAll, focusTransfer, focusTrap, getActiveElement, getAlpha, getDocument, getDocumentElement, getEventPoint, getEventWindow, getFirstFocusableElement, getFirstTabbableElement, getFocusableElements, getLastTabbableElement, getMemoizedObject, getNextTabbableElement, getNodeName, getObject, getParentNode, getPlatform, getPx, getTabIndex, getTabbableElementEdges, getTabbableElements, getUserAgent, getWindow, handlerAll, hslaTo, hsvTo, interopDefault, is, isActiveElement, isAndroid, isApple, isArray, isBoolean, isBooleanish, isChrome, isDate, isDisabledElement, isDocument, isEditableElement, isEmpty, isEmptyObject, isFirefox, isFocusableElement, isFrame, isFunction, isHTMLElement, isHiddenElement, isIPad, isIPhone, isInputElement, isIos, isMac, isMouseEvent, isMultiTouchEvent, isNode, isNotNumber, isNull, isNumber, isNumeric, isObject, isRegExp, isRtl, isSafari, isShadowRoot, isSize, isString, isTabbableElement, isTouchDevice, isTouchEvent, isTruthyDataAttr, isUndefined, isUnit, isVisibleElement, isVisualViewport, isWebKit, isWindow, memoizeObject, merge, mergeOptions, noop, objectKeys, omitObject, parseToHsla, parseToHsv, parseToRgba, percentToValue, pickObject, platform, pointFromMouse, pointFromTouch, replaceObject, rgbaTo, roundNumberToStep, runIfFn, sameColor, scrollLock, setAttribute, setStyle, splitObject, toArray, toCamelCase, toKebabCase, toNumber, toPascalCase, toPrecision, toTitleCase, transformSize, userAgent, uuid, valueToPercent, vendor, wrapWithKey };
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
//#region src/index.types.d.ts
|
|
2
2
|
type Primitive = bigint | boolean | null | number | string | symbol | undefined;
|
|
3
|
-
type PathImpl<Y extends number | string | symbol, M
|
|
3
|
+
type PathImpl<Y extends number | string | symbol, M> = Y extends number | string ? M extends Primitive ? `${Y}` : `${Y}.${Path<M>}` : ``;
|
|
4
4
|
type Path<Y> = Y extends any[] ? `${number}` : { [M in keyof Y]-?: PathImpl<M, Y[M]> }[keyof Y];
|
|
5
|
-
type Value<Y extends Dict, M
|
|
5
|
+
type Value<Y extends Dict, M extends string> = M extends `${infer D}.${infer H}` ? Value<Y[D], H> : Y[M];
|
|
6
6
|
interface Dict<Y = any> {
|
|
7
7
|
[key: string]: Y;
|
|
8
8
|
}
|
|
9
9
|
type Prettify<Y> = { [M in keyof Y]: Y[M] } & {};
|
|
10
|
-
type FunctionOrValue<Y, M
|
|
10
|
+
type FunctionOrValue<Y, M> = ((props: Y) => M) | M;
|
|
11
11
|
type AnyString = string & {};
|
|
12
12
|
type Booleanish<Y> = Y extends "false" | "true" ? boolean : Y;
|
|
13
13
|
type Length<Y extends any[]> = Y["length"];
|
|
14
|
-
type Merge<Y, M
|
|
15
|
-
type DeepMerge<Y, M
|
|
14
|
+
type Merge<Y, M> = M & Omit<Y, keyof M>;
|
|
15
|
+
type DeepMerge<Y, M> = Y extends any[] | Date | Function | Primitive ? M : Y extends object ? M extends object ? { [D in keyof M | keyof Y]: D extends keyof M ? D extends keyof Y ? DeepMerge<Y[D], M[D]> : M[D] : D extends keyof Y ? Y[D] : never } : M : M;
|
|
16
16
|
type DeepPartial<Y> = Y extends any[] | Date | Function | Primitive ? Y : { [P in keyof Y]?: DeepPartial<Y[P]> };
|
|
17
17
|
//#endregion
|
|
18
18
|
export { AnyString, Booleanish, DeepMerge, DeepPartial, Dict, FunctionOrValue, Length, Merge, Path, Prettify, Primitive, Value };
|
package/dist/types/object.d.ts
CHANGED
|
@@ -1,36 +1,37 @@
|
|
|
1
1
|
import { Dict } from "./index.types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/object.d.ts
|
|
4
|
-
declare function omitObject<Y
|
|
5
|
-
declare function pickObject<Y
|
|
6
|
-
declare function splitObject<Y
|
|
7
|
-
declare function splitObject<Y
|
|
8
|
-
declare function filterObject<Y
|
|
9
|
-
declare function filterUndefined<Y
|
|
10
|
-
|
|
4
|
+
declare function omitObject<Y extends Dict, M extends keyof Y>(obj: Y, keys: M[] | readonly M[]): Omit<Y, M>;
|
|
5
|
+
declare function pickObject<Y extends Dict, M extends keyof Y>(obj: Y, keys: M[] | readonly M[]): { [D in M]: Y[D] };
|
|
6
|
+
declare function splitObject<Y extends Dict, M extends keyof Y>(obj: Y, funcOrKeys?: M[] | readonly M[]): [{ [D in M]: Y[D] }, Omit<Y, M>];
|
|
7
|
+
declare function splitObject<Y extends Dict, M extends Dict>(obj: Dict, funcOrKeys?: (key: string) => boolean): [Y, M];
|
|
8
|
+
declare function filterObject<Y extends Dict, M extends Dict>(obj: Y, func: (key: keyof Y, value: Y[keyof Y], obj: Y) => boolean): M;
|
|
9
|
+
declare function filterUndefined<Y extends Dict>(obj: Y): Y;
|
|
10
|
+
declare function extractObject<Y extends Dict, M>(obj: Y, getter: (value: Y[keyof Y]) => M): { [key in keyof Y]: M };
|
|
11
|
+
interface mergeOptions {
|
|
11
12
|
debug?: boolean;
|
|
12
13
|
mergeArray?: boolean;
|
|
13
14
|
shouldProcess?: (value: any) => boolean;
|
|
14
15
|
}
|
|
15
|
-
declare function merge<Y
|
|
16
|
+
declare function merge<Y extends Dict>(target: any, source: any, options?: mergeOptions): Y;
|
|
16
17
|
interface FlattenObjectOptions {
|
|
17
18
|
maxDepth?: number;
|
|
18
19
|
separator?: string;
|
|
19
20
|
shouldProcess?: (value: any) => boolean;
|
|
20
21
|
}
|
|
21
|
-
declare function flattenObject<Y
|
|
22
|
+
declare function flattenObject<Y extends Dict>(obj: any, {
|
|
22
23
|
maxDepth,
|
|
23
24
|
separator,
|
|
24
25
|
shouldProcess
|
|
25
|
-
}?: FlattenObjectOptions): Y
|
|
26
|
-
declare function objectKeys<Y
|
|
27
|
-
declare function replaceObject<Y
|
|
26
|
+
}?: FlattenObjectOptions): Y;
|
|
27
|
+
declare function objectKeys<Y extends object>(obj: Y): (keyof Y)[];
|
|
28
|
+
declare function replaceObject<Y = any>(objOrArray: Y, callBack: (value: any) => any): Y;
|
|
28
29
|
declare function getObject(obj: Dict | undefined, path: number | string, fallback?: any): any;
|
|
29
30
|
declare function memoizeObject(func: typeof getObject): <Y>(obj: Dict, path: number | string, fallback?: any) => Y;
|
|
30
31
|
declare const getMemoizedObject: <Y>(obj: Dict, path: number | string, fallback?: any) => Y;
|
|
31
|
-
declare function wrapWithKey<Y
|
|
32
|
-
[key]: Y
|
|
32
|
+
declare function wrapWithKey<Y>(obj: Y, key?: string): Y | {
|
|
33
|
+
[key]: Y;
|
|
33
34
|
};
|
|
34
35
|
//#endregion
|
|
35
|
-
export { FlattenObjectOptions,
|
|
36
|
+
export { FlattenObjectOptions, extractObject, filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, memoizeObject, merge, mergeOptions, objectKeys, omitObject, pickObject, replaceObject, splitObject, wrapWithKey };
|
|
36
37
|
//# sourceMappingURL=object.d.ts.map
|