@yamada-ui/utils 2.0.0-dev-20240531201720 → 2.0.0-dev-20250626073729

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 (171) hide show
  1. package/README.md +7 -13
  2. package/dist/cjs/_virtual/rolldown_runtime.cjs +30 -0
  3. package/dist/cjs/array.cjs +14 -0
  4. package/dist/cjs/array.cjs.map +1 -0
  5. package/dist/cjs/assertion.cjs +73 -0
  6. package/dist/cjs/assertion.cjs.map +1 -0
  7. package/dist/cjs/calc.cjs +39 -0
  8. package/dist/cjs/calc.cjs.map +1 -0
  9. package/dist/cjs/color.cjs +247 -0
  10. package/dist/cjs/color.cjs.map +1 -0
  11. package/dist/cjs/dom.cjs +378 -0
  12. package/dist/cjs/dom.cjs.map +1 -0
  13. package/dist/cjs/event.cjs +92 -0
  14. package/dist/cjs/event.cjs.map +1 -0
  15. package/dist/cjs/function.cjs +27 -0
  16. package/dist/cjs/function.cjs.map +1 -0
  17. package/dist/cjs/i18n.cjs +46 -0
  18. package/dist/cjs/i18n.cjs.map +1 -0
  19. package/dist/cjs/index.cjs +148 -0
  20. package/dist/cjs/index.types.cjs +0 -0
  21. package/dist/cjs/module.cjs +9 -0
  22. package/dist/cjs/module.cjs.map +1 -0
  23. package/dist/cjs/number.cjs +46 -0
  24. package/dist/cjs/number.cjs.map +1 -0
  25. package/dist/cjs/object.cjs +120 -0
  26. package/dist/cjs/object.cjs.map +1 -0
  27. package/dist/cjs/string.cjs +95 -0
  28. package/dist/cjs/string.cjs.map +1 -0
  29. package/dist/esm/array.js +13 -0
  30. package/dist/esm/array.js.map +1 -0
  31. package/dist/esm/assertion.js +56 -0
  32. package/dist/esm/assertion.js.map +1 -0
  33. package/dist/esm/calc.js +38 -0
  34. package/dist/esm/calc.js.map +1 -0
  35. package/dist/esm/color.js +232 -0
  36. package/dist/esm/color.js.map +1 -0
  37. package/dist/esm/dom.js +325 -0
  38. package/dist/esm/dom.js.map +1 -0
  39. package/dist/esm/event.js +83 -0
  40. package/dist/esm/event.js.map +1 -0
  41. package/dist/esm/function.js +24 -0
  42. package/dist/esm/function.js.map +1 -0
  43. package/dist/esm/i18n.js +45 -0
  44. package/dist/esm/i18n.js.map +1 -0
  45. package/dist/esm/index.js +14 -0
  46. package/dist/esm/index.types.js +0 -0
  47. package/dist/esm/module.js +8 -0
  48. package/dist/esm/module.js.map +1 -0
  49. package/dist/esm/number.js +39 -0
  50. package/dist/esm/number.js.map +1 -0
  51. package/dist/esm/object.js +108 -0
  52. package/dist/esm/object.js.map +1 -0
  53. package/dist/esm/string.js +86 -0
  54. package/dist/esm/string.js.map +1 -0
  55. package/dist/types/array.d.ts +6 -0
  56. package/dist/types/assertion.d.ts +23 -0
  57. package/dist/types/calc.d.ts +25 -0
  58. package/dist/types/color.d.ts +20 -0
  59. package/dist/types/dom.d.ts +61 -0
  60. package/dist/types/event.d.ts +21 -0
  61. package/dist/types/function.d.ts +8 -0
  62. package/dist/types/i18n.d.ts +5 -0
  63. package/dist/types/index.d.ts +14 -0
  64. package/dist/types/index.types.d.ts +15 -0
  65. package/dist/types/module.d.ts +5 -0
  66. package/dist/types/number.d.ts +11 -0
  67. package/dist/types/object.d.ts +36 -0
  68. package/dist/types/string.d.ts +16 -0
  69. package/package.json +26 -27
  70. package/dist/array.d.mts +0 -3
  71. package/dist/array.d.ts +0 -3
  72. package/dist/array.js +0 -31
  73. package/dist/array.js.map +0 -1
  74. package/dist/array.mjs +0 -7
  75. package/dist/array.mjs.map +0 -1
  76. package/dist/assertion.d.mts +0 -17
  77. package/dist/assertion.d.ts +0 -17
  78. package/dist/assertion.js +0 -67
  79. package/dist/assertion.js.map +0 -1
  80. package/dist/assertion.mjs +0 -31
  81. package/dist/assertion.mjs.map +0 -1
  82. package/dist/calc.d.mts +0 -18
  83. package/dist/calc.d.ts +0 -18
  84. package/dist/calc.js +0 -57
  85. package/dist/calc.js.map +0 -1
  86. package/dist/calc.mjs +0 -7
  87. package/dist/calc.mjs.map +0 -1
  88. package/dist/chunk-5OUUTZYQ.mjs +0 -7
  89. package/dist/chunk-5OUUTZYQ.mjs.map +0 -1
  90. package/dist/chunk-A74F6ICI.mjs +0 -52
  91. package/dist/chunk-A74F6ICI.mjs.map +0 -1
  92. package/dist/chunk-L56KWSQO.mjs +0 -33
  93. package/dist/chunk-L56KWSQO.mjs.map +0 -1
  94. package/dist/chunk-L76GM3GN.mjs +0 -50
  95. package/dist/chunk-L76GM3GN.mjs.map +0 -1
  96. package/dist/chunk-P52P4NMT.mjs +0 -41
  97. package/dist/chunk-P52P4NMT.mjs.map +0 -1
  98. package/dist/chunk-P5JCSYB3.mjs +0 -31
  99. package/dist/chunk-P5JCSYB3.mjs.map +0 -1
  100. package/dist/chunk-PZXEZGEL.mjs +0 -811
  101. package/dist/chunk-PZXEZGEL.mjs.map +0 -1
  102. package/dist/chunk-RSDBT4DI.mjs +0 -1
  103. package/dist/chunk-RSDBT4DI.mjs.map +0 -1
  104. package/dist/chunk-WV6P7ZCI.mjs +0 -7
  105. package/dist/chunk-WV6P7ZCI.mjs.map +0 -1
  106. package/dist/color.d.mts +0 -33
  107. package/dist/color.d.ts +0 -33
  108. package/dist/color.js +0 -374
  109. package/dist/color.js.map +0 -1
  110. package/dist/color.mjs +0 -61
  111. package/dist/color.mjs.map +0 -1
  112. package/dist/dom.d.mts +0 -34
  113. package/dist/dom.d.ts +0 -34
  114. package/dist/dom.js +0 -196
  115. package/dist/dom.js.map +0 -1
  116. package/dist/dom.mjs +0 -65
  117. package/dist/dom.mjs.map +0 -1
  118. package/dist/event.d.mts +0 -30
  119. package/dist/event.d.ts +0 -30
  120. package/dist/event.js +0 -84
  121. package/dist/event.js.map +0 -1
  122. package/dist/event.mjs +0 -23
  123. package/dist/event.mjs.map +0 -1
  124. package/dist/function.d.mts +0 -6
  125. package/dist/function.d.ts +0 -6
  126. package/dist/function.js +0 -51
  127. package/dist/function.js.map +0 -1
  128. package/dist/function.mjs +0 -21
  129. package/dist/function.mjs.map +0 -1
  130. package/dist/index.d.mts +0 -14
  131. package/dist/index.d.ts +0 -14
  132. package/dist/index.js +0 -1162
  133. package/dist/index.js.map +0 -1
  134. package/dist/index.mjs +0 -270
  135. package/dist/index.mjs.map +0 -1
  136. package/dist/index.types.d.mts +0 -12
  137. package/dist/index.types.d.ts +0 -12
  138. package/dist/index.types.js +0 -19
  139. package/dist/index.types.js.map +0 -1
  140. package/dist/index.types.mjs +0 -2
  141. package/dist/index.types.mjs.map +0 -1
  142. package/dist/module.d.mts +0 -3
  143. package/dist/module.d.ts +0 -3
  144. package/dist/module.js +0 -31
  145. package/dist/module.js.map +0 -1
  146. package/dist/module.mjs +0 -7
  147. package/dist/module.mjs.map +0 -1
  148. package/dist/number.d.mts +0 -9
  149. package/dist/number.d.ts +0 -9
  150. package/dist/number.js +0 -71
  151. package/dist/number.js.map +0 -1
  152. package/dist/number.mjs +0 -19
  153. package/dist/number.mjs.map +0 -1
  154. package/dist/object.d.mts +0 -18
  155. package/dist/object.d.ts +0 -18
  156. package/dist/object.js +0 -220
  157. package/dist/object.js.map +0 -1
  158. package/dist/object.mjs +0 -41
  159. package/dist/object.mjs.map +0 -1
  160. package/dist/react.d.mts +0 -105
  161. package/dist/react.d.ts +0 -105
  162. package/dist/react.js +0 -258
  163. package/dist/react.js.map +0 -1
  164. package/dist/react.mjs +0 -55
  165. package/dist/react.mjs.map +0 -1
  166. package/dist/string.d.mts +0 -8
  167. package/dist/string.d.ts +0 -8
  168. package/dist/string.js +0 -77
  169. package/dist/string.js.map +0 -1
  170. package/dist/string.mjs +0 -13
  171. package/dist/string.mjs.map +0 -1
