@contember/utilities 0.0.0

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 (293) hide show
  1. package/dist/development/assert-types/AssertionError.js +9 -0
  2. package/dist/development/assert-types/AssertionError.js.map +1 -0
  3. package/dist/development/assert-types/Predicates.js +108 -0
  4. package/dist/development/assert-types/Predicates.js.map +1 -0
  5. package/dist/development/assert-types/assert.js +10 -0
  6. package/dist/development/assert-types/assert.js.map +1 -0
  7. package/dist/development/assert-types/assertNever.js +7 -0
  8. package/dist/development/assert-types/assertNever.js.map +1 -0
  9. package/dist/development/class-name/colorSchemeClassName.js +16 -0
  10. package/dist/development/class-name/colorSchemeClassName.js.map +1 -0
  11. package/dist/development/class-name/constants.js +7 -0
  12. package/dist/development/class-name/constants.js.map +1 -0
  13. package/dist/development/class-name/deduplicateClassName.js +7 -0
  14. package/dist/development/class-name/deduplicateClassName.js.map +1 -0
  15. package/dist/development/class-name/filterThemedClassName.js +68 -0
  16. package/dist/development/class-name/filterThemedClassName.js.map +1 -0
  17. package/dist/development/class-name/flatClassNameList.js +16 -0
  18. package/dist/development/class-name/flatClassNameList.js.map +1 -0
  19. package/dist/development/class-name/listClassName.js +9 -0
  20. package/dist/development/class-name/listClassName.js.map +1 -0
  21. package/dist/development/class-name/stateClassName.js +11 -0
  22. package/dist/development/class-name/stateClassName.js.map +1 -0
  23. package/dist/development/class-name/themeClassName.js +18 -0
  24. package/dist/development/class-name/themeClassName.js.map +1 -0
  25. package/dist/development/css-utilities/px.js +7 -0
  26. package/dist/development/css-utilities/px.js.map +1 -0
  27. package/dist/development/deprecate/deprecate.js +6 -0
  28. package/dist/development/deprecate/deprecate.js.map +1 -0
  29. package/dist/development/deprecate/fallback.js +11 -0
  30. package/dist/development/deprecate/fallback.js.map +1 -0
  31. package/dist/development/dom/dataAttribute.js +13 -0
  32. package/dist/development/dom/dataAttribute.js.map +1 -0
  33. package/dist/development/dom/getElementDimensions.js +22 -0
  34. package/dist/development/dom/getElementDimensions.js.map +1 -0
  35. package/dist/development/dom/getMatchingParentElement.js +17 -0
  36. package/dist/development/dom/getMatchingParentElement.js.map +1 -0
  37. package/dist/development/dom/getSizeFromResizeObserverEntry.js +24 -0
  38. package/dist/development/dom/getSizeFromResizeObserverEntry.js.map +1 -0
  39. package/dist/development/dom/isScrollable.js +22 -0
  40. package/dist/development/dom/isScrollable.js.map +1 -0
  41. package/dist/development/dom/parseTransformMatrix.js +29 -0
  42. package/dist/development/dom/parseTransformMatrix.js.map +1 -0
  43. package/dist/development/dom/stateDataAttributes.js +11 -0
  44. package/dist/development/dom/stateDataAttributes.js.map +1 -0
  45. package/dist/development/dom/svgSizeProps.js +15 -0
  46. package/dist/development/dom/svgSizeProps.js.map +1 -0
  47. package/dist/development/functional/extend.js +33 -0
  48. package/dist/development/functional/extend.js.map +1 -0
  49. package/dist/development/functional/omit.js +15 -0
  50. package/dist/development/functional/omit.js.map +1 -0
  51. package/dist/development/functional/pick.js +15 -0
  52. package/dist/development/functional/pick.js.map +1 -0
  53. package/dist/development/functional/range.js +7 -0
  54. package/dist/development/functional/range.js.map +1 -0
  55. package/dist/development/functional/setHasOneOf.js +7 -0
  56. package/dist/development/functional/setHasOneOf.js.map +1 -0
  57. package/dist/development/index.js +94 -0
  58. package/dist/development/index.js.map +1 -0
  59. package/dist/development/string-utilities/capitalize.js +7 -0
  60. package/dist/development/string-utilities/capitalize.js.map +1 -0
  61. package/dist/development/string-utilities/kebabCase.js +8 -0
  62. package/dist/development/string-utilities/kebabCase.js.map +1 -0
  63. package/dist/development/string-utilities/trimString.js +8 -0
  64. package/dist/development/string-utilities/trimString.js.map +1 -0
  65. package/dist/production/assert-types/AssertionError.js +9 -0
  66. package/dist/production/assert-types/AssertionError.js.map +1 -0
  67. package/dist/production/assert-types/Predicates.js +108 -0
  68. package/dist/production/assert-types/Predicates.js.map +1 -0
  69. package/dist/production/assert-types/assert.js +10 -0
  70. package/dist/production/assert-types/assert.js.map +1 -0
  71. package/dist/production/assert-types/assertNever.js +7 -0
  72. package/dist/production/assert-types/assertNever.js.map +1 -0
  73. package/dist/production/class-name/colorSchemeClassName.js +16 -0
  74. package/dist/production/class-name/colorSchemeClassName.js.map +1 -0
  75. package/dist/production/class-name/constants.js +7 -0
  76. package/dist/production/class-name/constants.js.map +1 -0
  77. package/dist/production/class-name/deduplicateClassName.js +7 -0
  78. package/dist/production/class-name/deduplicateClassName.js.map +1 -0
  79. package/dist/production/class-name/filterThemedClassName.js +68 -0
  80. package/dist/production/class-name/filterThemedClassName.js.map +1 -0
  81. package/dist/production/class-name/flatClassNameList.js +16 -0
  82. package/dist/production/class-name/flatClassNameList.js.map +1 -0
  83. package/dist/production/class-name/listClassName.js +9 -0
  84. package/dist/production/class-name/listClassName.js.map +1 -0
  85. package/dist/production/class-name/stateClassName.js +11 -0
  86. package/dist/production/class-name/stateClassName.js.map +1 -0
  87. package/dist/production/class-name/themeClassName.js +18 -0
  88. package/dist/production/class-name/themeClassName.js.map +1 -0
  89. package/dist/production/css-utilities/px.js +7 -0
  90. package/dist/production/css-utilities/px.js.map +1 -0
  91. package/dist/production/deprecate/deprecate.js +6 -0
  92. package/dist/production/deprecate/deprecate.js.map +1 -0
  93. package/dist/production/deprecate/fallback.js +11 -0
  94. package/dist/production/deprecate/fallback.js.map +1 -0
  95. package/dist/production/dom/dataAttribute.js +13 -0
  96. package/dist/production/dom/dataAttribute.js.map +1 -0
  97. package/dist/production/dom/getElementDimensions.js +22 -0
  98. package/dist/production/dom/getElementDimensions.js.map +1 -0
  99. package/dist/production/dom/getMatchingParentElement.js +17 -0
  100. package/dist/production/dom/getMatchingParentElement.js.map +1 -0
  101. package/dist/production/dom/getSizeFromResizeObserverEntry.js +24 -0
  102. package/dist/production/dom/getSizeFromResizeObserverEntry.js.map +1 -0
  103. package/dist/production/dom/isScrollable.js +22 -0
  104. package/dist/production/dom/isScrollable.js.map +1 -0
  105. package/dist/production/dom/parseTransformMatrix.js +29 -0
  106. package/dist/production/dom/parseTransformMatrix.js.map +1 -0
  107. package/dist/production/dom/stateDataAttributes.js +11 -0
  108. package/dist/production/dom/stateDataAttributes.js.map +1 -0
  109. package/dist/production/dom/svgSizeProps.js +15 -0
  110. package/dist/production/dom/svgSizeProps.js.map +1 -0
  111. package/dist/production/functional/extend.js +33 -0
  112. package/dist/production/functional/extend.js.map +1 -0
  113. package/dist/production/functional/omit.js +15 -0
  114. package/dist/production/functional/omit.js.map +1 -0
  115. package/dist/production/functional/pick.js +15 -0
  116. package/dist/production/functional/pick.js.map +1 -0
  117. package/dist/production/functional/range.js +7 -0
  118. package/dist/production/functional/range.js.map +1 -0
  119. package/dist/production/functional/setHasOneOf.js +7 -0
  120. package/dist/production/functional/setHasOneOf.js.map +1 -0
  121. package/dist/production/index.js +94 -0
  122. package/dist/production/index.js.map +1 -0
  123. package/dist/production/string-utilities/capitalize.js +7 -0
  124. package/dist/production/string-utilities/capitalize.js.map +1 -0
  125. package/dist/production/string-utilities/kebabCase.js +8 -0
  126. package/dist/production/string-utilities/kebabCase.js.map +1 -0
  127. package/dist/production/string-utilities/trimString.js +8 -0
  128. package/dist/production/string-utilities/trimString.js.map +1 -0
  129. package/dist/types/assert-types/AssertionError.d.ts +4 -0
  130. package/dist/types/assert-types/AssertionError.d.ts.map +1 -0
  131. package/dist/types/assert-types/Predicates.d.ts +27 -0
  132. package/dist/types/assert-types/Predicates.d.ts.map +1 -0
  133. package/dist/types/assert-types/assert.d.ts +3 -0
  134. package/dist/types/assert-types/assert.d.ts.map +1 -0
  135. package/dist/types/assert-types/assertNever.d.ts +2 -0
  136. package/dist/types/assert-types/assertNever.d.ts.map +1 -0
  137. package/dist/types/assert-types/index.d.ts +6 -0
  138. package/dist/types/assert-types/index.d.ts.map +1 -0
  139. package/dist/types/assert-types/types.d.ts +5 -0
  140. package/dist/types/assert-types/types.d.ts.map +1 -0
  141. package/dist/types/class-name/colorSchemeClassName.d.ts +35 -0
  142. package/dist/types/class-name/colorSchemeClassName.d.ts.map +1 -0
  143. package/dist/types/class-name/constants.d.ts +42 -0
  144. package/dist/types/class-name/constants.d.ts.map +1 -0
  145. package/dist/types/class-name/deduplicateClassName.d.ts +2 -0
  146. package/dist/types/class-name/deduplicateClassName.d.ts.map +1 -0
  147. package/dist/types/class-name/filterThemedClassName.d.ts +7 -0
  148. package/dist/types/class-name/filterThemedClassName.d.ts.map +1 -0
  149. package/dist/types/class-name/flatClassNameList.d.ts +3 -0
  150. package/dist/types/class-name/flatClassNameList.d.ts.map +1 -0
  151. package/dist/types/class-name/index.d.ts +10 -0
  152. package/dist/types/class-name/index.d.ts.map +1 -0
  153. package/dist/types/class-name/listClassName.d.ts +9 -0
  154. package/dist/types/class-name/listClassName.d.ts.map +1 -0
  155. package/dist/types/class-name/stateClassName.d.ts +19 -0
  156. package/dist/types/class-name/stateClassName.d.ts.map +1 -0
  157. package/dist/types/class-name/themeClassName.d.ts +87 -0
  158. package/dist/types/class-name/themeClassName.d.ts.map +1 -0
  159. package/dist/types/class-name/types.d.ts +13 -0
  160. package/dist/types/class-name/types.d.ts.map +1 -0
  161. package/dist/types/css-utilities/index.d.ts +2 -0
  162. package/dist/types/css-utilities/index.d.ts.map +1 -0
  163. package/dist/types/css-utilities/px.d.ts +6 -0
  164. package/dist/types/css-utilities/px.d.ts.map +1 -0
  165. package/dist/types/deprecate/deprecate.d.ts +19 -0
  166. package/dist/types/deprecate/deprecate.d.ts.map +1 -0
  167. package/dist/types/deprecate/fallback.d.ts +2 -0
  168. package/dist/types/deprecate/fallback.d.ts.map +1 -0
  169. package/dist/types/deprecate/index.d.ts +4 -0
  170. package/dist/types/deprecate/index.d.ts.map +1 -0
  171. package/dist/types/deprecate/types.d.ts +2 -0
  172. package/dist/types/deprecate/types.d.ts.map +1 -0
  173. package/dist/types/dom/dataAttribute.d.ts +2 -0
  174. package/dist/types/dom/dataAttribute.d.ts.map +1 -0
  175. package/dist/types/dom/getElementDimensions.d.ts +14 -0
  176. package/dist/types/dom/getElementDimensions.d.ts.map +1 -0
  177. package/dist/types/dom/getMatchingParentElement.d.ts +2 -0
  178. package/dist/types/dom/getMatchingParentElement.d.ts.map +1 -0
  179. package/dist/types/dom/getSizeFromResizeObserverEntry.d.ts +5 -0
  180. package/dist/types/dom/getSizeFromResizeObserverEntry.d.ts.map +1 -0
  181. package/dist/types/dom/index.d.ts +9 -0
  182. package/dist/types/dom/index.d.ts.map +1 -0
  183. package/dist/types/dom/isScrollable.d.ts +7 -0
  184. package/dist/types/dom/isScrollable.d.ts.map +1 -0
  185. package/dist/types/dom/parseTransformMatrix.d.ts +15 -0
  186. package/dist/types/dom/parseTransformMatrix.d.ts.map +1 -0
  187. package/dist/types/dom/stateDataAttributes.d.ts +4 -0
  188. package/dist/types/dom/stateDataAttributes.d.ts.map +1 -0
  189. package/dist/types/dom/svgSizeProps.d.ts +7 -0
  190. package/dist/types/dom/svgSizeProps.d.ts.map +1 -0
  191. package/dist/types/functional/extend.d.ts +5 -0
  192. package/dist/types/functional/extend.d.ts.map +1 -0
  193. package/dist/types/functional/index.d.ts +6 -0
  194. package/dist/types/functional/index.d.ts.map +1 -0
  195. package/dist/types/functional/omit.d.ts +2 -0
  196. package/dist/types/functional/omit.d.ts.map +1 -0
  197. package/dist/types/functional/pick.d.ts +2 -0
  198. package/dist/types/functional/pick.d.ts.map +1 -0
  199. package/dist/types/functional/range.d.ts +9 -0
  200. package/dist/types/functional/range.d.ts.map +1 -0
  201. package/dist/types/functional/setHasOneOf.d.ts +2 -0
  202. package/dist/types/functional/setHasOneOf.d.ts.map +1 -0
  203. package/dist/types/index.d.ts +9 -0
  204. package/dist/types/index.d.ts.map +1 -0
  205. package/dist/types/string-utilities/capitalize.d.ts +2 -0
  206. package/dist/types/string-utilities/capitalize.d.ts.map +1 -0
  207. package/dist/types/string-utilities/index.d.ts +4 -0
  208. package/dist/types/string-utilities/index.d.ts.map +1 -0
  209. package/dist/types/string-utilities/kebabCase.d.ts +2 -0
  210. package/dist/types/string-utilities/kebabCase.d.ts.map +1 -0
  211. package/dist/types/string-utilities/trimString.d.ts +9 -0
  212. package/dist/types/string-utilities/trimString.d.ts.map +1 -0
  213. package/dist/types/tsconfig.tsbuildinfo +1 -0
  214. package/dist/types/types/Any.d.ts +4 -0
  215. package/dist/types/types/Any.d.ts.map +1 -0
  216. package/dist/types/types/DeepPartial.d.ts +4 -0
  217. package/dist/types/types/DeepPartial.d.ts.map +1 -0
  218. package/dist/types/types/Narrow.d.ts +11 -0
  219. package/dist/types/types/Narrow.d.ts.map +1 -0
  220. package/dist/types/types/NonNullableRequired.d.ts +4 -0
  221. package/dist/types/types/NonNullableRequired.d.ts.map +1 -0
  222. package/dist/types/types/NonOptional.d.ts +8 -0
  223. package/dist/types/types/NonOptional.d.ts.map +1 -0
  224. package/dist/types/types/ObjectKeyValue.d.ts +4 -0
  225. package/dist/types/types/ObjectKeyValue.d.ts.map +1 -0
  226. package/dist/types/types/PolymorphicRefs.d.ts +46 -0
  227. package/dist/types/types/PolymorphicRefs.d.ts.map +1 -0
  228. package/dist/types/types/Primitive.d.ts +2 -0
  229. package/dist/types/types/Primitive.d.ts.map +1 -0
  230. package/dist/types/types/RequiredDeepPlainObject.d.ts +4 -0
  231. package/dist/types/types/RequiredDeepPlainObject.d.ts.map +1 -0
  232. package/dist/types/types/Try.d.ts +2 -0
  233. package/dist/types/types/Try.d.ts.map +1 -0
  234. package/dist/types/types/TypeofStringLiteral.d.ts +2 -0
  235. package/dist/types/types/TypeofStringLiteral.d.ts.map +1 -0
  236. package/dist/types/types/index.d.ts +13 -0
  237. package/dist/types/types/index.d.ts.map +1 -0
  238. package/package.json +42 -0
  239. package/src/assert-types/AssertionError.ts +5 -0
  240. package/src/assert-types/Predicates.ts +88 -0
  241. package/src/assert-types/assert.ts +15 -0
  242. package/src/assert-types/assertNever.ts +3 -0
  243. package/src/assert-types/index.ts +5 -0
  244. package/src/assert-types/types.ts +5 -0
  245. package/src/class-name/colorSchemeClassName.ts +46 -0
  246. package/src/class-name/constants.ts +43 -0
  247. package/src/class-name/deduplicateClassName.ts +3 -0
  248. package/src/class-name/filterThemedClassName.ts +86 -0
  249. package/src/class-name/flatClassNameList.ts +18 -0
  250. package/src/class-name/index.ts +9 -0
  251. package/src/class-name/listClassName.ts +13 -0
  252. package/src/class-name/stateClassName.ts +32 -0
  253. package/src/class-name/themeClassName.ts +116 -0
  254. package/src/class-name/types.ts +17 -0
  255. package/src/css-utilities/index.ts +1 -0
  256. package/src/css-utilities/px.ts +16 -0
  257. package/src/deprecate/deprecate.ts +31 -0
  258. package/src/deprecate/fallback.ts +7 -0
  259. package/src/deprecate/index.ts +3 -0
  260. package/src/deprecate/types.ts +2 -0
  261. package/src/dom/dataAttribute.ts +11 -0
  262. package/src/dom/getElementDimensions.ts +36 -0
  263. package/src/dom/getMatchingParentElement.ts +13 -0
  264. package/src/dom/getSizeFromResizeObserverEntry.ts +26 -0
  265. package/src/dom/index.ts +8 -0
  266. package/src/dom/isScrollable.ts +24 -0
  267. package/src/dom/parseTransformMatrix.ts +35 -0
  268. package/src/dom/stateDataAttributes.ts +8 -0
  269. package/src/dom/svgSizeProps.ts +21 -0
  270. package/src/functional/extend.ts +37 -0
  271. package/src/functional/index.ts +5 -0
  272. package/src/functional/omit.ts +13 -0
  273. package/src/functional/pick.ts +13 -0
  274. package/src/functional/range.ts +11 -0
  275. package/src/functional/setHasOneOf.ts +3 -0
  276. package/src/index.ts +8 -0
  277. package/src/string-utilities/capitalize.ts +3 -0
  278. package/src/string-utilities/index.ts +3 -0
  279. package/src/string-utilities/kebabCase.ts +5 -0
  280. package/src/string-utilities/trimString.ts +12 -0
  281. package/src/tsconfig.json +6 -0
  282. package/src/types/Any.ts +3 -0
  283. package/src/types/DeepPartial.ts +7 -0
  284. package/src/types/Narrow.ts +21 -0
  285. package/src/types/NonNullableRequired.ts +1 -0
  286. package/src/types/NonOptional.ts +7 -0
  287. package/src/types/ObjectKeyValue.ts +1 -0
  288. package/src/types/PolymorphicRefs.ts +68 -0
  289. package/src/types/Primitive.ts +1 -0
  290. package/src/types/RequiredDeepPlainObject.ts +3 -0
  291. package/src/types/Try.ts +4 -0
  292. package/src/types/TypeofStringLiteral.ts +1 -0
  293. package/src/types/index.ts +24 -0
