@yamada-ui/utils 1.5.0 → 1.5.1-dev-20240917033401

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.
Files changed (111) hide show
  1. package/dist/array.d.mts +1 -1
  2. package/dist/array.d.ts +1 -1
  3. package/dist/array.js +3 -1
  4. package/dist/array.js.map +1 -1
  5. package/dist/array.mjs +1 -1
  6. package/dist/assertion.d.mts +14 -14
  7. package/dist/assertion.d.ts +14 -14
  8. package/dist/assertion.js +44 -16
  9. package/dist/assertion.js.map +1 -1
  10. package/dist/assertion.mjs +1 -1
  11. package/dist/calc.d.mts +12 -7
  12. package/dist/calc.d.ts +12 -7
  13. package/dist/calc.js +17 -7
  14. package/dist/calc.js.map +1 -1
  15. package/dist/calc.mjs +1 -1
  16. package/dist/{chunk-ZFE4ZWCP.mjs → chunk-2AWPBKLQ.mjs} +68 -47
  17. package/dist/chunk-2AWPBKLQ.mjs.map +1 -0
  18. package/dist/chunk-5EG6NSMV.mjs +9 -0
  19. package/dist/chunk-5EG6NSMV.mjs.map +1 -0
  20. package/dist/{chunk-I5E5UXSE.mjs → chunk-7XL7BPER.mjs} +52 -44
  21. package/dist/chunk-7XL7BPER.mjs.map +1 -0
  22. package/dist/{chunk-KT4SLZO6.mjs → chunk-7XRVZGET.mjs} +18 -12
  23. package/dist/chunk-7XRVZGET.mjs.map +1 -0
  24. package/dist/{chunk-S35WPDIT.mjs → chunk-AF6MSVQN.mjs} +75 -41
  25. package/dist/chunk-AF6MSVQN.mjs.map +1 -0
  26. package/dist/chunk-APJY76CK.mjs +9 -0
  27. package/dist/chunk-APJY76CK.mjs.map +1 -0
  28. package/dist/{chunk-L56KWSQO.mjs → chunk-OM7WYVSS.mjs} +18 -8
  29. package/dist/chunk-OM7WYVSS.mjs.map +1 -0
  30. package/dist/chunk-QTCZ2LU5.mjs +65 -0
  31. package/dist/chunk-QTCZ2LU5.mjs.map +1 -0
  32. package/dist/chunk-RCW53QOG.mjs +31 -0
  33. package/dist/chunk-RCW53QOG.mjs.map +1 -0
  34. package/dist/chunk-TJ7CW2M5.mjs +365 -0
  35. package/dist/chunk-TJ7CW2M5.mjs.map +1 -0
  36. package/dist/{chunk-2AQWXBLU.mjs → chunk-WU6FTFUV.mjs} +15 -7
  37. package/dist/chunk-WU6FTFUV.mjs.map +1 -0
  38. package/dist/chunk-Z4AGSEWZ.mjs +63 -0
  39. package/dist/chunk-Z4AGSEWZ.mjs.map +1 -0
  40. package/dist/color.d.mts +24 -24
  41. package/dist/color.d.ts +24 -24
  42. package/dist/color.js +212 -158
  43. package/dist/color.js.map +1 -1
  44. package/dist/color.mjs +3 -3
  45. package/dist/dom.d.mts +29 -29
  46. package/dist/dom.d.ts +29 -29
  47. package/dist/dom.js +79 -41
  48. package/dist/dom.js.map +1 -1
  49. package/dist/dom.mjs +2 -2
  50. package/dist/event.d.mts +13 -13
  51. package/dist/event.d.ts +13 -13
  52. package/dist/event.js +37 -23
  53. package/dist/event.js.map +1 -1
  54. package/dist/event.mjs +1 -1
  55. package/dist/function.d.mts +3 -3
  56. package/dist/function.d.ts +3 -3
  57. package/dist/function.js +19 -9
  58. package/dist/function.js.map +1 -1
  59. package/dist/function.mjs +2 -2
  60. package/dist/index.d.mts +1 -1
  61. package/dist/index.d.ts +1 -1
  62. package/dist/index.js +531 -346
  63. package/dist/index.js.map +1 -1
  64. package/dist/index.mjs +12 -12
  65. package/dist/index.types.d.mts +5 -2
  66. package/dist/index.types.d.ts +5 -2
  67. package/dist/index.types.js.map +1 -1
  68. package/dist/module.d.mts +1 -1
  69. package/dist/module.d.ts +1 -1
  70. package/dist/module.js +3 -1
  71. package/dist/module.js.map +1 -1
  72. package/dist/module.mjs +1 -1
  73. package/dist/number.d.mts +7 -7
  74. package/dist/number.d.ts +7 -7
  75. package/dist/number.js +17 -11
  76. package/dist/number.js.map +1 -1
  77. package/dist/number.mjs +1 -1
  78. package/dist/object.d.mts +19 -15
  79. package/dist/object.d.ts +19 -15
  80. package/dist/object.js +65 -47
  81. package/dist/object.js.map +1 -1
  82. package/dist/object.mjs +2 -2
  83. package/dist/react.d.mts +25 -35
  84. package/dist/react.d.ts +25 -35
  85. package/dist/react.js +78 -49
  86. package/dist/react.js.map +1 -1
  87. package/dist/react.mjs +2 -2
  88. package/dist/string.d.mts +5 -5
  89. package/dist/string.d.ts +5 -5
  90. package/dist/string.js +14 -6
  91. package/dist/string.js.map +1 -1
  92. package/dist/string.mjs +1 -1
  93. package/package.json +1 -1
  94. package/dist/chunk-2AQWXBLU.mjs.map +0 -1
  95. package/dist/chunk-5OUUTZYQ.mjs +0 -7
  96. package/dist/chunk-5OUUTZYQ.mjs.map +0 -1
  97. package/dist/chunk-I5E5UXSE.mjs.map +0 -1
  98. package/dist/chunk-KT4SLZO6.mjs.map +0 -1
  99. package/dist/chunk-L56KWSQO.mjs.map +0 -1
  100. package/dist/chunk-MMZ4T26E.mjs +0 -51
  101. package/dist/chunk-MMZ4T26E.mjs.map +0 -1
  102. package/dist/chunk-NBL5H4TH.mjs +0 -35
  103. package/dist/chunk-NBL5H4TH.mjs.map +0 -1
  104. package/dist/chunk-S35WPDIT.mjs.map +0 -1
  105. package/dist/chunk-VRHGQ632.mjs +0 -23
  106. package/dist/chunk-VRHGQ632.mjs.map +0 -1
  107. package/dist/chunk-WV6P7ZCI.mjs +0 -7
  108. package/dist/chunk-WV6P7ZCI.mjs.map +0 -1
  109. package/dist/chunk-ZFE4ZWCP.mjs.map +0 -1
  110. package/dist/chunk-ZMR5WZIP.mjs +0 -321
  111. package/dist/chunk-ZMR5WZIP.mjs.map +0 -1
package/dist/color.js CHANGED
@@ -61,24 +61,34 @@ module.exports = __toCommonJS(color_exports);
61
61
  var c = __toESM(require("color2k"));
62
62
 
63
63
  // src/assertion.ts