package/README.md CHANGED
@@ -5,19 +5,13 @@
5
5
  ## Installation
6
6
 
7
7
  ```sh
8
- $ pnpm add @yamada-ui/utils
9
- ```
10
-
11
- or
12
-
13
- ```sh
14
- $ yarn add @yamada-ui/utils
15
- ```
16
-
17
- or
18
-
19
- ```sh
20
- $ npm install @yamada-ui/utils
8
+ pnpm add @yamada-ui/utils
9
+ # or
10
+ yarn add @yamada-ui/utils
11
+ # or
12
+ npm install @yamada-ui/utils
13
+ # or
14
+ bun add @yamada-ui/utils
21
15
  ```
22
16
 
23
17
  ## Contribution
@@ -0,0 +1,30 @@
1
+ //#region rolldown:runtime
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+
23
+ //#endregion
24
+
25
+ Object.defineProperty(exports, '__toESM', {
26
+ enumerable: true,
27
+ get: function () {
28
+ return __toESM;
29
+ }
30
+ });
@@ -0,0 +1,14 @@
1
+ const require_assertion = require('./assertion.cjs');
2
+
3
+ //#region src/array.ts
4
+ function filterEmpty(array) {
5
+ return array.filter((value) => value != null && !require_assertion.isEmptyObject(value));
6
+ }
7
+ function toArray(mixedArray) {
8
+ return (Array.isArray(mixedArray) ? mixedArray.flat() : [mixedArray]).filter(Boolean);
9
+ }
10
+
11
+ //#endregion
12
+ exports.filterEmpty = filterEmpty;
13
+ exports.toArray = toArray;
14
+ //# sourceMappingURL=array.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.cjs","names":["array: Y[]","mixedArray: Y"],"sources":["../../src/array.ts"],"sourcesContent":["import { isEmptyObject } from \"./assertion\"\n\nexport function filterEmpty<Y>(array: Y[]): Exclude<Y, null | undefined>[] {\n return array.filter(\n (value) => value != null && !isEmptyObject(value),\n ) as Exclude<Y, null | undefined>[]\n}\n\nexport function toArray<Y>(mixedArray: Y) {\n return (Array.isArray(mixedArray) ? mixedArray.flat() : [mixedArray]).filter(\n Boolean,\n ) as Y extends any[]\n ? Exclude<Y[number], null | undefined>[]\n : Exclude<Y, null | undefined>[]\n}\n"],"mappings":";;;AAEA,SAAgB,YAAeA,OAA4C;AACzE,QAAO,MAAM,OACX,CAAC,UAAU,SAAS,SAAS,gCAAc,MAAM,CAClD;AACF;AAED,SAAgB,QAAWC,YAAe;AACxC,QAAO,CAAC,MAAM,QAAQ,WAAW,GAAG,WAAW,MAAM,GAAG,CAAC,UAAW,GAAE,OACpE,QACD;AAGF"}
@@ -0,0 +1,73 @@
1
+
2
+ //#region src/assertion.ts
3
+ function is(x, y) {
4
+ return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y;
5
+ }
6
+ function isNumber(value) {
7
+ return typeof value === "number";
8
+ }
9
+ function isNotNumber(value) {
10
+ return typeof value !== "number" || Number.isNaN(value) || !Number.isFinite(value);
11
+ }
12
+ function isNumeric(value) {
13
+ return !isNaN(parseFloat(String(value))) && isFinite(Number(value)) && /^-?\d*\.?\d+$/.test(String(value));
14
+ }
15
+ function isString(value) {
16
+ return Object.prototype.toString.call(value) === "[object String]";
17
+ }
18
+ function isBooleanish(value) {
19
+ return isBoolean(value) || value === "true" || value === "false";
20
+ }
21
+ function isBoolean(value) {
22
+ return typeof value === "boolean";
23
+ }
24
+ function isUndefined(value) {
25
+ return typeof value === "undefined";
26
+ }
27
+ function isNull(value) {
28
+ return value === null;
29
+ }
30
+ function isRegExp(value) {
31
+ return value instanceof RegExp;
32
+ }
33
+ function isObject(value) {
34
+ return value !== null && (typeof value === "object" || typeof value === "function") && !isArray(value);
35
+ }
36
+ function isArray(value) {
37
+ return Array.isArray(value);
38
+ }
39
+ function isEmpty(value) {
40
+ return !isArray(value) || !value.length || value.every((v) => v == null);
41
+ }
42
+ function isEmptyObject(value) {
43
+ return isObject(value) && !Object.keys(value).length;
44
+ }
45
+ function isFunction(value) {
46
+ return typeof value === "function";
47
+ }
48
+ function isUnit(value) {
49
+ 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(value);
50
+ }
51
+ function cast(value) {
52
+ return value;
53
+ }
54
+
55
+ //#endregion
56
+ exports.cast = cast;
57
+ exports.is = is;
58
+ exports.isArray = isArray;
59
+ exports.isBoolean = isBoolean;
60
+ exports.isBooleanish = isBooleanish;
61
+ exports.isEmpty = isEmpty;
62
+ exports.isEmptyObject = isEmptyObject;
63
+ exports.isFunction = isFunction;
64
+ exports.isNotNumber = isNotNumber;
65
+ exports.isNull = isNull;
66
+ exports.isNumber = isNumber;
67
+ exports.isNumeric = isNumeric;
68
+ exports.isObject = isObject;
69
+ exports.isRegExp = isRegExp;
70
+ exports.isString = isString;
71
+ exports.isUndefined = isUndefined;
72
+ exports.isUnit = isUnit;
73
+ //# sourceMappingURL=assertion.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion.cjs","names":["x: any","y: any","value: any"],"sources":["../../src/assertion.ts"],"sourcesContent":["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 isBooleanish(value: any): value is boolean {\n return isBoolean(value) || value === \"true\" || value === \"false\"\n}\n\nexport function isBoolean(value: any): value is boolean {\n return typeof value === \"boolean\"\n}\n\nexport function isUndefined(value: any): value is undefined {\n return typeof value === \"undefined\"\n}\n\nexport function isNull(value: any): value is null {\n return value === null\n}\n\nexport function isRegExp(value: any): value is RegExp {\n return value instanceof RegExp\n}\n\nexport function isObject<T extends Dict>(value: any): value is T {\n return (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n )\n}\n\nexport function isArray<T extends any[]>(value: any): value is T {\n return Array.isArray(value)\n}\n\nexport function isEmpty(value: any): boolean {\n return !isArray(value) || !value.length || value.every((v) => v == null)\n}\n\nexport function isEmptyObject(value: any): boolean {\n return isObject(value) && !Object.keys(value).length\n}\n\nexport function isFunction<T extends Function = Function>(\n value: any,\n): value is T {\n return typeof value === \"function\"\n}\n\nexport function isUnit(value: any): boolean {\n return /[0-9].*(em|rem|ex|rex|cap|rcap|ch|rch|ic|ric|lh|rlh|vw|svw|lvw|dvw|vh|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax|cm|mm|Q|in|pc|pt|px|%|cqw|cqh|cqi|cqb|cqmin|cqmax)$/.test(\n value,\n )\n}\n\nexport function cast<T>(value: any) {\n return value as T\n}\n"],"mappings":";;AAEA,SAAgB,GAAGA,GAAQC,GAAQ;AACjC,QAAQ,MAAM,MAAM,MAAM,KAAK,IAAI,MAAM,IAAI,MAAQ,MAAM,KAAK,MAAM;AACvE;AAED,SAAgB,SAASC,OAA6B;AACpD,eAAc,UAAU;AACzB;AAED,SAAgB,YAAYA,OAAqB;AAC/C,eACS,UAAU,YAAY,OAAO,MAAM,MAAM,KAAK,OAAO,SAAS,MAAM;AAE9E;AAED,SAAgB,UAAUA,OAAqB;AAC7C,SACG,MAAM,WAAW,OAAO,MAAM,CAAC,CAAC,IACjC,SAAS,OAAO,MAAM,CAAC,IACvB,gBAAgB,KAAK,OAAO,MAAM,CAAC;AAEtC;AAED,SAAgB,SAASA,OAA6B;AACpD,QAAO,OAAO,UAAU,SAAS,KAAK,MAAM,KAAK;AAClD;AAED,SAAgB,aAAaA,OAA8B;AACzD,QAAO,UAAU,MAAM,IAAI,UAAU,UAAU,UAAU;AAC1D;AAED,SAAgB,UAAUA,OAA8B;AACtD,eAAc,UAAU;AACzB;AAED,SAAgB,YAAYA,OAAgC;AAC1D,eAAc,UAAU;AACzB;AAED,SAAgB,OAAOA,OAA2B;AAChD,QAAO,UAAU;AAClB;AAED,SAAgB,SAASA,OAA6B;AACpD,QAAO,iBAAiB;AACzB;AAED,SAAgB,SAAyBA,OAAwB;AAC/D,QACE,UAAU,gBACF,UAAU,mBAAmB,UAAU,gBAC9C,QAAQ,MAAM;AAElB;AAED,SAAgB,QAAyBA,OAAwB;AAC/D,QAAO,MAAM,QAAQ,MAAM;AAC5B;AAED,SAAgB,QAAQA,OAAqB;AAC3C,SAAQ,QAAQ,MAAM,KAAK,MAAM,UAAU,MAAM,MAAM,CAAC,MAAM,KAAK,KAAK;AACzE;AAED,SAAgB,cAAcA,OAAqB;AACjD,QAAO,SAAS,MAAM,KAAK,OAAO,KAAK,MAAM,CAAC;AAC/C;AAED,SAAgB,WACdA,OACY;AACZ,eAAc,UAAU;AACzB;AAED,SAAgB,OAAOA,OAAqB;AAC1C,QAAO,oNAAoN,KACzN,MACD;AACF;AAED,SAAgB,KAAQA,OAAY;AAClC,QAAO;AACR"}
@@ -0,0 +1,39 @@
1
+
2
+ //#region src/calc.ts
3
+ function toExpression(operator, ...args) {
4
+ return args.join(` ${operator} `).replace(/calc/g, "");
5
+ }
6
+ function add(...args) {
7
+ return `calc(${toExpression("+", ...args)})`;
8
+ }
9
+ function subtract(...args) {
10
+ return `calc(${toExpression("-", ...args)})`;
11
+ }
12
+ function multiply(...args) {
13
+ return `calc(${toExpression("*", ...args)})`;
14
+ }
15
+ function divide(...args) {
16
+ return `calc(${toExpression("/", ...args)})`;
17
+ }
18
+ function negate(value) {
19
+ if (!isNaN(parseFloat(value.toString()))) return String(value).startsWith("-") ? String(value).slice(1) : `-${value}`;
20
+ return multiply(value, -1);
21
+ }
22
+ const calc = Object.assign((x) => ({
23
+ add: (...args) => calc(add(x, ...args)),
24
+ divide: (...args) => calc(divide(x, ...args)),
25
+ multiply: (...args) => calc(multiply(x, ...args)),
26
+ negate: () => calc(negate(x)),
27
+ subtract: (...args) => calc(subtract(x, ...args)),
28
+ toString: () => x.toString()
29
+ }), {
30
+ add,
31
+ divide,
32
+ multiply,
33
+ negate,
34
+ subtract
35
+ });
36
+
37
+ //#endregion
38
+ exports.calc = calc;
39
+ //# sourceMappingURL=calc.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calc.cjs","names":["operator: Operator","value: Operand","x: Operand"],"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,aAAaA,UAAoB,GAAG,MAAiB;AAC5D,QAAO,KAAK,MAAM,GAAG,SAAS,GAAG,CAAC,QAAQ,SAAS,GAAG;AACvD;AAED,SAAS,IAAI,GAAG,MAAiB;AAC/B,SAAQ,OAAO,aAAa,KAAK,GAAG,KAAK,CAAC;AAC3C;AAED,SAAS,SAAS,GAAG,MAAiB;AACpC,SAAQ,OAAO,aAAa,KAAK,GAAG,KAAK,CAAC;AAC3C;AAED,SAAS,SAAS,GAAG,MAAiB;AACpC,SAAQ,OAAO,aAAa,KAAK,GAAG,KAAK,CAAC;AAC3C;AAED,SAAS,OAAO,GAAG,MAAiB;AAClC,SAAQ,OAAO,aAAa,KAAK,GAAG,KAAK,CAAC;AAC3C;AAED,SAAS,OAAOC,OAAgB;AAC9B,MAAK,MAAM,WAAW,MAAM,UAAU,CAAC,CAAC,CACtC,QAAO,OAAO,MAAM,CAAC,WAAW,IAAI,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG;AAEtE,QAAO,SAAS,OAAO,GAAG;AAC3B;AAWD,MAAa,OAAO,OAAO,OACzB,CAACC,OAAsB;CACrB,KAAK,CAAC,GAAG,SAAS,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC;CACvC,QAAQ,CAAC,GAAG,SAAS,KAAK,OAAO,GAAG,GAAG,KAAK,CAAC;CAC7C,UAAU,CAAC,GAAG,SAAS,KAAK,SAAS,GAAG,GAAG,KAAK,CAAC;CACjD,QAAQ,MAAM,KAAK,OAAO,EAAE,CAAC;CAC7B,UAAU,CAAC,GAAG,SAAS,KAAK,SAAS,GAAG,GAAG,KAAK,CAAC;CACjD,UAAU,MAAM,EAAE,UAAU;AAC7B,IACD;CACE;CACA;CACA;CACA;CACA;AACD,EACF"}
@@ -0,0 +1,247 @@
1
+ const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
2
+ const require_assertion = require('./assertion.cjs');
3
+ const color2k = require_rolldown_runtime.__toESM(require("color2k"));
4
+
5
+ //#region src/color.ts
6
+ const SEMANTIC_COLOR_SCHEMES = [
7
+ "mono",
8
+ "primary",
9
+ "secondary",
10
+ "info",
11
+ "success",
12
+ "warning",
13
+ "danger",
14
+ "error",
15
+ "link"
16
+ ];
17
+ const DEFAULT_COLOR_SCHEMES = [
18
+ "gray",
19
+ "red",
20
+ "rose",
21
+ "pink",
22
+ "flashy",
23
+ "orange",
24
+ "amber",
25
+ "yellow",
26
+ "lime",
27
+ "green",
28
+ "emerald",
29
+ "teal",
30
+ "cyan",
31
+ "sky",
32
+ "blue",
33
+ "indigo",
34
+ "violet",
35
+ "purple",
36
+ "fuchsia"
37
+ ];
38
+ const COLOR_SCHEMES = [...SEMANTIC_COLOR_SCHEMES, ...DEFAULT_COLOR_SCHEMES];
39
+ const TONES = [
40
+ 50,
41
+ 100,
42
+ 200,
43
+ 300,
44
+ 400,
45
+ 500,
46
+ 600,
47
+ 700,
48
+ 800,
49
+ 900,
50
+ 950
51
+ ];
52
+ function convertColor(color, fallback) {
53
+ return function(format) {
54
+ try {
55
+ const isAlpha = format.endsWith("a");
56
+ if (/^[0-9a-fA-F]{6}$/.test(color)) color = "#" + color;
57
+ if (format.startsWith("hex")) {
58
+ let hexa = color2k.toHex(color);
59
+ if (isAlpha) {
60
+ if (hexa.length === 7) hexa += "ff";
61
+ } else hexa = hexa.replace(/^#(?:[0-9a-fA-F]{6})[0-9a-fA-F]{2}$/, "$1");
62
+ return hexa;
63
+ } else if (format.startsWith("hsl")) {
64
+ let hsla = color2k.toHsla(color);
65
+ if (!isAlpha) {
66
+ hsla = hsla.replace(/hsla/, "hsl");
67
+ hsla = hsla.replace(/,\s*\d+(\.\d+)?\)$/, ")");
68
+ }
69
+ return hsla;
70
+ } else {
71
+ let rgba = color2k.toRgba(color);
72
+ if (!isAlpha) {
73
+ rgba = rgba.replace(/rgba/, "rgb");
74
+ rgba = rgba.replace(/,\s*\d+(\.\d+)?\)$/, ")");
75
+ }
76
+ return rgba;
77
+ }
78
+ } catch {
79
+ if (fallback) return convertColor(fallback)(format);
80
+ }
81
+ };
82
+ }
83
+ function calcFormat(color) {
84
+ if (color.startsWith("hsl")) return color.startsWith("hsla") ? "hsla" : "hsl";
85
+ else if (color.startsWith("rgb")) return color.startsWith("rgba") ? "rgba" : "rgb";
86
+ else return color.length === 9 ? "hexa" : "hex";
87
+ }
88
+ function getAlpha(color) {
89
+ return color2k.parseToRgba(color)[3];
90
+ }
91
+ function alphaToHex(a) {
92
+ if (0 > a) a = 0;
93
+ if (1 < a) a = 1;
94
+ return Math.round(a * 255).toString(16).padStart(2, "0");
95
+ }
96
+ function parseToRgba(color, fallback) {
97
+ try {
98
+ if (/^[0-9a-fA-F]{6}$/.test(color)) color = "#" + color;
99
+ return color2k.parseToRgba(color);
100
+ } catch {
101
+ if (fallback) return color2k.parseToRgba(fallback);
102
+ }
103
+ }
104
+ function parseToHsla(color, fallback) {
105
+ try {
106
+ if (/^[0-9a-fA-F]{6}$/.test(color)) color = "#" + color;
107
+ return color2k.parseToHsla(color);
108
+ } catch {
109
+ if (fallback) return color2k.parseToHsla(fallback);
110
+ }
111
+ }
112
+ function parseToHsv(color, fallback) {
113
+ let [r, g, b, a] = parseToRgba(color, fallback) ?? [
114
+ 255,
115
+ 255,
116
+ 255,
117
+ 1
118
+ ];
119
+ r = r / 255;
120
+ g = g / 255;
121
+ b = b / 255;
122
+ const [min, max] = [Math.min(r, g, b), Math.max(r, g, b)];
123
+ const delta = max - min;
124
+ let [h, v, s] = [
125
+ 0,
126
+ max,
127
+ max == 0 ? 0 : delta / max
128
+ ];
129
+ switch (min) {
130
+ case max:
131
+ h = 0;
132
+ break;
133
+ case r:
134
+ h = 60 * ((b - g) / delta) + 180;
135
+ break;
136
+ case g:
137
+ h = 60 * ((r - b) / delta) + 300;
138
+ break;
139
+ case b:
140
+ h = 60 * ((g - r) / delta) + 60;
141
+ break;
142
+ }
143
+ return [
144
+ h,
145
+ s,
146
+ v,
147
+ a
148
+ ];
149
+ }
150
+ function rgbaTo([r, g, b, a], fallback) {
151
+ return function(format = "hex") {
152
+ return convertColor(color2k.rgba(r, g, b, a), fallback)(format);
153
+ };
154
+ }
155
+ function hslaTo([h, s, l, a], fallback) {
156
+ return function(format = "hex") {
157
+ return convertColor(color2k.hsla(h, s, l, a), fallback)(format);
158
+ };
159
+ }
160
+ function hsvTo([h, s, v, a], fallback) {
161
+ return function(format = "hex") {
162
+ h = h / 60;
163
+ let rgb = [
164
+ v,
165
+ v,
166
+ v
167
+ ];
168
+ let i = Math.floor(h);
169
+ let f = h - i;
170
+ let p = v * (1 - s);
171
+ let q = v * (1 - s * f);
172
+ let t = v * (1 - s * (1 - f));
173
+ switch (i) {
174
+ case 0:
175
+ case 6:
176
+ rgb = [
177
+ v,
178
+ t,
179
+ p
180
+ ];
181
+ break;
182
+ case 1:
183
+ rgb = [
184
+ q,
185
+ v,
186
+ p
187
+ ];
188
+ break;
189
+ case 2:
190
+ rgb = [
191
+ p,
192
+ v,
193
+ t
194
+ ];
195
+ break;
196
+ case 3:
197
+ rgb = [
198
+ p,
199
+ q,
200
+ v
201
+ ];
202
+ break;
203
+ case 4:
204
+ rgb = [
205
+ t,
206
+ p,
207
+ v
208
+ ];
209
+ break;
210
+ case 5:
211
+ rgb = [
212
+ v,
213
+ p,
214
+ q
215
+ ];
216
+ break;
217
+ }
218
+ let color = `rgb(${rgb.map((v$1) => Math.round(v$1 * 255)).join(", ")})`;
219
+ if (require_assertion.isNumber(a)) color = color.replace(/\)$/, `, ${a})`);
220
+ return convertColor(color, fallback)(format);
221
+ };
222
+ }
223
+ function sameColor(color, comparison) {
224
+ if (!color) return false;
225
+ if (!comparison) return false;
226
+ const a = parseToRgba(color) ?? [];
227
+ const b = parseToRgba(comparison) ?? [];
228
+ return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
229
+ }
230
+
231
+ //#endregion
232
+ exports.COLOR_SCHEMES = COLOR_SCHEMES;
233
+ exports.DEFAULT_COLOR_SCHEMES = DEFAULT_COLOR_SCHEMES;
234
+ exports.SEMANTIC_COLOR_SCHEMES = SEMANTIC_COLOR_SCHEMES;
235
+ exports.TONES = TONES;
236
+ exports.alphaToHex = alphaToHex;
237
+ exports.calcFormat = calcFormat;
238
+ exports.convertColor = convertColor;
239
+ exports.getAlpha = getAlpha;
240
+ exports.hslaTo = hslaTo;
241
+ exports.hsvTo = hsvTo;
242
+ exports.parseToHsla = parseToHsla;
243
+ exports.parseToHsv = parseToHsv;
244
+ exports.parseToRgba = parseToRgba;
245
+ exports.rgbaTo = rgbaTo;
246
+ exports.sameColor = sameColor;
247
+ //# sourceMappingURL=color.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.cjs","names":["color: string","fallback?: string","format: ColorFormat","a: number","rgb: [number, number, number]","v","color: string | undefined","comparison: string | undefined"],"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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"}