@@ -0,0 +1,15 @@
1
+ function svgSizeProps(width, height, crop = 0) {
2
+ const viewBoxWidth = width - crop * 2;
3
+ const viewBoxHeight = (height ?? width) - crop * 2;
4
+ const viewBoxX = crop;
5
+ const viewBoxY = crop;
6
+ return {
7
+ width: viewBoxWidth,
8
+ height: viewBoxHeight,
9
+ viewBox: `${viewBoxX} ${viewBoxY} ${viewBoxWidth} ${viewBoxHeight}`
10
+ };
11
+ }
12
+ export {
13
+ svgSizeProps
14
+ };
15
+ //# sourceMappingURL=svgSizeProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svgSizeProps.js","sources":["../../../src/dom/svgSizeProps.ts"],"sourcesContent":["export interface SvgSizeProps {\n\twidth: number;\n\theight: number;\n\tviewBox: string;\n}\n\nexport function svgSizeProps(\n\twidth: number,\n\theight?: number,\n\tcrop: number = 0,\n): SvgSizeProps {\n\tconst viewBoxWidth = width - crop * 2\n\tconst viewBoxHeight = (height ?? width) - crop * 2\n\tconst viewBoxX = crop\n\tconst viewBoxY = crop\n\treturn {\n\t\twidth: viewBoxWidth,\n\t\theight: viewBoxHeight,\n\t\tviewBox: `${viewBoxX} ${viewBoxY} ${viewBoxWidth} ${viewBoxHeight}`,\n\t}\n}\n"],"names":[],"mappings":"AAMO,SAAS,aACf,OACA,QACA,OAAe,GACA;AACT,QAAA,eAAe,QAAQ,OAAO;AAC9B,QAAA,iBAAiB,UAAU,SAAS,OAAO;AACjD,QAAM,WAAW;AACjB,QAAM,WAAW;AACV,SAAA;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS,GAAG,YAAY,YAAY,gBAAgB;AAAA,EAAA;AAEtD;"}
@@ -0,0 +1,33 @@
1
+ function extend(base, extension) {
2
+ base = Object.freeze(base);
3
+ extension = Object.freeze(extension);
4
+ if (typeof base !== typeof extension) {
5
+ return extension === void 0 ? base : extension;
6
+ } else {
7
+ if (typeof base === "object" && typeof extension === "object") {
8
+ if (Array.isArray(base) && Array.isArray(extension)) {
9
+ return Object.freeze([...base, ...extension]);
10
+ } else if (base && extension) {
11
+ if ("$$typeof" in extension) {
12
+ return extension;
13
+ }
14
+ const keys = [.../* @__PURE__ */ new Set([
15
+ ...Object.keys(base),
16
+ ...Object.keys(extension)
17
+ ])];
18
+ const entries = keys.map(
19
+ (key) => [key, extend(base[key], extension[key])]
20
+ );
21
+ return Object.freeze(Object.fromEntries(entries));
22
+ } else {
23
+ return extension;
24
+ }
25
+ } else {
26
+ return extension;
27
+ }
28
+ }
29
+ }
30
+ export {
31
+ extend
32
+ };
33
+ //# sourceMappingURL=extend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend.js","sources":["../../../src/functional/extend.ts"],"sourcesContent":["/** @internal */\nexport function extend<B, E>(\n\tbase: B,\n\textension: E,\n) {\n\tbase = Object.freeze(base)\n\textension = Object.freeze(extension)\n\n\tif (typeof base !== typeof extension) {\n\t\treturn extension === undefined ? base : extension\n\t} else {\n\t\tif (typeof base === 'object' && typeof extension === 'object') {\n\t\t\tif (Array.isArray(base) && Array.isArray(extension)) {\n\t\t\t\treturn Object.freeze([...base, ...extension])\n\t\t\t} else if (base && extension) {\n\t\t\t\tif ('$$typeof' in extension) {\n\t\t\t\t\treturn extension\n\t\t\t\t}\n\n\t\t\t\tconst keys = [...new Set([\n\t\t\t\t\t...Object.keys(base),\n\t\t\t\t\t...Object.keys(extension),\n\t\t\t\t])]\n\n\t\t\t\tconst entries: [string, unknown][] = keys.map(\n\t\t\t\t\tkey => [key, extend((base as Record<string, unknown>)[key], (extension as Record<string, unknown>)[key])],\n\t\t\t\t)\n\n\t\t\t\treturn Object.freeze(Object.fromEntries(entries))\n\t\t\t} else {\n\t\t\t\treturn extension\n\t\t\t}\n\t\t} else {\n\t\t\treturn extension\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"AACgB,SAAA,OACf,MACA,WACC;AACM,SAAA,OAAO,OAAO,IAAI;AACb,cAAA,OAAO,OAAO,SAAS;AAE/B,MAAA,OAAO,SAAS,OAAO,WAAW;AAC9B,WAAA,cAAc,SAAY,OAAO;AAAA,EAAA,OAClC;AACN,QAAI,OAAO,SAAS,YAAY,OAAO,cAAc,UAAU;AAC9D,UAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,SAAS,GAAG;AACpD,eAAO,OAAO,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;AAAA,MAAA,WAClC,QAAQ,WAAW;AAC7B,YAAI,cAAc,WAAW;AACrB,iBAAA;AAAA,QACR;AAEA,cAAM,OAAO,CAAC,GAAG,oBAAI,IAAI;AAAA,UACxB,GAAG,OAAO,KAAK,IAAI;AAAA,UACnB,GAAG,OAAO,KAAK,SAAS;AAAA,QACxB,CAAA,CAAC;AAEF,cAAM,UAA+B,KAAK;AAAA,UACzC,CAAA,QAAO,CAAC,KAAK,OAAQ,KAAiC,GAAG,GAAI,UAAsC,GAAG,CAAC,CAAC;AAAA,QAAA;AAGzG,eAAO,OAAO,OAAO,OAAO,YAAY,OAAO,CAAC;AAAA,MAAA,OAC1C;AACC,eAAA;AAAA,MACR;AAAA,IAAA,OACM;AACC,aAAA;AAAA,IACR;AAAA,EACD;AACD;"}
@@ -0,0 +1,15 @@
1
+ function omit(object, properties, strict = false) {
2
+ const next = { ...object };
3
+ for (let key of properties) {
4
+ if (key in object) {
5
+ delete next[key];
6
+ } else if (strict) {
7
+ throw new Error(`Key "${String(key)}" does not exist in object ${JSON.stringify(object)}`);
8
+ }
9
+ }
10
+ return next;
11
+ }
12
+ export {
13
+ omit
14
+ };
15
+ //# sourceMappingURL=omit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omit.js","sources":["../../../src/functional/omit.ts"],"sourcesContent":["export function omit<T extends Object, K extends keyof T>(object: T, properties: ReadonlyArray<K>, strict: boolean = false): Omit<T, K> {\n const next: Partial<T> = { ...object }\n\n for (let key of properties) {\n if (key in object) {\n delete next[key]\n } else if (strict) {\n throw new Error(`Key \"${String(key)}\" does not exist in object ${JSON.stringify(object)}`)\n }\n }\n\n return next as Omit<T, K>\n}\n"],"names":[],"mappings":"AAAO,SAAS,KAA0C,QAAW,YAA8B,SAAkB,OAAmB;AAChI,QAAA,OAAmB,EAAE,GAAG;AAE9B,WAAS,OAAO,YAAY;AAC1B,QAAI,OAAO,QAAQ;AACjB,aAAO,KAAK,GAAG;AAAA,eACN,QAAQ;AACX,YAAA,IAAI,MAAM,QAAQ,OAAO,GAAG,+BAA+B,KAAK,UAAU,MAAM,GAAG;AAAA,IAC3F;AAAA,EACF;AAEO,SAAA;AACT;"}
@@ -0,0 +1,15 @@
1
+ function pick(object, properties) {
2
+ const next = {};
3
+ for (let key of properties) {
4
+ if (key in object) {
5
+ next[key] = object[key];
6
+ } else {
7
+ throw new Error(`Key "${String(key)}" does not exist in object ${JSON.stringify(object)}`);
8
+ }
9
+ }
10
+ return next;
11
+ }
12
+ export {
13
+ pick
14
+ };
15
+ //# sourceMappingURL=pick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick.js","sources":["../../../src/functional/pick.ts"],"sourcesContent":["export function pick<T extends Object, K extends keyof T>(object: T, properties: ReadonlyArray<K>): Pick<T, K> {\n\tconst next: Partial<Pick<T, K>> = {}\n\n\tfor (let key of properties) {\n\t\tif (key in object) {\n\t\t\tnext[key] = object[key]\n\t\t} else {\n\t\t\tthrow new Error(`Key \"${String(key)}\" does not exist in object ${JSON.stringify(object)}`)\n\t\t}\n\t}\n\n\treturn next as Pick<T, K>\n}\n"],"names":[],"mappings":"AAAgB,SAAA,KAA0C,QAAW,YAA0C;AAC9G,QAAM,OAA4B,CAAA;AAElC,WAAS,OAAO,YAAY;AAC3B,QAAI,OAAO,QAAQ;AACb,WAAA,GAAG,IAAI,OAAO,GAAG;AAAA,IAAA,OAChB;AACA,YAAA,IAAI,MAAM,QAAQ,OAAO,GAAG,+BAA+B,KAAK,UAAU,MAAM,GAAG;AAAA,IAC1F;AAAA,EACD;AAEO,SAAA;AACR;"}
@@ -0,0 +1,7 @@
1
+ function range(start, end, step = 1) {
2
+ return Array.from({ length: Math.floor(Math.abs(end - start) / step) + 1 }, (_, i) => start + i * (end > start ? 1 : -1) * Math.abs(step));
3
+ }
4
+ export {
5
+ range
6
+ };
7
+ //# sourceMappingURL=range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.js","sources":["../../../src/functional/range.ts"],"sourcesContent":["\n/**\n * Get a list of numbers between start and end, inclusive, with the given step size (defaulting to 1)\n * @param start - The starting number.\n * @param end - The ending number.\n * @param step - The step size, optional, defaults to 1.\n * @returns A list of numbers between start and end, inclusive, with the given step size (defaulting to 1)\n */\nexport function range(start: number, end: number, step = 1): number[] {\n\treturn Array.from({ length: Math.floor(Math.abs(end - start) / step) + 1 }, (_, i) => start + i * (end > start ? 1 : -1) * Math.abs(step))\n}\n"],"names":[],"mappings":"AAQO,SAAS,MAAM,OAAe,KAAa,OAAO,GAAa;AAC9D,SAAA,MAAM,KAAK,EAAE,QAAQ,KAAK,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,QAAQ,KAAK,MAAM,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC;AAC1I;"}
@@ -0,0 +1,7 @@
1
+ function setHasOneOf(set, values) {
2
+ return values.some((value) => set.has(value));
3
+ }
4
+ export {
5
+ setHasOneOf
6
+ };
7
+ //# sourceMappingURL=setHasOneOf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setHasOneOf.js","sources":["../../../src/functional/setHasOneOf.ts"],"sourcesContent":["export function setHasOneOf<T>(set: Set<T>, values: T[]): boolean {\n return values.some(value => set.has(value))\n}\n"],"names":[],"mappings":"AAAgB,SAAA,YAAe,KAAa,QAAsB;AAChE,SAAO,OAAO,KAAK,CAAA,UAAS,IAAI,IAAI,KAAK,CAAC;AAC5C;"}
@@ -0,0 +1,94 @@
1
+ import { AssertionError } from "./assert-types/AssertionError.js";
2
+ import { isArrayOfMembersSatisfyingFactory, isBoolean, isDefined, isFalse, isHTMLElement, isNonEmptyArray, isNonEmptyString, isNonEmptyTrimmedEndString, isNonEmptyTrimmedStartString, isNonEmptyTrimmedString, isNonNegativeNumber, isNotNull, isNotNullish, isNull, isNumber, isNumericString, isObject, isOneOfFactory, isPlainObject, isSingleWordString, isSlugString, isString, isTrue, isUndefined, satisfiesOneOfFactory } from "./assert-types/Predicates.js";
3
+ import { assert } from "./assert-types/assert.js";
4
+ import { assertNever } from "./assert-types/assertNever.js";
5
+ import { colorSchemeClassName, isColorSchemeClassName } from "./class-name/colorSchemeClassName.js";
6
+ import { COLOR_SCHEME_CLASS_NAME_REG_EXP, THEME_CLASS_NAME_REG_EXP } from "./class-name/constants.js";
7
+ import { deduplicateClassName } from "./class-name/deduplicateClassName.js";
8
+ import { filterThemedClassName } from "./class-name/filterThemedClassName.js";
9
+ import { flatClassNameList } from "./class-name/flatClassNameList.js";
10
+ import { listClassName } from "./class-name/listClassName.js";
11
+ import { stateClassName } from "./class-name/stateClassName.js";
12
+ import { contentThemeClassName, controlsThemeClassName, themeClassName } from "./class-name/themeClassName.js";
13
+ import { px } from "./css-utilities/px.js";
14
+ import { deprecate } from "./deprecate/deprecate.js";
15
+ import { fallback } from "./deprecate/fallback.js";
16
+ import { dataAttribute } from "./dom/dataAttribute.js";
17
+ import { getElementDimensions, getElementDimensionsCallback } from "./dom/getElementDimensions.js";
18
+ import { getMatchingParentElement } from "./dom/getMatchingParentElement.js";
19
+ import { getSizeFromResizeObserverEntryFactory } from "./dom/getSizeFromResizeObserverEntry.js";
20
+ import { isScrollable } from "./dom/isScrollable.js";
21
+ import { parseTransformMatrix } from "./dom/parseTransformMatrix.js";
22
+ import { stateDataAttributes } from "./dom/stateDataAttributes.js";
23
+ import { svgSizeProps } from "./dom/svgSizeProps.js";
24
+ import { extend } from "./functional/extend.js";
25
+ import { omit } from "./functional/omit.js";
26
+ import { pick } from "./functional/pick.js";
27
+ import { range } from "./functional/range.js";
28
+ import { setHasOneOf } from "./functional/setHasOneOf.js";
29
+ import { capitalize } from "./string-utilities/capitalize.js";
30
+ import { toKebabCase } from "./string-utilities/kebabCase.js";
31
+ import { trimString } from "./string-utilities/trimString.js";
32
+ export {
33
+ AssertionError,
34
+ COLOR_SCHEME_CLASS_NAME_REG_EXP,
35
+ THEME_CLASS_NAME_REG_EXP,
36
+ assert,
37
+ assertNever,
38
+ capitalize,
39
+ colorSchemeClassName,
40
+ contentThemeClassName,
41
+ controlsThemeClassName,
42
+ dataAttribute,
43
+ deduplicateClassName,
44
+ deprecate,
45
+ extend,
46
+ fallback,
47
+ filterThemedClassName,
48
+ flatClassNameList,
49
+ getElementDimensions,
50
+ getElementDimensionsCallback,
51
+ getMatchingParentElement,
52
+ getSizeFromResizeObserverEntryFactory,
53
+ isArrayOfMembersSatisfyingFactory,
54
+ isBoolean,
55
+ isColorSchemeClassName,
56
+ isDefined,
57
+ isFalse,
58
+ isHTMLElement,
59
+ isNonEmptyArray,
60
+ isNonEmptyString,
61
+ isNonEmptyTrimmedEndString,
62
+ isNonEmptyTrimmedStartString,
63
+ isNonEmptyTrimmedString,
64
+ isNonNegativeNumber,
65
+ isNotNull,
66
+ isNotNullish,
67
+ isNull,
68
+ isNumber,
69
+ isNumericString,
70
+ isObject,
71
+ isOneOfFactory,
72
+ isPlainObject,
73
+ isScrollable,
74
+ isSingleWordString,
75
+ isSlugString,
76
+ isString,
77
+ isTrue,
78
+ isUndefined,
79
+ listClassName,
80
+ omit,
81
+ parseTransformMatrix,
82
+ pick,
83
+ px,
84
+ range,
85
+ satisfiesOneOfFactory,
86
+ setHasOneOf,
87
+ stateClassName,
88
+ stateDataAttributes,
89
+ svgSizeProps,
90
+ themeClassName,
91
+ toKebabCase,
92
+ trimString
93
+ };
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,7 @@
1
+ function capitalize(str) {
2
+ return str.charAt(0).toUpperCase() + str.slice(1);
3
+ }
4
+ export {
5
+ capitalize
6
+ };
7
+ //# sourceMappingURL=capitalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capitalize.js","sources":["../../../src/string-utilities/capitalize.ts"],"sourcesContent":["export function capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n"],"names":[],"mappings":"AAAO,SAAS,WAAW,KAAa;AAC/B,SAAA,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAClD;"}
@@ -0,0 +1,8 @@
1
+ const UPPER_CASE_REG_EXP = /([A-Z])/g;
2
+ function toKebabCase(value) {
3
+ return value.replace(UPPER_CASE_REG_EXP, "-$1").toLowerCase();
4
+ }
5
+ export {
6
+ toKebabCase
7
+ };
8
+ //# sourceMappingURL=kebabCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kebabCase.js","sources":["../../../src/string-utilities/kebabCase.ts"],"sourcesContent":["const UPPER_CASE_REG_EXP = /([A-Z])/g\n\nexport function toKebabCase(value: string) {\n\treturn value.replace(UPPER_CASE_REG_EXP, '-$1').toLowerCase()\n}\n"],"names":[],"mappings":"AAAA,MAAM,qBAAqB;AAEpB,SAAS,YAAY,OAAe;AAC1C,SAAO,MAAM,QAAQ,oBAAoB,KAAK,EAAE,YAAY;AAC7D;"}
@@ -0,0 +1,8 @@
1
+ function trimString(value, characters) {
2
+ const regExp = new RegExp(`^[${characters}]*|[${characters}]*$`, "g");
3
+ return value.replace(regExp, "");
4
+ }
5
+ export {
6
+ trimString
7
+ };
8
+ //# sourceMappingURL=trimString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trimString.js","sources":["../../../src/string-utilities/trimString.ts"],"sourcesContent":["/**\n * Trims the provided string of any characters in the provided set.\n *\n * @param value - The string to trim.\n * @param characters - The characters to remove.\n * @returns\tThe trimmed string.\n */\nexport function trimString(value: string, characters: string) {\n\tconst regExp = new RegExp(`^[${characters}]*|[${characters}]*$`, 'g')\n\n\treturn value.replace(regExp, '')\n}\n"],"names":[],"mappings":"AAOgB,SAAA,WAAW,OAAe,YAAoB;AAC7D,QAAM,SAAS,IAAI,OAAO,KAAK,iBAAiB,iBAAiB,GAAG;AAE7D,SAAA,MAAM,QAAQ,QAAQ,EAAE;AAChC;"}
@@ -0,0 +1,9 @@
1
+ class AssertionError extends Error {
2
+ constructor(value, that = "value to pass assertion") {
3
+ super(`Expecting ${that}, ${JSON.stringify(value)} given`);
4
+ }
5
+ }
6
+ export {
7
+ AssertionError
8
+ };
9
+ //# sourceMappingURL=AssertionError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssertionError.js","sources":["../../../src/assert-types/AssertionError.ts"],"sourcesContent":["export class AssertionError extends Error {\n\tconstructor(value: unknown, that: string = 'value to pass assertion') {\n\t\tsuper(`Expecting ${that}, ${JSON.stringify(value)} given`)\n\t}\n}\n"],"names":[],"mappings":"AAAO,MAAM,uBAAuB,MAAM;AAAA,EACzC,YAAY,OAAgB,OAAe,2BAA2B;AACrE,UAAM,aAAa,SAAS,KAAK,UAAU,KAAK,SAAS;AAAA,EAC1D;AACD;"}
@@ -0,0 +1,108 @@
1
+ function isNull(value) {
2
+ return value === null;
3
+ }
4
+ function isNotNull(value) {
5
+ return value !== null;
6
+ }
7
+ function isUndefined(value) {
8
+ return value === void 0;
9
+ }
10
+ function isDefined(value) {
11
+ return value !== void 0;
12
+ }
13
+ function isNotNullish(value) {
14
+ return value != null;
15
+ }
16
+ function isBoolean(value) {
17
+ return typeof value === "boolean";
18
+ }
19
+ function isTrue(value) {
20
+ return value === true;
21
+ }
22
+ function isFalse(value) {
23
+ return value === false;
24
+ }
25
+ function isString(value) {
26
+ return typeof value === "string";
27
+ }
28
+ function isSlugString(value) {
29
+ return isNonEmptyString(value) && /^[a-z0-9_-]+$/.test(value);
30
+ }
31
+ function isSingleWordString(value) {
32
+ return isNonEmptyString(value) && value.indexOf(" ") === -1;
33
+ }
34
+ function isNonEmptyString(value) {
35
+ return isString(value) && value.length > 0;
36
+ }
37
+ function isNonEmptyTrimmedStringFactory(trim = "trim") {
38
+ return function isNonEmptyString2(value) {
39
+ return isString(value) && value[trim]().length > 0;
40
+ };
41
+ }
42
+ const isNonEmptyTrimmedString = isNonEmptyTrimmedStringFactory();
43
+ const isNonEmptyTrimmedStartString = isNonEmptyTrimmedStringFactory("trimStart");
44
+ const isNonEmptyTrimmedEndString = isNonEmptyTrimmedStringFactory("trimEnd");
45
+ function isNumber(value) {
46
+ return typeof value === "number" && value === value;
47
+ }
48
+ function isNonNegativeNumber(value) {
49
+ return isNumber(value) && value >= 0;
50
+ }
51
+ function isNumericString(value) {
52
+ return isString(value) && !isNaN(parseFloat(value));
53
+ }
54
+ function isOneOfFactory(members) {
55
+ return function isOneOfFactoryProduct(value) {
56
+ return members.includes(value);
57
+ };
58
+ }
59
+ function satisfiesOneOfFactory(...predicates) {
60
+ return (value) => {
61
+ return predicates.some((predicate) => predicate(value));
62
+ };
63
+ }
64
+ function isArrayOfMembersSatisfyingFactory(predicate) {
65
+ return function isArrayOfMembersSatisfyingProduct(value) {
66
+ return Array.isArray(value) && value.every(predicate);
67
+ };
68
+ }
69
+ function isNonEmptyArray(value) {
70
+ return Array.isArray(value) && value.length > 0;
71
+ }
72
+ function isHTMLElement(value) {
73
+ return value instanceof HTMLElement;
74
+ }
75
+ function isObject(value) {
76
+ return typeof value === "object" && value !== null;
77
+ }
78
+ function isPlainObject(value) {
79
+ return isObject(value) && value.constructor === Object;
80
+ }
81
+ export {
82
+ isArrayOfMembersSatisfyingFactory,
83
+ isBoolean,
84
+ isDefined,
85
+ isFalse,
86
+ isHTMLElement,
87
+ isNonEmptyArray,
88
+ isNonEmptyString,
89
+ isNonEmptyTrimmedEndString,
90
+ isNonEmptyTrimmedStartString,
91
+ isNonEmptyTrimmedString,
92
+ isNonNegativeNumber,
93
+ isNotNull,
94
+ isNotNullish,
95
+ isNull,
96
+ isNumber,
97
+ isNumericString,
98
+ isObject,
99
+ isOneOfFactory,
100
+ isPlainObject,
101
+ isSingleWordString,
102
+ isSlugString,
103
+ isString,
104
+ isTrue,
105
+ isUndefined,
106
+ satisfiesOneOfFactory
107
+ };
108
+ //# sourceMappingURL=Predicates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Predicates.js","sources":["../../../src/assert-types/Predicates.ts"],"sourcesContent":["import { Predicate, SlugString, UnionOfPredicateTypes } from './types'\n\nexport function isNull(value: unknown): value is null {\n\treturn value === null\n}\nexport function isNotNull<T>(value: unknown): value is T {\n\treturn value !== null\n}\nexport function isUndefined(value: unknown): value is undefined {\n\treturn value === undefined\n}\nexport function isDefined<T>(value: unknown): value is Exclude<T, undefined> {\n\treturn value !== undefined\n}\nexport function isNotNullish<T>(value: T): value is Exclude<T, null | undefined> {\n\treturn value != null\n}\nexport function isBoolean(value: unknown): value is boolean {\n\treturn typeof value === 'boolean'\n}\nexport function isTrue(value: unknown): value is true {\n\treturn value === true\n}\nexport function isFalse(value: unknown): value is false {\n\treturn value === false\n}\nexport function isString(value: unknown): value is string {\n\treturn typeof value === 'string'\n}\nexport function isSlugString(value: unknown): value is SlugString {\n\treturn isNonEmptyString(value) && /^[a-z0-9_-]+$/.test(value)\n}\nexport function isSingleWordString(value: unknown): value is string {\n\treturn isNonEmptyString(value) && value.indexOf(' ') === -1\n}\nexport function isNonEmptyString(value: unknown): value is string {\n\treturn isString(value) && value.length > 0\n}\nfunction isNonEmptyTrimmedStringFactory(trim: 'trim' | 'trimStart' | 'trimEnd' = 'trim') {\n\treturn function isNonEmptyString(value: unknown): value is string {\n\t\treturn isString(value) && value[trim]().length > 0\n\t}\n}\nexport const isNonEmptyTrimmedString = isNonEmptyTrimmedStringFactory()\nexport const isNonEmptyTrimmedStartString = isNonEmptyTrimmedStringFactory('trimStart')\nexport const isNonEmptyTrimmedEndString = isNonEmptyTrimmedStringFactory('trimEnd')\nexport function isNumber(value: unknown): value is number {\n\treturn typeof value === 'number' && value === value\n}\nexport function isNonNegativeNumber(value: unknown): value is number {\n\treturn isNumber(value) && value >= 0\n}\nexport function isNumericString(value: string): value is string {\n\treturn isString(value) && !isNaN(parseFloat(value))\n}\nexport function isOneOfFactory<U, T = any>(\n\tmembers: T extends Array<U> | ReadonlyArray<U> ? T : never,\n): (value: unknown) => value is U {\n\treturn function isOneOfFactoryProduct(value: unknown): value is U {\n\t\treturn members.includes(value as U)\n\t}\n}\nexport function satisfiesOneOfFactory<T extends Array<Predicate<any, any>>>(\n\t...predicates: T\n): Predicate<unknown, UnionOfPredicateTypes<T>> {\n\treturn (value: any): value is UnionOfPredicateTypes<T> => {\n\t\treturn predicates.some(predicate => predicate(value))\n\t}\n}\nexport function isArrayOfMembersSatisfyingFactory<T>(\n\tpredicate: (value: unknown) => value is T,\n): (value: unknown) => value is Array<T> {\n\treturn function isArrayOfMembersSatisfyingProduct(value: unknown): value is Array<T> {\n\t\treturn Array.isArray(value) && value.every(predicate)\n\t}\n}\nexport function isNonEmptyArray<T>(value: unknown): value is [T, ...T[]] {\n\treturn Array.isArray(value) && value.length > 0\n}\nexport function isHTMLElement(value: unknown): value is HTMLElement {\n\treturn value instanceof HTMLElement\n}\nexport function isObject(value: unknown): value is Object {\n\treturn typeof value === 'object' && value !== null\n}\nexport function isPlainObject<T extends Record<string, unknown>>(value: unknown): value is T {\n\treturn isObject(value) && value.constructor === Object\n}\n"],"names":["isNonEmptyString"],"mappings":"AAEO,SAAS,OAAO,OAA+B;AACrD,SAAO,UAAU;AAClB;AACO,SAAS,UAAa,OAA4B;AACxD,SAAO,UAAU;AAClB;AACO,SAAS,YAAY,OAAoC;AAC/D,SAAO,UAAU;AAClB;AACO,SAAS,UAAa,OAAgD;AAC5E,SAAO,UAAU;AAClB;AACO,SAAS,aAAgB,OAAiD;AAChF,SAAO,SAAS;AACjB;AACO,SAAS,UAAU,OAAkC;AAC3D,SAAO,OAAO,UAAU;AACzB;AACO,SAAS,OAAO,OAA+B;AACrD,SAAO,UAAU;AAClB;AACO,SAAS,QAAQ,OAAgC;AACvD,SAAO,UAAU;AAClB;AACO,SAAS,SAAS,OAAiC;AACzD,SAAO,OAAO,UAAU;AACzB;AACO,SAAS,aAAa,OAAqC;AACjE,SAAO,iBAAiB,KAAK,KAAK,gBAAgB,KAAK,KAAK;AAC7D;AACO,SAAS,mBAAmB,OAAiC;AACnE,SAAO,iBAAiB,KAAK,KAAK,MAAM,QAAQ,GAAG,MAAM;AAC1D;AACO,SAAS,iBAAiB,OAAiC;AACjE,SAAO,SAAS,KAAK,KAAK,MAAM,SAAS;AAC1C;AACA,SAAS,+BAA+B,OAAyC,QAAQ;AACjF,SAAA,SAASA,kBAAiB,OAAiC;AACjE,WAAO,SAAS,KAAK,KAAK,MAAM,IAAI,IAAI,SAAS;AAAA,EAAA;AAEnD;AACO,MAAM,0BAA0B,+BAA+B;AACzD,MAAA,+BAA+B,+BAA+B,WAAW;AACzE,MAAA,6BAA6B,+BAA+B,SAAS;AAC3E,SAAS,SAAS,OAAiC;AAClD,SAAA,OAAO,UAAU,YAAY,UAAU;AAC/C;AACO,SAAS,oBAAoB,OAAiC;AAC7D,SAAA,SAAS,KAAK,KAAK,SAAS;AACpC;AACO,SAAS,gBAAgB,OAAgC;AAC/D,SAAO,SAAS,KAAK,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC;AACnD;AACO,SAAS,eACf,SACiC;AAC1B,SAAA,SAAS,sBAAsB,OAA4B;AAC1D,WAAA,QAAQ,SAAS,KAAU;AAAA,EAAA;AAEpC;AACO,SAAS,yBACZ,YAC4C;AAC/C,SAAO,CAAC,UAAkD;AACzD,WAAO,WAAW,KAAK,CAAa,cAAA,UAAU,KAAK,CAAC;AAAA,EAAA;AAEtD;AACO,SAAS,kCACf,WACwC;AACjC,SAAA,SAAS,kCAAkC,OAAmC;AACpF,WAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,MAAM,SAAS;AAAA,EAAA;AAEtD;AACO,SAAS,gBAAmB,OAAsC;AACxE,SAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS;AAC/C;AACO,SAAS,cAAc,OAAsC;AACnE,SAAO,iBAAiB;AACzB;AACO,SAAS,SAAS,OAAiC;AAClD,SAAA,OAAO,UAAU,YAAY,UAAU;AAC/C;AACO,SAAS,cAAiD,OAA4B;AAC5F,SAAO,SAAS,KAAK,KAAK,MAAM,gBAAgB;AACjD;"}
@@ -0,0 +1,10 @@
1
+ import { AssertionError } from "./AssertionError.js";
2
+ function assert(that = void 0, value, predicate) {
3
+ if (!predicate(value)) {
4
+ throw new AssertionError(value, that);
5
+ }
6
+ }
7
+ export {
8
+ assert
9
+ };
10
+ //# sourceMappingURL=assert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.js","sources":["../../../src/assert-types/assert.ts"],"sourcesContent":["import { AssertionError } from './AssertionError'\nimport { Predicate } from './types'\n\nexport function assert<\n\tIn,\n\tOut extends In\n>(\n\tthat: string | undefined = undefined,\n\tvalue: In,\n\tpredicate: Predicate<In, Out>, // (value: In) => value is Out,\n): asserts value is Out {\n\tif (!predicate(value)) {\n\t\tthrow new AssertionError(value, that)\n\t}\n}\n"],"names":[],"mappings":";AAGO,SAAS,OAIf,OAA2B,QAC3B,OACA,WACuB;AACnB,MAAA,CAAC,UAAU,KAAK,GAAG;AAChB,UAAA,IAAI,eAAe,OAAO,IAAI;AAAA,EACrC;AACD;"}
@@ -0,0 +1,7 @@
1
+ function assertNever(_) {
2
+ throw new Error("Exhaustive Error: This line should never be reached.");
3
+ }
4
+ export {
5
+ assertNever
6
+ };
7
+ //# sourceMappingURL=assertNever.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertNever.js","sources":["../../../src/assert-types/assertNever.ts"],"sourcesContent":["export function assertNever(_: never): never {\n\tthrow new Error('Exhaustive Error: This line should never be reached.')\n}\n"],"names":[],"mappings":"AAAO,SAAS,YAAY,GAAiB;AACtC,QAAA,IAAI,MAAM,sDAAsD;AACvE;"}
@@ -0,0 +1,16 @@
1
+ import { COLOR_SCHEME_CLASS_NAME_REG_EXP } from "./constants.js";
2
+ function colorSchemeClassName(scheme) {
3
+ if (typeof scheme === "string") {
4
+ return `scheme-${scheme}`;
5
+ } else {
6
+ return void 0;
7
+ }
8
+ }
9
+ function isColorSchemeClassName(value) {
10
+ return COLOR_SCHEME_CLASS_NAME_REG_EXP.test(value);
11
+ }
12
+ export {
13
+ colorSchemeClassName,
14
+ isColorSchemeClassName
15
+ };
16
+ //# sourceMappingURL=colorSchemeClassName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorSchemeClassName.js","sources":["../../../src/class-name/colorSchemeClassName.ts"],"sourcesContent":["import { KebabCase } from 'type-fest'\nimport { COLOR_SCHEME_CLASS_NAME_REG_EXP } from './constants'\nimport { ColorSchemeClassName } from './types'\n\n/**\n * Returns a string with a color scheme class name, prefixed with `scheme-`\n *\n * @param scheme - Color scheme name\n * @returns A color scheme class name\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n *\n * return (\n * \t<div className={colorScheme}>\n * \t\t<button className={controlsThemeClassName}>Click me</button>\n * \t</div>\n *\n * // renders:\n * // <div class=\"scheme-system\">\n * // \t<button class=\"scheme-system theme-default-controls theme-danger-controls:hover\">Click me</button>\n * // </div>\n * ```\n */\nexport function colorSchemeClassName<S extends KebabCase<string> = KebabCase<string>>(scheme: S): ColorSchemeClassName<S>;\nexport function colorSchemeClassName<S extends KebabCase<string> = KebabCase<string>>(scheme: null | undefined): undefined;\nexport function colorSchemeClassName<S extends KebabCase<string> = KebabCase<string>>(scheme: S | null | undefined): ColorSchemeClassName<S> | undefined;\nexport function colorSchemeClassName<S extends KebabCase<string> = KebabCase<string>>(scheme: S | null | undefined): ColorSchemeClassName<S> | undefined {\n\tif (typeof scheme === 'string') {\n\t\treturn `scheme-${scheme}`\n\t} else {\n\t\treturn undefined\n\t}\n}\n\n/**\n * Tests if a string is a color scheme CSS class\n * @param value - String to test\n * @returns `true` if the string is a color scheme CSS class\n * @internal\n */\nexport function isColorSchemeClassName<T extends string>(value: string): value is ColorSchemeClassName<T> {\n\treturn COLOR_SCHEME_CLASS_NAME_REG_EXP.test(value)\n}\n"],"names":[],"mappings":";AA6BO,SAAS,qBAAsE,QAAmE;AACpJ,MAAA,OAAO,WAAW,UAAU;AAC/B,WAAO,UAAU;AAAA,EAAA,OACX;AACC,WAAA;AAAA,EACR;AACD;AAQO,SAAS,uBAAyC,OAAiD;AAClG,SAAA,gCAAgC,KAAK,KAAK;AAClD;"}
@@ -0,0 +1,7 @@
1
+ const THEME_CLASS_NAME_REG_EXP = /^theme-(?<name>[\w-]+?)(?:-(?<scope>content|controls))?(?<state>:[\w]+(?:[\w-]+)?)?$/;
2
+ const COLOR_SCHEME_CLASS_NAME_REG_EXP = /^scheme-(?<colorScheme>[a-z0-9]|[a-z0-9]+[a-z-]+[a-z])$/;
3
+ export {
4
+ COLOR_SCHEME_CLASS_NAME_REG_EXP,
5
+ THEME_CLASS_NAME_REG_EXP
6
+ };
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../../src/class-name/constants.ts"],"sourcesContent":["/**\n * RegExp that matches theme class names\n *\n * @internal\n *\n * If theme is `default` then it will match:\n *\n * - theme-default\n * - theme-default:hover\n * - theme-default:active\n * - theme-default:focus\n * - theme-default-content\n * - theme-default-content:hover\n * - theme-default-content:active\n * - theme-default-content:focus\n * - theme-default-controls\n * - theme-default-controls:hover\n * - theme-default-controls:active\n * - theme-default-controls:focus\n *\n * If theme is `brand-color` then it will match:\n *\n * - theme-brand-color\n * - theme-brand-color:hover\n * - theme-brand-color:active\n * - theme-brand-color:focus\n * - theme-brand-color-content\n * - theme-brand-color-content:hover\n * - theme-brand-color-content:active\n * - theme-brand-color-content:focus\n * - theme-brand-color-controls\n * - theme-brand-color-controls:hover\n * - theme-brand-color-controls:active\n * - theme-brand-color-controls:focus\n */\n\nexport const THEME_CLASS_NAME_REG_EXP = /^theme-(?<name>[\\w-]+?)(?:-(?<scope>content|controls))?(?<state>:[\\w]+(?:[\\w-]+)?)?$/\n\n/**\n * Regular expression for testing if a string is a color scheme CSS class\n * @internal\n */\nexport const COLOR_SCHEME_CLASS_NAME_REG_EXP = /^scheme-(?<colorScheme>[a-z0-9]|[a-z0-9]+[a-z-]+[a-z])$/\n"],"names":[],"mappings":"AAoCO,MAAM,2BAA2B;AAMjC,MAAM,kCAAkC;"}
@@ -0,0 +1,7 @@
1
+ function deduplicateClassName(classNameArray) {
2
+ return [...new Set(classNameArray)];
3
+ }
4
+ export {
5
+ deduplicateClassName
6
+ };
7
+ //# sourceMappingURL=deduplicateClassName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deduplicateClassName.js","sources":["../../../src/class-name/deduplicateClassName.ts"],"sourcesContent":["export function deduplicateClassName(classNameArray: string[]): string[] {\n\treturn [...new Set(classNameArray)]\n}\n"],"names":[],"mappings":"AAAO,SAAS,qBAAqB,gBAAoC;AACxE,SAAO,CAAC,GAAG,IAAI,IAAI,cAAc,CAAC;AACnC;"}
@@ -0,0 +1,68 @@
1
+ import { isColorSchemeClassName } from "./colorSchemeClassName.js";
2
+ import { THEME_CLASS_NAME_REG_EXP } from "./constants.js";
3
+ import { flatClassNameList } from "./flatClassNameList.js";
4
+ import { contentThemeClassName, controlsThemeClassName } from "./themeClassName.js";
5
+ function filterThemedClassName(nestedClassName, defaultColorSchemeContext) {
6
+ const theme = { content: void 0, controls: void 0 };
7
+ const stateThemes = {};
8
+ let colorScheme = void 0;
9
+ const flatClassName = flatClassNameList(nestedClassName).map((className) => {
10
+ if (isColorSchemeClassName(className)) {
11
+ colorScheme = className;
12
+ return void 0;
13
+ }
14
+ const match = className.match(THEME_CLASS_NAME_REG_EXP);
15
+ if (match) {
16
+ const name = match.groups.name;
17
+ const scope = match.groups.scope;
18
+ const state = match.groups.state;
19
+ if (state) {
20
+ stateThemes[state] = stateThemes[state] ?? { content: void 0, controls: void 0 };
21
+ if (!scope) {
22
+ stateThemes[state].content = name;
23
+ stateThemes[state].controls = name;
24
+ } else if (scope === "content") {
25
+ stateThemes[state].content = name;
26
+ } else if (scope === "controls") {
27
+ stateThemes[state].controls = name;
28
+ } else {
29
+ throw new Error(`Unknown theme scope: ${scope}`);
30
+ }
31
+ } else {
32
+ if (!scope) {
33
+ theme.content = name;
34
+ theme.controls = name;
35
+ } else if (scope === "content") {
36
+ theme.content = name;
37
+ } else if (scope === "controls") {
38
+ theme.controls = name;
39
+ } else {
40
+ throw new Error(`Unknown theme scope: ${scope}`);
41
+ }
42
+ }
43
+ return void 0;
44
+ } else {
45
+ return className;
46
+ }
47
+ }).filter(Boolean);
48
+ const themeClassNames = [];
49
+ const content = contentThemeClassName(theme.content);
50
+ const controls = controlsThemeClassName(theme.controls);
51
+ themeClassNames.push(content, controls);
52
+ for (const state in stateThemes) {
53
+ const { content: content2, controls: controls2 } = stateThemes[state];
54
+ const contentClassName = contentThemeClassName(content2, state);
55
+ const controlsClassName = controlsThemeClassName(controls2, state);
56
+ themeClassNames.push(contentClassName, controlsClassName);
57
+ }
58
+ const flatThemedClassName = flatClassNameList(themeClassNames);
59
+ if (flatThemedClassName.length > 0 || colorScheme) {
60
+ return [colorScheme ?? defaultColorSchemeContext, ...flatThemedClassName, ...flatClassName];
61
+ } else {
62
+ return flatClassName;
63
+ }
64
+ }
65
+ export {
66
+ filterThemedClassName
67
+ };
68
+ //# sourceMappingURL=filterThemedClassName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterThemedClassName.js","sources":["../../../src/class-name/filterThemedClassName.ts"],"sourcesContent":["import { KebabCase } from 'type-fest'\nimport { isColorSchemeClassName } from './colorSchemeClassName'\nimport { THEME_CLASS_NAME_REG_EXP } from './constants'\nimport { flatClassNameList } from './flatClassNameList'\nimport { contentThemeClassName, controlsThemeClassName } from './themeClassName'\nimport { ColorSchemeClassName, NestedClassName } from './types'\n\nexport type ThemeConfig = { content: string | undefined, controls: string | undefined }\n\nexport function filterThemedClassName(\n\tnestedClassName: NestedClassName,\n\tdefaultColorSchemeContext: ColorSchemeClassName,\n) {\n\tconst theme: ThemeConfig = { content: undefined, controls: undefined }\n\tconst stateThemes: Record<string, ThemeConfig> = {}\n\tlet colorScheme: ColorSchemeClassName | undefined = undefined\n\n\tconst flatClassName = flatClassNameList(nestedClassName).map(className => {\n\t\tif (isColorSchemeClassName(className)) {\n\t\t\tcolorScheme = className\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst match = className.match(THEME_CLASS_NAME_REG_EXP)\n\n\t\tif (match) {\n\t\t\tconst name = match.groups!.name as KebabCase<string>\n\t\t\tconst scope = match.groups!.scope as KebabCase<string>\n\t\t\tconst state = match.groups!.state as `:${KebabCase<string>}`\n\n\t\t\tif (state) {\n\t\t\t\tstateThemes[state] = stateThemes[state] ?? { content: undefined, controls: undefined }\n\n\t\t\t\tif (!scope) {\n\t\t\t\t\tstateThemes[state].content = name\n\t\t\t\t\tstateThemes[state].controls = name\n\t\t\t\t} else if (scope === 'content') {\n\t\t\t\t\tstateThemes[state].content = name\n\t\t\t\t} else if (scope === 'controls') {\n\t\t\t\t\tstateThemes[state].controls = name\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Unknown theme scope: ${scope}`)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!scope) {\n\t\t\t\t\ttheme.content = name\n\t\t\t\t\ttheme.controls = name\n\t\t\t\t} else if (scope === 'content') {\n\t\t\t\t\ttheme.content = name\n\t\t\t\t} else if (scope === 'controls') {\n\t\t\t\t\ttheme.controls = name\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Unknown theme scope: ${scope}`)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn undefined\n\t\t} else {\n\t\t\treturn className\n\t\t}\n\t}).filter(Boolean) as string[]\n\n\tconst themeClassNames: (string | undefined)[] = []\n\n\tconst content = contentThemeClassName(theme.content)\n\tconst controls = controlsThemeClassName(theme.controls)\n\n\tthemeClassNames.push(content, controls)\n\n\tfor (const state in stateThemes) {\n\t\tconst { content, controls } = stateThemes[state]\n\n\t\tconst contentClassName = contentThemeClassName(content, state as `:${KebabCase<string>}`)\n\t\tconst controlsClassName = controlsThemeClassName(controls, state as `:${KebabCase<string>}`)\n\n\t\tthemeClassNames.push(contentClassName, controlsClassName)\n\t}\n\n\tconst flatThemedClassName = flatClassNameList(themeClassNames)\n\n\tif (flatThemedClassName.length > 0 || colorScheme) {\n\t\treturn [colorScheme ?? defaultColorSchemeContext, ...flatThemedClassName, ...flatClassName]\n\t} else {\n\t\treturn flatClassName\n\t}\n}\n"],"names":["content","controls"],"mappings":";;;;AASgB,SAAA,sBACf,iBACA,2BACC;AACD,QAAM,QAAqB,EAAE,SAAS,QAAW,UAAU;AAC3D,QAAM,cAA2C,CAAA;AACjD,MAAI,cAAgD;AAEpD,QAAM,gBAAgB,kBAAkB,eAAe,EAAE,IAAI,CAAa,cAAA;AACrE,QAAA,uBAAuB,SAAS,GAAG;AACxB,oBAAA;AACP,aAAA;AAAA,IACR;AAEM,UAAA,QAAQ,UAAU,MAAM,wBAAwB;AAEtD,QAAI,OAAO;AACJ,YAAA,OAAO,MAAM,OAAQ;AACrB,YAAA,QAAQ,MAAM,OAAQ;AACtB,YAAA,QAAQ,MAAM,OAAQ;AAE5B,UAAI,OAAO;AACE,oBAAA,KAAK,IAAI,YAAY,KAAK,KAAK,EAAE,SAAS,QAAW,UAAU,OAAU;AAErF,YAAI,CAAC,OAAO;AACC,sBAAA,KAAK,EAAE,UAAU;AACjB,sBAAA,KAAK,EAAE,WAAW;AAAA,QAAA,WACpB,UAAU,WAAW;AACnB,sBAAA,KAAK,EAAE,UAAU;AAAA,QAAA,WACnB,UAAU,YAAY;AACpB,sBAAA,KAAK,EAAE,WAAW;AAAA,QAAA,OACxB;AACA,gBAAA,IAAI,MAAM,wBAAwB,OAAO;AAAA,QAChD;AAAA,MAAA,OACM;AACN,YAAI,CAAC,OAAO;AACX,gBAAM,UAAU;AAChB,gBAAM,WAAW;AAAA,QAAA,WACP,UAAU,WAAW;AAC/B,gBAAM,UAAU;AAAA,QAAA,WACN,UAAU,YAAY;AAChC,gBAAM,WAAW;AAAA,QAAA,OACX;AACA,gBAAA,IAAI,MAAM,wBAAwB,OAAO;AAAA,QAChD;AAAA,MACD;AAEO,aAAA;AAAA,IAAA,OACD;AACC,aAAA;AAAA,IACR;AAAA,EAAA,CACA,EAAE,OAAO,OAAO;AAEjB,QAAM,kBAA0C,CAAA;AAE1C,QAAA,UAAU,sBAAsB,MAAM,OAAO;AAC7C,QAAA,WAAW,uBAAuB,MAAM,QAAQ;AAEtC,kBAAA,KAAK,SAAS,QAAQ;AAEtC,aAAW,SAAS,aAAa;AAChC,UAAM,EAAE,SAAAA,UAAS,UAAAC,cAAa,YAAY,KAAK;AAEzC,UAAA,mBAAmB,sBAAsBD,UAAS,KAAgC;AAClF,UAAA,oBAAoB,uBAAuBC,WAAU,KAAgC;AAE3E,oBAAA,KAAK,kBAAkB,iBAAiB;AAAA,EACzD;AAEM,QAAA,sBAAsB,kBAAkB,eAAe;AAEzD,MAAA,oBAAoB,SAAS,KAAK,aAAa;AAClD,WAAO,CAAC,eAAe,2BAA2B,GAAG,qBAAqB,GAAG,aAAa;AAAA,EAAA,OACpF;AACC,WAAA;AAAA,EACR;AACD;"}
@@ -0,0 +1,16 @@
1
+ import { assertNever } from "../assert-types/assertNever.js";
2
+ function flatClassNameList(className) {
3
+ if (!className) {
4
+ return [];
5
+ } else if (typeof className === "string") {
6
+ return className.split(" ").filter(Boolean);
7
+ } else if (Array.isArray(className)) {
8
+ return className.flatMap(flatClassNameList);
9
+ } else {
10
+ assertNever();
11
+ }
12
+ }
13
+ export {
14
+ flatClassNameList
15
+ };
16
+ //# sourceMappingURL=flatClassNameList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatClassNameList.js","sources":["../../../src/class-name/flatClassNameList.ts"],"sourcesContent":["import { assertNever } from '../assert-types'\nimport { NestedClassName } from './types'\n\nexport function flatClassNameList(className: NestedClassName): string[] {\n\tif (!className) {\n\t\treturn []\n\t} else if (typeof className === 'string') {\n\t\treturn className.split(' ').filter(Boolean)\n\t} else if (Array.isArray(className)) {\n\t\treturn className.flatMap(flatClassNameList)\n\t} else {\n\t\tif (import.meta.env.DEV) {\n\t\t\tconsole.error(`Unexpected className: ${JSON.stringify(className)}`)\n\t\t}\n\n\t\tassertNever(className)\n\t}\n}\n"],"names":[],"mappings":";AAGO,SAAS,kBAAkB,WAAsC;AACvE,MAAI,CAAC,WAAW;AACf,WAAO;EAAC,WACE,OAAO,cAAc,UAAU;AACzC,WAAO,UAAU,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,EAChC,WAAA,MAAM,QAAQ,SAAS,GAAG;AAC7B,WAAA,UAAU,QAAQ,iBAAiB;AAAA,EAAA,OACpC;AAKN,gBAAqB;AAAA,EACtB;AACD;"}
@@ -0,0 +1,9 @@
1
+ import { deduplicateClassName } from "./deduplicateClassName.js";
2
+ import { flatClassNameList } from "./flatClassNameList.js";
3
+ function listClassName(list) {
4
+ return deduplicateClassName(flatClassNameList(list)).join(" ");
5
+ }
6
+ export {
7
+ listClassName
8
+ };
9
+ //# sourceMappingURL=listClassName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listClassName.js","sources":["../../../src/class-name/listClassName.ts"],"sourcesContent":["import { deduplicateClassName } from './deduplicateClassName'\nimport { flatClassNameList } from './flatClassNameList'\nimport { NestedClassName } from './types'\n\n/**\n * Combines a list of class names into a single string, even nested\n *\n * @param list - List of class names\n * @returns Combined class names as string\n */\nexport function listClassName(list: NestedClassName) {\n\treturn deduplicateClassName(flatClassNameList(list)).join(' ')\n}\n"],"names":[],"mappings":";;AAUO,SAAS,cAAc,MAAuB;AACpD,SAAO,qBAAqB,kBAAkB,IAAI,CAAC,EAAE,KAAK,GAAG;AAC9D;"}
@@ -0,0 +1,11 @@
1
+ import { toKebabCase } from "../string-utilities/kebabCase.js";
2
+ function stateClassName(state = null, { glue = "-", removeFalsy = true } = {}) {
3
+ const entries = Object.entries(state ?? []).map(
4
+ ([className, value]) => value || value === 0 || !removeFalsy ? value === true ? toKebabCase(className) : `${toKebabCase(className)}${glue}${value}` : ""
5
+ ).filter(Boolean);
6
+ return entries;
7
+ }
8
+ export {
9
+ stateClassName
10
+ };
11
+ //# sourceMappingURL=stateClassName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateClassName.js","sources":["../../../src/class-name/stateClassName.ts"],"sourcesContent":["import { toKebabCase } from '../string-utilities'\nimport { ClassNameStateMap } from './types'\n\nexport interface StateClassNameOptions {\n\tglue?: string;\n\tremoveFalsy?: boolean;\n}\n\n/**\n * Combines a state map of class names into a single string\n *\n * @example\n * stateClassName({ foo: true, bar: false, baz: 1 }) // => 'foo baz-1'\n *\n * @param state - State map object with class names as keys and literals as values.\n * @param options - Options object\n * @param options.glue - Glue to use between the class name and the value, default is '-'. Set to '' to disable.\n * @param options.removeFalsy - Whether to remove falsy class names, default is true.\n * @returns Combined class names as string\n */\nexport function stateClassName(\n\tstate: ClassNameStateMap | null = null,\n\t{ glue = '-', removeFalsy = true }: StateClassNameOptions = {},\n): string[] {\n\tconst entries = Object.entries(state ?? []).map(\n\t\t([className, value]) => value || value === 0 || !removeFalsy\n\t\t\t? (value === true ? toKebabCase(className) : `${toKebabCase(className)}${glue}${value}`)\n\t\t\t: '',\n\t).filter(Boolean)\n\n\treturn entries\n}\n"],"names":[],"mappings":";AAoBgB,SAAA,eACf,QAAkC,MAClC,EAAE,OAAO,KAAK,cAAc,KAAgC,IAAA,IACjD;AACX,QAAM,UAAU,OAAO,QAAQ,SAAS,CAAA,CAAE,EAAE;AAAA,IAC3C,CAAC,CAAC,WAAW,KAAK,MAAM,SAAS,UAAU,KAAK,CAAC,cAC7C,UAAU,OAAO,YAAY,SAAS,IAAI,GAAG,YAAY,SAAS,IAAI,OAAO,UAC9E;AAAA,EAAA,EACF,OAAO,OAAO;AAET,SAAA;AACR;"}