@bioturing/components 0.32.0 → 0.32.1

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 (507) hide show
  1. package/dist/components/badge/component.d.ts +7 -0
  2. package/dist/components/badge/component.d.ts.map +1 -0
  3. package/dist/components/badge/component.js.map +1 -1
  4. package/dist/components/badge/index.d.ts +2 -0
  5. package/dist/components/badge/index.d.ts.map +1 -0
  6. package/dist/components/breadcrumb/component.d.ts +6 -0
  7. package/dist/components/breadcrumb/component.d.ts.map +1 -0
  8. package/dist/components/breadcrumb/component.js.map +1 -1
  9. package/dist/components/breadcrumb/index.d.ts +3 -0
  10. package/dist/components/breadcrumb/index.d.ts.map +1 -0
  11. package/dist/components/breadcrumb/types.d.ts +19 -0
  12. package/dist/components/breadcrumb/types.d.ts.map +1 -0
  13. package/dist/components/breadcrumb/useItemRender.d.ts +7 -0
  14. package/dist/components/breadcrumb/useItemRender.d.ts.map +1 -0
  15. package/dist/components/breadcrumb/useItemRender.js.map +1 -1
  16. package/dist/components/button/component.d.ts +14 -0
  17. package/dist/components/button/component.d.ts.map +1 -0
  18. package/dist/components/button/component.js.map +1 -1
  19. package/dist/components/button/index.d.ts +2 -0
  20. package/dist/components/button/index.d.ts.map +1 -0
  21. package/dist/components/checkbox/component.d.ts +16 -0
  22. package/dist/components/checkbox/component.d.ts.map +1 -0
  23. package/dist/components/checkbox/component.js.map +1 -1
  24. package/dist/components/checkbox/index.d.ts +2 -0
  25. package/dist/components/checkbox/index.d.ts.map +1 -0
  26. package/dist/components/choice-list/component.d.ts +35 -0
  27. package/dist/components/choice-list/component.d.ts.map +1 -0
  28. package/dist/components/choice-list/component.js.map +1 -1
  29. package/dist/components/choice-list/index.d.ts +2 -0
  30. package/dist/components/choice-list/index.d.ts.map +1 -0
  31. package/dist/components/cmdk/command-score.d.ts +2 -0
  32. package/dist/components/cmdk/command-score.d.ts.map +1 -0
  33. package/dist/components/cmdk/command-score.js.map +1 -1
  34. package/dist/components/cmdk/index.d.ts +440 -0
  35. package/dist/components/cmdk/index.d.ts.map +1 -0
  36. package/dist/components/cmdk/index.js +332 -348
  37. package/dist/components/cmdk/index.js.map +1 -1
  38. package/dist/components/code-block/component.d.ts +3 -0
  39. package/dist/components/code-block/component.d.ts.map +1 -0
  40. package/dist/components/code-block/component.js +83 -84
  41. package/dist/components/code-block/component.js.map +1 -1
  42. package/dist/components/code-block/index.d.ts +3 -0
  43. package/dist/components/code-block/index.d.ts.map +1 -0
  44. package/dist/components/code-block/types.d.ts +64 -0
  45. package/dist/components/code-block/types.d.ts.map +1 -0
  46. package/dist/components/collapse/component.d.ts +14 -0
  47. package/dist/components/collapse/component.d.ts.map +1 -0
  48. package/dist/components/collapse/component.js.map +1 -1
  49. package/dist/components/collapse/index.d.ts +2 -0
  50. package/dist/components/collapse/index.d.ts.map +1 -0
  51. package/dist/components/color-select/component.d.ts +36 -0
  52. package/dist/components/color-select/component.d.ts.map +1 -0
  53. package/dist/components/color-select/component.js +28 -30
  54. package/dist/components/color-select/component.js.map +1 -1
  55. package/dist/components/color-select/index.d.ts +2 -0
  56. package/dist/components/color-select/index.d.ts.map +1 -0
  57. package/dist/components/combobox/component.d.ts +119 -0
  58. package/dist/components/combobox/component.d.ts.map +1 -0
  59. package/dist/components/combobox/component.js +129 -129
  60. package/dist/components/combobox/component.js.map +1 -1
  61. package/dist/components/combobox/index.d.ts +3 -0
  62. package/dist/components/combobox/index.d.ts.map +1 -0
  63. package/dist/components/command-palette/component.d.ts +41 -0
  64. package/dist/components/command-palette/component.d.ts.map +1 -0
  65. package/dist/components/command-palette/component.js +36 -36
  66. package/dist/components/command-palette/component.js.map +1 -1
  67. package/dist/components/command-palette/index.d.ts +2 -0
  68. package/dist/components/command-palette/index.d.ts.map +1 -0
  69. package/dist/components/command-palette/style.css +1 -1
  70. package/dist/components/drag-drop/context.d.ts +10 -0
  71. package/dist/components/drag-drop/context.d.ts.map +1 -0
  72. package/dist/components/drag-drop/context.js.map +1 -1
  73. package/dist/components/drag-drop/draggable.d.ts +6 -0
  74. package/dist/components/drag-drop/draggable.d.ts.map +1 -0
  75. package/dist/components/drag-drop/draggable.js.map +1 -1
  76. package/dist/components/drag-drop/droppable.d.ts +9 -0
  77. package/dist/components/drag-drop/droppable.d.ts.map +1 -0
  78. package/dist/components/drag-drop/droppable.js.map +1 -1
  79. package/dist/components/drag-drop/hooks.d.ts +42 -0
  80. package/dist/components/drag-drop/hooks.d.ts.map +1 -0
  81. package/dist/components/drag-drop/hooks.js +71 -73
  82. package/dist/components/drag-drop/hooks.js.map +1 -1
  83. package/dist/components/drag-drop/index.d.ts +26 -0
  84. package/dist/components/drag-drop/index.d.ts.map +1 -0
  85. package/dist/components/drag-drop/index.js.map +1 -1
  86. package/dist/components/drag-drop/types.d.ts +232 -0
  87. package/dist/components/drag-drop/types.d.ts.map +1 -0
  88. package/dist/components/drag-drop/value.d.ts +8 -0
  89. package/dist/components/drag-drop/value.d.ts.map +1 -0
  90. package/dist/components/drag-drop/value.js +66 -66
  91. package/dist/components/drag-drop/value.js.map +1 -1
  92. package/dist/components/dropdown-menu/component.d.ts +79 -0
  93. package/dist/components/dropdown-menu/component.d.ts.map +1 -0
  94. package/dist/components/dropdown-menu/component.js +108 -108
  95. package/dist/components/dropdown-menu/component.js.map +1 -1
  96. package/dist/components/dropdown-menu/divider.d.ts +6 -0
  97. package/dist/components/dropdown-menu/divider.d.ts.map +1 -0
  98. package/dist/components/dropdown-menu/divider.js.map +1 -1
  99. package/dist/components/dropdown-menu/index.d.ts +4 -0
  100. package/dist/components/dropdown-menu/index.d.ts.map +1 -0
  101. package/dist/components/dropdown-menu/item.d.ts +56 -0
  102. package/dist/components/dropdown-menu/item.d.ts.map +1 -0
  103. package/dist/components/dropdown-menu/item.js +75 -78
  104. package/dist/components/dropdown-menu/item.js.map +1 -1
  105. package/dist/components/dropdown-menu/types.d.ts +88 -0
  106. package/dist/components/dropdown-menu/types.d.ts.map +1 -0
  107. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +58 -0
  108. package/dist/components/dropdown-menu/useDropdownMenu.d.ts.map +1 -0
  109. package/dist/components/dropdown-menu/useDropdownMenu.js +80 -80
  110. package/dist/components/dropdown-menu/useDropdownMenu.js.map +1 -1
  111. package/dist/components/ds-root/component.d.ts +14 -0
  112. package/dist/components/ds-root/component.d.ts.map +1 -0
  113. package/dist/components/ds-root/component.js.map +1 -1
  114. package/dist/components/ds-root/context.d.ts +8 -0
  115. package/dist/components/ds-root/context.d.ts.map +1 -0
  116. package/dist/components/ds-root/index.d.ts +3 -0
  117. package/dist/components/ds-root/index.d.ts.map +1 -0
  118. package/dist/components/empty/component.d.ts +13 -0
  119. package/dist/components/empty/component.d.ts.map +1 -0
  120. package/dist/components/empty/component.js.map +1 -1
  121. package/dist/components/empty/index.d.ts +2 -0
  122. package/dist/components/empty/index.d.ts.map +1 -0
  123. package/dist/components/field/component.d.ts +42 -0
  124. package/dist/components/field/component.d.ts.map +1 -0
  125. package/dist/components/field/component.js.map +1 -1
  126. package/dist/components/field/index.d.ts +2 -0
  127. package/dist/components/field/index.d.ts.map +1 -0
  128. package/dist/components/form/component.d.ts +22 -0
  129. package/dist/components/form/component.d.ts.map +1 -0
  130. package/dist/components/form/component.js.map +1 -1
  131. package/dist/components/form/index.d.ts +2 -0
  132. package/dist/components/form/index.d.ts.map +1 -0
  133. package/dist/components/form/item.d.ts +24 -0
  134. package/dist/components/form/item.d.ts.map +1 -0
  135. package/dist/components/form/item.js +24 -24
  136. package/dist/components/form/item.js.map +1 -1
  137. package/dist/components/form/label.d.ts +32 -0
  138. package/dist/components/form/label.d.ts.map +1 -0
  139. package/dist/components/form/label.js.map +1 -1
  140. package/dist/components/hooks/antd.d.ts +11 -0
  141. package/dist/components/hooks/antd.d.ts.map +1 -0
  142. package/dist/components/hooks/antd.js.map +1 -1
  143. package/dist/components/hooks/base-ui.d.ts +11 -0
  144. package/dist/components/hooks/base-ui.d.ts.map +1 -0
  145. package/dist/components/hooks/base-ui.js +22 -25
  146. package/dist/components/hooks/base-ui.js.map +1 -1
  147. package/dist/components/hooks/index.d.ts +11 -0
  148. package/dist/components/hooks/index.d.ts.map +1 -0
  149. package/dist/components/hooks/useBreakpoint.d.ts +39 -0
  150. package/dist/components/hooks/useBreakpoint.d.ts.map +1 -0
  151. package/dist/components/hooks/useBreakpoint.js +14 -15
  152. package/dist/components/hooks/useBreakpoint.js.map +1 -1
  153. package/dist/components/hooks/useCSSVariables.d.ts +7 -0
  154. package/dist/components/hooks/useCSSVariables.d.ts.map +1 -0
  155. package/dist/components/hooks/useCSSVariables.js.map +1 -1
  156. package/dist/components/hooks/useCharts.d.ts +41 -0
  157. package/dist/components/hooks/useCharts.d.ts.map +1 -0
  158. package/dist/components/hooks/useCharts.js.map +1 -1
  159. package/dist/components/hooks/useControlledState.d.ts +13 -0
  160. package/dist/components/hooks/useControlledState.d.ts.map +1 -0
  161. package/dist/components/hooks/useControlledState.js.map +1 -1
  162. package/dist/components/hooks/useDraggable.d.ts +4 -0
  163. package/dist/components/hooks/useDraggable.d.ts.map +1 -0
  164. package/dist/components/hooks/useDraggable.js +19 -20
  165. package/dist/components/hooks/useDraggable.js.map +1 -1
  166. package/dist/components/hooks/useHover.d.ts +5 -0
  167. package/dist/components/hooks/useHover.d.ts.map +1 -0
  168. package/dist/components/hooks/useHover.js +16 -17
  169. package/dist/components/hooks/useHover.js.map +1 -1
  170. package/dist/components/hooks/useResizeObserver.d.ts +9 -0
  171. package/dist/components/hooks/useResizeObserver.d.ts.map +1 -0
  172. package/dist/components/hooks/useResizeObserver.js +29 -30
  173. package/dist/components/hooks/useResizeObserver.js.map +1 -1
  174. package/dist/components/hooks/useTransitionStatus.d.ts +13 -0
  175. package/dist/components/hooks/useTransitionStatus.d.ts.map +1 -0
  176. package/dist/components/hooks/useTransitionStatus.js.map +1 -1
  177. package/dist/components/hooks/useWindowSize.d.ts +5 -0
  178. package/dist/components/hooks/useWindowSize.d.ts.map +1 -0
  179. package/dist/components/hooks/useWindowSize.js.map +1 -1
  180. package/dist/components/icon-button/component.d.ts +45 -0
  181. package/dist/components/icon-button/component.d.ts.map +1 -0
  182. package/dist/components/icon-button/component.js.map +1 -1
  183. package/dist/components/icon-button/index.d.ts +2 -0
  184. package/dist/components/icon-button/index.d.ts.map +1 -0
  185. package/dist/components/index.d.ts +53 -0
  186. package/dist/components/index.d.ts.map +1 -0
  187. package/dist/components/input/component.d.ts +29 -0
  188. package/dist/components/input/component.d.ts.map +1 -0
  189. package/dist/components/input/component.js +46 -46
  190. package/dist/components/input/component.js.map +1 -1
  191. package/dist/components/input/index.d.ts +2 -0
  192. package/dist/components/input/index.d.ts.map +1 -0
  193. package/dist/components/keyboard-shortcut/component.d.ts +15 -0
  194. package/dist/components/keyboard-shortcut/component.d.ts.map +1 -0
  195. package/dist/components/keyboard-shortcut/component.js.map +1 -1
  196. package/dist/components/keyboard-shortcut/index.d.ts +2 -0
  197. package/dist/components/keyboard-shortcut/index.d.ts.map +1 -0
  198. package/dist/components/loader/component.d.ts +5 -0
  199. package/dist/components/loader/component.d.ts.map +1 -0
  200. package/dist/components/loader/component.js.map +1 -1
  201. package/dist/components/loader/index.d.ts +2 -0
  202. package/dist/components/loader/index.d.ts.map +1 -0
  203. package/dist/components/modal/Modal.d.ts +85 -0
  204. package/dist/components/modal/Modal.d.ts.map +1 -0
  205. package/dist/components/modal/Modal.js +75 -75
  206. package/dist/components/modal/Modal.js.map +1 -1
  207. package/dist/components/modal/ModalProvider.d.ts +6 -0
  208. package/dist/components/modal/ModalProvider.d.ts.map +1 -0
  209. package/dist/components/modal/ModalProvider.js +25 -25
  210. package/dist/components/modal/ModalProvider.js.map +1 -1
  211. package/dist/components/modal/ModalService.d.ts +34 -0
  212. package/dist/components/modal/ModalService.d.ts.map +1 -0
  213. package/dist/components/modal/ModalService.js +5 -10
  214. package/dist/components/modal/ModalService.js.map +1 -1
  215. package/dist/components/modal/constants.d.ts +10 -0
  216. package/dist/components/modal/constants.d.ts.map +1 -0
  217. package/dist/components/modal/constants.js.map +1 -1
  218. package/dist/components/modal/functions.d.ts +28 -0
  219. package/dist/components/modal/functions.d.ts.map +1 -0
  220. package/dist/components/modal/functions.js.map +1 -1
  221. package/dist/components/modal/index.d.ts +16 -0
  222. package/dist/components/modal/index.d.ts.map +1 -0
  223. package/dist/components/modal/index.js.map +1 -1
  224. package/dist/components/nav/context.d.ts +10 -0
  225. package/dist/components/nav/context.d.ts.map +1 -0
  226. package/dist/components/nav/context.js.map +1 -1
  227. package/dist/components/nav/group.d.ts +15 -0
  228. package/dist/components/nav/group.d.ts.map +1 -0
  229. package/dist/components/nav/group.js.map +1 -1
  230. package/dist/components/nav/heading.d.ts +6 -0
  231. package/dist/components/nav/heading.d.ts.map +1 -0
  232. package/dist/components/nav/heading.js.map +1 -1
  233. package/dist/components/nav/index.d.ts +12 -0
  234. package/dist/components/nav/index.d.ts.map +1 -0
  235. package/dist/components/nav/item.d.ts +35 -0
  236. package/dist/components/nav/item.d.ts.map +1 -0
  237. package/dist/components/nav/item.js.map +1 -1
  238. package/dist/components/popover/component.d.ts +10 -0
  239. package/dist/components/popover/component.d.ts.map +1 -0
  240. package/dist/components/popover/component.js.map +1 -1
  241. package/dist/components/popover/index.d.ts +2 -0
  242. package/dist/components/popover/index.d.ts.map +1 -0
  243. package/dist/components/popup-panel/component.d.ts +100 -0
  244. package/dist/components/popup-panel/component.d.ts.map +1 -0
  245. package/dist/components/popup-panel/component.js +105 -105
  246. package/dist/components/popup-panel/component.js.map +1 -1
  247. package/dist/components/popup-panel/constants.d.ts +8 -0
  248. package/dist/components/popup-panel/constants.d.ts.map +1 -0
  249. package/dist/components/popup-panel/constants.js.map +1 -1
  250. package/dist/components/popup-panel/index.d.ts +2 -0
  251. package/dist/components/popup-panel/index.d.ts.map +1 -0
  252. package/dist/components/radio/component.d.ts +8 -0
  253. package/dist/components/radio/component.d.ts.map +1 -0
  254. package/dist/components/radio/component.js.map +1 -1
  255. package/dist/components/radio/index.d.ts +3 -0
  256. package/dist/components/radio/index.d.ts.map +1 -0
  257. package/dist/components/radio/interface.d.ts +6 -0
  258. package/dist/components/radio/interface.d.ts.map +1 -0
  259. package/dist/components/resizable/component.d.ts +70 -0
  260. package/dist/components/resizable/component.d.ts.map +1 -0
  261. package/dist/components/resizable/component.js +147 -147
  262. package/dist/components/resizable/component.js.map +1 -1
  263. package/dist/components/resizable/index.d.ts +3 -0
  264. package/dist/components/resizable/index.d.ts.map +1 -0
  265. package/dist/components/scroll-area/component.d.ts +67 -0
  266. package/dist/components/scroll-area/component.d.ts.map +1 -0
  267. package/dist/components/scroll-area/component.js +69 -69
  268. package/dist/components/scroll-area/component.js.map +1 -1
  269. package/dist/components/scroll-area/index.d.ts +2 -0
  270. package/dist/components/scroll-area/index.d.ts.map +1 -0
  271. package/dist/components/segmented/component.d.ts +10 -0
  272. package/dist/components/segmented/component.d.ts.map +1 -0
  273. package/dist/components/segmented/component.js.map +1 -1
  274. package/dist/components/segmented/index.d.ts +2 -0
  275. package/dist/components/segmented/index.d.ts.map +1 -0
  276. package/dist/components/select/component.d.ts +48 -0
  277. package/dist/components/select/component.d.ts.map +1 -0
  278. package/dist/components/select/component.js +93 -94
  279. package/dist/components/select/component.js.map +1 -1
  280. package/dist/components/select/index.d.ts +2 -0
  281. package/dist/components/select/index.d.ts.map +1 -0
  282. package/dist/components/select/item.d.ts +14 -0
  283. package/dist/components/select/item.d.ts.map +1 -0
  284. package/dist/components/select/item.js.map +1 -1
  285. package/dist/components/select-trigger/component.d.ts +45 -0
  286. package/dist/components/select-trigger/component.d.ts.map +1 -0
  287. package/dist/components/select-trigger/component.js +96 -96
  288. package/dist/components/select-trigger/component.js.map +1 -1
  289. package/dist/components/select-trigger/index.d.ts +3 -0
  290. package/dist/components/select-trigger/index.d.ts.map +1 -0
  291. package/dist/components/slider/component.d.ts +6 -0
  292. package/dist/components/slider/component.d.ts.map +1 -0
  293. package/dist/components/slider/component.js.map +1 -1
  294. package/dist/components/slider/index.d.ts +2 -0
  295. package/dist/components/slider/index.d.ts.map +1 -0
  296. package/dist/components/spin/component.d.ts +6 -0
  297. package/dist/components/spin/component.d.ts.map +1 -0
  298. package/dist/components/spin/component.js.map +1 -1
  299. package/dist/components/spin/index.d.ts +2 -0
  300. package/dist/components/spin/index.d.ts.map +1 -0
  301. package/dist/components/splitter/component.d.ts +10 -0
  302. package/dist/components/splitter/component.d.ts.map +1 -0
  303. package/dist/components/splitter/component.js +7 -7
  304. package/dist/components/splitter/component.js.map +1 -1
  305. package/dist/components/splitter/context.d.ts +5 -0
  306. package/dist/components/splitter/context.d.ts.map +1 -0
  307. package/dist/components/splitter/context.js.map +1 -1
  308. package/dist/components/splitter/index.d.ts +2 -0
  309. package/dist/components/splitter/index.d.ts.map +1 -0
  310. package/dist/components/splitter/splitter-panel.d.ts +12 -0
  311. package/dist/components/splitter/splitter-panel.d.ts.map +1 -0
  312. package/dist/components/splitter/splitter-panel.js.map +1 -1
  313. package/dist/components/splitter/splitter.d.ts +11 -0
  314. package/dist/components/splitter/splitter.d.ts.map +1 -0
  315. package/dist/components/splitter/splitter.js +112 -112
  316. package/dist/components/splitter/splitter.js.map +1 -1
  317. package/dist/components/splitter/useSizes.d.ts +9 -0
  318. package/dist/components/splitter/useSizes.d.ts.map +1 -0
  319. package/dist/components/splitter/useSizes.js +35 -35
  320. package/dist/components/splitter/useSizes.js.map +1 -1
  321. package/dist/components/stack/Stack.d.ts +40 -0
  322. package/dist/components/stack/Stack.d.ts.map +1 -0
  323. package/dist/components/stack/Stack.js.map +1 -1
  324. package/dist/components/stack/StackChild.d.ts +31 -0
  325. package/dist/components/stack/StackChild.d.ts.map +1 -0
  326. package/dist/components/stack/StackChild.js.map +1 -1
  327. package/dist/components/stack/index.d.ts +8 -0
  328. package/dist/components/stack/index.d.ts.map +1 -0
  329. package/dist/components/stack/index.js.map +1 -1
  330. package/dist/components/status-icon/component.d.ts +23 -0
  331. package/dist/components/status-icon/component.d.ts.map +1 -0
  332. package/dist/components/status-icon/component.js.map +1 -1
  333. package/dist/components/status-icon/index.d.ts +2 -0
  334. package/dist/components/status-icon/index.d.ts.map +1 -0
  335. package/dist/components/switch/component.d.ts +9 -0
  336. package/dist/components/switch/component.d.ts.map +1 -0
  337. package/dist/components/switch/component.js.map +1 -1
  338. package/dist/components/switch/index.d.ts +2 -0
  339. package/dist/components/switch/index.d.ts.map +1 -0
  340. package/dist/components/table/component.d.ts +32 -0
  341. package/dist/components/table/component.d.ts.map +1 -0
  342. package/dist/components/table/component.js +57 -58
  343. package/dist/components/table/component.js.map +1 -1
  344. package/dist/components/table/index.d.ts +2 -0
  345. package/dist/components/table/index.d.ts.map +1 -0
  346. package/dist/components/tag/component.d.ts +22 -0
  347. package/dist/components/tag/component.d.ts.map +1 -0
  348. package/dist/components/tag/component.js.map +1 -1
  349. package/dist/components/tag/index.d.ts +2 -0
  350. package/dist/components/tag/index.d.ts.map +1 -0
  351. package/dist/components/theme-provider/component.d.ts +7 -0
  352. package/dist/components/theme-provider/component.d.ts.map +1 -0
  353. package/dist/components/theme-provider/component.js.map +1 -1
  354. package/dist/components/theme-provider/index.d.ts +2 -0
  355. package/dist/components/theme-provider/index.d.ts.map +1 -0
  356. package/dist/components/toast/component.d.ts +15 -0
  357. package/dist/components/toast/component.d.ts.map +1 -0
  358. package/dist/components/toast/component.js +49 -50
  359. package/dist/components/toast/component.js.map +1 -1
  360. package/dist/components/toast/function.d.ts +11 -0
  361. package/dist/components/toast/function.d.ts.map +1 -0
  362. package/dist/components/toast/function.js.map +1 -1
  363. package/dist/components/toast/index.d.ts +4 -0
  364. package/dist/components/toast/index.d.ts.map +1 -0
  365. package/dist/components/toast/types.d.ts +4 -0
  366. package/dist/components/toast/types.d.ts.map +1 -0
  367. package/dist/components/tooltip/component.d.ts +10 -0
  368. package/dist/components/tooltip/component.d.ts.map +1 -0
  369. package/dist/components/tooltip/component.js.map +1 -1
  370. package/dist/components/tooltip/index.d.ts +2 -0
  371. package/dist/components/tooltip/index.d.ts.map +1 -0
  372. package/dist/components/tour/component.d.ts +8 -0
  373. package/dist/components/tour/component.d.ts.map +1 -0
  374. package/dist/components/tour/component.js.map +1 -1
  375. package/dist/components/tour/index.d.ts +2 -0
  376. package/dist/components/tour/index.d.ts.map +1 -0
  377. package/dist/components/transition/component.d.ts +30 -0
  378. package/dist/components/transition/component.d.ts.map +1 -0
  379. package/dist/components/transition/component.js +32 -32
  380. package/dist/components/transition/component.js.map +1 -1
  381. package/dist/components/transition/index.d.ts +2 -0
  382. package/dist/components/transition/index.d.ts.map +1 -0
  383. package/dist/components/tree/components.d.ts +14 -0
  384. package/dist/components/tree/components.d.ts.map +1 -0
  385. package/dist/components/tree/components.js.map +1 -1
  386. package/dist/components/tree/helpers.d.ts +6 -0
  387. package/dist/components/tree/helpers.d.ts.map +1 -0
  388. package/dist/components/tree/helpers.js.map +1 -1
  389. package/dist/components/tree/index.d.ts +5 -0
  390. package/dist/components/tree/index.d.ts.map +1 -0
  391. package/dist/components/tree/types.d.ts +56 -0
  392. package/dist/components/tree/types.d.ts.map +1 -0
  393. package/dist/components/tree/useTreeCommon.d.ts +179 -0
  394. package/dist/components/tree/useTreeCommon.d.ts.map +1 -0
  395. package/dist/components/tree/useTreeCommon.js +29 -29
  396. package/dist/components/tree/useTreeCommon.js.map +1 -1
  397. package/dist/components/tree/useUniqueKeysTree.d.ts +34 -0
  398. package/dist/components/tree/useUniqueKeysTree.d.ts.map +1 -0
  399. package/dist/components/tree/useUniqueKeysTree.js.map +1 -1
  400. package/dist/components/truncate/component.d.ts +17 -0
  401. package/dist/components/truncate/component.d.ts.map +1 -0
  402. package/dist/components/truncate/component.js +38 -39
  403. package/dist/components/truncate/component.js.map +1 -1
  404. package/dist/components/truncate/helpers.d.ts +17 -0
  405. package/dist/components/truncate/helpers.d.ts.map +1 -0
  406. package/dist/components/truncate/helpers.js +27 -30
  407. package/dist/components/truncate/helpers.js.map +1 -1
  408. package/dist/components/truncate/index.d.ts +2 -0
  409. package/dist/components/truncate/index.d.ts.map +1 -0
  410. package/dist/components/upload/component.d.ts +17 -0
  411. package/dist/components/upload/component.d.ts.map +1 -0
  412. package/dist/components/upload/component.js.map +1 -1
  413. package/dist/components/upload/dragger.d.ts +14 -0
  414. package/dist/components/upload/dragger.d.ts.map +1 -0
  415. package/dist/components/upload/dragger.js.map +1 -1
  416. package/dist/components/upload/hooks.d.ts +6 -0
  417. package/dist/components/upload/hooks.d.ts.map +1 -0
  418. package/dist/components/upload/hooks.js.map +1 -1
  419. package/dist/components/upload/index.d.ts +4 -0
  420. package/dist/components/upload/index.d.ts.map +1 -0
  421. package/dist/components/upload/item.d.ts +12 -0
  422. package/dist/components/upload/item.d.ts.map +1 -0
  423. package/dist/components/upload/item.js.map +1 -1
  424. package/dist/components/upload/utils.d.ts +2 -0
  425. package/dist/components/upload/utils.d.ts.map +1 -0
  426. package/dist/components/upload/utils.js.map +1 -1
  427. package/dist/components/utils/WithAntdTokens.d.ts +8 -0
  428. package/dist/components/utils/WithAntdTokens.d.ts.map +1 -0
  429. package/dist/components/utils/WithAntdTokens.js.map +1 -1
  430. package/dist/components/utils/WithRenderProp.d.ts +14 -0
  431. package/dist/components/utils/WithRenderProp.d.ts.map +1 -0
  432. package/dist/components/utils/WithRenderProp.js.map +1 -1
  433. package/dist/components/utils/antdUtils.d.ts +11 -0
  434. package/dist/components/utils/antdUtils.d.ts.map +1 -0
  435. package/dist/components/utils/antdUtils.js +9 -12
  436. package/dist/components/utils/antdUtils.js.map +1 -1
  437. package/dist/components/utils/client.d.ts +6 -0
  438. package/dist/components/utils/client.d.ts.map +1 -0
  439. package/dist/components/utils/cn.d.ts +5 -0
  440. package/dist/components/utils/cn.d.ts.map +1 -0
  441. package/dist/components/utils/cn.js.map +1 -1
  442. package/dist/components/utils/colors.d.ts +2 -0
  443. package/dist/components/utils/colors.d.ts.map +1 -0
  444. package/dist/components/utils/constants.d.ts +15 -0
  445. package/dist/components/utils/constants.d.ts.map +1 -0
  446. package/dist/components/utils/index.d.ts +6 -0
  447. package/dist/components/utils/index.d.ts.map +1 -0
  448. package/dist/components/utils/isTracebackError.d.ts +2 -0
  449. package/dist/components/utils/isTracebackError.d.ts.map +1 -0
  450. package/dist/components/utils/isTracebackError.js.map +1 -1
  451. package/dist/components/utils/main.d.ts +7 -0
  452. package/dist/components/utils/main.d.ts.map +1 -0
  453. package/dist/components/utils/placement.d.ts +21 -0
  454. package/dist/components/utils/placement.d.ts.map +1 -0
  455. package/dist/components/utils/placement.js.map +1 -1
  456. package/dist/components/utils/reactElement.d.ts +2 -0
  457. package/dist/components/utils/reactElement.d.ts.map +1 -0
  458. package/dist/components/utils/reactToString.d.ts +3 -0
  459. package/dist/components/utils/reactToString.d.ts.map +1 -0
  460. package/dist/components/utils/reactToString.js.map +1 -1
  461. package/dist/components/utils/selectionRange.d.ts +2 -0
  462. package/dist/components/utils/selectionRange.d.ts.map +1 -0
  463. package/dist/components/utils/selectionRange.js.map +1 -1
  464. package/dist/components/utils/theme.d.ts +6 -0
  465. package/dist/components/utils/theme.d.ts.map +1 -0
  466. package/dist/components/utils/theme.js.map +1 -1
  467. package/dist/components/utils/types.d.ts +12 -0
  468. package/dist/components/utils/types.d.ts.map +1 -0
  469. package/dist/components/vertical-collapsible-panel/component.d.ts +65 -0
  470. package/dist/components/vertical-collapsible-panel/component.d.ts.map +1 -0
  471. package/dist/components/vertical-collapsible-panel/component.js.map +1 -1
  472. package/dist/components/vertical-collapsible-panel/index.d.ts +2 -0
  473. package/dist/components/vertical-collapsible-panel/index.d.ts.map +1 -0
  474. package/dist/index.d.ts +4 -4431
  475. package/dist/index.d.ts.map +1 -0
  476. package/dist/index.js +166 -164
  477. package/dist/index.js.map +1 -1
  478. package/dist/metadata.d.ts +446 -0
  479. package/dist/metadata.d.ts.map +1 -0
  480. package/dist/metadata.js.map +1 -1
  481. package/dist/tokens/and-theme/index.d.ts +2 -0
  482. package/dist/tokens/and-theme/index.d.ts.map +1 -0
  483. package/dist/tokens/and-theme/tokens.d.ts +6 -0
  484. package/dist/tokens/and-theme/tokens.d.ts.map +1 -0
  485. package/dist/tokens/and-theme/tokens.js.map +1 -1
  486. package/dist/tokens/charts/index.d.ts +5 -0
  487. package/dist/tokens/charts/index.d.ts.map +1 -0
  488. package/dist/tokens/charts/palettes/cloudscape.d.ts +460 -0
  489. package/dist/tokens/charts/palettes/cloudscape.d.ts.map +1 -0
  490. package/dist/tokens/charts/palettes/cloudscape.js.map +1 -1
  491. package/dist/tokens/charts/palettes/colorbrewer.d.ts +338 -0
  492. package/dist/tokens/charts/palettes/colorbrewer.d.ts.map +1 -0
  493. package/dist/tokens/charts/palettes/colorbrewer.js.map +1 -1
  494. package/dist/tokens/charts/palettes/index.d.ts +24 -0
  495. package/dist/tokens/charts/palettes/index.d.ts.map +1 -0
  496. package/dist/tokens/charts/palettes/index.js.map +1 -1
  497. package/dist/tokens/charts/palettes/tableau.d.ts +11 -0
  498. package/dist/tokens/charts/palettes/tableau.d.ts.map +1 -0
  499. package/dist/tokens/index.d.ts +5 -0
  500. package/dist/tokens/index.d.ts.map +1 -0
  501. package/dist/tokens/types.d.ts +10 -0
  502. package/dist/tokens/types.d.ts.map +1 -0
  503. package/dist/tokens/utils.d.ts +9 -0
  504. package/dist/tokens/utils.d.ts.map +1 -0
  505. package/dist/tokens/utils.js.map +1 -1
  506. package/package.json +1 -1
  507. package/dist/tailwind.d.ts +0 -1