64
- var isNumber = (value) => typeof value === "number";
65
- var isString = (value) => Object.prototype.toString.call(value) === "[object String]";
66
- var isUndefined = (value) => typeof value === "undefined" && value === void 0;
67
- var isObject = (value) => value !== null && (typeof value === "object" || typeof value === "function") && !isArray(value);
68
- var isArray = (value) => Array.isArray(value);
64
+ function isNumber(value) {
65
+ return typeof value === "number";
66
+ }
67
+ function isString(value) {
68
+ return Object.prototype.toString.call(value) === "[object String]";
69
+ }
70
+ function isUndefined(value) {
71
+ return typeof value === "undefined" && value === void 0;
72
+ }
73
+ function isObject(value) {
74
+ return value !== null && (typeof value === "object" || typeof value === "function") && !isArray(value);
75
+ }
76
+ function isArray(value) {
77
+ return Array.isArray(value);
78
+ }
69
79
 
70
80
  // src/object.ts
71
- var getObject = (obj, path, fallback, i) => {
81
+ function getObject(obj, path, fallback, i) {
72
82
  const k = isString(path) ? path.split(/\[(.*?)\]|\./).filter(Boolean) : [path];
73
83
  for (i = 0; i < k.length; i += 1) {
74
84
  if (!obj) break;
75
85
  obj = obj[k[i]];
76
86
  }
77
87
  return obj === void 0 ? fallback : obj;
78
- };
79
- var memoizeObject = (func) => {
88
+ }
89
+ function memoizeObject(func) {
80
90
  const cache = /* @__PURE__ */ new WeakMap();
81
- const memoizedFunc = (obj, path, fallback, i) => {
91
+ function memoizedFunc(obj, path, fallback, i) {
82
92
  if (isUndefined(obj)) return func(obj, path, fallback);
83
93
  if (!cache.has(obj)) cache.set(obj, /* @__PURE__ */ new Map());
84
94
  const map = cache.get(obj);
@@ -86,9 +96,9 @@ var memoizeObject = (func) => {
86
96
  const value = func(obj, path, fallback, i);
87
97
  map.set(path, value);
88
98
  return value;
89
- };
99
+ }
90
100
  return memoizedFunc;
91
- };
101
+ }
92
102
  var getMemoizedObject = memoizeObject(getObject);
93
103
 
94
104
  // src/color.ts
@@ -137,75 +147,93 @@ var TONES = [
137
147
  900,
138
148
  950
139
149
  ];
140
- var isGray = (colorScheme) => colorScheme === "gray" || colorScheme === "neutral";
141
- var isAccessible = (colorScheme) => colorScheme === "yellow" || colorScheme === "cyan" || colorScheme === "lime";
142
- var getColor = (color, fallback = "#000000") => (theme = {}, colorMode = "light", breakpoint = "base") => {
143
- var _a, _b, _c, _d, _e, _f;
144
- const [token, tone] = color.split(".");
145
- if (tone) {
146
- const [, relatedToken] = (_c = Object.entries((_b = (_a = theme.semantics) == null ? void 0 : _a.colorSchemes) != null ? _b : {}).find(
147
- ([semanticToken]) => token === semanticToken
148
- )) != null ? _c : [];
149
- if (relatedToken) color = `${relatedToken}.${tone}`;
150
- } else {
151
- const [, relatedColor] = (_f = Object.entries((_e = (_d = theme.semantics) == null ? void 0 : _d.colors) != null ? _e : {}).find(
152
- ([semanticToken]) => token === semanticToken
153
- )) != null ? _f : [];
154
- if (relatedColor) color = relatedColor;
155
- }
156
- const hex = getMemoizedObject(
157
- theme,
158
- `colors.${color}`,
159
- color
160
- );
161
- try {
162
- if (isArray(hex)) {
163
- return c.toHex(String(hex[colorMode !== "dark" ? 0 : 1]));
164
- } else if (isObject(hex)) {
165
- return c.toHex(String(hex[breakpoint]));
150
+ function isGray(colorScheme) {
151
+ return colorScheme === "gray" || colorScheme === "neutral";
152
+ }
153
+ function isAccessible(colorScheme) {
154
+ return colorScheme === "yellow" || colorScheme === "cyan" || colorScheme === "lime";
155
+ }
156
+ function getColor(color, fallback = "#000000") {
157
+ return function(theme = {}, colorMode = "light", breakpoint = "base") {
158
+ var _a, _b, _c, _d, _e, _f;
159
+ const [token, tone] = color.split(".");
160
+ if (tone) {
161
+ const [, relatedToken] = (_c = Object.entries((_b = (_a = theme.semantics) == null ? void 0 : _a.colorSchemes) != null ? _b : {}).find(
162
+ ([semanticToken]) => token === semanticToken
163
+ )) != null ? _c : [];
164
+ if (relatedToken) color = `${relatedToken}.${tone}`;
166
165
  } else {
167
- return c.toHex(String(hex));
166
+ const [, relatedColor] = (_f = Object.entries((_e = (_d = theme.semantics) == null ? void 0 : _d.colors) != null ? _e : {}).find(
167
+ ([semanticToken]) => token === semanticToken
168
+ )) != null ? _f : [];
169
+ if (relatedColor) color = relatedColor;
168
170
  }
169
- } catch {
171
+ const hex = getMemoizedObject(
172
+ theme,
173
+ `colors.${color}`,
174
+ color
175
+ );
170
176
  try {
171
- return c.toHex(fallback);
177
+ if (isArray(hex)) {
178
+ return c.toHex(String(hex[colorMode !== "dark" ? 0 : 1]));
179
+ } else if (isObject(hex)) {
180
+ return c.toHex(String(hex[breakpoint]));
181
+ } else {
182
+ return c.toHex(String(hex));
183
+ }
172
184
  } catch {
173
- return "#000000";
185
+ try {
186
+ return c.toHex(fallback);
187
+ } catch {
188
+ return "#000000";
189
+ }
174
190
  }
175
- }
176
- };
177
- var lightenColor = (color, amount) => (theme, colorMode, breakpoint) => {
178
- const raw = getColor(color, color)(theme, colorMode, breakpoint);
179
- return c.toHex(c.lighten(raw, amount / 100));
180
- };
181
- var darkenColor = (color, amount) => (theme, colorMode, breakpoint) => {
182
- const raw = getColor(color, color)(theme, colorMode, breakpoint);
183
- return c.toHex(c.darken(raw, amount / 100));
184
- };
185
- var tintColor = (color, amount) => (theme, colorMode, breakpoint) => {
186
- const raw = getColor(color, color)(theme, colorMode, breakpoint);
187
- return c.toHex(c.mix(raw, "#fff", amount / 100));
188
- };
189
- var shadeColor = (color, amount) => (theme, colorMode, breakpoint) => {
190
- const raw = getColor(color, color)(theme, colorMode, breakpoint);
191
- return c.toHex(c.mix(raw, "#000", amount / 100));
192
- };
193
- var transparentizeColor = (color, alpha) => (theme, colorMode, breakpoint) => {
194
- const raw = getColor(color, color)(theme, colorMode, breakpoint);
195
- return c.transparentize(raw, 1 - alpha);
196
- };
197
- var randomColor = ({
191
+ };
192
+ }
193
+ function lightenColor(color, amount) {
194
+ return function(theme, colorMode, breakpoint) {
195
+ const raw = getColor(color, color)(theme, colorMode, breakpoint);
196
+ return c.toHex(c.lighten(raw, amount / 100));
197
+ };
198
+ }
199
+ function darkenColor(color, amount) {
200
+ return function(theme, colorMode, breakpoint) {
201
+ const raw = getColor(color, color)(theme, colorMode, breakpoint);
202
+ return c.toHex(c.darken(raw, amount / 100));
203
+ };
204
+ }
205
+ function tintColor(color, amount) {
206
+ return function(theme, colorMode, breakpoint) {
207
+ const raw = getColor(color, color)(theme, colorMode, breakpoint);
208
+ return c.toHex(c.mix(raw, "#fff", amount / 100));
209
+ };
210
+ }
211
+ function shadeColor(color, amount) {
212
+ return function(theme, colorMode, breakpoint) {
213
+ const raw = getColor(color, color)(theme, colorMode, breakpoint);
214
+ return c.toHex(c.mix(raw, "#000", amount / 100));
215
+ };
216
+ }
217
+ function transparentizeColor(color, alpha) {
218
+ return function(theme, colorMode, breakpoint) {
219
+ const raw = getColor(color, color)(theme, colorMode, breakpoint);
220
+ return c.transparentize(raw, 1 - alpha);
221
+ };
222
+ }
223
+ function randomColor({
198
224
  string,
199
225
  colors
200
- } = {}) => {
226
+ } = {}) {
201
227
  const fallback = randomHex();
202
228
  if (string && colors) return randomColorFromList(string, colors);
203
229
  if (string && !colors) return randomColorFromString(string);
204
230
  if (colors && !string) return randomFromList(colors);
205
231
  return fallback;
206
- };
207
- var randomHex = () => `#${Math.floor(Math.random() * 16777215).toString(16).padEnd(6, "0")}`;
208
- var randomColorFromString = (str) => {
232
+ }
233
+ function randomHex() {
234
+ return `#${Math.floor(Math.random() * 16777215).toString(16).padEnd(6, "0")}`;
235
+ }
236
+ function randomColorFromString(str) {
209
237
  let hash = 0;
210
238
  if (str.length === 0) return hash.toString();
211
239
  for (let i = 0; i < str.length; i += 1) {
@@ -218,8 +246,8 @@ var randomColorFromString = (str) => {
218
246
  color += `00${value.toString(16)}`.substr(-2);
219
247
  }
220
248
  return color;
221
- };
222
- var randomColorFromList = (str, list) => {
249
+ }
250
+ function randomColorFromList(str, list) {
223
251
  let index = 0;
224
252
  if (str.length === 0) return list[0];
225
253
  for (let i = 0; i < str.length; i += 1) {
@@ -228,52 +256,66 @@ var randomColorFromList = (str, list) => {
228
256
  }
229
257
  index = (index % list.length + list.length) % list.length;
230
258
  return list[index];
231
- };
232
- var randomFromList = (list) => list[Math.floor(Math.random() * list.length)];
233
- var getBrightness = (color) => {
259
+ }
260
+ function randomFromList(list) {
261
+ return list[Math.floor(Math.random() * list.length)];
262
+ }
263
+ function getBrightness(color) {
234
264
  const [r, g, b] = c.parseToRgba(color);
235
265
  return (r * 299 + g * 587 + b * 114) / 1e3;
236
- };
237
- var isTone = (color) => (theme, colorMode, breakpoint) => {
238
- const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color;
239
- const brightness = getBrightness(raw);
240
- const isDark2 = brightness < 128;
241
- return isDark2 ? "dark" : "light";
242
- };
243
- var isLight = (color) => (theme, colorMode) => isTone(color)(theme, colorMode) === "dark";
244
- var isDark = (color) => (theme, colorMode) => isTone(color)(theme, colorMode) === "light";
245
- var convertColor = (color, fallback) => (format) => {
246
- try {
247
- const isAlpha = format.endsWith("a");
248
- if (/^[0-9a-fA-F]{6}$/.test(color)) color = "#" + color;
249
- if (format.startsWith("hex")) {
250
- let hexa = c.toHex(color);
251
- if (isAlpha) {
252
- if (hexa.length === 7) hexa += "ff";
266
+ }
267
+ function isTone(color) {
268
+ return function(theme, colorMode, breakpoint) {
269
+ const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color;
270
+ const brightness = getBrightness(raw);
271
+ const isDark2 = brightness < 128;
272
+ return isDark2 ? "dark" : "light";
273
+ };
274
+ }
275
+ function isLight(color) {
276
+ return function(theme, colorMode) {
277
+ return isTone(color)(theme, colorMode) === "dark";
278
+ };
279
+ }
280
+ function isDark(color) {
281
+ return function(theme, colorMode) {
282
+ return isTone(color)(theme, colorMode) === "light";
283
+ };
284
+ }
285
+ function convertColor(color, fallback) {
286
+ return function(format) {
287
+ try {
288
+ const isAlpha = format.endsWith("a");
289
+ if (/^[0-9a-fA-F]{6}$/.test(color)) color = "#" + color;
290
+ if (format.startsWith("hex")) {
291
+ let hexa = c.toHex(color);
292
+ if (isAlpha) {
293
+ if (hexa.length === 7) hexa += "ff";
294
+ } else {
295
+ hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, "");
296
+ }
297
+ return hexa;
298
+ } else if (format.startsWith("hsl")) {
299
+ let hsla2 = c.toHsla(color);
300
+ if (!isAlpha) {
301
+ hsla2 = hsla2.replace(/hsla/, "hsl");
302
+ hsla2 = hsla2.replace(/,\s*\d+(\.\d+)?\)$/, ")");
303
+ }
304
+ return hsla2;
253
305
  } else {
254
- hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, "");
306
+ let rgba2 = c.toRgba(color);
307
+ if (!isAlpha) {
308
+ rgba2 = rgba2.replace(/rgba/, "rgb");
309
+ rgba2 = rgba2.replace(/,\s*\d+(\.\d+)?\)$/, ")");
310
+ }
311
+ return rgba2;
255
312
  }
256
- return hexa;
257
- } else if (format.startsWith("hsl")) {
258
- let hsla2 = c.toHsla(color);
259
- if (!isAlpha) {
260
- hsla2 = hsla2.replace(/hsla/, "hsl");
261
- hsla2 = hsla2.replace(/,\s*\d+(\.\d+)?\)$/, ")");
262
- }
263
- return hsla2;
264
- } else {
265
- let rgba2 = c.toRgba(color);
266
- if (!isAlpha) {
267
- rgba2 = rgba2.replace(/rgba/, "rgb");
268
- rgba2 = rgba2.replace(/,\s*\d+(\.\d+)?\)$/, ")");
269
- }
270
- return rgba2;
313
+ } catch {
314
+ if (fallback) return convertColor(fallback)(format);
271
315
  }
272
- } catch {
273
- if (fallback) return convertColor(fallback)(format);
274
- }
275
- };
276
- var calcFormat = (color) => {
316
+ };
317
+ }
318
+ function calcFormat(color) {
277
319
  if (color.startsWith("hsl")) {
278
320
  return color.startsWith("hsla") ? "hsla" : "hsl";
279
321
  } else if (color.startsWith("rgb")) {
@@ -281,30 +323,32 @@ var calcFormat = (color) => {
281
323
  } else {
282
324
  return color.length === 9 ? "hexa" : "hex";
283
325
  }
284
- };
285
- var getAlpha = (color) => c.parseToRgba(color)[3];
286
- var alphaToHex = (a) => {
326
+ }
327
+ function getAlpha(color) {
328
+ return c.parseToRgba(color)[3];
329
+ }
330
+ function alphaToHex(a) {
287
331
  if (0 > a) a = 0;
288
332
  if (1 < a) a = 1;
289
333
  return Math.round(a * 255).toString(16).padStart(2, "0");
290
- };
291
- var parseToRgba2 = (color, fallback) => {
334
+ }
335
+ function parseToRgba2(color, fallback) {
292
336
  try {
293
337
  if (/^[0-9a-fA-F]{6}$/.test(color)) color = "#" + color;
294
338
  return c.parseToRgba(color);
295
339
  } catch {
296
340
  if (fallback) return c.parseToRgba(fallback);
297
341
  }
298
- };
299
- var parseToHsla2 = (color, fallback) => {
342
+ }
343
+ function parseToHsla2(color, fallback) {
300
344
  try {
301
345
  if (/^[0-9a-fA-F]{6}$/.test(color)) color = "#" + color;
302
346
  return c.parseToHsla(color);
303
347
  } catch {
304
348
  if (fallback) return c.parseToHsla(fallback);
305
349
  }
306
- };
307
- var parseToHsv = (color, fallback) => {
350
+ }
351
+ function parseToHsv(color, fallback) {
308
352
  var _a;
309
353
  let [r, g, b, a] = (_a = parseToRgba2(color, fallback)) != null ? _a : [255, 255, 255, 1];
310
354
  r = r / 255;
@@ -328,50 +372,60 @@ var parseToHsv = (color, fallback) => {
328
372
  break;
329
373
  }
330
374
  return [h, s, v, a];
331
- };
332
- var rgbaTo = ([r, g, b, a], fallback) => (format = "hex") => convertColor(c.rgba(r, g, b, a), fallback)(format);
333
- var hslaTo = ([h, s, l, a], fallback) => (format = "hex") => convertColor(c.hsla(h, s, l, a), fallback)(format);
334
- var hsvTo = ([h, s, v, a], fallback) => (format = "hex") => {
335
- h = h / 60;
336
- let rgb = [v, v, v];
337
- let i = Math.floor(h);
338
- let f = h - i;
339
- let p = v * (1 - s);
340
- let q = v * (1 - s * f);
341
- let t = v * (1 - s * (1 - f));
342
- switch (i) {
343
- case 0:
344
- case 6:
345
- rgb = [v, t, p];
346
- break;
347
- case 1:
348
- rgb = [q, v, p];
349
- break;
350
- case 2:
351
- rgb = [p, v, t];
352
- break;
353
- case 3:
354
- rgb = [p, q, v];
355
- break;
356
- case 4:
357
- rgb = [t, p, v];
358
- break;
359
- case 5:
360
- rgb = [v, p, q];
361
- break;
362
- }
363
- let color = `rgb(${rgb.map((v2) => Math.round(v2 * 255)).join(", ")})`;
364
- if (isNumber(a)) color = color.replace(/\)$/, `, ${a})`);
365
- return convertColor(color, fallback)(format);
366
- };
367
- var sameColor = (color, comparison) => {
375
+ }
376
+ function rgbaTo([r, g, b, a], fallback) {
377
+ return function(format = "hex") {
378
+ return convertColor(c.rgba(r, g, b, a), fallback)(format);
379
+ };
380
+ }
381
+ function hslaTo([h, s, l, a], fallback) {
382
+ return function(format = "hex") {
383
+ return convertColor(c.hsla(h, s, l, a), fallback)(format);
384
+ };
385
+ }
386
+ function hsvTo([h, s, v, a], fallback) {
387
+ return function(format = "hex") {
388
+ h = h / 60;
389
+ let rgb = [v, v, v];
390
+ let i = Math.floor(h);
391
+ let f = h - i;
392
+ let p = v * (1 - s);
393
+ let q = v * (1 - s * f);
394
+ let t = v * (1 - s * (1 - f));
395
+ switch (i) {
396
+ case 0:
397
+ case 6:
398
+ rgb = [v, t, p];
399
+ break;
400
+ case 1:
401
+ rgb = [q, v, p];
402
+ break;
403
+ case 2:
404
+ rgb = [p, v, t];
405
+ break;
406
+ case 3:
407
+ rgb = [p, q, v];
408
+ break;
409
+ case 4:
410
+ rgb = [t, p, v];
411
+ break;
412
+ case 5:
413
+ rgb = [v, p, q];
414
+ break;
415
+ }
416
+ let color = `rgb(${rgb.map((v2) => Math.round(v2 * 255)).join(", ")})`;
417
+ if (isNumber(a)) color = color.replace(/\)$/, `, ${a})`);
418
+ return convertColor(color, fallback)(format);
419
+ };
420
+ }
421
+ function sameColor(color, comparison) {
368
422
  var _a, _b;
369
423
  if (!color) return false;
370
424
  if (!comparison) return false;
371
425
  const a = (_a = parseToRgba2(color)) != null ? _a : [];
372
426
  const b = (_b = parseToRgba2(comparison)) != null ? _b : [];
373
427
  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
374
- };
428
+ }
375
429
  // Annotate the CommonJS export names for ESM import in node:
376
430
  0 && (module.exports = {
377
431
  COLOR_SCHEMES,
package/dist/color.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/color.ts","../src/assertion.ts","../src/object.ts"],"sourcesContent":["import * as c from \"color2k\"\nimport { isArray, isNumber, isObject } from \"./assertion\"\nimport type { Dict, StringLiteral } from \"./index.types\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ThemeValue = string | number\ntype Breakpoint = \"base\" | StringLiteral\ntype ColorMode = \"light\" | \"dark\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"rgba\" | \"rgb\" | \"hsl\" | \"hsla\"\n\nexport const SEMANTIC_COLOR_SCHEMES = [\n \"mono\",\n \"primary\",\n \"secondary\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"link\",\n] as const\n\nexport const COLOR_SCHEMES = [\n \"gray\",\n \"neutral\",\n \"red\",\n \"rose\",\n \"pink\",\n \"flashy\",\n \"orange\",\n \"amber\",\n \"yellow\",\n \"lime\",\n \"green\",\n \"emerald\",\n \"teal\",\n \"cyan\",\n \"sky\",\n \"blue\",\n \"indigo\",\n \"violet\",\n \"purple\",\n \"fuchsia\",\n] as const\n\nexport type SemanticColorScheme =\n | (typeof SEMANTIC_COLOR_SCHEMES)[number]\n | StringLiteral\nexport type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport const isGray = (colorScheme: string) =>\n colorScheme === \"gray\" || colorScheme === \"neutral\"\n\nexport const isAccessible = (colorScheme: string) =>\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n\nexport const getColor =\n (color: string, fallback: string = \"#000000\") =>\n (\n theme: Dict = {},\n colorMode: ColorMode = \"light\",\n breakpoint: Breakpoint = \"base\",\n ) => {\n const [token, tone] = color.split(\".\")\n\n if (tone) {\n const [, relatedToken] =\n Object.entries<string>(theme.semantics?.colorSchemes ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedToken) color = `${relatedToken}.${tone}`\n } else {\n const [, relatedColor] =\n Object.entries<string>(theme.semantics?.colors ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedColor) color = relatedColor\n }\n\n const hex = get<ThemeValue | [ThemeValue, ThemeValue] | Dict<ThemeValue>>(\n theme,\n `colors.${color}`,\n color,\n )\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(hex[colorMode !== \"dark\" ? 0 : 1]))\n } else if (isObject(hex)) {\n return c.toHex(String(hex[breakpoint]))\n } else {\n return c.toHex(String(hex))\n }\n } catch {\n try {\n return c.toHex(fallback)\n } catch {\n return \"#000000\"\n }\n }\n }\n\nexport const lightenColor =\n (color: string, amount: number) =>\n (theme?: Dict, colorMode?: ColorMode, breakpoint?: Breakpoint) => {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n\nexport const darkenColor =\n (color: string, amount: number) =>\n (theme?: Dict, colorMode?: ColorMode, breakpoint?: Breakpoint) => {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n\nexport const tintColor =\n (color: string, amount: number) =>\n (theme?: Dict, colorMode?: ColorMode, breakpoint?: Breakpoint) => {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n\nexport const shadeColor =\n (color: string, amount: number) =>\n (theme?: Dict, colorMode?: ColorMode, breakpoint?: Breakpoint) => {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n\nexport const transparentizeColor =\n (color: string, alpha: number) =>\n (theme?: Dict, colorMode?: ColorMode, breakpoint?: Breakpoint) => {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.transparentize(raw, 1 - alpha)\n }\n\nexport const randomColor = ({\n string,\n colors,\n}: { string?: string; colors?: string[] } = {}) => {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors)\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors)\n\n return fallback\n}\n\nconst randomHex = () =>\n `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n\nconst randomColorFromString = (str: string) => {\n let hash = 0\n\n if (str.length === 0) return hash.toString()\n\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n hash = hash & hash\n }\n\n let color = \"#\"\n\n for (let j = 0; j < 3; j += 1) {\n const value = (hash >> (j * 8)) & 255\n\n color += `00${value.toString(16)}`.substr(-2)\n }\n\n return color\n}\n\nconst randomColorFromList = (str: string, list: string[]) => {\n let index = 0\n\n if (str.length === 0) return list[0]\n\n for (let i = 0; i < str.length; i += 1) {\n index = str.charCodeAt(i) + ((index << 5) - index)\n\n index = index & index\n }\n\n index = ((index % list.length) + list.length) % list.length\n\n return list[index]\n}\n\nconst randomFromList = (list: string[]) =>\n list[Math.floor(Math.random() * list.length)]\n\nconst getBrightness = (color: string) => {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport const isTone =\n (color: string) =>\n (theme?: Dict, colorMode?: ColorMode, breakpoint?: Breakpoint) => {\n const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n\nexport const isLight =\n (color: string) => (theme?: Dict, colorMode?: ColorMode) =>\n isTone(color)(theme, colorMode) === \"dark\"\n\nexport const isDark =\n (color: string) => (theme?: Dict, colorMode?: ColorMode) =>\n isTone(color)(theme, colorMode) === \"light\"\n\nexport const convertColor =\n (color: string, fallback?: string) =>\n (format: ColorFormat): string | undefined => {\n try {\n const isAlpha = format.endsWith(\"a\")\n\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n if (format.startsWith(\"hex\")) {\n let hexa = c.toHex(color)\n\n if (isAlpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, \"\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!isAlpha) {\n hsla = hsla.replace(/hsla/, \"hsl\")\n hsla = hsla.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return hsla\n } else {\n let rgba = c.toRgba(color)\n\n if (!isAlpha) {\n rgba = rgba.replace(/rgba/, \"rgb\")\n rgba = rgba.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return rgba\n }\n } catch {\n if (fallback) return convertColor(fallback)(format)\n }\n }\n\nexport const calcFormat = (color: string): ColorFormat => {\n if (color.startsWith(\"hsl\")) {\n return color.startsWith(\"hsla\") ? \"hsla\" : \"hsl\"\n } else if (color.startsWith(\"rgb\")) {\n return color.startsWith(\"rgba\") ? \"rgba\" : \"rgb\"\n } else {\n return color.length === 9 ? \"hexa\" : \"hex\"\n }\n}\n\nexport const getAlpha = (color: string) => c.parseToRgba(color)[3]\n\nexport const alphaToHex = (a: number) => {\n if (0 > a) a = 0\n if (1 < a) a = 1\n\n return Math.round(a * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nexport const parseToRgba = (color: string, fallback?: string) => {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToRgba(color)\n } catch {\n if (fallback) return c.parseToRgba(fallback)\n }\n}\n\nexport const parseToHsla = (color: string, fallback?: string) => {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToHsla(color)\n } catch {\n if (fallback) return c.parseToHsla(fallback)\n }\n}\n\nexport const parseToHsv = (\n color: string,\n fallback?: string,\n): [number, number, number, number] => {\n let [r, g, b, a] = parseToRgba(color, fallback) ?? [255, 255, 255, 1]\n\n r = r / 255\n g = g / 255\n b = b / 255\n\n const [min, max] = [Math.min(r, g, b), Math.max(r, g, b)]\n const delta = max - min\n\n let [h, v, s] = [0, max, max == 0 ? 0 : delta / max]\n\n switch (min) {\n case max:\n h = 0\n break\n\n case r:\n h = 60 * ((b - g) / delta) + 180\n break\n\n case g:\n h = 60 * ((r - b) / delta) + 300\n break\n\n case b:\n h = 60 * ((g - r) / delta) + 60\n break\n }\n\n return [h, s, v, a]\n}\n\nexport const rgbaTo =\n ([r, g, b, a]: [number, number, number, number], fallback?: string) =>\n (format: ColorFormat = \"hex\") =>\n convertColor(c.rgba(r, g, b, a), fallback)(format)\n\nexport const hslaTo =\n ([h, s, l, a]: [number, number, number, number], fallback?: string) =>\n (format: ColorFormat = \"hex\") =>\n convertColor(c.hsla(h, s, l, a), fallback)(format)\n\nexport const hsvTo =\n ([h, s, v, a]: [number, number, number, number?], fallback?: string) =>\n (format: ColorFormat = \"hex\"): string | undefined => {\n h = h / 60\n\n let rgb: [number, number, number] = [v, v, v]\n\n let i = Math.floor(h)\n let f = h - i\n let p = v * (1 - s)\n let q = v * (1 - s * f)\n let t = v * (1 - s * (1 - f))\n\n switch (i) {\n case 0:\n case 6:\n rgb = [v, t, p]\n break\n\n case 1:\n rgb = [q, v, p]\n break\n\n case 2:\n rgb = [p, v, t]\n break\n\n case 3:\n rgb = [p, q, v]\n break\n\n case 4:\n rgb = [t, p, v]\n break\n\n case 5:\n rgb = [v, p, q]\n break\n }\n\n let color = `rgb(${rgb.map((v) => Math.round(v * 255)).join(\", \")})`\n\n if (isNumber(a)) color = color.replace(/\\)$/, `, ${a})`)\n\n return convertColor(color, fallback)(format)\n }\n\nexport const sameColor = (\n color: string | undefined,\n comparison: string | undefined,\n) => {\n if (!color) return false\n if (!comparison) return false\n\n const a = parseToRgba(color) ?? []\n const b = parseToRgba(comparison) ?? []\n\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]\n}\n","import type { Dict } from \"./index.types\"\n\nexport const is = (x: any, y: any) =>\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n\nexport const isNumber = (value: any): value is number =>\n typeof value === \"number\"\n\nexport const isNotNumber = (value: any): boolean =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport const isNumeric = (value: any): boolean =>\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n\nexport const isString = (value: any): value is string =>\n Object.prototype.toString.call(value) === \"[object String]\"\n\nexport const isBoolean = (value: any): value is boolean =>\n typeof value === \"boolean\"\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" && value === undefined\n\nexport const isNull = (value: any): value is null => value === null\n\nexport const isObject = <T extends Dict>(value: any): value is T =>\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n\nexport const isArray = <T extends any[]>(value: any): value is T =>\n Array.isArray(value)\n\nexport const isEmpty = (value: any): boolean =>\n !isArray(value) || !value.length || value.every((v) => v == null)\n\nexport const isFunction = <T extends Function = Function>(\n value: any,\n): value is T => typeof value === \"function\"\n\nexport const isUnit = (value: any): boolean =>\n /[0-9].*(em|rem|ex|rex|cap|rcap|ch|rch|ic|ric|lh|rlh|vw|svw|lvw|dvw|vh|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax|cm|mm|Q|in|pc|pt|px|%|cqw|cqh|cqi|cqb|cqmin|cqmax)$/.test(\n value,\n )\n\nexport const cast = <T>(value: any) => value as T\n","import {\n isObject,\n isArray,\n isFunction,\n isString,\n isUndefined,\n} from \"./assertion\"\nimport type { Dict } from \"./index.types\"\n\nconst omitObjectHelper = <Y extends Dict, M extends keyof Y>(\n obj: Y,\n path: M[] | readonly M[],\n): any => {\n if (!path.length) return obj\n\n const [primaryKey, ...restKeys] = path\n\n if (restKeys.length === 0 && primaryKey in obj) {\n const { [primaryKey]: _, ...rest } = obj\n\n return rest\n }\n\n if (obj[primaryKey] && isObject(obj[primaryKey])) {\n return {\n ...obj,\n [primaryKey]: omitObjectHelper(obj[primaryKey], restKeys),\n }\n }\n\n return obj\n}\n\nexport const omitObject = <\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D extends unknown = unknown,\n>(\n obj: Y,\n keys: M[] | readonly M[],\n) => {\n return (keys as M[]).reduce((prev, key) => {\n const path = (isString(key) ? key.split(\".\") : []) as M[]\n\n return omitObjectHelper(prev, path)\n }, obj) as unknown as D extends unknown ? Omit<Y, M> : D\n}\n\nexport const pickObject = <\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D extends unknown = unknown,\n>(\n obj: Y,\n keys: M[] | readonly M[],\n fallbackValue = \"__fallback\",\n) =>\n (keys as M[]).reduce((prev, key) => {\n const path = isString(key) ? key.split(\".\") : []\n\n if (!path.length) return prev\n\n const value = getMemoizedObject(obj, key as string, fallbackValue)\n\n if (value === fallbackValue) return prev\n\n prev = merge(\n prev,\n path.reduceRight(\n (prev, key) => ({ [key]: key === path.at(-1) ? value : prev }),\n {},\n ),\n )\n\n return prev\n }, {}) as D extends unknown ? { [H in M]: Y[H] } : D\n\nexport const splitObject = <Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n) => {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (keys.includes(key as Y[M])) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [P in M]: Y[P] }, Omit<Y, M>]\n}\n\nexport const filterObject = <Y extends Dict, M extends Dict>(\n obj: Y,\n func: (key: keyof Y, value: Y[keyof Y], obj: Y) => boolean,\n): M => {\n const result: Dict = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const shouldPass = func(key, value, obj)\n\n if (shouldPass) result[key] = value\n })\n\n return result as M\n}\n\nexport const filterUndefined = <Y extends Dict>(obj: Y): Y =>\n filterObject(obj, (_, val) => val !== null && val !== undefined)\n\nexport const merge = <Y extends Dict>(\n target: any,\n source: any,\n mergeArray: boolean = false,\n): Y => {\n let result = Object.assign({}, target)\n\n if (isObject(source)) {\n if (isObject(target)) {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n const targetValue: any = target[sourceKey]\n\n if (mergeArray && isArray(sourceValue) && isArray(targetValue)) {\n result[sourceKey] = targetValue.concat(...sourceValue)\n } else if (\n !isFunction(sourceValue) &&\n isObject(sourceValue) &&\n target.hasOwnProperty(sourceKey)\n ) {\n result[sourceKey] = merge(targetValue, sourceValue, mergeArray)\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\n }\n } else {\n result = source\n }\n }\n\n return result as Y\n}\n\nexport type FlattenObjectOptions = {\n maxDepth?: number\n omitKeys?: string[]\n separator?: string\n shouldProcess?: (obj: any) => boolean\n}\n\nexport const flattenObject = <Y extends Dict>(\n obj: any,\n { maxDepth, omitKeys, separator, shouldProcess }: FlattenObjectOptions = {},\n): Y => {\n maxDepth ??= Infinity\n omitKeys ??= []\n separator ??= \".\"\n\n if ((!isObject(obj) && !isArray(obj)) || !maxDepth) return obj\n\n return Object.entries(obj).reduce((result, [key, value]) => {\n if (\n isObject(value) &&\n !Object.keys(value).some((key) => omitKeys?.includes(key)) &&\n (!shouldProcess || shouldProcess(value))\n ) {\n Object.entries(\n flattenObject(value, {\n maxDepth: maxDepth - 1,\n omitKeys,\n separator,\n shouldProcess,\n }),\n ).forEach(([childKey, childValue]) => {\n result[`${key}${separator}${childKey}`] = childValue\n })\n } else {\n result[key] = value\n }\n\n return result\n }, {} as any) as Y\n}\n\nexport const objectFromEntries = <Y extends Dict>(entries: any[][]): Y =>\n entries.reduce((result, [key, value]) => {\n result[key] = value\n\n return result\n }, {} as any) as Y\n\nexport const keysFormObject = <Y extends Dict>(obj: Y): (keyof Y)[] =>\n Object.keys(obj)\n\nexport const replaceObject = <Y extends any>(\n objOrArray: Y,\n callBack: (value: any) => any,\n): Y => {\n if (isArray(objOrArray)) {\n return objOrArray.map(callBack) as Y\n } else if (isObject(objOrArray)) {\n return Object.entries(objOrArray).reduce((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {} as Dict) as Y\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport const getObject = (\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n) => {\n const k = isString(path) ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean) : [path]\n\n for (i = 0; i < k.length; i += 1) {\n if (!obj) break\n\n obj = obj[k[i]]\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport const memoizeObject = (func: typeof getObject) => {\n const cache = new WeakMap()\n\n const memoizedFunc = <Y extends unknown = any>(\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n ): Y => {\n if (isUndefined(obj)) return func(obj, path, fallback)\n\n if (!cache.has(obj)) cache.set(obj, new Map())\n\n const map = cache.get(obj)\n\n if (map.has(path)) return map.get(path)\n\n const value = func(obj, path, fallback, i)\n\n map.set(path, value)\n\n return value as Y\n }\n\n return memoizedFunc\n}\n\nexport const getMemoizedObject = memoizeObject(getObject)\n\nexport const assignAfter = (target: Record<string, any>, ...sources: any[]) => {\n if (target == null)\n throw new TypeError(\"Cannot convert undefined or null to object\")\n\n const result: Record<string, unknown> = { ...target }\n\n for (const nextSource of sources) {\n if (nextSource == null) continue\n\n for (const nextKey in nextSource) {\n if (!Object.prototype.hasOwnProperty.call(nextSource, nextKey)) continue\n\n if (nextKey in result) delete result[nextKey]\n\n result[nextKey] = nextSource[nextKey]\n }\n }\n\n return result\n}\n"],"mappings":"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","names":["parseToHsla","parseToRgba","isDark","hsla","rgba","parseToRgba","parseToHsla","v"]}
1
+ {"version":3,"sources":["../src/color.ts","../src/assertion.ts","../src/object.ts"],"sourcesContent":["import * as c from \"color2k\"\nimport { isArray, isNumber, isObject } from \"./assertion\"\nimport type { Dict, StringLiteral } from \"./index.types\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ThemeValue = string | number\ntype Breakpoint = \"base\" | StringLiteral\ntype ColorMode = \"light\" | \"dark\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"rgba\" | \"rgb\" | \"hsl\" | \"hsla\"\n\nexport const SEMANTIC_COLOR_SCHEMES = [\n \"mono\",\n \"primary\",\n \"secondary\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"link\",\n] as const\n\nexport const COLOR_SCHEMES = [\n \"gray\",\n \"neutral\",\n \"red\",\n \"rose\",\n \"pink\",\n \"flashy\",\n \"orange\",\n \"amber\",\n \"yellow\",\n \"lime\",\n \"green\",\n \"emerald\",\n \"teal\",\n \"cyan\",\n \"sky\",\n \"blue\",\n \"indigo\",\n \"violet\",\n \"purple\",\n \"fuchsia\",\n] as const\n\nexport type SemanticColorScheme =\n | (typeof SEMANTIC_COLOR_SCHEMES)[number]\n | StringLiteral\nexport type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport function isGray(colorScheme: string) {\n return colorScheme === \"gray\" || colorScheme === \"neutral\"\n}\n\nexport function isAccessible(colorScheme: string) {\n return (\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n )\n}\n\nexport function getColor(color: string, fallback: string = \"#000000\") {\n return function (\n theme: Dict = {},\n colorMode: ColorMode = \"light\",\n breakpoint: Breakpoint = \"base\",\n ) {\n const [token, tone] = color.split(\".\")\n\n if (tone) {\n const [, relatedToken] =\n Object.entries<string>(theme.semantics?.colorSchemes ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedToken) color = `${relatedToken}.${tone}`\n } else {\n const [, relatedColor] =\n Object.entries<string>(theme.semantics?.colors ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedColor) color = relatedColor\n }\n\n const hex = get<ThemeValue | [ThemeValue, ThemeValue] | Dict<ThemeValue>>(\n theme,\n `colors.${color}`,\n color,\n )\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(hex[colorMode !== \"dark\" ? 0 : 1]))\n } else if (isObject(hex)) {\n return c.toHex(String(hex[breakpoint]))\n } else {\n return c.toHex(String(hex))\n }\n } catch {\n try {\n return c.toHex(fallback)\n } catch {\n return \"#000000\"\n }\n }\n }\n}\n\nexport function lightenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n}\n\nexport function darkenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n}\n\nexport function tintColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n}\n\nexport function shadeColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n}\n\nexport function transparentizeColor(color: string, alpha: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.transparentize(raw, 1 - alpha)\n }\n}\n\nexport function randomColor({\n string,\n colors,\n}: { string?: string; colors?: string[] } = {}) {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors)\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors)\n\n return fallback\n}\n\nfunction randomHex() {\n return `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n}\n\nfunction randomColorFromString(str: string) {\n let hash = 0\n\n if (str.length === 0) return hash.toString()\n\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n hash = hash & hash\n }\n\n let color = \"#\"\n\n for (let j = 0; j < 3; j += 1) {\n const value = (hash >> (j * 8)) & 255\n\n color += `00${value.toString(16)}`.substr(-2)\n }\n\n return color\n}\n\nfunction randomColorFromList(str: string, list: string[]) {\n let index = 0\n\n if (str.length === 0) return list[0]\n\n for (let i = 0; i < str.length; i += 1) {\n index = str.charCodeAt(i) + ((index << 5) - index)\n\n index = index & index\n }\n\n index = ((index % list.length) + list.length) % list.length\n\n return list[index]\n}\n\nfunction randomFromList(list: string[]) {\n return list[Math.floor(Math.random() * list.length)]\n}\n\nfunction getBrightness(color: string) {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport function isTone(color: string) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n}\n\nexport function isLight(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"dark\"\n }\n}\n\nexport function isDark(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"light\"\n }\n}\n\nexport function convertColor(color: string, fallback?: string) {\n return function (format: ColorFormat): string | undefined {\n try {\n const isAlpha = format.endsWith(\"a\")\n\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n if (format.startsWith(\"hex\")) {\n let hexa = c.toHex(color)\n\n if (isAlpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, \"\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!isAlpha) {\n hsla = hsla.replace(/hsla/, \"hsl\")\n hsla = hsla.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return hsla\n } else {\n let rgba = c.toRgba(color)\n\n if (!isAlpha) {\n rgba = rgba.replace(/rgba/, \"rgb\")\n rgba = rgba.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return rgba\n }\n } catch {\n if (fallback) return convertColor(fallback)(format)\n }\n }\n}\n\nexport function calcFormat(color: string): ColorFormat {\n if (color.startsWith(\"hsl\")) {\n return color.startsWith(\"hsla\") ? \"hsla\" : \"hsl\"\n } else if (color.startsWith(\"rgb\")) {\n return color.startsWith(\"rgba\") ? \"rgba\" : \"rgb\"\n } else {\n return color.length === 9 ? \"hexa\" : \"hex\"\n }\n}\n\nexport function getAlpha(color: string) {\n return c.parseToRgba(color)[3]\n}\n\nexport function alphaToHex(a: number) {\n if (0 > a) a = 0\n if (1 < a) a = 1\n\n return Math.round(a * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nexport function parseToRgba(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToRgba(color)\n } catch {\n if (fallback) return c.parseToRgba(fallback)\n }\n}\n\nexport function parseToHsla(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToHsla(color)\n } catch {\n if (fallback) return c.parseToHsla(fallback)\n }\n}\n\nexport function parseToHsv(\n color: string,\n fallback?: string,\n): [number, number, number, number] {\n let [r, g, b, a] = parseToRgba(color, fallback) ?? [255, 255, 255, 1]\n\n r = r / 255\n g = g / 255\n b = b / 255\n\n const [min, max] = [Math.min(r, g, b), Math.max(r, g, b)]\n const delta = max - min\n\n let [h, v, s] = [0, max, max == 0 ? 0 : delta / max]\n\n switch (min) {\n case max:\n h = 0\n break\n\n case r:\n h = 60 * ((b - g) / delta) + 180\n break\n\n case g:\n h = 60 * ((r - b) / delta) + 300\n break\n\n case b:\n h = 60 * ((g - r) / delta) + 60\n break\n }\n\n return [h, s, v, a]\n}\n\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.rgba(r, g, b, a), fallback)(format)\n }\n}\n\nexport function hslaTo(\n [h, s, l, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.hsla(h, s, l, a), fallback)(format)\n }\n}\n\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\"): string | undefined {\n h = h / 60\n\n let rgb: [number, number, number] = [v, v, v]\n\n let i = Math.floor(h)\n let f = h - i\n let p = v * (1 - s)\n let q = v * (1 - s * f)\n let t = v * (1 - s * (1 - f))\n\n switch (i) {\n case 0:\n case 6:\n rgb = [v, t, p]\n break\n\n case 1:\n rgb = [q, v, p]\n break\n\n case 2:\n rgb = [p, v, t]\n break\n\n case 3:\n rgb = [p, q, v]\n break\n\n case 4:\n rgb = [t, p, v]\n break\n\n case 5:\n rgb = [v, p, q]\n break\n }\n\n let color = `rgb(${rgb.map((v) => Math.round(v * 255)).join(\", \")})`\n\n if (isNumber(a)) color = color.replace(/\\)$/, `, ${a})`)\n\n return convertColor(color, fallback)(format)\n }\n}\n\nexport function sameColor(\n color: string | undefined,\n comparison: string | undefined,\n) {\n if (!color) return false\n if (!comparison) return false\n\n const a = parseToRgba(color) ?? []\n const b = parseToRgba(comparison) ?? []\n\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]\n}\n","import type { Dict } from \"./index.types\"\n\nexport function is(x: any, y: any) {\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport function isNotNumber(value: any): boolean {\n return (\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n )\n}\n\nexport function isNumeric(value: any): boolean {\n return (\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n )\n}\n\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\nexport function isBoolean(value: any): value is boolean {\n return typeof value === \"boolean\"\n}\n\nexport function isUndefined(value: any): value is undefined {\n return typeof value === \"undefined\" && value === undefined\n}\n\nexport function isNull(value: any): value is null {\n return value === null\n}\n\nexport function isObject<T extends Dict>(value: any): value is T {\n return (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n )\n}\n\nexport function isArray<T extends any[]>(value: any): value is T {\n return Array.isArray(value)\n}\n\nexport function isEmpty(value: any): boolean {\n return !isArray(value) || !value.length || value.every((v) => v == null)\n}\n\nexport function isFunction<T extends Function = Function>(\n value: any,\n): value is T {\n return typeof value === \"function\"\n}\n\nexport function isUnit(value: any): boolean {\n return /[0-9].*(em|rem|ex|rex|cap|rcap|ch|rch|ic|ric|lh|rlh|vw|svw|lvw|dvw|vh|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax|cm|mm|Q|in|pc|pt|px|%|cqw|cqh|cqi|cqb|cqmin|cqmax)$/.test(\n value,\n )\n}\n\nexport function cast<T>(value: any) {\n return value as T\n}\n","import {\n isObject,\n isArray,\n isFunction,\n isString,\n isUndefined,\n} from \"./assertion\"\nimport type { Dict } from \"./index.types\"\n\nfunction omitObjectHelper<Y extends Dict, M extends keyof Y>(\n obj: Y,\n path: M[] | readonly M[],\n): any {\n if (!path.length) return obj\n\n const [primaryKey, ...restKeys] = path\n\n if (restKeys.length === 0 && primaryKey in obj) {\n const { [primaryKey]: _, ...rest } = obj\n\n return rest\n }\n\n if (obj[primaryKey] && isObject(obj[primaryKey])) {\n return {\n ...obj,\n [primaryKey]: omitObjectHelper(obj[primaryKey], restKeys),\n }\n }\n\n return obj\n}\n\nexport function omitObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[]) {\n return (keys as M[]).reduce((prev, key) => {\n const path = (isString(key) ? key.split(\".\") : []) as M[]\n\n return omitObjectHelper(prev, path)\n }, obj) as unknown as D extends unknown ? Omit<Y, M> : D\n}\n\nexport function pickObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[], fallbackValue = \"__fallback\") {\n return (keys as M[]).reduce((prev, key) => {\n const path = isString(key) ? key.split(\".\") : []\n\n if (!path.length) return prev\n\n const value = getMemoizedObject(obj, key as string, fallbackValue)\n\n if (value === fallbackValue) return prev\n\n prev = merge(\n prev,\n path.reduceRight(\n (prev, key) => ({ [key]: key === path.at(-1) ? value : prev }),\n {},\n ),\n )\n\n return prev\n }, {}) as D extends unknown ? { [H in M]: Y[H] } : D\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (keys.includes(key as Y[M])) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [P in M]: Y[P] }, Omit<Y, M>]\n}\n\nexport function filterObject<Y extends Dict, M extends Dict>(\n obj: Y,\n func: (key: keyof Y, value: Y[keyof Y], obj: Y) => boolean,\n): M {\n const result: Dict = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const shouldPass = func(key, value, obj)\n\n if (shouldPass) result[key] = value\n })\n\n return result as M\n}\n\nexport function filterUndefined<Y extends Dict>(obj: Y): Y {\n return filterObject(obj, (_, val) => val !== null && val !== undefined)\n}\n\nexport function merge<Y extends Dict>(\n target: any,\n source: any,\n mergeArray: boolean = false,\n): Y {\n let result = Object.assign({}, target)\n\n if (isObject(source)) {\n if (isObject(target)) {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n const targetValue: any = target[sourceKey]\n\n if (mergeArray && isArray(sourceValue) && isArray(targetValue)) {\n result[sourceKey] = targetValue.concat(...sourceValue)\n } else if (\n !isFunction(sourceValue) &&\n isObject(sourceValue) &&\n target.hasOwnProperty(sourceKey)\n ) {\n result[sourceKey] = merge(targetValue, sourceValue, mergeArray)\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\n }\n } else {\n result = source\n }\n }\n\n return result as Y\n}\n\nexport interface FlattenObjectOptions {\n maxDepth?: number\n omitKeys?: string[]\n separator?: string\n shouldProcess?: (obj: any) => boolean\n}\n\nexport function flattenObject<Y extends Dict>(\n obj: any,\n { maxDepth, omitKeys, separator, shouldProcess }: FlattenObjectOptions = {},\n): Y {\n maxDepth ??= Infinity\n omitKeys ??= []\n separator ??= \".\"\n\n if ((!isObject(obj) && !isArray(obj)) || !maxDepth) return obj\n\n return Object.entries(obj).reduce((result, [key, value]) => {\n if (\n isObject(value) &&\n !Object.keys(value).some((key) => omitKeys?.includes(key)) &&\n (!shouldProcess || shouldProcess(value))\n ) {\n Object.entries(\n flattenObject(value, {\n maxDepth: maxDepth - 1,\n omitKeys,\n separator,\n shouldProcess,\n }),\n ).forEach(([childKey, childValue]) => {\n result[`${key}${separator}${childKey}`] = childValue\n })\n } else {\n result[key] = value\n }\n\n return result\n }, {} as any) as Y\n}\n\nexport function objectFromEntries<Y extends Dict>(entries: any[][]): Y {\n return entries.reduce((result, [key, value]) => {\n result[key] = value\n\n return result\n }, {} as any) as Y\n}\n\nexport function keysFormObject<Y extends object>(obj: Y): (keyof Y)[] {\n return Object.keys(obj) as (keyof Y)[]\n}\n\nexport function replaceObject<Y = any>(\n objOrArray: Y,\n callBack: (value: any) => any,\n): Y {\n if (isArray(objOrArray)) {\n return objOrArray.map(callBack) as Y\n } else if (isObject(objOrArray)) {\n return Object.entries(objOrArray).reduce((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {} as Dict) as Y\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport function getObject(\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n) {\n const k = isString(path) ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean) : [path]\n\n for (i = 0; i < k.length; i += 1) {\n if (!obj) break\n\n obj = obj[k[i]]\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport function memoizeObject(func: typeof getObject) {\n const cache = new WeakMap()\n\n function memoizedFunc<Y>(\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n ): Y {\n if (isUndefined(obj)) return func(obj, path, fallback)\n\n if (!cache.has(obj)) cache.set(obj, new Map())\n\n const map = cache.get(obj)\n\n if (map.has(path)) return map.get(path)\n\n const value = func(obj, path, fallback, i)\n\n map.set(path, value)\n\n return value as Y\n }\n\n return memoizedFunc\n}\n\nexport const getMemoizedObject = memoizeObject(getObject)\n\nexport function assignAfter(target: { [key: string]: any }, ...sources: any[]) {\n if (target == null)\n throw new TypeError(\"Cannot convert undefined or null to object\")\n\n const result: { [key: string]: unknown } = { ...target }\n\n for (const nextSource of sources) {\n if (nextSource == null) continue\n\n for (const nextKey in nextSource) {\n if (!Object.prototype.hasOwnProperty.call(nextSource, nextKey)) continue\n\n if (nextKey in result) delete result[nextKey]\n\n result[nextKey] = nextSource[nextKey]\n }\n }\n\n return result\n}\n"],"mappings":"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","names":["parseToHsla","parseToRgba","isDark","hsla","rgba","parseToRgba","parseToHsla","v"]}
package/dist/color.mjs CHANGED
@@ -25,9 +25,9 @@ import {
25
25
  shadeColor,
26
26
  tintColor,
27
27
  transparentizeColor
28
- } from "./chunk-ZMR5WZIP.mjs";
29
- import "./chunk-I5E5UXSE.mjs";
30
- import "./chunk-NBL5H4TH.mjs";
28
+ } from "./chunk-TJ7CW2M5.mjs";
29
+ import "./chunk-7XL7BPER.mjs";
30
+ import "./chunk-Z4AGSEWZ.mjs";
31
31
  export {
32
32
  COLOR_SCHEMES,
33
33
  SEMANTIC_COLOR_SCHEMES,