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,737 +0,0 @@
1
- // src/components/slider/features/controller.ts
2
- import { SLIDER_EVENTS } from '../types';
3
- import { SliderConfig } from '../types';
4
- import { createHandlers } from './handlers';
5
-
6
- /**
7
- * Add controller functionality to slider component
8
- * Manages state, events, user interactions, and UI rendering
9
- *
10
- * @param config Slider configuration
11
- * @returns Component enhancer with slider controller functionality
12
- */
13
- export const withController = (config: SliderConfig) => component => {
14
- // Ensure component has required properties
15
- if (!component.element || !component.components) {
16
- console.warn('Cannot initialize slider controller: missing element or components');
17
- return component;
18
- }
19
-
20
- // Initialize state
21
- const state = {
22
- value: config.value !== undefined ? config.value : 0,
23
- secondValue: config.secondValue !== undefined ? config.secondValue : null,
24
- min: config.min !== undefined ? config.min : 0,
25
- max: config.max !== undefined ? config.max : 100,
26
- step: config.step !== undefined ? config.step : 1,
27
- dragging: false,
28
- activeBubble: null,
29
- activeHandle: null,
30
- ticks: [],
31
- valueHideTimer: null,
32
- component
33
- };
34
-
35
- // Create event helpers
36
- const eventHelpers = {
37
- triggerEvent(eventName, originalEvent = null) {
38
- const eventData = {
39
- slider: state.component,
40
- value: state.value,
41
- secondValue: state.secondValue,
42
- originalEvent,
43
- preventDefault: () => { eventData.defaultPrevented = true; },
44
- defaultPrevented: false
45
- };
46
-
47
- state.component.emit(eventName, eventData);
48
- return eventData;
49
- }
50
- };
51
-
52
- //=============================================================================
53
- // UI RENDERING FUNCTIONS
54
- //=============================================================================
55
-
56
- /**
57
- * Gets required components from state, safely handling missing components
58
- */
59
- const getComponents = () => {
60
- // Return empty object if component or components are missing
61
- if (!state.component?.components) {
62
- return {};
63
- }
64
-
65
- // Get flattened components
66
- return state.component.components;
67
- };
68
-
69
- /**
70
- * Calculates percentage position for a value
71
- * Maps from value space (min-max) to percentage space (0-100)
72
- */
73
- const getPercentage = (value) => {
74
- const range = state.max - state.min;
75
- return range === 0 ? 0 : ((value - state.min) / range) * 100;
76
- };
77
-
78
- /**
79
- * Gets track dimensions and constraints for positioning calculations
80
- * Handles edge constraints and padding for proper handle positioning
81
- */
82
- const getTrackDimensions = () => {
83
- const components = getComponents();
84
- const { handle, container, track } = components;
85
-
86
- if (!handle || !container || !track) return null;
87
-
88
- try {
89
- const handleRect = handle.getBoundingClientRect();
90
- const trackRect = container.getBoundingClientRect();
91
- const handleSize = handleRect.width || 20;
92
- const trackSize = trackRect.width;
93
-
94
- const edgeConstraint = (handleSize / 2) / trackSize * 100;
95
- const paddingPixels = state.activeHandle ? 6 : 8;
96
- const paddingPercent = (paddingPixels / trackSize) * 100;
97
-
98
- return { handleSize, trackSize, edgeConstraint, paddingPercent };
99
- } catch (error) {
100
- console.warn('Error calculating track dimensions:', error);
101
- return {
102
- handleSize: 20,
103
- trackSize: 200,
104
- edgeConstraint: 5,
105
- paddingPercent: 4
106
- };
107
- }
108
- };
109
-
110
- /**
111
- * Maps value percentage to visual position with edge constraints
112
- * Ensures handles stay within the visible track area
113
- */
114
- const mapValueToVisualPercent = (valuePercent, edgeConstraint) => {
115
- const minEdge = edgeConstraint;
116
- const maxEdge = 100 - edgeConstraint;
117
- const visualRange = maxEdge - minEdge;
118
-
119
- if (valuePercent <= 0) return minEdge;
120
- if (valuePercent >= 100) return maxEdge;
121
- return minEdge + (valuePercent / 100) * visualRange;
122
- };
123
-
124
- /**
125
- * Gets slider value from a position on the track
126
- * Maps from pixel position to slider value
127
- */
128
- const getValueFromPosition = (position) => {
129
- const components = getComponents();
130
- const { handle, container } = components;
131
-
132
- if (!handle || !container) return state.min;
133
-
134
- try {
135
- const containerRect = container.getBoundingClientRect();
136
- const range = state.max - state.min;
137
- const handleWidth = handle.getBoundingClientRect().width || 20;
138
-
139
- const leftEdge = containerRect.left + (handleWidth / 2);
140
- const rightEdge = containerRect.right - (handleWidth / 2);
141
- const effectiveWidth = rightEdge - leftEdge;
142
-
143
- const adjustedPosition = Math.max(leftEdge, Math.min(rightEdge, position));
144
- const percentageFromLeft = (adjustedPosition - leftEdge) / effectiveWidth;
145
-
146
- return state.min + percentageFromLeft * range;
147
- } catch (error) {
148
- console.warn('Error calculating value from position:', error);
149
- return state.min;
150
- }
151
- };
152
-
153
- /**
154
- * Rounds a value to the nearest step
155
- * Used for discrete sliders
156
- */
157
- const roundToStep = (value) => {
158
- const step = state.step;
159
- if (!step || step <= 0) return value;
160
-
161
- const steps = Math.round((value - state.min) / step);
162
- return state.min + (steps * step);
163
- };
164
-
165
- /**
166
- * Clamps a value between min and max
167
- * Ensures values stay within valid range
168
- */
169
- const clamp = (value, min, max) => Math.min(Math.max(value, min), max);
170
-
171
- /**
172
- * Updates handle and bubble positions
173
- * Positions elements according to current state values
174
- */
175
- const updateHandlePositions = () => {
176
- const components = getComponents();
177
- const { handle, container, valueBubble, secondHandle, secondValueBubble } = components;
178
-
179
- if (!handle || !container) return;
180
-
181
- const dims = getTrackDimensions();
182
- if (!dims) return;
183
-
184
- const { edgeConstraint } = dims;
185
-
186
- // Update main handle position
187
- const percent = getPercentage(state.value);
188
- const adjustedPercent = mapValueToVisualPercent(percent, edgeConstraint);
189
-
190
- handle.style.left = `${adjustedPercent}%`;
191
- handle.style.transform = 'translate(-50%, -50%)';
192
-
193
- if (valueBubble) {
194
- valueBubble.style.left = `${adjustedPercent}%`;
195
- valueBubble.style.transform = 'translateX(-50%)';
196
- }
197
-
198
- // Update second handle if range slider
199
- if (config.range && secondHandle && state.secondValue !== null) {
200
- const secondPercent = getPercentage(state.secondValue);
201
- const adjustedSecondPercent = mapValueToVisualPercent(secondPercent, edgeConstraint);
202
-
203
- secondHandle.style.left = `${adjustedSecondPercent}%`;
204
- secondHandle.style.transform = 'translate(-50%, -50%)';
205
-
206
- if (secondValueBubble) {
207
- secondValueBubble.style.left = `${adjustedSecondPercent}%`;
208
- secondValueBubble.style.transform = 'translateX(-50%)';
209
- }
210
- }
211
-
212
- // Update ARIA attributes
213
- handle.setAttribute('aria-valuenow', String(state.value));
214
- if (config.range && secondHandle && state.secondValue !== null) {
215
- secondHandle.setAttribute('aria-valuenow', String(state.secondValue));
216
- }
217
- };
218
-
219
- /**
220
- * Updates all track segments
221
- * Handles different rendering for single and range sliders
222
- */
223
- const updateTrackSegments = () => {
224
- const components = getComponents();
225
- const { track, container, handle, startTrack, activeTrack, remainingTrack } = components;
226
-
227
- if (!track || !container || !handle) return;
228
-
229
- // Safety check for required elements
230
- if (!activeTrack || !remainingTrack) {
231
- console.warn('Missing track segments, cannot update track display');
232
- return;
233
- }
234
-
235
- const dims = getTrackDimensions();
236
- if (!dims) return;
237
-
238
- const { handleSize, trackSize, paddingPercent } = dims;
239
- const edgeConstraint = (handleSize / 2) / trackSize * 100;
240
-
241
- if (config.range && state.secondValue !== null) {
242
- // Range slider setup
243
- const lowerValue = Math.min(state.value, state.secondValue);
244
- const higherValue = Math.max(state.value, state.secondValue);
245
- const lowerPercent = getPercentage(lowerValue);
246
- const higherPercent = getPercentage(higherValue);
247
-
248
- const adjustedLower = mapValueToVisualPercent(lowerPercent, edgeConstraint);
249
- const adjustedHigher = mapValueToVisualPercent(higherPercent, edgeConstraint);
250
-
251
- // Start track (before first handle)
252
- if (startTrack) {
253
- if (lowerPercent > 1) {
254
- startTrack.style.display = 'block';
255
- startTrack.style.left = '0';
256
- startTrack.style.right = `${100 - (adjustedLower - paddingPercent)}%`;
257
- startTrack.style.width = 'auto';
258
- } else {
259
- startTrack.style.display = 'none';
260
- }
261
- }
262
-
263
- // Active track (between handles)
264
- const valueDiffPercent = Math.abs(higherPercent - lowerPercent);
265
- const hideThreshold = (handleSize / trackSize) * 100;
266
-
267
- if (valueDiffPercent <= hideThreshold) {
268
- activeTrack.style.display = 'none';
269
- } else {
270
- activeTrack.style.display = 'block';
271
- activeTrack.style.left = `${adjustedLower + paddingPercent}%`;
272
- activeTrack.style.right = `${100 - (adjustedHigher - paddingPercent)}%`;
273
- activeTrack.style.width = 'auto';
274
- }
275
-
276
- // Remaining track (after second handle)
277
- remainingTrack.style.display = 'block';
278
- remainingTrack.style.left = `${adjustedHigher + paddingPercent}%`;
279
- remainingTrack.style.right = '0';
280
- remainingTrack.style.width = 'auto';
281
- } else {
282
- // Single handle slider
283
- const valuePercent = getPercentage(state.value);
284
- const adjustedPercent = mapValueToVisualPercent(valuePercent, edgeConstraint);
285
-
286
- // Hide start track for single slider
287
- if (startTrack) {
288
- startTrack.style.display = 'none';
289
- }
290
-
291
- // Active track (filled part)
292
- activeTrack.style.display = 'block';
293
- activeTrack.style.left = '0';
294
- activeTrack.style.right = `${100 - (adjustedPercent - paddingPercent)}%`;
295
- activeTrack.style.width = 'auto';
296
-
297
- // Remaining track (unfilled part)
298
- remainingTrack.style.display = 'block';
299
- remainingTrack.style.left = `${adjustedPercent + paddingPercent}%`;
300
- remainingTrack.style.right = '0';
301
- remainingTrack.style.width = 'auto';
302
- }
303
- };
304
-
305
- /**
306
- * Updates value bubble content
307
- * Applies formatting to displayed values
308
- */
309
- const updateValueBubbles = () => {
310
- const components = getComponents();
311
- const { valueBubble, secondValueBubble } = components;
312
-
313
- if (!valueBubble) return;
314
-
315
- const formatter = config.valueFormatter || (value => value.toString());
316
- valueBubble.textContent = formatter(state.value);
317
-
318
- if (config.range && secondValueBubble && state.secondValue !== null) {
319
- secondValueBubble.textContent = formatter(state.secondValue);
320
- }
321
- };
322
-
323
- /**
324
- * Shows or hides value bubble
325
- * Controls visibility for value indicators
326
- */
327
- const showValueBubble = (bubbleElement, show) => {
328
- if (!bubbleElement || !config.showValue) return;
329
-
330
- const bubbleClass = state.component.getClass('slider-value');
331
- bubbleElement.classList[show ? 'add' : 'remove'](`${bubbleClass}--visible`);
332
- };
333
-
334
- /**
335
- * Generates tick marks
336
- * Creates visual indicators for discrete values
337
- */
338
- const generateTicks = () => {
339
- const components = getComponents();
340
- const { ticksContainer, container } = components;
341
-
342
- if (!ticksContainer || !container) return;
343
-
344
- // Clear existing ticks
345
- while (ticksContainer.firstChild) {
346
- ticksContainer.removeChild(ticksContainer.firstChild);
347
- }
348
-
349
- state.ticks = [];
350
- if (!config.ticks) return;
351
-
352
- const numSteps = Math.floor((state.max - state.min) / state.step);
353
- const tickValues = [];
354
-
355
- // Generate tick values
356
- for (let i = 0; i <= numSteps; i++) {
357
- const value = state.min + (i * state.step);
358
- if (value <= state.max) tickValues.push(value);
359
- }
360
-
361
- // Ensure max value is included
362
- if (tickValues[tickValues.length - 1] !== state.max) {
363
- tickValues.push(state.max);
364
- }
365
-
366
- // CSS classes
367
- const tickClass = state.component.getClass('slider-tick');
368
- const activeClass = `${tickClass}--active`;
369
- const inactiveClass = `${tickClass}--inactive`;
370
- const hiddenClass = `${tickClass}--hidden`;
371
-
372
- // Create tick elements
373
- tickValues.forEach(value => {
374
- const percent = getPercentage(value);
375
- const tick = document.createElement('div');
376
- tick.classList.add(tickClass);
377
- tick.style.left = `${percent}%`;
378
-
379
- // Determine tick active state
380
- const isExactlySelected = (value === state.value ||
381
- (config.range && state.secondValue !== null && value === state.secondValue));
382
-
383
- if (isExactlySelected) {
384
- tick.classList.add(hiddenClass);
385
- } else if (config.range && state.secondValue !== null) {
386
- const lowerValue = Math.min(state.value, state.secondValue);
387
- const higherValue = Math.max(state.value, state.secondValue);
388
-
389
- tick.classList.add(value >= lowerValue && value <= higherValue ? activeClass : inactiveClass);
390
- } else {
391
- tick.classList.add(value <= state.value ? activeClass : inactiveClass);
392
- }
393
-
394
- ticksContainer.appendChild(tick);
395
- state.ticks.push(tick);
396
- });
397
- };
398
-
399
- /**
400
- * Updates active state of tick marks
401
- * Sets visual state based on current values
402
- */
403
- const updateTicks = () => {
404
- if (!state.ticks || state.ticks.length === 0) return;
405
-
406
- const tickClass = state.component.getClass('slider-tick');
407
- const activeClass = `${tickClass}--active`;
408
- const inactiveClass = `${tickClass}--inactive`;
409
- const hiddenClass = `${tickClass}--hidden`;
410
-
411
- state.ticks.forEach((tick, index) => {
412
- // Safety check for null tick
413
- if (!tick) return;
414
-
415
- // Calculate the value for this tick
416
- const tickValue = state.min + (index * state.step);
417
-
418
- // Reset visibility first
419
- tick.classList.remove(hiddenClass);
420
-
421
- // Check if this tick should be hidden (matches exactly a selected value)
422
- const isExactlySelected = (tickValue === state.value ||
423
- (config.range && state.secondValue !== null && tickValue === state.secondValue));
424
-
425
- if (isExactlySelected) {
426
- tick.classList.add(hiddenClass);
427
- } else if (config.range && state.secondValue !== null) {
428
- // Range slider - ticks between values should be active
429
- const lowerValue = Math.min(state.value, state.secondValue);
430
- const higherValue = Math.max(state.value, state.secondValue);
431
-
432
- if (tickValue >= lowerValue && tickValue <= higherValue) {
433
- tick.classList.add(activeClass);
434
- tick.classList.remove(inactiveClass);
435
- } else {
436
- tick.classList.remove(activeClass);
437
- tick.classList.add(inactiveClass);
438
- }
439
- } else {
440
- // Single slider - ticks below value should be active
441
- if (tickValue <= state.value) {
442
- tick.classList.add(activeClass);
443
- tick.classList.remove(inactiveClass);
444
- } else {
445
- tick.classList.remove(activeClass);
446
- tick.classList.add(inactiveClass);
447
- }
448
- }
449
- });
450
- };
451
-
452
- /**
453
- * Renders all UI elements to match current state
454
- * Central method for keeping UI in sync with state
455
- */
456
- const render = () => {
457
- try {
458
- updateHandlePositions();
459
- updateTrackSegments();
460
- updateValueBubbles();
461
- updateTicks();
462
- } catch (error) {
463
- console.warn('Error rendering UI:', error);
464
- }
465
- };
466
-
467
- // Create UI renderer interface for event handlers
468
- const uiRenderer = {
469
- getPercentage,
470
- getValueFromPosition,
471
- roundToStep,
472
- clamp,
473
- showValueBubble,
474
- generateTicks,
475
- updateTicks,
476
- updateUi: render, // For backward compatibility
477
- render
478
- };
479
-
480
- // Create event handlers with our renderer
481
- const handlers = createHandlers(config, state, uiRenderer, eventHelpers);
482
-
483
- // Initialize slider controller
484
- const initController = () => {
485
- try {
486
- // Verify we have the necessary components
487
- if (!component.components || !component.components.handle) {
488
- console.warn('Cannot initialize slider controller: missing required components');
489
- return;
490
- }
491
-
492
- // Set ARIA attributes
493
- component.element.setAttribute('aria-valuemin', String(state.min));
494
- component.element.setAttribute('aria-valuemax', String(state.max));
495
- component.element.setAttribute('aria-valuenow', String(state.value));
496
-
497
- const { handle, secondHandle } = component.components;
498
-
499
- // Set handle attributes
500
- if (handle) {
501
- handle.setAttribute('aria-valuemin', String(state.min));
502
- handle.setAttribute('aria-valuemax', String(state.max));
503
- handle.setAttribute('aria-valuenow', String(state.value));
504
-
505
- if (config.range && secondHandle && state.secondValue !== null) {
506
- secondHandle.setAttribute('aria-valuemin', String(state.min));
507
- secondHandle.setAttribute('aria-valuemax', String(state.max));
508
- secondHandle.setAttribute('aria-valuenow', String(state.secondValue));
509
- }
510
- }
511
-
512
- // Setup event listeners
513
- handlers.setupEventListeners();
514
-
515
- // Initially generate ticks if needed
516
- if (config.ticks || config.tickLabels) {
517
- generateTicks();
518
- }
519
-
520
- // Initial UI update
521
- render();
522
-
523
- // Force one more UI update after a delay to ensure proper positioning
524
- setTimeout(() => {
525
- render();
526
- }, 50);
527
- } catch (error) {
528
- console.error('Error initializing slider controller:', error);
529
- }
530
- };
531
-
532
- // Register with lifecycle if available
533
- if (component.lifecycle) {
534
- const originalDestroy = component.lifecycle.destroy || (() => {});
535
- component.lifecycle.destroy = () => {
536
- handlers.cleanupEventListeners();
537
- originalDestroy();
538
- };
539
- }
540
-
541
- // Schedule initialization after current execution completes
542
- setTimeout(() => {
543
- initController();
544
- }, 0);
545
-
546
- // Return enhanced component
547
- return {
548
- ...component,
549
- // Provide controller API under 'slider' property for backward compatibility
550
- slider: {
551
- /**
552
- * Sets slider value
553
- * @param value New value
554
- * @param triggerEvent Whether to trigger change event
555
- * @returns Slider controller for chaining
556
- */
557
- setValue(value, triggerEvent = true) {
558
- const newValue = clamp(value, state.min, state.max);
559
- state.value = newValue;
560
- render();
561
-
562
- if (triggerEvent) {
563
- eventHelpers.triggerEvent(SLIDER_EVENTS.CHANGE);
564
- }
565
-
566
- return this;
567
- },
568
-
569
- /**
570
- * Gets slider value
571
- * @returns Current value
572
- */
573
- getValue() {
574
- return state.value;
575
- },
576
-
577
- /**
578
- * Sets secondary slider value (for range slider)
579
- * @param value New secondary value
580
- * @param triggerEvent Whether to trigger change event
581
- * @returns Slider controller for chaining
582
- */
583
- setSecondValue(value, triggerEvent = true) {
584
- if (!config.range) return this;
585
-
586
- const newValue = clamp(value, state.min, state.max);
587
- state.secondValue = newValue;
588
- render();
589
-
590
- if (triggerEvent) {
591
- eventHelpers.triggerEvent(SLIDER_EVENTS.CHANGE);
592
- }
593
-
594
- return this;
595
- },
596
-
597
- /**
598
- * Gets secondary slider value
599
- * @returns Current secondary value or null
600
- */
601
- getSecondValue() {
602
- return config.range ? state.secondValue : null;
603
- },
604
-
605
- /**
606
- * Sets slider minimum value
607
- * @param min New minimum value
608
- * @returns Slider controller for chaining
609
- */
610
- setMin(min) {
611
- state.min = min;
612
-
613
- // Update ARIA attributes if elements exist
614
- component.element.setAttribute('aria-valuemin', String(min));
615
- if (component.components?.handle) {
616
- component.components.handle.setAttribute('aria-valuemin', String(min));
617
- }
618
-
619
- if (config.range && component.components?.secondHandle) {
620
- component.components.secondHandle.setAttribute('aria-valuemin', String(min));
621
- }
622
-
623
- // Clamp values to new min
624
- if (state.value < min) state.value = min;
625
- if (config.range && state.secondValue !== null && state.secondValue < min) {
626
- state.secondValue = min;
627
- }
628
-
629
- // Regenerate ticks if needed
630
- if (config.ticks || config.tickLabels) {
631
- generateTicks();
632
- }
633
-
634
- render();
635
- return this;
636
- },
637
-
638
- /**
639
- * Gets slider minimum value
640
- * @returns Current minimum value
641
- */
642
- getMin() {
643
- return state.min;
644
- },
645
-
646
- /**
647
- * Sets slider maximum value
648
- * @param max New maximum value
649
- * @returns Slider controller for chaining
650
- */
651
- setMax(max) {
652
- state.max = max;
653
-
654
- // Update ARIA attributes if elements exist
655
- component.element.setAttribute('aria-valuemax', String(max));
656
- if (component.components?.handle) {
657
- component.components.handle.setAttribute('aria-valuemax', String(max));
658
- }
659
-
660
- if (config.range && component.components?.secondHandle) {
661
- component.components.secondHandle.setAttribute('aria-valuemax', String(max));
662
- }
663
-
664
- // Clamp values to new max
665
- if (state.value > max) state.value = max;
666
- if (config.range && state.secondValue !== null && state.secondValue > max) {
667
- state.secondValue = max;
668
- }
669
-
670
- // Regenerate ticks if needed
671
- if (config.ticks || config.tickLabels) {
672
- generateTicks();
673
- }
674
-
675
- render();
676
- return this;
677
- },
678
-
679
- /**
680
- * Gets slider maximum value
681
- * @returns Current maximum value
682
- */
683
- getMax() {
684
- return state.max;
685
- },
686
-
687
- /**
688
- * Sets slider step size
689
- * @param step New step size
690
- * @returns Slider controller for chaining
691
- */
692
- setStep(step) {
693
- state.step = step;
694
-
695
- // Add or remove discrete class
696
- component.element.classList[step > 0 ? 'add' : 'remove'](
697
- `${component.getClass('slider')}--discrete`
698
- );
699
-
700
- // Regenerate ticks if needed
701
- if (config.ticks || config.tickLabels) {
702
- generateTicks();
703
- updateTicks();
704
- }
705
-
706
- return this;
707
- },
708
-
709
- /**
710
- * Gets slider step size
711
- * @returns Current step size
712
- */
713
- getStep() {
714
- return state.step;
715
- },
716
-
717
- /**
718
- * Regenerate tick marks and labels
719
- * @returns Slider controller for chaining
720
- */
721
- regenerateTicks() {
722
- generateTicks();
723
- updateTicks();
724
- return this;
725
- },
726
-
727
- /**
728
- * Update all UI elements
729
- * @returns Slider controller for chaining
730
- */
731
- updateUi() {
732
- render();
733
- return this;
734
- }
735
- }
736
- };
737
- };