@@ -1,99 +1,98 @@
1
1
  "use client";
2
2
  import { jsx as y } from "react/jsx-runtime";
3
- import { useRef as k, useState as M, useCallback as g, useLayoutEffect as z } from "react";
4
- import { calculateAvailableHeight as A, checkIfTextTruncated as b, getMiddleTruncatedString as F } from "./helpers.js";
3
+ import { useRef as L, useState as M, useCallback as g, useLayoutEffect as k } from "react";
4
+ import { calculateAvailableHeight as z, checkIfTextTruncated as b, getMiddleTruncatedString as A } from "./helpers.js";
5
5
  import './style.css';/* empty css */
6
- import { useCls as O } from "../utils/antdUtils.js";
7
- import { clsx as R } from "../utils/cn.js";
8
- const D = ({
6
+ import { useCls as F } from "../utils/antdUtils.js";
7
+ import { clsx as O } from "../utils/cn.js";
8
+ const N = ({
9
9
  children: x,
10
- position: f = "end",
10
+ position: d = "end",
11
11
  lines: r = 1,
12
12
  className: C,
13
- style: m,
13
+ style: f,
14
14
  container: l,
15
15
  ...E
16
16
  }) => {
17
- const d = O(), h = k(null), [S, T] = M(!1), [p, v] = M(x), c = x, H = g(() => r !== "auto" ? {
18
- ...m,
17
+ const u = F(), m = L(null), [S, h] = M(!1), [p, v] = M(x), c = x, H = g(() => r !== "auto" ? {
18
+ ...f,
19
19
  ...r > 1 ? { "--ds-line-clamp": r } : {}
20
20
  } : {
21
- ...m,
21
+ ...f,
22
22
  // Set a temporary high value to ensure it fits the parent
23
23
  "--ds-line-clamp": 999
24
- }, [r, m]), w = g(() => {
25
- const e = h.current;
24
+ }, [r, f]), w = g(() => {
25
+ const e = m.current;
26
26
  if (!e) return;
27
- const t = window.getComputedStyle(e), u = parseFloat(t.fontSize), n = t.lineHeight === "normal" ? u * 1.2 : parseFloat(t.lineHeight), a = A(e), o = Math.max(1, Math.floor(a / n));
27
+ const t = window.getComputedStyle(e), s = parseFloat(t.fontSize), n = t.lineHeight === "normal" ? s * 1.2 : parseFloat(t.lineHeight), a = z(e), o = Math.max(1, Math.floor(a / n));
28
28
  e.style.setProperty("--ds-line-clamp", String(o));
29
- const i = b(c, e, a);
30
- T(i);
31
- }, [c]), s = g(
32
- (e, t, u) => {
33
- var o, i;
29
+ const T = b(c, e, a);
30
+ h(T);
31
+ }, [c]), i = g(
32
+ (e, t, s) => {
34
33
  const n = e.filter(Boolean);
35
34
  if (n.length === 0) return;
36
- (i = (o = window.document.fonts) == null ? void 0 : o.ready) == null || i.then(t);
35
+ window.document.fonts?.ready?.then(t);
37
36
  const a = new ResizeObserver(() => {
38
37
  window.requestAnimationFrame(t);
39
38
  });
40
- return n.forEach((L) => a.observe(L)), () => {
41
- a.disconnect(), u && u();
39
+ return n.forEach((o) => a.observe(o)), () => {
40
+ a.disconnect(), s && s();
42
41
  };
43
42
  },
44
43
  []
45
44
  );
46
- return z(() => {
47
- const e = h.current;
45
+ return k(() => {
46
+ const e = m.current;
48
47
  let t = l instanceof HTMLElement ? l : l && "current" in l ? l.current : null;
49
48
  if (!e || (t || (t = e.closest("[data-truncate-container]")), typeof l < "u" && !t)) return;
50
49
  if (v(c), r === "auto")
51
- return s(
50
+ return i(
52
51
  [e, e.parentElement],
53
52
  w
54
53
  );
55
54
  if (typeof r == "number" && r > 1)
56
- return s([e], () => {
55
+ return i([e], () => {
57
56
  const a = b(c, e);
58
- T(a);
57
+ h(a);
59
58
  });
60
- if (f == "middle") {
59
+ if (d == "middle") {
61
60
  let n = { cancelled: !1 };
62
- return s(
61
+ return i(
63
62
  [t || e],
64
63
  () => {
65
64
  n && (n.cancelled = !0);
66
65
  const o = { cancelled: !1 };
67
66
  n = o;
68
- const i = F(c, "…", e);
69
- o.cancelled || v(i);
67
+ const T = A(c, "…", e);
68
+ o.cancelled || v(T);
70
69
  },
71
70
  () => {
72
71
  n.cancelled = !0;
73
72
  }
74
73
  );
75
74
  }
76
- return s(
75
+ return i(
77
76
  [t || e],
78
77
  () => {
79
- e.scrollWidth > e.clientWidth && T(!0);
78
+ e.scrollWidth > e.clientWidth && h(!0);
80
79
  }
81
80
  );
82
81
  }, [
83
82
  c,
84
- f,
83
+ d,
85
84
  r,
86
85
  l,
87
86
  w,
88
- s
87
+ i
89
88
  ]), /* @__PURE__ */ y(
90
89
  "span",
91
90
  {
92
- ref: h,
91
+ ref: m,
93
92
  style: H(),
94
- className: R(
95
- d(r === 1 ? "truncate" : "truncate-multiline"),
96
- d(f === "middle" ? "truncate-middle" : "truncate-end"),
93
+ className: O(
94
+ u(r === 1 ? "truncate" : "truncate-multiline"),
95
+ u(d === "middle" ? "truncate-middle" : "truncate-end"),
97
96
  C
98
97
  ),
99
98
  title: S ? c : void 0,
@@ -104,6 +103,6 @@ const D = ({
104
103
  );
105
104
  };
106
105
  export {
107
- D as Truncate
106
+ N as Truncate
108
107
  };
109
108
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/truncate/component.tsx"],"sourcesContent":["\"use client\";\nimport React, { useCallback, useLayoutEffect, useRef, useState } from \"react\";\nimport { clsx, useCls } from \"../utils\";\nimport {\n calculateAvailableHeight,\n checkIfTextTruncated,\n getMiddleTruncatedString,\n} from \"./helpers\";\n\nimport \"./style.css\";\n\nexport type TruncatePosition = \"middle\" | \"end\";\n\nexport interface TruncateProps\n extends Omit<React.ComponentPropsWithoutRef<\"span\">, \"title\"> {\n /** Text content to be truncated */\n children: string;\n /** Position where the truncation should occur */\n position?: TruncatePosition;\n /**\n * Number of lines to display before truncating\n * @default 1\n * @remarks Use 'auto' to fit parent height\n */\n lines?: number | \"auto\";\n /*\n * Ref to the container element of the truncated text. It will have resize observer attached to it.\n */\n container?: HTMLElement | React.RefObject<HTMLElement>;\n}\n\nexport const Truncate: React.FC<TruncateProps> = ({\n children,\n position = \"end\",\n lines = 1,\n className,\n style,\n container: containerProp,\n ...rest\n}) => {\n const cls = useCls();\n const containerRef = useRef<HTMLElement>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const [truncatedText, setTruncatedText] = useState(children);\n\n const text = children;\n\n // Get appropriate container styles based on position and lines\n const getContainerStyles = useCallback(() => {\n // For explicit line numbers or single line\n if (lines !== \"auto\") {\n return {\n ...style,\n ...(lines > 1 ? { \"--ds-line-clamp\": lines } : {}),\n } as React.CSSProperties;\n }\n\n // For auto line calculation, we'll let the useLayoutEffect handle it\n return {\n ...style,\n // Set a temporary high value to ensure it fits the parent\n \"--ds-line-clamp\": 999,\n } as React.CSSProperties;\n }, [lines, style]);\n\n // Handle auto line calculation\n const handleAutoLineCalculation = useCallback(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const styles = window.getComputedStyle(container);\n const fontSize = parseFloat(styles.fontSize);\n const lineHeight =\n styles.lineHeight === \"normal\"\n ? fontSize * 1.2\n : parseFloat(styles.lineHeight);\n\n const availableHeight = calculateAvailableHeight(container);\n const maxLines = Math.max(1, Math.floor(availableHeight / lineHeight));\n\n container.style.setProperty(\"--ds-line-clamp\", String(maxLines));\n const isTruncated = checkIfTextTruncated(text, container, availableHeight);\n setIsTruncated(isTruncated);\n }, [text]);\n\n const observe = useCallback(\n (\n elements: (HTMLElement | null)[],\n callback: () => void,\n cleanup?: () => void\n ) => {\n const validElements = elements.filter(Boolean) as HTMLElement[];\n if (validElements.length === 0) return;\n\n window.document.fonts?.ready?.then(callback);\n\n const observer = new ResizeObserver(() => {\n window.requestAnimationFrame(callback);\n });\n\n validElements.forEach((el) => observer.observe(el));\n return () => {\n observer.disconnect();\n if (cleanup) cleanup();\n };\n },\n []\n );\n\n useLayoutEffect(() => {\n const container = containerRef.current;\n let flexContainer =\n containerProp instanceof HTMLElement\n ? containerProp\n : containerProp && \"current\" in containerProp\n ? containerProp.current\n : null;\n if (!container) return;\n if (!flexContainer) {\n flexContainer = container.closest(\"[data-truncate-container]\");\n }\n if (typeof containerProp !== \"undefined\" && !flexContainer) return;\n\n // reset\n setTruncatedText(text);\n\n // Handle auto-height calculation\n if (lines === \"auto\") {\n return observe(\n [container, container.parentElement],\n handleAutoLineCalculation\n );\n }\n\n // Skip custom truncation logic for multi-line mode\n if (typeof lines === \"number\" && lines > 1) {\n // Check if text is truncated by comparing heights\n const handleMultilineTruncation = () => {\n const isTruncated = checkIfTextTruncated(text, container);\n setIsTruncated(isTruncated);\n };\n\n return observe([container], handleMultilineTruncation);\n }\n\n if (position == \"middle\") {\n // Middle truncate\n let cancellationToken = { cancelled: false };\n\n const handleMiddleTruncate = () => {\n if (cancellationToken) cancellationToken.cancelled = true;\n\n const requestCancellationToken = { cancelled: false };\n cancellationToken = requestCancellationToken;\n\n const truncated = getMiddleTruncatedString(text, \"\\u2026\", container);\n\n if (requestCancellationToken.cancelled) return;\n\n setTruncatedText(truncated);\n };\n // to do: optimize resize observer here to avoid re-calculate\n return observe(\n [flexContainer ? flexContainer : container],\n handleMiddleTruncate,\n () => {\n cancellationToken.cancelled = true;\n }\n );\n }\n\n // End truncate\n const handleEndTruncate = () => {\n const isOverflowing = container.scrollWidth > container.clientWidth;\n if (isOverflowing) {\n setIsTruncated(true);\n }\n };\n\n return observe(\n [flexContainer ? flexContainer : container],\n handleEndTruncate\n );\n }, [\n text,\n position,\n lines,\n containerProp,\n handleAutoLineCalculation,\n observe,\n ]);\n\n return (\n <span\n ref={containerRef}\n style={getContainerStyles()}\n className={clsx(\n lines === 1 ? cls(\"truncate\") : cls(\"truncate-multiline\"),\n position === \"middle\" ? cls(\"truncate-middle\") : cls(\"truncate-end\"),\n className\n )}\n title={isTruncated ? text : undefined}\n data-truncate-text-node\n {...rest}\n >\n {text === truncatedText ? text : <span>{truncatedText}</span>}\n </span>\n );\n};\n"],"names":["Truncate","children","position","lines","className","style","containerProp","rest","cls","useCls","containerRef","useRef","isTruncated","setIsTruncated","useState","truncatedText","setTruncatedText","text","getContainerStyles","useCallback","handleAutoLineCalculation","container","styles","fontSize","lineHeight","availableHeight","calculateAvailableHeight","maxLines","checkIfTextTruncated","observe","elements","callback","cleanup","validElements","_b","_a","observer","el","useLayoutEffect","flexContainer","cancellationToken","requestCancellationToken","truncated","getMiddleTruncatedString","jsx","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/truncate/component.tsx"],"sourcesContent":["\"use client\";\nimport React, { useCallback, useLayoutEffect, useRef, useState } from \"react\";\nimport { clsx, useCls } from \"../utils\";\nimport {\n calculateAvailableHeight,\n checkIfTextTruncated,\n getMiddleTruncatedString,\n} from \"./helpers\";\n\nimport \"./style.css\";\n\nexport type TruncatePosition = \"middle\" | \"end\";\n\nexport interface TruncateProps\n extends Omit<React.ComponentPropsWithoutRef<\"span\">, \"title\"> {\n /** Text content to be truncated */\n children: string;\n /** Position where the truncation should occur */\n position?: TruncatePosition;\n /**\n * Number of lines to display before truncating\n * @default 1\n * @remarks Use 'auto' to fit parent height\n */\n lines?: number | \"auto\";\n /*\n * Ref to the container element of the truncated text. It will have resize observer attached to it.\n */\n container?: HTMLElement | React.RefObject<HTMLElement>;\n}\n\nexport const Truncate: React.FC<TruncateProps> = ({\n children,\n position = \"end\",\n lines = 1,\n className,\n style,\n container: containerProp,\n ...rest\n}) => {\n const cls = useCls();\n const containerRef = useRef<HTMLElement>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const [truncatedText, setTruncatedText] = useState(children);\n\n const text = children;\n\n // Get appropriate container styles based on position and lines\n const getContainerStyles = useCallback(() => {\n // For explicit line numbers or single line\n if (lines !== \"auto\") {\n return {\n ...style,\n ...(lines > 1 ? { \"--ds-line-clamp\": lines } : {}),\n } as React.CSSProperties;\n }\n\n // For auto line calculation, we'll let the useLayoutEffect handle it\n return {\n ...style,\n // Set a temporary high value to ensure it fits the parent\n \"--ds-line-clamp\": 999,\n } as React.CSSProperties;\n }, [lines, style]);\n\n // Handle auto line calculation\n const handleAutoLineCalculation = useCallback(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const styles = window.getComputedStyle(container);\n const fontSize = parseFloat(styles.fontSize);\n const lineHeight =\n styles.lineHeight === \"normal\"\n ? fontSize * 1.2\n : parseFloat(styles.lineHeight);\n\n const availableHeight = calculateAvailableHeight(container);\n const maxLines = Math.max(1, Math.floor(availableHeight / lineHeight));\n\n container.style.setProperty(\"--ds-line-clamp\", String(maxLines));\n const isTruncated = checkIfTextTruncated(text, container, availableHeight);\n setIsTruncated(isTruncated);\n }, [text]);\n\n const observe = useCallback(\n (\n elements: (HTMLElement | null)[],\n callback: () => void,\n cleanup?: () => void\n ) => {\n const validElements = elements.filter(Boolean) as HTMLElement[];\n if (validElements.length === 0) return;\n\n window.document.fonts?.ready?.then(callback);\n\n const observer = new ResizeObserver(() => {\n window.requestAnimationFrame(callback);\n });\n\n validElements.forEach((el) => observer.observe(el));\n return () => {\n observer.disconnect();\n if (cleanup) cleanup();\n };\n },\n []\n );\n\n useLayoutEffect(() => {\n const container = containerRef.current;\n let flexContainer =\n containerProp instanceof HTMLElement\n ? containerProp\n : containerProp && \"current\" in containerProp\n ? containerProp.current\n : null;\n if (!container) return;\n if (!flexContainer) {\n flexContainer = container.closest(\"[data-truncate-container]\");\n }\n if (typeof containerProp !== \"undefined\" && !flexContainer) return;\n\n // reset\n setTruncatedText(text);\n\n // Handle auto-height calculation\n if (lines === \"auto\") {\n return observe(\n [container, container.parentElement],\n handleAutoLineCalculation\n );\n }\n\n // Skip custom truncation logic for multi-line mode\n if (typeof lines === \"number\" && lines > 1) {\n // Check if text is truncated by comparing heights\n const handleMultilineTruncation = () => {\n const isTruncated = checkIfTextTruncated(text, container);\n setIsTruncated(isTruncated);\n };\n\n return observe([container], handleMultilineTruncation);\n }\n\n if (position == \"middle\") {\n // Middle truncate\n let cancellationToken = { cancelled: false };\n\n const handleMiddleTruncate = () => {\n if (cancellationToken) cancellationToken.cancelled = true;\n\n const requestCancellationToken = { cancelled: false };\n cancellationToken = requestCancellationToken;\n\n const truncated = getMiddleTruncatedString(text, \"\\u2026\", container);\n\n if (requestCancellationToken.cancelled) return;\n\n setTruncatedText(truncated);\n };\n // to do: optimize resize observer here to avoid re-calculate\n return observe(\n [flexContainer ? flexContainer : container],\n handleMiddleTruncate,\n () => {\n cancellationToken.cancelled = true;\n }\n );\n }\n\n // End truncate\n const handleEndTruncate = () => {\n const isOverflowing = container.scrollWidth > container.clientWidth;\n if (isOverflowing) {\n setIsTruncated(true);\n }\n };\n\n return observe(\n [flexContainer ? flexContainer : container],\n handleEndTruncate\n );\n }, [\n text,\n position,\n lines,\n containerProp,\n handleAutoLineCalculation,\n observe,\n ]);\n\n return (\n <span\n ref={containerRef}\n style={getContainerStyles()}\n className={clsx(\n lines === 1 ? cls(\"truncate\") : cls(\"truncate-multiline\"),\n position === \"middle\" ? cls(\"truncate-middle\") : cls(\"truncate-end\"),\n className\n )}\n title={isTruncated ? text : undefined}\n data-truncate-text-node\n {...rest}\n >\n {text === truncatedText ? text : <span>{truncatedText}</span>}\n </span>\n );\n};\n"],"names":["Truncate","children","position","lines","className","style","containerProp","rest","cls","useCls","containerRef","useRef","isTruncated","setIsTruncated","useState","truncatedText","setTruncatedText","text","getContainerStyles","useCallback","handleAutoLineCalculation","container","styles","fontSize","lineHeight","availableHeight","calculateAvailableHeight","maxLines","checkIfTextTruncated","observe","elements","callback","cleanup","validElements","observer","el","useLayoutEffect","flexContainer","cancellationToken","requestCancellationToken","truncated","getMiddleTruncatedString","jsx","clsx"],"mappings":";;;;;;;AA+BO,MAAMA,IAAoC,CAAC;AAAA,EAChD,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,OAAAC,IAAQ;AAAA,EACR,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAWC;AAAA,EACX,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAMC,EAAA,GACNC,IAAeC,EAAoB,IAAI,GACvC,CAACC,GAAaC,CAAc,IAAIC,EAAS,EAAK,GAC9C,CAACC,GAAeC,CAAgB,IAAIF,EAASb,CAAQ,GAErDgB,IAAOhB,GAGPiB,IAAqBC,EAAY,MAEjChB,MAAU,SACL;AAAA,IACL,GAAGE;AAAA,IACH,GAAIF,IAAQ,IAAI,EAAE,mBAAmBA,EAAA,IAAU,CAAA;AAAA,EAAC,IAK7C;AAAA,IACL,GAAGE;AAAA;AAAA,IAEH,mBAAmB;AAAA,EAAA,GAEpB,CAACF,GAAOE,CAAK,CAAC,GAGXe,IAA4BD,EAAY,MAAM;AAClD,UAAME,IAAYX,EAAa;AAC/B,QAAI,CAACW,EAAW;AAEhB,UAAMC,IAAS,OAAO,iBAAiBD,CAAS,GAC1CE,IAAW,WAAWD,EAAO,QAAQ,GACrCE,IACJF,EAAO,eAAe,WAClBC,IAAW,MACX,WAAWD,EAAO,UAAU,GAE5BG,IAAkBC,EAAyBL,CAAS,GACpDM,IAAW,KAAK,IAAI,GAAG,KAAK,MAAMF,IAAkBD,CAAU,CAAC;AAErE,IAAAH,EAAU,MAAM,YAAY,mBAAmB,OAAOM,CAAQ,CAAC;AAC/D,UAAMf,IAAcgB,EAAqBX,GAAMI,GAAWI,CAAe;AACzE,IAAAZ,EAAeD,CAAW;AAAA,EAC5B,GAAG,CAACK,CAAI,CAAC,GAEHY,IAAUV;AAAA,IACd,CACEW,GACAC,GACAC,MACG;AACH,YAAMC,IAAgBH,EAAS,OAAO,OAAO;AAC7C,UAAIG,EAAc,WAAW,EAAG;AAEhC,aAAO,SAAS,OAAO,OAAO,KAAKF,CAAQ;AAE3C,YAAMG,IAAW,IAAI,eAAe,MAAM;AACxC,eAAO,sBAAsBH,CAAQ;AAAA,MACvC,CAAC;AAED,aAAAE,EAAc,QAAQ,CAACE,MAAOD,EAAS,QAAQC,CAAE,CAAC,GAC3C,MAAM;AACX,QAAAD,EAAS,WAAA,GACLF,KAASA,EAAA;AAAA,MACf;AAAA,IACF;AAAA,IACA,CAAA;AAAA,EAAC;AAGH,SAAAI,EAAgB,MAAM;AACpB,UAAMf,IAAYX,EAAa;AAC/B,QAAI2B,IACF/B,aAAyB,cACrBA,IACAA,KAAiB,aAAaA,IAC9BA,EAAc,UACd;AAKN,QAJI,CAACe,MACAgB,MACHA,IAAgBhB,EAAU,QAAQ,2BAA2B,IAE3D,OAAOf,IAAkB,OAAe,CAAC+B,GAAe;AAM5D,QAHArB,EAAiBC,CAAI,GAGjBd,MAAU;AACZ,aAAO0B;AAAA,QACL,CAACR,GAAWA,EAAU,aAAa;AAAA,QACnCD;AAAA,MAAA;AAKJ,QAAI,OAAOjB,KAAU,YAAYA,IAAQ;AAOvC,aAAO0B,EAAQ,CAACR,CAAS,GALS,MAAM;AACtC,cAAMT,IAAcgB,EAAqBX,GAAMI,CAAS;AACxD,QAAAR,EAAeD,CAAW;AAAA,MAC5B,CAEqD;AAGvD,QAAIV,KAAY,UAAU;AAExB,UAAIoC,IAAoB,EAAE,WAAW,GAAA;AAerC,aAAOT;AAAA,QACL,CAACQ,KAAgChB,CAAS;AAAA,QAdf,MAAM;AACjC,UAAIiB,QAAqC,YAAY;AAErD,gBAAMC,IAA2B,EAAE,WAAW,GAAA;AAC9C,UAAAD,IAAoBC;AAEpB,gBAAMC,IAAYC,EAAyBxB,GAAM,KAAUI,CAAS;AAEpE,UAAIkB,EAAyB,aAE7BvB,EAAiBwB,CAAS;AAAA,QAC5B;AAAA,QAKE,MAAM;AACJ,UAAAF,EAAkB,YAAY;AAAA,QAChC;AAAA,MAAA;AAAA,IAEJ;AAUA,WAAOT;AAAA,MACL,CAACQ,KAAgChB,CAAS;AAAA,MARlB,MAAM;AAE9B,QADsBA,EAAU,cAAcA,EAAU,eAEtDR,EAAe,EAAI;AAAA,MAEvB;AAAA,IAIE;AAAA,EAEJ,GAAG;AAAA,IACDI;AAAA,IACAf;AAAA,IACAC;AAAA,IACAG;AAAA,IACAc;AAAA,IACAS;AAAA,EAAA,CACD,GAGC,gBAAAa;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKhC;AAAA,MACL,OAAOQ,EAAA;AAAA,MACP,WAAWyB;AAAA,QACKnC,EAAdL,MAAU,IAAQ,aAAkB,oBAAR;AAAA,QACJK,EAAxBN,MAAa,WAAe,oBAAyB,cAAR;AAAA,QAC7CE;AAAA,MAAA;AAAA,MAEF,OAAOQ,IAAcK,IAAO;AAAA,MAC5B,2BAAuB;AAAA,MACtB,GAAGV;AAAA,MAEH,UAAAU,MAASF,IAAgBE,IAAO,gBAAAyB,EAAC,UAAM,UAAA3B,EAAA,CAAc;AAAA,IAAA;AAAA,EAAA;AAG5D;"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Finds the closest parent element that has inline flex display
3
+ * @param element - The starting HTMLElement
4
+ * @returns The closest inline flex parent or null if not found
5
+ */
6
+ export declare function findClosestInlineFlexParent(element: HTMLElement): HTMLElement | null;
7
+ export declare function getFlexRemainingSpace(flexContainer: HTMLElement, ignoreElement?: HTMLElement | ((e: HTMLElement) => boolean)): number;
8
+ export declare const measureText: (container: HTMLElement) => {
9
+ measure: (text: string) => number;
10
+ destroy: () => void;
11
+ };
12
+ export declare const getMiddleTruncatedString: (text: string, ellipsis: string, container: HTMLElement) => string;
13
+ export declare const createMeasurementClone: (text: string, container: HTMLElement) => HTMLSpanElement;
14
+ export declare const checkIfTextTruncated: (text: string, container: HTMLElement, availableHeight?: number) => boolean;
15
+ export declare const calculateAvailableHeight: (container: HTMLElement) => number;
16
+ export declare const calculateAvailableWidth: (container: HTMLElement) => number;
17
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/components/truncate/helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,WAAW,GACnB,WAAW,GAAG,IAAI,CAqBpB;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,WAAW,EAC1B,aAAa,GAAE,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,OAAO,CAAQ,UA2ClE;AAED,eAAO,MAAM,WAAW,GAAI,WAAW,WAAW;oBAuB9B,MAAM;;CASzB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,MAAM,MAAM,EACZ,UAAU,MAAM,EAChB,WAAW,WAAW,KACrB,MAgEF,CAAC;AAGF,eAAO,MAAM,sBAAsB,GACjC,MAAM,MAAM,EACZ,WAAW,WAAW,oBAavB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,MAAM,EACZ,WAAW,WAAW,EACtB,kBAAkB,MAAM,YAQzB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,WAAW,WAAW,WAiB9D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,WAAW,WAAW,WAiB7D,CAAC"}
@@ -1,56 +1,53 @@
1
- const g = (n) => {
2
- var l;
1
+ const f = (n) => {
3
2
  const e = document.createElement("span");
4
3
  e.style.opacity = "0", e.style.position = "absolute", e.style.top = "-1000px", e.style.left = "-1000px", e.style.whiteSpace = "nowrap", e.style.pointerEvents = "none";
5
4
  const o = n.getBoundingClientRect(), t = n.cloneNode(!0);
6
- return t.style.maxWidth = `${o.width}px`, t.style.position = "absolute", t.style.pointerEvents = "none", t.style.top = "-99px", t.style.left = "-99px", t.style.zIndex = "-1", (l = n.parentElement) == null || l.appendChild(t), t.appendChild(e), {
7
- measure: (i) => (e.innerText = i, e.clientWidth),
5
+ return t.style.maxWidth = `${o.width}px`, t.style.position = "absolute", t.style.pointerEvents = "none", t.style.top = "-99px", t.style.left = "-99px", t.style.zIndex = "-1", n.parentElement?.appendChild(t), t.appendChild(e), {
6
+ measure: (l) => (e.innerText = l, e.clientWidth),
8
7
  destroy: () => {
9
- var i;
10
- t.removeChild(e), (i = n.parentElement) == null || i.removeChild(t);
8
+ t.removeChild(e), n.parentElement?.removeChild(t);
11
9
  }
12
10
  };
13
- }, C = (n, e, o) => {
14
- var p;
11
+ }, b = (n, e, o) => {
15
12
  if (!n) return n;
16
- const { measure: t, destroy: l } = g(o), i = t(n), r = o.clientWidth, u = Math.floor(
17
- r / i * n.length
13
+ const { measure: t, destroy: l } = f(o), d = t(n), i = o.clientWidth, h = Math.floor(
14
+ i / d * n.length
18
15
  );
19
- if (i <= r)
16
+ if (d <= i)
20
17
  return l(), n;
21
- let s = u;
22
- const d = {}, m = 20, y = 4;
23
- for (; Object.values(d).length <= m && !d[s]; ) {
18
+ let s = h;
19
+ const r = {}, u = 20, m = 4;
20
+ for (; Object.values(r).length <= u && !r[s]; ) {
24
21
  if (s <= 1) {
25
- d[0] = [0, e];
22
+ r[0] = [0, e];
26
23
  break;
27
24
  }
28
- const c = n.slice(0, Math.ceil((s - e.length) / 2 - 1)).trimEnd(), f = n.slice(Math.floor((s - e.length) / 2) - s).trimStart(), h = c + e + f, a = t(h);
29
- if (d[s] = [a, h], a >= r)
25
+ const c = n.slice(0, Math.ceil((s - e.length) / 2 - 1)).trimEnd(), y = n.slice(Math.floor((s - e.length) / 2) - s).trimStart(), p = c + e + y, a = t(p);
26
+ if (r[s] = [a, p], a >= i)
30
27
  s = s - 2;
31
28
  else {
32
- if (r - a < y) break;
29
+ if (i - a < m) break;
33
30
  s = s + 2;
34
31
  }
35
32
  }
36
- return l(), ((p = Object.values(d).reverse().find(([c]) => c < r)) == null ? void 0 : p[1]) ?? Object.values(d)[0][1];
37
- }, b = (n, e) => {
33
+ return l(), Object.values(r).reverse().find(([c]) => c < i)?.[1] ?? Object.values(r)[0][1];
34
+ }, g = (n, e) => {
38
35
  const o = window.getComputedStyle(e), t = document.createElement("span");
39
36
  return t.style.visibility = "hidden", t.style.position = "absolute", t.style.width = `${e.clientWidth}px`, t.style.fontSize = o.fontSize, t.style.fontFamily = o.fontFamily, t.style.lineHeight = o.lineHeight, t.textContent = n, document.body.appendChild(t), t;
40
- }, T = (n, e, o) => {
41
- const t = b(n, e), l = o ? t.scrollHeight > o : t.scrollHeight > (e.clientHeight || e.offsetHeight);
37
+ }, C = (n, e, o) => {
38
+ const t = g(n, e), l = o ? t.scrollHeight > o : t.scrollHeight > (e.clientHeight || e.offsetHeight);
42
39
  return document.body.removeChild(t), l;
43
- }, W = (n) => {
40
+ }, T = (n) => {
44
41
  const e = n.parentElement;
45
42
  if (!e) return 0;
46
- const o = window.getComputedStyle(e), t = parseFloat(o.paddingTop) || 0, l = parseFloat(o.paddingBottom) || 0, i = parseFloat(o.borderTopWidth) || 0, r = parseFloat(o.borderBottomWidth) || 0;
47
- return e.clientHeight - t - l - i - r;
43
+ const o = window.getComputedStyle(e), t = parseFloat(o.paddingTop) || 0, l = parseFloat(o.paddingBottom) || 0, d = parseFloat(o.borderTopWidth) || 0, i = parseFloat(o.borderBottomWidth) || 0;
44
+ return e.clientHeight - t - l - d - i;
48
45
  };
49
46
  export {
50
- W as calculateAvailableHeight,
51
- T as checkIfTextTruncated,
52
- b as createMeasurementClone,
53
- C as getMiddleTruncatedString,
54
- g as measureText
47
+ T as calculateAvailableHeight,
48
+ C as checkIfTextTruncated,
49
+ g as createMeasurementClone,
50
+ b as getMiddleTruncatedString,
51
+ f as measureText
55
52
  };
56
53
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../src/components/truncate/helpers.ts"],"sourcesContent":["/**\n * Finds the closest parent element that has inline flex display\n * @param element - The starting HTMLElement\n * @returns The closest inline flex parent or null if not found\n */\nexport function findClosestInlineFlexParent(\n element: HTMLElement\n): HTMLElement | null {\n if (!element) return null;\n\n let currentElement = element.parentElement;\n let attempts = 0;\n const maxAttempts = 10;\n\n while (currentElement && attempts < maxAttempts) {\n const computedStyle = window.getComputedStyle(currentElement);\n\n // Check if display is inline-flex\n if (computedStyle.display === \"inline-flex\") {\n return currentElement;\n }\n\n // Move to the next parent\n currentElement = currentElement.parentElement;\n attempts++;\n }\n\n return null;\n}\n\nexport function getFlexRemainingSpace(\n flexContainer: HTMLElement,\n ignoreElement: HTMLElement | ((e: HTMLElement) => boolean) = null\n) {\n const style = window.getComputedStyle(flexContainer);\n const isRow =\n style.flexDirection === \"row\" || style.flexDirection === \"row-reverse\";\n const containerSize = isRow\n ? flexContainer.offsetWidth\n : flexContainer.offsetHeight;\n const gap = parseFloat(style.gap) || 0;\n const paddingStart =\n parseFloat(isRow ? style.paddingLeft : style.paddingTop) || 0;\n const paddingEnd =\n parseFloat(isRow ? style.paddingRight : style.paddingBottom) || 0;\n\n let totalItemSize = 0;\n const items: HTMLElement[] = (\n [...flexContainer.children] as HTMLElement[]\n ).filter(\n (child) =>\n child instanceof HTMLElement &&\n (typeof ignoreElement === \"function\"\n ? !ignoreElement(child)\n : child !== ignoreElement)\n );\n for (let i = 0; i < items.length; i++) {\n const itemStyle = window.getComputedStyle(items[i]);\n const marginStart =\n parseFloat(isRow ? itemStyle.marginLeft : itemStyle.marginTop) || 0;\n const marginEnd =\n parseFloat(isRow ? itemStyle.marginRight : itemStyle.marginBottom) || 0;\n totalItemSize +=\n (isRow ? items[i].offsetWidth : items[i].offsetHeight) +\n marginStart +\n marginEnd;\n }\n\n // Add gaps (n-1 gaps for n items)\n totalItemSize += gap * (items.length - 1);\n\n // Calculate remaining space\n const remainingSpace =\n containerSize - totalItemSize - paddingStart - paddingEnd;\n return Math.max(0, remainingSpace);\n}\n\nexport 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\n const nodeRect = container.getBoundingClientRect();\n\n const containerClone = container.cloneNode(true) as HTMLElement;\n containerClone.style.maxWidth = `${nodeRect.width}px`;\n containerClone.style.position = \"absolute\";\n containerClone.style.pointerEvents = \"none\";\n containerClone.style.top = \"-99px\";\n containerClone.style.left = \"-99px\";\n containerClone.style.zIndex = \"-1\";\n\n container.parentElement?.appendChild(containerClone);\n containerClone.appendChild(span);\n\n return {\n measure: (text: string) => {\n span.innerText = text;\n return span.clientWidth;\n },\n destroy: () => {\n containerClone.removeChild(span);\n container.parentElement?.removeChild(containerClone);\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\n const containerWidthToCompare = container.clientWidth;\n\n const initialOffset = Math.floor(\n (containerWidthToCompare / textWidth) * text.length\n );\n\n if (textWidth <= containerWidthToCompare) {\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 = 4;\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 >= containerWidthToCompare) {\n offset = offset - 2;\n } else {\n // If we are close to the container width, stop\n if (containerWidthToCompare - 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 < containerWidthToCompare)?.[1] ??\n Object.values(attempts)[0][1]\n );\n};\n\n// Utility functions for measurements\nexport const createMeasurementClone = (\n text: string,\n container: HTMLElement\n) => {\n const styles = window.getComputedStyle(container);\n const clone = document.createElement(\"span\");\n clone.style.visibility = \"hidden\";\n clone.style.position = \"absolute\";\n clone.style.width = `${container.clientWidth}px`;\n clone.style.fontSize = styles.fontSize;\n clone.style.fontFamily = styles.fontFamily;\n clone.style.lineHeight = styles.lineHeight;\n clone.textContent = text;\n document.body.appendChild(clone);\n return clone;\n};\n\nexport const checkIfTextTruncated = (\n text: string,\n container: HTMLElement,\n availableHeight?: number\n) => {\n const clone = createMeasurementClone(text, container);\n const isTruncated = availableHeight\n ? clone.scrollHeight > availableHeight\n : clone.scrollHeight > (container.clientHeight || container.offsetHeight);\n document.body.removeChild(clone);\n return isTruncated;\n};\n\nexport const calculateAvailableHeight = (container: HTMLElement) => {\n const parent = container.parentElement;\n if (!parent) return 0;\n\n const parentStyles = window.getComputedStyle(parent);\n const paddingTop = parseFloat(parentStyles.paddingTop) || 0;\n const paddingBottom = parseFloat(parentStyles.paddingBottom) || 0;\n const borderTopWidth = parseFloat(parentStyles.borderTopWidth) || 0;\n const borderBottomWidth = parseFloat(parentStyles.borderBottomWidth) || 0;\n\n return (\n parent.clientHeight -\n paddingTop -\n paddingBottom -\n borderTopWidth -\n borderBottomWidth\n );\n};\n\nexport const calculateAvailableWidth = (container: HTMLElement) => {\n const parent = container.parentElement;\n if (!parent) return 0;\n\n const parentStyles = window.getComputedStyle(parent);\n const paddingLeft = parseFloat(parentStyles.paddingLeft) || 0;\n const paddingRight = parseFloat(parentStyles.paddingRight) || 0;\n const borderLeftWidth = parseFloat(parentStyles.borderLeftWidth) || 0;\n const borderRightWidth = parseFloat(parentStyles.borderRightWidth) || 0;\n\n return (\n parent.clientWidth -\n paddingLeft -\n paddingRight -\n borderLeftWidth -\n borderRightWidth\n );\n};\n"],"names":["measureText","container","_a","span","nodeRect","containerClone","text","getMiddleTruncatedString","ellipsis","getTextWidth","destroyMeasure","textWidth","containerWidthToCompare","initialOffset","offset","attempts","maxAttempts","buffer","start","end","truncatedStr","width","createMeasurementClone","styles","clone","checkIfTextTruncated","availableHeight","isTruncated","calculateAvailableHeight","parent","parentStyles","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/components/truncate/helpers.ts"],"sourcesContent":["/**\n * Finds the closest parent element that has inline flex display\n * @param element - The starting HTMLElement\n * @returns The closest inline flex parent or null if not found\n */\nexport function findClosestInlineFlexParent(\n element: HTMLElement\n): HTMLElement | null {\n if (!element) return null;\n\n let currentElement = element.parentElement;\n let attempts = 0;\n const maxAttempts = 10;\n\n while (currentElement && attempts < maxAttempts) {\n const computedStyle = window.getComputedStyle(currentElement);\n\n // Check if display is inline-flex\n if (computedStyle.display === \"inline-flex\") {\n return currentElement;\n }\n\n // Move to the next parent\n currentElement = currentElement.parentElement;\n attempts++;\n }\n\n return null;\n}\n\nexport function getFlexRemainingSpace(\n flexContainer: HTMLElement,\n ignoreElement: HTMLElement | ((e: HTMLElement) => boolean) = null\n) {\n const style = window.getComputedStyle(flexContainer);\n const isRow =\n style.flexDirection === \"row\" || style.flexDirection === \"row-reverse\";\n const containerSize = isRow\n ? flexContainer.offsetWidth\n : flexContainer.offsetHeight;\n const gap = parseFloat(style.gap) || 0;\n const paddingStart =\n parseFloat(isRow ? style.paddingLeft : style.paddingTop) || 0;\n const paddingEnd =\n parseFloat(isRow ? style.paddingRight : style.paddingBottom) || 0;\n\n let totalItemSize = 0;\n const items: HTMLElement[] = (\n [...flexContainer.children] as HTMLElement[]\n ).filter(\n (child) =>\n child instanceof HTMLElement &&\n (typeof ignoreElement === \"function\"\n ? !ignoreElement(child)\n : child !== ignoreElement)\n );\n for (let i = 0; i < items.length; i++) {\n const itemStyle = window.getComputedStyle(items[i]);\n const marginStart =\n parseFloat(isRow ? itemStyle.marginLeft : itemStyle.marginTop) || 0;\n const marginEnd =\n parseFloat(isRow ? itemStyle.marginRight : itemStyle.marginBottom) || 0;\n totalItemSize +=\n (isRow ? items[i].offsetWidth : items[i].offsetHeight) +\n marginStart +\n marginEnd;\n }\n\n // Add gaps (n-1 gaps for n items)\n totalItemSize += gap * (items.length - 1);\n\n // Calculate remaining space\n const remainingSpace =\n containerSize - totalItemSize - paddingStart - paddingEnd;\n return Math.max(0, remainingSpace);\n}\n\nexport 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\n const nodeRect = container.getBoundingClientRect();\n\n const containerClone = container.cloneNode(true) as HTMLElement;\n containerClone.style.maxWidth = `${nodeRect.width}px`;\n containerClone.style.position = \"absolute\";\n containerClone.style.pointerEvents = \"none\";\n containerClone.style.top = \"-99px\";\n containerClone.style.left = \"-99px\";\n containerClone.style.zIndex = \"-1\";\n\n container.parentElement?.appendChild(containerClone);\n containerClone.appendChild(span);\n\n return {\n measure: (text: string) => {\n span.innerText = text;\n return span.clientWidth;\n },\n destroy: () => {\n containerClone.removeChild(span);\n container.parentElement?.removeChild(containerClone);\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\n const containerWidthToCompare = container.clientWidth;\n\n const initialOffset = Math.floor(\n (containerWidthToCompare / textWidth) * text.length\n );\n\n if (textWidth <= containerWidthToCompare) {\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 = 4;\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 >= containerWidthToCompare) {\n offset = offset - 2;\n } else {\n // If we are close to the container width, stop\n if (containerWidthToCompare - 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 < containerWidthToCompare)?.[1] ??\n Object.values(attempts)[0][1]\n );\n};\n\n// Utility functions for measurements\nexport const createMeasurementClone = (\n text: string,\n container: HTMLElement\n) => {\n const styles = window.getComputedStyle(container);\n const clone = document.createElement(\"span\");\n clone.style.visibility = \"hidden\";\n clone.style.position = \"absolute\";\n clone.style.width = `${container.clientWidth}px`;\n clone.style.fontSize = styles.fontSize;\n clone.style.fontFamily = styles.fontFamily;\n clone.style.lineHeight = styles.lineHeight;\n clone.textContent = text;\n document.body.appendChild(clone);\n return clone;\n};\n\nexport const checkIfTextTruncated = (\n text: string,\n container: HTMLElement,\n availableHeight?: number\n) => {\n const clone = createMeasurementClone(text, container);\n const isTruncated = availableHeight\n ? clone.scrollHeight > availableHeight\n : clone.scrollHeight > (container.clientHeight || container.offsetHeight);\n document.body.removeChild(clone);\n return isTruncated;\n};\n\nexport const calculateAvailableHeight = (container: HTMLElement) => {\n const parent = container.parentElement;\n if (!parent) return 0;\n\n const parentStyles = window.getComputedStyle(parent);\n const paddingTop = parseFloat(parentStyles.paddingTop) || 0;\n const paddingBottom = parseFloat(parentStyles.paddingBottom) || 0;\n const borderTopWidth = parseFloat(parentStyles.borderTopWidth) || 0;\n const borderBottomWidth = parseFloat(parentStyles.borderBottomWidth) || 0;\n\n return (\n parent.clientHeight -\n paddingTop -\n paddingBottom -\n borderTopWidth -\n borderBottomWidth\n );\n};\n\nexport const calculateAvailableWidth = (container: HTMLElement) => {\n const parent = container.parentElement;\n if (!parent) return 0;\n\n const parentStyles = window.getComputedStyle(parent);\n const paddingLeft = parseFloat(parentStyles.paddingLeft) || 0;\n const paddingRight = parseFloat(parentStyles.paddingRight) || 0;\n const borderLeftWidth = parseFloat(parentStyles.borderLeftWidth) || 0;\n const borderRightWidth = parseFloat(parentStyles.borderRightWidth) || 0;\n\n return (\n parent.clientWidth -\n paddingLeft -\n paddingRight -\n borderLeftWidth -\n borderRightWidth\n );\n};\n"],"names":["measureText","container","span","nodeRect","containerClone","text","getMiddleTruncatedString","ellipsis","getTextWidth","destroyMeasure","textWidth","containerWidthToCompare","initialOffset","offset","attempts","maxAttempts","buffer","start","end","truncatedStr","width","createMeasurementClone","styles","clone","checkIfTextTruncated","availableHeight","isTruncated","calculateAvailableHeight","parent","parentStyles","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './component';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/truncate/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { UploadFile as AntUploadFile, UploadProps as AntUploadProps, RcFile, UploadChangeParam } from 'antd/es/upload';
2
+ export type UploadFile = AntUploadFile;
3
+ export type { RcFile, UploadChangeParam };
4
+ export type { UploadItemProps, UploadFileStatus } from './item';
5
+ export interface UploadProps extends AntUploadProps {
6
+ /**
7
+ * Show remove button for uploaded files
8
+ * @default true
9
+ */
10
+ showRemoveButton?: boolean;
11
+ }
12
+ export declare const DefaultUpload: ({ showRemoveButton, className, fileList, children, ...restProps }: UploadProps) => import("react/jsx-runtime").JSX.Element;
13
+ export declare const Upload: (({ showRemoveButton, className, fileList, children, ...restProps }: UploadProps) => import("react/jsx-runtime").JSX.Element) & {
14
+ Dragger: ({ children, uploadTitle, uploadDescription, itemRender, className, ...rest }: import('./dragger').DraggerProps) => import("react/jsx-runtime").JSX.Element;
15
+ Item: ({ fileName, fileType, status, percent, removable, onRemove, extraActions, className, ...rest }: import('./item').UploadItemProps) => import("react/jsx-runtime").JSX.Element;
16
+ };
17
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/upload/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,UAAU,IAAI,aAAa,EAChC,KAAK,WAAW,IAAI,cAAc,EAClC,KAAK,MAAM,EACX,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AASxB,OAAO,aAAa,CAAC;AAGrB,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AACvC,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AAE1C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAGhE,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAU5B;AAGD,eAAO,MAAM,aAAa,GAAI,mEAQ3B,WAAW,4CAsBb,CAAC;AAEF,eAAO,MAAM,MAAM,uEAxBhB,WAAW;;;CA4BZ,CAAC"}
@@ -1 +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// Import component-specific styles\nimport \"./style.css\";\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":";;;;;;;;;;;AA2CO,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;"}
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// Import component-specific styles\nimport \"./style.css\";\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":";;;;;;;;;;;AA2CO,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,EAAA,GAINC,IACJ,gBAAAC,EAACC,GAAA,EAAO,MAJG,gBAAAD,EAACE,GAAA,EAAa,MAAM,GAAA,CAAI,GAIf,MAAK,WAAU,UAAA,gBAEnC,GAEIC,IAAaC,EAAoB,EAAE,kBAAAZ,GAAkB;AAE3D,SACE,gBAAAQ;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,WAAWC,EAAKT,EAAI,QAAQ,GAAGJ,CAAS;AAAA,MACvC,GAAGG;AAAA,MACJ,UAAAF;AAAA,MACA,YAAAS;AAAA,MAEC,UAAAR,KAAYI;AAAA,IAAA;AAAA,EAAA;AAGnB,GAEaQ,IAAS,OAAO,OAAOhB,GAAe;AAAA;AAAA,EAEjD,SAAAiB;AAAA,EACA,MAAMC;AACR,CAAC;"}
@@ -0,0 +1,14 @@
1
+ import { DraggerProps as AntDraggerProps } from 'antd/es/upload';
2
+ import { default as React } from 'react';
3
+ export interface DraggerProps extends AntDraggerProps {
4
+ /**
5
+ * Custom title for the upload component
6
+ */
7
+ uploadTitle?: React.ReactNode;
8
+ /**
9
+ * Custom description for the upload component
10
+ **/
11
+ uploadDescription?: React.ReactNode;
12
+ }
13
+ export declare const Dragger: ({ children, uploadTitle, uploadDescription, itemRender, className, ...rest }: DraggerProps) => import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=dragger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dragger.d.ts","sourceRoot":"","sources":["../../../src/components/upload/dragger.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,YAAY,IAAI,eAAe,EACrC,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;QAEI;IACJ,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACrC;AAED,eAAO,MAAM,OAAO,GAAI,8EAOrB,YAAY,4CAuBd,CAAC"}
@@ -1 +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 { CloudArrowUpIcon } 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 className,\n ...rest\n}: DraggerProps) => {\n const cls = useCls();\n const renderChildren = () => {\n return (\n <>\n <p className={cls(\"upload-drag-icon\")}>\n <CloudArrowUpIcon 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 \n className={className}\n itemRender={itemRender || defaultItemRender} \n {...rest}\n >\n {children ? children : renderChildren()}\n </AntUpload.Dragger>\n );\n};\n"],"names":["Dragger","children","uploadTitle","uploadDescription","itemRender","className","rest","cls","useCls","renderChildren","jsxs","Fragment","jsx","CloudArrowUpIcon","defaultItemRender","useUploadItemRender","AntUpload"],"mappings":";;;;;;AAqBO,MAAMA,IAAU,CAAC;AAAA,EACtB,UAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,mBAAAC,IAAoB;AAAA,EACpB,YAAAC;AAAA,EACA,WAAAC;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,EAAiB,MAAM,GAAA,CAAI,EAC9B,CAAA;AAAA,sBACC,KAAE,EAAA,WAAWN,EAAI,aAAa,GAAI,UAAYL,GAAA;AAAA,sBAC9C,KAAE,EAAA,WAAWK,EAAI,aAAa,GAAI,UAAkBJ,EAAA,CAAA;AAAA,EAAA,GACvD,GAGEW,IAAoBC,EAAoB,EAAE,kBAAkB,IAAM;AAEtE,SAAA,gBAAAH;AAAA,IAACI,EAAU;AAAA,IAAV;AAAA,MACC,WAAAX;AAAA,MACA,YAAYD,KAAcU;AAAA,MACzB,GAAGR;AAAA,MAEH,UAAAL,KAAsBQ,EAAe;AAAA,IAAA;AAAA,EACxC;AAEJ;"}
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 { CloudArrowUpIcon } 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 className,\n ...rest\n}: DraggerProps) => {\n const cls = useCls();\n const renderChildren = () => {\n return (\n <>\n <p className={cls(\"upload-drag-icon\")}>\n <CloudArrowUpIcon 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 \n className={className}\n itemRender={itemRender || defaultItemRender} \n {...rest}\n >\n {children ? children : renderChildren()}\n </AntUpload.Dragger>\n );\n};\n"],"names":["Dragger","children","uploadTitle","uploadDescription","itemRender","className","rest","cls","useCls","renderChildren","jsxs","Fragment","jsx","CloudArrowUpIcon","defaultItemRender","useUploadItemRender","AntUpload"],"mappings":";;;;;;AAqBO,MAAMA,IAAU,CAAC;AAAA,EACtB,UAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,mBAAAC,IAAoB;AAAA,EACpB,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MAAoB;AAClB,QAAMC,IAAMC,EAAA,GACNC,IAAiB,MAEnB,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAAC,KAAA,EAAE,WAAWL,EAAI,kBAAkB,GAClC,UAAA,gBAAAK,EAACC,GAAA,EAAiB,MAAM,GAAA,CAAI,EAAA,CAC9B;AAAA,sBACC,KAAA,EAAE,WAAWN,EAAI,aAAa,GAAI,UAAAL,GAAY;AAAA,sBAC9C,KAAA,EAAE,WAAWK,EAAI,aAAa,GAAI,UAAAJ,EAAA,CAAkB;AAAA,EAAA,GACvD,GAGEW,IAAoBC,EAAoB,EAAE,kBAAkB,IAAM;AACxE,SACE,gBAAAH;AAAA,IAACI,EAAU;AAAA,IAAV;AAAA,MACC,WAAAX;AAAA,MACA,YAAYD,KAAcU;AAAA,MACzB,GAAGR;AAAA,MAEH,UAAAL,KAAsBQ,EAAA;AAAA,IAAe;AAAA,EAAA;AAG5C;"}
@@ -0,0 +1,6 @@
1
+ import { UploadProps } from 'antd/es/upload';
2
+ export type UseUploadItemRenderProps = {
3
+ showRemoveButton?: boolean;
4
+ };
5
+ export declare const useUploadItemRender: (props: UseUploadItemRenderProps) => UploadProps["itemRender"];
6
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/components/upload/hooks.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,CAChC,KAAK,EAAE,wBAAwB,KAC5B,WAAW,CAAC,YAAY,CAuB5B,CAAC"}
@@ -1 +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;"}
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,OAAA;AAAA,EAAO;AAAA,GAIN,CAACL,CAAgB,CAAC;"}
@@ -0,0 +1,4 @@
1
+ export * from './component';
2
+ export * from './hooks';
3
+ export * from '../utils';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/upload/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type UploadFileStatus = "error" | "done" | "uploading" | "removed" | "pending";
2
+ export interface UploadItemProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ fileName: string;
4
+ fileType?: string;
5
+ status?: UploadFileStatus;
6
+ percent?: number;
7
+ removable?: boolean;
8
+ onRemove?: () => void;
9
+ extraActions?: React.ReactNode;
10
+ }
11
+ export declare const UploadItem: ({ fileName, fileType, status, percent, removable, onRemove, extraActions, className, ...rest }: UploadItemProps) => import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/components/upload/item.tsx"],"names":[],"mappings":"AAUA,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,MAAM,GACN,WAAW,GACX,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC;AAED,eAAO,MAAM,UAAU,GAAI,gGAUxB,eAAe,4CA4DjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"item.js","sources":["../../../src/components/upload/item.tsx"],"sourcesContent":["\"use client\";\nimport 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 \"../icon-button\";\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 extends React.HTMLAttributes<HTMLDivElement> {\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 className,\n ...rest\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\"), className)}\n justify=\"space-between\"\n align=\"center\"\n data-error={status === \"error\"}\n {...rest}\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","className","rest","cls","useCls","showPercent","statusWithProgress","jsx","Flex","clsx","jsxs","getUploadFileIcon","Truncate","Progress","IconButton","Trash"],"mappings":";;;;;;;;;;AA2BO,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;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MAAuB;AACrB,QAAMC,IAAMC,EAAO,GACbC,IAAc,KAAK,MAAMR,KAAW,CAAC,GACrCS,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,GAAGF,CAAS;AAAA,MAC7C,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,cAAYL,MAAW;AAAA,MACtB,GAAGM;AAAA,MAEJ,UAAA,gBAAAQ;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,EAAkBhB,CAAQ,GAC7B;AAAA,YACA,gBAAAe;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,UAASlB,GAAA;AAAA,kBACtC,gBAAAa;AAAA,oBAACM;AAAA,oBAAA;AAAA,sBACC,SAASR;AAAA,sBACT,MAAK;AAAA,sBACL,WAAWF,EAAI,sBAAsB;AAAA,sBACrC,QACEP,KAAUA,KAAUU,IAChBA,EAAmBV,CAAM,IACzB;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAER;AAAA,cAAA;AAAA,YACF;AAAA,YACC,gBAAAc,EAAAF,GAAA,EAAK,KAAK,GAAG,OAAM,UACjB,UAAA;AAAA,cAAAR;AAAA,cACAF,KACC,gBAAAS;AAAA,gBAACO;AAAA,gBAAA;AAAA,kBACC,OAAM;AAAA,kBACN,UAAU,gBAAAP,EAACQ,GAAM,EAAA,MAAM,GAAI,CAAA;AAAA,kBAC3B,SAAShB;AAAA,kBACT,MAAK;AAAA,gBAAA;AAAA,cAAA;AAAA,YACP,EAEJ,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"item.js","sources":["../../../src/components/upload/item.tsx"],"sourcesContent":["\"use client\";\nimport 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 \"../icon-button\";\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 extends React.HTMLAttributes<HTMLDivElement> {\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 className,\n ...rest\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\"), className)}\n justify=\"space-between\"\n align=\"center\"\n data-error={status === \"error\"}\n {...rest}\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","className","rest","cls","useCls","showPercent","statusWithProgress","jsx","Flex","clsx","jsxs","getUploadFileIcon","Truncate","Progress","IconButton","Trash"],"mappings":";;;;;;;;;;AA2BO,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;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MAAuB;AACrB,QAAMC,IAAMC,EAAA,GACNC,IAAc,KAAK,MAAMR,KAAW,CAAC,GACrCS,IACJ;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EAAA;AAEb,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAKN,EAAI,aAAa,GAAGF,CAAS;AAAA,MAC7C,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,cAAYL,MAAW;AAAA,MACtB,GAAGM;AAAA,MAEJ,UAAA,gBAAAQ;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,EAAkBhB,CAAQ,GAC7B;AAAA,YACA,gBAAAe;AAAA,cAACF;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,UAAQ;AAAA,gBACR,MAAM;AAAA,gBACN,WAAWL,EAAI,2BAA2B;AAAA,gBAE1C,UAAA;AAAA,kBAAA,gBAAAI,EAACK,GAAA,EAAS,UAAS,UAAU,UAAAlB,GAAS;AAAA,kBACtC,gBAAAa;AAAA,oBAACM;AAAA,oBAAA;AAAA,sBACC,SAASR;AAAA,sBACT,MAAK;AAAA,sBACL,WAAWF,EAAI,sBAAsB;AAAA,sBACrC,QACEP,KAAUA,KAAUU,IAChBA,EAAmBV,CAAM,IACzB;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAER;AAAA,cAAA;AAAA,YAAA;AAAA,YAEF,gBAAAc,EAACF,GAAA,EAAK,KAAK,GAAG,OAAM,UACjB,UAAA;AAAA,cAAAR;AAAA,cACAF,KACC,gBAAAS;AAAA,gBAACO;AAAA,gBAAA;AAAA,kBACC,OAAM;AAAA,kBACN,UAAU,gBAAAP,EAACQ,GAAA,EAAM,MAAM,GAAA,CAAI;AAAA,kBAC3B,SAAShB;AAAA,kBACT,MAAK;AAAA,gBAAA;AAAA,cAAA;AAAA,YACP,EAAA,CAEJ;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,2 @@
1
+ export declare const getUploadFileIcon: (fileType?: string) => import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/upload/utils.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,GAAI,WAAW,MAAM,4CAMlD,CAAC"}
@@ -1 +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;"}
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":";;AAEO,MAAMA,IAAoB,CAACC,MACzBA,MAAa,WAClB,gBAAAC,EAACC,GAAA,EAAO,MAAM,IAAI,QAAO,OAAA,CAAO,IAEhC,gBAAAD,EAACE,GAAA,EAAK,MAAM,IAAI,QAAO,QAAO;"}
@@ -0,0 +1,8 @@
1
+ import { JSX, ComponentProps, JSXElementConstructor } from 'react';
2
+ type IntrinsicElement = keyof JSX.IntrinsicElements | JSXElementConstructor<any>;
3
+ export type WidthAntdTokensProps<T extends IntrinsicElement> = {
4
+ as?: IntrinsicElement;
5
+ } & ComponentProps<T>;
6
+ export declare const WithAntdTokens: <T extends IntrinsicElement = "div">({ as: Tag, ref, className, ...rest }: WidthAntdTokensProps<T>) => null;
7
+ export {};
8
+ //# sourceMappingURL=WithAntdTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithAntdTokens.d.ts","sourceRoot":"","sources":["../../../src/components/utils/WithAntdTokens.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,GAAG,EACH,cAAc,EACd,qBAAqB,EACtB,MAAM,OAAO,CAAC;AAIf,KAAK,gBAAgB,GACjB,MAAM,GAAG,CAAC,iBAAiB,GAE3B,qBAAqB,CAAC,GAAG,CAAC,CAAC;AAE/B,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,IAAI;IAC7D,EAAE,CAAC,EAAE,gBAAgB,CAAC;CACvB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAEtB,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,gBAAgB,GAAG,KAAK,EAAE,sCAKhE,oBAAoB,CAAC,CAAC,CAAC,SAYzB,CAAC"}
@@ -1 +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 renderedElement = useRender({\n render: <Component />,\n ref,\n props: {\n ...rest,\n className: clsx(className, cssVar),\n },\n });\n return renderedElement;\n};\n"],"names":["WithAntdTokens","Tag","ref","className","rest","Component","cssVar","useAntdCssVarClassname","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;AAS/B,SARiBC,EAAU;AAAA,IAChC,0BAASH,GAAU,EAAA;AAAA,IACnB,KAAAH;AAAA,IACA,OAAO;AAAA,MACL,GAAGE;AAAA,MACH,WAAWK,EAAKN,GAAWG,CAAM;AAAA,IAAA;AAAA,EACnC,CACD;AAEH;"}
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 renderedElement = useRender({\n render: <Component />,\n ref,\n props: {\n ...rest,\n className: clsx(className, cssVar),\n },\n });\n return renderedElement;\n};\n"],"names":["WithAntdTokens","Tag","ref","className","rest","Component","cssVar","useAntdCssVarClassname","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,EAAA;AASf,SARwBC,EAAU;AAAA,IAChC,0BAASH,GAAA,EAAU;AAAA,IACnB,KAAAH;AAAA,IACA,OAAO;AAAA,MACL,GAAGE;AAAA,MACH,WAAWK,EAAKN,GAAWG,CAAM;AAAA,IAAA;AAAA,EACnC,CACD;AAEH;"}
@@ -0,0 +1,14 @@
1
+ import { default as React } from 'react';
2
+ import { useRender } from '@base-ui-components/react/use-render';
3
+ import { ElementTypeToDOMType } from './types';
4
+ export type WithRenderPropProps<T extends React.ElementType = "div", State extends Record<string | number | symbol, unknown> = Record<string, unknown>> = React.ComponentPropsWithoutRef<T> & {
5
+ render?: useRender.RenderProp<State>;
6
+ as?: T;
7
+ state?: State;
8
+ };
9
+ declare const WithRenderPropInner: <T extends React.ElementType = "div", State extends Record<string, unknown> = Record<string, unknown>>(props: WithRenderPropProps<T, State>, ref: React.ForwardedRef<T>) => null;
10
+ export declare const WithRenderProp: <T extends React.ElementType = "div", State extends Record<string, unknown> = Record<string, unknown>>(props: WithRenderPropProps<T, State> & {
11
+ ref?: React.Ref<ElementTypeToDOMType<T>>;
12
+ }) => ReturnType<typeof WithRenderPropInner>;
13
+ export {};
14
+ //# sourceMappingURL=WithRenderProp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithRenderProp.d.ts","sourceRoot":"","sources":["../../../src/components/utils/WithRenderProp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,MAAM,mBAAmB,CAC7B,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,EACnC,KAAK,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAC9D,MAAM,EACN,OAAO,CACR,IACC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG;IACtC,MAAM,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,EAAE,CAAC,EAAE,CAAC,CAAC;IACP,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,QAAA,MAAM,mBAAmB,GACvB,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,EACnC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE/D,OAAO,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,EACpC,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAU3B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAsC,CAC/D,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,EACnC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE/D,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG;IACrC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C,KACE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"}