solid-tom-ui 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 (451) hide show
  1. package/README.md +247 -0
  2. package/dist/components/avatar/avatar.d.ts +14 -0
  3. package/dist/components/avatar/avatar.d.ts.map +1 -0
  4. package/dist/components/avatar/avatar.js +2 -0
  5. package/dist/components/avatar/avatar.js.map +1 -0
  6. package/dist/components/avatar/avatar.types.d.ts +18 -0
  7. package/dist/components/avatar/avatar.types.d.ts.map +1 -0
  8. package/dist/components/avatar/index.d.ts +2 -0
  9. package/dist/components/avatar/index.d.ts.map +1 -0
  10. package/dist/components/badge/badge.d.ts +12 -0
  11. package/dist/components/badge/badge.d.ts.map +1 -0
  12. package/dist/components/badge/badge.js +2 -0
  13. package/dist/components/badge/badge.js.map +1 -0
  14. package/dist/components/badge/badge.types.d.ts +10 -0
  15. package/dist/components/badge/badge.types.d.ts.map +1 -0
  16. package/dist/components/badge/index.d.ts +3 -0
  17. package/dist/components/badge/index.d.ts.map +1 -0
  18. package/dist/components/blank/blank.d.ts +5 -0
  19. package/dist/components/blank/blank.d.ts.map +1 -0
  20. package/dist/components/blank/blank.js +2 -0
  21. package/dist/components/blank/blank.js.map +1 -0
  22. package/dist/components/blank/index.d.ts +2 -0
  23. package/dist/components/blank/index.d.ts.map +1 -0
  24. package/dist/components/breadcrumb/breadcrumb.d.ts +11 -0
  25. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
  26. package/dist/components/breadcrumb/breadcrumb.js +2 -0
  27. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  28. package/dist/components/breadcrumb/index.d.ts +2 -0
  29. package/dist/components/breadcrumb/index.d.ts.map +1 -0
  30. package/dist/components/button/button.d.ts +19 -0
  31. package/dist/components/button/button.d.ts.map +1 -0
  32. package/dist/components/button/button.js +2 -0
  33. package/dist/components/button/button.js.map +1 -0
  34. package/dist/components/button/button.types.d.ts +30 -0
  35. package/dist/components/button/button.types.d.ts.map +1 -0
  36. package/dist/components/button/index.d.ts +2 -0
  37. package/dist/components/button/index.d.ts.map +1 -0
  38. package/dist/components/carousel/carousel.d.ts +4 -0
  39. package/dist/components/carousel/carousel.d.ts.map +1 -0
  40. package/dist/components/carousel/carousel.js +2 -0
  41. package/dist/components/carousel/carousel.js.map +1 -0
  42. package/dist/components/carousel/carousel.types.d.ts +36 -0
  43. package/dist/components/carousel/carousel.types.d.ts.map +1 -0
  44. package/dist/components/carousel/index.d.ts +3 -0
  45. package/dist/components/carousel/index.d.ts.map +1 -0
  46. package/dist/components/chat-bubble/chatBubble.d.ts +11 -0
  47. package/dist/components/chat-bubble/chatBubble.d.ts.map +1 -0
  48. package/dist/components/chat-bubble/chatBubble.js +2 -0
  49. package/dist/components/chat-bubble/chatBubble.js.map +1 -0
  50. package/dist/components/chat-bubble/chatBubble.type.d.ts +12 -0
  51. package/dist/components/chat-bubble/chatBubble.type.d.ts.map +1 -0
  52. package/dist/components/chat-bubble/index.d.ts +2 -0
  53. package/dist/components/chat-bubble/index.d.ts.map +1 -0
  54. package/dist/components/checkbox/checkbox.d.ts +22 -0
  55. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  56. package/dist/components/checkbox/checkbox.js +2 -0
  57. package/dist/components/checkbox/checkbox.js.map +1 -0
  58. package/dist/components/checkbox/index.d.ts +3 -0
  59. package/dist/components/checkbox/index.d.ts.map +1 -0
  60. package/dist/components/collapse/collapse.d.ts +12 -0
  61. package/dist/components/collapse/collapse.d.ts.map +1 -0
  62. package/dist/components/collapse/collapse.js +2 -0
  63. package/dist/components/collapse/collapse.js.map +1 -0
  64. package/dist/components/collapse/collapse.types.d.ts +17 -0
  65. package/dist/components/collapse/collapse.types.d.ts.map +1 -0
  66. package/dist/components/collapse/index.d.ts +2 -0
  67. package/dist/components/collapse/index.d.ts.map +1 -0
  68. package/dist/components/context-menu/context-menu.d.ts +4 -0
  69. package/dist/components/context-menu/context-menu.d.ts.map +1 -0
  70. package/dist/components/context-menu/context-menu.js +2 -0
  71. package/dist/components/context-menu/context-menu.js.map +1 -0
  72. package/dist/components/context-menu/context-menu.store.d.ts +14 -0
  73. package/dist/components/context-menu/context-menu.store.d.ts.map +1 -0
  74. package/dist/components/context-menu/context-menu.store.js +2 -0
  75. package/dist/components/context-menu/context-menu.store.js.map +1 -0
  76. package/dist/components/context-menu/context-menu.types.d.ts +51 -0
  77. package/dist/components/context-menu/context-menu.types.d.ts.map +1 -0
  78. package/dist/components/context-menu/index.d.ts +4 -0
  79. package/dist/components/context-menu/index.d.ts.map +1 -0
  80. package/dist/components/diff/diff.d.ts +9 -0
  81. package/dist/components/diff/diff.d.ts.map +1 -0
  82. package/dist/components/diff/diff.js +2 -0
  83. package/dist/components/diff/diff.js.map +1 -0
  84. package/dist/components/diff/index.d.ts +2 -0
  85. package/dist/components/diff/index.d.ts.map +1 -0
  86. package/dist/components/divider/divider.d.ts +5 -0
  87. package/dist/components/divider/divider.d.ts.map +1 -0
  88. package/dist/components/divider/divider.js +2 -0
  89. package/dist/components/divider/divider.js.map +1 -0
  90. package/dist/components/divider/divider.types.d.ts +16 -0
  91. package/dist/components/divider/divider.types.d.ts.map +1 -0
  92. package/dist/components/divider/index.d.ts +3 -0
  93. package/dist/components/divider/index.d.ts.map +1 -0
  94. package/dist/components/drawer/drawer.d.ts +6 -0
  95. package/dist/components/drawer/drawer.d.ts.map +1 -0
  96. package/dist/components/drawer/drawer.js +2 -0
  97. package/dist/components/drawer/drawer.js.map +1 -0
  98. package/dist/components/drawer/drawer.types.d.ts +19 -0
  99. package/dist/components/drawer/drawer.types.d.ts.map +1 -0
  100. package/dist/components/drawer/index.d.ts +3 -0
  101. package/dist/components/drawer/index.d.ts.map +1 -0
  102. package/dist/components/dropdown/dropdown.d.ts +11 -0
  103. package/dist/components/dropdown/dropdown.d.ts.map +1 -0
  104. package/dist/components/dropdown/dropdown.js +2 -0
  105. package/dist/components/dropdown/dropdown.js.map +1 -0
  106. package/dist/components/dropdown/dropdown.store.d.ts +8 -0
  107. package/dist/components/dropdown/dropdown.store.d.ts.map +1 -0
  108. package/dist/components/dropdown/dropdown.store.js +2 -0
  109. package/dist/components/dropdown/dropdown.store.js.map +1 -0
  110. package/dist/components/dropdown/dropdown.types.d.ts +15 -0
  111. package/dist/components/dropdown/dropdown.types.d.ts.map +1 -0
  112. package/dist/components/dropdown/index.d.ts +3 -0
  113. package/dist/components/dropdown/index.d.ts.map +1 -0
  114. package/dist/components/dynamic-icon/DynamicIcon.d.ts +8 -0
  115. package/dist/components/dynamic-icon/DynamicIcon.d.ts.map +1 -0
  116. package/dist/components/dynamic-icon/index.d.ts +2 -0
  117. package/dist/components/dynamic-icon/index.d.ts.map +1 -0
  118. package/dist/components/float-button/float-button.d.ts +5 -0
  119. package/dist/components/float-button/float-button.d.ts.map +1 -0
  120. package/dist/components/float-button/float-button.js +2 -0
  121. package/dist/components/float-button/float-button.js.map +1 -0
  122. package/dist/components/float-button/float-button.types.d.ts +42 -0
  123. package/dist/components/float-button/float-button.types.d.ts.map +1 -0
  124. package/dist/components/float-button/index.d.ts +2 -0
  125. package/dist/components/float-button/index.d.ts.map +1 -0
  126. package/dist/components/hover-3d-image/hover-3d-example.d.ts +3 -0
  127. package/dist/components/hover-3d-image/hover-3d-example.d.ts.map +1 -0
  128. package/dist/components/hover-3d-image/hover-3d-image.d.ts +13 -0
  129. package/dist/components/hover-3d-image/hover-3d-image.d.ts.map +1 -0
  130. package/dist/components/hover-3d-image/hover-3d-image.js +2 -0
  131. package/dist/components/hover-3d-image/hover-3d-image.js.map +1 -0
  132. package/dist/components/hover-3d-image/index.d.ts +2 -0
  133. package/dist/components/hover-3d-image/index.d.ts.map +1 -0
  134. package/dist/components/iframe/index.d.ts +7 -0
  135. package/dist/components/iframe/index.d.ts.map +1 -0
  136. package/dist/components/image-preview/image-preview.d.ts +25 -0
  137. package/dist/components/image-preview/image-preview.d.ts.map +1 -0
  138. package/dist/components/image-preview/image-preview.js +2 -0
  139. package/dist/components/image-preview/image-preview.js.map +1 -0
  140. package/dist/components/image-preview/index.d.ts +3 -0
  141. package/dist/components/image-preview/index.d.ts.map +1 -0
  142. package/dist/components/indicator/index.d.ts +3 -0
  143. package/dist/components/indicator/index.d.ts.map +1 -0
  144. package/dist/components/indicator/indicator.d.ts +4 -0
  145. package/dist/components/indicator/indicator.d.ts.map +1 -0
  146. package/dist/components/indicator/indicator.js +2 -0
  147. package/dist/components/indicator/indicator.js.map +1 -0
  148. package/dist/components/indicator/indicator.types.d.ts +18 -0
  149. package/dist/components/indicator/indicator.types.d.ts.map +1 -0
  150. package/dist/components/input/index.d.ts +2 -0
  151. package/dist/components/input/index.d.ts.map +1 -0
  152. package/dist/components/input/input.d.ts +17 -0
  153. package/dist/components/input/input.d.ts.map +1 -0
  154. package/dist/components/input/input.js +2 -0
  155. package/dist/components/input/input.js.map +1 -0
  156. package/dist/components/input/input.types.d.ts +76 -0
  157. package/dist/components/input/input.types.d.ts.map +1 -0
  158. package/dist/components/input/input.utils.d.ts +16 -0
  159. package/dist/components/input/input.utils.d.ts.map +1 -0
  160. package/dist/components/input/input.utils.js +2 -0
  161. package/dist/components/input/input.utils.js.map +1 -0
  162. package/dist/components/input/variants/input-color.d.ts +4 -0
  163. package/dist/components/input/variants/input-color.d.ts.map +1 -0
  164. package/dist/components/input/variants/input-color.js +2 -0
  165. package/dist/components/input/variants/input-color.js.map +1 -0
  166. package/dist/components/input/variants/input-date.d.ts +4 -0
  167. package/dist/components/input/variants/input-date.d.ts.map +1 -0
  168. package/dist/components/input/variants/input-date.js +2 -0
  169. package/dist/components/input/variants/input-date.js.map +1 -0
  170. package/dist/components/input/variants/input-number.d.ts +4 -0
  171. package/dist/components/input/variants/input-number.d.ts.map +1 -0
  172. package/dist/components/input/variants/input-number.js +2 -0
  173. package/dist/components/input/variants/input-number.js.map +1 -0
  174. package/dist/components/input/variants/input-otp.d.ts +5 -0
  175. package/dist/components/input/variants/input-otp.d.ts.map +1 -0
  176. package/dist/components/input/variants/input-otp.js +2 -0
  177. package/dist/components/input/variants/input-otp.js.map +1 -0
  178. package/dist/components/input/variants/input-password.d.ts +4 -0
  179. package/dist/components/input/variants/input-password.d.ts.map +1 -0
  180. package/dist/components/input/variants/input-password.js +2 -0
  181. package/dist/components/input/variants/input-password.js.map +1 -0
  182. package/dist/components/input/variants/input-radio.d.ts +22 -0
  183. package/dist/components/input/variants/input-radio.d.ts.map +1 -0
  184. package/dist/components/input/variants/input-radio.js +2 -0
  185. package/dist/components/input/variants/input-radio.js.map +1 -0
  186. package/dist/components/input/variants/input-range.d.ts +4 -0
  187. package/dist/components/input/variants/input-range.d.ts.map +1 -0
  188. package/dist/components/input/variants/input-range.js +2 -0
  189. package/dist/components/input/variants/input-range.js.map +1 -0
  190. package/dist/components/input/variants/input-text.d.ts +4 -0
  191. package/dist/components/input/variants/input-text.d.ts.map +1 -0
  192. package/dist/components/input/variants/input-text.js +2 -0
  193. package/dist/components/input/variants/input-text.js.map +1 -0
  194. package/dist/components/input/variants/input-textarea.d.ts +4 -0
  195. package/dist/components/input/variants/input-textarea.d.ts.map +1 -0
  196. package/dist/components/input/variants/input-textarea.js +2 -0
  197. package/dist/components/input/variants/input-textarea.js.map +1 -0
  198. package/dist/components/loading/index.d.ts +3 -0
  199. package/dist/components/loading/index.d.ts.map +1 -0
  200. package/dist/components/loading/loading.d.ts +32 -0
  201. package/dist/components/loading/loading.d.ts.map +1 -0
  202. package/dist/components/loading/loading.js +2 -0
  203. package/dist/components/loading/loading.js.map +1 -0
  204. package/dist/components/mansory/index.d.ts +3 -0
  205. package/dist/components/mansory/index.d.ts.map +1 -0
  206. package/dist/components/mansory/mansory.d.ts +4 -0
  207. package/dist/components/mansory/mansory.d.ts.map +1 -0
  208. package/dist/components/mansory/mansory.js +2 -0
  209. package/dist/components/mansory/mansory.js.map +1 -0
  210. package/dist/components/mansory/mansory.types.d.ts +27 -0
  211. package/dist/components/mansory/mansory.types.d.ts.map +1 -0
  212. package/dist/components/menu/index.d.ts +4 -0
  213. package/dist/components/menu/index.d.ts.map +1 -0
  214. package/dist/components/menu/menu.d.ts +11 -0
  215. package/dist/components/menu/menu.d.ts.map +1 -0
  216. package/dist/components/menu/menu.data-example.d.ts +7 -0
  217. package/dist/components/menu/menu.data-example.d.ts.map +1 -0
  218. package/dist/components/menu/menu.js +2 -0
  219. package/dist/components/menu/menu.js.map +1 -0
  220. package/dist/components/menu/menu.types.d.ts +74 -0
  221. package/dist/components/menu/menu.types.d.ts.map +1 -0
  222. package/dist/components/modal/index.d.ts +3 -0
  223. package/dist/components/modal/index.d.ts.map +1 -0
  224. package/dist/components/modal/modal.d.ts +28 -0
  225. package/dist/components/modal/modal.d.ts.map +1 -0
  226. package/dist/components/modal/modal.js +2 -0
  227. package/dist/components/modal/modal.js.map +1 -0
  228. package/dist/components/modal/modalContext.d.ts +8 -0
  229. package/dist/components/modal/modalContext.d.ts.map +1 -0
  230. package/dist/components/modal/modalContext.js +2 -0
  231. package/dist/components/modal/modalContext.js.map +1 -0
  232. package/dist/components/pagination/index.d.ts +3 -0
  233. package/dist/components/pagination/index.d.ts.map +1 -0
  234. package/dist/components/pagination/pagination.d.ts +4 -0
  235. package/dist/components/pagination/pagination.d.ts.map +1 -0
  236. package/dist/components/pagination/pagination.js +2 -0
  237. package/dist/components/pagination/pagination.js.map +1 -0
  238. package/dist/components/pagination/pagination.types.d.ts +88 -0
  239. package/dist/components/pagination/pagination.types.d.ts.map +1 -0
  240. package/dist/components/progress-bar/index.d.ts +4 -0
  241. package/dist/components/progress-bar/index.d.ts.map +1 -0
  242. package/dist/components/progress-bar/progress-bar.d.ts +8 -0
  243. package/dist/components/progress-bar/progress-bar.d.ts.map +1 -0
  244. package/dist/components/progress-bar/progress-bar.js +2 -0
  245. package/dist/components/progress-bar/progress-bar.js.map +1 -0
  246. package/dist/components/progress-bar/progress-bar.types.d.ts +20 -0
  247. package/dist/components/progress-bar/progress-bar.types.d.ts.map +1 -0
  248. package/dist/components/qr-code/index.d.ts +3 -0
  249. package/dist/components/qr-code/index.d.ts.map +1 -0
  250. package/dist/components/qr-code/qr-code.d.ts +4 -0
  251. package/dist/components/qr-code/qr-code.d.ts.map +1 -0
  252. package/dist/components/qr-code/qr-code.js +2 -0
  253. package/dist/components/qr-code/qr-code.js.map +1 -0
  254. package/dist/components/qr-code/qr-code.types.d.ts +42 -0
  255. package/dist/components/qr-code/qr-code.types.d.ts.map +1 -0
  256. package/dist/components/rating/index.d.ts +2 -0
  257. package/dist/components/rating/index.d.ts.map +1 -0
  258. package/dist/components/rating/rating.d.ts +4 -0
  259. package/dist/components/rating/rating.d.ts.map +1 -0
  260. package/dist/components/rating/rating.js +2 -0
  261. package/dist/components/rating/rating.js.map +1 -0
  262. package/dist/components/rating/rating.types.d.ts +33 -0
  263. package/dist/components/rating/rating.types.d.ts.map +1 -0
  264. package/dist/components/select/index.d.ts +3 -0
  265. package/dist/components/select/index.d.ts.map +1 -0
  266. package/dist/components/select/select.d.ts +12 -0
  267. package/dist/components/select/select.d.ts.map +1 -0
  268. package/dist/components/select/select.js +2 -0
  269. package/dist/components/select/select.js.map +1 -0
  270. package/dist/components/select/select.types.d.ts +134 -0
  271. package/dist/components/select/select.types.d.ts.map +1 -0
  272. package/dist/components/select-zone/index.d.ts +3 -0
  273. package/dist/components/select-zone/index.d.ts.map +1 -0
  274. package/dist/components/select-zone/select-zone.d.ts +5 -0
  275. package/dist/components/select-zone/select-zone.d.ts.map +1 -0
  276. package/dist/components/select-zone/select-zone.js +2 -0
  277. package/dist/components/select-zone/select-zone.js.map +1 -0
  278. package/dist/components/select-zone/select-zone.types.d.ts +58 -0
  279. package/dist/components/select-zone/select-zone.types.d.ts.map +1 -0
  280. package/dist/components/skeleton/index.d.ts +3 -0
  281. package/dist/components/skeleton/index.d.ts.map +1 -0
  282. package/dist/components/skeleton/skeleton.d.ts +25 -0
  283. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  284. package/dist/components/skeleton/skeleton.js +2 -0
  285. package/dist/components/skeleton/skeleton.js.map +1 -0
  286. package/dist/components/slider/index.d.ts +2 -0
  287. package/dist/components/slider/index.d.ts.map +1 -0
  288. package/dist/components/slider/slider.d.ts +4 -0
  289. package/dist/components/slider/slider.d.ts.map +1 -0
  290. package/dist/components/slider/slider.js +2 -0
  291. package/dist/components/slider/slider.js.map +1 -0
  292. package/dist/components/slider/slider.types.d.ts +32 -0
  293. package/dist/components/slider/slider.types.d.ts.map +1 -0
  294. package/dist/components/splitter/index.d.ts +3 -0
  295. package/dist/components/splitter/index.d.ts.map +1 -0
  296. package/dist/components/splitter/splitter.d.ts +7 -0
  297. package/dist/components/splitter/splitter.d.ts.map +1 -0
  298. package/dist/components/splitter/splitter.js +2 -0
  299. package/dist/components/splitter/splitter.js.map +1 -0
  300. package/dist/components/splitter/splitter.types.d.ts +64 -0
  301. package/dist/components/splitter/splitter.types.d.ts.map +1 -0
  302. package/dist/components/steps/index.d.ts +3 -0
  303. package/dist/components/steps/index.d.ts.map +1 -0
  304. package/dist/components/steps/steps.d.ts +29 -0
  305. package/dist/components/steps/steps.d.ts.map +1 -0
  306. package/dist/components/steps/steps.js +2 -0
  307. package/dist/components/steps/steps.js.map +1 -0
  308. package/dist/components/swap/index.d.ts +2 -0
  309. package/dist/components/swap/index.d.ts.map +1 -0
  310. package/dist/components/swap/swap.d.ts +11 -0
  311. package/dist/components/swap/swap.d.ts.map +1 -0
  312. package/dist/components/swap/swap.js +2 -0
  313. package/dist/components/swap/swap.js.map +1 -0
  314. package/dist/components/switch/index.d.ts +3 -0
  315. package/dist/components/switch/index.d.ts.map +1 -0
  316. package/dist/components/switch/switch.d.ts +11 -0
  317. package/dist/components/switch/switch.d.ts.map +1 -0
  318. package/dist/components/switch/switch.js +2 -0
  319. package/dist/components/switch/switch.js.map +1 -0
  320. package/dist/components/switch/switch.types.d.ts +23 -0
  321. package/dist/components/switch/switch.types.d.ts.map +1 -0
  322. package/dist/components/tab/index.d.ts +3 -0
  323. package/dist/components/tab/index.d.ts.map +1 -0
  324. package/dist/components/tab/tab.d.ts +4 -0
  325. package/dist/components/tab/tab.d.ts.map +1 -0
  326. package/dist/components/tab/tab.js +2 -0
  327. package/dist/components/tab/tab.js.map +1 -0
  328. package/dist/components/tab/tab.types.d.ts +51 -0
  329. package/dist/components/tab/tab.types.d.ts.map +1 -0
  330. package/dist/components/table/index.d.ts +4 -0
  331. package/dist/components/table/index.d.ts.map +1 -0
  332. package/dist/components/table/index.js +1 -0
  333. package/dist/components/table/table.d.ts +10 -0
  334. package/dist/components/table/table.d.ts.map +1 -0
  335. package/dist/components/table/table.js +2 -0
  336. package/dist/components/table/table.js.map +1 -0
  337. package/dist/components/table/table.types.d.ts +155 -0
  338. package/dist/components/table/table.types.d.ts.map +1 -0
  339. package/dist/components/text-rotate/index.d.ts +3 -0
  340. package/dist/components/text-rotate/index.d.ts.map +1 -0
  341. package/dist/components/text-rotate/text-rotate.d.ts +12 -0
  342. package/dist/components/text-rotate/text-rotate.d.ts.map +1 -0
  343. package/dist/components/text-rotate/text-rotate.js +2 -0
  344. package/dist/components/text-rotate/text-rotate.js.map +1 -0
  345. package/dist/components/timeline/index.d.ts +3 -0
  346. package/dist/components/timeline/index.d.ts.map +1 -0
  347. package/dist/components/timeline/timeline.d.ts +4 -0
  348. package/dist/components/timeline/timeline.d.ts.map +1 -0
  349. package/dist/components/timeline/timeline.js +2 -0
  350. package/dist/components/timeline/timeline.js.map +1 -0
  351. package/dist/components/timeline/timeline.types.d.ts +55 -0
  352. package/dist/components/timeline/timeline.types.d.ts.map +1 -0
  353. package/dist/components/toast/icons/ErrorIcon.d.ts +4 -0
  354. package/dist/components/toast/icons/ErrorIcon.d.ts.map +1 -0
  355. package/dist/components/toast/icons/ErrorIcon.js +2 -0
  356. package/dist/components/toast/icons/ErrorIcon.js.map +1 -0
  357. package/dist/components/toast/icons/IconCircle.d.ts +9 -0
  358. package/dist/components/toast/icons/IconCircle.d.ts.map +1 -0
  359. package/dist/components/toast/icons/IconCircle.js +2 -0
  360. package/dist/components/toast/icons/IconCircle.js.map +1 -0
  361. package/dist/components/toast/icons/InfoIcon.d.ts +4 -0
  362. package/dist/components/toast/icons/InfoIcon.d.ts.map +1 -0
  363. package/dist/components/toast/icons/InfoIcon.js +2 -0
  364. package/dist/components/toast/icons/InfoIcon.js.map +1 -0
  365. package/dist/components/toast/icons/LoaderIcon.d.ts +4 -0
  366. package/dist/components/toast/icons/LoaderIcon.d.ts.map +1 -0
  367. package/dist/components/toast/icons/LoaderIcon.js +2 -0
  368. package/dist/components/toast/icons/LoaderIcon.js.map +1 -0
  369. package/dist/components/toast/icons/SuccessIcon.d.ts +4 -0
  370. package/dist/components/toast/icons/SuccessIcon.d.ts.map +1 -0
  371. package/dist/components/toast/icons/SuccessIcon.js +2 -0
  372. package/dist/components/toast/icons/SuccessIcon.js.map +1 -0
  373. package/dist/components/toast/icons/WarningIcon.d.ts +4 -0
  374. package/dist/components/toast/icons/WarningIcon.d.ts.map +1 -0
  375. package/dist/components/toast/icons/WarningIcon.js +2 -0
  376. package/dist/components/toast/icons/WarningIcon.js.map +1 -0
  377. package/dist/components/toast/icons/index.d.ts +4 -0
  378. package/dist/components/toast/icons/index.d.ts.map +1 -0
  379. package/dist/components/toast/index.d.ts +3 -0
  380. package/dist/components/toast/index.d.ts.map +1 -0
  381. package/dist/components/toast/toast.d.ts +7 -0
  382. package/dist/components/toast/toast.d.ts.map +1 -0
  383. package/dist/components/toast/toast.js +2 -0
  384. package/dist/components/toast/toast.js.map +1 -0
  385. package/dist/components/toast/toast.store.d.ts +17 -0
  386. package/dist/components/toast/toast.store.d.ts.map +1 -0
  387. package/dist/components/toast/toast.store.js +2 -0
  388. package/dist/components/toast/toast.store.js.map +1 -0
  389. package/dist/components/toast/toast.type.d.ts +72 -0
  390. package/dist/components/toast/toast.type.d.ts.map +1 -0
  391. package/dist/components/tooltip/index.d.ts +4 -0
  392. package/dist/components/tooltip/index.d.ts.map +1 -0
  393. package/dist/components/tooltip/tooltip.d.ts +11 -0
  394. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  395. package/dist/components/tooltip/tooltip.js +2 -0
  396. package/dist/components/tooltip/tooltip.js.map +1 -0
  397. package/dist/components/tooltip/tooltip.types.d.ts +39 -0
  398. package/dist/components/tooltip/tooltip.types.d.ts.map +1 -0
  399. package/dist/components/tour/index.d.ts +3 -0
  400. package/dist/components/tour/index.d.ts.map +1 -0
  401. package/dist/components/tour/tour.d.ts +3 -0
  402. package/dist/components/tour/tour.d.ts.map +1 -0
  403. package/dist/components/tour/tour.js +9 -0
  404. package/dist/components/tour/tour.js.map +1 -0
  405. package/dist/components/tour/tour.types.d.ts +35 -0
  406. package/dist/components/tour/tour.types.d.ts.map +1 -0
  407. package/dist/components/upload/index.d.ts +3 -0
  408. package/dist/components/upload/index.d.ts.map +1 -0
  409. package/dist/components/upload/upload.d.ts +3 -0
  410. package/dist/components/upload/upload.d.ts.map +1 -0
  411. package/dist/components/upload/upload.js +2 -0
  412. package/dist/components/upload/upload.js.map +1 -0
  413. package/dist/components/upload/upload.types.d.ts +95 -0
  414. package/dist/components/upload/upload.types.d.ts.map +1 -0
  415. package/dist/components/z-index/index.d.ts +4 -0
  416. package/dist/components/z-index/index.d.ts.map +1 -0
  417. package/dist/components/z-index/z-index.context.d.ts +17 -0
  418. package/dist/components/z-index/z-index.context.d.ts.map +1 -0
  419. package/dist/components/z-index/z-index.context.js +2 -0
  420. package/dist/components/z-index/z-index.context.js.map +1 -0
  421. package/dist/components/z-index/z-index.d.ts +20 -0
  422. package/dist/components/z-index/z-index.d.ts.map +1 -0
  423. package/dist/components/z-index/z-index.js +2 -0
  424. package/dist/components/z-index/z-index.js.map +1 -0
  425. package/dist/components/z-index/z-index.store.d.ts +14 -0
  426. package/dist/components/z-index/z-index.store.d.ts.map +1 -0
  427. package/dist/components/z-index/z-index.store.js +2 -0
  428. package/dist/components/z-index/z-index.store.js.map +1 -0
  429. package/dist/components/z-index/z-index.types.d.ts +51 -0
  430. package/dist/components/z-index/z-index.types.d.ts.map +1 -0
  431. package/dist/components/z-index/z-index.types.js +2 -0
  432. package/dist/components/z-index/z-index.types.js.map +1 -0
  433. package/dist/lib.d.ts +48 -0
  434. package/dist/lib.d.ts.map +1 -0
  435. package/dist/lib.js +1 -0
  436. package/dist/solid-ui.css +94 -0
  437. package/dist/type.d.ts +4 -0
  438. package/dist/type.d.ts.map +1 -0
  439. package/dist/utils/cn.d.ts +3 -0
  440. package/dist/utils/cn.d.ts.map +1 -0
  441. package/dist/utils/cn.js +2 -0
  442. package/dist/utils/cn.js.map +1 -0
  443. package/dist/utils/element-tracker.js +2 -0
  444. package/dist/utils/element-tracker.js.map +1 -0
  445. package/dist/utils/helper.d.ts +32 -0
  446. package/dist/utils/helper.d.ts.map +1 -0
  447. package/dist/utils/helper.js +2 -0
  448. package/dist/utils/helper.js.map +1 -0
  449. package/dist/utils/hoc.js +2 -0
  450. package/dist/utils/hoc.js.map +1 -0
  451. package/package.json +131 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","names":["SolidComponent","cn","getColor","createVirtualizer","cva","VariantProps","Check","ChevronDown","Search","X","createEffect","createMemo","createSignal","For","mergeProps","on","Show","Component","JSXElement","Dropdown","FlattenOptionData","LabeledValue","OptGroupType","SelectBaseProps","SelectFieldNames","SelectOptionType","SelectProps","SelectValue","ShowSearchConfig","TagRenderProps","selectVariants","variants","variant","outline","filled","borderless","underlined","size","lg","md","sm","color","neutral","primary","secondary","accent","info","success","warning","error","SelectVariantsProps","SelectTagProps","tag","value","label","closable","removeIcon","tagRender","props","onRemove","e","MouseEvent","SelectTag","onClose","_el$","_tmpl$2","_el$2","firstChild","_$insert","Element","_$createComponent","when","children","_el$3","_tmpl$","$$click","_c$","_$memo","InnerTooltip","content","_el$4","_tmpl$3","_el$5","_el$6","resolveFieldNames","fn","options","groupLabel","getField","option","field","FlatOption","disabled","class","title","raw","flattenOptions","fieldNames","ReturnType","result","opt","subOptions","Array","isArray","sub","push","undefined","OptionGroup","items","regroupFlatOptions","flatOptions","groups","last","length","extractValue","v","extractValues","map","item","filter","x","single","Select","p","const","loading","placement","listHeight","virtual","defaultActiveFirstOption","notFoundContent","labelInValue","placeholder","blockScroll","isMultiple","mode","allowCustomValue","showSearchEnabled","showSearch","searchConfig","base","autoClearSearchValue","filterOption","optionFilterProp","internalValue","setInternalValue","defaultValue","isOpen","setIsOpen","defaultOpen","searchText","setSearchText","activeIndex","setActiveIndex","selectedValues","dropdownOpen","open","controlledSearchValue","cfg","searchValue","currentSearchText","inputRef","HTMLInputElement","selectRootRef","HTMLDivElement","triggerRef","listRef","setListRef","allFlatOptions","allOptionsWithCustom","flat","existingValues","Set","o","customOpts","val","has","String","optionMap","Map","set","filteredOptions","all","text","filtered","Function","filterProps","lowerText","toLowerCase","some","prop","includes","filterSort","sortFn","sort","a","b","groupedForRender","RenderItem","type","flatIdx","flatRenderList","group","ITEM_HEIGHT","GROUP_LABEL_HEIGHT","virtualizer","count","getScrollElement","estimateSize","index","overscan","selectedValuesSet","isSelected","isMaxReached","max","maxCount","suppressBlurUntil","openDropdown","performance","now","onOpenChange","closeDropdown","onSearch","toggleDropdown","buildOutputValue","values","get","buildOutputOption","handleSelect","optValue","rawOpt","current","newValues","deselectVal","onDeselect","selectVal","onSelect","onChange","handleClear","stopPropagation","preventDefault","onClear","handleRemoveTag","handleKeyDown","KeyboardEvent","onInputKeyDown","opts","key","next","onActive","scrollActiveIntoView","prev","idx","trim","focus","vals","list","renderIdx","findIndex","scrollToIndex","align","el","querySelectorAll","HTMLElement","scrollIntoView","block","scrollToFirstSelected","firstSelectedValue","querySelector","handleSearchInput","InputEvent","target","handleFocus","FocusEvent","scrollX","window","scrollY","restoreScroll","requestAnimationFrame","scrollTo","addEventListener","once","passive","setTimeout","removeEventListener","onFocus","handleBlur","related","relatedTarget","contains","closest","onBlur","selectedLabel","labelRender","TagInfo","visibleTags","visible","omitted","maxTagCount","maxTextLen","maxTagTextLength","tags","slice","showClear","allowClear","handleTriggerClick","findOptionIndex","EventTarget","dataset","optionIndex","Number","classList","parentElement","handleListClick","renderOptionItem","selected","isActive","isDisabledOpt","flattenData","optionRender","_el$7","_tmpl$5","_el$8","_$setAttribute","_el$9","_tmpl$4","_c$2","menuItemSelectedIcon","_$effect","_p$","_v$","_v$2","_$className","t","dropdownContent","renderList","_el$0","_tmpl$6","_el$1","_tmpl$7","_el$10","_$use","each","getVirtualItems","virtualRow","_el$11","_tmpl$8","_c$3","_el$12","_tmpl$9","_v$6","_v$7","start","_$setStyleProperty","_v$3","_v$4","_v$5","getTotalSize","_el$13","_tmpl$0","_el$14","_$p","renderTag","measure","queueMicrotask","preventScroll","ref","position","trigger","triggerElement","_el$18","_tmpl$17","_el$20","_el$24","nextSibling","$$keydown","prefix","_el$19","_tmpl$11","fallback","_el$27","_tmpl$19","_el$29","_tmpl$13","_el$28","_tmpl$18","_el$21","_tmpl$14","_el$22","_tmpl$12","maxTagPlaceholder","omittedValues","_el$23","_el$25","_tmpl$15","_tmpl$20","_el$26","_tmpl$16","_c$5","suffixIcon","_v$0","root","_v$1","_v$10","_el$15","_tmpl$10","$$mousedown","tagName","_el$16","_tmpl$1","_el$17","$$input","_v$8","_v$9","_c$4","popupRender","_$delegateEvents"],"sources":["../../../src/components/select/select.tsx"],"sourcesContent":["import type { SolidComponent } from '@/type';\r\nimport { cn } from '@/utils/cn';\r\nimport { getColor } from '@/utils/helper';\r\nimport { createVirtualizer } from '@tanstack/solid-virtual';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport Check from 'lucide-solid/icons/check';\r\nimport ChevronDown from 'lucide-solid/icons/chevron-down';\r\nimport Search from 'lucide-solid/icons/search';\r\nimport X from 'lucide-solid/icons/x';\r\nimport {\r\n createEffect,\r\n createMemo,\r\n createSignal,\r\n For,\r\n mergeProps,\r\n on,\r\n Show,\r\n type Component,\r\n type JSXElement,\r\n} from 'solid-js';\r\nimport { Dropdown } from '../dropdown';\r\nimport type {\r\n FlattenOptionData,\r\n LabeledValue,\r\n OptGroupType,\r\n SelectBaseProps,\r\n SelectFieldNames,\r\n SelectOptionType,\r\n SelectProps,\r\n SelectValue,\r\n ShowSearchConfig,\r\n TagRenderProps,\r\n} from './select.types';\r\n\r\nconst selectVariants = cva('sel01', {\r\n variants: {\r\n variant: {\r\n outline: 'sel07',\r\n filled: 'sel09',\r\n borderless: 'sel08',\r\n underlined: 'sel10',\r\n },\r\n size: {\r\n lg: 'sel06',\r\n md: 'sel05',\r\n sm: 'sel04',\r\n },\r\n color: {\r\n neutral: 'input-neutral',\r\n primary: 'input-primary',\r\n secondary: 'input-secondary',\r\n accent: 'input-accent',\r\n info: 'input-info',\r\n success: 'input-success',\r\n warning: 'input-warning',\r\n error: 'input-error',\r\n },\r\n },\r\n});\r\nexport type SelectVariantsProps = VariantProps<typeof selectVariants>;\r\n\r\ntype SelectTagProps = {\r\n tag: { value: string | number; label: SolidComponent; closable: boolean };\r\n removeIcon?: JSXElement;\r\n tagRender?: (props: TagRenderProps) => JSXElement;\r\n onRemove: (value: string | number, e: MouseEvent) => void;\r\n};\r\n\r\nconst SelectTag: Component<SelectTagProps> = props => {\r\n if (props.tagRender) {\r\n return props.tagRender({\r\n label: props.tag.label,\r\n value: props.tag.value,\r\n closable: props.tag.closable,\r\n onClose: () => props.onRemove(props.tag.value, new MouseEvent('click')),\r\n }) as JSXElement;\r\n }\r\n\r\n return (\r\n <span class=\"sel17\">\r\n <span class=\"sel18\">{props.tag.label as Element}</span>\r\n <Show when={props.tag.closable}>\r\n <span class=\"sel19\" onClick={e => props.onRemove(props.tag.value, e)}>\r\n {props.removeIcon ? (\r\n (props.removeIcon as Element)\r\n ) : (\r\n <X class=\"m-auto\" size={12} stroke-width={3} />\r\n )}\r\n </span>\r\n </Show>\r\n </span>\r\n );\r\n};\r\n\r\nconst InnerTooltip: Component<{ content: JSXElement; children: JSXElement }> = props => {\r\n return (\r\n <span class=\"sel42\">\r\n {props.children}\r\n <span class=\"sel43\">\r\n <span class=\"sel44\">{props.content}</span>\r\n </span>\r\n </span>\r\n );\r\n};\r\n\r\nfunction resolveFieldNames(fn?: SelectFieldNames) {\r\n return {\r\n label: fn?.label ?? 'label',\r\n value: fn?.value ?? 'value',\r\n options: fn?.options ?? 'options',\r\n groupLabel: fn?.groupLabel ?? 'label',\r\n };\r\n}\r\n\r\nfunction getField(option: any, field: string): any {\r\n return option?.[field];\r\n}\r\n\r\ninterface FlatOption {\r\n label: SolidComponent;\r\n value: string | number;\r\n disabled?: boolean;\r\n class?: string;\r\n title?: string;\r\n groupLabel?: SolidComponent;\r\n raw: any;\r\n}\r\n\r\nfunction flattenOptions(\r\n options: (SelectOptionType | OptGroupType)[] | undefined,\r\n fieldNames: ReturnType<typeof resolveFieldNames>,\r\n): FlatOption[] {\r\n if (!options) return [];\r\n const result: FlatOption[] = [];\r\n for (const opt of options) {\r\n const subOptions = getField(opt, fieldNames.options) as SelectOptionType[] | undefined;\r\n if (subOptions && Array.isArray(subOptions)) {\r\n const groupLabel = getField(opt, fieldNames.groupLabel) as SolidComponent;\r\n for (const sub of subOptions) {\r\n result.push({\r\n label: getField(sub, fieldNames.label) as SolidComponent,\r\n value: getField(sub, fieldNames.value) as string | number,\r\n disabled: sub.disabled,\r\n class: sub.class,\r\n title: sub.title,\r\n groupLabel,\r\n raw: sub,\r\n });\r\n }\r\n } else {\r\n result.push({\r\n label: getField(opt, fieldNames.label) as SolidComponent,\r\n value: getField(opt, fieldNames.value) as string | number,\r\n disabled: (opt as SelectOptionType).disabled,\r\n class: (opt as SelectOptionType).class,\r\n title: (opt as SelectOptionType).title,\r\n groupLabel: undefined,\r\n raw: opt,\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\n\r\ninterface OptionGroup {\r\n groupLabel?: SolidComponent;\r\n items: FlatOption[];\r\n}\r\n\r\nfunction regroupFlatOptions(flatOptions: FlatOption[]): OptionGroup[] {\r\n const groups: OptionGroup[] = [];\r\n for (const opt of flatOptions) {\r\n const last = groups[groups.length - 1];\r\n if (last && last.groupLabel === opt.groupLabel) {\r\n last.items.push(opt);\r\n } else {\r\n groups.push({ groupLabel: opt.groupLabel, items: [opt] });\r\n }\r\n }\r\n return groups;\r\n}\r\n\r\nfunction extractValue(v: string | number | LabeledValue | undefined): string | number | undefined {\r\n if (v === undefined || v === null) return undefined;\r\n if (typeof v === 'object' && 'value' in v) return v.value;\r\n return v as string | number;\r\n}\r\n\r\nfunction extractValues(\r\n v: string | string[] | number | number[] | LabeledValue | LabeledValue[] | undefined,\r\n): (string | number)[] {\r\n if (v === undefined || v === null) return [];\r\n if (Array.isArray(v)) {\r\n return v.map(item => extractValue(item)!).filter(x => x !== undefined);\r\n }\r\n const single = extractValue(v as string | number | LabeledValue);\r\n return single !== undefined ? [single] : [];\r\n}\r\n\r\nexport const Select: Component<SelectProps> = p => {\r\n p = mergeProps(\r\n {\r\n color: 'error' as const,\r\n size: 'md' as const,\r\n variant: 'outline' as const,\r\n disabled: false,\r\n loading: false,\r\n placement: 'bottom' as const,\r\n listHeight: 256,\r\n virtual: false,\r\n defaultActiveFirstOption: false,\r\n notFoundContent: 'Not Found' as SolidComponent,\r\n labelInValue: false,\r\n placeholder: 'Select...',\r\n blockScroll: true,\r\n } as SelectBaseProps,\r\n p,\r\n );\r\n\r\n const fieldNames = createMemo(() => resolveFieldNames(p.fieldNames));\r\n\r\n const isMultiple = createMemo(() => p.mode === 'multiple');\r\n const allowCustomValue = createMemo(() => isMultiple() && !!(p as any).allowCustomValue);\r\n\r\n const showSearchEnabled = createMemo(() => {\r\n if (typeof p.showSearch === 'boolean') return p.showSearch;\r\n if (typeof p.showSearch === 'object') return true;\r\n\r\n return isMultiple();\r\n });\r\n\r\n const searchConfig = createMemo((): ShowSearchConfig => {\r\n const base: ShowSearchConfig = {\r\n autoClearSearchValue: true,\r\n filterOption: true,\r\n optionFilterProp: 'value',\r\n };\r\n if (typeof p.showSearch === 'object') {\r\n return { ...base, ...p.showSearch };\r\n }\r\n return base;\r\n });\r\n\r\n const [internalValue, setInternalValue] = createSignal<(string | number)[]>(\r\n extractValues(p.defaultValue),\r\n );\r\n const [isOpen, setIsOpen] = createSignal(p.defaultOpen ?? false);\r\n const [searchText, setSearchText] = createSignal('');\r\n const [activeIndex, setActiveIndex] = createSignal(-1);\r\n\r\n const selectedValues = createMemo(() => {\r\n if (p.value !== undefined) {\r\n return extractValues(p.value);\r\n }\r\n return internalValue();\r\n });\r\n\r\n const dropdownOpen = createMemo(() => {\r\n if (p.open !== undefined) {\r\n return p.open as boolean;\r\n }\r\n return isOpen();\r\n });\r\n\r\n const controlledSearchValue = createMemo(() => {\r\n const cfg = searchConfig();\r\n if (cfg.searchValue !== undefined) return cfg.searchValue;\r\n return undefined;\r\n });\r\n\r\n const currentSearchText = createMemo(() => {\r\n return controlledSearchValue() ?? searchText();\r\n });\r\n\r\n let inputRef: HTMLInputElement | undefined;\r\n let selectRootRef: HTMLDivElement | undefined;\r\n let triggerRef: HTMLDivElement | undefined;\r\n const [listRef, setListRef] = createSignal<HTMLDivElement | null>(null);\r\n\r\n const allFlatOptions = createMemo(() => flattenOptions(p.options, fieldNames()));\r\n\r\n const allOptionsWithCustom = createMemo(() => {\r\n const flat = allFlatOptions();\r\n if (!allowCustomValue()) return flat;\r\n const existingValues = new Set(flat.map(o => o.value));\r\n const customOpts: FlatOption[] = [];\r\n for (const val of selectedValues()) {\r\n if (!existingValues.has(val)) {\r\n customOpts.push({\r\n label: String(val),\r\n value: val,\r\n disabled: false,\r\n class: undefined,\r\n title: undefined,\r\n groupLabel: undefined,\r\n raw: { label: String(val), value: val },\r\n });\r\n }\r\n }\r\n return [...flat, ...customOpts];\r\n });\r\n\r\n const optionMap = createMemo(() => {\r\n const map = new Map<string | number, FlatOption>();\r\n for (const opt of allOptionsWithCustom()) {\r\n map.set(opt.value, opt);\r\n }\r\n return map;\r\n });\r\n\r\n const filteredOptions = createMemo(() => {\r\n const all = allOptionsWithCustom();\r\n const text = currentSearchText();\r\n if (!text || !showSearchEnabled()) return all;\r\n\r\n const cfg = searchConfig();\r\n if (cfg.filterOption === false) return all;\r\n\r\n let filtered: FlatOption[];\r\n if (typeof cfg.filterOption === 'function') {\r\n filtered = all.filter(opt =>\r\n (cfg.filterOption as Function)(text, opt.raw as SelectOptionType),\r\n );\r\n } else {\r\n const filterProps = Array.isArray(cfg.optionFilterProp)\r\n ? cfg.optionFilterProp\r\n : [cfg.optionFilterProp ?? 'value'];\r\n const lowerText = text.toLowerCase();\r\n filtered = all.filter(opt => {\r\n return filterProps.some(prop => {\r\n const val = getField(opt.raw, prop) ?? (prop === 'label' ? opt.label : opt.value);\r\n return String(val ?? '')\r\n .toLowerCase()\r\n .includes(lowerText);\r\n });\r\n });\r\n }\r\n\r\n if (cfg.filterSort) {\r\n const sortFn = cfg.filterSort;\r\n filtered.sort((a, b) =>\r\n sortFn(a.raw as SelectOptionType, b.raw as SelectOptionType, { searchValue: text }),\r\n );\r\n }\r\n\r\n return filtered;\r\n });\r\n\r\n const groupedForRender = createMemo(() => {\r\n const text = currentSearchText();\r\n if (text && showSearchEnabled()) {\r\n return [{ groupLabel: undefined, items: filteredOptions() }] as OptionGroup[];\r\n }\r\n return regroupFlatOptions(allOptionsWithCustom());\r\n });\r\n\r\n type RenderItem =\r\n | { type: 'group'; groupLabel: SolidComponent }\r\n | { type: 'option'; option: FlatOption; flatIdx: number };\r\n\r\n const flatRenderList = createMemo((): RenderItem[] => {\r\n const groups = groupedForRender();\r\n const result: RenderItem[] = [];\r\n let flatIdx = 0;\r\n for (const group of groups) {\r\n if (group.groupLabel !== undefined) {\r\n result.push({ type: 'group', groupLabel: group.groupLabel });\r\n }\r\n for (const item of group.items) {\r\n result.push({ type: 'option', option: item, flatIdx });\r\n flatIdx++;\r\n }\r\n }\r\n return result;\r\n });\r\n\r\n const ITEM_HEIGHT = 32;\r\n const GROUP_LABEL_HEIGHT = 28;\r\n\r\n const virtualizer = createVirtualizer({\r\n get count() {\r\n return flatRenderList().length;\r\n },\r\n getScrollElement: () => listRef(),\r\n estimateSize: (index: number) => {\r\n const item = flatRenderList()[index];\r\n return item?.type === 'group' ? GROUP_LABEL_HEIGHT : ITEM_HEIGHT;\r\n },\r\n overscan: 2,\r\n });\r\n\r\n const selectedValuesSet = createMemo(() => new Set(selectedValues()));\r\n\r\n const isSelected = (val: string | number) => {\r\n return selectedValuesSet().has(val);\r\n };\r\n\r\n const isMaxReached = createMemo(() => {\r\n if (!isMultiple()) return false;\r\n const max = p.maxCount as number | undefined;\r\n if (max === undefined) return false;\r\n return selectedValues().length >= max;\r\n });\r\n\r\n // Set for a brief window after openDropdown() to suppress spurious focusout events\r\n // that fire when SolidJS re-renders the DOM (inserting dropdown content causes\r\n // the focused trigger div to receive a focusout with relatedTarget=null before\r\n // the search input is mounted and re-focused via queueMicrotask).\r\n let suppressBlurUntil = 0;\r\n\r\n const openDropdown = () => {\r\n if (p.disabled) return;\r\n suppressBlurUntil = performance.now() + 150;\r\n if (p.open === undefined) {\r\n setIsOpen(true);\r\n }\r\n p.onOpenChange?.(true);\r\n };\r\n\r\n const closeDropdown = () => {\r\n if (p.open === undefined) {\r\n setIsOpen(false);\r\n }\r\n setListRef(null);\r\n p.onOpenChange?.(false);\r\n\r\n if (showSearchEnabled()) {\r\n setSearchText('');\r\n searchConfig().onSearch?.('');\r\n }\r\n };\r\n\r\n const toggleDropdown = () => {\r\n if (dropdownOpen()) {\r\n closeDropdown();\r\n } else {\r\n openDropdown();\r\n }\r\n };\r\n\r\n const buildOutputValue = (values: (string | number)[]): SelectValue => {\r\n const map = optionMap();\r\n if (isMultiple()) {\r\n if (p.labelInValue) {\r\n return values.map(v => {\r\n const opt = map.get(v);\r\n return {\r\n value: v,\r\n label: opt?.label ?? String(v),\r\n } as LabeledValue;\r\n });\r\n }\r\n return values as string[] | number[];\r\n }\r\n\r\n const val = values[0];\r\n if (val === undefined) return undefined as any;\r\n if (p.labelInValue) {\r\n const opt = map.get(val);\r\n return {\r\n value: val,\r\n label: opt?.label ?? String(val),\r\n } as LabeledValue;\r\n }\r\n return val;\r\n };\r\n\r\n const buildOutputOption = (\r\n values: (string | number)[],\r\n ): SelectOptionType | SelectOptionType[] => {\r\n const map = optionMap();\r\n if (isMultiple()) {\r\n return values.map(v => {\r\n const opt = map.get(v);\r\n return (opt?.raw as SelectOptionType) ?? { value: v, label: String(v) };\r\n });\r\n }\r\n const val = values[0];\r\n const opt = map.get(val);\r\n return (opt?.raw as SelectOptionType) ?? { value: val, label: String(val) };\r\n };\r\n\r\n const handleSelect = (optValue: string | number) => {\r\n const opt = optionMap().get(optValue);\r\n const rawOpt = (opt?.raw as SelectOptionType) ?? {\r\n value: optValue,\r\n label: String(optValue),\r\n };\r\n\r\n if (isMultiple()) {\r\n const current = selectedValues();\r\n let newValues: (string | number)[];\r\n\r\n if (current.includes(optValue)) {\r\n newValues = current.filter(v => v !== optValue);\r\n const deselectVal = p.labelInValue\r\n ? ({ value: optValue, label: opt?.label ?? String(optValue) } as LabeledValue)\r\n : optValue;\r\n p.onDeselect?.(deselectVal);\r\n } else {\r\n if (isMaxReached()) return;\r\n newValues = [...current, optValue];\r\n const selectVal = p.labelInValue\r\n ? ({ value: optValue, label: opt?.label ?? String(optValue) } as LabeledValue)\r\n : optValue;\r\n p.onSelect?.(selectVal, rawOpt);\r\n }\r\n\r\n if (p.value === undefined) {\r\n setInternalValue(newValues);\r\n }\r\n p.onChange?.(buildOutputValue(newValues), buildOutputOption(newValues));\r\n\r\n if (searchConfig().autoClearSearchValue !== false) {\r\n setSearchText('');\r\n searchConfig().onSearch?.('');\r\n }\r\n } else {\r\n const newValues = [optValue];\r\n const selectVal = p.labelInValue\r\n ? ({ value: optValue, label: opt?.label ?? String(optValue) } as LabeledValue)\r\n : optValue;\r\n p.onSelect?.(selectVal, rawOpt);\r\n\r\n if (p.value === undefined) {\r\n setInternalValue(newValues);\r\n }\r\n p.onChange?.(buildOutputValue(newValues), buildOutputOption(newValues));\r\n closeDropdown();\r\n setSearchText('');\r\n }\r\n };\r\n\r\n const handleClear = (e: MouseEvent) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n if (p.value === undefined) {\r\n setInternalValue([]);\r\n }\r\n p.onClear?.();\r\n p.onChange?.(isMultiple() ? [] : (undefined as any), isMultiple() ? [] : (undefined as any));\r\n setSearchText('');\r\n };\r\n\r\n const handleRemoveTag = (val: string | number, e?: MouseEvent) => {\r\n e?.stopPropagation();\r\n e?.preventDefault();\r\n const current = selectedValues();\r\n const newValues = current.filter(v => v !== val);\r\n\r\n const opt = optionMap().get(val);\r\n const deselectVal = p.labelInValue\r\n ? ({ value: val, label: opt?.label ?? String(val) } as LabeledValue)\r\n : val;\r\n p.onDeselect?.(deselectVal);\r\n\r\n if (p.value === undefined) {\r\n setInternalValue(newValues);\r\n }\r\n p.onChange?.(buildOutputValue(newValues), buildOutputOption(newValues));\r\n };\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (p.disabled) return;\r\n p.onInputKeyDown?.(e);\r\n\r\n const opts = filteredOptions();\r\n\r\n switch (e.key) {\r\n case 'ArrowDown': {\r\n e.preventDefault();\r\n if (!dropdownOpen()) {\r\n openDropdown();\r\n return;\r\n }\r\n let next = activeIndex() + 1;\r\n while (next < opts.length) {\r\n const opt = opts[next];\r\n if (!opt.disabled && (!isMaxReached() || isSelected(opt.value))) {\r\n break;\r\n }\r\n next++;\r\n }\r\n if (next < opts.length) {\r\n setActiveIndex(next);\r\n const val = p.labelInValue\r\n ? ({ value: opts[next].value, label: opts[next].label } as LabeledValue)\r\n : opts[next].value;\r\n p.onActive?.(val);\r\n scrollActiveIntoView(next);\r\n }\r\n break;\r\n }\r\n case 'ArrowUp': {\r\n e.preventDefault();\r\n if (!dropdownOpen()) {\r\n openDropdown();\r\n return;\r\n }\r\n let prev = activeIndex() === -1 ? opts.length - 1 : activeIndex() - 1;\r\n while (prev >= 0) {\r\n const opt = opts[prev];\r\n if (!opt.disabled && (!isMaxReached() || isSelected(opt.value))) {\r\n break;\r\n }\r\n prev--;\r\n }\r\n if (prev >= 0) {\r\n setActiveIndex(prev);\r\n const val = p.labelInValue\r\n ? ({ value: opts[prev].value, label: opts[prev].label } as LabeledValue)\r\n : opts[prev].value;\r\n p.onActive?.(val);\r\n scrollActiveIntoView(prev);\r\n }\r\n break;\r\n }\r\n case 'Enter':\r\n case ' ': {\r\n e.preventDefault();\r\n if (!dropdownOpen()) {\r\n openDropdown();\r\n return;\r\n }\r\n if (e.key === ' ' && showSearchEnabled()) break;\r\n const idx = activeIndex();\r\n if (idx >= 0 && idx < opts.length) {\r\n const opt = opts[idx];\r\n if (!opt.disabled) {\r\n handleSelect(opt.value);\r\n }\r\n } else if (allowCustomValue() && currentSearchText().trim()) {\r\n const tag = currentSearchText().trim();\r\n handleSelect(tag);\r\n }\r\n break;\r\n }\r\n case 'Escape': {\r\n e.preventDefault();\r\n closeDropdown();\r\n triggerRef?.focus();\r\n break;\r\n }\r\n case 'Backspace': {\r\n if (isMultiple() && currentSearchText() === '') {\r\n const vals = selectedValues();\r\n if (vals.length > 0) {\r\n handleRemoveTag(vals[vals.length - 1]);\r\n }\r\n }\r\n break;\r\n }\r\n case 'Tab': {\r\n closeDropdown();\r\n break;\r\n }\r\n }\r\n };\r\n\r\n const scrollActiveIntoView = (flatIdx: number) => {\r\n if (p.virtual) {\r\n const list = flatRenderList();\r\n const renderIdx = list.findIndex(item => item.type === 'option' && item.flatIdx === flatIdx);\r\n if (renderIdx >= 0) {\r\n virtualizer.scrollToIndex(renderIdx, { align: 'auto' });\r\n }\r\n return;\r\n }\r\n\r\n const el = listRef();\r\n if (!el) return;\r\n const items = el.querySelectorAll('[data-option-index]');\r\n const item = items[flatIdx] as HTMLElement | undefined;\r\n if (item) {\r\n item.scrollIntoView({ block: 'nearest' });\r\n }\r\n };\r\n\r\n const scrollToFirstSelected = () => {\r\n const vals = selectedValues();\r\n if (vals.length === 0) return;\r\n\r\n const firstSelectedValue = vals[0];\r\n const opts = filteredOptions();\r\n const flatIdx = opts.findIndex(o => o.value === firstSelectedValue);\r\n if (flatIdx < 0) return;\r\n\r\n if (p.virtual) {\r\n const list = flatRenderList();\r\n const renderIdx = list.findIndex(item => item.type === 'option' && item.flatIdx === flatIdx);\r\n if (renderIdx >= 0) {\r\n virtualizer.scrollToIndex(renderIdx, { align: 'start' });\r\n }\r\n } else {\r\n const el = listRef();\r\n if (!el) return;\r\n const item = el.querySelector(`[data-option-index=\"${flatIdx}\"]`) as HTMLElement | null;\r\n if (item) {\r\n item.scrollIntoView({ block: 'nearest' });\r\n }\r\n }\r\n };\r\n\r\n const handleSearchInput = (e: InputEvent) => {\r\n const target = e.target as HTMLInputElement;\r\n const val = target.value;\r\n\r\n if (controlledSearchValue() === undefined) {\r\n setSearchText(val);\r\n }\r\n searchConfig().onSearch?.(val);\r\n\r\n if (!dropdownOpen()) {\r\n openDropdown();\r\n }\r\n };\r\n\r\n const handleFocus = (e: FocusEvent) => {\r\n // Only fix scroll when the trigger div (not the search input) receives focus.\r\n // The trigger div has offsetTop=0 relative to .dropdown (position:relative), which\r\n // causes Chromium to scroll the page to 0 when focusing it (a browser quirk).\r\n // We listen for the next scroll event and immediately restore the position.\r\n if (e.target === triggerRef) {\r\n const scrollX = window.scrollX;\r\n const scrollY = window.scrollY;\r\n // Chromium scrolls the page when focusing triggerRef because its offsetTop=0\r\n // relative to the .dropdown positioned parent (a browser quirk). We restore after\r\n // the focus-scroll completes by waiting for the scroll event, then deferring one rAF\r\n // so the browser's internal focus-scroll is truly done before we override it.\r\n const restoreScroll = () =>\r\n requestAnimationFrame(() => requestAnimationFrame(() => window.scrollTo(scrollX, scrollY)));\r\n window.addEventListener('scroll', restoreScroll, { once: true, passive: false });\r\n setTimeout(() => window.removeEventListener('scroll', restoreScroll), 200);\r\n }\r\n p.onFocus?.(e);\r\n };\r\n\r\n const handleBlur = (e: FocusEvent) => {\r\n const related = e.relatedTarget as HTMLElement | null;\r\n if (related && selectRootRef?.contains(related)) return;\r\n if (related?.closest('.nd-content')) return;\r\n // Suppress spurious focusout that fires immediately after openDropdown() while\r\n // SolidJS is re-rendering the DOM (before the search input is mounted and focused).\r\n if (performance.now() < suppressBlurUntil) return;\r\n p.onBlur?.(e);\r\n closeDropdown();\r\n };\r\n\r\n const selectedLabel = createMemo((): JSXElement => {\r\n if (isMultiple()) return null;\r\n const vals = selectedValues();\r\n if (vals.length === 0) return null;\r\n const val = vals[0];\r\n const opt = optionMap().get(val);\r\n\r\n if (p.labelRender) {\r\n return p.labelRender({\r\n value: val,\r\n label: opt?.label ?? String(val),\r\n key: String(val),\r\n });\r\n }\r\n\r\n return (opt?.label as Element) ?? String(val);\r\n });\r\n\r\n interface TagInfo {\r\n value: string | number;\r\n label: SolidComponent;\r\n closable: boolean;\r\n }\r\n const visibleTags = createMemo((): { visible: TagInfo[]; omitted: TagInfo[] } => {\r\n if (!isMultiple()) return { visible: [], omitted: [] };\r\n const vals = selectedValues();\r\n const map = optionMap();\r\n const maxTagCount = p.maxTagCount as number | 'responsive' | undefined;\r\n const maxTextLen = p.maxTagTextLength as number | undefined;\r\n\r\n const tags: TagInfo[] = vals.map(val => {\r\n const opt = map.get(val);\r\n let label: SolidComponent = opt?.label ?? String(val);\r\n if (maxTextLen && typeof label === 'string' && label.length > maxTextLen) {\r\n label = label.slice(0, maxTextLen) + '...';\r\n }\r\n return { value: val, label, closable: !p.disabled };\r\n });\r\n\r\n if (typeof maxTagCount === 'number' && tags.length > maxTagCount) {\r\n return { visible: tags.slice(0, maxTagCount), omitted: tags.slice(maxTagCount) };\r\n }\r\n\r\n return { visible: tags, omitted: [] };\r\n });\r\n\r\n const showClear = createMemo(() => {\r\n if (!p.allowClear) return false;\r\n if (p.disabled) return false;\r\n return selectedValues().length > 0;\r\n });\r\n\r\n const handleTriggerClick = (e: MouseEvent) => {\r\n if (p.disabled || p.loading) return;\r\n e.preventDefault();\r\n toggleDropdown();\r\n };\r\n\r\n const findOptionIndex = (target: EventTarget | null): number | null => {\r\n let el = target as HTMLElement | null;\r\n while (el) {\r\n const idx = el.dataset?.optionIndex;\r\n if (idx !== undefined) return Number(idx);\r\n\r\n if (el.classList?.contains('sel30')) return null;\r\n el = el.parentElement;\r\n }\r\n return null;\r\n };\r\n\r\n const handleListClick = (e: MouseEvent) => {\r\n const flatIdx = findOptionIndex(e.target);\r\n if (flatIdx === null) return;\r\n const opts = filteredOptions();\r\n const opt = opts[flatIdx];\r\n if (!opt || opt.disabled || (isMaxReached() && !isSelected(opt.value))) return;\r\n // In multiple mode, selecting an option re-renders the tag list (DOM mutation)\r\n // which can cause a spurious focusout. Suppress blur handling briefly.\r\n if (isMultiple()) suppressBlurUntil = performance.now() + 150;\r\n handleSelect(opt.value);\r\n };\r\n\r\n const renderOptionItem = (opt: FlatOption, flatIdx: number) => {\r\n const selected = () => isSelected(opt.value);\r\n const isActive = () => activeIndex() === flatIdx;\r\n const isDisabledOpt = () => opt.disabled || (isMaxReached() && !selected());\r\n\r\n const flattenData: FlattenOptionData = {\r\n label: opt.label,\r\n value: opt.value,\r\n disabled: opt.disabled,\r\n key: opt.value,\r\n groupLabel: opt.groupLabel,\r\n };\r\n\r\n const content = p.optionRender\r\n ? p.optionRender(flattenData, { index: flatIdx })\r\n : (opt.label as Element);\r\n\r\n return (\r\n <div\r\n data-option-index={flatIdx}\r\n class={cn(\r\n 'sel31',\r\n selected() && 'sel33',\r\n isActive() && 'sel32',\r\n isDisabledOpt() && 'sel34',\r\n opt.groupLabel !== undefined && 'sel38',\r\n opt.class,\r\n )}\r\n title={opt.title}\r\n >\r\n <span class=\"sel35\">{content}</span>\r\n <Show when={selected()}>\r\n <span class=\"sel36\">\r\n {p.menuItemSelectedIcon ? (\r\n (p.menuItemSelectedIcon as Element)\r\n ) : (\r\n <Check size={14} color=\"var(--color)\" stroke-width={3} />\r\n )}\r\n </span>\r\n </Show>\r\n </div>\r\n );\r\n };\r\n\r\n const dropdownContent = () => {\r\n const renderList = flatRenderList();\r\n\r\n if (renderList.length === 0) {\r\n return <div class=\"sel39\">{p.notFoundContent as Element}</div>;\r\n }\r\n\r\n if (p.virtual) {\r\n return (\r\n <div\r\n ref={el => {\r\n requestAnimationFrame(() => setListRef(el));\r\n }}\r\n class={cn('sel30', getColor(p.color))}\r\n style={{ 'max-height': `${p.listHeight}px`, 'overflow-y': 'auto' }}\r\n onClick={handleListClick}\r\n >\r\n <div\r\n style={{\r\n height: `${virtualizer.getTotalSize()}px`,\r\n width: '100%',\r\n position: 'relative',\r\n }}\r\n >\r\n <For each={virtualizer.getVirtualItems()}>\r\n {virtualRow => {\r\n const item = renderList[virtualRow.index];\r\n return (\r\n <div\r\n data-index={virtualRow.index}\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n transform: `translateY(${virtualRow.start}px)`,\r\n }}\r\n >\r\n {item.type === 'group' ? (\r\n <div class=\"sel37\">{item.groupLabel as Element}</div>\r\n ) : (\r\n renderOptionItem(item.option, item.flatIdx)\r\n )}\r\n </div>\r\n );\r\n }}\r\n </For>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={el => setListRef(el)}\r\n class=\"sel30\"\r\n style={{ 'max-height': `${p.listHeight}px` }}\r\n onClick={handleListClick}\r\n >\r\n <For each={renderList}>\r\n {item =>\r\n item.type === 'group' ? (\r\n <div class=\"sel37\">{item.groupLabel as Element}</div>\r\n ) : (\r\n renderOptionItem(item.option, item.flatIdx)\r\n )\r\n }\r\n </For>\r\n </div>\r\n );\r\n };\r\n\r\n const renderTag = (tag: { value: string | number; label: SolidComponent; closable: boolean }) => (\r\n <SelectTag\r\n tag={tag}\r\n removeIcon={p.removeIcon as JSXElement}\r\n tagRender={p.tagRender as ((props: TagRenderProps) => JSXElement) | undefined}\r\n onRemove={handleRemoveTag}\r\n />\r\n );\r\n\r\n createEffect(\r\n on(dropdownOpen, open => {\r\n if (open && p.defaultActiveFirstOption) {\r\n const opts = filteredOptions();\r\n const idx = opts.findIndex(o => !o.disabled && (!isMaxReached() || isSelected(o.value)));\r\n setActiveIndex(idx >= 0 ? idx : -1);\r\n }\r\n if (!open) {\r\n setActiveIndex(-1);\r\n }\r\n }),\r\n );\r\n\r\n createEffect(\r\n on(\r\n () => currentSearchText(),\r\n () => {\r\n if (dropdownOpen() && p.defaultActiveFirstOption) {\r\n const opts = filteredOptions();\r\n const idx = opts.findIndex(o => !o.disabled && (!isMaxReached() || isSelected(o.value)));\r\n setActiveIndex(idx >= 0 ? idx : -1);\r\n }\r\n },\r\n ),\r\n );\r\n\r\n createEffect(\r\n on(listRef, el => {\r\n if (el && dropdownOpen()) {\r\n requestAnimationFrame(() => {\r\n if (p.virtual) virtualizer.measure();\r\n scrollToFirstSelected();\r\n });\r\n }\r\n }),\r\n );\r\n\r\n createEffect(\r\n on(\r\n () => dropdownOpen(),\r\n open => {\r\n if (open && showSearchEnabled()) {\r\n queueMicrotask(() => inputRef?.focus({ preventScroll: true }));\r\n }\r\n },\r\n ),\r\n );\r\n\r\n return (\r\n <Dropdown\r\n ref={el => (selectRootRef = el)}\r\n open={dropdownOpen()}\r\n blockScroll={p.blockScroll}\r\n position={p.placement === 'top' ? 'top' : 'bottom'}\r\n class={{\r\n trigger: `${p.disabled ? 'pointer-events-none' : ''} w-full`,\r\n content: cn(\r\n 'border-c3 bg-base-100 rounded-box menu p-0',\r\n p.placement === 'bottom' ? 'mt-1 shadow-md' : 'shadow-md-top mb-1',\r\n p.class?.dropdownContent,\r\n ),\r\n }}\r\n triggerElement={\r\n <div\r\n ref={el => (triggerRef = el)}\r\n class={cn(\r\n selectVariants({ size: p.size, variant: p.variant }),\r\n getColor(p.color),\r\n dropdownOpen() && 'sel41 sel02',\r\n isMultiple() && 'sel40',\r\n p.class?.root,\r\n p.disabled && 'sel03',\r\n )}\r\n tabIndex={p.disabled ? -1 : 0}\r\n onClick={handleTriggerClick}\r\n onKeyDown={handleKeyDown}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n role=\"combobox\"\r\n aria-expanded={dropdownOpen()}\r\n aria-haspopup=\"listbox\"\r\n >\r\n <Show when={p.prefix}>\r\n <span class=\"sel11\">{p.prefix as Element}</span>\r\n </Show>\r\n\r\n <div class=\"sel12\">\r\n <Show\r\n when={isMultiple()}\r\n fallback={\r\n <div class=\"sel13\">\r\n <Show\r\n when={selectedValues().length > 0}\r\n fallback={\r\n <span\r\n class=\"sel15\"\r\n style={{\r\n visibility: currentSearchText() ? 'hidden' : undefined,\r\n }}\r\n >\r\n {p.placeholder}\r\n </span>\r\n }\r\n >\r\n <span\r\n class=\"sel14\"\r\n style={{\r\n visibility:\r\n currentSearchText() && showSearchEnabled() ? 'hidden' : undefined,\r\n }}\r\n >\r\n {selectedLabel()}\r\n </span>\r\n </Show>\r\n </div>\r\n }\r\n >\r\n <div class=\"sel16\">\r\n <For each={visibleTags().visible}>{tag => renderTag(tag)}</For>\r\n\r\n <Show when={visibleTags().omitted.length > 0}>\r\n <InnerTooltip\r\n content={\r\n <For each={visibleTags().omitted}>\r\n {tag => (\r\n <SelectTag\r\n tag={tag}\r\n removeIcon={p.removeIcon as JSXElement}\r\n tagRender={\r\n p.tagRender as ((props: TagRenderProps) => JSXElement) | undefined\r\n }\r\n onRemove={handleRemoveTag}\r\n />\r\n )}\r\n </For>\r\n }\r\n >\r\n <span class=\"sel17 sel20\">\r\n {(() => {\r\n const placeholder = p.maxTagPlaceholder;\r\n if (typeof placeholder === 'function') {\r\n const omittedValues = visibleTags().omitted.map(t => ({\r\n value: t.value,\r\n label: t.label,\r\n })) as LabeledValue[];\r\n return placeholder(omittedValues) as Element;\r\n }\r\n if (placeholder) return placeholder;\r\n return `+${visibleTags().omitted.length} more...`;\r\n })()}\r\n </span>\r\n </InnerTooltip>\r\n </Show>\r\n\r\n <Show when={selectedValues().length === 0}>\r\n <span class=\"sel15\">{p.placeholder}</span>\r\n </Show>\r\n </div>\r\n </Show>\r\n </div>\r\n\r\n <div class=\"sel22\">\r\n <Show when={showClear()}>\r\n <span class=\"sel26\" onClick={handleClear}>\r\n <X class=\"m-auto\" size={14} />\r\n </span>\r\n </Show>\r\n <Show when={!p.loading} fallback={<span class=\"sel25\"></span>}>\r\n <span class={cn('sel23', dropdownOpen() && 'sel24')}>\r\n {p.suffixIcon ? (p.suffixIcon as Element) : <ChevronDown size={16} />}\r\n </span>\r\n </Show>\r\n </div>\r\n </div>\r\n }\r\n >\r\n <div\r\n role=\"listbox\"\r\n class={getColor(p.color)}\r\n onMouseDown={e => {\r\n if ((e.target as HTMLElement)?.tagName !== 'INPUT') {\r\n e.preventDefault();\r\n }\r\n }}\r\n >\r\n <Show when={showSearchEnabled()}>\r\n <div class=\"flex items-center px-3 shadow-2xs\">\r\n <Search size={14} />\r\n <input\r\n ref={ref => (inputRef = ref)}\r\n class=\"sel29\"\r\n value={currentSearchText()}\r\n onInput={handleSearchInput}\r\n onKeyDown={handleKeyDown}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n disabled={p.disabled}\r\n autocomplete=\"off\"\r\n role=\"combobox\"\r\n aria-expanded={dropdownOpen()}\r\n aria-haspopup=\"listbox\"\r\n aria-autocomplete=\"list\"\r\n placeholder=\"Search...\"\r\n />\r\n </div>\r\n </Show>\r\n {p.popupRender ? p.popupRender(dropdownContent()) : dropdownContent()}\r\n </div>\r\n </Dropdown>\r\n );\r\n};\r\n"],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import { JSXElement } from 'solid-js';
2
+ import { BaseColorProps, SolidComponent } from '../../type';
3
+ import { SelectVariantsProps } from './select';
4
+ export interface LabeledValue {
5
+ value: string | number;
6
+ label: SolidComponent;
7
+ key?: string;
8
+ }
9
+ export interface SelectOptionType {
10
+ label?: SolidComponent;
11
+ value?: string | number;
12
+ disabled?: boolean;
13
+ class?: string;
14
+ title?: string;
15
+ }
16
+ export interface OptGroupType {
17
+ key?: string;
18
+ label?: SolidComponent;
19
+ class?: string;
20
+ title?: string;
21
+ options?: SelectOptionType[];
22
+ }
23
+ export interface SelectFieldNames {
24
+ label?: string;
25
+ value?: string;
26
+ options?: string;
27
+ groupLabel?: string;
28
+ }
29
+ export interface ShowSearchConfig {
30
+ autoClearSearchValue?: boolean;
31
+ filterOption?: boolean | ((inputValue: string, option: SelectOptionType) => boolean);
32
+ filterSort?: (optionA: SelectOptionType, optionB: SelectOptionType, info: {
33
+ searchValue: string;
34
+ }) => number;
35
+ optionFilterProp?: string | string[];
36
+ searchValue?: string;
37
+ onSearch?: (value: string) => void;
38
+ }
39
+ export interface FlattenOptionData {
40
+ label?: SolidComponent;
41
+ value?: string | number;
42
+ disabled?: boolean;
43
+ key?: string | number;
44
+ groupLabel?: SolidComponent;
45
+ }
46
+ export interface TagRenderProps {
47
+ label: SolidComponent;
48
+ value: string | number;
49
+ closable: boolean;
50
+ onClose: () => void;
51
+ }
52
+ export interface LabelInValueType {
53
+ label: SolidComponent;
54
+ value: string | number;
55
+ key?: string;
56
+ }
57
+ export interface SelectMethods {
58
+ focus: () => void;
59
+ blur: () => void;
60
+ }
61
+ export type SelectBaseProps = {
62
+ allowClear?: boolean | {
63
+ clearIcon?: SolidComponent;
64
+ };
65
+ color?: BaseColorProps;
66
+ defaultActiveFirstOption?: boolean;
67
+ defaultOpen?: boolean;
68
+ disabled?: boolean;
69
+ popupMatchSelectWidth?: boolean | number;
70
+ popupRender?: (originNode: JSXElement) => JSXElement;
71
+ fieldNames?: SelectFieldNames;
72
+ getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
73
+ labelInValue?: boolean;
74
+ listHeight?: number;
75
+ loading?: boolean;
76
+ notFoundContent?: SolidComponent;
77
+ open?: boolean;
78
+ optionLabelProp?: string;
79
+ options?: (SelectOptionType | OptGroupType)[];
80
+ optionRender?: (option: FlattenOptionData, info: {
81
+ index: number;
82
+ }) => JSXElement;
83
+ placeholder?: string;
84
+ placement?: 'top' | 'bottom';
85
+ prefix?: SolidComponent;
86
+ removeIcon?: SolidComponent;
87
+ showSearch?: boolean | ShowSearchConfig;
88
+ size?: SelectVariantsProps['size'];
89
+ suffixIcon?: SolidComponent;
90
+ labelRender?: (props: LabelInValueType) => JSXElement;
91
+ variant?: SelectVariantsProps['variant'];
92
+ virtual?: boolean;
93
+ blockScroll?: boolean;
94
+ class?: Partial<Record<'root' | 'dropdownContent', string>>;
95
+ onActive?: (value: string | number | LabeledValue) => void;
96
+ onBlur?: (event: FocusEvent) => void;
97
+ onChange?: (value: SelectValue, option: SelectOptionType | SelectOptionType[]) => void;
98
+ onClear?: () => void;
99
+ onDeselect?: (value: string | number | LabeledValue) => void;
100
+ onOpenChange?: (open: boolean) => void;
101
+ onFocus?: (event: FocusEvent) => void;
102
+ onInputKeyDown?: (event: KeyboardEvent) => void;
103
+ onSelect?: (value: string | number | LabeledValue, option: SelectOptionType) => void;
104
+ };
105
+ type SelectSingleModeProps = SelectBaseProps & {
106
+ mode?: 'single';
107
+ defaultValue?: string | number | LabeledValue;
108
+ value?: string | number | LabeledValue;
109
+ autoClearSearchValue?: never;
110
+ allowCustomValue?: never;
111
+ maxCount?: never;
112
+ maxTagCount?: never;
113
+ maxTagPlaceholder?: never;
114
+ maxTagTextLength?: never;
115
+ tagRender?: never;
116
+ menuItemSelectedIcon?: never;
117
+ };
118
+ type SelectMultipleModeProps = SelectBaseProps & {
119
+ mode: 'multiple';
120
+ defaultValue?: string[] | number[] | LabeledValue[];
121
+ value?: string[] | number[] | LabeledValue[];
122
+ autoClearSearchValue?: boolean;
123
+ allowCustomValue?: boolean;
124
+ maxCount?: number;
125
+ maxTagCount?: number | 'responsive';
126
+ maxTagPlaceholder?: SolidComponent | ((omittedValues: LabeledValue[]) => SolidComponent);
127
+ maxTagTextLength?: number;
128
+ tagRender?: (props: TagRenderProps) => JSXElement;
129
+ menuItemSelectedIcon?: SolidComponent;
130
+ };
131
+ export type SelectValue = string | string[] | number | number[] | LabeledValue | LabeledValue[];
132
+ export type SelectProps = SelectSingleModeProps | SelectMultipleModeProps;
133
+ export {};
134
+ //# sourceMappingURL=select.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.types.d.ts","sourceRoot":"","sources":["../../../src/components/select/select.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { SelectZone, SelectZoneItem } from './select-zone';
2
+ export type { SelectZoneProps, SelectZoneItemProps, SelectZoneRect } from './select-zone.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/select-zone/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Component } from 'solid-js';
2
+ import { SelectZoneItemProps, SelectZoneProps } from './select-zone.types';
3
+ export declare const SelectZone: Component<SelectZoneProps>;
4
+ export declare const SelectZoneItem: Component<SelectZoneItemProps>;
5
+ //# sourceMappingURL=select-zone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-zone.d.ts","sourceRoot":"","sources":["../../../src/components/select-zone/select-zone.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAOV,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAqB3E,eAAO,MAAM,UAAU,EAAE,SAAS,CAAC,eAAe,CA4QjD,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,SAAS,CAAC,mBAAmB,CAoBzD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{cn as e}from"../../utils/cn.js";import{Portal as t,className as n,createComponent as r,effect as i,insert as a,memo as o,setAttribute as s,setStyleProperty as c,template as l,use as u}from"solid-js/web";import{createContext as d,createEffect as f,createSignal as p,mergeProps as m,onCleanup as h,useContext as g}from"solid-js";var _=l(`<div>`),v=d(),y={additive:!0,scrollThreshold:40,scrollSpeed:12,disabled:!1},b=s=>{let l=m(y,s),d=new Map,[g,b]=p(new Set),[x,S]=p(null),C;function w(e,t,n,r,i){let a=i.getBoundingClientRect(),o=a.left+window.scrollX,s=a.top+window.scrollY,c=a.right+window.scrollX,l=a.bottom+window.scrollY;return c>e&&o<n&&l>t&&s<r}function T(e,t,n,r){let i=Math.min(e,n),a=Math.min(t,r),o=Math.max(e,n),s=Math.max(t,r),c=new Set;return d.forEach(function(e,t){w(i,a,o,s,e)&&c.add(t)}),c}let E=0,D=0,O=!1,k=!1,A=new Set,j=0,M=0,N=0;function P(){if(!O)return;let e=l.scrollThreshold,t=l.scrollSpeed,n=window.innerWidth,r=window.innerHeight,i=M,a=N,o=0,s=0;i<e?o=-t*(1-i/e):i>n-e&&(o=t*(1-(n-i)/e)),a<e?s=-t*(1-a/e):a>r-e&&(s=t*(1-(r-a)/e)),(o!==0||s!==0)&&window.scrollBy(o,s),F(i,a),j=requestAnimationFrame(P)}function F(e,t){let n=e+window.scrollX,r=t+window.scrollY,i=Math.min(E,n),a=Math.min(D,r),o=Math.abs(n-E),s=Math.abs(r-D);S({x:i-window.scrollX,y:a-window.scrollY,w:o,h:s});let c=T(E,D,n,r),l;k?(l=new Set(A),c.forEach(e=>{A.has(e)?l.delete(e):l.add(e)})):l=c,b(l)}function I(e){l.disabled||e.button===0&&(e.target.closest(`input, button, a, textarea, select, [data-no-select]`)||(O=!1,E=e.clientX+window.scrollX,D=e.clientY+window.scrollY,M=e.clientX,N=e.clientY,k=e.shiftKey||e.ctrlKey||e.metaKey,A=k?new Set(g()):new Set,document.addEventListener(`mousemove`,L),document.addEventListener(`mouseup`,R)))}function L(e){M=e.clientX,N=e.clientY;let t=e.clientX+window.scrollX-E,n=e.clientY+window.scrollY-D;if(!O){if(Math.abs(t)<4&&Math.abs(n)<4)return;O=!0,j=requestAnimationFrame(P)}F(e.clientX,e.clientY)}function R(e){document.removeEventListener(`mousemove`,L),document.removeEventListener(`mouseup`,R),cancelAnimationFrame(j),O=!1,x()===null?k||e.target.closest(`[data-select-key]`)||(b(new Set),l.onSelect?.(new Set)):(S(null),l.onSelect?.(new Set(g())))}return f(function(){let e=l.value;e!==void 0&&b(new Set(e))}),f(function(){C.addEventListener(`mousedown`,I),h(function(){C.removeEventListener(`mousedown`,I),document.removeEventListener(`mousemove`,L),document.removeEventListener(`mouseup`,R),cancelAnimationFrame(j)})}),r(v.Provider,{value:{registerItem(e,t){d.set(e,t)},unregisterItem(e){d.delete(e)},isSelected(e){return g().has(e)}},get children(){var s=_(),d=C;return typeof d==`function`?u(d,s):C=s,a(s,()=>l.children,null),a(s,(()=>{var a=o(()=>!!x());return()=>a()&&r(t,{get mount(){return document.body},get children(){var t=_();return i(r=>{var i=e(`sz02`,l.class?.overlay),a=`${x().x}px`,o=`${x().y}px`,s=`${x().w}px`,u=`${x().h}px`;return i!==r.e&&n(t,r.e=i),a!==r.t&&c(t,`left`,r.t=a),o!==r.a&&c(t,`top`,r.a=o),s!==r.o&&c(t,`width`,r.o=s),u!==r.i&&c(t,`height`,r.i=u),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),t}})})(),null),i(()=>n(s,e(`sz01`,l.class?.root))),s}})},x=t=>{let r=g(v);if(!r)throw Error(`SelectZoneItem must be used inside <SelectZone>`);let o;f(function(){r.registerItem(t.itemKey,o),h(function(){r.unregisterItem(t.itemKey)})});let c=()=>r.isSelected(t.itemKey);return(()=>{var r=_(),l=o;return typeof l==`function`?u(l,r):o=r,a(r,()=>t.children(c)),i(i=>{var a=t.itemKey,o=e(`sz03`,t.class);return a!==i.e&&s(r,`data-select-key`,i.e=a),o!==i.t&&n(r,i.t=o),i},{e:void 0,t:void 0}),r})()};export{b as SelectZone,x as SelectZoneItem};
2
+ //# sourceMappingURL=select-zone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-zone.js","names":["Component","createContext","createEffect","createSignal","mergeProps","onCleanup","useContext","Portal","cn","SelectZoneItemProps","SelectZoneProps","SelectZoneContextValue","registerItem","key","el","HTMLElement","unregisterItem","isSelected","SelectZoneContext","DEFAULT_PROPS","additive","scrollThreshold","scrollSpeed","disabled","SelectZone","props","p","itemMap","Map","selectedKeys","setSelectedKeys","Set","overlayRect","setOverlayRect","x","y","w","h","rootEl","HTMLDivElement","intersects","selLeft","selTop","selRight","selBottom","r","getBoundingClientRect","docLeft","left","window","scrollX","docTop","top","scrollY","docRight","right","docBottom","bottom","computeSelection","startPageX","startPageY","currPageX","currPageY","Math","min","max","hit","forEach","checkItem","add","isDragging","isAdditive","prevKeys","rafId","lastClientX","lastClientY","scrollLoop","threshold","speed","vw","innerWidth","vh","innerHeight","cx","cy","dx","dy","scrollBy","updateOverlay","requestAnimationFrame","currClientX","currClientY","abs","next","k","has","delete","onMouseDown","e","MouseEvent","button","target","closest","clientX","clientY","shiftKey","ctrlKey","metaKey","document","addEventListener","onMouseMove","onMouseUp","removeEventListener","cancelAnimationFrame","onSelect","item","contextValue","set","syncControlledValue","v","value","undefined","mountListeners","unmountListeners","_$createComponent","Provider","children","_el$","_tmpl$","_ref$","_$use","_$insert","_c$","_$memo","mount","body","_el$2","_$effect","_p$","_v$","class","overlay","_v$2","_v$3","_v$4","_v$5","_$className","t","_$setStyleProperty","a","o","i","root","SelectZoneItem","ctx","Error","registerOnMount","itemKey","unregisterOnUnmount","_el$3","_ref$2","_v$6","_v$7","_$setAttribute"],"sources":["../../../src/components/select-zone/select-zone.tsx"],"sourcesContent":["import {\n Component,\n createContext,\n createEffect,\n createSignal,\n mergeProps,\n onCleanup,\n useContext,\n} from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { cn } from '@utils/cn';\nimport { SelectZoneItemProps, SelectZoneProps } from './select-zone.types';\n\n// ─── Context ──────────────────────────────────────────────────────────────────\n\ninterface SelectZoneContextValue {\n registerItem: (key: string, el: HTMLElement) => void;\n unregisterItem: (key: string) => void;\n isSelected: (key: string) => boolean;\n}\n\nconst SelectZoneContext = createContext<SelectZoneContextValue>();\n\n// ─── SelectZone ───────────────────────────────────────────────────────────────\n\nconst DEFAULT_PROPS = {\n additive: true,\n scrollThreshold: 40,\n scrollSpeed: 12,\n disabled: false,\n};\n\nexport const SelectZone: Component<SelectZoneProps> = props => {\n const p = mergeProps(DEFAULT_PROPS, props);\n\n // Map từ itemKey → DOM element (đăng ký bởi SelectZoneItem)\n const itemMap = new Map<string, HTMLElement>();\n\n // Tập hợp các key đang được chọn\n const [selectedKeys, setSelectedKeys] = createSignal<Set<string>>(new Set());\n\n // Overlay rect: null = ẩn, có giá trị = đang kéo\n const [overlayRect, setOverlayRect] = createSignal<{\n x: number;\n y: number;\n w: number;\n h: number;\n } | null>(null);\n\n let rootEl!: HTMLDivElement;\n\n // ── Helpers ─────────────────────────────────────────────────────────────────\n\n /**\n * Tính giao nhau AABB.\n * selLeft/Top/Right/Bottom: document coordinates (pageX/Y).\n * el.getBoundingClientRect(): viewport coordinates → convert sang document.\n */\n function intersects(\n selLeft: number,\n selTop: number,\n selRight: number,\n selBottom: number,\n el: HTMLElement,\n ): boolean {\n const r = el.getBoundingClientRect();\n const docLeft = r.left + window.scrollX;\n const docTop = r.top + window.scrollY;\n const docRight = r.right + window.scrollX;\n const docBottom = r.bottom + window.scrollY;\n return docRight > selLeft && docLeft < selRight && docBottom > selTop && docTop < selBottom;\n }\n\n /**\n * Tính selection.\n * startPageX/Y, currPageX/Y: document coordinates.\n */\n function computeSelection(\n startPageX: number,\n startPageY: number,\n currPageX: number,\n currPageY: number,\n ): Set<string> {\n const selLeft = Math.min(startPageX, currPageX);\n const selTop = Math.min(startPageY, currPageY);\n const selRight = Math.max(startPageX, currPageX);\n const selBottom = Math.max(startPageY, currPageY);\n\n const hit = new Set<string>();\n itemMap.forEach(function checkItem(el, key) {\n if (intersects(selLeft, selTop, selRight, selBottom, el)) {\n hit.add(key);\n }\n });\n return hit;\n }\n\n // ── Drag state ───────────────────────────────────────────────────────────────\n\n // startPageX/Y: document coordinates — cố định suốt drag, không bị ảnh hưởng bởi scroll\n let startPageX = 0;\n let startPageY = 0;\n let isDragging = false;\n let isAdditive = false;\n let prevKeys: Set<string> = new Set();\n let rafId = 0;\n let lastClientX = 0;\n let lastClientY = 0;\n\n // ── Auto-scroll loop ─────────────────────────────────────────────────────────\n\n function scrollLoop() {\n if (!isDragging) return;\n\n const threshold = p.scrollThreshold;\n const speed = p.scrollSpeed;\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const cx = lastClientX;\n const cy = lastClientY;\n\n let dx = 0;\n let dy = 0;\n\n if (cx < threshold) dx = -speed * (1 - cx / threshold);\n else if (cx > vw - threshold) dx = speed * (1 - (vw - cx) / threshold);\n\n if (cy < threshold) dy = -speed * (1 - cy / threshold);\n else if (cy > vh - threshold) dy = speed * (1 - (vh - cy) / threshold);\n\n if (dx !== 0 || dy !== 0) {\n window.scrollBy(dx, dy);\n // startPageX/Y KHÔNG thay đổi — nó là điểm neo trong document space\n }\n\n // Cập nhật overlay sau mỗi frame (kể cả khi chỉ scroll mà chuột đứng yên)\n updateOverlay(cx, cy);\n\n rafId = requestAnimationFrame(scrollLoop);\n }\n\n // ── Overlay update ───────────────────────────────────────────────────────────\n\n function updateOverlay(currClientX: number, currClientY: number) {\n // Convert cursor về document coordinates\n const currPageX = currClientX + window.scrollX;\n const currPageY = currClientY + window.scrollY;\n\n // Overlay rect tính trong document space\n const docLeft = Math.min(startPageX, currPageX);\n const docTop = Math.min(startPageY, currPageY);\n const w = Math.abs(currPageX - startPageX);\n const h = Math.abs(currPageY - startPageY);\n\n // Convert sang viewport để render (position: fixed dùng viewport coords)\n setOverlayRect({\n x: docLeft - window.scrollX,\n y: docTop - window.scrollY,\n w,\n h,\n });\n\n // Selection dùng document coordinates\n const hit = computeSelection(startPageX, startPageY, currPageX, currPageY);\n\n let next: Set<string>;\n if (isAdditive) {\n // Toggle per-item: item trong prevKeys bị drag đè → deselect; item mới → select\n next = new Set(prevKeys);\n hit.forEach(k => {\n if (prevKeys.has(k)) next.delete(k);\n else next.add(k);\n });\n } else {\n next = hit;\n }\n setSelectedKeys(next);\n }\n\n // ── Event handlers ───────────────────────────────────────────────────────────\n\n function onMouseDown(e: MouseEvent) {\n if (p.disabled) return;\n // Chỉ xử lý click trái, không xử lý trên scrollbar, input, button, a\n if (e.button !== 0) return;\n const target = e.target as HTMLElement;\n if (target.closest('input, button, a, textarea, select, [data-no-select]')) return;\n\n isDragging = false;\n // Lưu điểm bắt đầu trong document space — bất biến suốt drag\n startPageX = e.clientX + window.scrollX;\n startPageY = e.clientY + window.scrollY;\n lastClientX = e.clientX;\n lastClientY = e.clientY;\n isAdditive = e.shiftKey || e.ctrlKey || e.metaKey;\n prevKeys = isAdditive ? new Set(selectedKeys()) : new Set();\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n }\n\n function onMouseMove(e: MouseEvent) {\n lastClientX = e.clientX;\n lastClientY = e.clientY;\n\n // So sánh trong document space để tránh nhiễu từ scroll\n const dx = (e.clientX + window.scrollX) - startPageX;\n const dy = (e.clientY + window.scrollY) - startPageY;\n\n if (!isDragging) {\n // Chỉ bắt đầu drag khi kéo ít nhất 4px để tránh nhầm với click\n if (Math.abs(dx) < 4 && Math.abs(dy) < 4) return;\n isDragging = true;\n rafId = requestAnimationFrame(scrollLoop);\n }\n\n updateOverlay(e.clientX, e.clientY);\n }\n\n function onMouseUp(e: MouseEvent) {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n\n cancelAnimationFrame(rafId);\n isDragging = false;\n\n if (overlayRect() !== null) {\n setOverlayRect(null);\n // Thông báo selection cuối cùng\n p.onSelect?.(new Set(selectedKeys()));\n } else {\n // Không drag → click đơn → deselect tất cả (nếu không additive)\n if (!isAdditive) {\n const target = e.target as HTMLElement;\n const item = target.closest('[data-select-key]') as HTMLElement | null;\n if (!item) {\n setSelectedKeys(new Set<string>());\n p.onSelect?.(new Set<string>());\n }\n }\n }\n }\n\n // ── Context value ────────────────────────────────────────────────────────────\n\n const contextValue: SelectZoneContextValue = {\n registerItem(key, el) {\n itemMap.set(key, el);\n },\n unregisterItem(key) {\n itemMap.delete(key);\n },\n isSelected(key) {\n return selectedKeys().has(key);\n },\n };\n\n // ── Đồng bộ controlled value ─────────────────────────────────────────────────\n\n createEffect(function syncControlledValue() {\n const v = p.value;\n if (v !== undefined) setSelectedKeys(new Set(v));\n });\n\n // ── Cleanup khi unmount ──────────────────────────────────────────────────────\n\n createEffect(function mountListeners() {\n rootEl.addEventListener('mousedown', onMouseDown);\n onCleanup(function unmountListeners() {\n rootEl.removeEventListener('mousedown', onMouseDown);\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n cancelAnimationFrame(rafId);\n });\n });\n\n // ── Render ───────────────────────────────────────────────────────────────────\n\n return (\n <SelectZoneContext.Provider value={contextValue}>\n <div ref={rootEl} class={cn('sz01', p.class?.root)}>\n {p.children}\n\n {/* Selection overlay — render qua Portal để tránh ảnh hưởng layout */}\n {overlayRect() && (\n <Portal mount={document.body}>\n <div\n class={cn('sz02', p.class?.overlay)}\n style={{\n left: `${overlayRect()!.x}px`,\n top: `${overlayRect()!.y}px`,\n width: `${overlayRect()!.w}px`,\n height: `${overlayRect()!.h}px`,\n }}\n />\n </Portal>\n )}\n </div>\n </SelectZoneContext.Provider>\n );\n};\n\n// ─── SelectZoneItem ───────────────────────────────────────────────────────────\n\nexport const SelectZoneItem: Component<SelectZoneItemProps> = props => {\n const ctx = useContext(SelectZoneContext);\n if (!ctx) throw new Error('SelectZoneItem must be used inside <SelectZone>');\n\n let el!: HTMLDivElement;\n\n createEffect(function registerOnMount() {\n ctx.registerItem(props.itemKey, el);\n onCleanup(function unregisterOnUnmount() {\n ctx.unregisterItem(props.itemKey);\n });\n });\n\n const isSelected = () => ctx.isSelected(props.itemKey);\n\n return (\n <div ref={el} data-select-key={props.itemKey} class={cn('sz03', props.class)}>\n {props.children(isSelected)}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { JSX } from 'solid-js';
2
+ export interface SelectZoneRect {
3
+ left: number;
4
+ top: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ export interface SelectZoneProps {
9
+ /**
10
+ * Controlled selected keys — khi truyền vào, SelectZone sẽ đồng bộ internal
11
+ * state theo giá trị này. Dùng cùng với `onSelect` để reset selection từ bên ngoài.
12
+ */
13
+ value?: Set<string>;
14
+ /**
15
+ * Callback khi tập hợp selected keys thay đổi.
16
+ * Nhận Set các key đã chọn.
17
+ */
18
+ onSelect?: (keys: Set<string>) => void;
19
+ /**
20
+ * Giữ Shift/Ctrl để cộng thêm vào selection hiện tại thay vì reset.
21
+ * Mặc định true — tức là có hỗ trợ modifier keys.
22
+ */
23
+ additive?: boolean;
24
+ /**
25
+ * Khoảng cách tính từ rìa viewport (px) bắt đầu kích hoạt auto-scroll.
26
+ * @default 40
27
+ */
28
+ scrollThreshold?: number;
29
+ /**
30
+ * Tốc độ auto-scroll tối đa (px/frame).
31
+ * @default 12
32
+ */
33
+ scrollSpeed?: number;
34
+ /**
35
+ * Tắt toàn bộ SelectZone.
36
+ * @default false
37
+ */
38
+ disabled?: boolean;
39
+ /**
40
+ * Override classes cho các slot.
41
+ * - root: wrapper div
42
+ * - overlay: selection rectangle overlay
43
+ */
44
+ class?: Partial<Record<'root' | 'overlay', string>>;
45
+ children?: JSX.Element;
46
+ }
47
+ export interface SelectZoneItemProps {
48
+ /**
49
+ * Định danh duy nhất cho item. Dùng để track selected state.
50
+ */
51
+ itemKey: string;
52
+ /**
53
+ * Render prop: nhận `selected` signal và trả về JSX.
54
+ */
55
+ children: (selected: () => boolean) => JSX.Element;
56
+ class?: string;
57
+ }
58
+ //# sourceMappingURL=select-zone.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-zone.types.d.ts","sourceRoot":"","sources":["../../../src/components/select-zone/select-zone.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpD,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC;IAEnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,3 @@
1
+ export { Skeleton } from './skeleton';
2
+ export type { SkeletonProps } from './skeleton';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { ParentComponent } from 'solid-js';
2
+ /** Layout skeleton: giao diện phức tạp gồm nhiều element */
3
+ type LayoutVariant = 'cardImage' | 'cardHorizontal' | 'profile' | 'article' | 'feedItem' | 'stat';
4
+ /** Shape skeleton: hình khối đơn giản với kích thước preset */
5
+ type ShapeVariant = 'rectangle' | 'square' | 'circle' | 'textLine' | 'textParagraph';
6
+ type LayoutSkeletonProps = {
7
+ type: 'layout';
8
+ variant?: LayoutVariant;
9
+ enabled: boolean;
10
+ };
11
+ type ShapeSkeletonProps = {
12
+ type: 'shape';
13
+ variant?: ShapeVariant;
14
+ enabled: boolean;
15
+ };
16
+ /** Custom skeleton: user toàn quyền cấu hình — class áp thẳng lên element skeleton */
17
+ type CustomSkeletonProps = {
18
+ type: 'custom';
19
+ enabled: boolean;
20
+ class: string;
21
+ };
22
+ export type SkeletonProps = LayoutSkeletonProps | ShapeSkeletonProps | CustomSkeletonProps;
23
+ export declare const Skeleton: ParentComponent<SkeletonProps>;
24
+ export {};
25
+ //# sourceMappingURL=skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/skeleton.tsx"],"names":[],"mappings":"AACA,OAAO,EAAyB,eAAe,EAAgB,MAAM,UAAU,CAAC;AAKhF,4DAA4D;AAC5D,KAAK,aAAa,GACd,WAAW,GACX,gBAAgB,GAChB,SAAS,GACT,SAAS,GACT,UAAU,GACV,MAAM,CAAC;AAEX,+DAA+D;AAC/D,KAAK,YAAY,GACb,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,eAAe,CAAC;AAEpB,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,sFAAsF;AACtF,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAI3F,eAAO,MAAM,QAAQ,EAAE,eAAe,CAAC,aAAa,CAenD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{cn as e}from"../../utils/cn.js";import{className as t,createComponent as n,effect as r,memo as i,template as a}from"solid-js/web";import{Show as o,mergeProps as s}from"solid-js";var c=a(`<div>`),l=a(`<div class="flex flex-col gap-3"><div class="skeleton h-40 w-full rounded-lg"></div><div class="skeleton h-5 w-3/4 rounded"></div><div class="skeleton h-3.5 w-full rounded"></div><div class="skeleton h-3.5 w-5/6 rounded"></div><div class="skeleton h-3.5 w-4/5 rounded">`),u=a(`<div class="flex flex-row items-start gap-4"><div class="skeleton size-24 shrink-0 rounded-lg"></div><div class="flex flex-1 flex-col gap-2.5"><div class="skeleton h-5 w-2/3 rounded"></div><div class="skeleton h-3.5 w-full rounded"></div><div class="skeleton h-3.5 w-4/5 rounded"></div><div class="skeleton h-3.5 w-3/4 rounded">`),d=a(`<div class="flex flex-col items-center gap-3"><div class="skeleton size-20 shrink-0 rounded-full"></div><div class="skeleton h-5 w-36 rounded"></div><div class="skeleton h-3.5 w-48 rounded"></div><div class="skeleton h-3.5 w-40 rounded">`),f=a(`<div class="flex flex-col gap-3"><div class="skeleton h-7 w-3/4 rounded"></div><div class="skeleton h-4 w-1/3 rounded"></div><div class="mt-1 flex flex-col gap-2"><div class="skeleton h-3.5 w-full rounded"></div><div class="skeleton h-3.5 w-full rounded"></div><div class="skeleton h-3.5 w-11/12 rounded"></div><div class="skeleton h-3.5 w-full rounded"></div><div class="skeleton h-3.5 w-4/5 rounded">`),p=a(`<div class="flex flex-row items-start gap-3"><div class="skeleton size-10 shrink-0 rounded-full"></div><div class="flex flex-1 flex-col gap-2"><div class="skeleton h-4 w-1/3 rounded"></div><div class="skeleton h-3.5 w-full rounded"></div><div class="skeleton h-3.5 w-5/6 rounded">`),m=a(`<div class="flex flex-col gap-2"><div class="skeleton h-3.5 w-24 rounded"></div><div class="skeleton h-9 w-32 rounded"></div><div class="skeleton h-3 w-20 rounded">`),h=a(`<div class="flex flex-col gap-3"><div class="skeleton h-40 w-full rounded-lg"></div><div class="skeleton h-5 w-3/4 rounded"></div><div class="skeleton h-3.5 w-full rounded">`),g=a(`<div class="skeleton h-32 w-full rounded-lg">`),_=a(`<div class="skeleton size-32 rounded-lg">`),v=a(`<div class="skeleton size-16 rounded-full">`),y=a(`<div class="skeleton h-4 w-full rounded">`),b=a(`<div class="flex flex-col gap-2"><div class="skeleton h-4 w-full rounded"></div><div class="skeleton h-4 w-11/12 rounded"></div><div class="skeleton h-4 w-4/5 rounded"></div><div class="skeleton h-4 w-5/6 rounded">`),x=a=>{let l=s({variant:`card-image`},a);return n(o,{get when(){return l.enabled},get fallback(){return l.children},get children(){return i(()=>l.type===`custom`)()?(()=>{var n=c();return r(()=>t(n,e(`skeleton`,l.class))),n})():n(S,{get type(){return l.type},get variant(){return l.variant}})}})},S=e=>e.type===`shape`?n(w,{get variant(){return e.variant}}):n(C,{get variant(){return e.variant}}),C=e=>{switch(e.variant){case`cardImage`:return l();case`cardHorizontal`:return u();case`profile`:return d();case`article`:return f();case`feedItem`:return p();case`stat`:return m();default:return h()}},w=e=>{switch(e.variant){case`rectangle`:return g();case`square`:return _();case`circle`:return v();case`textLine`:return y();case`textParagraph`:return b();default:return g()}};export{x as Skeleton};
2
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","names":["cn","Component","mergeProps","ParentComponent","Show","Switch","LayoutVariant","ShapeVariant","LayoutSkeletonProps","type","variant","enabled","ShapeSkeletonProps","CustomSkeletonProps","class","SkeletonProps","Skeleton","rawProps","p","const","_$createComponent","when","fallback","children","_$memo","_el$","_tmpl$","_$effect","_$className","SkeletonDisplay","SkeletonDisplayProps","ShapeSkeleton","LayoutSkeleton","_tmpl$2","_tmpl$3","_tmpl$4","_tmpl$5","_tmpl$6","_tmpl$7","_tmpl$8","_tmpl$9","_tmpl$0","_tmpl$1","_tmpl$10","_tmpl$11"],"sources":["../../../src/components/skeleton/skeleton.tsx"],"sourcesContent":["import { cn } from '@/utils/cn';\r\nimport { Component, mergeProps, ParentComponent, Show, Switch } from 'solid-js';\r\n// No custom CSS needed — uses DaisyUI's built-in .skeleton class\r\n\r\n// ─── Type definitions ─────────────────────────────────────────────────────────\r\n\r\n/** Layout skeleton: giao diện phức tạp gồm nhiều element */\r\ntype LayoutVariant =\r\n | 'cardImage' // Card với ảnh trên + text dưới\r\n | 'cardHorizontal' // Card nằm ngang: ảnh trái, nội dung phải\r\n | 'profile' // Avatar tròn + tên + mô tả\r\n | 'article' // Tiêu đề + đoạn văn nhiều dòng\r\n | 'feedItem' // Item list: avatar trái + text dọc\r\n | 'stat'; // Khối thống kê: label + số lớn + sublabel\r\n\r\n/** Shape skeleton: hình khối đơn giản với kích thước preset */\r\ntype ShapeVariant =\r\n | 'rectangle' // Hình chữ nhật (mặc định w-full)\r\n | 'square' // Hình vuông (w = h)\r\n | 'circle' // Hình tròn\r\n | 'textLine' // Một dòng text\r\n | 'textParagraph'; // Đoạn text 3–4 dòng\r\n\r\ntype LayoutSkeletonProps = {\r\n type: 'layout';\r\n variant?: LayoutVariant;\r\n enabled: boolean;\r\n};\r\n\r\ntype ShapeSkeletonProps = {\r\n type: 'shape';\r\n variant?: ShapeVariant;\r\n enabled: boolean;\r\n};\r\n\r\n/** Custom skeleton: user toàn quyền cấu hình — class áp thẳng lên element skeleton */\r\ntype CustomSkeletonProps = {\r\n type: 'custom';\r\n enabled: boolean;\r\n class: string; // bắt buộc — định nghĩa hình dạng, kích thước, bo góc\r\n};\r\n\r\nexport type SkeletonProps = LayoutSkeletonProps | ShapeSkeletonProps | CustomSkeletonProps;\r\n\r\n// ─── Main component ───────────────────────────────────────────────────────────\r\n\r\nexport const Skeleton: ParentComponent<SkeletonProps> = rawProps => {\r\n const p = mergeProps({ variant: 'card-image' } as const, rawProps);\r\n\r\n return (\r\n <Show when={p.enabled} fallback={p.children}>\r\n {p.type === 'custom' ? (\r\n <div class={cn('skeleton', p.class)} />\r\n ) : (\r\n <SkeletonDisplay\r\n type={p.type}\r\n variant={(p as LayoutSkeletonProps | ShapeSkeletonProps).variant as never}\r\n />\r\n )}\r\n </Show>\r\n );\r\n};\r\n\r\n// ─── Display switcher ─────────────────────────────────────────────────────────\r\n\r\ntype SkeletonDisplayProps = {\r\n type: 'layout' | 'shape';\r\n variant: LayoutVariant | ShapeVariant;\r\n class?: string;\r\n};\r\n\r\nconst SkeletonDisplay: Component<SkeletonDisplayProps> = p => {\r\n if (p.type === 'shape') {\r\n return <ShapeSkeleton variant={p.variant as ShapeVariant} />;\r\n }\r\n return <LayoutSkeleton variant={p.variant as LayoutVariant} />;\r\n};\r\n\r\n// ─── Layout Skeletons ─────────────────────────────────────────────────────────\r\n\r\nconst LayoutSkeleton: Component<{ variant?: LayoutVariant }> = p => {\r\n switch (p.variant) {\r\n case 'cardImage':\r\n return (\r\n <div class=\"flex flex-col gap-3\">\r\n <div class=\"skeleton h-40 w-full rounded-lg\" />\r\n <div class=\"skeleton h-5 w-3/4 rounded\" />\r\n <div class=\"skeleton h-3.5 w-full rounded\" />\r\n <div class=\"skeleton h-3.5 w-5/6 rounded\" />\r\n <div class=\"skeleton h-3.5 w-4/5 rounded\" />\r\n </div>\r\n );\r\n\r\n case 'cardHorizontal':\r\n return (\r\n <div class=\"flex flex-row items-start gap-4\">\r\n <div class=\"skeleton size-24 shrink-0 rounded-lg\" />\r\n <div class=\"flex flex-1 flex-col gap-2.5\">\r\n <div class=\"skeleton h-5 w-2/3 rounded\" />\r\n <div class=\"skeleton h-3.5 w-full rounded\" />\r\n <div class=\"skeleton h-3.5 w-4/5 rounded\" />\r\n <div class=\"skeleton h-3.5 w-3/4 rounded\" />\r\n </div>\r\n </div>\r\n );\r\n\r\n case 'profile':\r\n return (\r\n <div class=\"flex flex-col items-center gap-3\">\r\n <div class=\"skeleton size-20 shrink-0 rounded-full\" />\r\n <div class=\"skeleton h-5 w-36 rounded\" />\r\n <div class=\"skeleton h-3.5 w-48 rounded\" />\r\n <div class=\"skeleton h-3.5 w-40 rounded\" />\r\n </div>\r\n );\r\n\r\n case 'article':\r\n return (\r\n <div class=\"flex flex-col gap-3\">\r\n <div class=\"skeleton h-7 w-3/4 rounded\" />\r\n <div class=\"skeleton h-4 w-1/3 rounded\" />\r\n <div class=\"mt-1 flex flex-col gap-2\">\r\n <div class=\"skeleton h-3.5 w-full rounded\" />\r\n <div class=\"skeleton h-3.5 w-full rounded\" />\r\n <div class=\"skeleton h-3.5 w-11/12 rounded\" />\r\n <div class=\"skeleton h-3.5 w-full rounded\" />\r\n <div class=\"skeleton h-3.5 w-4/5 rounded\" />\r\n </div>\r\n </div>\r\n );\r\n\r\n case 'feedItem':\r\n return (\r\n <div class=\"flex flex-row items-start gap-3\">\r\n <div class=\"skeleton size-10 shrink-0 rounded-full\" />\r\n <div class=\"flex flex-1 flex-col gap-2\">\r\n <div class=\"skeleton h-4 w-1/3 rounded\" />\r\n <div class=\"skeleton h-3.5 w-full rounded\" />\r\n <div class=\"skeleton h-3.5 w-5/6 rounded\" />\r\n </div>\r\n </div>\r\n );\r\n\r\n case 'stat':\r\n return (\r\n <div class=\"flex flex-col gap-2\">\r\n <div class=\"skeleton h-3.5 w-24 rounded\" />\r\n <div class=\"skeleton h-9 w-32 rounded\" />\r\n <div class=\"skeleton h-3 w-20 rounded\" />\r\n </div>\r\n );\r\n\r\n default:\r\n return (\r\n <div class=\"flex flex-col gap-3\">\r\n <div class=\"skeleton h-40 w-full rounded-lg\" />\r\n <div class=\"skeleton h-5 w-3/4 rounded\" />\r\n <div class=\"skeleton h-3.5 w-full rounded\" />\r\n </div>\r\n );\r\n }\r\n};\r\n\r\n// ─── Shape Skeletons ──────────────────────────────────────────────────────────\r\n\r\nconst ShapeSkeleton: Component<{ variant?: ShapeVariant }> = p => {\r\n switch (p.variant) {\r\n case 'rectangle':\r\n return <div class=\"skeleton h-32 w-full rounded-lg\" />;\r\n\r\n case 'square':\r\n return <div class=\"skeleton size-32 rounded-lg\" />;\r\n\r\n case 'circle':\r\n return <div class=\"skeleton size-16 rounded-full\" />;\r\n\r\n case 'textLine':\r\n return <div class=\"skeleton h-4 w-full rounded\" />;\r\n\r\n case 'textParagraph':\r\n return (\r\n <div class=\"flex flex-col gap-2\">\r\n <div class=\"skeleton h-4 w-full rounded\" />\r\n <div class=\"skeleton h-4 w-11/12 rounded\" />\r\n <div class=\"skeleton h-4 w-4/5 rounded\" />\r\n <div class=\"skeleton h-4 w-5/6 rounded\" />\r\n </div>\r\n );\r\n\r\n default:\r\n return <div class=\"skeleton h-32 w-full rounded-lg\" />;\r\n }\r\n};\r\n"],"mappings":"u+EA8CagB,EAA2CC,GAAY,CAClE,IAAMC,EAAIhB,EAAW,CAAEQ,QAAS,aAAc,CAAWO,EAAS,CAElE,OAAAG,EACGhB,EAAI,CAAA,IAACiB,MAAI,CAAA,OAAEH,EAAEP,SAAO,IAAEW,UAAQ,CAAA,OAAEJ,EAAEK,UAAQ,IAAAA,UAAA,CAAA,OACxCC,MAAAN,EAAET,OAAS,SAAQ,EAAA,MAAA,CAAA,IAAAgB,EAAAC,GAAA,CACiB,OADjBC,MAAAC,EAAAH,EACNzB,EAAG,WAAYkB,EAAEJ,MAAM,CAAA,CAAA,CAAAW,KAAA,CAAAL,EAElCS,EAAe,CAAA,IACdpB,MAAI,CAAA,OAAES,EAAET,MAAI,IACZC,SAAO,CAAA,OAAGQ,EAA+CR,SAAgB,CAE5E,EAAA,CAAA,EAaDmB,EAAmDX,GACnDA,EAAET,OAAS,QACbW,EAAQW,EAAa,CAAA,IAACrB,SAAO,CAAA,OAAEQ,EAAER,SAAuB,CAAA,CAE1DU,EAAQY,EAAc,CAAA,IAACtB,SAAO,CAAA,OAAEQ,EAAER,SAAwB,CAAA,CAKtDsB,EAAyDd,GAAK,CAClE,OAAQA,EAAER,QAAV,CACE,IAAK,YACH,OAAAuB,GAAA,CAUF,IAAK,iBACH,OAAAC,GAAA,CAYF,IAAK,UACH,OAAAC,GAAA,CASF,IAAK,UACH,OAAAC,GAAA,CAcF,IAAK,WACH,OAAAC,GAAA,CAWF,IAAK,OACH,OAAAC,GAAA,CAQF,QACE,OAAAC,GAAA,GAYAR,EAAuDb,GAAK,CAChE,OAAQA,EAAER,QAAV,CACE,IAAK,YACH,OAAA8B,GAAA,CAEF,IAAK,SACH,OAAAC,GAAA,CAEF,IAAK,SACH,OAAAC,GAAA,CAEF,IAAK,WACH,OAAAC,GAAA,CAEF,IAAK,gBACH,OAAAC,GAAA,CASF,QACE,OAAAJ,GAAA"}
@@ -0,0 +1,2 @@
1
+ export { Slider } from './slider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/slider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Component } from 'solid-js';
2
+ import { SliderProps } from './slider.types';
3
+ export declare const Slider: Component<SliderProps>;
4
+ //# sourceMappingURL=slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../src/components/slider/slider.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EASV,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,gBAAgB,CAAC;AAuCtE,eAAO,MAAM,MAAM,EAAE,SAAS,CAAC,WAAW,CAobzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{cn as e}from"../../utils/cn.js";import{getColor as t}from"../../utils/helper.js";import{className as n,createComponent as r,delegateEvents as i,effect as a,insert as o,mergeProps as s,setAttribute as c,style as l,template as u,use as d}from"solid-js/web";import{For as f,Show as p,createEffect as m,createMemo as h,createSignal as g,mergeProps as _,on as v}from"solid-js";var y=u(`<div>`),b=u(`<div role=slider>`),x=u(`<div class=sli06>`),S=u(`<div><div><div class=sli06>`),C=u(`<span>`),w=t=>(()=>{var r=y();return o(r,()=>t.children),a(i=>{var a=e(`tooltip`,t.position===`bottom`&&`tooltip-bottom`,t.position===`left`&&`tooltip-left`,t.position===`right`&&`tooltip-right`,t.color&&`tooltip-${t.color}`,t.open&&`tooltip-open`,t.class),o=t.content;return a!==i.e&&n(r,i.e=a),o!==i.t&&c(r,`data-tip`,i.t=o),i},{e:void 0,t:void 0}),r})(),T={color:`primary`,min:0,max:100,step:1,disabled:!1,reverse:!1,orientation:`horizontal`,dots:!1,included:!0,tooltip:{hidden:!1}},E=i=>{i=_(T,i);let[u,E]=g(null),[D,O]=g(null),k,A=h(()=>i.range===!0),[j,M]=g(i.value===void 0?i.defaultValue===void 0?A()?[i.min,i.max]:i.min:i.defaultValue:i.value);m(v(()=>i.value,e=>{e!==void 0&&M(e)}));let N=h(()=>i.value===void 0?j():i.value),P=h(()=>{let e=N();return Array.isArray(e)?e:[i.min,e]}),F=e=>{let{min:t,max:n}=i,r=(e-t)/(n-t)*100;return i.reverse?100-r:r},I=e=>{let{min:t,max:n,step:r}=i,a=t+(i.reverse?100-e:e)/100*(n-t);if(r!=null&&(a=Math.round(a/r)*r),r===null&&i.marks){let e=Object.keys(i.marks).map(Number);e.push(t,n),a=e.reduce((e,t)=>Math.abs(t-a)<Math.abs(e-a)?t:e)}return Math.max(t,Math.min(n,a))},L=e=>{if(!k)return 0;let t=k.getBoundingClientRect(),n=i.orientation===`vertical`,r;r=`touches`in e?n?e.touches[0].clientY:e.touches[0].clientX:n?e.clientY:e.clientX;let a;return a=n?(t.bottom-r)/t.height*100:(r-t.left)/t.width*100,Math.max(0,Math.min(100,a))},R=(e,t)=>{let n;if(A()){let r=[...P()];r[t]=e,t===0&&e>r[1]?r[0]=r[1]:t===1&&e<r[0]&&(r[1]=r[0]),n=r}else n=e;i.value===void 0&&M(n),i.onChange?.(n)},z=(e,t)=>{if(i.disabled)return;e.preventDefault(),e.stopPropagation(),E(t);let n=e=>{R(I(L(e)),t)},r=()=>{E(null),document.removeEventListener(`mousemove`,n),document.removeEventListener(`mouseup`,r),document.removeEventListener(`touchmove`,n),document.removeEventListener(`touchend`,r)};document.addEventListener(`mousemove`,n),document.addEventListener(`mouseup`,r),document.addEventListener(`touchmove`,n),document.addEventListener(`touchend`,r)},B=e=>{if(i.disabled)return;let t=I(L(e));if(A()){let[e,n]=P();R(t,Math.abs(t-e)<=Math.abs(t-n)?0:1)}else R(t,1)},V=h(()=>i.marks?Object.entries(i.marks).map(([e,t])=>{let n=Number(e);return{value:n,percent:F(n),...typeof t==`string`?{label:t,style:void 0}:t}}):[]),H=h(()=>{if(!i.dots)return[];let{min:e,max:t,step:n}=i;if(!n||n<=0)return[];let r=[];for(let i=e;i<=t;i+=n)r.push({value:i,percent:F(i)});return r}),U=e=>{if(!i.included)return!1;let[t,n]=P();return A()?e>=t&&e<=n:e>=i.min&&e<=n},W=h(()=>{let[e,t]=P(),n=i.orientation===`vertical`,r,a;if(A()){let n=F(e),i=F(t);r=Math.min(n,i),a=Math.abs(i-n)}else if(i.reverse){let e=F(t);r=e,a=100-e}else r=0,a=F(t);return n?{bottom:`${r}%`,height:`${a}%`}:{left:`${r}%`,width:`${a}%`}}),G=h(()=>{let[e,t]=P(),n=i.orientation===`vertical`,r=F(e),a=F(t);return n?[{bottom:`${r}%`},{bottom:`${a}%`}]:[{left:`${r}%`},{left:`${a}%`}]}),K=e=>i.tooltip?.formatter===null?``:typeof i.tooltip?.formatter==`function`?String(i.tooltip.formatter(e)):String(e),q=e=>i.tooltip?.forceOpen===!1?!1:i.tooltip?.forceOpen===!0?!0:u()===e||D()===e,J=()=>{if(!i.tooltip)return{};let{forceOpen:e,formatter:t,hidden:n,...r}=i.tooltip;return r},Y=()=>i.orientation===`vertical`;return(()=>{var m=S(),h=m.firstChild,g=h.firstChild;h.$$click=B;var _=k;return typeof _==`function`?d(_,h):k=h,o(h,r(p,{get when(){return i.included!==!1},get children(){var t=y();return a(r=>{var a=e(`sli05`,i.class?.track),o=W();return a!==r.e&&n(t,r.e=a),r.t=l(t,o,r.t),r},{e:void 0,t:void 0}),t}}),g),o(h,r(f,{get each(){return H()},children:t=>(()=>{var r=y();return a(a=>{var o=e(`sli09`,U(t.value)&&`sli10`,i.class?.dot),s=Y()?{bottom:`${t.percent}%`}:{left:`${t.percent}%`};return o!==a.e&&n(r,a.e=o),a.t=l(r,s,a.t),a},{e:void 0,t:void 0}),r})()}),g),o(h,r(f,{get each(){return V()},children:t=>[(()=>{var r=y();return a(a=>{var o=e(`sli11`,U(t.value)&&`sli12`,i.class?.mark),s=Y()?{bottom:`${t.percent}%`}:{left:`${t.percent}%`};return o!==a.e&&n(r,a.e=o),a.t=l(r,s,a.t),a},{e:void 0,t:void 0}),r})(),(()=>{var r=C();return o(r,()=>t.label),a(a=>{var o=e(`sli13`,U(t.value)&&`sli14`,i.class?.markText),s={...Y()?{bottom:`${t.percent}%`}:{left:`${t.percent}%`},...t.style};return o!==a.e&&n(r,a.e=o),a.t=l(r,s,a.t),a},{e:void 0,t:void 0}),r})()]}),g),o(h,r(p,{get when(){return A()},get children(){var t=x();return o(t,r(p,{get when(){return!i.tooltip?.hidden},get fallback(){return(()=>{var t=b();return t.addEventListener(`blur`,()=>O(null)),t.addEventListener(`focus`,()=>O(0)),t.addEventListener(`mouseleave`,()=>O(null)),t.addEventListener(`mouseenter`,()=>O(0)),t.$$touchstart=e=>z(e,0),t.$$mousedown=e=>z(e,0),a(r=>{var a=e(`sli07`,u()===0&&`sli08`,i.class?.handle),o=i.disabled?-1:0,s=i.min,l=i.max,d=P()[0],f=i.disabled;return a!==r.e&&n(t,r.e=a),o!==r.t&&c(t,`tabindex`,r.t=o),s!==r.a&&c(t,`aria-valuemin`,r.a=s),l!==r.o&&c(t,`aria-valuemax`,r.o=l),d!==r.i&&c(t,`aria-valuenow`,r.i=d),f!==r.n&&c(t,`aria-disabled`,r.n=f),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),t})()},get children(){return r(w,s({get content(){return K(P()[0])},get open(){return q(0)},get position(){return Y()?`right`:`top`}},J,{get children(){var t=b();return t.addEventListener(`blur`,()=>O(null)),t.addEventListener(`focus`,()=>O(0)),t.addEventListener(`mouseleave`,()=>O(null)),t.addEventListener(`mouseenter`,()=>O(0)),t.$$touchstart=e=>z(e,0),t.$$mousedown=e=>z(e,0),a(r=>{var a=e(`sli07`,u()===0&&`sli08`,i.class?.handle),o=i.disabled?-1:0,s=i.min,l=i.max,d=P()[0],f=i.disabled;return a!==r.e&&n(t,r.e=a),o!==r.t&&c(t,`tabindex`,r.t=o),s!==r.a&&c(t,`aria-valuemin`,r.a=s),l!==r.o&&c(t,`aria-valuemax`,r.o=l),d!==r.i&&c(t,`aria-valuenow`,r.i=d),f!==r.n&&c(t,`aria-disabled`,r.n=f),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),t}}))}})),a(e=>l(t,G()[0],e)),t}}),g),o(g,r(p,{get when(){return!i.tooltip?.hidden},get fallback(){return(()=>{var t=b();return t.addEventListener(`blur`,()=>O(null)),t.addEventListener(`focus`,()=>O(1)),t.addEventListener(`mouseleave`,()=>O(null)),t.addEventListener(`mouseenter`,()=>O(1)),t.$$touchstart=e=>z(e,1),t.$$mousedown=e=>z(e,1),a(r=>{var a=e(`sli07`,u()===1&&`sli08`,i.class?.handle),o=i.disabled?-1:0,s=i.min,l=i.max,d=P()[1],f=i.disabled;return a!==r.e&&n(t,r.e=a),o!==r.t&&c(t,`tabindex`,r.t=o),s!==r.a&&c(t,`aria-valuemin`,r.a=s),l!==r.o&&c(t,`aria-valuemax`,r.o=l),d!==r.i&&c(t,`aria-valuenow`,r.i=d),f!==r.n&&c(t,`aria-disabled`,r.n=f),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),t})()},get children(){return r(w,s({get content(){return K(P()[1])},get open(){return q(1)},get position(){return Y()?`right`:`top`}},J,{get children(){var t=b();return t.addEventListener(`blur`,()=>O(null)),t.addEventListener(`focus`,()=>O(1)),t.addEventListener(`mouseleave`,()=>O(null)),t.addEventListener(`mouseenter`,()=>O(1)),t.$$touchstart=e=>z(e,1),t.$$mousedown=e=>z(e,1),a(r=>{var a=e(`sli07`,u()===1&&`sli08`,i.class?.handle),o=i.disabled?-1:0,s=i.min,l=i.max,d=P()[1],f=i.disabled;return a!==r.e&&n(t,r.e=a),o!==r.t&&c(t,`tabindex`,r.t=o),s!==r.a&&c(t,`aria-valuemin`,r.a=s),l!==r.o&&c(t,`aria-valuemax`,r.o=l),d!==r.i&&c(t,`aria-valuenow`,r.i=d),f!==r.n&&c(t,`aria-disabled`,r.n=f),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),t}}))}})),a(r=>{var a=e(`sli01`,t(i.color),Y()&&`sli02`,i.disabled&&`sli03`,i.class?.root),o=i.disabled||void 0,s=e(`sli04`,i.class?.rail),u=G()[1];return a!==r.e&&n(m,r.e=a),o!==r.t&&c(m,`data-disabled`,r.t=o),s!==r.a&&n(h,r.a=s),r.o=l(g,u,r.o),r},{e:void 0,t:void 0,a:void 0,o:void 0}),m})()};i([`click`,`mousedown`,`touchstart`]);export{E as Slider};
2
+ //# sourceMappingURL=slider.js.map