@yamada-ui/utils 2.1.3-next-20260421174259 → 2.1.3
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/_virtual/{rolldown_runtime.cjs → _rolldown/runtime.cjs} +8 -14
- package/dist/cjs/array.cjs +2 -3
- package/dist/cjs/array.cjs.map +1 -1
- package/dist/cjs/assertion.cjs +1 -2
- package/dist/cjs/assertion.cjs.map +1 -1
- package/dist/cjs/calc.cjs +1 -2
- package/dist/cjs/calc.cjs.map +1 -1
- package/dist/cjs/color.cjs +5 -6
- package/dist/cjs/color.cjs.map +1 -1
- package/dist/cjs/dom.cjs +10 -11
- package/dist/cjs/dom.cjs.map +1 -1
- package/dist/cjs/event.cjs +4 -5
- package/dist/cjs/event.cjs.map +1 -1
- package/dist/cjs/function.cjs +2 -3
- package/dist/cjs/function.cjs.map +1 -1
- package/dist/cjs/i18n.cjs +1 -2
- package/dist/cjs/i18n.cjs.map +1 -1
- package/dist/cjs/index.cjs +14 -14
- package/dist/cjs/module.cjs +3 -4
- package/dist/cjs/module.cjs.map +1 -1
- package/dist/cjs/number.cjs +1 -2
- package/dist/cjs/number.cjs.map +1 -1
- package/dist/cjs/object.cjs +4 -5
- package/dist/cjs/object.cjs.map +1 -1
- package/dist/cjs/string.cjs +2 -3
- package/dist/cjs/string.cjs.map +1 -1
- package/dist/esm/array.js +1 -2
- package/dist/esm/array.js.map +1 -1
- package/dist/esm/assertion.js +1 -1
- package/dist/esm/assertion.js.map +1 -1
- package/dist/esm/calc.js +1 -1
- package/dist/esm/calc.js.map +1 -1
- package/dist/esm/color.js +2 -3
- package/dist/esm/color.js.map +1 -1
- package/dist/esm/dom.js +7 -8
- package/dist/esm/dom.js.map +1 -1
- package/dist/esm/event.js +1 -2
- package/dist/esm/event.js.map +1 -1
- package/dist/esm/function.js +1 -2
- package/dist/esm/function.js.map +1 -1
- package/dist/esm/i18n.js +1 -1
- package/dist/esm/i18n.js.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/module.js +1 -1
- package/dist/esm/module.js.map +1 -1
- package/dist/esm/number.js +1 -1
- package/dist/esm/number.js.map +1 -1
- package/dist/esm/object.js +3 -4
- package/dist/esm/object.js.map +1 -1
- package/dist/esm/string.js +1 -2
- package/dist/esm/string.js.map +1 -1
- package/dist/types/color.d.ts +1 -1
- package/dist/types/index.types.d.ts +5 -5
- package/package.json +21 -4
package/dist/esm/number.js
CHANGED
|
@@ -31,7 +31,7 @@ function percentToValue(n, min, max) {
|
|
|
31
31
|
function clampNumber(n, min, max) {
|
|
32
32
|
return Math.min(Math.max(n, min), max);
|
|
33
33
|
}
|
|
34
|
-
|
|
35
34
|
//#endregion
|
|
36
35
|
export { clampNumber, countDecimal, percentToValue, roundNumberToStep, toNumber, toPrecision, valueToPercent };
|
|
36
|
+
|
|
37
37
|
//# sourceMappingURL=number.js.map
|
package/dist/esm/number.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","names":[],"sources":["../../src/number.ts"],"sourcesContent":["export function toNumber(n: any): number {\n const num = parseFloat(n)\n\n return typeof num !== \"number\" || Number.isNaN(num) ? 0 : num\n}\n\nexport function toPrecision(n: number, precision?: number): string {\n n = toNumber(n)\n\n const scale = 10 ** (precision ?? 10)\n\n n = Math.round(n * scale) / scale\n\n return precision ? n.toFixed(precision) : n.toString()\n}\n\nexport function countDecimal(n: number): number {\n if (!Number.isFinite(n)) return 0\n\n let e = 1\n let p = 0\n\n while (Math.round(n * e) / e !== n) {\n e *= 10\n p += 1\n }\n\n return p\n}\n\nexport function roundNumberToStep(n: number, from: number, step: number) {\n const nextValue = Math.round((n - from) / step) * step + from\n\n const precision = countDecimal(step)\n\n return toPrecision(nextValue, precision)\n}\n\nexport function valueToPercent(n: number, min: number, max: number): number {\n return ((n - min) * 100) / (max - min)\n}\n\nexport function percentToValue(n: number, min: number, max: number) {\n return (max - min) * n + min\n}\n\nexport function clampNumber(n: number, min: number, max: number): number {\n return Math.min(Math.max(n, min), max)\n}\n"],"mappings":";AAAA,SAAgB,SAAS,GAAgB;CACvC,MAAM,MAAM,WAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"number.js","names":[],"sources":["../../src/number.ts"],"sourcesContent":["export function toNumber(n: any): number {\n const num = parseFloat(n)\n\n return typeof num !== \"number\" || Number.isNaN(num) ? 0 : num\n}\n\nexport function toPrecision(n: number, precision?: number): string {\n n = toNumber(n)\n\n const scale = 10 ** (precision ?? 10)\n\n n = Math.round(n * scale) / scale\n\n return precision ? n.toFixed(precision) : n.toString()\n}\n\nexport function countDecimal(n: number): number {\n if (!Number.isFinite(n)) return 0\n\n let e = 1\n let p = 0\n\n while (Math.round(n * e) / e !== n) {\n e *= 10\n p += 1\n }\n\n return p\n}\n\nexport function roundNumberToStep(n: number, from: number, step: number) {\n const nextValue = Math.round((n - from) / step) * step + from\n\n const precision = countDecimal(step)\n\n return toPrecision(nextValue, precision)\n}\n\nexport function valueToPercent(n: number, min: number, max: number): number {\n return ((n - min) * 100) / (max - min)\n}\n\nexport function percentToValue(n: number, min: number, max: number) {\n return (max - min) * n + min\n}\n\nexport function clampNumber(n: number, min: number, max: number): number {\n return Math.min(Math.max(n, min), max)\n}\n"],"mappings":";AAAA,SAAgB,SAAS,GAAgB;CACvC,MAAM,MAAM,WAAW,EAAE;CAEzB,OAAO,OAAO,QAAQ,YAAY,OAAO,MAAM,IAAI,GAAG,IAAI;;AAG5D,SAAgB,YAAY,GAAW,WAA4B;CACjE,IAAI,SAAS,EAAE;CAEf,MAAM,QAAQ,OAAO,aAAa;CAElC,IAAI,KAAK,MAAM,IAAI,MAAM,GAAG;CAE5B,OAAO,YAAY,EAAE,QAAQ,UAAU,GAAG,EAAE,UAAU;;AAGxD,SAAgB,aAAa,GAAmB;CAC9C,IAAI,CAAC,OAAO,SAAS,EAAE,EAAE,OAAO;CAEhC,IAAI,IAAI;CACR,IAAI,IAAI;CAER,OAAO,KAAK,MAAM,IAAI,EAAE,GAAG,MAAM,GAAG;EAClC,KAAK;EACL,KAAK;;CAGP,OAAO;;AAGT,SAAgB,kBAAkB,GAAW,MAAc,MAAc;CAKvE,OAAO,YAJW,KAAK,OAAO,IAAI,QAAQ,KAAK,GAAG,OAAO,MAEvC,aAAa,KAEQ,CAAC;;AAG1C,SAAgB,eAAe,GAAW,KAAa,KAAqB;CAC1E,QAAS,IAAI,OAAO,OAAQ,MAAM;;AAGpC,SAAgB,eAAe,GAAW,KAAa,KAAa;CAClE,QAAQ,MAAM,OAAO,IAAI;;AAG3B,SAAgB,YAAY,GAAW,KAAa,KAAqB;CACvE,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,EAAE,IAAI"}
|
package/dist/esm/object.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { isArray, isFunction, isObject, isString, isUndefined } from "./assertion.js";
|
|
2
|
-
|
|
3
2
|
//#region src/object.ts
|
|
4
3
|
function omitObject(obj, keys) {
|
|
5
4
|
if (!keys.length) return obj;
|
|
@@ -39,8 +38,8 @@ function extractObject(obj, getter) {
|
|
|
39
38
|
return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, getter(value)]));
|
|
40
39
|
}
|
|
41
40
|
function extractFlatObject(obj, getter, condition) {
|
|
42
|
-
function flatMap(obj
|
|
43
|
-
return Object.entries(obj
|
|
41
|
+
function flatMap(obj, rootKey) {
|
|
42
|
+
return Object.entries(obj).flatMap(([key, value]) => condition?.(key, value) ? flatMap(value, rootKey ? `${rootKey}.${key}` : key) : [[rootKey ? `${rootKey}.${key}` : key, getter(value)]]);
|
|
44
43
|
}
|
|
45
44
|
return Object.fromEntries(flatMap(obj));
|
|
46
45
|
}
|
|
@@ -110,7 +109,7 @@ function wrapWithKey(obj, key) {
|
|
|
110
109
|
if (key) return { [key]: obj };
|
|
111
110
|
else return obj;
|
|
112
111
|
}
|
|
113
|
-
|
|
114
112
|
//#endregion
|
|
115
113
|
export { extractFlatObject, extractObject, filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, memoizeObject, merge, objectKeys, omitObject, pickObject, replaceObject, splitObject, wrapWithKey };
|
|
114
|
+
|
|
116
115
|
//# sourceMappingURL=object.js.map
|
package/dist/esm/object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","names":[
|
|
1
|
+
{"version":3,"file":"object.js","names":[],"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 function extractFlatObject<Y extends Dict, M>(\n obj: Y,\n getter: (value: Y[keyof Y]) => M,\n condition?: (key: keyof Y, value: Y[keyof Y]) => boolean,\n) {\n function flatMap(obj: Y, rootKey?: string): [string, M][] {\n return Object.entries(obj).flatMap(([key, value]) =>\n condition?.(key, value)\n ? flatMap(value, rootKey ? `${rootKey}.${key}` : key)\n : [[rootKey ? `${rootKey}.${key}` : key, getter(value)] as const],\n )\n }\n\n return Object.fromEntries(flatMap(obj)) as { [key: string]: 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/string.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { isString } from "./assertion.js";
|
|
2
|
-
|
|
3
2
|
//#region src/string.ts
|
|
4
3
|
function cx(...classNames) {
|
|
5
4
|
const result = classNames.filter((className) => !!className);
|
|
@@ -89,7 +88,7 @@ function match(value, query, strategy = "contains") {
|
|
|
89
88
|
case "startsWith": return value.toLowerCase().startsWith(query.toLowerCase());
|
|
90
89
|
}
|
|
91
90
|
}
|
|
92
|
-
|
|
93
91
|
//#endregion
|
|
94
92
|
export { antonym, bem, cx, escape, isSize, match, toCamelCase, toKebabCase, toPascalCase, toTitleCase, transformSize };
|
|
93
|
+
|
|
95
94
|
//# sourceMappingURL=string.js.map
|
package/dist/esm/string.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.js","names":[
|
|
1
|
+
{"version":3,"file":"string.js","names":[],"sources":["../../src/string.ts"],"sourcesContent":["import type { AnyString } from \"./index.types\"\nimport { isString } from \"./assertion\"\n\nexport function cx(\n ...classNames: (null | string | undefined)[]\n): string | undefined {\n const result = classNames.filter((className) => !!className)\n\n if (!result.length) return undefined\n\n return result.map((className) => className!.trim()).join(\" \")\n}\n\nexport function escape(value: string, replaceValue = \"\"): string {\n return value.replace(/\\s+/g, replaceValue)\n}\n\nexport function antonym(value: string): string {\n switch (value) {\n case \"top\":\n return \"bottom\"\n\n case \"bottom\":\n return \"top\"\n\n case \"left\":\n return \"right\"\n\n case \"right\":\n return \"left\"\n\n case \"start\":\n return \"end\"\n\n case \"end\":\n return \"start\"\n\n case \"x\":\n return \"y\"\n\n case \"y\":\n return \"x\"\n\n case \"enter\":\n return \"exit\"\n\n case \"exit\":\n return \"enter\"\n\n case \"vertical\":\n return \"horizontal\"\n\n case \"horizontal\":\n return \"vertical\"\n\n case \"up\":\n return \"down\"\n\n case \"down\":\n return \"up\"\n\n case \"block\":\n return \"inline\"\n\n case \"inline\":\n return \"block\"\n\n default:\n return value\n }\n}\n\nconst sizeMap: AnyString[] = [\n \"9xs\",\n \"8xs\",\n \"7xs\",\n \"6xs\",\n \"5xs\",\n \"4xs\",\n \"3xs\",\n \"2xs\",\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n \"2xl\",\n \"3xl\",\n \"4xl\",\n \"5xl\",\n \"6xl\",\n \"7xl\",\n \"8xl\",\n \"9xl\",\n]\n\nexport function isSize(value: any): boolean {\n return isString(value) && sizeMap.includes(value)\n}\n\nexport function transformSize<Y = string>(\n token: string | undefined,\n value: number,\n omitTokens: null | string[] = null,\n): undefined | Y {\n if (!token) return undefined\n\n let resolvedSizeMap = sizeMap\n\n if (omitTokens)\n resolvedSizeMap = sizeMap.filter((size) => !omitTokens.includes(size))\n\n const index = resolvedSizeMap.indexOf(token)\n const size = resolvedSizeMap[index + value]\n\n return (size ?? token) as Y\n}\n\nexport function toCamelCase(value: AnyString): string {\n return value\n .replace(/[_-](.)/g, (_, val) => val.toUpperCase())\n .replace(/^(.)/, (_, val) => val.toLowerCase())\n}\n\nexport function toPascalCase(value: AnyString): string {\n return value\n .replace(/[_-](.)/g, (_, val) => val.toUpperCase())\n .replace(/^(.)/, (_, val) => val.toUpperCase())\n}\n\nexport function toKebabCase(value: AnyString): string {\n return value\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, \"$1-$2\")\n .toLowerCase()\n .replace(/^-/, \"\")\n}\n\nexport function toTitleCase(value: AnyString): string {\n return value\n .replace(/([A-Z])/g, \" $1\")\n .replace(/[_-](.)/g, (_, val) => ` ${val.toUpperCase()}`)\n .replace(/^./, (str) => str.toUpperCase())\n .trim()\n}\n\nexport function bem(block: string, element?: string, modifier?: string) {\n let className = block\n\n if (element) className += `__${element}`\n if (modifier) className += `--${modifier}`\n\n return className\n}\n\nexport function match(\n value: string,\n query: string,\n strategy: \"contains\" | \"endsWith\" | \"equals\" | \"startsWith\" = \"contains\",\n) {\n switch (strategy) {\n case \"contains\":\n return value.toLowerCase().includes(query.toLowerCase())\n case \"endsWith\":\n return value.toLowerCase().endsWith(query.toLowerCase())\n case \"equals\":\n return value.toLowerCase() === query.toLowerCase()\n case \"startsWith\":\n return value.toLowerCase().startsWith(query.toLowerCase())\n }\n}\n"],"mappings":";;AAGA,SAAgB,GACd,GAAG,YACiB;CACpB,MAAM,SAAS,WAAW,QAAQ,cAAc,CAAC,CAAC,UAAU;CAE5D,IAAI,CAAC,OAAO,QAAQ,OAAO,KAAA;CAE3B,OAAO,OAAO,KAAK,cAAc,UAAW,MAAM,CAAC,CAAC,KAAK,IAAI;;AAG/D,SAAgB,OAAO,OAAe,eAAe,IAAY;CAC/D,OAAO,MAAM,QAAQ,QAAQ,aAAa;;AAG5C,SAAgB,QAAQ,OAAuB;CAC7C,QAAQ,OAAR;EACE,KAAK,OACH,OAAO;EAET,KAAK,UACH,OAAO;EAET,KAAK,QACH,OAAO;EAET,KAAK,SACH,OAAO;EAET,KAAK,SACH,OAAO;EAET,KAAK,OACH,OAAO;EAET,KAAK,KACH,OAAO;EAET,KAAK,KACH,OAAO;EAET,KAAK,SACH,OAAO;EAET,KAAK,QACH,OAAO;EAET,KAAK,YACH,OAAO;EAET,KAAK,cACH,OAAO;EAET,KAAK,MACH,OAAO;EAET,KAAK,QACH,OAAO;EAET,KAAK,SACH,OAAO;EAET,KAAK,UACH,OAAO;EAET,SACE,OAAO;;;AAIb,MAAM,UAAuB;CAC3B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,SAAgB,OAAO,OAAqB;CAC1C,OAAO,SAAS,MAAM,IAAI,QAAQ,SAAS,MAAM;;AAGnD,SAAgB,cACd,OACA,OACA,aAA8B,MACf;CACf,IAAI,CAAC,OAAO,OAAO,KAAA;CAEnB,IAAI,kBAAkB;CAEtB,IAAI,YACF,kBAAkB,QAAQ,QAAQ,SAAS,CAAC,WAAW,SAAS,KAAK,CAAC;CAExE,MAAM,QAAQ,gBAAgB,QAAQ,MAAM;CAG5C,OAFa,gBAAgB,QAAQ,UAErB;;AAGlB,SAAgB,YAAY,OAA0B;CACpD,OAAO,MACJ,QAAQ,aAAa,GAAG,QAAQ,IAAI,aAAa,CAAC,CAClD,QAAQ,SAAS,GAAG,QAAQ,IAAI,aAAa,CAAC;;AAGnD,SAAgB,aAAa,OAA0B;CACrD,OAAO,MACJ,QAAQ,aAAa,GAAG,QAAQ,IAAI,aAAa,CAAC,CAClD,QAAQ,SAAS,GAAG,QAAQ,IAAI,aAAa,CAAC;;AAGnD,SAAgB,YAAY,OAA0B;CACpD,OAAO,MACJ,QAAQ,gCAAgC,QAAQ,CAChD,aAAa,CACb,QAAQ,MAAM,GAAG;;AAGtB,SAAgB,YAAY,OAA0B;CACpD,OAAO,MACJ,QAAQ,YAAY,MAAM,CAC1B,QAAQ,aAAa,GAAG,QAAQ,IAAI,IAAI,aAAa,GAAG,CACxD,QAAQ,OAAO,QAAQ,IAAI,aAAa,CAAC,CACzC,MAAM;;AAGX,SAAgB,IAAI,OAAe,SAAkB,UAAmB;CACtE,IAAI,YAAY;CAEhB,IAAI,SAAS,aAAa,KAAK;CAC/B,IAAI,UAAU,aAAa,KAAK;CAEhC,OAAO;;AAGT,SAAgB,MACd,OACA,OACA,WAA8D,YAC9D;CACA,QAAQ,UAAR;EACE,KAAK,YACH,OAAO,MAAM,aAAa,CAAC,SAAS,MAAM,aAAa,CAAC;EAC1D,KAAK,YACH,OAAO,MAAM,aAAa,CAAC,SAAS,MAAM,aAAa,CAAC;EAC1D,KAAK,UACH,OAAO,MAAM,aAAa,KAAK,MAAM,aAAa;EACpD,KAAK,cACH,OAAO,MAAM,aAAa,CAAC,WAAW,MAAM,aAAa,CAAC"}
|
package/dist/types/color.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
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
7
|
declare function convertColor(color: string, fallback: string): {
|
|
8
8
|
(format: ColorFormat): string;
|
|
@@ -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/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yamada-ui/utils",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.1.3
|
|
4
|
+
"version": "2.1.3",
|
|
5
5
|
"description": "The utilities for Yamada UI projects",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"utils",
|
|
@@ -33,6 +33,9 @@
|
|
|
33
33
|
"color2k": "^2.0.3"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
+
"@vitest/browser": "^4.1.5",
|
|
37
|
+
"@vitest/browser-playwright": "^4.1.5",
|
|
38
|
+
"playwright": "^1.59.1",
|
|
36
39
|
"react": "^19.2.4",
|
|
37
40
|
"@yamada-ui/workspace": "1.0.0"
|
|
38
41
|
},
|
|
@@ -59,10 +62,24 @@
|
|
|
59
62
|
"clean": "rimraf node_modules dist trace coverage .turbo",
|
|
60
63
|
"build": "tsdown",
|
|
61
64
|
"test": "vitest",
|
|
62
|
-
"test:
|
|
65
|
+
"test:jsdom": "vitest --project=jsdom",
|
|
66
|
+
"test:browser": "vitest --project=browser:chromium --project=browser:firefox --project=browser:webkit",
|
|
67
|
+
"test:chromium": "vitest --project=browser:chromium",
|
|
68
|
+
"test:webkit": "vitest --project=browser:webkit",
|
|
69
|
+
"test:firefox": "vitest --project=browser:firefox",
|
|
63
70
|
"test:dev": "vitest --watch --ui",
|
|
64
|
-
"
|
|
65
|
-
"
|
|
71
|
+
"test:dev:jsdom": "vitest --watch --ui --project=jsdom",
|
|
72
|
+
"test:dev:browser": "vitest --watch --ui --project=browser:chromium --project=browser:firefox --project=browser:webkit",
|
|
73
|
+
"test:dev:chromium": "vitest --watch --ui --project=browser:chromium",
|
|
74
|
+
"test:dev:webkit": "vitest --watch --ui --project=browser:webkit",
|
|
75
|
+
"test:dev:firefox": "vitest --watch --ui --project=browser:firefox",
|
|
76
|
+
"test:coverage": "vitest run --coverage",
|
|
77
|
+
"test:coverage:jsdom": "vitest run --project=jsdom --coverage --coverage.reportsDirectory=coverage/jsdom",
|
|
78
|
+
"test:coverage:chromium": "vitest run --project=browser:chromium --coverage --coverage.provider=istanbul --coverage.reportsDirectory=coverage/chromium",
|
|
79
|
+
"test:coverage:webkit": "vitest run --project=browser:webkit --coverage --coverage.provider=istanbul --coverage.reportsDirectory=coverage/webkit",
|
|
80
|
+
"test:coverage:firefox": "vitest run --project=browser:firefox --coverage --coverage.provider=istanbul --coverage.reportsDirectory=coverage/firefox",
|
|
81
|
+
"typecheck": "tsgo",
|
|
82
|
+
"typetrace": "tsgo --generateTrace ./trace --incremental false",
|
|
66
83
|
"typeanalyze": "npx analyze-trace ./trace --expandTypes=false",
|
|
67
84
|
"lint": "oxlint . --max-warnings=0",
|
|
68
85
|
"format": "pnpm -w format packages/utils",
|