@class-kit/react 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +3 -0
  3. package/README.md +83 -0
  4. package/dist/components/affix.cjs +62 -0
  5. package/dist/components/affix.cjs.map +1 -0
  6. package/dist/components/affix.d.ts +3 -0
  7. package/dist/components/affix.d.ts.map +1 -0
  8. package/dist/components/affix.js +60 -0
  9. package/dist/components/affix.js.map +1 -0
  10. package/dist/components/backtop.cjs +98 -0
  11. package/dist/components/backtop.cjs.map +1 -0
  12. package/dist/components/backtop.d.ts +3 -0
  13. package/dist/components/backtop.d.ts.map +1 -0
  14. package/dist/components/backtop.js +96 -0
  15. package/dist/components/backtop.js.map +1 -0
  16. package/dist/components/badge.cjs +13 -0
  17. package/dist/components/badge.cjs.map +1 -0
  18. package/dist/components/badge.d.ts +3 -0
  19. package/dist/components/badge.d.ts.map +1 -0
  20. package/dist/components/badge.js +11 -0
  21. package/dist/components/badge.js.map +1 -0
  22. package/dist/components/barcode.cjs +61 -0
  23. package/dist/components/barcode.cjs.map +1 -0
  24. package/dist/components/barcode.d.ts +3 -0
  25. package/dist/components/barcode.d.ts.map +1 -0
  26. package/dist/components/barcode.js +59 -0
  27. package/dist/components/barcode.js.map +1 -0
  28. package/dist/components/breadcrumb.cjs +13 -0
  29. package/dist/components/breadcrumb.cjs.map +1 -0
  30. package/dist/components/breadcrumb.d.ts +3 -0
  31. package/dist/components/breadcrumb.d.ts.map +1 -0
  32. package/dist/components/breadcrumb.js +11 -0
  33. package/dist/components/breadcrumb.js.map +1 -0
  34. package/dist/components/button.cjs +12 -0
  35. package/dist/components/button.cjs.map +1 -0
  36. package/dist/components/button.d.ts +3 -0
  37. package/dist/components/button.d.ts.map +1 -0
  38. package/dist/components/button.js +10 -0
  39. package/dist/components/button.js.map +1 -0
  40. package/dist/components/calendar.cjs +50 -0
  41. package/dist/components/calendar.cjs.map +1 -0
  42. package/dist/components/calendar.d.ts +3 -0
  43. package/dist/components/calendar.d.ts.map +1 -0
  44. package/dist/components/calendar.js +48 -0
  45. package/dist/components/calendar.js.map +1 -0
  46. package/dist/components/canvas-editor.cjs +207 -0
  47. package/dist/components/canvas-editor.cjs.map +1 -0
  48. package/dist/components/canvas-editor.d.ts +3 -0
  49. package/dist/components/canvas-editor.d.ts.map +1 -0
  50. package/dist/components/canvas-editor.js +205 -0
  51. package/dist/components/canvas-editor.js.map +1 -0
  52. package/dist/components/canvas-image.cjs +40 -0
  53. package/dist/components/canvas-image.cjs.map +1 -0
  54. package/dist/components/canvas-image.d.ts +3 -0
  55. package/dist/components/canvas-image.d.ts.map +1 -0
  56. package/dist/components/canvas-image.js +38 -0
  57. package/dist/components/canvas-image.js.map +1 -0
  58. package/dist/components/chat-virtual-list.cjs +463 -0
  59. package/dist/components/chat-virtual-list.cjs.map +1 -0
  60. package/dist/components/chat-virtual-list.d.ts +3 -0
  61. package/dist/components/chat-virtual-list.d.ts.map +1 -0
  62. package/dist/components/chat-virtual-list.js +461 -0
  63. package/dist/components/chat-virtual-list.js.map +1 -0
  64. package/dist/components/checkbox.cjs +79 -0
  65. package/dist/components/checkbox.cjs.map +1 -0
  66. package/dist/components/checkbox.d.ts +3 -0
  67. package/dist/components/checkbox.d.ts.map +1 -0
  68. package/dist/components/checkbox.js +77 -0
  69. package/dist/components/checkbox.js.map +1 -0
  70. package/dist/components/checked.cjs +80 -0
  71. package/dist/components/checked.cjs.map +1 -0
  72. package/dist/components/checked.d.ts +3 -0
  73. package/dist/components/checked.d.ts.map +1 -0
  74. package/dist/components/checked.js +78 -0
  75. package/dist/components/checked.js.map +1 -0
  76. package/dist/components/color-picker.cjs +188 -0
  77. package/dist/components/color-picker.cjs.map +1 -0
  78. package/dist/components/color-picker.d.ts +3 -0
  79. package/dist/components/color-picker.d.ts.map +1 -0
  80. package/dist/components/color-picker.js +186 -0
  81. package/dist/components/color-picker.js.map +1 -0
  82. package/dist/components/comic-reader.cjs +59 -0
  83. package/dist/components/comic-reader.cjs.map +1 -0
  84. package/dist/components/comic-reader.d.ts +3 -0
  85. package/dist/components/comic-reader.d.ts.map +1 -0
  86. package/dist/components/comic-reader.js +57 -0
  87. package/dist/components/comic-reader.js.map +1 -0
  88. package/dist/components/config-provider.cjs +25 -0
  89. package/dist/components/config-provider.cjs.map +1 -0
  90. package/dist/components/config-provider.d.ts +3 -0
  91. package/dist/components/config-provider.d.ts.map +1 -0
  92. package/dist/components/config-provider.js +23 -0
  93. package/dist/components/config-provider.js.map +1 -0
  94. package/dist/components/config-table.cjs +329 -0
  95. package/dist/components/config-table.cjs.map +1 -0
  96. package/dist/components/config-table.d.ts +3 -0
  97. package/dist/components/config-table.d.ts.map +1 -0
  98. package/dist/components/config-table.js +327 -0
  99. package/dist/components/config-table.js.map +1 -0
  100. package/dist/components/countdown.cjs +42 -0
  101. package/dist/components/countdown.cjs.map +1 -0
  102. package/dist/components/countdown.d.ts +3 -0
  103. package/dist/components/countdown.d.ts.map +1 -0
  104. package/dist/components/countdown.js +40 -0
  105. package/dist/components/countdown.js.map +1 -0
  106. package/dist/components/danmaku.cjs +28 -0
  107. package/dist/components/danmaku.cjs.map +1 -0
  108. package/dist/components/danmaku.d.ts +3 -0
  109. package/dist/components/danmaku.d.ts.map +1 -0
  110. package/dist/components/danmaku.js +26 -0
  111. package/dist/components/danmaku.js.map +1 -0
  112. package/dist/components/date-picker.cjs +175 -0
  113. package/dist/components/date-picker.cjs.map +1 -0
  114. package/dist/components/date-picker.d.ts +3 -0
  115. package/dist/components/date-picker.d.ts.map +1 -0
  116. package/dist/components/date-picker.js +173 -0
  117. package/dist/components/date-picker.js.map +1 -0
  118. package/dist/components/date-range-picker.cjs +204 -0
  119. package/dist/components/date-range-picker.cjs.map +1 -0
  120. package/dist/components/date-range-picker.d.ts +3 -0
  121. package/dist/components/date-range-picker.d.ts.map +1 -0
  122. package/dist/components/date-range-picker.js +202 -0
  123. package/dist/components/date-range-picker.js.map +1 -0
  124. package/dist/components/design-effect.cjs +25 -0
  125. package/dist/components/design-effect.cjs.map +1 -0
  126. package/dist/components/design-effect.d.ts +3 -0
  127. package/dist/components/design-effect.d.ts.map +1 -0
  128. package/dist/components/design-effect.js +23 -0
  129. package/dist/components/design-effect.js.map +1 -0
  130. package/dist/components/drag-drop-board.cjs +334 -0
  131. package/dist/components/drag-drop-board.cjs.map +1 -0
  132. package/dist/components/drag-drop-board.d.ts +3 -0
  133. package/dist/components/drag-drop-board.d.ts.map +1 -0
  134. package/dist/components/drag-drop-board.js +332 -0
  135. package/dist/components/drag-drop-board.js.map +1 -0
  136. package/dist/components/draggable.cjs +118 -0
  137. package/dist/components/draggable.cjs.map +1 -0
  138. package/dist/components/draggable.d.ts +3 -0
  139. package/dist/components/draggable.d.ts.map +1 -0
  140. package/dist/components/draggable.js +116 -0
  141. package/dist/components/draggable.js.map +1 -0
  142. package/dist/components/ellipsis-text.cjs +49 -0
  143. package/dist/components/ellipsis-text.cjs.map +1 -0
  144. package/dist/components/ellipsis-text.d.ts +3 -0
  145. package/dist/components/ellipsis-text.d.ts.map +1 -0
  146. package/dist/components/ellipsis-text.js +47 -0
  147. package/dist/components/ellipsis-text.js.map +1 -0
  148. package/dist/components/empty.cjs +14 -0
  149. package/dist/components/empty.cjs.map +1 -0
  150. package/dist/components/empty.d.ts +3 -0
  151. package/dist/components/empty.d.ts.map +1 -0
  152. package/dist/components/empty.js +12 -0
  153. package/dist/components/empty.js.map +1 -0
  154. package/dist/components/field.cjs +100 -0
  155. package/dist/components/field.cjs.map +1 -0
  156. package/dist/components/field.d.ts +3 -0
  157. package/dist/components/field.d.ts.map +1 -0
  158. package/dist/components/field.js +98 -0
  159. package/dist/components/field.js.map +1 -0
  160. package/dist/components/file-preview.cjs +176 -0
  161. package/dist/components/file-preview.cjs.map +1 -0
  162. package/dist/components/file-preview.d.ts +3 -0
  163. package/dist/components/file-preview.d.ts.map +1 -0
  164. package/dist/components/file-preview.js +174 -0
  165. package/dist/components/file-preview.js.map +1 -0
  166. package/dist/components/floating-ball.cjs +114 -0
  167. package/dist/components/floating-ball.cjs.map +1 -0
  168. package/dist/components/floating-ball.d.ts +3 -0
  169. package/dist/components/floating-ball.d.ts.map +1 -0
  170. package/dist/components/floating-ball.js +112 -0
  171. package/dist/components/floating-ball.js.map +1 -0
  172. package/dist/components/form.cjs +53 -0
  173. package/dist/components/form.cjs.map +1 -0
  174. package/dist/components/form.d.ts +3 -0
  175. package/dist/components/form.d.ts.map +1 -0
  176. package/dist/components/form.js +48 -0
  177. package/dist/components/form.js.map +1 -0
  178. package/dist/components/gradient-text.cjs +39 -0
  179. package/dist/components/gradient-text.cjs.map +1 -0
  180. package/dist/components/gradient-text.d.ts +3 -0
  181. package/dist/components/gradient-text.d.ts.map +1 -0
  182. package/dist/components/gradient-text.js +37 -0
  183. package/dist/components/gradient-text.js.map +1 -0
  184. package/dist/components/input.cjs +99 -0
  185. package/dist/components/input.cjs.map +1 -0
  186. package/dist/components/input.d.ts +3 -0
  187. package/dist/components/input.d.ts.map +1 -0
  188. package/dist/components/input.js +97 -0
  189. package/dist/components/input.js.map +1 -0
  190. package/dist/components/lazy-image.cjs +70 -0
  191. package/dist/components/lazy-image.cjs.map +1 -0
  192. package/dist/components/lazy-image.d.ts +3 -0
  193. package/dist/components/lazy-image.d.ts.map +1 -0
  194. package/dist/components/lazy-image.js +68 -0
  195. package/dist/components/lazy-image.js.map +1 -0
  196. package/dist/components/live-room.cjs +239 -0
  197. package/dist/components/live-room.cjs.map +1 -0
  198. package/dist/components/live-room.d.ts +3 -0
  199. package/dist/components/live-room.d.ts.map +1 -0
  200. package/dist/components/live-room.js +237 -0
  201. package/dist/components/live-room.js.map +1 -0
  202. package/dist/components/loading.cjs +14 -0
  203. package/dist/components/loading.cjs.map +1 -0
  204. package/dist/components/loading.d.ts +3 -0
  205. package/dist/components/loading.d.ts.map +1 -0
  206. package/dist/components/loading.js +12 -0
  207. package/dist/components/loading.js.map +1 -0
  208. package/dist/components/marquee.cjs +102 -0
  209. package/dist/components/marquee.cjs.map +1 -0
  210. package/dist/components/marquee.d.ts +3 -0
  211. package/dist/components/marquee.d.ts.map +1 -0
  212. package/dist/components/marquee.js +100 -0
  213. package/dist/components/marquee.js.map +1 -0
  214. package/dist/components/masonry-virtual-list.cjs +123 -0
  215. package/dist/components/masonry-virtual-list.cjs.map +1 -0
  216. package/dist/components/masonry-virtual-list.d.ts +3 -0
  217. package/dist/components/masonry-virtual-list.d.ts.map +1 -0
  218. package/dist/components/masonry-virtual-list.js +121 -0
  219. package/dist/components/masonry-virtual-list.js.map +1 -0
  220. package/dist/components/modal.cjs +179 -0
  221. package/dist/components/modal.cjs.map +1 -0
  222. package/dist/components/modal.d.ts +3 -0
  223. package/dist/components/modal.d.ts.map +1 -0
  224. package/dist/components/modal.js +177 -0
  225. package/dist/components/modal.js.map +1 -0
  226. package/dist/components/multi-column-picker.cjs +137 -0
  227. package/dist/components/multi-column-picker.cjs.map +1 -0
  228. package/dist/components/multi-column-picker.d.ts +3 -0
  229. package/dist/components/multi-column-picker.d.ts.map +1 -0
  230. package/dist/components/multi-column-picker.js +135 -0
  231. package/dist/components/multi-column-picker.js.map +1 -0
  232. package/dist/components/novel-reader.cjs +278 -0
  233. package/dist/components/novel-reader.cjs.map +1 -0
  234. package/dist/components/novel-reader.d.ts +3 -0
  235. package/dist/components/novel-reader.d.ts.map +1 -0
  236. package/dist/components/novel-reader.js +276 -0
  237. package/dist/components/novel-reader.js.map +1 -0
  238. package/dist/components/number-input.cjs +224 -0
  239. package/dist/components/number-input.cjs.map +1 -0
  240. package/dist/components/number-input.d.ts +3 -0
  241. package/dist/components/number-input.d.ts.map +1 -0
  242. package/dist/components/number-input.js +222 -0
  243. package/dist/components/number-input.js.map +1 -0
  244. package/dist/components/pagination.cjs +37 -0
  245. package/dist/components/pagination.cjs.map +1 -0
  246. package/dist/components/pagination.d.ts +3 -0
  247. package/dist/components/pagination.d.ts.map +1 -0
  248. package/dist/components/pagination.js +35 -0
  249. package/dist/components/pagination.js.map +1 -0
  250. package/dist/components/password-input.cjs +125 -0
  251. package/dist/components/password-input.cjs.map +1 -0
  252. package/dist/components/password-input.d.ts +3 -0
  253. package/dist/components/password-input.d.ts.map +1 -0
  254. package/dist/components/password-input.js +123 -0
  255. package/dist/components/password-input.js.map +1 -0
  256. package/dist/components/popconfirm.cjs +103 -0
  257. package/dist/components/popconfirm.cjs.map +1 -0
  258. package/dist/components/popconfirm.d.ts +3 -0
  259. package/dist/components/popconfirm.d.ts.map +1 -0
  260. package/dist/components/popconfirm.js +101 -0
  261. package/dist/components/popconfirm.js.map +1 -0
  262. package/dist/components/popup.cjs +229 -0
  263. package/dist/components/popup.cjs.map +1 -0
  264. package/dist/components/popup.d.ts +3 -0
  265. package/dist/components/popup.d.ts.map +1 -0
  266. package/dist/components/popup.js +227 -0
  267. package/dist/components/popup.js.map +1 -0
  268. package/dist/components/progress-bar.cjs +138 -0
  269. package/dist/components/progress-bar.cjs.map +1 -0
  270. package/dist/components/progress-bar.d.ts +3 -0
  271. package/dist/components/progress-bar.d.ts.map +1 -0
  272. package/dist/components/progress-bar.js +136 -0
  273. package/dist/components/progress-bar.js.map +1 -0
  274. package/dist/components/qr-code.cjs +51 -0
  275. package/dist/components/qr-code.cjs.map +1 -0
  276. package/dist/components/qr-code.d.ts +3 -0
  277. package/dist/components/qr-code.d.ts.map +1 -0
  278. package/dist/components/qr-code.js +49 -0
  279. package/dist/components/qr-code.js.map +1 -0
  280. package/dist/components/radio-group.cjs +79 -0
  281. package/dist/components/radio-group.cjs.map +1 -0
  282. package/dist/components/radio-group.d.ts +3 -0
  283. package/dist/components/radio-group.d.ts.map +1 -0
  284. package/dist/components/radio-group.js +77 -0
  285. package/dist/components/radio-group.js.map +1 -0
  286. package/dist/components/rating.cjs +100 -0
  287. package/dist/components/rating.cjs.map +1 -0
  288. package/dist/components/rating.d.ts +3 -0
  289. package/dist/components/rating.d.ts.map +1 -0
  290. package/dist/components/rating.js +98 -0
  291. package/dist/components/rating.js.map +1 -0
  292. package/dist/components/rolling-number.cjs +25 -0
  293. package/dist/components/rolling-number.cjs.map +1 -0
  294. package/dist/components/rolling-number.d.ts +3 -0
  295. package/dist/components/rolling-number.d.ts.map +1 -0
  296. package/dist/components/rolling-number.js +23 -0
  297. package/dist/components/rolling-number.js.map +1 -0
  298. package/dist/components/select.cjs +230 -0
  299. package/dist/components/select.cjs.map +1 -0
  300. package/dist/components/select.d.ts +3 -0
  301. package/dist/components/select.d.ts.map +1 -0
  302. package/dist/components/select.js +228 -0
  303. package/dist/components/select.js.map +1 -0
  304. package/dist/components/signature.cjs +221 -0
  305. package/dist/components/signature.cjs.map +1 -0
  306. package/dist/components/signature.d.ts +3 -0
  307. package/dist/components/signature.d.ts.map +1 -0
  308. package/dist/components/signature.js +219 -0
  309. package/dist/components/signature.js.map +1 -0
  310. package/dist/components/skeleton.cjs +18 -0
  311. package/dist/components/skeleton.cjs.map +1 -0
  312. package/dist/components/skeleton.d.ts +3 -0
  313. package/dist/components/skeleton.d.ts.map +1 -0
  314. package/dist/components/skeleton.js +16 -0
  315. package/dist/components/skeleton.js.map +1 -0
  316. package/dist/components/slide-captcha.cjs +223 -0
  317. package/dist/components/slide-captcha.cjs.map +1 -0
  318. package/dist/components/slide-captcha.d.ts +3 -0
  319. package/dist/components/slide-captcha.d.ts.map +1 -0
  320. package/dist/components/slide-captcha.js +221 -0
  321. package/dist/components/slide-captcha.js.map +1 -0
  322. package/dist/components/swiper.cjs +262 -0
  323. package/dist/components/swiper.cjs.map +1 -0
  324. package/dist/components/swiper.d.ts +3 -0
  325. package/dist/components/swiper.d.ts.map +1 -0
  326. package/dist/components/swiper.js +260 -0
  327. package/dist/components/swiper.js.map +1 -0
  328. package/dist/components/switch.cjs +79 -0
  329. package/dist/components/switch.cjs.map +1 -0
  330. package/dist/components/switch.d.ts +3 -0
  331. package/dist/components/switch.d.ts.map +1 -0
  332. package/dist/components/switch.js +77 -0
  333. package/dist/components/switch.js.map +1 -0
  334. package/dist/components/table.cjs +327 -0
  335. package/dist/components/table.cjs.map +1 -0
  336. package/dist/components/table.d.ts +3 -0
  337. package/dist/components/table.d.ts.map +1 -0
  338. package/dist/components/table.js +325 -0
  339. package/dist/components/table.js.map +1 -0
  340. package/dist/components/tabs.cjs +107 -0
  341. package/dist/components/tabs.cjs.map +1 -0
  342. package/dist/components/tabs.d.ts +3 -0
  343. package/dist/components/tabs.d.ts.map +1 -0
  344. package/dist/components/tabs.js +105 -0
  345. package/dist/components/tabs.js.map +1 -0
  346. package/dist/components/tag.cjs +47 -0
  347. package/dist/components/tag.cjs.map +1 -0
  348. package/dist/components/tag.d.ts +3 -0
  349. package/dist/components/tag.d.ts.map +1 -0
  350. package/dist/components/tag.js +45 -0
  351. package/dist/components/tag.js.map +1 -0
  352. package/dist/components/textarea.cjs +99 -0
  353. package/dist/components/textarea.cjs.map +1 -0
  354. package/dist/components/textarea.d.ts +3 -0
  355. package/dist/components/textarea.d.ts.map +1 -0
  356. package/dist/components/textarea.js +97 -0
  357. package/dist/components/textarea.js.map +1 -0
  358. package/dist/components/tilt-card.cjs +129 -0
  359. package/dist/components/tilt-card.cjs.map +1 -0
  360. package/dist/components/tilt-card.d.ts +3 -0
  361. package/dist/components/tilt-card.d.ts.map +1 -0
  362. package/dist/components/tilt-card.js +127 -0
  363. package/dist/components/tilt-card.js.map +1 -0
  364. package/dist/components/timeline.cjs +13 -0
  365. package/dist/components/timeline.cjs.map +1 -0
  366. package/dist/components/timeline.d.ts +3 -0
  367. package/dist/components/timeline.d.ts.map +1 -0
  368. package/dist/components/timeline.js +11 -0
  369. package/dist/components/timeline.js.map +1 -0
  370. package/dist/components/toast.cjs +86 -0
  371. package/dist/components/toast.cjs.map +1 -0
  372. package/dist/components/toast.d.ts +3 -0
  373. package/dist/components/toast.d.ts.map +1 -0
  374. package/dist/components/toast.js +83 -0
  375. package/dist/components/toast.js.map +1 -0
  376. package/dist/components/tooltip.cjs +104 -0
  377. package/dist/components/tooltip.cjs.map +1 -0
  378. package/dist/components/tooltip.d.ts +3 -0
  379. package/dist/components/tooltip.d.ts.map +1 -0
  380. package/dist/components/tooltip.js +102 -0
  381. package/dist/components/tooltip.js.map +1 -0
  382. package/dist/components/typewriter-text.cjs +50 -0
  383. package/dist/components/typewriter-text.cjs.map +1 -0
  384. package/dist/components/typewriter-text.d.ts +3 -0
  385. package/dist/components/typewriter-text.d.ts.map +1 -0
  386. package/dist/components/typewriter-text.js +48 -0
  387. package/dist/components/typewriter-text.js.map +1 -0
  388. package/dist/components/upload.cjs +110 -0
  389. package/dist/components/upload.cjs.map +1 -0
  390. package/dist/components/upload.d.ts +3 -0
  391. package/dist/components/upload.d.ts.map +1 -0
  392. package/dist/components/upload.js +108 -0
  393. package/dist/components/upload.js.map +1 -0
  394. package/dist/components/verification-code.cjs +137 -0
  395. package/dist/components/verification-code.cjs.map +1 -0
  396. package/dist/components/verification-code.d.ts +3 -0
  397. package/dist/components/verification-code.d.ts.map +1 -0
  398. package/dist/components/verification-code.js +135 -0
  399. package/dist/components/verification-code.js.map +1 -0
  400. package/dist/components/video-detail-transition.cjs +331 -0
  401. package/dist/components/video-detail-transition.cjs.map +1 -0
  402. package/dist/components/video-detail-transition.d.ts +3 -0
  403. package/dist/components/video-detail-transition.d.ts.map +1 -0
  404. package/dist/components/video-detail-transition.js +329 -0
  405. package/dist/components/video-detail-transition.js.map +1 -0
  406. package/dist/components/video-player.cjs +170 -0
  407. package/dist/components/video-player.cjs.map +1 -0
  408. package/dist/components/video-player.d.ts +3 -0
  409. package/dist/components/video-player.d.ts.map +1 -0
  410. package/dist/components/video-player.js +168 -0
  411. package/dist/components/video-player.js.map +1 -0
  412. package/dist/components/virtual-list.cjs +287 -0
  413. package/dist/components/virtual-list.cjs.map +1 -0
  414. package/dist/components/virtual-list.d.ts +3 -0
  415. package/dist/components/virtual-list.d.ts.map +1 -0
  416. package/dist/components/virtual-list.js +285 -0
  417. package/dist/components/virtual-list.js.map +1 -0
  418. package/dist/components/virtual-select.cjs +264 -0
  419. package/dist/components/virtual-select.cjs.map +1 -0
  420. package/dist/components/virtual-select.d.ts +3 -0
  421. package/dist/components/virtual-select.d.ts.map +1 -0
  422. package/dist/components/virtual-select.js +262 -0
  423. package/dist/components/virtual-select.js.map +1 -0
  424. package/dist/components/virtual-table.cjs +328 -0
  425. package/dist/components/virtual-table.cjs.map +1 -0
  426. package/dist/components/virtual-table.d.ts +3 -0
  427. package/dist/components/virtual-table.d.ts.map +1 -0
  428. package/dist/components/virtual-table.js +326 -0
  429. package/dist/components/virtual-table.js.map +1 -0
  430. package/dist/import-transform-DIRVOYvz.js +144 -0
  431. package/dist/import-transform-DIRVOYvz.js.map +1 -0
  432. package/dist/import-transform-jqLjtD6M.js +142 -0
  433. package/dist/import-transform-jqLjtD6M.js.map +1 -0
  434. package/dist/import-transform.d.ts +6 -0
  435. package/dist/import-transform.d.ts.map +1 -0
  436. package/dist/index.cjs +6117 -0
  437. package/dist/index.cjs.map +1 -0
  438. package/dist/index.d.ts +1032 -0
  439. package/dist/index.d.ts.map +1 -0
  440. package/dist/index.js +5826 -0
  441. package/dist/index.js.map +1 -0
  442. package/dist/styles/base.css +455 -0
  443. package/dist/styles/components/affix.css +15 -0
  444. package/dist/styles/components/backtop.css +67 -0
  445. package/dist/styles/components/badge.css +33 -0
  446. package/dist/styles/components/barcode.css +33 -0
  447. package/dist/styles/components/breadcrumb.css +15 -0
  448. package/dist/styles/components/button.css +156 -0
  449. package/dist/styles/components/calendar.css +174 -0
  450. package/dist/styles/components/canvas-editor.css +327 -0
  451. package/dist/styles/components/canvas-image.css +40 -0
  452. package/dist/styles/components/chat-virtual-list.css +108 -0
  453. package/dist/styles/components/checkbox.css +318 -0
  454. package/dist/styles/components/checked.css +318 -0
  455. package/dist/styles/components/color-picker.css +377 -0
  456. package/dist/styles/components/comic-reader.css +135 -0
  457. package/dist/styles/components/config-provider.css +12 -0
  458. package/dist/styles/components/config-table.css +458 -0
  459. package/dist/styles/components/countdown.css +14 -0
  460. package/dist/styles/components/danmaku.css +56 -0
  461. package/dist/styles/components/date-picker.css +381 -0
  462. package/dist/styles/components/date-range-picker.css +454 -0
  463. package/dist/styles/components/design-effect.css +285 -0
  464. package/dist/styles/components/drag-drop-board.css +87 -0
  465. package/dist/styles/components/draggable.css +37 -0
  466. package/dist/styles/components/ellipsis-text.css +59 -0
  467. package/dist/styles/components/empty.css +168 -0
  468. package/dist/styles/components/field.css +221 -0
  469. package/dist/styles/components/file-preview.css +216 -0
  470. package/dist/styles/components/floating-ball.css +33 -0
  471. package/dist/styles/components/form.css +221 -0
  472. package/dist/styles/components/gradient-text.css +54 -0
  473. package/dist/styles/components/input.css +221 -0
  474. package/dist/styles/components/lazy-image.css +79 -0
  475. package/dist/styles/components/live-room.css +226 -0
  476. package/dist/styles/components/loading.css +98 -0
  477. package/dist/styles/components/marquee.css +281 -0
  478. package/dist/styles/components/masonry-virtual-list.css +29 -0
  479. package/dist/styles/components/modal.css +164 -0
  480. package/dist/styles/components/multi-column-picker.css +97 -0
  481. package/dist/styles/components/novel-reader.css +1163 -0
  482. package/dist/styles/components/number-input.css +221 -0
  483. package/dist/styles/components/pagination.css +43 -0
  484. package/dist/styles/components/password-input.css +289 -0
  485. package/dist/styles/components/popconfirm.css +156 -0
  486. package/dist/styles/components/popup.css +216 -0
  487. package/dist/styles/components/progress-bar.css +79 -0
  488. package/dist/styles/components/qr-code.css +62 -0
  489. package/dist/styles/components/radio-group.css +318 -0
  490. package/dist/styles/components/rating.css +260 -0
  491. package/dist/styles/components/rolling-number.css +37 -0
  492. package/dist/styles/components/select.css +342 -0
  493. package/dist/styles/components/signature.css +286 -0
  494. package/dist/styles/components/skeleton.css +70 -0
  495. package/dist/styles/components/slide-captcha.css +420 -0
  496. package/dist/styles/components/swiper.css +199 -0
  497. package/dist/styles/components/switch.css +294 -0
  498. package/dist/styles/components/table.css +458 -0
  499. package/dist/styles/components/tabs.css +156 -0
  500. package/dist/styles/components/tag.css +90 -0
  501. package/dist/styles/components/textarea.css +204 -0
  502. package/dist/styles/components/tilt-card.css +114 -0
  503. package/dist/styles/components/timeline.css +116 -0
  504. package/dist/styles/components/toast.css +204 -0
  505. package/dist/styles/components/tooltip.css +137 -0
  506. package/dist/styles/components/typewriter-text.css +95 -0
  507. package/dist/styles/components/upload.css +246 -0
  508. package/dist/styles/components/verification-code.css +240 -0
  509. package/dist/styles/components/video-detail-transition.css +169 -0
  510. package/dist/styles/components/video-player.css +93 -0
  511. package/dist/styles/components/virtual-list.css +206 -0
  512. package/dist/styles/components/virtual-select.css +472 -0
  513. package/dist/styles/components/virtual-table.css +458 -0
  514. package/dist/styles/components.css +8377 -0
  515. package/dist/styles/themes/amber.css +19 -0
  516. package/dist/styles/themes/emerald.css +19 -0
  517. package/dist/styles/themes/liquid-glass.css +55 -0
  518. package/dist/styles/themes/minimal.css +19 -0
  519. package/dist/styles/themes/rose.css +19 -0
  520. package/dist/styles/themes/sky.css +19 -0
  521. package/dist/styles/themes/violet.css +19 -0
  522. package/dist/styles.css +8377 -0
  523. package/dist/vite.cjs +27 -0
  524. package/dist/vite.cjs.map +1 -0
  525. package/dist/vite.d.ts +11 -0
  526. package/dist/vite.d.ts.map +1 -0
  527. package/dist/vite.js +22 -0
  528. package/dist/vite.js.map +1 -0
  529. package/dist/webpack-loader.cjs +18 -0
  530. package/dist/webpack-loader.cjs.map +1 -0
  531. package/dist/webpack-loader.d.ts +9 -0
  532. package/dist/webpack-loader.d.ts.map +1 -0
  533. package/dist/webpack-loader.js +14 -0
  534. package/dist/webpack-loader.js.map +1 -0
  535. package/dist/webpack.cjs +45 -0
  536. package/dist/webpack.cjs.map +1 -0
  537. package/dist/webpack.d.ts +21 -0
  538. package/dist/webpack.d.ts.map +1 -0
  539. package/dist/webpack.js +38 -0
  540. package/dist/webpack.js.map +1 -0
  541. package/package.json +106 -0
