mtrl 0.3.8 → 0.4.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 (703) hide show
  1. package/dist/LICENSE +21 -0
  2. package/dist/README.md +324 -0
  3. package/dist/components/badge/api.d.ts +48 -0
  4. package/{src/components/badge/badge.ts → dist/components/badge/badge.d.ts} +14 -57
  5. package/dist/components/badge/config.d.ts +79 -0
  6. package/dist/components/badge/constants.d.ts +35 -0
  7. package/dist/components/badge/features.d.ts +36 -0
  8. package/dist/components/badge/index.d.ts +8 -0
  9. package/dist/components/badge/types.d.ts +256 -0
  10. package/dist/components/bottom-app-bar/bottom-app-bar.d.ts +12 -0
  11. package/dist/components/bottom-app-bar/config.d.ts +16 -0
  12. package/dist/components/bottom-app-bar/constants.d.ts +22 -0
  13. package/{src/components/bottom-app-bar/index.ts → dist/components/bottom-app-bar/index.d.ts} +0 -9
  14. package/dist/components/bottom-app-bar/types.d.ts +96 -0
  15. package/dist/components/button/api.d.ts +47 -0
  16. package/dist/components/button/button.d.ts +25 -0
  17. package/dist/components/button/config.d.ts +59 -0
  18. package/dist/components/button/constants.d.ts +43 -0
  19. package/dist/components/button/index.d.ts +6 -0
  20. package/dist/components/button/types.d.ts +265 -0
  21. package/dist/components/card/api.d.ts +11 -0
  22. package/{src/components/card/card.ts → dist/components/card/card.d.ts} +10 -58
  23. package/dist/components/card/config.d.ts +105 -0
  24. package/dist/components/card/constants.d.ts +85 -0
  25. package/dist/components/card/content.d.ts +92 -0
  26. package/dist/components/card/features.d.ts +131 -0
  27. package/{src/components/card/index.ts → dist/components/card/index.d.ts} +13 -74
  28. package/dist/components/card/types.d.ts +471 -0
  29. package/dist/components/carousel/api.d.ts +33 -0
  30. package/dist/components/carousel/carousel.d.ts +75 -0
  31. package/dist/components/carousel/config.d.ts +45 -0
  32. package/dist/components/carousel/constants.d.ts +165 -0
  33. package/dist/components/carousel/features/drag.d.ts +8 -0
  34. package/{src/components/carousel/features/index.ts → dist/components/carousel/features/index.d.ts} +1 -4
  35. package/dist/components/carousel/features/slides.d.ts +8 -0
  36. package/{src/components/carousel/index.ts → dist/components/carousel/index.d.ts} +10 -29
  37. package/dist/components/carousel/types.d.ts +276 -0
  38. package/dist/components/checkbox/api.d.ts +7 -0
  39. package/dist/components/checkbox/checkbox.d.ts +65 -0
  40. package/dist/components/checkbox/config.d.ts +44 -0
  41. package/dist/components/checkbox/constants.d.ts +63 -0
  42. package/{src/components/checkbox/index.ts → dist/components/checkbox/index.d.ts} +8 -25
  43. package/dist/components/checkbox/types.d.ts +242 -0
  44. package/dist/components/chips/api.d.ts +49 -0
  45. package/dist/components/chips/chip/api.d.ts +23 -0
  46. package/dist/components/chips/chip/chip.d.ts +8 -0
  47. package/dist/components/chips/chip/config.d.ts +57 -0
  48. package/dist/components/chips/chip/constants.d.ts +38 -0
  49. package/dist/components/chips/chip/index.d.ts +2 -0
  50. package/dist/components/chips/chip/types.d.ts +11 -0
  51. package/dist/components/chips/chips.d.ts +17 -0
  52. package/dist/components/chips/config.d.ts +67 -0
  53. package/dist/components/chips/constants.d.ts +46 -0
  54. package/dist/components/chips/features/chip-items.d.ts +8 -0
  55. package/dist/components/chips/features/container.d.ts +8 -0
  56. package/dist/components/chips/features/controller.d.ts +9 -0
  57. package/{src/components/chips/features/index.ts → dist/components/chips/features/index.d.ts} +1 -2
  58. package/dist/components/chips/features/label.d.ts +8 -0
  59. package/dist/components/chips/index.d.ts +4 -0
  60. package/dist/components/chips/schema.d.ts +34 -0
  61. package/dist/components/chips/types.d.ts +398 -0
  62. package/dist/components/datepicker/api.d.ts +9 -0
  63. package/dist/components/datepicker/config.d.ts +79 -0
  64. package/dist/components/datepicker/constants.d.ts +97 -0
  65. package/dist/components/datepicker/datepicker.d.ts +8 -0
  66. package/dist/components/datepicker/index.d.ts +3 -0
  67. package/dist/components/datepicker/render.d.ts +43 -0
  68. package/dist/components/datepicker/types.d.ts +321 -0
  69. package/dist/components/datepicker/utils.d.ts +84 -0
  70. package/dist/components/dialog/api.d.ts +59 -0
  71. package/dist/components/dialog/config.d.ts +91 -0
  72. package/dist/components/dialog/constants.d.ts +116 -0
  73. package/{src/components/dialog/dialog.ts → dist/components/dialog/dialog.d.ts} +16 -69
  74. package/dist/components/dialog/features.d.ts +37 -0
  75. package/dist/components/dialog/index.d.ts +14 -0
  76. package/dist/components/dialog/types.d.ts +483 -0
  77. package/dist/components/divider/config.d.ts +143 -0
  78. package/dist/components/divider/constants.d.ts +45 -0
  79. package/{src/components/divider/divider.ts → dist/components/divider/divider.d.ts} +9 -37
  80. package/dist/components/divider/features.d.ts +50 -0
  81. package/{src/components/divider/index.ts → dist/components/divider/index.d.ts} +6 -12
  82. package/dist/components/divider/types.d.ts +124 -0
  83. package/dist/components/extended-fab/api.d.ts +83 -0
  84. package/dist/components/extended-fab/config.d.ts +75 -0
  85. package/dist/components/extended-fab/constants.d.ts +82 -0
  86. package/dist/components/extended-fab/extended-fab.d.ts +61 -0
  87. package/{src/components/extended-fab/index.ts → dist/components/extended-fab/index.d.ts} +6 -15
  88. package/dist/components/extended-fab/types.d.ts +703 -0
  89. package/dist/components/fab/api.d.ts +64 -0
  90. package/dist/components/fab/config.d.ts +71 -0
  91. package/dist/components/fab/constants.d.ts +75 -0
  92. package/{src/components/fab/fab.ts → dist/components/fab/fab.d.ts} +10 -46
  93. package/{src/components/fab/index.ts → dist/components/fab/index.d.ts} +6 -15
  94. package/dist/components/fab/types.d.ts +577 -0
  95. package/dist/components/index.d.ts +76 -0
  96. package/dist/components/list/api.d.ts +106 -0
  97. package/dist/components/list/config.d.ts +61 -0
  98. package/dist/components/list/constants.d.ts +76 -0
  99. package/dist/components/list/features/index.d.ts +2 -0
  100. package/dist/components/list/features/listmanager.d.ts +9 -0
  101. package/dist/components/list/features/selection.d.ts +9 -0
  102. package/dist/components/list/index.d.ts +12 -0
  103. package/dist/components/list/list.d.ts +11 -0
  104. package/dist/components/list/types.d.ts +294 -0
  105. package/dist/components/menu/api.d.ts +58 -0
  106. package/dist/components/menu/config.d.ts +78 -0
  107. package/dist/components/menu/constants.d.ts +106 -0
  108. package/dist/components/menu/features/controller.d.ts +10 -0
  109. package/dist/components/menu/features/index.d.ts +6 -0
  110. package/dist/components/menu/features/keyboard.d.ts +26 -0
  111. package/dist/components/menu/features/opener.d.ts +10 -0
  112. package/dist/components/menu/features/position.d.ts +18 -0
  113. package/dist/components/menu/features/submenu.d.ts +10 -0
  114. package/{src/components/menu/index.ts → dist/components/menu/index.d.ts} +11 -27
  115. package/dist/components/menu/menu.d.ts +29 -0
  116. package/dist/components/menu/types.d.ts +338 -0
  117. package/dist/components/navigation/api.d.ts +8 -0
  118. package/dist/components/navigation/config.d.ts +34 -0
  119. package/dist/components/navigation/constants.d.ts +137 -0
  120. package/dist/components/navigation/features/controller.d.ts +30 -0
  121. package/dist/components/navigation/features/items.d.ts +32 -0
  122. package/dist/components/navigation/index.d.ts +3 -0
  123. package/dist/components/navigation/nav-item.d.ts +30 -0
  124. package/dist/components/navigation/navigation.d.ts +8 -0
  125. package/dist/components/navigation/system/core.d.ts +72 -0
  126. package/dist/components/navigation/system/events.d.ts +35 -0
  127. package/dist/components/navigation/system/index.d.ts +10 -0
  128. package/dist/components/navigation/system/mobile.d.ts +52 -0
  129. package/dist/components/navigation/system/state.d.ts +22 -0
  130. package/dist/components/navigation/system/types.d.ts +305 -0
  131. package/dist/components/navigation/types.d.ts +216 -0
  132. package/dist/components/progress/api.d.ts +46 -0
  133. package/dist/components/progress/config.d.ts +72 -0
  134. package/dist/components/progress/constants.d.ts +139 -0
  135. package/dist/components/progress/features/canvas.d.ts +32 -0
  136. package/dist/components/progress/features/circular.d.ts +9 -0
  137. package/dist/components/progress/features/index.d.ts +8 -0
  138. package/dist/components/progress/features/linear.d.ts +9 -0
  139. package/dist/components/progress/features/resize-observer.d.ts +5 -0
  140. package/dist/components/progress/features/state.d.ts +38 -0
  141. package/dist/components/progress/features.d.ts +40 -0
  142. package/dist/components/progress/index.d.ts +3 -0
  143. package/dist/components/progress/progress.d.ts +24 -0
  144. package/dist/components/progress/types.d.ts +272 -0
  145. package/dist/components/radios/api.d.ts +37 -0
  146. package/dist/components/radios/config.d.ts +42 -0
  147. package/dist/components/radios/constants.d.ts +114 -0
  148. package/dist/components/radios/index.d.ts +3 -0
  149. package/dist/components/radios/radio.d.ts +8 -0
  150. package/dist/components/radios/radios.d.ts +8 -0
  151. package/dist/components/radios/types.d.ts +189 -0
  152. package/dist/components/search/api.d.ts +55 -0
  153. package/dist/components/search/config.d.ts +73 -0
  154. package/dist/components/search/constants.d.ts +128 -0
  155. package/{src/components/search/features/index.ts → dist/components/search/features/index.d.ts} +1 -2
  156. package/dist/components/search/features/search.d.ts +7 -0
  157. package/dist/components/search/features/states.d.ts +8 -0
  158. package/dist/components/search/features/structure.d.ts +7 -0
  159. package/dist/components/search/index.d.ts +3 -0
  160. package/dist/components/search/search.d.ts +8 -0
  161. package/dist/components/search/types.d.ts +132 -0
  162. package/dist/components/segmented-button/config.d.ts +65 -0
  163. package/dist/components/segmented-button/constants.d.ts +85 -0
  164. package/dist/components/segmented-button/index.d.ts +4 -0
  165. package/dist/components/segmented-button/segment.d.ts +15 -0
  166. package/dist/components/segmented-button/segmented-button.d.ts +49 -0
  167. package/dist/components/segmented-button/types.d.ts +257 -0
  168. package/dist/components/select/api.d.ts +8 -0
  169. package/dist/components/select/config.d.ts +18 -0
  170. package/dist/components/select/constants.d.ts +113 -0
  171. package/dist/components/select/features.d.ts +13 -0
  172. package/{src/components/select/index.ts → dist/components/select/index.d.ts} +7 -20
  173. package/dist/components/select/select.d.ts +36 -0
  174. package/dist/components/select/types.d.ts +302 -0
  175. package/dist/components/sheet/api.d.ts +37 -0
  176. package/dist/components/sheet/config.d.ts +42 -0
  177. package/dist/components/sheet/constants.d.ts +136 -0
  178. package/dist/components/sheet/features/content.d.ts +6 -0
  179. package/dist/components/sheet/features/gestures.d.ts +6 -0
  180. package/{src/components/sheet/features/index.ts → dist/components/sheet/features/index.d.ts} +1 -2
  181. package/dist/components/sheet/features/position.d.ts +7 -0
  182. package/dist/components/sheet/features/state.d.ts +6 -0
  183. package/dist/components/sheet/features/title.d.ts +6 -0
  184. package/dist/components/sheet/index.d.ts +3 -0
  185. package/dist/components/sheet/sheet.d.ts +8 -0
  186. package/dist/components/sheet/types.d.ts +250 -0
  187. package/dist/components/slider/api.d.ts +57 -0
  188. package/dist/components/slider/config.d.ts +75 -0
  189. package/dist/components/slider/constants.d.ts +138 -0
  190. package/dist/components/slider/features/controller.d.ts +9 -0
  191. package/dist/components/slider/features/handlers.d.ts +25 -0
  192. package/dist/components/slider/features/index.d.ts +3 -0
  193. package/dist/components/slider/features/range.d.ts +8 -0
  194. package/dist/components/slider/features/states.d.ts +9 -0
  195. package/dist/components/slider/index.d.ts +3 -0
  196. package/dist/components/slider/schema.d.ts +108 -0
  197. package/dist/components/slider/slider.d.ts +18 -0
  198. package/dist/components/slider/types.d.ts +170 -0
  199. package/dist/components/snackbar/api.d.ts +7 -0
  200. package/dist/components/snackbar/config.d.ts +55 -0
  201. package/dist/components/snackbar/constants.d.ts +88 -0
  202. package/dist/components/snackbar/features.d.ts +13 -0
  203. package/dist/components/snackbar/index.d.ts +3 -0
  204. package/dist/components/snackbar/position.d.ts +15 -0
  205. package/dist/components/snackbar/queue.d.ts +7 -0
  206. package/dist/components/snackbar/snackbar.d.ts +8 -0
  207. package/dist/components/snackbar/types.d.ts +172 -0
  208. package/dist/components/switch/api.d.ts +7 -0
  209. package/dist/components/switch/config.d.ts +34 -0
  210. package/dist/components/switch/constants.d.ts +88 -0
  211. package/dist/components/switch/features.d.ts +59 -0
  212. package/dist/components/switch/index.d.ts +4 -0
  213. package/dist/components/switch/switch.d.ts +8 -0
  214. package/dist/components/switch/types.d.ts +131 -0
  215. package/dist/components/tabs/api.d.ts +52 -0
  216. package/dist/components/tabs/config.d.ts +39 -0
  217. package/dist/components/tabs/constants.d.ts +142 -0
  218. package/dist/components/tabs/features.d.ts +133 -0
  219. package/dist/components/tabs/index.d.ts +11 -0
  220. package/dist/components/tabs/indicator.d.ts +49 -0
  221. package/dist/components/tabs/responsive.d.ts +38 -0
  222. package/dist/components/tabs/scroll-indicators.d.ts +18 -0
  223. package/dist/components/tabs/state.d.ts +53 -0
  224. package/dist/components/tabs/tab-api.d.ts +43 -0
  225. package/dist/components/tabs/tab.d.ts +7 -0
  226. package/dist/components/tabs/tabs.d.ts +27 -0
  227. package/dist/components/tabs/types.d.ts +390 -0
  228. package/dist/components/tabs/utils.d.ts +17 -0
  229. package/dist/components/textfield/api.d.ts +8 -0
  230. package/dist/components/textfield/config.d.ts +34 -0
  231. package/dist/components/textfield/constants.d.ts +148 -0
  232. package/{src/components/textfield/features/index.ts → dist/components/textfield/features/index.d.ts} +1 -6
  233. package/dist/components/textfield/features/leading-icon.d.ts +55 -0
  234. package/dist/components/textfield/features/placement.d.ts +28 -0
  235. package/dist/components/textfield/features/prefix-text.d.ts +54 -0
  236. package/dist/components/textfield/features/suffix-text.d.ts +54 -0
  237. package/dist/components/textfield/features/supporting-text.d.ts +59 -0
  238. package/dist/components/textfield/features/trailing-icon.d.ts +55 -0
  239. package/dist/components/textfield/index.d.ts +3 -0
  240. package/dist/components/textfield/textfield.d.ts +36 -0
  241. package/dist/components/textfield/types.d.ts +217 -0
  242. package/dist/components/timepicker/api.d.ts +24 -0
  243. package/dist/components/timepicker/clockdial.d.ts +34 -0
  244. package/dist/components/timepicker/config.d.ts +75 -0
  245. package/dist/components/timepicker/constants.d.ts +266 -0
  246. package/dist/components/timepicker/index.d.ts +4 -0
  247. package/dist/components/timepicker/render.d.ts +9 -0
  248. package/dist/components/timepicker/timepicker.d.ts +8 -0
  249. package/dist/components/timepicker/types.d.ts +284 -0
  250. package/dist/components/timepicker/utils.d.ts +74 -0
  251. package/dist/components/tooltip/api.d.ts +18 -0
  252. package/dist/components/tooltip/config.d.ts +38 -0
  253. package/dist/components/tooltip/constants.d.ts +108 -0
  254. package/dist/components/tooltip/index.d.ts +3 -0
  255. package/dist/components/tooltip/tooltip.d.ts +8 -0
  256. package/dist/components/tooltip/types.d.ts +188 -0
  257. package/dist/components/top-app-bar/config.d.ts +16 -0
  258. package/dist/components/top-app-bar/constants.d.ts +74 -0
  259. package/{src/components/top-app-bar/index.ts → dist/components/top-app-bar/index.d.ts} +2 -4
  260. package/dist/components/top-app-bar/top-app-bar.d.ts +68 -0
  261. package/dist/components/top-app-bar/types.d.ts +118 -0
  262. package/dist/constants.d.ts +30 -0
  263. package/dist/core/canvas/index.d.ts +5 -0
  264. package/dist/core/canvas/resize.d.ts +14 -0
  265. package/dist/core/collection/adapters/base.d.ts +47 -0
  266. package/dist/core/collection/adapters/route.d.ts +149 -0
  267. package/dist/core/collection/collection.d.ts +131 -0
  268. package/dist/core/collection/index.d.ts +10 -0
  269. package/dist/core/collection/list-manager/config.d.ts +29 -0
  270. package/dist/core/collection/list-manager/dom-elements.d.ts +30 -0
  271. package/dist/core/collection/list-manager/index.d.ts +61 -0
  272. package/dist/core/collection/list-manager/item-measurement.d.ts +91 -0
  273. package/dist/core/collection/list-manager/renderer.d.ts +31 -0
  274. package/dist/core/collection/list-manager/scroll-tracker.d.ts +20 -0
  275. package/dist/core/collection/list-manager/state.d.ts +60 -0
  276. package/dist/core/collection/list-manager/types.d.ts +361 -0
  277. package/dist/core/collection/list-manager/utils/recycling.d.ts +34 -0
  278. package/dist/core/collection/list-manager/utils/visibility.d.ts +45 -0
  279. package/dist/core/compose/base.d.ts +31 -0
  280. package/dist/core/compose/component.d.ts +61 -0
  281. package/dist/core/compose/features/badge.d.ts +43 -0
  282. package/dist/core/compose/features/checkable.d.ts +59 -0
  283. package/dist/core/compose/features/constants.d.ts +45 -0
  284. package/dist/core/compose/features/debounce.d.ts +84 -0
  285. package/dist/core/compose/features/disabled.d.ts +47 -0
  286. package/dist/core/compose/features/events.d.ts +37 -0
  287. package/dist/core/compose/features/gestures/longpress.d.ts +85 -0
  288. package/dist/core/compose/features/gestures/pan.d.ts +108 -0
  289. package/dist/core/compose/features/gestures/pinch.d.ts +111 -0
  290. package/dist/core/compose/features/gestures/rotate.d.ts +111 -0
  291. package/dist/core/compose/features/gestures/swipe.d.ts +149 -0
  292. package/dist/core/compose/features/gestures/tap.d.ts +79 -0
  293. package/dist/core/compose/features/gestures.d.ts +86 -0
  294. package/dist/core/compose/features/icon.d.ts +71 -0
  295. package/{src/core/compose/features/index.ts → dist/core/compose/features/index.d.ts} +7 -8
  296. package/dist/core/compose/features/input.d.ts +71 -0
  297. package/dist/core/compose/features/lifecycle.d.ts +61 -0
  298. package/dist/core/compose/features/position.d.ts +51 -0
  299. package/dist/core/compose/features/ripple.d.ts +61 -0
  300. package/dist/core/compose/features/size.d.ts +17 -0
  301. package/dist/core/compose/features/style.d.ts +16 -0
  302. package/dist/core/compose/features/text.d.ts +63 -0
  303. package/dist/core/compose/features/textinput.d.ts +93 -0
  304. package/dist/core/compose/features/textlabel.d.ts +57 -0
  305. package/dist/core/compose/features/throttle.d.ts +75 -0
  306. package/dist/core/compose/features/track.d.ts +42 -0
  307. package/dist/core/compose/features/variant.d.ts +17 -0
  308. package/dist/core/compose/features/withEvents.d.ts +45 -0
  309. package/dist/core/compose/index.d.ts +17 -0
  310. package/{src/core/compose/pipe.ts → dist/core/compose/pipe.d.ts} +4 -20
  311. package/dist/core/compose/utils/type-guards.d.ts +27 -0
  312. package/dist/core/composition/features/dom.d.ts +19 -0
  313. package/dist/core/composition/features/icon.d.ts +45 -0
  314. package/{src/core/composition/features/index.ts → dist/core/composition/features/index.d.ts} +1 -6
  315. package/dist/core/composition/features/label.d.ts +49 -0
  316. package/{src/core/composition/features/layout.ts → dist/core/composition/features/layout.d.ts} +8 -24
  317. package/{src/core/composition/index.ts → dist/core/composition/index.d.ts} +4 -14
  318. package/{src/core/config/component-config.ts → dist/core/config/component.d.ts} +35 -83
  319. package/dist/core/config.d.ts +130 -0
  320. package/dist/core/dom/attributes.d.ts +20 -0
  321. package/dist/core/dom/classes.d.ts +52 -0
  322. package/dist/core/dom/create.d.ts +154 -0
  323. package/dist/core/dom/events.d.ts +69 -0
  324. package/dist/core/dom/index.d.ts +6 -0
  325. package/dist/core/dom/utils.d.ts +42 -0
  326. package/dist/core/gestures/index.d.ts +12 -0
  327. package/dist/core/gestures/longpress.d.ts +23 -0
  328. package/dist/core/gestures/manager.d.ts +14 -0
  329. package/dist/core/gestures/pan.d.ts +12 -0
  330. package/dist/core/gestures/pinch.d.ts +14 -0
  331. package/dist/core/gestures/rotate.d.ts +14 -0
  332. package/dist/core/gestures/swipe.d.ts +20 -0
  333. package/dist/core/gestures/tap.d.ts +12 -0
  334. package/dist/core/gestures/types.d.ts +320 -0
  335. package/dist/core/gestures/utils.d.ts +57 -0
  336. package/dist/core/index.d.ts +29 -0
  337. package/dist/core/layout/array.d.ts +15 -0
  338. package/dist/core/layout/config.d.ts +32 -0
  339. package/dist/core/layout/create.d.ts +14 -0
  340. package/dist/core/layout/index.d.ts +13 -0
  341. package/dist/core/layout/jsx.d.ts +13 -0
  342. package/dist/core/layout/object.d.ts +14 -0
  343. package/dist/core/layout/processor.d.ts +28 -0
  344. package/dist/core/layout/result.d.ts +12 -0
  345. package/dist/core/layout/template.d.ts +12 -0
  346. package/dist/core/layout/types.d.ts +137 -0
  347. package/dist/core/layout/utils.d.ts +38 -0
  348. package/dist/core/state/disabled.d.ts +32 -0
  349. package/dist/core/state/emitter.d.ts +40 -0
  350. package/dist/core/state/events.d.ts +36 -0
  351. package/{src/core/state/index.ts → dist/core/state/index.d.ts} +1 -7
  352. package/dist/core/state/lifecycle.d.ts +57 -0
  353. package/dist/core/state/store.d.ts +82 -0
  354. package/dist/core/utils/background.d.ts +40 -0
  355. package/dist/core/utils/index.d.ts +18 -0
  356. package/dist/core/utils/mobile.d.ts +54 -0
  357. package/dist/core/utils/object.d.ts +13 -0
  358. package/dist/core/utils/performance.d.ts +79 -0
  359. package/dist/core/utils/theme.d.ts +38 -0
  360. package/dist/core/utils/validate.d.ts +73 -0
  361. package/dist/index.cjs +64 -0
  362. package/dist/index.cjs.map +291 -0
  363. package/dist/index.d.ts +15 -0
  364. package/dist/index.js +53 -14854
  365. package/dist/index.js.map +291 -0
  366. package/dist/package.json +39 -0
  367. package/dist/styles.css +7 -0
  368. package/package.json +23 -4
  369. package/.env +0 -15
  370. package/.typedocignore +0 -11
  371. package/CONTRIBUTING.md +0 -218
  372. package/DOCS.md +0 -153
  373. package/TESTING.md +0 -214
  374. package/git-user-stats.js +0 -545
  375. package/index.ts +0 -10
  376. package/src/components/badge/api.ts +0 -313
  377. package/src/components/badge/config.ts +0 -153
  378. package/src/components/badge/features.ts +0 -194
  379. package/src/components/badge/index.ts +0 -90
  380. package/src/components/badge/types.ts +0 -279
  381. package/src/components/bottom-app-bar/bottom-app-bar.ts +0 -154
  382. package/src/components/bottom-app-bar/config.ts +0 -29
  383. package/src/components/bottom-app-bar/types.ts +0 -114
  384. package/src/components/button/api.ts +0 -172
  385. package/src/components/button/button.ts +0 -112
  386. package/src/components/button/config.ts +0 -96
  387. package/src/components/button/index.ts +0 -37
  388. package/src/components/button/types.ts +0 -290
  389. package/src/components/card/api.ts +0 -222
  390. package/src/components/card/config.ts +0 -304
  391. package/src/components/card/content.ts +0 -343
  392. package/src/components/card/features.ts +0 -407
  393. package/src/components/card/types.ts +0 -497
  394. package/src/components/carousel/api.ts +0 -147
  395. package/src/components/carousel/carousel.ts +0 -242
  396. package/src/components/carousel/config.ts +0 -91
  397. package/src/components/carousel/constants.ts +0 -181
  398. package/src/components/carousel/features/drag.ts +0 -388
  399. package/src/components/carousel/features/slides.ts +0 -682
  400. package/src/components/carousel/types.ts +0 -327
  401. package/src/components/checkbox/api.ts +0 -82
  402. package/src/components/checkbox/checkbox.ts +0 -142
  403. package/src/components/checkbox/config.ts +0 -89
  404. package/src/components/checkbox/types.ts +0 -342
  405. package/src/components/chips/api.ts +0 -194
  406. package/src/components/chips/chip/api.ts +0 -233
  407. package/src/components/chips/chip/chip.ts +0 -131
  408. package/src/components/chips/chip/config.ts +0 -91
  409. package/src/components/chips/chip/index.ts +0 -3
  410. package/src/components/chips/chips.md +0 -481
  411. package/src/components/chips/chips.ts +0 -75
  412. package/src/components/chips/config.ts +0 -109
  413. package/src/components/chips/constants.ts +0 -61
  414. package/src/components/chips/features/chip-items.ts +0 -33
  415. package/src/components/chips/features/container.ts +0 -77
  416. package/src/components/chips/features/controller.ts +0 -448
  417. package/src/components/chips/features/label.ts +0 -108
  418. package/src/components/chips/index.ts +0 -11
  419. package/src/components/chips/schema.ts +0 -61
  420. package/src/components/chips/types.ts +0 -469
  421. package/src/components/datepicker/api.ts +0 -265
  422. package/src/components/datepicker/config.ts +0 -141
  423. package/src/components/datepicker/datepicker.ts +0 -341
  424. package/src/components/datepicker/index.ts +0 -12
  425. package/src/components/datepicker/render.ts +0 -450
  426. package/src/components/datepicker/types.ts +0 -397
  427. package/src/components/datepicker/utils.ts +0 -289
  428. package/src/components/dialog/api.ts +0 -317
  429. package/src/components/dialog/config.ts +0 -116
  430. package/src/components/dialog/features.ts +0 -907
  431. package/src/components/dialog/index.ts +0 -141
  432. package/src/components/dialog/types.ts +0 -553
  433. package/src/components/divider/config.ts +0 -165
  434. package/src/components/divider/features.ts +0 -233
  435. package/src/components/divider/types.ts +0 -132
  436. package/src/components/extended-fab/api.ts +0 -193
  437. package/src/components/extended-fab/config.ts +0 -140
  438. package/src/components/extended-fab/extended-fab.ts +0 -153
  439. package/src/components/extended-fab/types.ts +0 -749
  440. package/src/components/fab/api.ts +0 -137
  441. package/src/components/fab/config.ts +0 -121
  442. package/src/components/fab/types.ts +0 -615
  443. package/src/components/list/api.ts +0 -82
  444. package/src/components/list/config.ts +0 -63
  445. package/src/components/list/features.ts +0 -229
  446. package/src/components/list/index.ts +0 -67
  447. package/src/components/list/list-item.ts +0 -163
  448. package/src/components/list/list.ts +0 -108
  449. package/src/components/list/types.ts +0 -396
  450. package/src/components/list/utils.ts +0 -98
  451. package/src/components/menu/api.ts +0 -230
  452. package/src/components/menu/config.ts +0 -127
  453. package/src/components/menu/features/anchor.ts +0 -394
  454. package/src/components/menu/features/controller.ts +0 -1423
  455. package/src/components/menu/features/index.ts +0 -13
  456. package/src/components/menu/features/position.ts +0 -353
  457. package/src/components/menu/menu.ts +0 -121
  458. package/src/components/menu/types.ts +0 -392
  459. package/src/components/navigation/api.ts +0 -142
  460. package/src/components/navigation/config.ts +0 -73
  461. package/src/components/navigation/features/controller.ts +0 -273
  462. package/src/components/navigation/features/items.ts +0 -353
  463. package/src/components/navigation/index.ts +0 -11
  464. package/src/components/navigation/nav-item.ts +0 -196
  465. package/src/components/navigation/navigation.ts +0 -115
  466. package/src/components/navigation/system/core.ts +0 -302
  467. package/src/components/navigation/system/events.ts +0 -240
  468. package/src/components/navigation/system/index.ts +0 -184
  469. package/src/components/navigation/system/mobile.ts +0 -278
  470. package/src/components/navigation/system/state.ts +0 -77
  471. package/src/components/navigation/system/types.ts +0 -364
  472. package/src/components/navigation/types.ts +0 -292
  473. package/src/components/progress/api.ts +0 -178
  474. package/src/components/progress/config.ts +0 -122
  475. package/src/components/progress/index.ts +0 -4
  476. package/src/components/progress/progress.ts +0 -159
  477. package/src/components/progress/types.ts +0 -255
  478. package/src/components/radios/api.ts +0 -125
  479. package/src/components/radios/config.ts +0 -59
  480. package/src/components/radios/constants.ts +0 -19
  481. package/src/components/radios/index.ts +0 -3
  482. package/src/components/radios/radio.ts +0 -292
  483. package/src/components/radios/radios.ts +0 -43
  484. package/src/components/radios/types.ts +0 -219
  485. package/src/components/search/api.ts +0 -203
  486. package/src/components/search/config.ts +0 -86
  487. package/src/components/search/features/search.ts +0 -717
  488. package/src/components/search/features/states.ts +0 -169
  489. package/src/components/search/features/structure.ts +0 -197
  490. package/src/components/search/index.ts +0 -7
  491. package/src/components/search/search.ts +0 -52
  492. package/src/components/search/types.ts +0 -175
  493. package/src/components/segmented-button/config.ts +0 -119
  494. package/src/components/segmented-button/index.ts +0 -4
  495. package/src/components/segmented-button/segment.ts +0 -108
  496. package/src/components/segmented-button/segmented-button.ts +0 -361
  497. package/src/components/segmented-button/types.ts +0 -306
  498. package/src/components/select/api.ts +0 -78
  499. package/src/components/select/config.ts +0 -76
  500. package/src/components/select/features.ts +0 -331
  501. package/src/components/select/select.ts +0 -73
  502. package/src/components/select/types.ts +0 -355
  503. package/src/components/sheet/api.ts +0 -96
  504. package/src/components/sheet/config.ts +0 -65
  505. package/src/components/sheet/features/content.ts +0 -51
  506. package/src/components/sheet/features/gestures.ts +0 -177
  507. package/src/components/sheet/features/position.ts +0 -41
  508. package/src/components/sheet/features/state.ts +0 -116
  509. package/src/components/sheet/features/title.ts +0 -86
  510. package/src/components/sheet/index.ts +0 -12
  511. package/src/components/sheet/sheet.ts +0 -56
  512. package/src/components/sheet/types.ts +0 -294
  513. package/src/components/slider/accessibility.md +0 -59
  514. package/src/components/slider/api.ts +0 -192
  515. package/src/components/slider/config.ts +0 -118
  516. package/src/components/slider/features/controller.ts +0 -737
  517. package/src/components/slider/features/handlers.ts +0 -497
  518. package/src/components/slider/features/index.ts +0 -5
  519. package/src/components/slider/features/range.ts +0 -104
  520. package/src/components/slider/features/states.ts +0 -195
  521. package/src/components/slider/index.ts +0 -17
  522. package/src/components/slider/schema.ts +0 -141
  523. package/src/components/slider/slider.ts +0 -76
  524. package/src/components/slider/types.ts +0 -223
  525. package/src/components/snackbar/api.ts +0 -162
  526. package/src/components/snackbar/config.ts +0 -61
  527. package/src/components/snackbar/features.ts +0 -76
  528. package/src/components/snackbar/index.ts +0 -9
  529. package/src/components/snackbar/position.ts +0 -79
  530. package/src/components/snackbar/queue.ts +0 -76
  531. package/src/components/snackbar/snackbar.ts +0 -60
  532. package/src/components/snackbar/types.ts +0 -159
  533. package/src/components/switch/api.ts +0 -93
  534. package/src/components/switch/config.ts +0 -56
  535. package/src/components/switch/features.ts +0 -198
  536. package/src/components/switch/index.ts +0 -8
  537. package/src/components/switch/switch.ts +0 -52
  538. package/src/components/switch/types.ts +0 -168
  539. package/src/components/tabs/api.ts +0 -221
  540. package/src/components/tabs/config.ts +0 -73
  541. package/src/components/tabs/features.ts +0 -403
  542. package/src/components/tabs/index.ts +0 -46
  543. package/src/components/tabs/indicator.ts +0 -285
  544. package/src/components/tabs/responsive.ts +0 -144
  545. package/src/components/tabs/scroll-indicators.ts +0 -149
  546. package/src/components/tabs/state.ts +0 -186
  547. package/src/components/tabs/tab-api.ts +0 -266
  548. package/src/components/tabs/tab.ts +0 -267
  549. package/src/components/tabs/tabs.ts +0 -71
  550. package/src/components/tabs/types.ts +0 -461
  551. package/src/components/tabs/utils.ts +0 -107
  552. package/src/components/textfield/api.ts +0 -197
  553. package/src/components/textfield/config.ts +0 -52
  554. package/src/components/textfield/features/leading-icon.ts +0 -127
  555. package/src/components/textfield/features/placement.ts +0 -149
  556. package/src/components/textfield/features/prefix-text.ts +0 -107
  557. package/src/components/textfield/features/suffix-text.ts +0 -100
  558. package/src/components/textfield/features/supporting-text.ts +0 -113
  559. package/src/components/textfield/features/trailing-icon.ts +0 -108
  560. package/src/components/textfield/index.ts +0 -9
  561. package/src/components/textfield/textfield.ts +0 -92
  562. package/src/components/textfield/types.ts +0 -265
  563. package/src/components/timepicker/README.md +0 -277
  564. package/src/components/timepicker/api.ts +0 -632
  565. package/src/components/timepicker/clockdial.ts +0 -479
  566. package/src/components/timepicker/config.ts +0 -228
  567. package/src/components/timepicker/index.ts +0 -3
  568. package/src/components/timepicker/render.ts +0 -613
  569. package/src/components/timepicker/timepicker.ts +0 -117
  570. package/src/components/timepicker/types.ts +0 -336
  571. package/src/components/timepicker/utils.ts +0 -241
  572. package/src/components/tooltip/api.ts +0 -415
  573. package/src/components/tooltip/config.ts +0 -80
  574. package/src/components/tooltip/index.ts +0 -12
  575. package/src/components/tooltip/tooltip.ts +0 -60
  576. package/src/components/tooltip/types.ts +0 -223
  577. package/src/components/top-app-bar/config.ts +0 -83
  578. package/src/components/top-app-bar/top-app-bar.ts +0 -316
  579. package/src/components/top-app-bar/types.ts +0 -140
  580. package/src/core/build/constants.ts +0 -48
  581. package/src/core/build/icon.ts +0 -137
  582. package/src/core/build/ripple.ts +0 -193
  583. package/src/core/build/text.ts +0 -91
  584. package/src/core/collection/adapters/base.ts +0 -62
  585. package/src/core/collection/adapters/route.ts +0 -201
  586. package/src/core/collection/collection.ts +0 -300
  587. package/src/core/collection/index.ts +0 -57
  588. package/src/core/collection/list-manager.ts +0 -333
  589. package/src/core/compose/base.ts +0 -43
  590. package/src/core/compose/component.ts +0 -255
  591. package/src/core/compose/features/badge.ts +0 -79
  592. package/src/core/compose/features/checkable.ts +0 -155
  593. package/src/core/compose/features/disabled.ts +0 -116
  594. package/src/core/compose/features/events.ts +0 -65
  595. package/src/core/compose/features/icon.ts +0 -71
  596. package/src/core/compose/features/input.ts +0 -174
  597. package/src/core/compose/features/lifecycle.ts +0 -139
  598. package/src/core/compose/features/position.ts +0 -94
  599. package/src/core/compose/features/ripple.ts +0 -58
  600. package/src/core/compose/features/size.ts +0 -29
  601. package/src/core/compose/features/style.ts +0 -31
  602. package/src/core/compose/features/text.ts +0 -44
  603. package/src/core/compose/features/textinput.ts +0 -238
  604. package/src/core/compose/features/textlabel.ts +0 -113
  605. package/src/core/compose/features/track.ts +0 -84
  606. package/src/core/compose/features/variant.ts +0 -29
  607. package/src/core/compose/features/withEvents.ts +0 -137
  608. package/src/core/compose/index.ts +0 -54
  609. package/src/core/composition/features/dom.ts +0 -45
  610. package/src/core/composition/features/icon.ts +0 -131
  611. package/src/core/composition/features/label.ts +0 -155
  612. package/src/core/config.ts +0 -211
  613. package/src/core/dom/attributes.ts +0 -33
  614. package/src/core/dom/classes.ts +0 -132
  615. package/src/core/dom/create.ts +0 -273
  616. package/src/core/dom/events.ts +0 -209
  617. package/src/core/dom/index.ts +0 -10
  618. package/src/core/dom/utils.ts +0 -97
  619. package/src/core/index.ts +0 -111
  620. package/src/core/layout/README.md +0 -715
  621. package/src/core/layout/array.ts +0 -180
  622. package/src/core/layout/config.ts +0 -193
  623. package/src/core/layout/create.ts +0 -54
  624. package/src/core/layout/index.ts +0 -36
  625. package/src/core/layout/object.ts +0 -123
  626. package/src/core/layout/processor.ts +0 -106
  627. package/src/core/layout/result.ts +0 -84
  628. package/src/core/layout/types.ts +0 -180
  629. package/src/core/layout/utils.ts +0 -144
  630. package/src/core/state/disabled.ts +0 -81
  631. package/src/core/state/emitter.ts +0 -94
  632. package/src/core/state/events.ts +0 -88
  633. package/src/core/state/lifecycle.ts +0 -131
  634. package/src/core/state/store.ts +0 -197
  635. package/src/core/utils/index.ts +0 -45
  636. package/src/core/utils/mobile.ts +0 -98
  637. package/src/core/utils/object.ts +0 -41
  638. package/src/core/utils/validate.ts +0 -234
  639. package/src/index.ts +0 -90
  640. package/src/styles/abstract/_base.scss +0 -2
  641. package/src/styles/abstract/_config.scss +0 -28
  642. package/src/styles/abstract/_functions.scss +0 -124
  643. package/src/styles/abstract/_mixins.scss +0 -352
  644. package/src/styles/abstract/_theme.scss +0 -269
  645. package/src/styles/abstract/_variables.scss +0 -305
  646. package/src/styles/base/_reset.scss +0 -86
  647. package/src/styles/base/_typography.scss +0 -155
  648. package/src/styles/components/_badge.scss +0 -182
  649. package/src/styles/components/_bottom-app-bar.scss +0 -103
  650. package/src/styles/components/_button.scss +0 -224
  651. package/src/styles/components/_card.scss +0 -401
  652. package/src/styles/components/_carousel.scss +0 -645
  653. package/src/styles/components/_checkbox.scss +0 -231
  654. package/src/styles/components/_chips.scss +0 -638
  655. package/src/styles/components/_datepicker.scss +0 -358
  656. package/src/styles/components/_dialog.scss +0 -259
  657. package/src/styles/components/_divider.scss +0 -57
  658. package/src/styles/components/_extended-fab.scss +0 -267
  659. package/src/styles/components/_fab.scss +0 -225
  660. package/src/styles/components/_list.scss +0 -248
  661. package/src/styles/components/_menu.scss +0 -242
  662. package/src/styles/components/_navigation-mobile.scss +0 -244
  663. package/src/styles/components/_navigation-system.scss +0 -151
  664. package/src/styles/components/_navigation.scss +0 -407
  665. package/src/styles/components/_progress.scss +0 -151
  666. package/src/styles/components/_radios.scss +0 -187
  667. package/src/styles/components/_search.scss +0 -306
  668. package/src/styles/components/_segmented-button.scss +0 -227
  669. package/src/styles/components/_select.scss +0 -272
  670. package/src/styles/components/_sheet.scss +0 -236
  671. package/src/styles/components/_slider.scss +0 -489
  672. package/src/styles/components/_snackbar.scss +0 -211
  673. package/src/styles/components/_switch.scss +0 -298
  674. package/src/styles/components/_tabs.scss +0 -416
  675. package/src/styles/components/_textfield.scss +0 -773
  676. package/src/styles/components/_timepicker.scss +0 -451
  677. package/src/styles/components/_tooltip.scss +0 -241
  678. package/src/styles/components/_top-app-bar.scss +0 -225
  679. package/src/styles/main.scss +0 -175
  680. package/src/styles/themes/_autumn.scss +0 -105
  681. package/src/styles/themes/_base-theme.scss +0 -85
  682. package/src/styles/themes/_baseline.scss +0 -173
  683. package/src/styles/themes/_bluekhaki.scss +0 -125
  684. package/src/styles/themes/_brownbeige.scss +0 -125
  685. package/src/styles/themes/_browngreen.scss +0 -125
  686. package/src/styles/themes/_forest.scss +0 -77
  687. package/src/styles/themes/_greenbeige.scss +0 -125
  688. package/src/styles/themes/_index.scss +0 -6
  689. package/src/styles/themes/_material.scss +0 -125
  690. package/src/styles/themes/_ocean.scss +0 -77
  691. package/src/styles/themes/_sageivory.scss +0 -125
  692. package/src/styles/themes/_spring.scss +0 -77
  693. package/src/styles/themes/_summer.scss +0 -87
  694. package/src/styles/themes/_sunset.scss +0 -60
  695. package/src/styles/themes/_tealcaramel.scss +0 -125
  696. package/src/styles/themes/_winter.scss +0 -77
  697. package/src/styles/utilities/_colors.scss +0 -154
  698. package/src/styles/utilities/_flexbox.scss +0 -194
  699. package/src/styles/utilities/_layout.scss +0 -665
  700. package/src/styles/utilities/_ripple.scss +0 -79
  701. package/src/styles/utilities/_spacing.scss +0 -139
  702. package/src/styles/utilities/_typography.scss +0 -178
  703. package/src/styles/utilities/_visibility.scss +0 -142
