@bioturing/components 0.15.0 → 0.15.2

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 (356) hide show
  1. package/dist/components/Badge/component.js +21 -0
  2. package/dist/components/Badge/component.js.map +1 -0
  3. package/dist/components/Badge/style.css +1 -0
  4. package/dist/components/Breadcrumb/component.js +46 -0
  5. package/dist/components/Breadcrumb/component.js.map +1 -0
  6. package/dist/components/Breadcrumb/style.css +1 -0
  7. package/dist/components/Breadcrumb/useItemRender.js +27 -0
  8. package/dist/components/Breadcrumb/useItemRender.js.map +1 -0
  9. package/dist/components/Button/component.js +9 -0
  10. package/dist/components/Button/component.js.map +1 -0
  11. package/dist/components/Button/style.css +1 -0
  12. package/dist/components/Checkbox/component.js +11 -0
  13. package/dist/components/Checkbox/component.js.map +1 -0
  14. package/dist/components/Checkbox/style.css +1 -0
  15. package/dist/components/CodeBlock/component.js +127 -0
  16. package/dist/components/CodeBlock/component.js.map +1 -0
  17. package/dist/components/CodeBlock/style.css +1 -0
  18. package/dist/components/DSRoot/component.js +21 -0
  19. package/dist/components/DSRoot/component.js.map +1 -0
  20. package/dist/components/DSRoot/context.js +9 -0
  21. package/dist/components/DSRoot/context.js.map +1 -0
  22. package/dist/components/DSRoot/style.css +1 -0
  23. package/dist/components/DropdownMenu/component.js +103 -0
  24. package/dist/components/DropdownMenu/component.js.map +1 -0
  25. package/dist/components/DropdownMenu/style.css +1 -0
  26. package/dist/components/Empty/component.js +48 -0
  27. package/dist/components/Empty/component.js.map +1 -0
  28. package/dist/components/Empty/style.css +1 -0
  29. package/dist/components/Field/component.js +30 -0
  30. package/dist/components/Field/component.js.map +1 -0
  31. package/dist/components/Field/style.css +1 -0
  32. package/dist/components/Form/component.js +23 -0
  33. package/dist/components/Form/component.js.map +1 -0
  34. package/dist/components/Form/item.js +30 -0
  35. package/dist/components/Form/item.js.map +1 -0
  36. package/dist/components/Form/style.css +1 -0
  37. package/dist/components/IconButton/component.js +49 -0
  38. package/dist/components/IconButton/component.js.map +1 -0
  39. package/dist/components/IconButton/style.css +1 -0
  40. package/dist/components/Input/component.js +25 -0
  41. package/dist/components/Input/component.js.map +1 -0
  42. package/dist/components/Modal/Modal.js +161 -0
  43. package/dist/components/Modal/Modal.js.map +1 -0
  44. package/dist/components/Modal/ModalProvider.js +70 -0
  45. package/dist/components/Modal/ModalProvider.js.map +1 -0
  46. package/dist/components/Modal/ModalService.js +25 -0
  47. package/dist/components/Modal/ModalService.js.map +1 -0
  48. package/dist/components/Modal/constants.js +5 -0
  49. package/dist/components/Modal/constants.js.map +1 -0
  50. package/dist/components/Modal/functions.js +27 -0
  51. package/dist/components/Modal/functions.js.map +1 -0
  52. package/dist/components/Modal/index.js +20 -0
  53. package/dist/components/Modal/index.js.map +1 -0
  54. package/dist/components/Modal/style.css +1 -0
  55. package/dist/components/Popover/component.js +12 -0
  56. package/dist/components/Popover/component.js.map +1 -0
  57. package/dist/components/PopupPanel/component.js +190 -0
  58. package/dist/components/PopupPanel/component.js.map +1 -0
  59. package/dist/components/PopupPanel/constants.js +5 -0
  60. package/dist/components/PopupPanel/constants.js.map +1 -0
  61. package/dist/components/PopupPanel/style.css +1 -0
  62. package/dist/components/Radio/component.js +22 -0
  63. package/dist/components/Radio/component.js.map +1 -0
  64. package/dist/components/Radio/style.css +1 -0
  65. package/dist/components/ScrollArea/component.js +40 -0
  66. package/dist/components/ScrollArea/component.js.map +1 -0
  67. package/dist/components/ScrollArea/style.css +1 -0
  68. package/dist/components/Segmented/component.js +9 -0
  69. package/dist/components/Segmented/component.js.map +1 -0
  70. package/dist/components/Segmented/style.css +1 -0
  71. package/dist/components/Select/component.js +135 -0
  72. package/dist/components/Select/component.js.map +1 -0
  73. package/dist/components/Select/style.css +1 -0
  74. package/dist/components/Slider/component.js +23 -0
  75. package/dist/components/Slider/component.js.map +1 -0
  76. package/dist/components/Spin/component.js +12 -0
  77. package/dist/components/Spin/component.js.map +1 -0
  78. package/dist/components/Spin/style.css +1 -0
  79. package/dist/components/Splitter/component.js +40 -0
  80. package/dist/components/Splitter/component.js.map +1 -0
  81. package/dist/components/Splitter/style.css +1 -0
  82. package/dist/components/Stack/Stack.js +37 -0
  83. package/dist/components/Stack/Stack.js.map +1 -0
  84. package/dist/components/Stack/StackChild.js +57 -0
  85. package/dist/components/Stack/StackChild.js.map +1 -0
  86. package/dist/components/Stack/index.js +9 -0
  87. package/dist/components/Stack/index.js.map +1 -0
  88. package/dist/components/Stack/style.css +1 -0
  89. package/dist/components/Switch/component.js +9 -0
  90. package/dist/components/Switch/component.js.map +1 -0
  91. package/dist/components/Switch/style.css +1 -0
  92. package/dist/components/Table/component.js +68 -0
  93. package/dist/components/Table/component.js.map +1 -0
  94. package/dist/components/Table/style.css +1 -0
  95. package/dist/components/Tag/component.js +30 -0
  96. package/dist/components/Tag/component.js.map +1 -0
  97. package/dist/components/Tag/style.css +1 -0
  98. package/dist/components/ThemeProvider/component.js +41 -0
  99. package/dist/components/ThemeProvider/component.js.map +1 -0
  100. package/dist/components/ThemeProvider/style.css +1 -0
  101. package/dist/components/Toast/component.js +101 -0
  102. package/dist/components/Toast/component.js.map +1 -0
  103. package/dist/components/Toast/function.js +25 -0
  104. package/dist/components/Toast/function.js.map +1 -0
  105. package/dist/components/Toast/style.css +1 -0
  106. package/dist/components/Tooltip/component.js +26 -0
  107. package/dist/components/Tooltip/component.js.map +1 -0
  108. package/dist/components/Tooltip/style.css +1 -0
  109. package/dist/components/Tour/component.js +35 -0
  110. package/dist/components/Tour/component.js.map +1 -0
  111. package/dist/components/Tour/style.css +1 -0
  112. package/dist/components/Transition/component.js +44 -0
  113. package/dist/components/Transition/component.js.map +1 -0
  114. package/dist/components/Tree/components.js +68 -0
  115. package/dist/components/Tree/components.js.map +1 -0
  116. package/dist/components/Tree/helpers.js +53 -0
  117. package/dist/components/Tree/helpers.js.map +1 -0
  118. package/dist/components/Tree/style.css +1 -0
  119. package/dist/components/Tree/useTreeCommon.js +86 -0
  120. package/dist/components/Tree/useTreeCommon.js.map +1 -0
  121. package/dist/components/Tree/useUniqueKeysTree.js +142 -0
  122. package/dist/components/Tree/useUniqueKeysTree.js.map +1 -0
  123. package/dist/components/Truncate/component.js +93 -0
  124. package/dist/components/Truncate/component.js.map +1 -0
  125. package/dist/components/Truncate/helpers.js +36 -0
  126. package/dist/components/Truncate/helpers.js.map +1 -0
  127. package/dist/components/Truncate/style.css +1 -0
  128. package/dist/components/Upload/component.js +39 -0
  129. package/dist/components/Upload/component.js.map +1 -0
  130. package/dist/components/Upload/dragger.js +23 -0
  131. package/dist/components/Upload/dragger.js.map +1 -0
  132. package/dist/components/Upload/hooks.js +18 -0
  133. package/dist/components/Upload/hooks.js.map +1 -0
  134. package/dist/components/Upload/item.js +84 -0
  135. package/dist/components/Upload/item.js.map +1 -0
  136. package/dist/components/Upload/utils.js +7 -0
  137. package/dist/components/Upload/utils.js.map +1 -0
  138. package/dist/components/VerticalCollapsiblePanel/component.js +125 -0
  139. package/dist/components/VerticalCollapsiblePanel/component.js.map +1 -0
  140. package/dist/components/VerticalCollapsiblePanel/style.css +1 -0
  141. package/dist/components/hooks/antd.js +22 -0
  142. package/dist/components/hooks/antd.js.map +1 -0
  143. package/dist/components/hooks/base-ui.js +47 -0
  144. package/dist/components/hooks/base-ui.js.map +1 -0
  145. package/dist/components/hooks/useCharts.js +28 -0
  146. package/dist/components/hooks/useCharts.js.map +1 -0
  147. package/dist/components/hooks/useControlledState.js +15 -0
  148. package/dist/components/hooks/useControlledState.js.map +1 -0
  149. package/dist/components/utils/WithAntdTokens.js +24 -0
  150. package/dist/components/utils/WithAntdTokens.js.map +1 -0
  151. package/dist/components/utils/antdUtils.js +58 -0
  152. package/dist/components/utils/antdUtils.js.map +1 -0
  153. package/dist/components/utils/cn.js +27 -0
  154. package/dist/components/utils/cn.js.map +1 -0
  155. package/dist/components/utils/isTracebackError.js +10 -0
  156. package/dist/components/utils/isTracebackError.js.map +1 -0
  157. package/dist/components/utils/reactToString.js +23 -0
  158. package/dist/components/utils/reactToString.js.map +1 -0
  159. package/dist/index.d.ts +2497 -3
  160. package/dist/index.js +188 -4004
  161. package/dist/index.js.map +1 -0
  162. package/dist/metadata.js +513 -0
  163. package/dist/metadata.js.map +1 -0
  164. package/dist/tailwind.css +1 -121
  165. package/dist/tailwind.d.ts +1 -0
  166. package/dist/tokens/and-theme/tokens.js +351 -0
  167. package/dist/tokens/and-theme/tokens.js.map +1 -0
  168. package/dist/tokens/charts/index.js +18 -0
  169. package/dist/tokens/charts/index.js.map +1 -0
  170. package/dist/tokens/charts/tokens.js +208 -0
  171. package/dist/tokens/charts/tokens.js.map +1 -0
  172. package/dist/tokens/utils.js +37 -0
  173. package/dist/tokens/utils.js.map +1 -0
  174. package/package.json +10 -108
  175. package/dist/Badge.css +0 -6
  176. package/dist/Badge.js +0 -41
  177. package/dist/Breadcrumb.css +0 -83
  178. package/dist/Breadcrumb.js +0 -92
  179. package/dist/Checkbox.css +0 -13
  180. package/dist/Checkbox.js +0 -12
  181. package/dist/CodeBlock.css +0 -213
  182. package/dist/CodeBlock.js +0 -644
  183. package/dist/Collapse.css +0 -21
  184. package/dist/Collapse.js +0 -49
  185. package/dist/DSRoot.css +0 -667
  186. package/dist/DSRoot.js +0 -1428
  187. package/dist/DropdownMenu.css +0 -95
  188. package/dist/DropdownMenu.js +0 -211
  189. package/dist/Empty.css +0 -19
  190. package/dist/Empty.js +0 -53
  191. package/dist/Field.css +0 -14
  192. package/dist/Field.js +0 -66
  193. package/dist/Form.css +0 -64
  194. package/dist/Form.js +0 -125
  195. package/dist/IconButton.css +0 -52
  196. package/dist/IconButton.js +0 -82
  197. package/dist/Input.js +0 -48
  198. package/dist/Modal.css +0 -317
  199. package/dist/Modal.js +0 -677
  200. package/dist/Popover.js +0 -10
  201. package/dist/PopupPanel.css +0 -170
  202. package/dist/PopupPanel.js +0 -333
  203. package/dist/Radio.css +0 -14
  204. package/dist/Radio.js +0 -24
  205. package/dist/ScrollArea.css +0 -64
  206. package/dist/ScrollArea.js +0 -50
  207. package/dist/Segmented.css +0 -16
  208. package/dist/Segmented.js +0 -10
  209. package/dist/Select.css +0 -24
  210. package/dist/Select.js +0 -157
  211. package/dist/Slider.js +0 -39
  212. package/dist/Spin.css +0 -36
  213. package/dist/Spin.js +0 -33
  214. package/dist/Splitter.css +0 -6
  215. package/dist/Splitter.js +0 -47
  216. package/dist/Switch.css +0 -7
  217. package/dist/Switch.js +0 -10
  218. package/dist/Table.css +0 -116
  219. package/dist/Table.js +0 -126
  220. package/dist/Tag.css +0 -17
  221. package/dist/Tag.js +0 -24
  222. package/dist/ThemeProvider.css +0 -39
  223. package/dist/ThemeProvider.js +0 -403
  224. package/dist/Toast.css +0 -622
  225. package/dist/Toast.js +0 -1401
  226. package/dist/Tooltip.css +0 -6
  227. package/dist/Tooltip.js +0 -36
  228. package/dist/Tour.css +0 -73
  229. package/dist/Tour.js +0 -54
  230. package/dist/Tree.js +0 -318
  231. package/dist/Truncate.css +0 -31
  232. package/dist/Truncate.js +0 -216
  233. package/dist/Upload.css +0 -144
  234. package/dist/Upload.js +0 -516
  235. package/dist/VerticalCollapsiblePanel.css +0 -193
  236. package/dist/VerticalCollapsiblePanel.js +0 -469
  237. package/dist/components/Badge/component.d.ts +0 -4
  238. package/dist/components/Badge/index.d.ts +0 -1
  239. package/dist/components/Breadcrumb/component.d.ts +0 -6
  240. package/dist/components/Breadcrumb/index.d.ts +0 -2
  241. package/dist/components/Breadcrumb/types.d.ts +0 -18
  242. package/dist/components/Breadcrumb/useItemRender.d.ts +0 -6
  243. package/dist/components/Button/component.d.ts +0 -8
  244. package/dist/components/Button/index.d.ts +0 -1
  245. package/dist/components/Checkbox/component.d.ts +0 -11
  246. package/dist/components/Checkbox/index.d.ts +0 -1
  247. package/dist/components/CodeBlock/component.d.ts +0 -3
  248. package/dist/components/CodeBlock/index.d.ts +0 -2
  249. package/dist/components/CodeBlock/types.d.ts +0 -59
  250. package/dist/components/Collapse/component.d.ts +0 -14
  251. package/dist/components/Collapse/index.d.ts +0 -1
  252. package/dist/components/DSRoot/component.d.ts +0 -14
  253. package/dist/components/DSRoot/context.d.ts +0 -7
  254. package/dist/components/DSRoot/index.d.ts +0 -1
  255. package/dist/components/DropdownMenu/component.d.ts +0 -31
  256. package/dist/components/DropdownMenu/index.d.ts +0 -2
  257. package/dist/components/Empty/component.d.ts +0 -13
  258. package/dist/components/Empty/index.d.ts +0 -1
  259. package/dist/components/Field/component.d.ts +0 -42
  260. package/dist/components/Field/index.d.ts +0 -1
  261. package/dist/components/Form/component.d.ts +0 -19
  262. package/dist/components/Form/index.d.ts +0 -1
  263. package/dist/components/Form/item.d.ts +0 -5
  264. package/dist/components/IconButton/component.d.ts +0 -30
  265. package/dist/components/IconButton/index.d.ts +0 -1
  266. package/dist/components/Input/component.d.ts +0 -30
  267. package/dist/components/Input/index.d.ts +0 -1
  268. package/dist/components/Modal/Modal.d.ts +0 -84
  269. package/dist/components/Modal/ModalProvider.d.ts +0 -5
  270. package/dist/components/Modal/ModalService.d.ts +0 -33
  271. package/dist/components/Modal/constants.d.ts +0 -9
  272. package/dist/components/Modal/functions.d.ts +0 -27
  273. package/dist/components/Modal/index.d.ts +0 -15
  274. package/dist/components/Popover/component.d.ts +0 -9
  275. package/dist/components/Popover/index.d.ts +0 -1
  276. package/dist/components/PopupPanel/component.d.ts +0 -61
  277. package/dist/components/PopupPanel/constants.d.ts +0 -7
  278. package/dist/components/PopupPanel/index.d.ts +0 -1
  279. package/dist/components/Radio/component.d.ts +0 -8
  280. package/dist/components/Radio/index.d.ts +0 -2
  281. package/dist/components/Radio/interface.d.ts +0 -5
  282. package/dist/components/ScrollArea/component.d.ts +0 -32
  283. package/dist/components/ScrollArea/index.d.ts +0 -1
  284. package/dist/components/Segmented/component.d.ts +0 -10
  285. package/dist/components/Segmented/index.d.ts +0 -1
  286. package/dist/components/Select/component.d.ts +0 -24
  287. package/dist/components/Select/index.d.ts +0 -1
  288. package/dist/components/Slider/component.d.ts +0 -5
  289. package/dist/components/Slider/index.d.ts +0 -1
  290. package/dist/components/Spin/component.d.ts +0 -4
  291. package/dist/components/Spin/index.d.ts +0 -1
  292. package/dist/components/Splitter/component.d.ts +0 -13
  293. package/dist/components/Splitter/index.d.ts +0 -1
  294. package/dist/components/Stack/Stack.d.ts +0 -39
  295. package/dist/components/Stack/StackChild.d.ts +0 -30
  296. package/dist/components/Stack/index.d.ts +0 -8
  297. package/dist/components/Switch/component.d.ts +0 -9
  298. package/dist/components/Switch/index.d.ts +0 -1
  299. package/dist/components/Table/component.d.ts +0 -20
  300. package/dist/components/Table/index.d.ts +0 -1
  301. package/dist/components/Tag/component.d.ts +0 -12
  302. package/dist/components/Tag/index.d.ts +0 -1
  303. package/dist/components/ThemeProvider/component.d.ts +0 -7
  304. package/dist/components/ThemeProvider/index.d.ts +0 -1
  305. package/dist/components/Toast/component.d.ts +0 -15
  306. package/dist/components/Toast/function.d.ts +0 -10
  307. package/dist/components/Toast/index.d.ts +0 -3
  308. package/dist/components/Toast/types.d.ts +0 -3
  309. package/dist/components/Tooltip/component.d.ts +0 -10
  310. package/dist/components/Tooltip/index.d.ts +0 -1
  311. package/dist/components/Tour/component.d.ts +0 -8
  312. package/dist/components/Tour/index.d.ts +0 -1
  313. package/dist/components/Transition/component.d.ts +0 -17
  314. package/dist/components/Transition/index.d.ts +0 -1
  315. package/dist/components/Tree/components.d.ts +0 -13
  316. package/dist/components/Tree/helpers.d.ts +0 -4
  317. package/dist/components/Tree/index.d.ts +0 -4
  318. package/dist/components/Tree/types.d.ts +0 -55
  319. package/dist/components/Tree/useTreeCommon.d.ts +0 -178
  320. package/dist/components/Tree/useUniqueKeysTree.d.ts +0 -33
  321. package/dist/components/Truncate/component.d.ts +0 -15
  322. package/dist/components/Truncate/helpers.d.ts +0 -5
  323. package/dist/components/Truncate/index.d.ts +0 -1
  324. package/dist/components/Upload/component.d.ts +0 -16
  325. package/dist/components/Upload/dragger.d.ts +0 -13
  326. package/dist/components/Upload/hooks.d.ts +0 -5
  327. package/dist/components/Upload/index.d.ts +0 -4
  328. package/dist/components/Upload/item.d.ts +0 -11
  329. package/dist/components/Upload/utils.d.ts +0 -1
  330. package/dist/components/VerticalCollapsiblePanel/component.d.ts +0 -65
  331. package/dist/components/VerticalCollapsiblePanel/index.d.ts +0 -1
  332. package/dist/components/hooks/antd.d.ts +0 -11
  333. package/dist/components/hooks/base-ui.d.ts +0 -7
  334. package/dist/components/hooks/index.d.ts +0 -4
  335. package/dist/components/hooks/useCharts.d.ts +0 -22
  336. package/dist/components/hooks/useControlledState.d.ts +0 -1
  337. package/dist/components/index.d.ts +0 -41
  338. package/dist/components/utils/WithAntdTokens.d.ts +0 -7
  339. package/dist/components/utils/antdUtils.d.ts +0 -15
  340. package/dist/components/utils/client.d.ts +0 -2
  341. package/dist/components/utils/cn.d.ts +0 -4
  342. package/dist/components/utils/index.d.ts +0 -3
  343. package/dist/components/utils/isTracebackError.d.ts +0 -1
  344. package/dist/components/utils/main.d.ts +0 -3
  345. package/dist/components/utils/reactToString.d.ts +0 -2
  346. package/dist/components/utils/types.d.ts +0 -9
  347. package/dist/hooks.js +0 -961
  348. package/dist/index.css +0 -1471
  349. package/dist/metadata.d.ts +0 -363
  350. package/dist/tokens/and-theme/index.d.ts +0 -1
  351. package/dist/tokens/and-theme/tokens.d.ts +0 -5
  352. package/dist/tokens/charts/index.d.ts +0 -6
  353. package/dist/tokens/charts/tokens.d.ts +0 -455
  354. package/dist/tokens/index.d.ts +0 -2
  355. package/dist/tokens/utils.d.ts +0 -16
  356. package/dist/utils.js +0 -120
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/components/Truncate/helpers.ts"],"sourcesContent":["export const measureText = (container: HTMLElement) => {\n const span = document.createElement(\"span\");\n span.style.opacity = \"0\";\n span.style.position = \"absolute\";\n span.style.top = \"-1000px\";\n span.style.left = \"-1000px\";\n span.style.whiteSpace = \"nowrap\";\n span.style.pointerEvents = \"none\";\n container.appendChild(span);\n\n return {\n measure: (text: string) => {\n span.innerText = text;\n return span.clientWidth;\n },\n destroy: () => {\n container.removeChild(span);\n },\n };\n};\n\nexport const getMiddleTruncatedString = (\n text: string,\n ellipsis: string,\n container: HTMLElement\n): string => {\n if (!text) return text;\n\n const { measure: getTextWidth, destroy: destroyMeasure } =\n measureText(container);\n\n const textWidth = getTextWidth(text);\n const containerWidth = container.clientWidth;\n const initialOffset = Math.floor((containerWidth / textWidth) * text.length);\n\n if (textWidth <= containerWidth) {\n destroyMeasure();\n return text;\n }\n\n let offset = initialOffset;\n const attempts: Record<number, [number, string]> = {};\n const maxAttempts = 20;\n const buffer = 10;\n\n while (Object.values(attempts).length <= maxAttempts) {\n // If we have already tried this offset, stop\n if (attempts[offset]) break;\n\n // If we are at the beginning of the string, just return the ellipsis\n if (offset <= 1) {\n attempts[0] = [0, ellipsis];\n break;\n }\n\n const start = text\n .slice(0, Math.ceil((offset - ellipsis.length) / 2 - 1))\n .trimEnd();\n const end = text\n .slice(Math.floor((offset - ellipsis.length) / 2) - offset)\n .trimStart();\n const truncatedStr = start + ellipsis + end;\n const width = getTextWidth(truncatedStr);\n\n attempts[offset] = [width, truncatedStr];\n\n if (width >= containerWidth) {\n offset = offset - 2;\n } else {\n // If we are close to the container width, stop\n if (containerWidth - width < buffer) break;\n offset = offset + 2;\n }\n }\n\n // Remove the span element used for measuring text\n destroyMeasure();\n\n // Find the closest attempt that is smaller than the container width\n return (\n Object.values(attempts)\n .reverse()\n .find(([width]) => width < containerWidth)?.[1] ??\n Object.values(attempts)[0][1]\n );\n};\n"],"names":["measureText","container","span","text","getMiddleTruncatedString","ellipsis","_a","getTextWidth","destroyMeasure","textWidth","containerWidth","initialOffset","offset","attempts","maxAttempts","buffer","start","end","truncatedStr","width"],"mappings":"AAAa,MAAAA,IAAc,CAACC,MAA2B;AAC/C,QAAAC,IAAO,SAAS,cAAc,MAAM;AAC1C,SAAAA,EAAK,MAAM,UAAU,KACrBA,EAAK,MAAM,WAAW,YACtBA,EAAK,MAAM,MAAM,WACjBA,EAAK,MAAM,OAAO,WAClBA,EAAK,MAAM,aAAa,UACxBA,EAAK,MAAM,gBAAgB,QAC3BD,EAAU,YAAYC,CAAI,GAEnB;AAAA,IACL,SAAS,CAACC,OACRD,EAAK,YAAYC,GACVD,EAAK;AAAA,IAEd,SAAS,MAAM;AACb,MAAAD,EAAU,YAAYC,CAAI;AAAA,IAAA;AAAA,EAE9B;AACF,GAEaE,IAA2B,CACtCD,GACAE,GACAJ,MACW;AAzBA,MAAAK;AA0BP,MAAA,CAACH,EAAa,QAAAA;AAElB,QAAM,EAAE,SAASI,GAAc,SAASC,EAAe,IACrDR,EAAYC,CAAS,GAEjBQ,IAAYF,EAAaJ,CAAI,GAC7BO,IAAiBT,EAAU,aAC3BU,IAAgB,KAAK,MAAOD,IAAiBD,IAAaN,EAAK,MAAM;AAE3E,MAAIM,KAAaC;AACA,WAAAF,EAAA,GACRL;AAGT,MAAIS,IAASD;AACb,QAAME,IAA6C,CAAC,GAC9CC,IAAc,IACdC,IAAS;AAEf,SAAO,OAAO,OAAOF,CAAQ,EAAE,UAAUC,KAEnC,CAAAD,EAASD,CAAM,KAFiC;AAKpD,QAAIA,KAAU,GAAG;AACf,MAAAC,EAAS,CAAC,IAAI,CAAC,GAAGR,CAAQ;AAC1B;AAAA,IAAA;AAGF,UAAMW,IAAQb,EACX,MAAM,GAAG,KAAK,MAAMS,IAASP,EAAS,UAAU,IAAI,CAAC,CAAC,EACtD,QAAQ,GACLY,IAAMd,EACT,MAAM,KAAK,OAAOS,IAASP,EAAS,UAAU,CAAC,IAAIO,CAAM,EACzD,UAAU,GACPM,IAAeF,IAAQX,IAAWY,GAClCE,IAAQZ,EAAaW,CAAY;AAIvC,QAFAL,EAASD,CAAM,IAAI,CAACO,GAAOD,CAAY,GAEnCC,KAAST;AACX,MAAAE,IAASA,IAAS;AAAA,SACb;AAED,UAAAF,IAAiBS,IAAQJ,EAAQ;AACrC,MAAAH,IAASA,IAAS;AAAA,IAAA;AAAA,EACpB;AAIa,SAAAJ,EAAA,KAIbF,IAAA,OAAO,OAAOO,CAAQ,EACnB,UACA,KAAK,CAAC,CAACM,CAAK,MAAMA,IAAQT,CAAc,MAF3C,gBAAAJ,EAE+C,OAC/C,OAAO,OAAOO,CAAQ,EAAE,CAAC,EAAE,CAAC;AAEhC;"}
@@ -0,0 +1 @@
1
+ @layer components{.ds-truncate{white-space:nowrap;overflow:hidden;width:100%;flex-grow:1;min-width:0;max-width:100%;display:block}.ds-truncate-end{text-overflow:ellipsis}.ds-truncate-middle{text-overflow:clip}.ds-truncate-multiline{display:-webkit-box;-webkit-line-clamp:var(--ds-line-clamp, 2);line-clamp:var(--ds-line-clamp, 2);-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;word-break:break-word}}
@@ -0,0 +1,39 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import n from "antd/es/upload";
3
+ import { CloudArrowUp as d } from "@bioturing/assets";
4
+ import { Dragger as a } from "./dragger.js";
5
+ import { useUploadItemRender as c } from "./hooks.js";
6
+ import { UploadItem as f } from "./item.js";
7
+ import { Button as u } from "../Button/component.js";
8
+ import { useCls as U } from "../utils/antdUtils.js";
9
+ import { clsx as g } from "../utils/cn.js";
10
+ const h = ({
11
+ // icon = <CloudArrowUp size={24} />,
12
+ showRemoveButton: r = !0,
13
+ // showFileList = true,
14
+ className: t,
15
+ fileList: e,
16
+ children: m,
17
+ ...l
18
+ }) => {
19
+ const p = U(), i = /* @__PURE__ */ o(u, { icon: /* @__PURE__ */ o(d, { size: 24 }), type: "default", children: "Upload Files" }), s = c({ showRemoveButton: r });
20
+ return /* @__PURE__ */ o(
21
+ n,
22
+ {
23
+ className: g(p("upload"), t),
24
+ ...l,
25
+ fileList: e,
26
+ itemRender: s,
27
+ children: m || i
28
+ }
29
+ );
30
+ }, z = Object.assign(h, {
31
+ // Dragger,
32
+ Dragger: a,
33
+ Item: f
34
+ });
35
+ export {
36
+ h as DefaultUpload,
37
+ z as Upload
38
+ };
39
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/Upload/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as AntUpload,\n type UploadFile as AntUploadFile,\n type UploadProps as AntUploadProps,\n type RcFile,\n type UploadChangeParam,\n} from \"antd/es/upload\";\nimport { Button } from \"..\";\nimport { CloudArrowUp } from \"@bioturing/assets\";\nimport { clsx, useCls } from \"../utils\";\nimport { Dragger } from \"./dragger\";\nimport { useUploadItemRender } from \"./hooks\";\nimport { UploadItem } from \"./item\";\n\n// Re-export UploadFile and other types for consumers\nexport type UploadFile = AntUploadFile;\nexport type { RcFile, UploadChangeParam };\n\nexport type { UploadItemProps, UploadFileStatus } from \"./item\";\n\n// Define props interface extending Ant Design's UploadProps\nexport interface UploadProps extends AntUploadProps {\n /**\n * Show remove button for uploaded files\n * @default true\n */\n showRemoveButton?: boolean;\n // /**\n // * Show file list\n // * @default true\n // */\n // showFileList?: boolean;\n // /**\n // * Custom icon\n // */\n // icon?: React.ReactNode;\n}\n\n// Default icons for file types\nexport const DefaultUpload = ({\n // icon = <CloudArrowUp size={24} />,\n showRemoveButton = true,\n // showFileList = true,\n className,\n fileList,\n children,\n ...restProps\n}: UploadProps) => {\n const cls = useCls();\n const icon = <CloudArrowUp size={24} />;\n\n // Default children if none provided\n const defaultChildren = (\n <Button icon={icon} type=\"default\">\n Upload Files\n </Button>\n );\n const itemRender = useUploadItemRender({ showRemoveButton });\n\n return (\n <AntUpload\n className={clsx(cls(\"upload\"), className)}\n {...restProps}\n fileList={fileList}\n itemRender={itemRender}\n >\n {children || defaultChildren}\n </AntUpload>\n );\n};\n\nexport const Upload = Object.assign(DefaultUpload, {\n // Dragger,\n Dragger: Dragger,\n Item: UploadItem,\n});\n"],"names":["DefaultUpload","showRemoveButton","className","fileList","children","restProps","cls","useCls","defaultChildren","jsx","Button","CloudArrowUp","itemRender","useUploadItemRender","AntUpload","clsx","Upload","Dragger","UploadItem"],"mappings":";;;;;;;;;AAwCO,MAAMA,IAAgB,CAAC;AAAA;AAAA,EAE5B,kBAAAC,IAAmB;AAAA;AAAA,EAEnB,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,MAAmB;AACjB,QAAMC,IAAMC,EAAO,GAIbC,IACH,gBAAAC,EAAAC,GAAA,EAAO,MAJG,gBAAAD,EAACE,GAAa,EAAA,MAAM,GAAI,CAAA,GAIf,MAAK,WAAU,UAEnC,gBAAA,GAEIC,IAAaC,EAAoB,EAAE,kBAAAZ,GAAkB;AAGzD,SAAA,gBAAAQ;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,WAAWC,EAAKT,EAAI,QAAQ,GAAGJ,CAAS;AAAA,MACvC,GAAGG;AAAA,MACJ,UAAAF;AAAA,MACA,YAAAS;AAAA,MAEC,UAAYR,KAAAI;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaQ,IAAS,OAAO,OAAOhB,GAAe;AAAA;AAAA,EAEjD,SAAAiB;AAAA,EACA,MAAMC;AACR,CAAC;"}
@@ -0,0 +1,23 @@
1
+ import { jsx as r, jsxs as p, Fragment as i } from "react/jsx-runtime";
2
+ import m from "antd/es/upload";
3
+ import { CloudArrowUp as u } from "@bioturing/assets";
4
+ import { useUploadItemRender as c } from "./hooks.js";
5
+ import { useCls as f } from "../utils/antdUtils.js";
6
+ const N = ({
7
+ children: o,
8
+ uploadTitle: t = "Click or drag file to this area to upload",
9
+ uploadDescription: l = "Support for a single or bulk upload.",
10
+ itemRender: a,
11
+ ...n
12
+ }) => {
13
+ const e = f(), s = () => /* @__PURE__ */ p(i, { children: [
14
+ /* @__PURE__ */ r("p", { className: e("upload-drag-icon"), children: /* @__PURE__ */ r(u, { size: 40 }) }),
15
+ /* @__PURE__ */ r("p", { className: e("upload-text"), children: t }),
16
+ /* @__PURE__ */ r("p", { className: e("upload-hint"), children: l })
17
+ ] }), d = c({ showRemoveButton: !0 });
18
+ return /* @__PURE__ */ r(m.Dragger, { itemRender: a || d, ...n, children: o || s() });
19
+ };
20
+ export {
21
+ N as Dragger
22
+ };
23
+ //# sourceMappingURL=dragger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dragger.js","sources":["../../../src/components/Upload/dragger.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as AntUpload,\n type DraggerProps as AntDraggerProps,\n} from \"antd/es/upload\";\nimport React from \"react\";\nimport { CloudArrowUp } from \"@bioturing/assets\";\nimport { useCls } from \"../utils\";\nimport { useUploadItemRender } from \"./hooks\";\n\nexport interface DraggerProps extends AntDraggerProps {\n /**\n * Custom title for the upload component\n */\n uploadTitle?: React.ReactNode;\n /**\n * Custom description for the upload component\n **/\n uploadDescription?: React.ReactNode;\n}\n\nexport const Dragger = ({\n children,\n uploadTitle = \"Click or drag file to this area to upload\",\n uploadDescription = \"Support for a single or bulk upload.\",\n itemRender,\n ...rest\n}: DraggerProps) => {\n const cls = useCls();\n const renderChildren = () => {\n return (\n <>\n <p className={cls(\"upload-drag-icon\")}>\n <CloudArrowUp size={40} />\n </p>\n <p className={cls(\"upload-text\")}>{uploadTitle}</p>\n <p className={cls(\"upload-hint\")}>{uploadDescription}</p>\n </>\n );\n };\n const defaultItemRender = useUploadItemRender({ showRemoveButton: true });\n return (\n <AntUpload.Dragger itemRender={itemRender || defaultItemRender} {...rest}>\n {children ? children : renderChildren()}\n </AntUpload.Dragger>\n );\n};\n"],"names":["Dragger","children","uploadTitle","uploadDescription","itemRender","rest","cls","useCls","renderChildren","jsxs","Fragment","jsx","CloudArrowUp","defaultItemRender","useUploadItemRender","AntUpload"],"mappings":";;;;;AAqBO,MAAMA,IAAU,CAAC;AAAA,EACtB,UAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,mBAAAC,IAAoB;AAAA,EACpB,YAAAC;AAAA,EACA,GAAGC;AACL,MAAoB;AAClB,QAAMC,IAAMC,EAAO,GACbC,IAAiB,MAGjB,gBAAAC,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAC,gBAAAC,EAAA,KAAA,EAAE,WAAWL,EAAI,kBAAkB,GAClC,UAAC,gBAAAK,EAAAC,GAAA,EAAa,MAAM,GAAA,CAAI,EAC1B,CAAA;AAAA,sBACC,KAAE,EAAA,WAAWN,EAAI,aAAa,GAAI,UAAYJ,GAAA;AAAA,sBAC9C,KAAE,EAAA,WAAWI,EAAI,aAAa,GAAI,UAAkBH,EAAA,CAAA;AAAA,EAAA,GACvD,GAGEU,IAAoBC,EAAoB,EAAE,kBAAkB,IAAM;AACxE,SACG,gBAAAH,EAAAI,EAAU,SAAV,EAAkB,YAAYX,KAAcS,GAAoB,GAAGR,GACjE,UAAAJ,KAAsBO,EACzB,EAAA,CAAA;AAEJ;"}
@@ -0,0 +1,18 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { useCallback as o } from "react";
3
+ import { UploadItem as n } from "./item.js";
4
+ const c = ({ showRemoveButton: r = !0 }) => o((a, e, s, t) => /* @__PURE__ */ m(
5
+ n,
6
+ {
7
+ fileName: e.name,
8
+ fileType: e.type,
9
+ status: e.status,
10
+ percent: e.percent,
11
+ removable: r,
12
+ onRemove: () => t.remove()
13
+ }
14
+ ), [r]);
15
+ export {
16
+ c as useUploadItemRender
17
+ };
18
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sources":["../../../src/components/Upload/hooks.tsx"],"sourcesContent":["\"use client\";\nimport { type UploadProps } from \"antd/es/upload\";\nimport { useCallback } from \"react\";\nimport { UploadItem } from \"./item\";\n\nexport type UseUploadItemRenderProps = {\n showRemoveButton?: boolean;\n};\n\nexport const useUploadItemRender: (\n props: UseUploadItemRenderProps\n) => UploadProps[\"itemRender\"] = ({ showRemoveButton = true }) => {\n // If showFileList is false, don't render anything\n // if (!showFileList) return null;\n\n // Custom rendering of file items\n const itemRender: UploadProps[\"itemRender\"] = (\n _originNode,\n file,\n _fileList,\n actions\n ) => {\n return (\n <UploadItem\n fileName={file.name}\n fileType={file.type}\n status={file.status}\n percent={file.percent}\n removable={showRemoveButton}\n onRemove={() => actions.remove()}\n />\n );\n };\n return useCallback(itemRender, [showRemoveButton]);\n};\n"],"names":["useUploadItemRender","showRemoveButton","useCallback","_originNode","file","_fileList","actions","jsx","UploadItem"],"mappings":";;;AASO,MAAMA,IAEoB,CAAC,EAAE,kBAAAC,IAAmB,SAsB9CC,EAjBuC,CAC5CC,GACAC,GACAC,GACAC,MAGE,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,UAAUJ,EAAK;AAAA,IACf,UAAUA,EAAK;AAAA,IACf,QAAQA,EAAK;AAAA,IACb,SAASA,EAAK;AAAA,IACd,WAAWH;AAAA,IACX,UAAU,MAAMK,EAAQ,OAAO;AAAA,EAAA;AACjC,GAG2B,CAACL,CAAgB,CAAC;"}
@@ -0,0 +1,84 @@
1
+ import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
+ import n from "antd/es/flex";
3
+ import g from "antd/es/progress";
4
+ import { Trash as u } from "@bioturing/assets";
5
+ import { Truncate as f } from "../Truncate/component.js";
6
+ import { getUploadFileIcon as h } from "./utils.js";
7
+ import { useCls as x } from "../utils/antdUtils.js";
8
+ import { clsx as N } from "../utils/cn.js";
9
+ import { IconButton as v } from "../IconButton/component.js";
10
+ const U = ({
11
+ fileName: t,
12
+ fileType: s,
13
+ status: o = "pending",
14
+ percent: a,
15
+ removable: m = !0,
16
+ onRemove: c,
17
+ extraActions: p
18
+ }) => {
19
+ const r = x(), d = Math.round(a || 0), l = {
20
+ done: "success",
21
+ error: "exception",
22
+ uploading: "active",
23
+ removed: "normal",
24
+ pending: "normal"
25
+ };
26
+ return /* @__PURE__ */ e(
27
+ n,
28
+ {
29
+ className: N(r("upload-item")),
30
+ justify: "space-between",
31
+ align: "center",
32
+ "data-error": o === "error",
33
+ children: /* @__PURE__ */ i(
34
+ n,
35
+ {
36
+ align: "center",
37
+ gap: 16,
38
+ flex: 1,
39
+ className: r("upload-item-content"),
40
+ children: [
41
+ /* @__PURE__ */ e("span", { className: r("upload-item-icon"), children: h(s) }),
42
+ /* @__PURE__ */ i(
43
+ n,
44
+ {
45
+ align: "start",
46
+ vertical: !0,
47
+ flex: 1,
48
+ className: r("upload-item-name-progress"),
49
+ children: [
50
+ /* @__PURE__ */ e(f, { position: "middle", children: t }),
51
+ /* @__PURE__ */ e(
52
+ g,
53
+ {
54
+ percent: d,
55
+ size: "small",
56
+ className: r("upload-item-progress"),
57
+ status: o && o in l ? l[o] : "normal"
58
+ }
59
+ )
60
+ ]
61
+ }
62
+ ),
63
+ /* @__PURE__ */ i(n, { gap: 8, align: "center", children: [
64
+ p,
65
+ m && /* @__PURE__ */ e(
66
+ v,
67
+ {
68
+ label: "Remove",
69
+ children: /* @__PURE__ */ e(u, { size: 16 }),
70
+ onClick: c,
71
+ size: "small"
72
+ }
73
+ )
74
+ ] })
75
+ ]
76
+ }
77
+ )
78
+ }
79
+ );
80
+ };
81
+ export {
82
+ U as UploadItem
83
+ };
84
+ //# sourceMappingURL=item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sources":["../../../src/components/Upload/item.tsx"],"sourcesContent":["import Flex from \"antd/es/flex\";\nimport Progress from \"antd/es/progress\";\nimport { type ProgressProps } from \"antd/es/progress\";\nimport { Trash } from \"@bioturing/assets\";\nimport { IconButton } from \"../IconButton\";\nimport { Truncate } from \"../Truncate/component\";\nimport { clsx, useCls } from \"../utils\";\nimport { getUploadFileIcon } from \"./utils\";\n\nexport type UploadFileStatus =\n | \"error\"\n | \"done\"\n | \"uploading\"\n | \"removed\"\n | \"pending\";\n\nexport interface UploadItemProps {\n fileName: string;\n fileType?: string;\n status?: UploadFileStatus;\n percent?: number;\n removable?: boolean;\n onRemove?: () => void;\n extraActions?: React.ReactNode;\n}\n\nexport const UploadItem = ({\n fileName,\n fileType,\n status = \"pending\",\n percent,\n removable = true,\n onRemove,\n extraActions,\n}: UploadItemProps) => {\n const cls = useCls();\n const showPercent = Math.round(percent || 0);\n const statusWithProgress: Record<UploadFileStatus, ProgressProps[\"status\"]> =\n {\n done: \"success\",\n error: \"exception\",\n uploading: \"active\",\n removed: \"normal\",\n pending: \"normal\",\n };\n return (\n <Flex\n className={clsx(cls(\"upload-item\"))}\n justify=\"space-between\"\n align=\"center\"\n data-error={status === \"error\"}\n >\n <Flex\n align=\"center\"\n gap={16}\n flex={1}\n className={cls(\"upload-item-content\")}\n >\n <span className={cls(\"upload-item-icon\")}>\n {getUploadFileIcon(fileType)}\n </span>\n <Flex\n align=\"start\"\n vertical\n flex={1}\n className={cls(\"upload-item-name-progress\")}\n >\n <Truncate position=\"middle\">{fileName}</Truncate>\n <Progress\n percent={showPercent}\n size=\"small\"\n className={cls(\"upload-item-progress\")}\n status={\n status && status in statusWithProgress\n ? statusWithProgress[status]\n : \"normal\"\n }\n />\n </Flex>\n <Flex gap={8} align=\"center\">\n {extraActions}\n {removable && (\n <IconButton\n label=\"Remove\"\n children={<Trash size={16} />}\n onClick={onRemove}\n size=\"small\"\n />\n )}\n </Flex>\n </Flex>\n </Flex>\n );\n};\n"],"names":["UploadItem","fileName","fileType","status","percent","removable","onRemove","extraActions","cls","useCls","showPercent","statusWithProgress","jsx","Flex","clsx","jsxs","getUploadFileIcon","Truncate","Progress","IconButton","Trash"],"mappings":";;;;;;;;;AA0BO,MAAMA,IAAa,CAAC;AAAA,EACzB,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,SAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,cAAAC;AACF,MAAuB;AACrB,QAAMC,IAAMC,EAAO,GACbC,IAAc,KAAK,MAAMN,KAAW,CAAC,GACrCO,IACJ;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAEA,SAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAKN,EAAI,aAAa,CAAC;AAAA,MAClC,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,cAAYL,MAAW;AAAA,MAEvB,UAAA,gBAAAY;AAAA,QAACF;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,WAAWL,EAAI,qBAAqB;AAAA,UAEpC,UAAA;AAAA,YAAA,gBAAAI,EAAC,UAAK,WAAWJ,EAAI,kBAAkB,GACpC,UAAAQ,EAAkBd,CAAQ,GAC7B;AAAA,YACA,gBAAAa;AAAA,cAACF;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,UAAQ;AAAA,gBACR,MAAM;AAAA,gBACN,WAAWL,EAAI,2BAA2B;AAAA,gBAE1C,UAAA;AAAA,kBAAC,gBAAAI,EAAAK,GAAA,EAAS,UAAS,UAAU,UAAShB,GAAA;AAAA,kBACtC,gBAAAW;AAAA,oBAACM;AAAA,oBAAA;AAAA,sBACC,SAASR;AAAA,sBACT,MAAK;AAAA,sBACL,WAAWF,EAAI,sBAAsB;AAAA,sBACrC,QACEL,KAAUA,KAAUQ,IAChBA,EAAmBR,CAAM,IACzB;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAER;AAAA,cAAA;AAAA,YACF;AAAA,YACC,gBAAAY,EAAAF,GAAA,EAAK,KAAK,GAAG,OAAM,UACjB,UAAA;AAAA,cAAAN;AAAA,cACAF,KACC,gBAAAO;AAAA,gBAACO;AAAA,gBAAA;AAAA,kBACC,OAAM;AAAA,kBACN,UAAU,gBAAAP,EAACQ,GAAM,EAAA,MAAM,GAAI,CAAA;AAAA,kBAC3B,SAASd;AAAA,kBACT,MAAK;AAAA,gBAAA;AAAA,cAAA;AAAA,YACP,EAEJ,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
@@ -0,0 +1,7 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { Folder as o, File as l } from "@bioturing/assets";
3
+ const f = (i) => i === "folder" ? /* @__PURE__ */ e(o, { size: 20, weight: "fill" }) : /* @__PURE__ */ e(l, { size: 20, weight: "fill" });
4
+ export {
5
+ f as getUploadFileIcon
6
+ };
7
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../src/components/Upload/utils.tsx"],"sourcesContent":["import { File, Folder } from \"@bioturing/assets\";\n\nexport const getUploadFileIcon = (fileType?: string) => {\n return fileType === \"folder\" ? (\n <Folder size={20} weight=\"fill\" />\n ) : (\n <File size={20} weight=\"fill\" />\n );\n};\n"],"names":["getUploadFileIcon","fileType","jsx","Folder","File"],"mappings":";;AAEa,MAAAA,IAAoB,CAACC,MACzBA,MAAa,WACjB,gBAAAC,EAAAC,GAAA,EAAO,MAAM,IAAI,QAAO,OAAO,CAAA,IAE/B,gBAAAD,EAAAE,GAAA,EAAK,MAAM,IAAI,QAAO,QAAO;"}
@@ -0,0 +1,125 @@
1
+ import { jsxs as r, jsx as l } from "react/jsx-runtime";
2
+ import { useState as j, useRef as k, useEffect as A } from "react";
3
+ import { Collapsible as i } from "@base-ui-components/react";
4
+ import { MinusCircle as F, PlusCircle as M } from "@bioturing/assets";
5
+ import { useControlledState as R } from "../hooks/useControlledState.js";
6
+ import { Truncate as S } from "../Truncate/component.js";
7
+ import './style.css';/* empty css */
8
+ import { Transition as E } from "../Transition/component.js";
9
+ import { useCls as $, useAntdCssVarClassname as q } from "../utils/antdUtils.js";
10
+ import { useAnimationsFinished as z } from "../hooks/base-ui.js";
11
+ import { clsx as o } from "../utils/cn.js";
12
+ import { IconButton as f } from "../IconButton/component.js";
13
+ const Z = ({
14
+ children: h,
15
+ title: n,
16
+ defaultOpen: b = !1,
17
+ open: u,
18
+ onOpenChange: N,
19
+ className: C,
20
+ headerClassName: y,
21
+ headerInnerClassName: v,
22
+ bodyClassName: x,
23
+ contentPadding: a = "16px",
24
+ afterTitle: p,
25
+ actions: O,
26
+ useTitleAsTrigger: c = !0,
27
+ keepMounted: w = !1
28
+ }) => {
29
+ const e = $(), [s, t] = R(
30
+ u,
31
+ N,
32
+ b
33
+ ), [B, I] = j(s), m = k(null), d = z(m, s), V = q();
34
+ return A(() => {
35
+ d(() => {
36
+ I(s);
37
+ });
38
+ }, [s, d]), /* @__PURE__ */ r(
39
+ i.Root,
40
+ {
41
+ className: o(e("collapsible-panel"), V, C),
42
+ open: s,
43
+ onOpenChange: t,
44
+ ref: m,
45
+ children: [
46
+ /* @__PURE__ */ r("div", { className: o(e("collapsible-panel-header"), y), children: [
47
+ /* @__PURE__ */ r(
48
+ "div",
49
+ {
50
+ className: o(
51
+ e("collapsible-panel-header-inner"),
52
+ v
53
+ ),
54
+ children: [
55
+ /* @__PURE__ */ l(
56
+ "div",
57
+ {
58
+ className: e("collapsible-panel-header-text"),
59
+ onClick: c ? () => t((g) => !g) : void 0,
60
+ style: c ? {
61
+ cursor: "pointer"
62
+ } : {},
63
+ children: typeof n == "string" ? /* @__PURE__ */ l(S, { children: n }) : n
64
+ }
65
+ ),
66
+ /* @__PURE__ */ r("div", { className: e("collapsible-panel-header-actions"), children: [
67
+ s && O,
68
+ /* @__PURE__ */ l(
69
+ i.Trigger,
70
+ {
71
+ className: e("collapsible-panel-trigger"),
72
+ render: s ? /* @__PURE__ */ l(f, { children: /* @__PURE__ */ l(
73
+ F,
74
+ {
75
+ weight: "bold",
76
+ className: o(
77
+ e("collapsible-panel-caret"),
78
+ s && e("collapsible-panel-caret-open")
79
+ )
80
+ }
81
+ ) }) : /* @__PURE__ */ l(f, { children: /* @__PURE__ */ l(
82
+ M,
83
+ {
84
+ weight: "bold",
85
+ className: o(
86
+ e("collapsible-panel-caret"),
87
+ s && e("collapsible-panel-caret-open")
88
+ )
89
+ }
90
+ ) })
91
+ }
92
+ )
93
+ ] })
94
+ ]
95
+ }
96
+ ),
97
+ s && p && /* @__PURE__ */ l("div", { className: e("collapsible-panel-header-after"), children: p })
98
+ ] }),
99
+ /* @__PURE__ */ l(
100
+ i.Panel,
101
+ {
102
+ className: e("collapsible-panel-content"),
103
+ style: typeof a < "u" ? {
104
+ "--ds-content-padding": a === !1 || a === 0 ? "0" : typeof a == "number" ? `${a}px` : a
105
+ } : {},
106
+ keepMounted: w,
107
+ children: /* @__PURE__ */ l(
108
+ E,
109
+ {
110
+ show: B,
111
+ className: o(e("collapsible-panel-body"), x),
112
+ keepMounted: !0,
113
+ children: /* @__PURE__ */ l("div", { children: h })
114
+ }
115
+ )
116
+ }
117
+ )
118
+ ]
119
+ }
120
+ );
121
+ };
122
+ export {
123
+ Z as VerticalCollapsiblePanel
124
+ };
125
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/VerticalCollapsiblePanel/component.tsx"],"sourcesContent":["\"use client\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { Collapsible } from \"@base-ui-components/react\";\nimport { MinusCircle, PlusCircle } from \"@bioturing/assets\";\nimport { useCls, clsx, useAntdCssVarClassname } from \"../utils\";\nimport { useControlledState } from \"../hooks/useControlledState\";\nimport { Transition } from \"../Transition\";\nimport { useAnimationsFinished } from \"../hooks\";\nimport { IconButton } from \"../IconButton\";\nimport { Truncate } from \"../Truncate/component\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport interface VerticalCollapsiblePanelProps {\n /**\n * The content of the panel that will be toggled\n */\n children: React.ReactNode;\n /**\n * The header of the panel\n */\n title?: React.ReactNode;\n /**\n * Indicate if the title should be used as a trigger\n * @default true\n */\n useTitleAsTrigger?: boolean;\n /**\n * Custom Content Padding\n * @default \"24px\"\n */\n contentPadding?: number | string | boolean;\n /**\n * Add more content below the title\n * Only show when panel is open\n */\n afterTitle?: React.ReactNode;\n\n /**\n * Whether the panel is expanded by default\n */\n defaultOpen?: boolean;\n /**\n * Control the open state (makes the component controlled)\n */\n open?: boolean;\n /**\n * Callback when the open state changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Additional class name for the component\n */\n className?: string;\n /**\n * Addtional class name for the header\n */\n headerClassName?: string;\n /**\n * Addtional class name for the header\n */\n headerInnerClassName?: string;\n /**\n * Addtional class name for the body\n * */\n bodyClassName?: string;\n /**\n * Actions to be displayed in the header\n * Only show when panel is open\n */\n actions?: React.ReactNode;\n /**\n * Keeping it as mounted, just hide the content\n */\n keepMounted?: boolean;\n}\n\nexport const VerticalCollapsiblePanel: React.FC<\n VerticalCollapsiblePanelProps\n> = ({\n children,\n title,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n className,\n headerClassName,\n headerInnerClassName,\n bodyClassName,\n contentPadding = \"16px\",\n afterTitle,\n actions,\n useTitleAsTrigger = true,\n keepMounted = false,\n}) => {\n const cls = useCls();\n // Use useControlledState for open state\n const [isOpen, setIsOpen] = useControlledState(\n controlledOpen,\n onOpenChange,\n defaultOpen\n );\n const [isBodyOpen, setIsBodyOpen] = useState(isOpen);\n const ref = useRef<HTMLDivElement>(null);\n const runOnceAnimationsFinish = useAnimationsFinished(ref, isOpen);\n const cssVars = useAntdCssVarClassname();\n useEffect(() => {\n runOnceAnimationsFinish(() => {\n setIsBodyOpen(isOpen);\n });\n }, [isOpen, runOnceAnimationsFinish]);\n return (\n <Collapsible.Root\n className={clsx(cls(\"collapsible-panel\"), cssVars, className)}\n open={isOpen}\n onOpenChange={setIsOpen}\n ref={ref}\n >\n <div className={clsx(cls(\"collapsible-panel-header\"), headerClassName)}>\n <div\n className={clsx(\n cls(\"collapsible-panel-header-inner\"),\n headerInnerClassName\n )}\n >\n <div\n className={cls(\"collapsible-panel-header-text\")}\n onClick={\n useTitleAsTrigger ? () => setIsOpen((open) => !open) : undefined\n }\n style={\n useTitleAsTrigger\n ? {\n cursor: \"pointer\",\n }\n : {}\n }\n >\n {typeof title == \"string\" ? <Truncate>{title}</Truncate> : title}\n </div>\n <div className={cls(\"collapsible-panel-header-actions\")}>\n {isOpen && actions}\n <Collapsible.Trigger\n className={cls(\"collapsible-panel-trigger\")}\n render={\n isOpen ? (\n <IconButton>\n <MinusCircle\n weight=\"bold\"\n className={clsx(\n cls(\"collapsible-panel-caret\"),\n isOpen && cls(\"collapsible-panel-caret-open\")\n )}\n />\n </IconButton>\n ) : (\n <IconButton>\n <PlusCircle\n weight=\"bold\"\n className={clsx(\n cls(\"collapsible-panel-caret\"),\n isOpen && cls(\"collapsible-panel-caret-open\")\n )}\n />\n </IconButton>\n )\n }\n ></Collapsible.Trigger>\n </div>\n </div>\n {isOpen && afterTitle && (\n <div className={cls(\"collapsible-panel-header-after\")}>\n {afterTitle}\n </div>\n )}\n </div>\n <Collapsible.Panel\n className={cls(\"collapsible-panel-content\")}\n style={\n (typeof contentPadding != \"undefined\"\n ? {\n \"--ds-content-padding\":\n contentPadding === false || contentPadding === 0\n ? \"0\"\n : typeof contentPadding == \"number\"\n ? `${contentPadding}px`\n : contentPadding,\n }\n : {}) as React.CSSProperties\n }\n keepMounted={keepMounted}\n >\n <Transition\n show={isBodyOpen}\n className={clsx(cls(\"collapsible-panel-body\"), bodyClassName)}\n keepMounted\n >\n <div>{children}</div>\n </Transition>\n </Collapsible.Panel>\n </Collapsible.Root>\n );\n};\n"],"names":["VerticalCollapsiblePanel","children","title","defaultOpen","controlledOpen","onOpenChange","className","headerClassName","headerInnerClassName","bodyClassName","contentPadding","afterTitle","actions","useTitleAsTrigger","keepMounted","cls","useCls","isOpen","setIsOpen","useControlledState","isBodyOpen","setIsBodyOpen","useState","ref","useRef","runOnceAnimationsFinish","useAnimationsFinished","cssVars","useAntdCssVarClassname","useEffect","jsxs","Collapsible","clsx","jsx","open","Truncate","IconButton","MinusCircle","PlusCircle","Transition"],"mappings":";;;;;;;;;;;;AA8EO,MAAMA,IAET,CAAC;AAAA,EACH,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,MAAMC;AAAA,EACN,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,aAAAC,IAAc;AAChB,MAAM;AACJ,QAAMC,IAAMC,EAAO,GAEb,CAACC,GAAQC,CAAS,IAAIC;AAAA,IAC1Bf;AAAA,IACAC;AAAA,IACAF;AAAA,EACF,GACM,CAACiB,GAAYC,CAAa,IAAIC,EAASL,CAAM,GAC7CM,IAAMC,EAAuB,IAAI,GACjCC,IAA0BC,EAAsBH,GAAKN,CAAM,GAC3DU,IAAUC,EAAuB;AACvC,SAAAC,EAAU,MAAM;AACd,IAAAJ,EAAwB,MAAM;AAC5B,MAAAJ,EAAcJ,CAAM;AAAA,IAAA,CACrB;AAAA,EAAA,GACA,CAACA,GAAQQ,CAAuB,CAAC,GAElC,gBAAAK;AAAA,IAACC,EAAY;AAAA,IAAZ;AAAA,MACC,WAAWC,EAAKjB,EAAI,mBAAmB,GAAGY,GAASrB,CAAS;AAAA,MAC5D,MAAMW;AAAA,MACN,cAAcC;AAAA,MACd,KAAAK;AAAA,MAEA,UAAA;AAAA,QAAA,gBAAAO,EAAC,SAAI,WAAWE,EAAKjB,EAAI,0BAA0B,GAAGR,CAAe,GACnE,UAAA;AAAA,UAAA,gBAAAuB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWE;AAAA,gBACTjB,EAAI,gCAAgC;AAAA,gBACpCP;AAAA,cACF;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAyB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWlB,EAAI,+BAA+B;AAAA,oBAC9C,SACEF,IAAoB,MAAMK,EAAU,CAACgB,MAAS,CAACA,CAAI,IAAI;AAAA,oBAEzD,OACErB,IACI;AAAA,sBACE,QAAQ;AAAA,oBAAA,IAEV,CAAC;AAAA,oBAGN,iBAAOX,KAAS,WAAY,gBAAA+B,EAAAE,GAAA,EAAU,aAAM,IAAcjC;AAAA,kBAAA;AAAA,gBAC7D;AAAA,gBACC,gBAAA4B,EAAA,OAAA,EAAI,WAAWf,EAAI,kCAAkC,GACnD,UAAA;AAAA,kBAAUE,KAAAL;AAAA,kBACX,gBAAAqB;AAAA,oBAACF,EAAY;AAAA,oBAAZ;AAAA,sBACC,WAAWhB,EAAI,2BAA2B;AAAA,sBAC1C,QACEE,IACE,gBAAAgB,EAACG,GACC,EAAA,UAAA,gBAAAH;AAAA,wBAACI;AAAA,wBAAA;AAAA,0BACC,QAAO;AAAA,0BACP,WAAWL;AAAA,4BACTjB,EAAI,yBAAyB;AAAA,4BAC7BE,KAAUF,EAAI,8BAA8B;AAAA,0BAAA;AAAA,wBAC9C;AAAA,sBACF,EAAA,CACF,IAEA,gBAAAkB,EAACG,GACC,EAAA,UAAA,gBAAAH;AAAA,wBAACK;AAAA,wBAAA;AAAA,0BACC,QAAO;AAAA,0BACP,WAAWN;AAAA,4BACTjB,EAAI,yBAAyB;AAAA,4BAC7BE,KAAUF,EAAI,8BAA8B;AAAA,0BAAA;AAAA,wBAC9C;AAAA,sBAAA,EAEJ,CAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAGL,EACH,CAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,UACCE,KAAUN,KACR,gBAAAsB,EAAA,OAAA,EAAI,WAAWlB,EAAI,gCAAgC,GACjD,UACHJ,EAAA,CAAA;AAAA,QAAA,GAEJ;AAAA,QACA,gBAAAsB;AAAA,UAACF,EAAY;AAAA,UAAZ;AAAA,YACC,WAAWhB,EAAI,2BAA2B;AAAA,YAC1C,OACG,OAAOL,IAAkB,MACtB;AAAA,cACE,wBACEA,MAAmB,MAASA,MAAmB,IAC3C,MACA,OAAOA,KAAkB,WACzB,GAAGA,CAAc,OACjBA;AAAA,YAAA,IAER,CAAC;AAAA,YAEP,aAAAI;AAAA,YAEA,UAAA,gBAAAmB;AAAA,cAACM;AAAA,cAAA;AAAA,gBACC,MAAMnB;AAAA,gBACN,WAAWY,EAAKjB,EAAI,wBAAwB,GAAGN,CAAa;AAAA,gBAC5D,aAAW;AAAA,gBAEX,UAAA,gBAAAwB,EAAC,SAAK,UAAAhC,EAAS,CAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACjB;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AAEJ;"}
@@ -0,0 +1 @@
1
+ @layer components{.ds-collapsible-panel{overflow:hidden;flex-basis:fit-content;flex-grow:0;flex-shrink:0;display:flex;max-height:100%;flex-direction:column}.ds-collapsible-panel[data-closed]{transition:all .2s ease-out}.ds-collapsible-panel[data-open]{transition:all .2s ease-in;flex-grow:1}.ds-collapsible-panel-trigger{background:none;border:none;padding:0;cursor:pointer;text-align:left}.ds-collapsible-panel-header{display:flex;flex-direction:column;flex-grow:0;transition:all .2s ease-in-out;border-bottom:1px solid transparent}.ds-collapsible-panel-header-inner{display:flex;align-items:center;transition:width .2s ease;padding:.75rem 1rem;gap:.5rem}.ds-collapsible-panel-header-after{display:flex;align-items:center;padding:0 1rem .75rem;gap:.5rem}.ds-collapsible-panel[data-open] .ds-collapsible-panel-header{border-bottom:1px solid var(--ds-color-split)}.ds-collapsible-panel[data-open] .ds-collapsible-panel-header-inner{justify-content:flex-start;flex-grow:1}.ds-collapsible-panel-trigger:hover .ds-collapsible-panel-header{background-color:var(--ds-color-bg-hover)}.ds-collapsible-panel-header-actions{display:flex;align-items:center;justify-content:center;flex-shrink:0;gap:.5rem;flex-grow:0}.ds-collapsible-panel-header-text{flex-grow:1;display:inline-block;font-size:var(--text-ds-h5);font-weight:var(--text-ds-h5--font-weight);line-height:var(--text-ds-h5--line-height);color:var(--ds-color-text)}.ds-collapsible-panel[data-closed] .ds-collapsible-panel-header-inner{transform:rotate(180deg);writing-mode:vertical-rl}.ds-collapsible-panel-content{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;overflow-y:auto}.ds-collapsible-panel-content[data-closed]{display:none}.ds-collapsible-panel-body{padding:var(--ds-content-padding);flex-grow:1;transition:opacity .2s ease-in-out}.ds-collapsible-panel-body[data-starting],.ds-collapsible-panel-body[data-ending]{opacity:0}}
@@ -0,0 +1,22 @@
1
+ import s from "antd/es/theme";
2
+ import r from "antd/es/grid";
3
+ import o from "antd/es/app/useApp";
4
+ import { default as d } from "antd/es/app/useApp";
5
+ import { useForm as l, useWatch as x } from "antd/es/form/Form";
6
+ const n = s.useToken, p = r.useBreakpoint, a = () => {
7
+ const { message: e } = o();
8
+ return e;
9
+ }, c = () => {
10
+ const { modal: e } = o();
11
+ return e;
12
+ };
13
+ export {
14
+ d as useApp,
15
+ p as useBreakpoint,
16
+ l as useForm,
17
+ a as useMessage,
18
+ c as useModal,
19
+ n as useToken,
20
+ x as useWatch
21
+ };
22
+ //# sourceMappingURL=antd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antd.js","sources":["../../../src/components/hooks/antd.ts"],"sourcesContent":["\"use client\";\nimport theme from \"antd/es/theme\";\nimport Grid from \"antd/es/grid\";\nimport useApp from \"antd/es/app/useApp\";\n\nexport const useToken = theme.useToken;\nexport const useBreakpoint = Grid.useBreakpoint;\n\nexport { useForm, useWatch } from \"antd/es/form/Form\";\n\nexport const useMessage = () => {\n const { message } = useApp();\n return message;\n};\n\nexport const useModal = () => {\n const { modal } = useApp();\n return modal;\n};\n\nexport { useApp };\n"],"names":["useToken","theme","useBreakpoint","Grid","useMessage","message","useApp","useModal","modal"],"mappings":";;;;;AAKO,MAAMA,IAAWC,EAAM,UACjBC,IAAgBC,EAAK,eAIrBC,IAAa,MAAM;AACxB,QAAA,EAAE,SAAAC,EAAQ,IAAIC,EAAO;AACpB,SAAAD;AACT,GAEaE,IAAW,MAAM;AACtB,QAAA,EAAE,OAAAC,EAAM,IAAIF,EAAO;AAClB,SAAAE;AACT;"}
@@ -0,0 +1,47 @@
1
+ import { useLayoutEffect as d, useEffect as a, useRef as i, useCallback as p } from "react";
2
+ import { flushSync as h } from "react-dom";
3
+ const m = typeof window < "u" ? d : a;
4
+ function f(t) {
5
+ const e = i(t);
6
+ return m(() => {
7
+ e.current = t;
8
+ }), p(
9
+ (...r) => {
10
+ var n;
11
+ return (n = e.current) == null ? void 0 : n.call(e, ...r);
12
+ },
13
+ []
14
+ );
15
+ }
16
+ function y(t) {
17
+ const e = i(t);
18
+ return m(() => {
19
+ e.current = t;
20
+ }), e;
21
+ }
22
+ function E(t, e = !1) {
23
+ const r = i(-1), n = i(-1), u = f(() => {
24
+ cancelAnimationFrame(r.current), clearTimeout(n.current);
25
+ });
26
+ return a(() => u, [u]), f((o) => {
27
+ u();
28
+ const c = t.current;
29
+ c && (typeof c.getAnimations != "function" ? o() : r.current = requestAnimationFrame(() => {
30
+ function s() {
31
+ c && Promise.allSettled(
32
+ c.getAnimations().map((l) => l.finished)
33
+ ).then(() => {
34
+ h(o);
35
+ });
36
+ }
37
+ e ? n.current = window.setTimeout(s) : s();
38
+ }));
39
+ });
40
+ }
41
+ export {
42
+ E as useAnimationsFinished,
43
+ m as useEnhancedEffect,
44
+ f as useEventCallback,
45
+ y as useLatestRef
46
+ };
47
+ //# sourceMappingURL=base-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-ui.js","sources":["../../../src/components/hooks/base-ui.ts"],"sourcesContent":["\"use client\";\nimport { useLayoutEffect, useEffect, useRef, useCallback } from \"react\";\nimport { flushSync } from \"react-dom\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyFunction = (...args: any[]) => any;\n\nexport const useEnhancedEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport function useEventCallback<Fn extends AnyFunction>(fn?: Fn) {\n const ref = useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return useCallback<AnyFunction>(\n (...args) => ref.current?.(...args),\n []\n ) as Fn;\n}\n\nexport function useLatestRef<T>(value: T) {\n const ref = useRef(value);\n useEnhancedEffect(() => {\n ref.current = value;\n });\n return ref;\n}\n\nexport function useAnimationsFinished(\n ref: React.RefObject<HTMLElement | null>,\n waitForNextTick = false\n) {\n const frameRef = useRef(-1);\n const timeoutRef = useRef(-1);\n\n const cancelTasks = useEventCallback(() => {\n cancelAnimationFrame(frameRef.current);\n clearTimeout(timeoutRef.current);\n });\n\n useEffect(() => cancelTasks, [cancelTasks]);\n\n return useEventCallback((fnToExecute: () => void) => {\n cancelTasks();\n\n const element = ref.current;\n\n if (!element) {\n return;\n }\n\n if (typeof element.getAnimations !== \"function\") {\n fnToExecute();\n } else {\n frameRef.current = requestAnimationFrame(() => {\n function exec() {\n if (!element) {\n return;\n }\n\n Promise.allSettled(\n element.getAnimations().map((anim) => anim.finished)\n ).then(() => {\n // Synchronously flush the unmounting of the component so that the browser doesn't\n // paint: https://github.com/mui/base-ui/issues/979\n flushSync(fnToExecute);\n });\n }\n\n // `open: true` animations need to wait for the next tick to be detected\n if (waitForNextTick) {\n timeoutRef.current = window.setTimeout(exec);\n } else {\n exec();\n }\n });\n }\n });\n}\n"],"names":["useEnhancedEffect","useLayoutEffect","useEffect","useEventCallback","fn","ref","useRef","useCallback","args","_a","useLatestRef","value","useAnimationsFinished","waitForNextTick","frameRef","timeoutRef","cancelTasks","fnToExecute","element","exec","anim","flushSync"],"mappings":";;AAOO,MAAMA,IACX,OAAO,SAAW,MAAcC,IAAkBC;AAE7C,SAASC,EAAyCC,GAAS;AAC1D,QAAAC,IAAMC,EAAOF,CAAE;AACrB,SAAAJ,EAAkB,MAAM;AACtB,IAAAK,EAAI,UAAUD;AAAA,EAAA,CACf,GACMG;AAAA,IACL,IAAIC,MAAS;;AAAA,cAAAC,IAAAJ,EAAI,YAAJ,gBAAAI,EAAA,KAAAJ,GAAc,GAAGG;AAAA;AAAA,IAC9B,CAAA;AAAA,EACF;AACF;AAEO,SAASE,EAAgBC,GAAU;AAClC,QAAAN,IAAMC,EAAOK,CAAK;AACxB,SAAAX,EAAkB,MAAM;AACtB,IAAAK,EAAI,UAAUM;AAAA,EAAA,CACf,GACMN;AACT;AAEgB,SAAAO,EACdP,GACAQ,IAAkB,IAClB;AACM,QAAAC,IAAWR,EAAO,EAAE,GACpBS,IAAaT,EAAO,EAAE,GAEtBU,IAAcb,EAAiB,MAAM;AACzC,yBAAqBW,EAAS,OAAO,GACrC,aAAaC,EAAW,OAAO;AAAA,EAAA,CAChC;AAED,SAAAb,EAAU,MAAMc,GAAa,CAACA,CAAW,CAAC,GAEnCb,EAAiB,CAACc,MAA4B;AACvC,IAAAD,EAAA;AAEZ,UAAME,IAAUb,EAAI;AAEpB,IAAKa,MAID,OAAOA,EAAQ,iBAAkB,aACvBD,EAAA,IAEHH,EAAA,UAAU,sBAAsB,MAAM;AAC7C,eAASK,IAAO;AACd,QAAKD,KAIG,QAAA;AAAA,UACNA,EAAQ,cAAc,EAAE,IAAI,CAACE,MAASA,EAAK,QAAQ;AAAA,QACrD,EAAE,KAAK,MAAM;AAGX,UAAAC,EAAUJ,CAAW;AAAA,QAAA,CACtB;AAAA,MAAA;AAIH,MAAIJ,IACSE,EAAA,UAAU,OAAO,WAAWI,CAAI,IAEtCA,EAAA;AAAA,IACP,CACD;AAAA,EACH,CACD;AACH;"}
@@ -0,0 +1,28 @@
1
+ import { useDS as l } from "../DSRoot/context.js";
2
+ import { getTokensByTheme as n, getColorsByTheme as a } from "../../tokens/utils.js";
3
+ import { categoricalChartColorTokens as c } from "../../tokens/charts/index.js";
4
+ import { chartColorTokens as C } from "../../tokens/charts/tokens.js";
5
+ const p = () => {
6
+ const { theme: r } = l(), o = n(C, r), e = o.colorChartsLineAxis, t = o.colorChartsLineGrid, s = o.colorChartsLabelAxis, i = a(
7
+ c,
8
+ r
9
+ );
10
+ return {
11
+ axisLineColor: e,
12
+ splitLineColor: t,
13
+ axisLabelColor: s,
14
+ categoricalColors: i,
15
+ echartsAxisConfig: {
16
+ axisLine: { lineStyle: { color: e } },
17
+ splitLine: { lineStyle: { color: t } },
18
+ axisLabel: {
19
+ color: s,
20
+ fontFamily: "InterVariable, Inter, Helvetica, Arial, sans-serif"
21
+ }
22
+ }
23
+ };
24
+ };
25
+ export {
26
+ p as useCharts
27
+ };
28
+ //# sourceMappingURL=useCharts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCharts.js","sources":["../../../src/components/hooks/useCharts.ts"],"sourcesContent":["import { useDS } from \"../DSRoot/context\";\nimport { getColorsByTheme, getTokensByTheme } from \"../../tokens/utils\";\nimport {\n chartColorTokens,\n categoricalChartColorTokens,\n} from \"../../tokens/charts\";\n\nexport const useCharts = () => {\n const { theme } = useDS();\n const themedChartColorTokens = getTokensByTheme(chartColorTokens, theme);\n const axisLineColor = themedChartColorTokens[\"colorChartsLineAxis\"];\n const splitLineColor = themedChartColorTokens[\"colorChartsLineGrid\"];\n const axisLabelColor = themedChartColorTokens[\"colorChartsLabelAxis\"];\n const categoricalColors = getColorsByTheme(\n categoricalChartColorTokens,\n theme\n );\n const echartsAxisConfig = {\n axisLine: { lineStyle: { color: axisLineColor } },\n splitLine: { lineStyle: { color: splitLineColor } },\n axisLabel: {\n color: axisLabelColor,\n fontFamily: \"InterVariable, Inter, Helvetica, Arial, sans-serif\",\n },\n };\n\n return {\n axisLineColor,\n splitLineColor,\n axisLabelColor,\n categoricalColors,\n echartsAxisConfig,\n };\n};\n"],"names":["useCharts","theme","useDS","themedChartColorTokens","getTokensByTheme","chartColorTokens","axisLineColor","splitLineColor","axisLabelColor","categoricalColors","getColorsByTheme","categoricalChartColorTokens"],"mappings":";;;;AAOO,MAAMA,IAAY,MAAM;AACvB,QAAA,EAAE,OAAAC,EAAM,IAAIC,EAAM,GAClBC,IAAyBC,EAAiBC,GAAkBJ,CAAK,GACjEK,IAAgBH,EAAuB,qBACvCI,IAAiBJ,EAAuB,qBACxCK,IAAiBL,EAAuB,sBACxCM,IAAoBC;AAAA,IACxBC;AAAA,IACAV;AAAA,EACF;AAUO,SAAA;AAAA,IACL,eAAAK;AAAA,IACA,gBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAdwB;AAAA,MACxB,UAAU,EAAE,WAAW,EAAE,OAAOH,IAAgB;AAAA,MAChD,WAAW,EAAE,WAAW,EAAE,OAAOC,IAAiB;AAAA,MAClD,WAAW;AAAA,QACT,OAAOC;AAAA,QACP,YAAY;AAAA,MAAA;AAAA,IAEhB;AAAA,EAQA;AACF;"}
@@ -0,0 +1,15 @@
1
+ import { useState as a, useCallback as l } from "react";
2
+ function S(t, o, s) {
3
+ const [f, c] = a(s), n = typeof t < "u", i = l(
4
+ (e) => {
5
+ const r = typeof e == "function" ? e(t) : e;
6
+ typeof o == "function" && o(r), n || c(e);
7
+ },
8
+ [t, o, n]
9
+ );
10
+ return [n ? t : f, i];
11
+ }
12
+ export {
13
+ S as useControlledState
14
+ };
15
+ //# sourceMappingURL=useControlledState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useControlledState.js","sources":["../../../src/components/hooks/useControlledState.ts"],"sourcesContent":["\"use client\";\nimport { useCallback, useState } from \"react\";\n\n// Ref:\n// https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/utils/src/useControlledState.ts\n// https://github.com/chakra-ui/chakra-ui/tree/main/packages/hooks/use-controllable-state\n\nexport function useControlledState<T>(\n value: T | undefined,\n onChange: ((value: T, ...args: any[]) => void) | undefined,\n defaultValue: T | undefined\n) {\n const [internalState, setInternalState] = useState(defaultValue);\n\n const isControlled = typeof value !== \"undefined\";\n\n const setState = useCallback(\n (next: T) => {\n const nextValue = typeof next === \"function\" ? next(value) : next;\n if (typeof onChange === \"function\") onChange(nextValue);\n if (!isControlled) setInternalState(next);\n },\n [value, onChange, isControlled]\n );\n\n const state = isControlled ? value : internalState;\n\n return [state, setState] as [T, React.Dispatch<React.SetStateAction<T>>];\n}\n"],"names":["useControlledState","value","onChange","defaultValue","internalState","setInternalState","useState","isControlled","setState","useCallback","next","nextValue"],"mappings":";AAOgB,SAAAA,EACdC,GACAC,GACAC,GACA;AACA,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAASH,CAAY,GAEzDI,IAAe,OAAON,IAAU,KAEhCO,IAAWC;AAAA,IACf,CAACC,MAAY;AACX,YAAMC,IAAY,OAAOD,KAAS,aAAaA,EAAKT,CAAK,IAAIS;AAC7D,MAAI,OAAOR,KAAa,cAAYA,EAASS,CAAS,GACjDJ,KAAcF,EAAiBK,CAAI;AAAA,IAC1C;AAAA,IACA,CAACT,GAAOC,GAAUK,CAAY;AAAA,EAChC;AAIO,SAAA,CAFOA,IAAeN,IAAQG,GAEtBI,CAAQ;AACzB;"}
@@ -0,0 +1,24 @@
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ import { useRender as a } from "@base-ui-components/react";
3
+ import { useAntdCssVarClassname as c } from "./antdUtils.js";
4
+ import { clsx as d } from "./cn.js";
5
+ const x = ({
6
+ as: r = "div",
7
+ ref: s,
8
+ className: e,
9
+ ...o
10
+ }) => {
11
+ const n = r, t = c(), { renderElement: m } = a({
12
+ render: /* @__PURE__ */ p(n, {}),
13
+ refs: [s],
14
+ props: {
15
+ ...o,
16
+ className: d(e, t)
17
+ }
18
+ });
19
+ return m();
20
+ };
21
+ export {
22
+ x as WithAntdTokens
23
+ };
24
+ //# sourceMappingURL=WithAntdTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithAntdTokens.js","sources":["../../../src/components/utils/WithAntdTokens.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRender } from \"@base-ui-components/react\";\nimport type {\n ElementType,\n JSX,\n ComponentProps,\n JSXElementConstructor,\n} from \"react\";\nimport { useAntdCssVarClassname } from \"./antdUtils\";\nimport { clsx } from \"./cn\";\n\ntype IntrinsicElement =\n | keyof JSX.IntrinsicElements\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | JSXElementConstructor<any>;\n\nexport type WidthAntdTokensProps<T extends IntrinsicElement> = {\n as?: IntrinsicElement;\n} & ComponentProps<T>;\n\nexport const WithAntdTokens = <T extends IntrinsicElement = \"div\">({\n as: Tag = \"div\",\n ref,\n className,\n ...rest\n}: WidthAntdTokensProps<T>) => {\n const Component = Tag as ElementType;\n const cssVar = useAntdCssVarClassname();\n const { renderElement } = useRender({\n render: <Component />,\n refs: [ref],\n props: {\n ...rest,\n className: clsx(className, cssVar),\n },\n });\n return renderElement();\n};\n"],"names":["WithAntdTokens","Tag","ref","className","rest","Component","cssVar","useAntdCssVarClassname","renderElement","useRender","clsx"],"mappings":";;;;AAqBO,MAAMA,IAAiB,CAAqC;AAAA,EACjE,IAAIC,IAAM;AAAA,EACV,KAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MAA+B;AAC7B,QAAMC,IAAYJ,GACZK,IAASC,EAAuB,GAChC,EAAE,eAAAC,EAAc,IAAIC,EAAU;AAAA,IAClC,0BAASJ,GAAU,EAAA;AAAA,IACnB,MAAM,CAACH,CAAG;AAAA,IACV,OAAO;AAAA,MACL,GAAGE;AAAA,MACH,WAAWM,EAAKP,GAAWG,CAAM;AAAA,IAAA;AAAA,EACnC,CACD;AACD,SAAOE,EAAc;AACvB;"}
@@ -0,0 +1,58 @@
1
+ import n from "antd/es/config-provider";
2
+ import a from "antd/es/theme/useToken";
3
+ import { useContext as i } from "react";
4
+ import { cx as c } from "./cn.js";
5
+ const C = () => {
6
+ const { getPrefixCls: o } = i(n.ConfigContext);
7
+ return { getPrefixCls: o };
8
+ }, g = () => {
9
+ var t;
10
+ return (t = a()[4]) == null ? void 0 : t.key;
11
+ }, b = () => {
12
+ const { getPrefixCls: o } = i(n.ConfigContext);
13
+ return (...t) => c(...t).map((e) => o(e)).join(" ");
14
+ };
15
+ function f(o) {
16
+ const t = [];
17
+ let e = "";
18
+ for (const r of o)
19
+ r >= "A" && r <= "Z" ? (e && t.push(e), e = r.toLowerCase()) : e += r;
20
+ return e && t.push(e), t.length > 0 ? t : [o];
21
+ }
22
+ const h = (o = "bottomLeft") => {
23
+ const [t, e] = f(o);
24
+ let r, s = "center";
25
+ if (t === "top" || t === "bottom") {
26
+ if (r = t, e)
27
+ switch (e) {
28
+ case "left":
29
+ s = "start";
30
+ break;
31
+ case "right":
32
+ s = "end";
33
+ break;
34
+ }
35
+ } else if (t === "left" || t === "right") {
36
+ if (r = t, e)
37
+ switch (e) {
38
+ case "top":
39
+ s = "start";
40
+ break;
41
+ case "bottom":
42
+ s = "end";
43
+ break;
44
+ }
45
+ } else
46
+ r = "bottom";
47
+ return {
48
+ placement: r,
49
+ align: s
50
+ };
51
+ };
52
+ export {
53
+ h as parseAntdPlacement,
54
+ g as useAntdCssVarClassname,
55
+ b as useCls,
56
+ C as useGetPrefixCls
57
+ };
58
+ //# sourceMappingURL=antdUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antdUtils.js","sources":["../../../src/components/utils/antdUtils.ts"],"sourcesContent":["\"use client\";\nimport { default as ConfigProvider } from \"antd/es/config-provider\";\nimport useToken from \"antd/es/theme/useToken\";\nimport { useContext } from \"react\";\nimport type { ClassValue } from \"./types\";\nimport { cx } from \"./cn\";\nimport { PopoverProps } from \"antd/es/popover\";\n\nexport const useGetPrefixCls = () => {\n const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);\n return { getPrefixCls };\n};\n\n/**\n *\n * @returns the antd classname providing css variables\n */\nexport const useAntdCssVarClassname = () => {\n const token = useToken();\n return token[4]?.key;\n};\n\nexport const useCls = () => {\n const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);\n return (...args: ClassValue[]) => {\n return cx(...args)\n .map((cls) => getPrefixCls(cls))\n .join(\" \");\n };\n};\n\nfunction splitCamelCase(text: string): string[] {\n const result: string[] = [];\n let currentWord = \"\";\n\n for (const char of text) {\n if (char >= \"A\" && char <= \"Z\") {\n if (currentWord) {\n result.push(currentWord);\n }\n currentWord = char.toLowerCase();\n } else {\n currentWord += char;\n }\n }\n\n if (currentWord) {\n result.push(currentWord);\n }\n\n return result.length > 0 ? result : [text];\n}\n\nexport const parseAntdPlacement = (\n placement: PopoverProps[\"placement\"] = \"bottomLeft\"\n): {\n placement: \"top\" | \"bottom\" | \"left\" | \"right\";\n align: \"start\" | \"end\" | \"center\";\n} => {\n const [position1, position2] = splitCamelCase(placement);\n\n // Determine primary placement\n let primaryPlacement: \"top\" | \"bottom\" | \"left\" | \"right\";\n let align: \"start\" | \"end\" | \"center\" = \"center\";\n\n // First check if it's a vertical or horizontal primary placement\n if (position1 === \"top\" || position1 === \"bottom\") {\n primaryPlacement = position1;\n if (position2) {\n switch (position2) {\n case \"left\":\n align = \"start\";\n break;\n case \"right\":\n align = \"end\";\n break;\n // \"top\" or \"bottom\" as second position is invalid, defaults to center\n }\n }\n } else if (position1 === \"left\" || position1 === \"right\") {\n primaryPlacement = position1;\n if (position2) {\n switch (position2) {\n case \"top\":\n align = \"start\";\n break;\n case \"bottom\":\n align = \"end\";\n break;\n // \"left\" or \"right\" as second position is invalid, defaults to center\n }\n }\n } else {\n // Fallback for invalid placement\n primaryPlacement = \"bottom\";\n }\n\n return {\n placement: primaryPlacement,\n align,\n };\n};\n"],"names":["useGetPrefixCls","getPrefixCls","useContext","ConfigProvider","useAntdCssVarClassname","_a","useToken","useCls","args","cx","cls","splitCamelCase","text","result","currentWord","char","parseAntdPlacement","placement","position1","position2","primaryPlacement","align"],"mappings":";;;;AAQO,MAAMA,IAAkB,MAAM;AACnC,QAAM,EAAE,cAAAC,EAAiB,IAAAC,EAAWC,EAAe,aAAa;AAChE,SAAO,EAAE,cAAAF,EAAa;AACxB,GAMaG,IAAyB,MAAM;;AAEnC,UAAAC,IADOC,EAAS,EACV,CAAC,MAAP,gBAAAD,EAAU;AACnB,GAEaE,IAAS,MAAM;AAC1B,QAAM,EAAE,cAAAN,EAAiB,IAAAC,EAAWC,EAAe,aAAa;AAChE,SAAO,IAAIK,MACFC,EAAG,GAAGD,CAAI,EACd,IAAI,CAACE,MAAQT,EAAaS,CAAG,CAAC,EAC9B,KAAK,GAAG;AAEf;AAEA,SAASC,EAAeC,GAAwB;AAC9C,QAAMC,IAAmB,CAAC;AAC1B,MAAIC,IAAc;AAElB,aAAWC,KAAQH;AACb,IAAAG,KAAQ,OAAOA,KAAQ,OACrBD,KACFD,EAAO,KAAKC,CAAW,GAEzBA,IAAcC,EAAK,YAAY,KAEhBD,KAAAC;AAInB,SAAID,KACFD,EAAO,KAAKC,CAAW,GAGlBD,EAAO,SAAS,IAAIA,IAAS,CAACD,CAAI;AAC3C;AAEa,MAAAI,IAAqB,CAChCC,IAAuC,iBAIpC;AACH,QAAM,CAACC,GAAWC,CAAS,IAAIR,EAAeM,CAAS;AAGnD,MAAAG,GACAC,IAAoC;AAGpC,MAAAH,MAAc,SAASA,MAAc;AAEvC,QADmBE,IAAAF,GACfC;AACF,cAAQA,GAAW;AAAA,QACjB,KAAK;AACK,UAAAE,IAAA;AACR;AAAA,QACF,KAAK;AACK,UAAAA,IAAA;AACR;AAAA,MAAA;AAAA,aAIGH,MAAc,UAAUA,MAAc;AAE/C,QADmBE,IAAAF,GACfC;AACF,cAAQA,GAAW;AAAA,QACjB,KAAK;AACK,UAAAE,IAAA;AACR;AAAA,QACF,KAAK;AACK,UAAAA,IAAA;AACR;AAAA,MAAA;AAAA;AAMa,IAAAD,IAAA;AAGd,SAAA;AAAA,IACL,WAAWA;AAAA,IACX,OAAAC;AAAA,EACF;AACF;"}