@semcore/core 17.0.0-prerelease.20 → 17.0.0-prerelease.20-prerelease.20

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 (354) hide show
  1. package/lib/LastInteractionType.js +36 -22
  2. package/lib/LastInteractionType.js.map +1 -1
  3. package/lib/LastInteractionType.mjs +33 -19
  4. package/lib/LastInteractionType.mjs.map +1 -1
  5. package/lib/core-types/Component.js +41 -25
  6. package/lib/core-types/Component.js.map +1 -1
  7. package/lib/core-types/Component.mjs +38 -18
  8. package/lib/core-types/Component.mjs.map +1 -1
  9. package/lib/core-types/symbols.js +9 -9
  10. package/lib/core-types/symbols.js.map +1 -1
  11. package/lib/core-types/symbols.mjs +9 -9
  12. package/lib/core-types/symbols.mjs.map +1 -1
  13. package/lib/coreFactory.js +205 -143
  14. package/lib/coreFactory.js.map +1 -1
  15. package/lib/coreFactory.mjs +164 -118
  16. package/lib/coreFactory.mjs.map +1 -1
  17. package/lib/decorators/propsObserver.js +64 -36
  18. package/lib/decorators/propsObserver.js.map +1 -1
  19. package/lib/decorators/propsObserver.mjs +61 -33
  20. package/lib/decorators/propsObserver.mjs.map +1 -1
  21. package/lib/decorators/reactive.js +17 -17
  22. package/lib/decorators/reactive.js.map +1 -1
  23. package/lib/decorators/reactive.mjs +15 -15
  24. package/lib/decorators/reactive.mjs.map +1 -1
  25. package/lib/enhancement/Children.js +59 -51
  26. package/lib/enhancement/Children.js.map +1 -1
  27. package/lib/enhancement/Children.mjs +41 -47
  28. package/lib/enhancement/Children.mjs.map +1 -1
  29. package/lib/enhancement/Root.js +37 -36
  30. package/lib/enhancement/Root.js.map +1 -1
  31. package/lib/enhancement/Root.mjs +18 -28
  32. package/lib/enhancement/Root.mjs.map +1 -1
  33. package/lib/enhancement/dataName.js +8 -7
  34. package/lib/enhancement/dataName.js.map +1 -1
  35. package/lib/enhancement/dataName.mjs +5 -5
  36. package/lib/enhancement/dataName.mjs.map +1 -1
  37. package/lib/enhancement/enhance.js +9 -6
  38. package/lib/enhancement/enhance.js.map +1 -1
  39. package/lib/enhancement/enhance.mjs +7 -5
  40. package/lib/enhancement/enhance.mjs.map +1 -1
  41. package/lib/enhancement/functionDefaultProps.js +6 -6
  42. package/lib/enhancement/functionDefaultProps.js.map +1 -1
  43. package/lib/enhancement/functionDefaultProps.mjs +4 -4
  44. package/lib/enhancement/functionDefaultProps.mjs.map +1 -1
  45. package/lib/enhancement/i18n.js +13 -13
  46. package/lib/enhancement/i18n.js.map +1 -1
  47. package/lib/enhancement/i18n.mjs +9 -10
  48. package/lib/enhancement/i18n.mjs.map +1 -1
  49. package/lib/enhancement/inheritedName.js +8 -7
  50. package/lib/enhancement/inheritedName.js.map +1 -1
  51. package/lib/enhancement/inheritedName.mjs +5 -5
  52. package/lib/enhancement/inheritedName.mjs.map +1 -1
  53. package/lib/enhancement/staticChildren.js +56 -47
  54. package/lib/enhancement/staticChildren.js.map +1 -1
  55. package/lib/enhancement/staticChildren.mjs +48 -43
  56. package/lib/enhancement/staticChildren.mjs.map +1 -1
  57. package/lib/enhancement/style.js +27 -29
  58. package/lib/enhancement/style.js.map +1 -1
  59. package/lib/enhancement/style.mjs +20 -26
  60. package/lib/enhancement/style.mjs.map +1 -1
  61. package/lib/enhancement/uncontrolledProps.js +65 -46
  62. package/lib/enhancement/uncontrolledProps.js.map +1 -1
  63. package/lib/enhancement/uncontrolledProps.mjs +52 -43
  64. package/lib/enhancement/uncontrolledProps.mjs.map +1 -1
  65. package/lib/esm/LastInteractionType.mjs +33 -19
  66. package/lib/esm/core-types/Component.mjs +38 -18
  67. package/lib/esm/core-types/symbols.mjs +9 -9
  68. package/lib/esm/coreFactory.mjs +164 -118
  69. package/lib/esm/enhancement/Children.mjs +41 -47
  70. package/lib/esm/enhancement/Root.mjs +18 -28
  71. package/lib/esm/enhancement/dataName.mjs +5 -5
  72. package/lib/esm/enhancement/enhance.mjs +7 -5
  73. package/lib/esm/enhancement/functionDefaultProps.mjs +4 -4
  74. package/lib/esm/enhancement/i18n.mjs +9 -10
  75. package/lib/esm/enhancement/inheritedName.mjs +5 -5
  76. package/lib/esm/enhancement/staticChildren.mjs +48 -43
  77. package/lib/esm/enhancement/style.mjs +20 -26
  78. package/lib/esm/enhancement/uncontrolledProps.mjs +52 -43
  79. package/lib/esm/register.mjs +20 -12
  80. package/lib/esm/styled/reshadow-core.mjs +111 -98
  81. package/lib/esm/styled/sstyled.mjs +41 -31
  82. package/lib/esm/utils/assignProps.mjs +36 -32
  83. package/lib/esm/utils/enhances/WithI18n.mjs +17 -15
  84. package/lib/esm/utils/enhances/i18nEnhance.mjs +61 -47
  85. package/lib/esm/utils/logger.mjs +21 -13
  86. package/lib/esm/utils/pick.mjs +4 -4
  87. package/lib/esm/utils/ref.mjs +43 -27
  88. package/lib/esm/utils/use/useEnhancedEffect.mjs +1 -1
  89. package/lib/index.js +17 -17
  90. package/lib/register.js +24 -17
  91. package/lib/register.js.map +1 -1
  92. package/lib/register.mjs +20 -12
  93. package/lib/register.mjs.map +1 -1
  94. package/lib/styled/index.js +4 -4
  95. package/lib/styled/reshadow-core.js +104 -102
  96. package/lib/styled/reshadow-core.js.map +1 -1
  97. package/lib/styled/reshadow-core.mjs +111 -98
  98. package/lib/styled/reshadow-core.mjs.map +1 -1
  99. package/lib/styled/sstyled.js +53 -31
  100. package/lib/styled/sstyled.js.map +1 -1
  101. package/lib/styled/sstyled.mjs +41 -31
  102. package/lib/styled/sstyled.mjs.map +1 -1
  103. package/lib/theme/processor.js +222 -150
  104. package/lib/theme/processor.js.map +1 -1
  105. package/lib/theme/processor.mjs +221 -148
  106. package/lib/theme/processor.mjs.map +1 -1
  107. package/lib/theme/themes/dark.js +2 -2
  108. package/lib/theme/themes/dark.js.map +1 -1
  109. package/lib/theme/themes/default.js +2 -2
  110. package/lib/theme/themes/default.js.map +1 -1
  111. package/lib/theme/themes/highlights-dark.js +2 -2
  112. package/lib/theme/themes/highlights-dark.js.map +1 -1
  113. package/lib/theme/themes/highlights-light.js +2 -2
  114. package/lib/theme/themes/highlights-light.js.map +1 -1
  115. package/lib/theme/themes/light.js +2 -2
  116. package/lib/theme/themes/light.js.map +1 -1
  117. package/lib/theme/utils.js +215 -140
  118. package/lib/theme/utils.js.map +1 -1
  119. package/lib/theme/utils.mjs +214 -135
  120. package/lib/theme/utils.mjs.map +1 -1
  121. package/lib/utils/CSSinJS.js +10 -8
  122. package/lib/utils/CSSinJS.js.map +1 -1
  123. package/lib/utils/CSSinJS.mjs +7 -6
  124. package/lib/utils/CSSinJS.mjs.map +1 -1
  125. package/lib/utils/ThemeProvider.js +51 -44
  126. package/lib/utils/ThemeProvider.js.map +1 -1
  127. package/lib/utils/ThemeProvider.mjs +47 -36
  128. package/lib/utils/ThemeProvider.mjs.map +1 -1
  129. package/lib/utils/addonText.js +7 -4
  130. package/lib/utils/addonText.js.map +1 -1
  131. package/lib/utils/addonText.mjs +5 -2
  132. package/lib/utils/addonText.mjs.map +1 -1
  133. package/lib/utils/addonTextChildren.js +21 -15
  134. package/lib/utils/addonTextChildren.js.map +1 -1
  135. package/lib/utils/addonTextChildren.mjs +13 -7
  136. package/lib/utils/addonTextChildren.mjs.map +1 -1
  137. package/lib/utils/ariaProps.js +5 -7
  138. package/lib/utils/ariaProps.js.map +1 -1
  139. package/lib/utils/ariaProps.mjs +5 -7
  140. package/lib/utils/ariaProps.mjs.map +1 -1
  141. package/lib/utils/assignProps.js +37 -33
  142. package/lib/utils/assignProps.js.map +1 -1
  143. package/lib/utils/assignProps.mjs +36 -32
  144. package/lib/utils/assignProps.mjs.map +1 -1
  145. package/lib/utils/canUseDOM.js +1 -1
  146. package/lib/utils/capitalizeFirstLetter.js +1 -1
  147. package/lib/utils/color.js +95 -72
  148. package/lib/utils/color.js.map +1 -1
  149. package/lib/utils/color.mjs +94 -71
  150. package/lib/utils/color.mjs.map +1 -1
  151. package/lib/utils/compose.js +12 -3
  152. package/lib/utils/compose.js.map +1 -1
  153. package/lib/utils/compose.mjs +11 -2
  154. package/lib/utils/compose.mjs.map +1 -1
  155. package/lib/utils/createUUID.js +5 -5
  156. package/lib/utils/createUUID.js.map +1 -1
  157. package/lib/utils/createUUID.mjs +4 -4
  158. package/lib/utils/createUUID.mjs.map +1 -1
  159. package/lib/utils/cssToIntDefault.js +4 -3
  160. package/lib/utils/cssToIntDefault.js.map +1 -1
  161. package/lib/utils/cssToIntDefault.mjs +3 -2
  162. package/lib/utils/cssToIntDefault.mjs.map +1 -1
  163. package/lib/utils/enhances/WithCSS.js +8 -10
  164. package/lib/utils/enhances/WithCSS.js.map +1 -1
  165. package/lib/utils/enhances/WithCSS.mjs +6 -7
  166. package/lib/utils/enhances/WithCSS.mjs.map +1 -1
  167. package/lib/utils/enhances/WithI18n.js +19 -19
  168. package/lib/utils/enhances/WithI18n.js.map +1 -1
  169. package/lib/utils/enhances/WithI18n.mjs +17 -15
  170. package/lib/utils/enhances/WithI18n.mjs.map +1 -1
  171. package/lib/utils/enhances/a11yEnhance.js +39 -34
  172. package/lib/utils/enhances/a11yEnhance.js.map +1 -1
  173. package/lib/utils/enhances/a11yEnhance.mjs +36 -32
  174. package/lib/utils/enhances/a11yEnhance.mjs.map +1 -1
  175. package/lib/utils/enhances/animatedSizeEnhance.js +63 -55
  176. package/lib/utils/enhances/animatedSizeEnhance.js.map +1 -1
  177. package/lib/utils/enhances/animatedSizeEnhance.mjs +58 -50
  178. package/lib/utils/enhances/animatedSizeEnhance.mjs.map +1 -1
  179. package/lib/utils/enhances/contextEnhance.js +11 -12
  180. package/lib/utils/enhances/contextEnhance.js.map +1 -1
  181. package/lib/utils/enhances/contextEnhance.mjs +8 -9
  182. package/lib/utils/enhances/contextEnhance.mjs.map +1 -1
  183. package/lib/utils/enhances/i18nEnhance.js +67 -51
  184. package/lib/utils/enhances/i18nEnhance.js.map +1 -1
  185. package/lib/utils/enhances/i18nEnhance.mjs +61 -47
  186. package/lib/utils/enhances/i18nEnhance.mjs.map +1 -1
  187. package/lib/utils/enhances/resolveColorEnhance.js +10 -12
  188. package/lib/utils/enhances/resolveColorEnhance.js.map +1 -1
  189. package/lib/utils/enhances/resolveColorEnhance.mjs +6 -8
  190. package/lib/utils/enhances/resolveColorEnhance.mjs.map +1 -1
  191. package/lib/utils/eventEmitter.js +57 -30
  192. package/lib/utils/eventEmitter.js.map +1 -1
  193. package/lib/utils/eventEmitter.mjs +55 -26
  194. package/lib/utils/eventEmitter.mjs.map +1 -1
  195. package/lib/utils/findComponent.js +42 -35
  196. package/lib/utils/findComponent.js.map +1 -1
  197. package/lib/utils/findComponent.mjs +33 -26
  198. package/lib/utils/findComponent.mjs.map +1 -1
  199. package/lib/utils/fire.js +13 -7
  200. package/lib/utils/fire.js.map +1 -1
  201. package/lib/utils/fire.mjs +11 -5
  202. package/lib/utils/fire.mjs.map +1 -1
  203. package/lib/utils/focus-lock/focusBorders.js +32 -28
  204. package/lib/utils/focus-lock/focusBorders.js.map +1 -1
  205. package/lib/utils/focus-lock/focusBorders.mjs +32 -26
  206. package/lib/utils/focus-lock/focusBorders.mjs.map +1 -1
  207. package/lib/utils/focus-lock/getFocusableIn.js +6 -4
  208. package/lib/utils/focus-lock/getFocusableIn.js.map +1 -1
  209. package/lib/utils/focus-lock/getFocusableIn.mjs +6 -3
  210. package/lib/utils/focus-lock/getFocusableIn.mjs.map +1 -1
  211. package/lib/utils/focus-lock/isFocusInside.js +6 -5
  212. package/lib/utils/focus-lock/isFocusInside.js.map +1 -1
  213. package/lib/utils/focus-lock/isFocusInside.mjs +6 -4
  214. package/lib/utils/focus-lock/isFocusInside.mjs.map +1 -1
  215. package/lib/utils/focus-lock/isFocusable.js +12 -9
  216. package/lib/utils/focus-lock/isFocusable.js.map +1 -1
  217. package/lib/utils/focus-lock/isFocusable.mjs +11 -8
  218. package/lib/utils/focus-lock/isFocusable.mjs.map +1 -1
  219. package/lib/utils/focus-lock/setFocus.js +27 -21
  220. package/lib/utils/focus-lock/setFocus.js.map +1 -1
  221. package/lib/utils/focus-lock/setFocus.mjs +25 -19
  222. package/lib/utils/focus-lock/setFocus.mjs.map +1 -1
  223. package/lib/utils/getAccessibleName.js +22 -10
  224. package/lib/utils/getAccessibleName.js.map +1 -1
  225. package/lib/utils/getAccessibleName.mjs +21 -10
  226. package/lib/utils/getAccessibleName.mjs.map +1 -1
  227. package/lib/utils/getDisplayName.js +1 -1
  228. package/lib/utils/getEventTarget.js +32 -13
  229. package/lib/utils/getEventTarget.js.map +1 -1
  230. package/lib/utils/getEventTarget.mjs +31 -12
  231. package/lib/utils/getEventTarget.mjs.map +1 -1
  232. package/lib/utils/getOriginChildren.js +4 -4
  233. package/lib/utils/getOriginChildren.js.map +1 -1
  234. package/lib/utils/getRandomInt.js +1 -1
  235. package/lib/utils/getValue.js +6 -4
  236. package/lib/utils/getValue.js.map +1 -1
  237. package/lib/utils/getValue.mjs +5 -3
  238. package/lib/utils/getValue.mjs.map +1 -1
  239. package/lib/utils/hasLabels.js +27 -16
  240. package/lib/utils/hasLabels.js.map +1 -1
  241. package/lib/utils/hasLabels.mjs +24 -14
  242. package/lib/utils/hasLabels.mjs.map +1 -1
  243. package/lib/utils/hasParent.js +2 -3
  244. package/lib/utils/hasParent.js.map +1 -1
  245. package/lib/utils/hasParent.mjs +3 -2
  246. package/lib/utils/hasParent.mjs.map +1 -1
  247. package/lib/utils/ifChildren.js +4 -6
  248. package/lib/utils/ifChildren.js.map +1 -1
  249. package/lib/utils/ifChildren.mjs +2 -4
  250. package/lib/utils/ifChildren.mjs.map +1 -1
  251. package/lib/utils/injectStyle.js +13 -11
  252. package/lib/utils/injectStyle.js.map +1 -1
  253. package/lib/utils/injectStyle.mjs +10 -9
  254. package/lib/utils/injectStyle.mjs.map +1 -1
  255. package/lib/utils/inputProps.js +5 -5
  256. package/lib/utils/inputProps.js.map +1 -1
  257. package/lib/utils/inputProps.mjs +4 -4
  258. package/lib/utils/inputProps.mjs.map +1 -1
  259. package/lib/utils/isInteractiveElement.js +9 -7
  260. package/lib/utils/isInteractiveElement.js.map +1 -1
  261. package/lib/utils/isInteractiveElement.mjs +9 -7
  262. package/lib/utils/isInteractiveElement.mjs.map +1 -1
  263. package/lib/utils/isNode.js +5 -4
  264. package/lib/utils/isNode.js.map +1 -1
  265. package/lib/utils/isNode.mjs +2 -1
  266. package/lib/utils/isNode.mjs.map +1 -1
  267. package/lib/utils/isPromise.js +1 -1
  268. package/lib/utils/isRetina.js +2 -7
  269. package/lib/utils/isRetina.js.map +1 -1
  270. package/lib/utils/isRetina.mjs +1 -6
  271. package/lib/utils/isRetina.mjs.map +1 -1
  272. package/lib/utils/logger.js +25 -18
  273. package/lib/utils/logger.js.map +1 -1
  274. package/lib/utils/logger.mjs +21 -13
  275. package/lib/utils/logger.mjs.map +1 -1
  276. package/lib/utils/numericChecker.js +18 -11
  277. package/lib/utils/numericChecker.js.map +1 -1
  278. package/lib/utils/numericChecker.mjs +17 -10
  279. package/lib/utils/numericChecker.mjs.map +1 -1
  280. package/lib/utils/ownerDocument.js +2 -2
  281. package/lib/utils/ownerDocument.js.map +1 -1
  282. package/lib/utils/ownerDocument.mjs +1 -1
  283. package/lib/utils/ownerDocument.mjs.map +1 -1
  284. package/lib/utils/pick.js +5 -5
  285. package/lib/utils/pick.js.map +1 -1
  286. package/lib/utils/pick.mjs +4 -4
  287. package/lib/utils/pick.mjs.map +1 -1
  288. package/lib/utils/propsForElement.js +12 -10
  289. package/lib/utils/propsForElement.js.map +1 -1
  290. package/lib/utils/propsForElement.mjs +10 -8
  291. package/lib/utils/propsForElement.mjs.map +1 -1
  292. package/lib/utils/rafTrottle.js +14 -9
  293. package/lib/utils/rafTrottle.js.map +1 -1
  294. package/lib/utils/rafTrottle.mjs +12 -7
  295. package/lib/utils/rafTrottle.mjs.map +1 -1
  296. package/lib/utils/reactToText.js +8 -5
  297. package/lib/utils/reactToText.js.map +1 -1
  298. package/lib/utils/reactToText.mjs +6 -3
  299. package/lib/utils/reactToText.mjs.map +1 -1
  300. package/lib/utils/ref.js +47 -29
  301. package/lib/utils/ref.js.map +1 -1
  302. package/lib/utils/ref.mjs +43 -27
  303. package/lib/utils/ref.mjs.map +1 -1
  304. package/lib/utils/setRef.js +2 -2
  305. package/lib/utils/setRef.js.map +1 -1
  306. package/lib/utils/syncScroll.js +24 -24
  307. package/lib/utils/syncScroll.js.map +1 -1
  308. package/lib/utils/syncScroll.mjs +21 -21
  309. package/lib/utils/syncScroll.mjs.map +1 -1
  310. package/lib/utils/uncontroll.js +18 -8
  311. package/lib/utils/uncontroll.js.map +1 -1
  312. package/lib/utils/uncontroll.mjs +17 -8
  313. package/lib/utils/uncontroll.mjs.map +1 -1
  314. package/lib/utils/uniqueID.js +27 -22
  315. package/lib/utils/uniqueID.js.map +1 -1
  316. package/lib/utils/uniqueID.mjs +25 -18
  317. package/lib/utils/uniqueID.mjs.map +1 -1
  318. package/lib/utils/use/useColorResolver.js +21 -20
  319. package/lib/utils/use/useColorResolver.js.map +1 -1
  320. package/lib/utils/use/useColorResolver.mjs +18 -16
  321. package/lib/utils/use/useColorResolver.mjs.map +1 -1
  322. package/lib/utils/use/useEnhancedEffect.js +4 -4
  323. package/lib/utils/use/useEnhancedEffect.js.map +1 -1
  324. package/lib/utils/use/useEnhancedEffect.mjs +1 -1
  325. package/lib/utils/use/useEnhancedEffect.mjs.map +1 -1
  326. package/lib/utils/use/useEventCallback.js +10 -5
  327. package/lib/utils/use/useEventCallback.js.map +1 -1
  328. package/lib/utils/use/useEventCallback.mjs +8 -3
  329. package/lib/utils/use/useEventCallback.mjs.map +1 -1
  330. package/lib/utils/use/useEventListener.js +15 -11
  331. package/lib/utils/use/useEventListener.js.map +1 -1
  332. package/lib/utils/use/useEventListener.mjs +11 -7
  333. package/lib/utils/use/useEventListener.mjs.map +1 -1
  334. package/lib/utils/use/useFocusLock.js +94 -80
  335. package/lib/utils/use/useFocusLock.js.map +1 -1
  336. package/lib/utils/use/useFocusLock.mjs +88 -71
  337. package/lib/utils/use/useFocusLock.mjs.map +1 -1
  338. package/lib/utils/use/usePreventScroll.js +28 -26
  339. package/lib/utils/use/usePreventScroll.js.map +1 -1
  340. package/lib/utils/use/usePreventScroll.mjs +23 -21
  341. package/lib/utils/use/usePreventScroll.mjs.map +1 -1
  342. package/lib/utils/use/useScrollBarWidth.js +14 -8
  343. package/lib/utils/use/useScrollBarWidth.js.map +1 -1
  344. package/lib/utils/use/useScrollBarWidth.mjs +13 -8
  345. package/lib/utils/use/useScrollBarWidth.mjs.map +1 -1
  346. package/lib/utils/useCssVariable.js +37 -32
  347. package/lib/utils/useCssVariable.js.map +1 -1
  348. package/lib/utils/useCssVariable.mjs +34 -27
  349. package/lib/utils/useCssVariable.mjs.map +1 -1
  350. package/lib/utils/zIndexStacking.js +24 -28
  351. package/lib/utils/zIndexStacking.js.map +1 -1
  352. package/lib/utils/zIndexStacking.mjs +22 -23
  353. package/lib/utils/zIndexStacking.mjs.map +1 -1
  354. package/package.json +1 -1