@@ -0,0 +1,262 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import React, { useMemo, useEffect, useContext, useSyncExternalStore, createContext } from 'react';
3
+ import { createPortal } from 'react-dom';
4
+ import { VirtualSelectController, VirtualListController, getClassComponentsLocale } from '@class-kit/core';
5
+
6
+ const FormContext = /*#__PURE__*/ createContext(null);
7
+ const classIconPaths = {
8
+ chevronDown: ["M6 9l6 6 6-6"],
9
+ chevronLeft: ["M15 18l-6-6 6-6"],
10
+ chevronRight: ["M9 18l6-6-6-6"],
11
+ chevronUp: ["M18 15l-6-6-6 6"],
12
+ check: ["M20 6 9 17l-5-5"],
13
+ settings: [
14
+ "M12 15.5A3.5 3.5 0 1 0 12 8a3.5 3.5 0 0 0 0 7.5Z",
15
+ "M19.4 15a1.8 1.8 0 0 0 .36 1.98l.04.04a2.18 2.18 0 0 1-3.08 3.08l-.04-.04a1.8 1.8 0 0 0-1.98-.36 1.8 1.8 0 0 0-1 1.62V21a2.2 2.2 0 0 1-4.4 0v-.06a1.8 1.8 0 0 0-1-1.62 1.8 1.8 0 0 0-1.98.36l-.04.04A2.18 2.18 0 0 1 3.2 16.64l.04-.04A1.8 1.8 0 0 0 3.6 14.6a1.8 1.8 0 0 0-1.62-1H2a2.2 2.2 0 0 1 0-4.4h.06a1.8 1.8 0 0 0 1.62-1 1.8 1.8 0 0 0-.36-1.98l-.04-.04A2.18 2.18 0 0 1 6.36 3.1l.04.04a1.8 1.8 0 0 0 1.98.36h.08A1.8 1.8 0 0 0 9.4 1.88V1.8a2.2 2.2 0 0 1 4.4 0v.06a1.8 1.8 0 0 0 1 1.62 1.8 1.8 0 0 0 1.98-.36l.04-.04A2.18 2.18 0 0 1 19.9 6.16l-.04.04a1.8 1.8 0 0 0-.36 1.98v.08a1.8 1.8 0 0 0 1.62.94h.08a2.2 2.2 0 0 1 0 4.4h-.06A1.8 1.8 0 0 0 19.4 15Z",
16
+ ],
17
+ star: [
18
+ "M12 2l3.09 6.26 6.91 1-5 4.87 1.18 6.87L12 17.77 5.82 21 7 14.13l-5-4.87 6.91-1L12 2Z",
19
+ ],
20
+ x: ["M18 6 6 18", "M6 6l12 12"],
21
+ };
22
+ function ClassIcon({ className = "cc-icon", name, }) {
23
+ return (jsx("svg", { "aria-hidden": "true", className: className, fill: name === "star" ? "currentColor" : "none", focusable: "false", viewBox: "0 0 24 24", children: classIconPaths[name].map((d) => (jsx("path", { d: d, stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: name === "star" ? 0 : 2 }, d))) }));
24
+ }
25
+ function reactNodeToText(node) {
26
+ if (typeof node === "string" || typeof node === "number")
27
+ return String(node);
28
+ if (Array.isArray(node))
29
+ return node.map(reactNodeToText).join("");
30
+ return "";
31
+ }
32
+ function useFormInteractivity() {
33
+ const context = useContext(FormContext);
34
+ return {
35
+ disabled: context?.disabled ?? false,
36
+ readOnly: context?.readOnly ?? false,
37
+ };
38
+ }
39
+ function useOptionalFormInteractivity() {
40
+ return useFormInteractivity();
41
+ }
42
+ function resolveFieldInteractivity(form, disabled, readOnly) {
43
+ const resolvedDisabled = disabled ?? form.disabled;
44
+ return {
45
+ disabled: resolvedDisabled,
46
+ readOnly: !resolvedDisabled && (readOnly ?? form.readOnly),
47
+ };
48
+ }
49
+ function useOptionalField(name, options = {}) {
50
+ const context = useContext(FormContext);
51
+ const optionsRef = React.useRef(options);
52
+ optionsRef.current = options;
53
+ const state = useSyncExternalStore((listener) => context ? context.controller.subscribe(listener) : () => undefined, () => context?.controller.getState() ?? null, () => context?.controller.getState() ?? null);
54
+ const [localValue, setLocalValue] = React.useState(() => (options.initialValue ?? ""));
55
+ useEffect(() => {
56
+ if (!context || !name)
57
+ return undefined;
58
+ return context.controller.registerField(name, optionsRef.current);
59
+ }, [context, name]);
60
+ const field = name ? state?.fields[name] : undefined;
61
+ const usesFormField = Boolean(context && name);
62
+ return {
63
+ value: usesFormField ? (field?.value ?? "") : localValue,
64
+ errors: usesFormField ? (field?.errors ?? []) : [],
65
+ dirty: usesFormField ? (field?.meta.dirty ?? false) : false,
66
+ touched: usesFormField ? (field?.meta.touched ?? false) : false,
67
+ setValue: (value) => {
68
+ if (context && name) {
69
+ void context.controller.setValue(name, value);
70
+ }
71
+ else {
72
+ setLocalValue(value);
73
+ }
74
+ },
75
+ onBlur: () => {
76
+ if (context && name)
77
+ void context.controller.blur(name);
78
+ },
79
+ };
80
+ }
81
+ function FieldError({ errors, errorId, className, }) {
82
+ return errors.length > 0 ? (jsx("span", { className: className ?? "cc-field__error", id: errorId, role: "alert", children: errors[0] })) : null;
83
+ }
84
+ function renderBodyPortal(node) {
85
+ return typeof document === "undefined"
86
+ ? node
87
+ : createPortal(node, document.body);
88
+ }
89
+ function getSelectMenuPosition(trigger, preferredHeight, anchorTopPlacement = false) {
90
+ if (!trigger || typeof window === "undefined") {
91
+ return { placement: "bottom", style: {} };
92
+ }
93
+ const gap = 6;
94
+ const padding = 8;
95
+ const rect = trigger.getBoundingClientRect();
96
+ const viewportHeight = window.innerHeight;
97
+ const below = viewportHeight - rect.bottom - padding;
98
+ const above = rect.top - padding;
99
+ const placement = below >= preferredHeight || below >= above ? "bottom" : "top";
100
+ const available = Math.max(80, (placement === "bottom" ? below : above) - gap);
101
+ const maxHeight = Math.min(preferredHeight, available);
102
+ const top = placement === "bottom"
103
+ ? rect.bottom + gap
104
+ : Math.max(padding, rect.top - gap - maxHeight);
105
+ const bottom = Math.max(padding, viewportHeight - rect.top + gap);
106
+ return {
107
+ placement,
108
+ style: {
109
+ bottom: placement === "top" && anchorTopPlacement ? bottom : undefined,
110
+ left: rect.left,
111
+ maxHeight,
112
+ minWidth: rect.width,
113
+ top: placement === "top" && anchorTopPlacement ? "auto" : top,
114
+ width: rect.width,
115
+ },
116
+ };
117
+ }
118
+ function VirtualSelect({ name, label, placeholder, options, className = "cc-field", labelClassName = "cc-field__label", rootClassName = "cc-virtual-select", controlClassName = "cc-field__control cc-field__select cc-virtual-select__control", menuClassName = "cc-virtual-select__menu", searchClassName = "cc-virtual-select__search", viewportClassName = "cc-virtual-select__viewport", optionClassName = "cc-virtual-select__option", selectedIconClassName = "cc-select__check", errorClassName, disabled, readOnly, multiple = false, searchable = true, searchPlaceholder = getClassComponentsLocale().selectSearchPlaceholder, selectedIcon = jsx(ClassIcon, { name: "check" }), clearable = true, clearIcon = jsx(ClassIcon, { name: "x" }), clearLabel = getClassComponentsLocale().selectClearLabel, itemHeight = 36, menuHeight = 260, overscan = 6, onValueChange, initialValue, rules, validateOn, id, style, ...props }) {
119
+ const field = useOptionalField(name, {
120
+ initialValue,
121
+ rules,
122
+ validateOn,
123
+ });
124
+ const interactivity = resolveFieldInteractivity(useOptionalFormInteractivity(), disabled, readOnly);
125
+ const [open, setOpen] = React.useState(false);
126
+ const [menuPosition, setMenuPosition] = React.useState(() => getSelectMenuPosition(null, menuHeight));
127
+ const [query, setQuery] = React.useState("");
128
+ const [scrollOffset, setScrollOffset] = React.useState(0);
129
+ const rootRef = React.useRef(null);
130
+ const menuRef = React.useRef(null);
131
+ const triggerRef = React.useRef(null);
132
+ const errorId = `${name}-error`;
133
+ const listboxId = `${name}-virtual-listbox`;
134
+ const labelId = `${name}-label`;
135
+ const invalid = field.errors.length > 0;
136
+ const coreOptions = useMemo(() => options.map((option) => ({
137
+ disabled: option.disabled,
138
+ label: reactNodeToText(option.label),
139
+ value: option.value,
140
+ })), [options]);
141
+ const selectState = useMemo(() => new VirtualSelectController({
142
+ multiple,
143
+ options: coreOptions,
144
+ query,
145
+ value: field.value,
146
+ }).getState(), [coreOptions, field.value, multiple, query]);
147
+ const selectedOptions = options.filter((option) => selectState.selectedValues.includes(option.value));
148
+ const filteredIndexes = selectState.filteredOptions
149
+ .map((filteredOption) => options.findIndex((option) => option.value === filteredOption.value))
150
+ .filter((index) => index >= 0);
151
+ const virtualController = useMemo(() => new VirtualListController({
152
+ count: filteredIndexes.length,
153
+ estimateSize: itemHeight,
154
+ overscan,
155
+ }), [filteredIndexes.length, itemHeight, overscan]);
156
+ const menuMaxHeight = typeof menuPosition.style.maxHeight === "number"
157
+ ? menuPosition.style.maxHeight
158
+ : menuHeight;
159
+ const viewportHeight = Math.max(80, Math.min(menuHeight, menuMaxHeight - (searchable ? 52 : 12)));
160
+ const range = virtualController.getRange(scrollOffset, viewportHeight);
161
+ const displayText = selectedOptions.length > 0
162
+ ? selectedOptions
163
+ .map((option) => reactNodeToText(option.label))
164
+ .join("、")
165
+ : (placeholder ?? "Select");
166
+ useEffect(() => {
167
+ if (!open)
168
+ return undefined;
169
+ const preferredHeight = menuHeight + (searchable ? 52 : 12);
170
+ const updateMenuPosition = () => setMenuPosition(getSelectMenuPosition(triggerRef.current, preferredHeight));
171
+ const handleClick = (event) => {
172
+ const target = event.target;
173
+ if (!rootRef.current?.contains(target) &&
174
+ !menuRef.current?.contains(target))
175
+ setOpen(false);
176
+ };
177
+ updateMenuPosition();
178
+ document.addEventListener("mousedown", handleClick);
179
+ window.addEventListener("resize", updateMenuPosition);
180
+ window.addEventListener("scroll", updateMenuPosition, true);
181
+ return () => {
182
+ document.removeEventListener("mousedown", handleClick);
183
+ window.removeEventListener("resize", updateMenuPosition);
184
+ window.removeEventListener("scroll", updateMenuPosition, true);
185
+ };
186
+ }, [open]);
187
+ useEffect(() => {
188
+ setScrollOffset(0);
189
+ }, [query, options.length]);
190
+ const commitValue = (nextValue) => {
191
+ field.setValue(nextValue);
192
+ onValueChange?.(nextValue);
193
+ };
194
+ const toggleOption = (option) => {
195
+ if (option.disabled || interactivity.disabled || interactivity.readOnly)
196
+ return;
197
+ const controller = new VirtualSelectController({
198
+ multiple,
199
+ options: coreOptions,
200
+ query,
201
+ value: field.value,
202
+ });
203
+ const nextValue = controller.toggle({
204
+ disabled: option.disabled,
205
+ label: reactNodeToText(option.label),
206
+ value: option.value,
207
+ });
208
+ commitValue(nextValue);
209
+ if (!multiple)
210
+ setOpen(false);
211
+ };
212
+ const clearValue = (event) => {
213
+ event.stopPropagation();
214
+ if (interactivity.readOnly)
215
+ return;
216
+ commitValue(multiple ? [] : "");
217
+ };
218
+ return (jsxs("div", { className: className, "data-disabled": interactivity.disabled, "data-readonly": interactivity.readOnly, style: style, ...props, children: [label ? (jsx("span", { className: labelClassName, id: labelId, children: label })) : null, jsxs("div", { className: rootClassName, "data-disabled": interactivity.disabled, "data-readonly": interactivity.readOnly, ref: rootRef, children: [jsxs("button", { "aria-controls": listboxId, "aria-describedby": invalid ? errorId : undefined, "aria-expanded": open, "aria-haspopup": "listbox", "aria-invalid": invalid, "aria-labelledby": label ? labelId : undefined, "aria-readonly": interactivity.readOnly || undefined, className: controlClassName, "data-readonly": interactivity.readOnly, disabled: interactivity.disabled, id: id, ref: triggerRef, type: "button", onBlur: field.onBlur, onClick: () => {
219
+ if (interactivity.readOnly)
220
+ return;
221
+ setOpen((current) => {
222
+ const nextOpen = !current;
223
+ if (nextOpen)
224
+ setScrollOffset(0);
225
+ return nextOpen;
226
+ });
227
+ }, onKeyDown: (event) => {
228
+ if (event.key === "Escape")
229
+ setOpen(false);
230
+ if (event.key === "ArrowDown" ||
231
+ event.key === "Enter" ||
232
+ event.key === " ") {
233
+ event.preventDefault();
234
+ if (interactivity.readOnly)
235
+ return;
236
+ setScrollOffset(0);
237
+ setOpen(true);
238
+ }
239
+ }, children: [jsx("span", { className: "cc-select__value", "data-placeholder": selectedOptions.length === 0, children: displayText }), clearable &&
240
+ selectedOptions.length > 0 &&
241
+ !interactivity.disabled &&
242
+ !interactivity.readOnly ? (jsx("span", { className: "cc-virtual-select__clear-wrap", "aria-hidden": "false", children: jsx("span", { "aria-label": clearLabel, className: "cc-virtual-select__clear", role: "button", tabIndex: -1, onClick: clearValue, children: clearIcon }) })) : null, jsx("span", { "aria-hidden": "true", className: "cc-select__arrow" })] }), open
243
+ ? renderBodyPortal(jsxs("div", { "aria-multiselectable": multiple || undefined, className: menuClassName, "data-floating": "true", "data-placement": menuPosition.placement, id: listboxId, ref: menuRef, role: "listbox", style: menuPosition.style, children: [searchable ? (jsx("input", { className: searchClassName, placeholder: searchPlaceholder, readOnly: interactivity.readOnly, type: "search", value: query, onChange: (event) => setQuery(event.target.value) })) : null, jsx("div", { className: viewportClassName, style: { height: viewportHeight }, onScroll: (event) => setScrollOffset(event.currentTarget.scrollTop), children: jsxs("div", { className: "cc-virtual-select__inner", style: { height: range.totalSize }, children: [range.items.map((item) => {
244
+ const optionIndex = filteredIndexes[item.index];
245
+ if (optionIndex === undefined)
246
+ return null;
247
+ const option = options[optionIndex];
248
+ if (!option)
249
+ return null;
250
+ const selected = selectState.selectedValues.includes(option.value);
251
+ return (jsxs("button", { "aria-selected": selected, className: optionClassName, "data-selected": selected, disabled: interactivity.disabled || option.disabled, role: "option", style: {
252
+ height: item.size,
253
+ transform: `translateY(${item.start}px)`,
254
+ }, type: "button", onClick: () => toggleOption(option), children: [jsx("span", { children: option.label }), selected ? (jsx("span", { "aria-hidden": "true", className: selectedIconClassName, children: selectedIcon })) : null] }, String(option.value)));
255
+ }), filteredIndexes.length === 0 ? (jsx("span", { className: "cc-virtual-select__empty", children: getClassComponentsLocale().selectEmptyText })) : null] }) })] }))
256
+ : null] }), jsx("input", { name: name, type: "hidden", value: multiple
257
+ ? selectState.selectedValues.join(",")
258
+ : String(field.value ?? "") }), jsx(FieldError, { className: errorClassName, errorId: errorId, errors: field.errors })] }));
259
+ }
260
+
261
+ export { VirtualSelect };
262
+ //# sourceMappingURL=virtual-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-select.js","sources":["../../src/index.tsx"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,328 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var reactDom = require('react-dom');
6
+ var core = require('@class-kit/core');
7
+
8
+ const classIconPaths = {
9
+ chevronDown: ["M6 9l6 6 6-6"],
10
+ chevronLeft: ["M15 18l-6-6 6-6"],
11
+ chevronRight: ["M9 18l6-6-6-6"],
12
+ chevronUp: ["M18 15l-6-6-6 6"],
13
+ check: ["M20 6 9 17l-5-5"],
14
+ settings: [
15
+ "M12 15.5A3.5 3.5 0 1 0 12 8a3.5 3.5 0 0 0 0 7.5Z",
16
+ "M19.4 15a1.8 1.8 0 0 0 .36 1.98l.04.04a2.18 2.18 0 0 1-3.08 3.08l-.04-.04a1.8 1.8 0 0 0-1.98-.36 1.8 1.8 0 0 0-1 1.62V21a2.2 2.2 0 0 1-4.4 0v-.06a1.8 1.8 0 0 0-1-1.62 1.8 1.8 0 0 0-1.98.36l-.04.04A2.18 2.18 0 0 1 3.2 16.64l.04-.04A1.8 1.8 0 0 0 3.6 14.6a1.8 1.8 0 0 0-1.62-1H2a2.2 2.2 0 0 1 0-4.4h.06a1.8 1.8 0 0 0 1.62-1 1.8 1.8 0 0 0-.36-1.98l-.04-.04A2.18 2.18 0 0 1 6.36 3.1l.04.04a1.8 1.8 0 0 0 1.98.36h.08A1.8 1.8 0 0 0 9.4 1.88V1.8a2.2 2.2 0 0 1 4.4 0v.06a1.8 1.8 0 0 0 1 1.62 1.8 1.8 0 0 0 1.98-.36l.04-.04A2.18 2.18 0 0 1 19.9 6.16l-.04.04a1.8 1.8 0 0 0-.36 1.98v.08a1.8 1.8 0 0 0 1.62.94h.08a2.2 2.2 0 0 1 0 4.4h-.06A1.8 1.8 0 0 0 19.4 15Z",
17
+ ],
18
+ star: [
19
+ "M12 2l3.09 6.26 6.91 1-5 4.87 1.18 6.87L12 17.77 5.82 21 7 14.13l-5-4.87 6.91-1L12 2Z",
20
+ ],
21
+ x: ["M18 6 6 18", "M6 6l12 12"],
22
+ };
23
+ function ClassIcon({ className = "cc-icon", name, }) {
24
+ return (jsxRuntime.jsx("svg", { "aria-hidden": "true", className: className, fill: name === "star" ? "currentColor" : "none", focusable: "false", viewBox: "0 0 24 24", children: classIconPaths[name].map((d) => (jsxRuntime.jsx("path", { d: d, stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: name === "star" ? 0 : 2 }, d))) }));
25
+ }
26
+ const EMPTY_TABLE_SELECTED_KEYS = [];
27
+ function usePresence(open, duration) {
28
+ const [mounted, setMounted] = React.useState(open);
29
+ const [state, setState] = React.useState(open ? "enter" : "exit");
30
+ React.useEffect(() => {
31
+ let frame = 0;
32
+ if (open) {
33
+ setMounted(true);
34
+ setState("exit");
35
+ frame = window.requestAnimationFrame(() => setState("enter"));
36
+ return () => window.cancelAnimationFrame(frame);
37
+ }
38
+ setState("exit");
39
+ const timer = window.setTimeout(() => setMounted(false), duration);
40
+ return () => window.clearTimeout(timer);
41
+ }, [duration, open]);
42
+ return [mounted, state];
43
+ }
44
+ function renderBodyPortal(node) {
45
+ return typeof document === "undefined"
46
+ ? node
47
+ : reactDom.createPortal(node, document.body);
48
+ }
49
+ function DefaultLoadingIndicator() {
50
+ return (jsxRuntime.jsxs("svg", { className: "cc-loading__bolt", viewBox: "0 0 96 96", focusable: "false", children: [jsxRuntime.jsx("ellipse", { className: "cc-loading__bolt-shadow", cx: "51", cy: "74", rx: "28", ry: "8" }), jsxRuntime.jsx("path", { className: "cc-loading__bolt-side", d: "M54 8 26 48h20L34 82l39-46H51L65 8Z" }), jsxRuntime.jsx("path", { className: "cc-loading__bolt-face", d: "M48 6 20 46h20L28 80l39-46H45L59 6Z" }), jsxRuntime.jsx("path", { className: "cc-loading__bolt-highlight", d: "M48 14 31 39h17L39 62l18-24H43l10-24Z" })] }));
51
+ }
52
+ function Loading({ className, indicator, text = core.getClassComponentsLocale().loadingText, ...props }) {
53
+ return (jsxRuntime.jsxs("div", { className: ["cc-loading", className].filter(Boolean).join(" "), role: "status", "aria-live": "polite", ...props, children: [jsxRuntime.jsx("span", { className: "cc-loading__indicator", "aria-hidden": "true", children: indicator ?? jsxRuntime.jsx(DefaultLoadingIndicator, {}) }), text ? jsxRuntime.jsx("span", { className: "cc-loading__text", children: text }) : null] }));
54
+ }
55
+ function DefaultEmptyIcon() {
56
+ return (jsxRuntime.jsxs("svg", { className: "cc-empty__illustration", viewBox: "0 0 96 96", focusable: "false", children: [jsxRuntime.jsx("ellipse", { className: "cc-empty__illustration-shadow", cx: "48", cy: "76", rx: "31", ry: "8" }), jsxRuntime.jsx("path", { className: "cc-empty__tray-back", d: "M24 48h48l9 18H15l9-18Z" }), jsxRuntime.jsx("path", { className: "cc-empty__tray-front", d: "M15 66h66l-8 16H23l-8-16Z" }), jsxRuntime.jsx("path", { className: "cc-empty__tray-lip", d: "M27 58h42" }), jsxRuntime.jsx("path", { className: "cc-empty__tray-glow", d: "M32 70h32" }), jsxRuntime.jsx("path", { className: "cc-empty__mini-bolt-side", d: "M54 10 36 38h13l-7 26 27-36H55l9-18Z" }), jsxRuntime.jsx("path", { className: "cc-empty__mini-bolt-face", d: "M49 8 31 36h13l-7 26 27-36H50l9-18Z" }), jsxRuntime.jsx("path", { className: "cc-empty__mini-bolt-highlight", d: "M49 16 39 32h10l-5 15 11-17h-9l7-14Z" }), jsxRuntime.jsx("path", { className: "cc-empty__spark", d: "M23 32h8M27 28v8" }), jsxRuntime.jsx("path", { className: "cc-empty__spark cc-empty__spark--small", d: "M71 44h6M74 41v6" })] }));
57
+ }
58
+ function Empty({ className, description = core.getClassComponentsLocale().emptyText, icon, ...props }) {
59
+ return (jsxRuntime.jsxs("div", { className: ["cc-empty", className].filter(Boolean).join(" "), role: "status", ...props, children: [jsxRuntime.jsx("span", { className: "cc-empty__icon", "aria-hidden": "true", children: icon ?? jsxRuntime.jsx(DefaultEmptyIcon, {}) }), description ? (jsxRuntime.jsx("span", { className: "cc-empty__description", children: description })) : null] }));
60
+ }
61
+ function TableCheckbox({ checked, disabled = false, indeterminate = false, onChange, label, }) {
62
+ const ref = React.useRef(null);
63
+ React.useEffect(() => {
64
+ if (ref.current)
65
+ ref.current.indeterminate = indeterminate;
66
+ }, [indeterminate]);
67
+ return (jsxRuntime.jsxs("label", { className: "cc-choice cc-table__checkbox", "aria-label": label, children: [jsxRuntime.jsx("input", { ref: ref, checked: checked, disabled: disabled, type: "checkbox", onChange: (event) => onChange(event.currentTarget.checked) }), jsxRuntime.jsx("span", { className: "cc-table__checkbox-label" })] }));
68
+ }
69
+ function Table({ className = "cc-table", columns, dataSource, emptyText = core.getClassComponentsLocale().tableEmptyText, getRowKey, loading = false, loadingCoverHeader = false, loadingText = core.getClassComponentsLocale().tableLoadingText, overscan = 6, rowSelection = false, rowHeight = 44, selectedKeys = EMPTY_TABLE_SELECTED_KEYS, columnSettingsSelectedIcon = jsxRuntime.jsx(ClassIcon, { name: "check" }), settingsIcon = jsxRuntime.jsx(ClassIcon, { name: "settings" }), style, virtual = false, virtualHeight = 320, onScroll, onSelectionChange, renderEmpty, renderLoading, renderCell, ...props }) {
70
+ const rootRef = React.useRef(null);
71
+ const bodyRef = React.useRef(null);
72
+ const settingsRef = React.useRef(null);
73
+ const settingsButtonRef = React.useRef(null);
74
+ const settingsMenuRef = React.useRef(null);
75
+ const controllerRef = React.useRef(new core.TableController({
76
+ columns,
77
+ containerWidth: 0,
78
+ getRowKey,
79
+ rows: dataSource,
80
+ selectedKeys,
81
+ }));
82
+ const virtualControllerRef = React.useRef(new core.VirtualListController({
83
+ count: dataSource.length,
84
+ estimateSize: rowHeight,
85
+ overscan,
86
+ }));
87
+ const [state, setState] = React.useState(() => controllerRef.current.getState());
88
+ const [containerWidth, setContainerWidth] = React.useState(0);
89
+ const [settingsOpen, setSettingsOpen] = React.useState(false);
90
+ const [settingsMounted, settingsPresence] = usePresence(settingsOpen, 180);
91
+ const [settingsMenuStyle, setSettingsMenuStyle] = React.useState({});
92
+ const [scrollTop, setScrollTop] = React.useState(0);
93
+ const [bodyScrollbarWidth, setBodyScrollbarWidth] = React.useState(0);
94
+ const getContentWidth = React.useCallback(() => Math.max(0, (rootRef.current?.clientWidth ?? 0) -
95
+ (rowSelection ? 44 : 0) -
96
+ (virtual ? bodyScrollbarWidth : 0)), [bodyScrollbarWidth, rowSelection, virtual]);
97
+ const updateSettingsMenuPosition = React.useCallback(() => {
98
+ const trigger = settingsButtonRef.current;
99
+ if (!trigger || typeof window === "undefined")
100
+ return;
101
+ const rect = trigger.getBoundingClientRect();
102
+ const width = 220;
103
+ const gap = 6;
104
+ const padding = 8;
105
+ const preferredHeight = Math.min(320, Math.max(160, state.allColumns.length * 42 + 12));
106
+ const below = window.innerHeight - rect.bottom - padding;
107
+ const above = rect.top - padding;
108
+ const placement = below >= preferredHeight || below >= above ? "bottom" : "top";
109
+ const maxHeight = Math.min(preferredHeight, Math.max(120, (placement === "bottom" ? below : above) - gap));
110
+ setSettingsMenuStyle({
111
+ left: Math.min(Math.max(padding, rect.right - width), Math.max(padding, window.innerWidth - width - padding)),
112
+ maxHeight,
113
+ top: placement === "bottom"
114
+ ? rect.bottom + gap
115
+ : Math.max(padding, rect.top - gap - maxHeight),
116
+ width,
117
+ });
118
+ }, [state.allColumns.length]);
119
+ React.useEffect(() => {
120
+ const element = rootRef.current;
121
+ if (!element)
122
+ return;
123
+ const updateWidth = () => setContainerWidth(getContentWidth());
124
+ updateWidth();
125
+ if (typeof ResizeObserver === "undefined") {
126
+ window.addEventListener("resize", updateWidth);
127
+ return () => window.removeEventListener("resize", updateWidth);
128
+ }
129
+ const observer = new ResizeObserver(updateWidth);
130
+ observer.observe(element);
131
+ return () => observer.disconnect();
132
+ }, [getContentWidth]);
133
+ React.useEffect(() => setState(controllerRef.current.update({
134
+ columns,
135
+ containerWidth,
136
+ getRowKey,
137
+ rows: dataSource,
138
+ selectedKeys,
139
+ })), [columns, containerWidth, dataSource, getRowKey, selectedKeys]);
140
+ React.useEffect(() => {
141
+ virtualControllerRef.current.updateOptions({
142
+ count: state.rows.length,
143
+ estimateSize: rowHeight,
144
+ overscan,
145
+ });
146
+ }, [overscan, rowHeight, state.rows.length]);
147
+ React.useEffect(() => {
148
+ const element = bodyRef.current;
149
+ if (!virtual || !element) {
150
+ setBodyScrollbarWidth(0);
151
+ return undefined;
152
+ }
153
+ const updateScrollbarWidth = () => {
154
+ setBodyScrollbarWidth(Math.max(0, element.offsetWidth - element.clientWidth));
155
+ };
156
+ updateScrollbarWidth();
157
+ if (typeof ResizeObserver === "undefined") {
158
+ window.addEventListener("resize", updateScrollbarWidth);
159
+ return () => window.removeEventListener("resize", updateScrollbarWidth);
160
+ }
161
+ const observer = new ResizeObserver(updateScrollbarWidth);
162
+ observer.observe(element);
163
+ return () => observer.disconnect();
164
+ }, [state.rows.length, virtual, virtualHeight]);
165
+ React.useEffect(() => {
166
+ if (!settingsOpen)
167
+ return undefined;
168
+ updateSettingsMenuPosition();
169
+ const close = (event) => {
170
+ const target = event.target;
171
+ if (!settingsRef.current?.contains(target) &&
172
+ !settingsMenuRef.current?.contains(target))
173
+ setSettingsOpen(false);
174
+ };
175
+ document.addEventListener("mousedown", close);
176
+ window.addEventListener("resize", updateSettingsMenuPosition);
177
+ window.addEventListener("scroll", updateSettingsMenuPosition, true);
178
+ return () => {
179
+ document.removeEventListener("mousedown", close);
180
+ window.removeEventListener("resize", updateSettingsMenuPosition);
181
+ window.removeEventListener("scroll", updateSettingsMenuPosition, true);
182
+ };
183
+ }, [settingsOpen, updateSettingsMenuPosition]);
184
+ const tableViewportWidth = rootRef.current?.clientWidth ?? containerWidth + (rowSelection ? 44 : 0);
185
+ const displayColumns = state.columns;
186
+ const dataGridTemplateColumns = `${rowSelection ? "44px " : ""}${displayColumns.map((column) => `${column.width}px`).join(" ")}`;
187
+ const headerScrollbarWidth = virtual ? bodyScrollbarWidth : 0;
188
+ const dataViewportWidth = Math.max(0, tableViewportWidth - headerScrollbarWidth);
189
+ const headerGridTemplateColumns = `${rowSelection ? "44px " : ""}${displayColumns.map((column) => `${column.width}px`).join(" ")}${headerScrollbarWidth > 0 ? ` ${headerScrollbarWidth}px` : ""}`;
190
+ const range = virtual
191
+ ? virtualControllerRef.current.getRange(scrollTop, virtualHeight)
192
+ : null;
193
+ const commitSelection = (key, checked) => {
194
+ const next = controllerRef.current.toggleRow(key, checked);
195
+ setState(next);
196
+ onSelectionChange?.(next.selectedKeys);
197
+ };
198
+ const commitAllSelection = (checked) => {
199
+ const next = controllerRef.current.toggleAllRows(checked);
200
+ setState(next);
201
+ onSelectionChange?.(next.selectedKeys);
202
+ };
203
+ const toggleColumn = (key, visible) => {
204
+ setState(controllerRef.current.toggleColumn(key, visible, getContentWidth()));
205
+ };
206
+ const handleBodyScroll = (event) => {
207
+ if (!virtual)
208
+ return;
209
+ setScrollTop(event.currentTarget.scrollTop);
210
+ if (rootRef.current &&
211
+ rootRef.current.scrollLeft !== event.currentTarget.scrollLeft) {
212
+ rootRef.current.scrollLeft = event.currentTarget.scrollLeft;
213
+ }
214
+ };
215
+ const syncVirtualBodyScroll = React.useCallback(() => {
216
+ if (!virtual || !rootRef.current || !bodyRef.current)
217
+ return;
218
+ bodyRef.current.scrollLeft = rootRef.current.scrollLeft;
219
+ }, [virtual]);
220
+ const tableContentWidth = React.useMemo(() => (rowSelection ? 44 : 0) +
221
+ displayColumns.reduce((sum, column) => sum + column.width, 0), [displayColumns, rowSelection]);
222
+ const tableWidthStyle = React.useMemo(() => ({ width: Math.max(tableContentWidth, dataViewportWidth) }), [dataViewportWidth, tableContentWidth]);
223
+ const headerWidthStyle = React.useMemo(() => ({
224
+ width: Math.max(tableContentWidth + headerScrollbarWidth, tableViewportWidth),
225
+ }), [headerScrollbarWidth, tableContentWidth, tableViewportWidth]);
226
+ const bodyWidthStyle = React.useMemo(() => (virtual ? { width: tableViewportWidth } : tableWidthStyle), [tableViewportWidth, tableWidthStyle, virtual]);
227
+ React.useEffect(() => {
228
+ syncVirtualBodyScroll();
229
+ }, [syncVirtualBodyScroll, tableContentWidth, tableViewportWidth]);
230
+ const hasHorizontalOverflow = tableContentWidth + headerScrollbarWidth > tableViewportWidth + 1;
231
+ const visibleColumnCount = state.columns.length;
232
+ const getFixedEdge = (column) => {
233
+ if (!hasHorizontalOverflow)
234
+ return undefined;
235
+ if (column.fixed === "left") {
236
+ const leftFixed = displayColumns.filter((item) => item.fixed === "left");
237
+ return leftFixed[leftFixed.length - 1]?.key === column.key
238
+ ? "left"
239
+ : undefined;
240
+ }
241
+ if (column.fixed === "right") {
242
+ const rightFixed = displayColumns.filter((item) => item.fixed === "right");
243
+ return rightFixed[0]?.key === column.key ? "right" : undefined;
244
+ }
245
+ return undefined;
246
+ };
247
+ const hasLeftFixedColumns = state.columns.some((column) => column.fixed === "left");
248
+ const getColumnStickyStyle = (column, area = "body") => {
249
+ const visibleColumns = displayColumns;
250
+ const index = visibleColumns.findIndex((item) => item.key === column.key);
251
+ if (index < 0 || !column.fixed)
252
+ return {};
253
+ if (!hasHorizontalOverflow)
254
+ return {};
255
+ if (column.fixed === "left") {
256
+ const left = visibleColumns
257
+ .slice(0, index)
258
+ .filter((item) => item.fixed === "left")
259
+ .reduce((sum, item) => sum + item.width, rowSelection ? 44 : 0);
260
+ return {
261
+ left,
262
+ position: "sticky",
263
+ zIndex: 3,
264
+ };
265
+ }
266
+ const right = visibleColumns
267
+ .slice(index + 1)
268
+ .filter((item) => item.fixed === "right")
269
+ .reduce((sum, item) => sum + item.width, area === "head" ? headerScrollbarWidth : 0);
270
+ return {
271
+ position: "sticky",
272
+ right,
273
+ zIndex: 3,
274
+ };
275
+ };
276
+ const renderRow = (row, rowIndex) => {
277
+ const key = controllerRef.current.getRowKey(row, rowIndex);
278
+ const checked = state.selectedKeys.includes(key);
279
+ return (jsxRuntime.jsxs("div", { className: "cc-table__row", style: {
280
+ ...tableWidthStyle,
281
+ gridTemplateColumns: dataGridTemplateColumns,
282
+ minHeight: rowHeight,
283
+ }, children: [rowSelection ? (jsxRuntime.jsx("div", { className: "cc-table__selection cc-table__selection--fixed", "data-fixed-edge": hasHorizontalOverflow && !hasLeftFixedColumns ? "left" : undefined, children: jsxRuntime.jsx(TableCheckbox, { checked: checked, label: `${core.getClassComponentsLocale().tableSelectRowLabel} ${String(key)}`, onChange: (nextChecked) => commitSelection(key, nextChecked) }) })) : null, displayColumns.map((column) => (jsxRuntime.jsx("div", { className: "cc-table__cell", "data-fixed": hasHorizontalOverflow ? column.fixed : undefined, "data-fixed-edge": getFixedEdge(column), style: getColumnStickyStyle(column), children: renderCell
284
+ ? renderCell(row, column, rowIndex)
285
+ : String(row[column.dataIndex] ?? "") }, column.key)))] }, String(key)));
286
+ };
287
+ return (jsxRuntime.jsxs("div", { className: className, ref: rootRef, style: style, onScroll: (event) => {
288
+ syncVirtualBodyScroll();
289
+ onScroll?.(event);
290
+ }, ...props, children: [jsxRuntime.jsxs("div", { className: "cc-table__row cc-table__row--head", style: {
291
+ ...headerWidthStyle,
292
+ gridTemplateColumns: headerGridTemplateColumns,
293
+ }, children: [rowSelection ? (jsxRuntime.jsx("div", { className: "cc-table__selection cc-table__selection--head cc-table__selection--fixed", "data-fixed-edge": hasHorizontalOverflow && !hasLeftFixedColumns ? "left" : undefined, children: jsxRuntime.jsx(TableCheckbox, { checked: state.selectionStatus === "all", indeterminate: state.selectionStatus === "partial", label: core.getClassComponentsLocale().tableSelectAllLabel, onChange: (checked) => commitAllSelection(checked) }) })) : null, displayColumns.map((column, index) => (jsxRuntime.jsxs("div", { className: "cc-table__cell cc-table__cell--head", "data-fixed": hasHorizontalOverflow ? column.fixed : undefined, "data-fixed-edge": getFixedEdge(column), style: getColumnStickyStyle(column, "head"), children: [column.title, jsxRuntime.jsx("span", { className: "cc-table__resize", onPointerDown: (event) => {
294
+ const startX = event.clientX;
295
+ let lastX = startX;
296
+ const availableWidth = getContentWidth();
297
+ const move = (moveEvent) => {
298
+ const delta = moveEvent.clientX - lastX;
299
+ lastX = moveEvent.clientX;
300
+ setState(controllerRef.current.resizeColumn(column.key, delta, availableWidth));
301
+ };
302
+ const end = () => {
303
+ window.removeEventListener("pointermove", move);
304
+ window.removeEventListener("pointerup", end);
305
+ };
306
+ window.addEventListener("pointermove", move);
307
+ window.addEventListener("pointerup", end);
308
+ } }), index === displayColumns.length - 1 ? (jsxRuntime.jsxs("div", { className: "cc-table__column-settings", ref: settingsRef, children: [jsxRuntime.jsx("button", { "aria-expanded": settingsOpen, "aria-label": core.getClassComponentsLocale().tableColumnSettingsLabel, ref: settingsButtonRef, type: "button", onClick: () => {
309
+ setSettingsOpen((open) => !open);
310
+ window.requestAnimationFrame(updateSettingsMenuPosition);
311
+ }, children: settingsIcon }), settingsMounted
312
+ ? renderBodyPortal(jsxRuntime.jsx("div", { "aria-multiselectable": "true", className: "cc-select__menu cc-table__column-menu", "data-state": settingsPresence, ref: settingsMenuRef, role: "listbox", style: settingsMenuStyle, children: state.allColumns.map((column) => (jsxRuntime.jsxs("label", { className: "cc-select__option cc-table__column-option", "data-disabled": !column.hidden && visibleColumnCount <= 1, "data-selected": !column.hidden, role: "option", children: [jsxRuntime.jsx(TableCheckbox, { checked: !column.hidden, disabled: !column.hidden && visibleColumnCount <= 1, label: column.title, onChange: (checked) => toggleColumn(column.key, checked) }), jsxRuntime.jsx("span", { children: column.title }), !column.hidden ? (jsxRuntime.jsx("span", { "aria-hidden": "true", className: "cc-select__check", children: columnSettingsSelectedIcon })) : null] }, column.key))) }))
313
+ : null] })) : null] }, column.key))), headerScrollbarWidth > 0 ? (jsxRuntime.jsx("div", { className: "cc-table__scrollbar-spacer cc-table__scrollbar-spacer--head" })) : null] }), jsxRuntime.jsx("div", { className: virtual ? "cc-table__body cc-table__body--virtual" : "cc-table__body", ref: bodyRef, onScroll: handleBodyScroll, style: virtual
314
+ ? {
315
+ ...bodyWidthStyle,
316
+ maxHeight: virtualHeight,
317
+ overflowX: "hidden",
318
+ overflowY: "auto",
319
+ }
320
+ : bodyWidthStyle, children: !loading && state.rows.length === 0 ? (jsxRuntime.jsx("div", { className: "cc-table__state", children: renderEmpty?.() ?? (jsxRuntime.jsx(Empty, { className: "cc-table__empty", description: emptyText })) })) : virtual && range ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [range.offsetBefore > 0 ? (jsxRuntime.jsx("div", { style: { height: range.offsetBefore } })) : null, range.items.map((item) => {
321
+ const row = state.rows[item.index];
322
+ return row ? renderRow(row, item.index) : null;
323
+ }), range.offsetAfter > 0 ? (jsxRuntime.jsx("div", { style: { height: range.offsetAfter } })) : null] })) : (state.rows.map(renderRow)) }), loading ? (jsxRuntime.jsx("div", { className: "cc-table__loading", "data-cover-header": loadingCoverHeader, children: renderLoading?.() ?? jsxRuntime.jsx(Loading, { text: loadingText }) })) : null] }));
324
+ }
325
+ const VirtualTable = Table;
326
+
327
+ exports.VirtualTable = VirtualTable;
328
+ //# sourceMappingURL=virtual-table.cjs.map