@@ -1,497 +0,0 @@
1
- // src/components/slider/features/handlers.ts
2
- import { SLIDER_EVENTS } from '../types';
3
- import { SliderConfig, SliderEvent } from '../types';
4
-
5
- /**
6
- * Create consolidated event handlers for slider component (mouse, touch, keyboard)
7
- *
8
- * @param config Slider configuration
9
- * @param state Slider state object
10
- * @param uiRenderer UI renderer interface from controller
11
- * @param eventHelpers Event helper methods
12
- * @returns Event handlers for all slider interactions
13
- */
14
- export const createHandlers = (config: SliderConfig, state, uiRenderer, eventHelpers) => {
15
- // Get required elements from structure (with fallbacks)
16
- const components = state.component?.components || {};
17
-
18
- // Extract needed components
19
- const {
20
- container = null,
21
- handle = null,
22
- track = null,
23
- valueBubble = null,
24
- secondHandle = null,
25
- secondValueBubble = null
26
- } = components;
27
-
28
- // Get required helper methods (with fallbacks)
29
- const {
30
- getValueFromPosition = () => 0,
31
- roundToStep = value => value,
32
- clamp = (value, min, max) => value,
33
- showValueBubble = () => {},
34
- render = () => {}
35
- } = uiRenderer;
36
-
37
- const { triggerEvent = () => ({ defaultPrevented: false }) } = eventHelpers;
38
-
39
- // Track whether a real drag has started
40
- let hasActualDragStarted = false;
41
- let initialX = 0;
42
- const DRAG_THRESHOLD = 3;
43
-
44
- // Last focused handle tracker for keyboard navigation
45
- let lastFocusedHandle = null;
46
-
47
- // Bubble management
48
- const clearBubbleHideTimer = () => {
49
- if (state.valueHideTimer) {
50
- clearTimeout(state.valueHideTimer);
51
- state.valueHideTimer = null;
52
- }
53
- };
54
-
55
- const hideAllBubbles = () => {
56
- clearBubbleHideTimer();
57
- if (valueBubble) showValueBubble(valueBubble, false);
58
- if (secondValueBubble) showValueBubble(secondValueBubble, false);
59
- };
60
-
61
- const showActiveBubble = (bubble) => {
62
- hideAllBubbles();
63
- if (bubble && config.showValue) showValueBubble(bubble, true);
64
- };
65
-
66
- const hideActiveBubble = (bubble, delay = 0) => {
67
- clearBubbleHideTimer();
68
- if (!bubble || !config.showValue) return;
69
-
70
- if (delay > 0) {
71
- state.valueHideTimer = setTimeout(() => {
72
- showValueBubble(bubble, false);
73
- }, delay);
74
- } else {
75
- showValueBubble(bubble, false);
76
- }
77
- };
78
-
79
- // Focus management
80
- const clearKeyboardFocus = () => {
81
- // Clear local focus indicators
82
- if (handle) handle.classList.remove(`${state.component.getClass('slider-handle')}--focused`);
83
- if (secondHandle) secondHandle.classList.remove(`${state.component.getClass('slider-handle')}--focused`);
84
-
85
- // Clear global focus indicators
86
- try {
87
- const focusClass = state.component.getClass('slider-handle--focused');
88
- document.querySelectorAll(`.${focusClass}`).forEach(el => {
89
- el.classList.remove(focusClass);
90
- });
91
-
92
- if (document.activeElement?.classList.contains(state.component.getClass('slider-handle'))) {
93
- (document.activeElement as HTMLElement).blur();
94
- }
95
- } catch (error) {
96
- console.warn('Error clearing keyboard focus:', error);
97
- }
98
- };
99
-
100
- /**
101
- * Handle mouse/touch down on a handle
102
- */
103
- const handleHandleMouseDown = (e, isSecondHandle = false) => {
104
- // Check if disabled
105
- if (!state.component || (state.component.disabled && state.component.disabled.isDisabled())) {
106
- return;
107
- }
108
-
109
- e.preventDefault();
110
- e.stopPropagation();
111
-
112
- hideAllBubbles();
113
- clearKeyboardFocus();
114
-
115
- // Capture initial position
116
- initialX = e.type.includes('touch') ? e.touches[0].clientX : e.clientX;
117
-
118
- // Setup drag state
119
- state.dragging = false;
120
- hasActualDragStarted = false;
121
- state.activeHandle = isSecondHandle ? secondHandle : handle;
122
- state.activeBubble = isSecondHandle ? secondValueBubble : valueBubble;
123
-
124
- // Show bubble immediately
125
- showActiveBubble(state.activeBubble);
126
-
127
- // Add global event listeners
128
- document.addEventListener('mousemove', handleMouseMove);
129
- document.addEventListener('mouseup', handleMouseUp);
130
- document.addEventListener('touchmove', handleMouseMove, { passive: false });
131
- document.addEventListener('touchend', handleMouseUp);
132
-
133
- render();
134
- triggerEvent(SLIDER_EVENTS.START, e);
135
- };
136
-
137
- /**
138
- * Handle mouse/touch down on the track
139
- */
140
- const handleTrackMouseDown = (e) => {
141
- // Check if disabled
142
- if (!state.component || (state.component.disabled && state.component.disabled.isDisabled()) || !track || !container) {
143
- return;
144
- }
145
-
146
- e.preventDefault();
147
- hideAllBubbles();
148
- clearKeyboardFocus();
149
-
150
- // Determine which handle to move
151
- let isSecondHandle = false;
152
-
153
- try {
154
- const containerRect = container.getBoundingClientRect();
155
- const position = e.type.includes('touch') ? e.touches[0].clientX : e.clientX;
156
-
157
- // Calculate value at click position and apply constraints
158
- let newValue = getValueFromPosition(position);
159
- if (config.snapToSteps && state.step > 0) newValue = roundToStep(newValue);
160
- newValue = clamp(newValue, state.min, state.max);
161
-
162
- if (config.range && state.secondValue !== null) {
163
- // For range slider, move the closest handle
164
- const distToFirst = Math.abs(newValue - state.value);
165
- const distToSecond = Math.abs(newValue - state.secondValue);
166
-
167
- isSecondHandle = distToSecond < distToFirst;
168
- isSecondHandle ? (state.secondValue = newValue) : (state.value = newValue);
169
- } else {
170
- // Single handle slider - just update value
171
- state.value = newValue;
172
- }
173
-
174
- // Update UI and trigger events
175
- render();
176
- triggerEvent(SLIDER_EVENTS.INPUT, e);
177
- } catch (error) {
178
- console.warn('Error handling track click:', error);
179
- }
180
-
181
- // Set active elements
182
- state.activeHandle = isSecondHandle ? secondHandle : handle;
183
- state.activeBubble = isSecondHandle ? secondValueBubble : valueBubble;
184
-
185
- // Store the initial position and start dragging
186
- initialX = e.type.includes('touch') ? e.touches[0].clientX : e.clientX;
187
- handleHandleMouseDown(e, isSecondHandle);
188
- };
189
-
190
- /**
191
- * Handle mouse/touch move during drag
192
- */
193
- const handleMouseMove = (e) => {
194
- if (!state.activeHandle || !container) return;
195
- e.preventDefault();
196
-
197
- try {
198
- // Get current position
199
- const currentX = e.type.includes('touch') ? e.touches[0].clientX : e.clientX;
200
-
201
- // Determine if we've started a real drag
202
- if (!hasActualDragStarted && Math.abs(currentX - initialX) >= DRAG_THRESHOLD) {
203
- hasActualDragStarted = true;
204
- state.dragging = true;
205
- state.component.element.classList.add(`${state.component.getClass('slider')}--dragging`);
206
- }
207
-
208
- // Calculate new value and apply constraints
209
- let newValue = getValueFromPosition(currentX);
210
- if (config.snapToSteps && state.step > 0) newValue = roundToStep(newValue);
211
- newValue = clamp(newValue, state.min, state.max);
212
-
213
- // Handle crossing points and handle swapping for range sliders
214
- const isSecondHandle = state.activeHandle === secondHandle;
215
-
216
- if (config.range && state.secondValue !== null) {
217
- if (isSecondHandle) {
218
- // Second handle is active
219
- if (newValue >= state.value) {
220
- state.secondValue = newValue;
221
- } else {
222
- // Handles are crossed, swap them
223
- hideActiveBubble(state.activeBubble, 0);
224
- state.secondValue = state.value;
225
- state.value = newValue;
226
- state.activeHandle = handle;
227
- state.activeBubble = valueBubble;
228
- showActiveBubble(state.activeBubble);
229
- }
230
- } else {
231
- // First handle is active
232
- if (newValue <= state.secondValue) {
233
- state.value = newValue;
234
- } else {
235
- // Handles are crossed, swap them
236
- hideActiveBubble(state.activeBubble, 0);
237
- state.value = state.secondValue;
238
- state.secondValue = newValue;
239
- state.activeHandle = secondHandle;
240
- state.activeBubble = secondValueBubble;
241
- showActiveBubble(state.activeBubble);
242
- }
243
- }
244
- } else {
245
- // Regular slider
246
- state.value = newValue;
247
- }
248
-
249
- render();
250
- triggerEvent(SLIDER_EVENTS.INPUT, e);
251
- } catch (error) {
252
- console.warn('Error during slider drag:', error);
253
- }
254
- };
255
-
256
- /**
257
- * Handle mouse/touch up after drag
258
- */
259
- const handleMouseUp = (e) => {
260
- if (!state.activeHandle) return;
261
- e.preventDefault();
262
-
263
- // Reset drag states
264
- state.dragging = false;
265
- hasActualDragStarted = false;
266
- state.component.element.classList.remove(`${state.component.getClass('slider')}--dragging`);
267
-
268
- // Hide bubble with delay
269
- hideActiveBubble(state.activeBubble, 1000);
270
-
271
- // Remove global event listeners
272
- document.removeEventListener('mousemove', handleMouseMove);
273
- document.removeEventListener('mouseup', handleMouseUp);
274
- document.removeEventListener('touchmove', handleMouseMove);
275
- document.removeEventListener('touchend', handleMouseUp);
276
-
277
- // Reset active handle and update UI
278
- state.activeHandle = null;
279
- render();
280
-
281
- // Trigger events
282
- triggerEvent(SLIDER_EVENTS.CHANGE, e);
283
- triggerEvent(SLIDER_EVENTS.END, e);
284
- };
285
-
286
- /**
287
- * Handle keyboard input
288
- */
289
- const handleKeyDown = (e, isSecondHandle = false) => {
290
- if (state.component.disabled && state.component.disabled.isDisabled()) return;
291
-
292
- const step = state.step || 1;
293
- let newValue = isSecondHandle ? state.secondValue : state.value;
294
- let stepSize = e.shiftKey ? step * 10 : step;
295
-
296
- // Handle tab key separately
297
- if (e.key === 'Tab') return;
298
-
299
- let valueChanged = false;
300
-
301
- switch (e.key) {
302
- case 'ArrowRight':
303
- case 'ArrowUp':
304
- e.preventDefault();
305
- newValue = Math.min(newValue + stepSize, state.max);
306
- valueChanged = true;
307
- break;
308
-
309
- case 'ArrowLeft':
310
- case 'ArrowDown':
311
- e.preventDefault();
312
- newValue = Math.max(newValue - stepSize, state.min);
313
- valueChanged = true;
314
- break;
315
-
316
- case 'Home':
317
- e.preventDefault();
318
- newValue = state.min;
319
- valueChanged = true;
320
- break;
321
-
322
- case 'End':
323
- e.preventDefault();
324
- newValue = state.max;
325
- valueChanged = true;
326
- break;
327
-
328
- case 'PageUp':
329
- e.preventDefault();
330
- newValue = Math.min(newValue + (step * 10), state.max);
331
- valueChanged = true;
332
- break;
333
-
334
- case 'PageDown':
335
- e.preventDefault();
336
- newValue = Math.max(newValue - (step * 10), state.min);
337
- valueChanged = true;
338
- break;
339
-
340
- default:
341
- return; // Exit if not a handled key
342
- }
343
-
344
- if (!valueChanged) return;
345
-
346
- // Update active bubble reference
347
- state.activeBubble = isSecondHandle ? secondValueBubble : valueBubble;
348
-
349
- // Show value bubble during keyboard interaction
350
- showActiveBubble(state.activeBubble);
351
-
352
- // Update the value
353
- if (isSecondHandle) {
354
- state.secondValue = newValue;
355
- } else {
356
- state.value = newValue;
357
- }
358
-
359
- // Update UI and trigger events
360
- render();
361
- triggerEvent(SLIDER_EVENTS.INPUT, e);
362
- triggerEvent(SLIDER_EVENTS.CHANGE, e);
363
- };
364
-
365
- /**
366
- * Handle focus events
367
- */
368
- const handleFocus = (e, isSecondHandle = false) => {
369
- if (state.component.disabled && state.component.disabled.isDisabled()) return;
370
-
371
- // Track the currently focused handle
372
- const currentHandle = isSecondHandle ? secondHandle : handle;
373
-
374
- // Hide previous bubble if switching between handles
375
- if (lastFocusedHandle && lastFocusedHandle !== currentHandle) {
376
- hideAllBubbles();
377
- }
378
-
379
- lastFocusedHandle = currentHandle;
380
-
381
- // Add focus class and show bubble
382
- currentHandle.classList.add(`${state.component.getClass('slider-handle')}--focused`);
383
- showActiveBubble(isSecondHandle ? secondValueBubble : valueBubble);
384
- state.activeBubble = isSecondHandle ? secondValueBubble : valueBubble;
385
-
386
- triggerEvent(SLIDER_EVENTS.FOCUS, e);
387
- };
388
-
389
- /**
390
- * Handle blur events
391
- */
392
- const handleBlur = (e, isSecondHandle = false) => {
393
- const handleElement = isSecondHandle ? secondHandle : handle;
394
- handleElement.classList.remove(`${state.component.getClass('slider-handle')}--focused`);
395
-
396
- // Only hide bubble if not tabbing to another handle
397
- const relatedTarget = e.relatedTarget;
398
- const otherHandle = isSecondHandle ? handle : secondHandle;
399
-
400
- if (!relatedTarget || relatedTarget !== otherHandle) {
401
- hideActiveBubble(isSecondHandle ? secondValueBubble : valueBubble, 200);
402
- }
403
-
404
- triggerEvent(SLIDER_EVENTS.BLUR, e);
405
- };
406
-
407
- /**
408
- * Set up all event listeners
409
- */
410
- const setupEventListeners = () => {
411
- if (!state.component || !state.component.components) {
412
- console.warn('Cannot set up event listeners: missing component structure');
413
- return;
414
- }
415
-
416
- // Use container for track events instead of track for better UX
417
- container.addEventListener('mousedown', handleTrackMouseDown);
418
- container.addEventListener('touchstart', handleTrackMouseDown, { passive: false });
419
-
420
- // Handle events
421
- handle.addEventListener('mousedown', e => handleHandleMouseDown(e, false));
422
- handle.addEventListener('touchstart', e => handleHandleMouseDown(e, false), { passive: false });
423
- handle.addEventListener('keydown', e => handleKeyDown(e, false));
424
- handle.addEventListener('focus', e => handleFocus(e, false));
425
- handle.addEventListener('blur', e => handleBlur(e, false));
426
-
427
- // Second handle events for range slider
428
- if (config.range && secondHandle) {
429
- secondHandle.addEventListener('mousedown', e => handleHandleMouseDown(e, true));
430
- secondHandle.addEventListener('touchstart', e => handleHandleMouseDown(e, true), { passive: false });
431
- secondHandle.addEventListener('keydown', e => handleKeyDown(e, true));
432
- secondHandle.addEventListener('focus', e => handleFocus(e, true));
433
- secondHandle.addEventListener('blur', e => handleBlur(e, true));
434
- }
435
- };
436
-
437
- /**
438
- * Clean up all event listeners
439
- */
440
- const cleanupEventListeners = () => {
441
- if (!state.component || !state.component.components) return;
442
-
443
- // Clean up container listeners
444
- if (container) {
445
- container.removeEventListener('mousedown', handleTrackMouseDown);
446
- container.removeEventListener('touchstart', handleTrackMouseDown);
447
- }
448
-
449
- // Clean up handle listeners
450
- if (handle) {
451
- handle.removeEventListener('mousedown', e => handleHandleMouseDown(e, false));
452
- handle.removeEventListener('touchstart', e => handleHandleMouseDown(e, false));
453
- handle.removeEventListener('keydown', e => handleKeyDown(e, false));
454
- handle.removeEventListener('focus', e => handleFocus(e, false));
455
- handle.removeEventListener('blur', e => handleBlur(e, false));
456
- }
457
-
458
- // Clean up second handle listeners
459
- if (config.range && secondHandle) {
460
- secondHandle.removeEventListener('mousedown', e => handleHandleMouseDown(e, true));
461
- secondHandle.removeEventListener('touchstart', e => handleHandleMouseDown(e, true));
462
- secondHandle.removeEventListener('keydown', e => handleKeyDown(e, true));
463
- secondHandle.removeEventListener('focus', e => handleFocus(e, true));
464
- secondHandle.removeEventListener('blur', e => handleBlur(e, true));
465
- }
466
-
467
- // Clean up document listeners
468
- document.removeEventListener('mousemove', handleMouseMove);
469
- document.removeEventListener('mouseup', handleMouseUp);
470
- document.removeEventListener('touchmove', handleMouseMove);
471
- document.removeEventListener('touchend', handleMouseUp);
472
- };
473
-
474
- // Return consolidated handlers
475
- return {
476
- // Mouse/Touch handlers
477
- handleHandleMouseDown,
478
- handleTrackMouseDown,
479
- handleMouseMove,
480
- handleMouseUp,
481
-
482
- // Keyboard handlers
483
- handleKeyDown,
484
- handleFocus,
485
- handleBlur,
486
-
487
- // Event management
488
- setupEventListeners,
489
- cleanupEventListeners,
490
-
491
- // Bubble management
492
- showActiveBubble,
493
- hideActiveBubble,
494
- hideAllBubbles,
495
- clearKeyboardFocus
496
- };
497
- }
@@ -1,5 +0,0 @@
1
- // src/components/slider/features/index.ts
2
- // Export slider-specific features
3
- export { withRange } from './range';
4
- export { withStates } from './states';
5
- export { withController } from './controller';
@@ -1,104 +0,0 @@
1
- // src/components/slider/features/range.ts
2
- import { SliderConfig } from '../types';
3
- import { createElement } from '../../../core/dom/create';
4
-
5
- /**
6
- * Enhances structure definition with range slider elements
7
- *
8
- * @param config Slider configuration
9
- * @returns Component enhancer that adds range slider to structure
10
- */
11
- export const withRange = (config: SliderConfig) => component => {
12
- // If not a range slider or missing structure definition, return unmodified
13
- if (!config.range || !config.secondValue || !component.schema) {
14
- return component;
15
- }
16
-
17
- try {
18
- // Calculate values for second handle
19
- const min = config.min || 0;
20
- const max = config.max || 100;
21
- const secondValue = config.secondValue;
22
- const secondValuePercent = ((secondValue - min) / (max - min)) * 100;
23
- const formatter = config.valueFormatter || (val => val.toString());
24
- const isDisabled = config.disabled === true;
25
- const getClass = component.getClass;
26
-
27
- // Clone the structure definition (deep copy)
28
- const schema = JSON.parse(JSON.stringify(component.schema));
29
-
30
- // Add range class to root element
31
- const rootClasses = schema.element.options.className || [];
32
- if (Array.isArray(rootClasses)) {
33
- rootClasses.push(getClass('slider--range'));
34
- } else {
35
- schema.element.options.className = `${rootClasses} ${getClass('slider--range')}`.trim();
36
- }
37
-
38
- // Add start track segment to track children
39
- const trackChildren = schema.element.children.container.children.track.children;
40
- trackChildren.startTrack = {
41
- name: 'startTrack',
42
- creator: createElement,
43
- options: {
44
- tag: 'div',
45
- className: getClass('slider-start-track'),
46
- style: {
47
- width: '0%'
48
- }
49
- }
50
- };
51
-
52
- // Add second handle to container children
53
- const containerChildren = schema.element.children.container.children;
54
- containerChildren.secondHandle = {
55
- name: 'secondHandle',
56
- creator: createElement,
57
- options: {
58
- tag: 'div',
59
- className: getClass('slider-handle'),
60
- attrs: {
61
- role: 'slider',
62
- 'aria-valuemin': String(min),
63
- 'aria-valuemax': String(max),
64
- 'aria-valuenow': String(secondValue),
65
- 'aria-orientation': 'horizontal',
66
- tabindex: isDisabled ? '-1' : '0',
67
- 'aria-disabled': isDisabled ? 'true' : 'false',
68
- 'data-value': String(secondValue),
69
- 'data-handle-index': '1'
70
- },
71
- style: {
72
- left: `${secondValuePercent}%`
73
- }
74
- }
75
- };
76
-
77
- // Add second value bubble to container children
78
- containerChildren.secondValueBubble = {
79
- name: 'secondValueBubble',
80
- creator: createElement,
81
- options: {
82
- tag: 'div',
83
- className: getClass('slider-value'),
84
- attrs: {
85
- 'aria-hidden': 'true',
86
- 'data-handle-index': '1'
87
- },
88
- text: formatter(secondValue),
89
- style: {
90
- left: `${secondValuePercent}%`
91
- }
92
- }
93
- };
94
-
95
- // Return component with updated structure definition
96
- return {
97
- ...component,
98
- schema
99
- };
100
- } catch (error) {
101
- console.warn('Error enhancing structure with range functionality:', error);
102
- return component;
103
- }
104
- };