@@ -1,250 +1,325 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.tokensToJson = exports.tokensToJs = exports.tokensToCss = exports.processTokens = void 0;
8
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
8
13
  var _colorjs = _interopRequireDefault(require("colorjs.io"));
9
- const Color = _colorjs.default;
10
- const processTokens = (base, tokens, featureHighlight, prefix) => {
11
- const values = {};
12
- const basicTokens = new Set();
13
- const highlightTokens = new Set();
14
- const modifications = {};
15
- const types = {};
16
- const descriptions = {};
17
- const mixins = [];
18
- const traverse = (node, pathParts = [], setToAdd) => {
19
- for (const key in node) {
14
+ var Color = _colorjs["default"];
15
+ var processTokens = exports.processTokens = function processTokens(base, tokens, featureHighlight, prefix) {
16
+ var values = {};
17
+ var basicTokens = new Set();
18
+ var highlightTokens = new Set();
19
+ var modifications = {};
20
+ var types = {};
21
+ var descriptions = {};
22
+ var mixins = [];
23
+ var _traverse = function traverse(node) {
24
+ var pathParts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
25
+ var setToAdd = arguments.length > 2 ? arguments[2] : undefined;
26
+ for (var key in node) {
20
27
  if (key === 'type') continue;
21
28
  if (key === 'value') continue;
22
29
  if (key === 'description') continue;
23
30
  if (key === '$extensions') continue;
24
- traverse(node[key], [...pathParts, key], setToAdd);
31
+ _traverse(node[key], [].concat((0, _toConsumableArray2["default"])(pathParts), [key]), setToAdd);
25
32
  }
26
33
  if ('type' in node && typeof node.type === 'string') {
27
- const path = pathParts.join('-');
34
+ var path = pathParts.join('-');
28
35
  types[path] = node.type;
29
- if (typeof node.value === 'object') {
36
+ if ((0, _typeof2["default"])(node.value) === 'object') {
30
37
  mixins.push(path);
31
38
  return;
32
39
  }
33
40
  if (values[path]) {
34
- throw new Error(`Duplicated design token "${path}"`);
41
+ throw new Error("Duplicated design token \"".concat(path, "\""));
35
42
  }
36
43
  values[path] = node.value;
37
- setToAdd?.add(path);
44
+ setToAdd === null || setToAdd === void 0 || setToAdd.add(path);
38
45
  if (typeof node.description === 'string') descriptions[path] = node.description;
39
46
  if (node.$extensions) {
40
- for (const extension in node.$extensions) {
47
+ for (var extension in node.$extensions) {
41
48
  if (extension === 'studio.tokens') {
42
- modifications[path] ??= [];
49
+ var _modifications$path;
50
+ (_modifications$path = modifications[path]) !== null && _modifications$path !== void 0 ? _modifications$path : modifications[path] = [];
43
51
  modifications[path].push(node.$extensions['studio.tokens'].modify);
44
52
  } else {
45
- throw new Error(`Unsupported extension "${extension}" for design token "${path}"`);
53
+ throw new Error("Unsupported extension \"".concat(extension, "\" for design token \"").concat(path, "\""));
46
54
  }
47
55
  }
48
56
  }
49
57
  }
50
58
  };
51
- traverse(base, [], basicTokens);
52
- traverse(tokens);
53
- traverse(featureHighlight, [], highlightTokens);
54
- const resolveColor = color => {
59
+ _traverse(base, [], basicTokens);
60
+ _traverse(tokens);
61
+ _traverse(featureHighlight, [], highlightTokens);
62
+ var _resolveColor = function resolveColor(color) {
55
63
  if (color.includes('linear-gradient')) {
56
64
  if (color.includes('rgba')) {
57
65
  return replaceColors(color);
58
66
  } else {
59
- return color.replace(/\{[a-z0-9.]+\}/g, resolveColor);
67
+ return color.replace(/\{[a-z0-9.]+\}/g, _resolveColor);
60
68
  }
61
69
  }
62
70
  if (color.startsWith('rgba(') && color.endsWith(')')) {
63
- const lastComa = color.lastIndexOf(',');
64
- const alpha = Number.parseFloat(color.substring(lastComa + 1, color.length - 1));
71
+ var lastComa = color.lastIndexOf(',');
72
+ var alpha = Number.parseFloat(color.substring(lastComa + 1, color.length - 1));
65
73
  if (Number.isNaN(alpha)) {
66
- throw new Error(`Unable to parse rgba of ${color}`);
74
+ throw new Error("Unable to parse rgba of ".concat(color));
67
75
  }
68
- let resolvedColor = color.substring('rgba('.length, lastComa);
69
- if (resolvedColor.startsWith('{')) resolvedColor = resolveColor(resolvedColor);
70
- if (resolvedColor.startsWith('$')) resolvedColor = resolveColor(resolvedColor);
76
+ var resolvedColor = color.substring('rgba('.length, lastComa);
77
+ if (resolvedColor.startsWith('{')) resolvedColor = _resolveColor(resolvedColor);
78
+ if (resolvedColor.startsWith('$')) resolvedColor = _resolveColor(resolvedColor);
71
79
  if (resolvedColor.startsWith('#')) {
72
80
  if (resolvedColor.length === 1 + 3) {
73
- resolvedColor = [resolvedColor[1], resolvedColor[2], resolvedColor[3]].map(hex => Number.parseInt(hex, 16)).join(', ');
81
+ resolvedColor = [resolvedColor[1], resolvedColor[2], resolvedColor[3]].map(function (hex) {
82
+ return Number.parseInt(hex, 16);
83
+ }).join(', ');
74
84
  } else if (resolvedColor.length === 1 + 6) {
75
- resolvedColor = [resolvedColor.substring(1, 3), resolvedColor.substring(3, 5), resolvedColor.substring(5, 7)].map(hex => Number.parseInt(hex, 16)).join(', ');
85
+ resolvedColor = [resolvedColor.substring(1, 3), resolvedColor.substring(3, 5), resolvedColor.substring(5, 7)].map(function (hex) {
86
+ return Number.parseInt(hex, 16);
87
+ }).join(', ');
76
88
  } else {
77
- throw new Error(`Unable to convert hex ${resolveColor} to rgb list of colors (processing ${color})`);
89
+ throw new Error("Unable to convert hex ".concat(_resolveColor, " to rgb list of colors (processing ").concat(color, ")"));
78
90
  }
79
91
  }
80
92
  if (!resolvedColor || resolvedColor.split(',').length !== 3) {
81
- throw new Error(`Unable to produce rgba of ${color} (input format is not supported yet)`);
93
+ throw new Error("Unable to produce rgba of ".concat(color, " (input format is not supported yet)"));
82
94
  }
83
- return `rgba(${resolvedColor}, ${alpha})`;
95
+ return "rgba(".concat(resolvedColor, ", ").concat(alpha, ")");
84
96
  }
85
97
  if (color.split(', ').length === 2) {
86
- const baseColor = resolveColor(color.split(', ')[0]);
87
- const [r, g, b] = (baseColor.length === 4 ? [baseColor[1], baseColor[2], baseColor[3]] : [baseColor.substring(1, 3), baseColor.substring(3, 5), baseColor.substring(5, 7)]).map(chunk => Number.parseInt(chunk, 16));
88
- const a = Number.parseFloat(color.split(', ')[1]);
89
- return `rgba(${r}, ${g}, ${b}, ${a})`;
98
+ var baseColor = _resolveColor(color.split(', ')[0]);
99
+ var _map = (baseColor.length === 4 ? [baseColor[1], baseColor[2], baseColor[3]] : [baseColor.substring(1, 3), baseColor.substring(3, 5), baseColor.substring(5, 7)]).map(function (chunk) {
100
+ return Number.parseInt(chunk, 16);
101
+ }),
102
+ _map2 = (0, _slicedToArray2["default"])(_map, 3),
103
+ r = _map2[0],
104
+ g = _map2[1],
105
+ b = _map2[2];
106
+ var a = Number.parseFloat(color.split(', ')[1]);
107
+ return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(a, ")");
90
108
  }
91
109
  if (color.startsWith('{') && color.split('.').length > 0 && color.endsWith('}')) {
92
- const path = color.substring(1, color.length - 1);
93
- const resolvedColor = getByPath(base, path)?.value ?? values[path.split('.').join('-')];
94
- if (!resolvedColor) {
95
- throw new Error(`Color ${color} was not found in base palette`);
110
+ var _getByPath$value, _getByPath;
111
+ var path = color.substring(1, color.length - 1);
112
+ var _resolvedColor = (_getByPath$value = (_getByPath = getByPath(base, path)) === null || _getByPath === void 0 ? void 0 : _getByPath.value) !== null && _getByPath$value !== void 0 ? _getByPath$value : values[path.split('.').join('-')];
113
+ if (!_resolvedColor) {
114
+ throw new Error("Color ".concat(color, " was not found in base palette"));
96
115
  }
97
- return resolvedColor;
116
+ return _resolvedColor;
98
117
  }
99
118
  if (color.startsWith('$') && color.split('.').length > 0) {
100
- const path = color.substring(1);
101
- const resolvedColor = getByPath(base, path)?.value ?? values[path.split('.').join('-')];
102
- if (!resolvedColor) {
103
- throw new Error(`Color ${color} was not found`);
119
+ var _getByPath$value2, _getByPath2;
120
+ var _path = color.substring(1);
121
+ var _resolvedColor2 = (_getByPath$value2 = (_getByPath2 = getByPath(base, _path)) === null || _getByPath2 === void 0 ? void 0 : _getByPath2.value) !== null && _getByPath$value2 !== void 0 ? _getByPath$value2 : values[_path.split('.').join('-')];
122
+ if (!_resolvedColor2) {
123
+ throw new Error("Color ".concat(color, " was not found"));
104
124
  }
105
- return resolvedColor;
125
+ return _resolvedColor2;
106
126
  }
107
127
  if (color.startsWith('#')) {
108
128
  return color;
109
129
  }
110
- throw new Error(`Unable to process color ${color}`);
130
+ throw new Error("Unable to process color ".concat(color));
111
131
  };
112
- const resolveToken = token => {
132
+ var _resolveToken = function resolveToken(token) {
113
133
  if (token.includes('*')) {
114
- const [value, factor] = token.split('*');
115
- const resolvedValue = resolveToken(value);
134
+ var _token$split = token.split('*'),
135
+ _token$split2 = (0, _slicedToArray2["default"])(_token$split, 2),
136
+ value = _token$split2[0],
137
+ factor = _token$split2[1];
138
+ var resolvedValue = _resolveToken(value);
116
139
  if (!resolvedValue.endsWith('px')) {
117
- throw new Error(`Unsupported expression ${token}`);
140
+ throw new Error("Unsupported expression ".concat(token));
118
141
  }
119
- return `${Number.parseFloat(resolvedValue) * Number.parseFloat(factor)}px`;
142
+ return "".concat(Number.parseFloat(resolvedValue) * Number.parseFloat(factor), "px");
120
143
  } else if (token.includes('{') && token.includes('}')) {
121
- const reference = token.substring(token.indexOf('{') + 1, token.indexOf('}')).replace(/\./g, '-');
122
- const resolvedToken = token.substring(0, token.indexOf('{')) + values[reference] + token.substring(token.indexOf('}') + 1);
144
+ var reference = token.substring(token.indexOf('{') + 1, token.indexOf('}')).replace(/\./g, '-');
145
+ var resolvedToken = token.substring(0, token.indexOf('{')) + values[reference] + token.substring(token.indexOf('}') + 1);
123
146
  if (!resolvedToken || resolvedToken.includes('{')) {
124
- throw new Error(`On moment of resolving ${token}, ${resolvedToken} was not resolved yet`);
147
+ throw new Error("On moment of resolving ".concat(token, ", ").concat(resolvedToken, " was not resolved yet"));
125
148
  }
126
149
  return resolvedToken;
127
150
  } else {
128
151
  return token;
129
152
  }
130
153
  };
131
- const replaceColors = str => {
132
- let result = '';
133
- for (let i = 0; i < str.length; i++) {
154
+ var replaceColors = function replaceColors(str) {
155
+ var result = '';
156
+ for (var i = 0; i < str.length; i++) {
134
157
  if (str.substring(i, i + 'rgba('.length) === 'rgba(') {
135
- const start = i;
158
+ var start = i;
136
159
  while (str[i] !== undefined && str[i] !== ')') i++;
137
- result += resolveColor(str.substring(start, i + 1));
160
+ result += _resolveColor(str.substring(start, i + 1));
138
161
  } else {
139
162
  result += str[i];
140
163
  }
141
164
  }
142
165
  return result;
143
166
  };
144
- const rawValues = {
145
- ...values
146
- };
147
- for (const token in values) {
167
+ var rawValues = (0, _objectSpread2["default"])({}, values);
168
+ for (var token in values) {
169
+ var _modifications$token;
148
170
  if (types[token] === 'color') {
149
- values[token] = resolveColor(values[token]);
171
+ values[token] = _resolveColor(values[token]);
150
172
  } else if (types[token] === 'boxShadow') {
151
- values[token] = resolveToken(values[token].split('; ').map(replaceColors).join(', '));
173
+ values[token] = _resolveToken(values[token].split('; ').map(replaceColors).join(', '));
152
174
  } else if (types[token] === 'sizing' || types[token] === 'spacing' || types[token] === 'borderRadius' || types[token] === 'other') {
153
- values[token] = resolveToken(values[token]);
175
+ values[token] = _resolveToken(values[token]);
154
176
  }
155
- for (const modification of modifications[token] ?? []) {
156
- // refer to https://docs.tokens.studio/tokens/color-modifiers and https://github.com/tokens-studio/figma-plugin/tree/main/src/utils/color if extension is needed
177
+ var _iterator = (0, _createForOfIteratorHelper2["default"])((_modifications$token = modifications[token]) !== null && _modifications$token !== void 0 ? _modifications$token : []),
178
+ _step;
179
+ try {
180
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
181
+ var _values$token$match;
182
+ var modification = _step.value;
183
+ // refer to https://docs.tokens.studio/tokens/color-modifiers and https://github.com/tokens-studio/figma-plugin/tree/main/src/utils/color if extension is needed
157
184
 
158
- rawValues[token] = `${rawValues[token]} / ${modification.type}(${modification.value}) / ${modification.space}`;
185
+ rawValues[token] = "".concat(rawValues[token], " / ").concat(modification.type, "(").concat(modification.value, ") / ").concat(modification.space);
159
186
 
160
- // array + regex to process gradients with several colors
161
- const colorRegex = /(#[0-9a-f]{6}|rgba\([0-9., ]+\))/gi;
162
- const colors = values[token].match(colorRegex) ?? [];
163
- for (const originalColor of colors) {
164
- let color = new Color(originalColor);
165
- if (modification.space === 'hsl') {
166
- if (modification.type === 'lighten') {
167
- const lightness = color.hsl.l;
168
- const difference = 100 - lightness;
169
- color.set('hsl.l', Math.min(100, lightness + difference * modification.value));
170
- } else {
171
- throw new Error(`Unsupported color modification ${modification.type} of token ${token}`);
187
+ // array + regex to process gradients with several colors
188
+ var colorRegex = /(#[0-9a-f]{6}|rgba\([0-9., ]+\))/gi;
189
+ var colors = (_values$token$match = values[token].match(colorRegex)) !== null && _values$token$match !== void 0 ? _values$token$match : [];
190
+ var _iterator2 = (0, _createForOfIteratorHelper2["default"])(colors),
191
+ _step2;
192
+ try {
193
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
194
+ var originalColor = _step2.value;
195
+ var color = new Color(originalColor);
196
+ if (modification.space === 'hsl') {
197
+ if (modification.type === 'lighten') {
198
+ var lightness = color.hsl.l;
199
+ var difference = 100 - lightness;
200
+ color.set('hsl.l', Math.min(100, lightness + difference * modification.value));
201
+ } else {
202
+ throw new Error("Unsupported color modification ".concat(modification.type, " of token ").concat(token));
203
+ }
204
+ } else {
205
+ throw new Error("Unsupported color space ".concat(modification.space, " of token ").concat(token));
206
+ }
207
+ color = color.to('sRGB');
208
+ var modifiedColor = '';
209
+ if (color.alpha !== 1) {
210
+ var r = Math.round(color.r * 255);
211
+ var g = Math.round(color.g * 255);
212
+ var b = Math.round(color.b * 255);
213
+ var a = color.alpha;
214
+ modifiedColor = "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(a, ")");
215
+ } else {
216
+ modifiedColor = color.toString({
217
+ format: 'hex'
218
+ });
219
+ }
220
+ values[token] = values[token].replace(originalColor, modifiedColor);
172
221
  }
173
- } else {
174
- throw new Error(`Unsupported color space ${modification.space} of token ${token}`);
175
- }
176
- color = color.to('sRGB');
177
- let modifiedColor = '';
178
- if (color.alpha !== 1) {
179
- const r = Math.round(color.r * 255);
180
- const g = Math.round(color.g * 255);
181
- const b = Math.round(color.b * 255);
182
- const a = color.alpha;
183
- modifiedColor = `rgba(${r}, ${g}, ${b}, ${a})`;
184
- } else {
185
- modifiedColor = color.toString({
186
- format: 'hex'
187
- });
222
+ } catch (err) {
223
+ _iterator2.e(err);
224
+ } finally {
225
+ _iterator2.f();
188
226
  }
189
- values[token] = values[token].replace(originalColor, modifiedColor);
190
227
  }
228
+ } catch (err) {
229
+ _iterator.e(err);
230
+ } finally {
231
+ _iterator.f();
191
232
  }
192
233
  }
193
- const processedTokens = [];
194
- const highlightsTokens = [];
195
- for (const token in values) {
196
- const isBase = basicTokens.has(token);
197
- (highlightTokens.has(token) ? highlightsTokens : processedTokens).push({
198
- name: isBase ? `--${token}` : `--${prefix}-${token}`,
199
- description: descriptions[token],
200
- value: values[token]
234
+ var processedTokens = [];
235
+ var highlightsTokens = [];
236
+ for (var _token in values) {
237
+ var isBase = basicTokens.has(_token);
238
+ (highlightTokens.has(_token) ? highlightsTokens : processedTokens).push({
239
+ name: isBase ? "--".concat(_token) : "--".concat(prefix, "-").concat(_token),
240
+ description: descriptions[_token],
241
+ value: values[_token]
201
242
  });
202
243
  }
203
244
  return {
204
- processedTokens,
205
- highlightsTokens,
206
- values,
207
- types,
208
- rawValues,
209
- descriptions,
210
- basicTokens
245
+ processedTokens: processedTokens,
246
+ highlightsTokens: highlightsTokens,
247
+ values: values,
248
+ types: types,
249
+ rawValues: rawValues,
250
+ descriptions: descriptions,
251
+ basicTokens: basicTokens
211
252
  };
212
253
  };
213
- exports.processTokens = processTokens;
214
- const tokensToCss = (tokens, selector = ':root') => {
215
- const cssLines = [];
216
- cssLines.push(`${selector} {`);
217
- for (const token of tokens) {
218
- if (token.description) cssLines.push(` /* ${token.description} */`);
219
- cssLines.push(` ${token.name}: ${token.value};`);
254
+ var tokensToCss = exports.tokensToCss = function tokensToCss(tokens) {
255
+ var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ':root';
256
+ var cssLines = [];
257
+ cssLines.push("".concat(selector, " {"));
258
+ var _iterator3 = (0, _createForOfIteratorHelper2["default"])(tokens),
259
+ _step3;
260
+ try {
261
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
262
+ var token = _step3.value;
263
+ if (token.description) cssLines.push(" /* ".concat(token.description, " */"));
264
+ cssLines.push(" ".concat(token.name, ": ").concat(token.value, ";"));
265
+ }
266
+ } catch (err) {
267
+ _iterator3.e(err);
268
+ } finally {
269
+ _iterator3.f();
220
270
  }
221
271
  cssLines.push('}');
222
272
  return cssLines.join('\n');
223
273
  };
224
- exports.tokensToCss = tokensToCss;
225
- const tokensToJson = tokens => {
226
- const themeFile = {};
227
- for (const token of tokens) {
228
- themeFile[token.name] = token.value;
274
+ var tokensToJson = exports.tokensToJson = function tokensToJson(tokens) {
275
+ var themeFile = {};
276
+ var _iterator4 = (0, _createForOfIteratorHelper2["default"])(tokens),
277
+ _step4;
278
+ try {
279
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
280
+ var token = _step4.value;
281
+ themeFile[token.name] = token.value;
282
+ }
283
+ } catch (err) {
284
+ _iterator4.e(err);
285
+ } finally {
286
+ _iterator4.f();
229
287
  }
230
288
  return JSON.stringify(themeFile, null, 2) + '\n';
231
289
  };
232
- exports.tokensToJson = tokensToJson;
233
- const tokensToJs = tokens => {
234
- const jsLines = [];
290
+ var tokensToJs = exports.tokensToJs = function tokensToJs(tokens) {
291
+ var jsLines = [];
235
292
  jsLines.push('export default {');
236
- for (const token of tokens) {
237
- jsLines.push(` '${token.name}': '${token.value}',`);
293
+ var _iterator5 = (0, _createForOfIteratorHelper2["default"])(tokens),
294
+ _step5;
295
+ try {
296
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
297
+ var token = _step5.value;
298
+ jsLines.push(" '".concat(token.name, "': '").concat(token.value, "',"));
299
+ }
300
+ } catch (err) {
301
+ _iterator5.e(err);
302
+ } finally {
303
+ _iterator5.f();
238
304
  }
239
305
  jsLines.push('};\n');
240
306
  return jsLines.join('\n');
241
307
  };
242
- exports.tokensToJs = tokensToJs;
243
- const getByPath = (obj, path) => {
244
- const parts = path.split('.');
245
- let result = obj;
246
- for (const part of parts) {
247
- result = result?.[part];
308
+ var getByPath = function getByPath(obj, path) {
309
+ var parts = path.split('.');
310
+ var result = obj;
311
+ var _iterator6 = (0, _createForOfIteratorHelper2["default"])(parts),
312
+ _step6;
313
+ try {
314
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
315
+ var _result;
316
+ var part = _step6.value;
317
+ result = (_result = result) === null || _result === void 0 ? void 0 : _result[part];
318
+ }
319
+ } catch (err) {
320
+ _iterator6.e(err);
321
+ } finally {
322
+ _iterator6.f();
248
323
  }
249
324
  return result;
250
325
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_colorjs","_interopRequireDefault","require","Color","ColorJS","processTokens","base","tokens","featureHighlight","prefix","values","basicTokens","Set","highlightTokens","modifications","types","descriptions","mixins","traverse","node","pathParts","setToAdd","key","type","path","join","value","push","Error","add","description","$extensions","extension","modify","resolveColor","color","includes","replaceColors","replace","startsWith","endsWith","lastComa","lastIndexOf","alpha","Number","parseFloat","substring","length","isNaN","resolvedColor","map","hex","parseInt","split","baseColor","r","g","b","chunk","a","getByPath","resolveToken","token","factor","resolvedValue","reference","indexOf","resolvedToken","str","result","i","start","undefined","rawValues","modification","space","colorRegex","colors","match","originalColor","lightness","hsl","l","difference","set","Math","min","to","modifiedColor","round","toString","format","processedTokens","highlightsTokens","isBase","has","name","exports","tokensToCss","selector","cssLines","tokensToJson","themeFile","JSON","stringify","tokensToJs","jsLines","obj","parts","part"],"sources":["../../src/theme/utils.ts"],"sourcesContent":["import ColorJS from 'colorjs.io';\nconst Color = ColorJS as any;\n\ntype ExtensionsInput = {\n 'studio.tokens': {\n modify: {\n type: string;\n value: number;\n space: string;\n };\n };\n};\n\ntype TokensInput = {\n [nestedKey: string]:\n | TokensInput\n | {\n value: string;\n type: string;\n description: string;\n $extensions?: ExtensionsInput;\n };\n};\n\nexport const processTokens = (base: TokensInput, tokens: TokensInput, featureHighlight: TokensInput, prefix: string) => {\n const values: { [tokenName: string]: string } = {};\n const basicTokens = new Set<string>();\n const highlightTokens = new Set<string>();\n const modifications: {\n [tokenName: string]: {\n type: 'lighten' | 'darken' | 'alpha';\n value: number;\n space: 'lch' | 'srgb' | 'p3' | 'hsl';\n }[];\n } = {};\n const types: { [tokenName: string]: string } = {};\n const descriptions: { [tokenName: string]: string } = {};\n const mixins: string[] = [];\n type ColorPattern =\n | `{${string}.${string}}`\n | `{${string}.${string}}, ${number}`\n | `#${string}`\n | `{${string}.${string}}, ${number}`;\n type DesignTokenNode =\n | {\n type: string;\n value:\n | string\n | { [subTokens: string]: `{${string}}` }\n | ColorPattern\n | `{${string}}`\n | `{${string}*${number}}`\n | `${ColorPattern}; ${ColorPattern}`;\n\n description?: string;\n $extensions?: ExtensionsInput;\n }\n | DesignTokenTree;\n type DesignTokenTree = { [childrenNodeName: string]: DesignTokenNode };\n const traverse = (node: DesignTokenNode, pathParts: string[] = [], setToAdd?: Set<string>) => {\n for (const key in node) {\n if (key === 'type') continue;\n if (key === 'value') continue;\n if (key === 'description') continue;\n if (key === '$extensions') continue;\n traverse((node as any)[key], [...pathParts, key], setToAdd);\n }\n if ('type' in node && typeof node.type === 'string') {\n const path = pathParts.join('-');\n types[path] = node.type;\n if (typeof node.value === 'object') {\n mixins.push(path);\n return;\n }\n if (values[path]) {\n throw new Error(`Duplicated design token \"${path}\"`);\n }\n values[path] = node.value;\n setToAdd?.add(path);\n\n if (typeof node.description === 'string') descriptions[path] = node.description;\n if (node.$extensions) {\n for (const extension in node.$extensions) {\n if (extension === 'studio.tokens') {\n modifications[path] ??= [];\n modifications[path].push((node.$extensions as any)['studio.tokens'].modify);\n } else {\n throw new Error(`Unsupported extension \"${extension}\" for design token \"${path}\"`);\n }\n }\n }\n }\n };\n\n traverse(base, [], basicTokens);\n traverse(tokens);\n traverse(featureHighlight, [], highlightTokens);\n\n const resolveColor = (color: string): string => {\n if (color.includes('linear-gradient')) {\n if (color.includes('rgba')) {\n return replaceColors(color);\n } else {\n return color.replace(/\\{[a-z0-9.]+\\}/g, resolveColor);\n }\n }\n if (color.startsWith('rgba(') && color.endsWith(')')) {\n const lastComa = color.lastIndexOf(',');\n const alpha = Number.parseFloat(color.substring(lastComa + 1, color.length - 1));\n if (Number.isNaN(alpha)) {\n throw new Error(`Unable to parse rgba of ${color}`);\n }\n let resolvedColor = color.substring('rgba('.length, lastComa);\n if (resolvedColor.startsWith('{')) resolvedColor = resolveColor(resolvedColor);\n if (resolvedColor.startsWith('$')) resolvedColor = resolveColor(resolvedColor);\n if (resolvedColor.startsWith('#')) {\n if (resolvedColor.length === 1 + 3) {\n resolvedColor = [resolvedColor[1], resolvedColor[2], resolvedColor[3]]\n .map((hex) => Number.parseInt(hex, 16))\n .join(', ');\n } else if (resolvedColor.length === 1 + 6) {\n resolvedColor = [\n resolvedColor.substring(1, 3),\n resolvedColor.substring(3, 5),\n resolvedColor.substring(5, 7),\n ]\n .map((hex) => Number.parseInt(hex, 16))\n .join(', ');\n } else {\n throw new Error(\n `Unable to convert hex ${resolveColor} to rgb list of colors (processing ${color})`,\n );\n }\n }\n\n if (!resolvedColor || resolvedColor.split(',').length !== 3) {\n throw new Error(`Unable to produce rgba of ${color} (input format is not supported yet)`);\n }\n\n return `rgba(${resolvedColor}, ${alpha})`;\n }\n if (color.split(', ').length === 2) {\n const baseColor = resolveColor(color.split(', ')[0]);\n const [r, g, b] = (\n baseColor.length === 4\n ? [baseColor[1], baseColor[2], baseColor[3]]\n : [baseColor.substring(1, 3), baseColor.substring(3, 5), baseColor.substring(5, 7)]\n ).map((chunk) => Number.parseInt(chunk, 16));\n const a = Number.parseFloat(color.split(', ')[1]);\n\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n if (color.startsWith('{') && color.split('.').length > 0 && color.endsWith('}')) {\n const path = color.substring(1, color.length - 1);\n const resolvedColor =\n getByPath(base as any, path)?.value ?? values[path.split('.').join('-')];\n if (!resolvedColor) {\n throw new Error(`Color ${color} was not found in base palette`);\n }\n return resolvedColor;\n }\n if (color.startsWith('$') && color.split('.').length > 0) {\n const path = color.substring(1);\n const resolvedColor =\n getByPath(base as any, path)?.value ?? values[path.split('.').join('-')];\n if (!resolvedColor) {\n throw new Error(`Color ${color} was not found`);\n }\n return resolvedColor;\n }\n if (color.startsWith('#')) {\n return color;\n }\n throw new Error(`Unable to process color ${color}`);\n };\n const resolveToken = (token: string): string => {\n if (token.includes('*')) {\n const [value, factor] = token.split('*');\n const resolvedValue = resolveToken(value);\n if (!resolvedValue.endsWith('px')) {\n throw new Error(`Unsupported expression ${token}`);\n }\n return `${Number.parseFloat(resolvedValue) * Number.parseFloat(factor)}px`;\n } else if (token.includes('{') && token.includes('}')) {\n const reference = token\n .substring(token.indexOf('{') + 1, token.indexOf('}'))\n .replace(/\\./g, '-');\n const resolvedToken =\n token.substring(0, token.indexOf('{')) +\n values[reference] +\n token.substring(token.indexOf('}') + 1);\n if (!resolvedToken || resolvedToken.includes('{')) {\n throw new Error(`On moment of resolving ${token}, ${resolvedToken} was not resolved yet`);\n }\n return resolvedToken;\n } else {\n return token;\n }\n };\n const replaceColors = (str: string) => {\n let result = '';\n for (let i = 0; i < str.length; i++) {\n if (str.substring(i, i + 'rgba('.length) === 'rgba(') {\n const start = i;\n while (str[i] !== undefined && str[i] !== ')') i++;\n result += resolveColor(str.substring(start, i + 1));\n } else {\n result += str[i];\n }\n }\n\n return result;\n };\n\n const rawValues = { ...values };\n\n for (const token in values) {\n if (types[token] === 'color') {\n values[token] = resolveColor(values[token]);\n } else if (types[token] === 'boxShadow') {\n values[token] = resolveToken(values[token].split('; ').map(replaceColors).join(', '));\n } else if (\n types[token] === 'sizing' ||\n types[token] === 'spacing' ||\n types[token] === 'borderRadius' ||\n types[token] === 'other'\n ) {\n values[token] = resolveToken(values[token]);\n }\n for (const modification of modifications[token] ?? []) {\n // refer to https://docs.tokens.studio/tokens/color-modifiers and https://github.com/tokens-studio/figma-plugin/tree/main/src/utils/color if extension is needed\n\n rawValues[token] = `${rawValues[token]} / ${modification.type}(${modification.value}) / ${modification.space}`;\n\n // array + regex to process gradients with several colors\n const colorRegex = /(#[0-9a-f]{6}|rgba\\([0-9., ]+\\))/gi;\n const colors = values[token].match(colorRegex) ?? [];\n\n for (const originalColor of colors) {\n let color = new Color(originalColor);\n\n if (modification.space === 'hsl') {\n if (modification.type === 'lighten') {\n const lightness = color.hsl.l;\n const difference = 100 - lightness;\n color.set('hsl.l', Math.min(100, lightness + difference * modification.value));\n } else {\n throw new Error(`Unsupported color modification ${modification.type} of token ${token}`);\n }\n } else {\n throw new Error(`Unsupported color space ${modification.space} of token ${token}`);\n }\n\n color = color.to('sRGB');\n let modifiedColor = '';\n\n if (color.alpha !== 1) {\n const r = Math.round(color.r * 255);\n const g = Math.round(color.g * 255);\n const b = Math.round(color.b * 255);\n const a = color.alpha;\n modifiedColor = `rgba(${r}, ${g}, ${b}, ${a})`;\n } else {\n modifiedColor = color.toString({ format: 'hex' });\n }\n\n values[token] = values[token].replace(originalColor, modifiedColor);\n }\n }\n }\n\n const processedTokens: { name: string; value: string; description: string }[] = [];\n const highlightsTokens: { name: string; value: string; description: string }[] = [];\n\n for (const token in values) {\n const isBase = basicTokens.has(token);\n (highlightTokens.has(token) ? highlightsTokens : processedTokens).push({\n name: isBase ? `--${token}` : `--${prefix}-${token}`,\n description: descriptions[token],\n value: values[token],\n });\n }\n\n return { processedTokens, highlightsTokens, values, types, rawValues, descriptions, basicTokens };\n};\n\nexport const tokensToCss = (\n tokens: { name: string; value: string; description: string }[],\n selector = ':root',\n) => {\n const cssLines: string[] = [];\n cssLines.push(`${selector} {`);\n for (const token of tokens) {\n if (token.description) cssLines.push(` /* ${token.description} */`);\n cssLines.push(` ${token.name}: ${token.value};`);\n }\n cssLines.push('}');\n return cssLines.join('\\n');\n};\nexport const tokensToJson = (tokens: { name: string; value: string; description: string }[]) => {\n const themeFile: Record<string, string> = {};\n for (const token of tokens) {\n themeFile[token.name] = token.value;\n }\n return JSON.stringify(themeFile, null, 2) + '\\n';\n};\nexport const tokensToJs = (tokens: { name: string; value: string; description: string }[]) => {\n const jsLines: string[] = [];\n jsLines.push('export default {');\n for (const token of tokens) {\n jsLines.push(` '${token.name}': '${token.value}',`);\n }\n jsLines.push('};\\n');\n return jsLines.join('\\n');\n};\n\nconst getByPath = (obj: any, path: string) => {\n const parts = path.split('.');\n let result = obj;\n for (const part of parts) {\n result = result?.[part];\n }\n return result;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["_colorjs","_interopRequireDefault","require","Color","ColorJS","processTokens","exports","base","tokens","featureHighlight","prefix","values","basicTokens","Set","highlightTokens","modifications","types","descriptions","mixins","traverse","node","pathParts","arguments","length","undefined","setToAdd","key","concat","_toConsumableArray2","type","path","join","_typeof2","value","push","Error","add","description","$extensions","extension","_modifications$path","modify","resolveColor","color","includes","replaceColors","replace","startsWith","endsWith","lastComa","lastIndexOf","alpha","Number","parseFloat","substring","isNaN","resolvedColor","map","hex","parseInt","split","baseColor","_map","chunk","_map2","_slicedToArray2","r","g","b","a","_getByPath$value","_getByPath","getByPath","_getByPath$value2","_getByPath2","resolveToken","token","_token$split","_token$split2","factor","resolvedValue","reference","indexOf","resolvedToken","str","result","i","start","rawValues","_objectSpread2","_modifications$token","_iterator","_createForOfIteratorHelper2","_step","s","n","done","_values$token$match","modification","space","colorRegex","colors","match","_iterator2","_step2","originalColor","lightness","hsl","l","difference","set","Math","min","to","modifiedColor","round","toString","format","err","e","f","processedTokens","highlightsTokens","isBase","has","name","tokensToCss","selector","cssLines","_iterator3","_step3","tokensToJson","themeFile","_iterator4","_step4","JSON","stringify","tokensToJs","jsLines","_iterator5","_step5","obj","parts","_iterator6","_step6","_result","part"],"sources":["../../src/theme/utils.ts"],"sourcesContent":["import ColorJS from 'colorjs.io';\nconst Color = ColorJS as any;\n\ntype ExtensionsInput = {\n 'studio.tokens': {\n modify: {\n type: string;\n value: number;\n space: string;\n };\n };\n};\n\ntype TokensInput = {\n [nestedKey: string]:\n | TokensInput\n | {\n value: string;\n type: string;\n description: string;\n $extensions?: ExtensionsInput;\n };\n};\n\nexport const processTokens = (base: TokensInput, tokens: TokensInput, featureHighlight: TokensInput, prefix: string) => {\n const values: { [tokenName: string]: string } = {};\n const basicTokens = new Set<string>();\n const highlightTokens = new Set<string>();\n const modifications: {\n [tokenName: string]: {\n type: 'lighten' | 'darken' | 'alpha';\n value: number;\n space: 'lch' | 'srgb' | 'p3' | 'hsl';\n }[];\n } = {};\n const types: { [tokenName: string]: string } = {};\n const descriptions: { [tokenName: string]: string } = {};\n const mixins: string[] = [];\n type ColorPattern =\n | `{${string}.${string}}`\n | `{${string}.${string}}, ${number}`\n | `#${string}`\n | `{${string}.${string}}, ${number}`;\n type DesignTokenNode =\n | {\n type: string;\n value:\n | string\n | { [subTokens: string]: `{${string}}` }\n | ColorPattern\n | `{${string}}`\n | `{${string}*${number}}`\n | `${ColorPattern}; ${ColorPattern}`;\n\n description?: string;\n $extensions?: ExtensionsInput;\n }\n | DesignTokenTree;\n type DesignTokenTree = { [childrenNodeName: string]: DesignTokenNode };\n const traverse = (node: DesignTokenNode, pathParts: string[] = [], setToAdd?: Set<string>) => {\n for (const key in node) {\n if (key === 'type') continue;\n if (key === 'value') continue;\n if (key === 'description') continue;\n if (key === '$extensions') continue;\n traverse((node as any)[key], [...pathParts, key], setToAdd);\n }\n if ('type' in node && typeof node.type === 'string') {\n const path = pathParts.join('-');\n types[path] = node.type;\n if (typeof node.value === 'object') {\n mixins.push(path);\n return;\n }\n if (values[path]) {\n throw new Error(`Duplicated design token \"${path}\"`);\n }\n values[path] = node.value;\n setToAdd?.add(path);\n\n if (typeof node.description === 'string') descriptions[path] = node.description;\n if (node.$extensions) {\n for (const extension in node.$extensions) {\n if (extension === 'studio.tokens') {\n modifications[path] ??= [];\n modifications[path].push((node.$extensions as any)['studio.tokens'].modify);\n } else {\n throw new Error(`Unsupported extension \"${extension}\" for design token \"${path}\"`);\n }\n }\n }\n }\n };\n\n traverse(base, [], basicTokens);\n traverse(tokens);\n traverse(featureHighlight, [], highlightTokens);\n\n const resolveColor = (color: string): string => {\n if (color.includes('linear-gradient')) {\n if (color.includes('rgba')) {\n return replaceColors(color);\n } else {\n return color.replace(/\\{[a-z0-9.]+\\}/g, resolveColor);\n }\n }\n if (color.startsWith('rgba(') && color.endsWith(')')) {\n const lastComa = color.lastIndexOf(',');\n const alpha = Number.parseFloat(color.substring(lastComa + 1, color.length - 1));\n if (Number.isNaN(alpha)) {\n throw new Error(`Unable to parse rgba of ${color}`);\n }\n let resolvedColor = color.substring('rgba('.length, lastComa);\n if (resolvedColor.startsWith('{')) resolvedColor = resolveColor(resolvedColor);\n if (resolvedColor.startsWith('$')) resolvedColor = resolveColor(resolvedColor);\n if (resolvedColor.startsWith('#')) {\n if (resolvedColor.length === 1 + 3) {\n resolvedColor = [resolvedColor[1], resolvedColor[2], resolvedColor[3]]\n .map((hex) => Number.parseInt(hex, 16))\n .join(', ');\n } else if (resolvedColor.length === 1 + 6) {\n resolvedColor = [\n resolvedColor.substring(1, 3),\n resolvedColor.substring(3, 5),\n resolvedColor.substring(5, 7),\n ]\n .map((hex) => Number.parseInt(hex, 16))\n .join(', ');\n } else {\n throw new Error(\n `Unable to convert hex ${resolveColor} to rgb list of colors (processing ${color})`,\n );\n }\n }\n\n if (!resolvedColor || resolvedColor.split(',').length !== 3) {\n throw new Error(`Unable to produce rgba of ${color} (input format is not supported yet)`);\n }\n\n return `rgba(${resolvedColor}, ${alpha})`;\n }\n if (color.split(', ').length === 2) {\n const baseColor = resolveColor(color.split(', ')[0]);\n const [r, g, b] = (\n baseColor.length === 4\n ? [baseColor[1], baseColor[2], baseColor[3]]\n : [baseColor.substring(1, 3), baseColor.substring(3, 5), baseColor.substring(5, 7)]\n ).map((chunk) => Number.parseInt(chunk, 16));\n const a = Number.parseFloat(color.split(', ')[1]);\n\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n if (color.startsWith('{') && color.split('.').length > 0 && color.endsWith('}')) {\n const path = color.substring(1, color.length - 1);\n const resolvedColor =\n getByPath(base as any, path)?.value ?? values[path.split('.').join('-')];\n if (!resolvedColor) {\n throw new Error(`Color ${color} was not found in base palette`);\n }\n return resolvedColor;\n }\n if (color.startsWith('$') && color.split('.').length > 0) {\n const path = color.substring(1);\n const resolvedColor =\n getByPath(base as any, path)?.value ?? values[path.split('.').join('-')];\n if (!resolvedColor) {\n throw new Error(`Color ${color} was not found`);\n }\n return resolvedColor;\n }\n if (color.startsWith('#')) {\n return color;\n }\n throw new Error(`Unable to process color ${color}`);\n };\n const resolveToken = (token: string): string => {\n if (token.includes('*')) {\n const [value, factor] = token.split('*');\n const resolvedValue = resolveToken(value);\n if (!resolvedValue.endsWith('px')) {\n throw new Error(`Unsupported expression ${token}`);\n }\n return `${Number.parseFloat(resolvedValue) * Number.parseFloat(factor)}px`;\n } else if (token.includes('{') && token.includes('}')) {\n const reference = token\n .substring(token.indexOf('{') + 1, token.indexOf('}'))\n .replace(/\\./g, '-');\n const resolvedToken =\n token.substring(0, token.indexOf('{')) +\n values[reference] +\n token.substring(token.indexOf('}') + 1);\n if (!resolvedToken || resolvedToken.includes('{')) {\n throw new Error(`On moment of resolving ${token}, ${resolvedToken} was not resolved yet`);\n }\n return resolvedToken;\n } else {\n return token;\n }\n };\n const replaceColors = (str: string) => {\n let result = '';\n for (let i = 0; i < str.length; i++) {\n if (str.substring(i, i + 'rgba('.length) === 'rgba(') {\n const start = i;\n while (str[i] !== undefined && str[i] !== ')') i++;\n result += resolveColor(str.substring(start, i + 1));\n } else {\n result += str[i];\n }\n }\n\n return result;\n };\n\n const rawValues = { ...values };\n\n for (const token in values) {\n if (types[token] === 'color') {\n values[token] = resolveColor(values[token]);\n } else if (types[token] === 'boxShadow') {\n values[token] = resolveToken(values[token].split('; ').map(replaceColors).join(', '));\n } else if (\n types[token] === 'sizing' ||\n types[token] === 'spacing' ||\n types[token] === 'borderRadius' ||\n types[token] === 'other'\n ) {\n values[token] = resolveToken(values[token]);\n }\n for (const modification of modifications[token] ?? []) {\n // refer to https://docs.tokens.studio/tokens/color-modifiers and https://github.com/tokens-studio/figma-plugin/tree/main/src/utils/color if extension is needed\n\n rawValues[token] = `${rawValues[token]} / ${modification.type}(${modification.value}) / ${modification.space}`;\n\n // array + regex to process gradients with several colors\n const colorRegex = /(#[0-9a-f]{6}|rgba\\([0-9., ]+\\))/gi;\n const colors = values[token].match(colorRegex) ?? [];\n\n for (const originalColor of colors) {\n let color = new Color(originalColor);\n\n if (modification.space === 'hsl') {\n if (modification.type === 'lighten') {\n const lightness = color.hsl.l;\n const difference = 100 - lightness;\n color.set('hsl.l', Math.min(100, lightness + difference * modification.value));\n } else {\n throw new Error(`Unsupported color modification ${modification.type} of token ${token}`);\n }\n } else {\n throw new Error(`Unsupported color space ${modification.space} of token ${token}`);\n }\n\n color = color.to('sRGB');\n let modifiedColor = '';\n\n if (color.alpha !== 1) {\n const r = Math.round(color.r * 255);\n const g = Math.round(color.g * 255);\n const b = Math.round(color.b * 255);\n const a = color.alpha;\n modifiedColor = `rgba(${r}, ${g}, ${b}, ${a})`;\n } else {\n modifiedColor = color.toString({ format: 'hex' });\n }\n\n values[token] = values[token].replace(originalColor, modifiedColor);\n }\n }\n }\n\n const processedTokens: { name: string; value: string; description: string }[] = [];\n const highlightsTokens: { name: string; value: string; description: string }[] = [];\n\n for (const token in values) {\n const isBase = basicTokens.has(token);\n (highlightTokens.has(token) ? highlightsTokens : processedTokens).push({\n name: isBase ? `--${token}` : `--${prefix}-${token}`,\n description: descriptions[token],\n value: values[token],\n });\n }\n\n return { processedTokens, highlightsTokens, values, types, rawValues, descriptions, basicTokens };\n};\n\nexport const tokensToCss = (\n tokens: { name: string; value: string; description: string }[],\n selector = ':root',\n) => {\n const cssLines: string[] = [];\n cssLines.push(`${selector} {`);\n for (const token of tokens) {\n if (token.description) cssLines.push(` /* ${token.description} */`);\n cssLines.push(` ${token.name}: ${token.value};`);\n }\n cssLines.push('}');\n return cssLines.join('\\n');\n};\nexport const tokensToJson = (tokens: { name: string; value: string; description: string }[]) => {\n const themeFile: Record<string, string> = {};\n for (const token of tokens) {\n themeFile[token.name] = token.value;\n }\n return JSON.stringify(themeFile, null, 2) + '\\n';\n};\nexport const tokensToJs = (tokens: { name: string; value: string; description: string }[]) => {\n const jsLines: string[] = [];\n jsLines.push('export default {');\n for (const token of tokens) {\n jsLines.push(` '${token.name}': '${token.value}',`);\n }\n jsLines.push('};\\n');\n return jsLines.join('\\n');\n};\n\nconst getByPath = (obj: any, path: string) => {\n const parts = path.split('.');\n let result = obj;\n for (const part of parts) {\n result = result?.[part];\n }\n return result;\n};\n"],"mappings":"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","ignoreList":[]}