@vireo-ai/trellis-ui 0.1.27 → 0.1.30

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 (203) hide show
  1. package/package.json +7 -2
  2. package/packages/client/src/components/checkbox/styles.css +7 -0
  3. package/packages/client/src/components/field/styles.css +71 -0
  4. package/packages/client/src/components/file-upload/styles.css +68 -0
  5. package/packages/client/src/components/radio/styles.css +2 -8
  6. package/packages/client/src/components/tabs/styles.css +73 -0
  7. package/packages/client/src/components/toast/styles.css +123 -0
  8. package/packages/client/src/styles/components.css +15 -4
  9. package/packages/client/src/styles/generated/theme-fonts.css +1 -1
  10. package/packages/client/src/styles/generated/theme-palette.css +77 -1462
  11. package/packages/client/src/styles/generated/theme-runtime.css +1 -1390
  12. package/packages/client/src/styles/generated-sources.css +1 -1
  13. package/packages/client/src/styles/recipes/action.css +175 -0
  14. package/packages/client/src/styles/recipes/disabled.css +16 -0
  15. package/packages/client/src/styles/recipes/option.css +123 -0
  16. package/packages/client/src/styles/recipes/selection.css +78 -0
  17. package/packages/client/src/styles/theme.css +45 -719
  18. package/packages/client/types/assets/full-runtime.generated.d.ts +1 -1
  19. package/packages/client/types/capabilities/motion.entry.generated.d.ts +3 -0
  20. package/packages/client/types/capabilities/resizable.entry.generated.d.ts +3 -0
  21. package/packages/client/types/capabilities/sortable.entry.generated.d.ts +3 -0
  22. package/packages/client/types/component-api.d.ts +10 -10
  23. package/packages/client/types/components/accordion/index.d.ts +7 -4
  24. package/packages/client/types/components/accordion/machine.d.ts +51 -57
  25. package/packages/client/types/components/card/contract.d.ts +5 -2
  26. package/packages/client/types/components/checkbox/contract.d.ts +17 -7
  27. package/packages/client/types/components/common.d.ts +6 -1
  28. package/packages/client/types/components/date-picker/index.d.ts +7 -4
  29. package/packages/client/types/components/date-picker/machine.d.ts +46 -362
  30. package/packages/client/types/components/dropdown/index.d.ts +7 -4
  31. package/packages/client/types/components/dropdown/machine.d.ts +5 -67
  32. package/packages/client/types/components/field/index.d.ts +1 -2
  33. package/packages/client/types/components/file-upload/index.d.ts +7 -4
  34. package/packages/client/types/components/file-upload/machine.d.ts +17 -39
  35. package/packages/client/types/components/input/index.d.ts +1 -2
  36. package/packages/client/types/components/modal/index.d.ts +6 -2
  37. package/packages/client/types/components/modal/machine.d.ts +5 -103
  38. package/packages/client/types/components/panels/index.d.ts +6 -2
  39. package/packages/client/types/components/panels/machine.d.ts +59 -81
  40. package/packages/client/types/components/radio/contract.d.ts +12 -4
  41. package/packages/client/types/components/runtime.d.ts +10 -10
  42. package/packages/client/types/components/scroll-area/index.d.ts +1 -2
  43. package/packages/client/types/components/select/index.d.ts +7 -4
  44. package/packages/client/types/components/select/machine.d.ts +37 -331
  45. package/packages/client/types/components/sidebar/index.d.ts +6 -2
  46. package/packages/client/types/components/sidebar/machine.d.ts +11 -47
  47. package/packages/client/types/components/slider/index.d.ts +1 -2
  48. package/packages/client/types/components/switch/index.d.ts +1 -2
  49. package/packages/client/types/components/tabs/contract.d.ts +6 -2
  50. package/packages/client/types/components/tabs/index.d.ts +7 -4
  51. package/packages/client/types/components/tabs/machine.d.ts +11 -29
  52. package/packages/client/types/components/toast/index.d.ts +6 -2
  53. package/packages/client/types/components/toast/machine.d.ts +7 -66
  54. package/packages/client/types/core.d.ts +2 -2
  55. package/packages/client/types/runtime/alpine-data.d.ts +6 -0
  56. package/packages/client/types/runtime/alpine-machine.d.ts +3 -8
  57. package/packages/client/types/runtime/engine/request.d.ts +1 -0
  58. package/packages/client/types/runtime/index.d.ts +7 -3
  59. package/packages/client/types/runtime/transition-coordinator.d.ts +41 -7
  60. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +638 -3428
  61. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  62. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +492 -376
  63. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +2 -0
  64. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js.map +1 -0
  65. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +2 -0
  66. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js.map +1 -0
  67. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +2 -0
  68. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js.map +1 -0
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-DZ17j0jc.js +2 -0
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-DZ17j0jc.js.map +1 -0
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-BS13dbK4.js +2 -0
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-BS13dbK4.js.map +1 -0
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-wMoceguq.js +2 -0
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-wMoceguq.js.map +1 -0
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-C6LKIbpv.js +2 -0
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-C6LKIbpv.js.map +1 -0
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BurX5yRd.js +3 -0
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BurX5yRd.js.map +1 -0
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{common-DAxHCzB-.js → common-BOd_thC-.js} +2 -2
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{common-DAxHCzB-.js.map → common-BOd_thC-.js.map} +1 -1
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-BuKz1uWk.js +2 -0
  82. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DjoX4J-6.js.map → core-BuKz1uWk.js.map} +1 -1
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-BV6kB47L.js +2 -0
  84. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-BV6kB47L.js.map +1 -0
  85. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-9sxiaVVI.js +2 -0
  86. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-9sxiaVVI.js.map +1 -0
  87. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BehM6Hle.js +2 -0
  88. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BehM6Hle.js.map +1 -0
  89. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BhPEF6oz.js +2 -0
  90. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-xcXw-cEl.js.map → entry.generated-BhPEF6oz.js.map} +1 -1
  91. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BqOi_tIN.js +2 -0
  92. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BqOi_tIN.js.map +1 -0
  93. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BuXeU4zt.js +2 -0
  94. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BuXeU4zt.js.map +1 -0
  95. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-MH09sf.js +2 -0
  96. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-MH09sf.js.map +1 -0
  97. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C3h9Czzn.js +2 -0
  98. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C3h9Czzn.js.map +1 -0
  99. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C5Bueyfb.js +2 -0
  100. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C5Bueyfb.js.map +1 -0
  101. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CCka3fIO.js +2 -0
  102. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CCka3fIO.js.map +1 -0
  103. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSxEK8G9.js +2 -0
  104. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSxEK8G9.js.map +1 -0
  105. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CoJxfxlc.js +2 -0
  106. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CoJxfxlc.js.map +1 -0
  107. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6cdmqiV.js +2 -0
  108. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6cdmqiV.js.map +1 -0
  109. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DBSwLHmm.js +2 -0
  110. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DBSwLHmm.js.map +1 -0
  111. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DEiL4FhC.js +2 -0
  112. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DEiL4FhC.js.map +1 -0
  113. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DRqap77P.js +2 -0
  114. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DRqap77P.js.map +1 -0
  115. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dzw2Rg5F.js +2 -0
  116. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dzw2Rg5F.js.map +1 -0
  117. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EtCfrZfr.js +2 -0
  118. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EtCfrZfr.js.map +1 -0
  119. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-cMueWbY7.js +2 -0
  120. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-cMueWbY7.js.map +1 -0
  121. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js +2 -0
  122. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js.map +1 -0
  123. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BRaHJwNf.js +3 -0
  124. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BRaHJwNf.js.map +1 -0
  125. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-BUswpsNx.js +2 -0
  126. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{semantic-observer-9VxzbQBi.js.map → semantic-observer-BUswpsNx.js.map} +1 -1
  127. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/stream-pMBGbBZH.js +4 -0
  128. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/stream-pMBGbBZH.js.map +1 -0
  129. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-H3t7UHMs.js +2 -0
  130. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-H3t7UHMs.js.map +1 -0
  131. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
  132. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -1
  133. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  134. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  135. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -1
  136. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -1
  137. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +2 -1
  138. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js.map +1 -0
  139. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
  140. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  141. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  142. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
  143. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -1
  144. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  145. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  146. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -1
  147. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
  148. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +1 -1
  149. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  150. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  151. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +232 -127
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DjoX4J-6.js +0 -2
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js +0 -2
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js.map +0 -1
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js +0 -2
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js.map +0 -1
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js +0 -2
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js.map +0 -1
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js +0 -2
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js.map +0 -1
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js +0 -2
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js.map +0 -1
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js +0 -2
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js.map +0 -1
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js +0 -2
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js.map +0 -1
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js +0 -2
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js.map +0 -1
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js +0 -2
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js.map +0 -1
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js +0 -2
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js.map +0 -1
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js +0 -2
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js.map +0 -1
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js +0 -2
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js.map +0 -1
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js +0 -2
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js.map +0 -1
  184. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js +0 -2
  185. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js.map +0 -1
  186. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DzG9Lai4.js +0 -3
  187. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DzG9Lai4.js.map +0 -1
  188. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js +0 -2
  189. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js.map +0 -1
  190. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js +0 -2
  191. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js.map +0 -1
  192. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-wHjTggCn.js +0 -2
  193. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-wHjTggCn.js.map +0 -1
  194. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xcXw-cEl.js +0 -2
  195. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js +0 -2
  196. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js.map +0 -1
  197. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js +0 -3
  198. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js.map +0 -1
  199. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js +0 -2
  200. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js.map +0 -1
  201. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-9VxzbQBi.js +0 -2
  202. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js +0 -4
  203. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../../../../../../client/src/capabilities/calendar.ts","../../../../../../../../client/src/components/date-picker/contract.ts","../../../../../../../../client/src/components/date-picker/machine.ts","../../../../../../../../client/src/components/date-picker/styles.ts","../../../../../../../../client/src/components/date-picker/value.ts","../../../../../../../../client/src/components/date-picker/index.ts","../../../../../../../../client/src/components/date-picker/entry.generated.ts"],"sourcesContent":["import type {Alpine as AlpineType} from 'alpinejs';\n\nlet registration: Promise<unknown> | null = null;\n\nconst registerCalendarCapability = (_AlpineInstance: AlpineType): void => {\n if (typeof customElements === 'undefined' || customElements.get('calendar-date')) return;\n registration ??= import('cally');\n};\n\nexport {registerCalendarCapability};\n","import {bool, json, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ALIGNMENTS,\n COMPONENT_RADII,\n ELEVATION_REFERENCES,\n POSITIONS,\n SURFACE_REFERENCES,\n type Alignment,\n type ComponentRadius,\n type ElevationReference,\n type Position,\n type SurfaceReference,\n} from '../common';\n\nconst DATE_PICKER_MODES = ['single', 'range'] as const;\nconst DATE_PICKER_VARIANTS = ['enhanced', 'native'] as const;\nconst DATE_PICKER_CLOSE = ['auto', 'confirm'] as const;\nconst DATE_PICKER_COLORS = ['neutral', 'accent'] as const;\nconst DATE_PICKER_RADII = COMPONENT_RADII;\nconst DATE_PICKER_PRESETS_POSITIONS = ['left', 'right', 'top', 'bottom'] as const;\nconst DATE_PICKER_SURFACES = SURFACE_REFERENCES;\nconst DATE_PICKER_ELEVATIONS = ELEVATION_REFERENCES;\n\ntype DatePickerMode = typeof DATE_PICKER_MODES[number];\ntype DatePickerVariant = typeof DATE_PICKER_VARIANTS[number];\ntype DatePickerClose = typeof DATE_PICKER_CLOSE[number];\ntype DatePickerColor = typeof DATE_PICKER_COLORS[number];\ntype DatePickerRadius = ComponentRadius;\ntype DatePickerPresetsPosition = typeof DATE_PICKER_PRESETS_POSITIONS[number];\ntype DatePickerSide = Position;\ntype DatePickerAlign = Alignment;\ntype DatePickerSurface = SurfaceReference;\ntype DatePickerElevation = ElevationReference;\n\ntype DatePickerPreset = {\n value: string;\n label: string;\n start: string;\n end: string;\n disabled?: boolean;\n};\n\nconst datePickerSchema = {\n name: string,\n value: string,\n startName: string,\n endName: string,\n mode: oneOf(DATE_PICKER_MODES, 'single' as DatePickerMode),\n placeholder: string,\n min: string,\n max: string,\n today: string,\n openTo: string,\n forceOpenTo: bool,\n months: number.clamp(0, 12).default(0),\n firstDayOfWeek: number.clamp(-1, 6).default(0),\n locale: string,\n format: string.default('%Y-%m-%d'),\n rangeSeparator: string.default('/'),\n showOutsideDays: bool,\n showWeekNumbers: bool,\n fixedWeeks: bool.default(true),\n selectableHeader: bool,\n withToday: bool,\n clearable: bool,\n disabled: bool,\n readonly: bool,\n required: bool,\n invalid: bool,\n side: oneOf(POSITIONS, 'bottom' as DatePickerSide),\n align: oneOf(ALIGNMENTS, 'start' as DatePickerAlign),\n offset: number.clamp(-100, 100).default(0),\n gap: number.clamp(0, 50).default(4),\n variant: oneOf(DATE_PICKER_VARIANTS, 'enhanced' as DatePickerVariant),\n color: oneOf(DATE_PICKER_COLORS, 'neutral' as DatePickerColor),\n radius: oneOf(DATE_PICKER_RADII, 'md' as DatePickerRadius),\n surface: oneOf(DATE_PICKER_SURFACES, '+2' as DatePickerSurface),\n elevation: oneOf(DATE_PICKER_ELEVATIONS, '3' as DatePickerElevation),\n close: oneOf(DATE_PICKER_CLOSE, 'auto' as DatePickerClose),\n presets: json.array<DatePickerPreset>([]),\n presetsPosition: oneOf(DATE_PICKER_PRESETS_POSITIONS, 'left' as DatePickerPresetsPosition),\n preset: string,\n presetName: string,\n triggerClass: string,\n inputClass: string,\n popoverClass: string,\n calendarClass: string,\n presetsClass: string,\n presetClass: string,\n class: string,\n form: string,\n};\n\nconst datePickerPresetSchema = {\n value: string,\n label: string,\n start: string,\n end: string,\n disabled: bool,\n class: string,\n};\n\nconst datePickerPresetsSchema = {\n position: oneOf(DATE_PICKER_PRESETS_POSITIONS, 'left' as DatePickerPresetsPosition),\n class: string,\n};\n\ntype DatePickerProps = SchemaToProps<typeof datePickerSchema>;\ntype DatePickerPresetProps = SchemaToProps<typeof datePickerPresetSchema>;\ntype DatePickerPresetsProps = SchemaToProps<typeof datePickerPresetsSchema>;\n\nexport {\n DATE_PICKER_CLOSE,\n DATE_PICKER_COLORS,\n DATE_PICKER_ELEVATIONS,\n DATE_PICKER_MODES,\n DATE_PICKER_PRESETS_POSITIONS,\n DATE_PICKER_RADII,\n DATE_PICKER_SURFACES,\n DATE_PICKER_VARIANTS,\n datePickerPresetSchema,\n datePickerPresetsSchema,\n datePickerSchema,\n};\nexport type {\n DatePickerAlign,\n DatePickerClose,\n DatePickerColor,\n DatePickerElevation,\n DatePickerMode,\n DatePickerPreset,\n DatePickerPresetProps,\n DatePickerPresetsPosition,\n DatePickerPresetsProps,\n DatePickerProps,\n DatePickerRadius,\n DatePickerSide,\n DatePickerSurface,\n DatePickerVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {defineHook} from '../../runtime/transition-coordinator';\nimport type {DatePickerProps} from './contract';\n\ntype SelectionSource = 'calendar' | 'input' | 'preset' | 'today' | 'clear' | 'props';\n\ntype DatePickerContext = {\n selection: {\n value: string;\n pendingValue: string;\n previousValue: string;\n source: SelectionSource;\n };\n input: {value: string; valid: boolean};\n preset: {value: string};\n};\n\ntype DatePickerMachineEffects = {\n prepareOpen(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n finishOpen(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n prepareClose(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n finishClose(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncInput(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncPending(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n markInvalid(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n commitSelection(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncProps(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncPresets(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n};\n\ntype CreateDatePickerMachineOptions = {\n props: DatePickerProps;\n context: DatePickerContext;\n effects: DatePickerMachineEffects;\n};\n\nconst openingHook = defineHook<DatePickerContext, DatePickerProps, Record<string, never>, 'opening'>({\n name: 'opening',\n state: 'disclosure.opening',\n project: () => ({}),\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n sends: {close: () => ({type: 'CLOSE'})},\n});\n\nconst closingHook = defineHook<DatePickerContext, DatePickerProps, Record<string, never>, 'closing'>({\n name: 'closing',\n state: 'disclosure.closing',\n project: () => ({}),\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n sends: {open: () => ({type: 'OPEN'})},\n});\n\nconst parsingHook = defineHook<DatePickerContext, DatePickerProps, {input: string}, 'parsing'>({\n name: 'parsing',\n state: 'feature.parsing',\n project: (snapshot) => ({input: snapshot.context.input.value}),\n onDone: 'PARSING_DONE',\n onError: 'PARSING_ERROR',\n sends: {\n select: (value: string) => ({type: 'SELECT', value, source: 'input'}),\n clear: () => ({type: 'CLEAR'}),\n },\n});\n\nconst selectingHook = defineHook<DatePickerContext, DatePickerProps, {\n value: string;\n previousValue: string;\n source: SelectionSource;\n preset: string;\n}, 'selecting'>({\n name: 'selecting',\n state: 'feature.selecting',\n project: (snapshot) => ({\n value: snapshot.context.selection.value,\n previousValue: snapshot.context.selection.previousValue,\n source: snapshot.context.selection.source,\n preset: snapshot.context.preset.value,\n }),\n onDone: 'SELECTING_DONE',\n onError: 'SELECTING_ERROR',\n sends: {\n select: (value: string) => ({type: 'SELECT', value, source: 'input'}),\n clear: () => ({type: 'CLEAR'}),\n close: () => ({type: 'CLOSE'}),\n },\n});\n\nconst datePickerHooks = [openingHook, closingHook, parsingHook, selectingHook] as const;\n\nconst nextProps = (event: MachineEventObject): DatePickerProps | null => propsChangedEvent<DatePickerProps>(event)?.props ?? null;\nconst blocked = (props: DatePickerProps): boolean => props.disabled || props.readonly;\nconst eventString = (event: MachineEventObject, key: string): string => (\n typeof event[key] === 'string' ? event[key] : ''\n);\nconst sourceFrom = (event: MachineEventObject): SelectionSource => {\n const source = eventString(event, 'source');\n return source === 'calendar' || source === 'input' || source === 'preset' || source === 'today' || source === 'props'\n ? source\n : 'clear';\n};\n\nconst shouldCloseFromProps = ({event}: MachineScope<DatePickerContext, DatePickerProps>): boolean => {\n const props = nextProps(event);\n return Boolean(props && (\n (propsChanged<DatePickerProps>(event, 'disabled') && props.disabled)\n || (propsChanged<DatePickerProps>(event, 'readonly') && props.readonly)\n ));\n};\n\nconst shouldAutoClose = ({props}: MachineScope<DatePickerContext, DatePickerProps>): boolean => props.close === 'auto';\n\nconst selectionUpdate = (\n context: DatePickerContext,\n event: MachineEventObject,\n value: string,\n): DatePickerContext => ({\n ...context,\n selection: {\n value,\n pendingValue: value,\n previousValue: context.selection.value,\n source: sourceFrom(event),\n },\n input: {value: eventString(event, 'input'), valid: true},\n preset: {value: eventString(event, 'preset')},\n});\n\nconst createDatePickerMachine = ({\n props,\n context,\n effects,\n}: CreateDatePickerMachineOptions): Machine<DatePickerContext, DatePickerProps> => createMachine({\n type: 'parallel',\n states: {\n disclosure: {\n initial: 'closed',\n states: {\n closed: {\n tags: ['closed'],\n on: {\n OPEN: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n },\n },\n opening: {\n tags: ['visible', 'expanded', 'interactive', 'transitioning'],\n on: {\n OPENING_DONE: {target: 'open', effects: 'finishOpen'},\n OPENING_ERROR: {target: 'open', effects: 'finishOpen'},\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: shouldAutoClose, effects: 'prepareClose'},\n APPLY: {target: 'closing', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n open: {\n tags: ['visible', 'expanded', 'interactive', 'open'],\n on: {\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: shouldAutoClose, effects: 'prepareClose'},\n APPLY: {target: 'closing', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: {target: 'closed', effects: 'finishClose'},\n CLOSING_ERROR: {target: 'closed', effects: 'finishClose'},\n OPEN: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n },\n },\n },\n },\n feature: {\n initial: 'idle',\n states: {\n idle: {\n on: {\n INPUT: {target: 'editing', reduce: 'setInput', effects: 'syncInput'},\n PENDING: {target: 'editing', reduce: 'setPending', effects: 'syncPending'},\n PARSE: {target: 'parsing', reduce: 'setInvalidInput', effects: 'markInvalid'},\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n PRESETS_CHANGED: {effects: 'syncPresets'},\n },\n },\n editing: {\n tags: ['editing'],\n on: {\n INPUT: {target: 'editing', reduce: 'setInput', effects: 'syncInput'},\n PENDING: {target: 'editing', reduce: 'setPending', effects: 'syncPending'},\n PARSE: {target: 'parsing', reduce: 'setInvalidInput', effects: 'markInvalid'},\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n CANCEL: {target: 'idle', reduce: 'resetDraft', effects: 'syncPending'},\n CLOSE: {target: 'idle', reduce: 'resetDraft', effects: 'syncPending'},\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n PRESETS_CHANGED: {effects: 'syncPresets'},\n },\n },\n parsing: {\n tags: ['editing', 'parsing'],\n on: {\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n INPUT: {target: 'editing', reduce: 'setInput', effects: 'syncInput'},\n PARSING_DONE: 'editing',\n PARSING_ERROR: 'editing',\n CLOSE: {target: 'idle', reduce: 'resetDraft', effects: 'syncPending'},\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {target: 'editing', reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n selecting: {\n tags: ['selecting'],\n on: {\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n SELECTING_DONE: 'idle',\n SELECTING_ERROR: 'idle',\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n PRESETS_CHANGED: {effects: 'syncPresets'},\n },\n },\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n beginOpen: ({context: current}) => ({context: {\n ...current,\n selection: {...current.selection, pendingValue: current.selection.value},\n }}),\n setInput: ({context: current, event}) => ({context: {\n ...current,\n input: {value: eventString(event, 'input'), valid: true},\n }}),\n setInvalidInput: ({context: current, event}) => ({context: {\n ...current,\n input: {value: eventString(event, 'input'), valid: false},\n }}),\n setPending: ({context: current, event}) => ({context: {\n ...current,\n selection: {\n ...current.selection,\n pendingValue: eventString(event, 'value'),\n source: sourceFrom(event),\n },\n preset: {value: eventString(event, 'preset')},\n }}),\n select: ({context: current, event}) => ({context: selectionUpdate(\n current,\n event,\n eventString(event, 'value'),\n )}),\n clear: ({context: current}) => ({context: selectionUpdate(current, {type: 'CLEAR'}, '')}),\n apply: ({context: current}) => ({context: selectionUpdate(\n current,\n {type: 'SELECT', source: current.selection.source},\n current.selection.pendingValue,\n )}),\n resetDraft: ({context: current}) => ({context: {\n ...current,\n selection: {...current.selection, pendingValue: current.selection.value},\n input: {value: '', valid: true},\n }}),\n replaceProps: ({context: current, event}) => {\n const next = nextProps(event);\n if (!next) return undefined;\n if (!propsChanged<DatePickerProps>(event, 'value')) return {props: next};\n return {\n props: next,\n context: selectionUpdate(current, {type: 'PROPS_CHANGED', source: 'props'}, next.value),\n };\n },\n },\n guards: {\n canOpen: ({props: current}) => !blocked(current),\n valueChanged: ({event}) => propsChanged<DatePickerProps>(event, 'value'),\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n syncInput: effects.syncInput,\n syncPending: effects.syncPending,\n markInvalid: effects.markInvalid,\n commitSelection: effects.commitSelection,\n syncProps: effects.syncProps,\n syncPresets: effects.syncPresets,\n },\n});\n\nexport {createDatePickerMachine, datePickerHooks};\nexport type {\n CreateDatePickerMachineOptions,\n DatePickerContext,\n DatePickerMachineEffects,\n SelectionSource,\n};\n","import {defineStyles} from '../../runtime';\nimport {\n CONTROL_MIN_SIZE_CLASSES,\n CONTROL_RADIUS_CLASSES,\n FIELD_CONTROL_ACTION_CLASSES,\n FIELD_CONTROL_INPUT_CLASSES,\n FIELD_CONTROL_NATIVE_CLASSES,\n FIELD_CONTROL_ROOT_CLASSES,\n OPTION_ITEM_CLASSES,\n POPOVER_GEOMETRY_CLASSES,\n} from '../common';\n\nconst datePickerStyles = defineStyles({definition: {\n component: 'ui.date-picker',\n parts: {\n root: {\n base: 'relative inline-grid w-full min-w-0',\n },\n trigger: {\n base: [\n FIELD_CONTROL_ROOT_CLASSES,\n CONTROL_MIN_SIZE_CLASSES.lg,\n 'text-left',\n ],\n variants: {\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n radius: 'md',\n },\n },\n customTrigger: {\n base: [\n 'inline-flex min-h-control-lg min-w-control-lg shrink-0 items-center justify-center gap-control-gap px-2 text-sm outline-none',\n ],\n variants: {\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n radius: 'md',\n },\n },\n input: {\n base: [\n 'min-w-0 flex-1 text-sm',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n icon: {\n base: 'size-icon shrink-0 fill-current text-surface-ink-muted',\n },\n action: {\n base: FIELD_CONTROL_ACTION_CLASSES,\n },\n popover: {\n base: [\n POPOVER_GEOMETRY_CLASSES,\n 'max-h-lg overflow-hidden rounded-overlay-sm',\n ],\n },\n panel: {\n base: 'grid min-w-72 max-w-[calc(100vw-2rem)] gap-0 overflow-hidden',\n variants: {\n hasPresets: {\n true: '',\n false: '',\n },\n presetsPosition: {\n left: '',\n right: '',\n top: '',\n bottom: '',\n },\n },\n compounds: [\n {when: {hasPresets: true, presetsPosition: 'left'}, class: 'sm:grid-cols-[minmax(9rem,11rem)_auto]'},\n {when: {hasPresets: true, presetsPosition: 'right'}, class: 'sm:grid-cols-[auto_minmax(9rem,11rem)]'},\n ],\n defaults: {\n hasPresets: false,\n presetsPosition: 'left',\n },\n },\n calendarWrap: {\n base: 'relative grid size-full place-items-center overflow-x-auto overflow-y-auto p-popover-padding',\n },\n calendar: {\n base: 'grid max-w-full gap-2 text-sm',\n },\n presets: {\n base: [\n 'grid content-start gap-1 p-popover-padding',\n ],\n },\n preset: {\n base: OPTION_ITEM_CLASSES,\n },\n footer: {\n base: 'flex items-center justify-end gap-2 p-popover-padding',\n },\n nativeWrapper: {\n base: 'relative w-full min-w-0',\n },\n native: {\n base: [\n FIELD_CONTROL_NATIVE_CLASSES,\n CONTROL_MIN_SIZE_CLASSES.lg,\n ],\n variants: {\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n radius: 'md',\n },\n },\n },\n}});\n\nexport {datePickerStyles};\n","type DateFormatToken = '%Y' | '%m' | '%d';\n\ntype CompiledFormat = {\n source: string;\n tokens: DateFormatToken[];\n};\n\nconst ISO_DATE = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst ISO_RANGE = /^\\d{4}-\\d{2}-\\d{2}\\/\\d{4}-\\d{2}-\\d{2}$/;\nconst TOKEN_PATTERN = /%[Ymd]/g;\n\nconst escapeRegex = (value: string): string => value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst compileLiteral = (value: string): string => {\n let cursor = 0;\n let source = '';\n for (const match of value.matchAll(/[\\s/-]+/g)) {\n source += escapeRegex(value.slice(cursor, match.index));\n source += '(?:\\\\s|[/-])+';\n cursor = (match.index ?? 0) + match[0].length;\n }\n return source + escapeRegex(value.slice(cursor));\n};\n\nconst compileFormat = (format: string): CompiledFormat => {\n const tokens: DateFormatToken[] = [];\n let cursor = 0;\n let source = '';\n for (const match of format.matchAll(TOKEN_PATTERN)) {\n source += compileLiteral(format.slice(cursor, match.index));\n const token = match[0] as DateFormatToken;\n tokens.push(token);\n source += token === '%Y' ? '(\\\\d{4})' : '(\\\\d{2})';\n cursor = (match.index ?? 0) + token.length;\n }\n source += compileLiteral(format.slice(cursor));\n return {source, tokens};\n};\n\nconst isoFromGroups = (groups: string[], tokens: DateFormatToken[]): string | null => {\n const values = Object.fromEntries(tokens.map((token, index) => [token, groups[index] ?? '']));\n const year = Number(values['%Y']);\n const month = Number(values['%m']);\n const day = Number(values['%d']);\n if (!year || !month || !day || new Set(tokens).size !== 3) return null;\n const date = new Date(Date.UTC(year, month - 1, day));\n if (date.getUTCFullYear() !== year || date.getUTCMonth() !== month - 1 || date.getUTCDate() !== day) return null;\n return `${String(year).padStart(4, '0')}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n};\n\nconst parseDateValue = ({\n input,\n format,\n range,\n separator,\n}: {\n input: string;\n format: string;\n range: boolean;\n separator: string;\n}): string | null => {\n const compiled = compileFormat(format);\n if (!range) {\n const match = input.trim().match(new RegExp(`^${compiled.source}$`));\n return match ? isoFromGroups(match.slice(1), compiled.tokens) : null;\n }\n const match = input.trim().match(new RegExp(\n `^${compiled.source}${compileLiteral(separator)}${compiled.source}$`,\n ));\n if (!match) return null;\n const width = compiled.tokens.length;\n const start = isoFromGroups(match.slice(1, width + 1), compiled.tokens);\n const end = isoFromGroups(match.slice(width + 1), compiled.tokens);\n return start && end && start <= end ? `${start}/${end}` : null;\n};\n\nconst formatIsoDate = (value: string, format: string): string => {\n if (!ISO_DATE.test(value)) return value;\n const [year = '', month = '', day = ''] = value.split('-');\n return format.replaceAll('%Y', year).replaceAll('%m', month).replaceAll('%d', day);\n};\n\nconst formatDatePlaceholder = (format: string): string => format\n .replaceAll('%Y', 'YYYY')\n .replaceAll('%m', 'MM')\n .replaceAll('%d', 'DD');\n\nconst sanitizeDateInput = ({\n input,\n format,\n separator,\n}: {\n input: string;\n format: string;\n separator: string;\n}): string => {\n const configuredLiterals = new Set(`${format.replace(TOKEN_PATTERN, '')}${separator}`);\n return Array.from(input).filter((character) => (\n /[0-9]/.test(character)\n || /[\\s/-]/.test(character)\n || configuredLiterals.has(character)\n )).join('');\n};\n\nconst maskDateInput = ({\n input,\n format,\n range,\n separator,\n}: {\n input: string;\n format: string;\n range: boolean;\n separator: string;\n}): string => {\n const endpointMask = format\n .replaceAll('%Y', '9999')\n .replaceAll('%m', '99')\n .replaceAll('%d', '99');\n const mask = range ? `${endpointMask}${separator}${endpointMask}` : endpointMask;\n const digits = input.match(/[0-9]/g) ?? [];\n let digitIndex = 0;\n let output = '';\n\n for (let index = 0; index < mask.length; index += 1) {\n const character = mask[index] ?? '';\n if (character === '9') {\n const digit = digits[digitIndex];\n if (digit === undefined) break;\n output += digit;\n digitIndex += 1;\n continue;\n }\n if (digitIndex > 0 && mask.slice(index + 1).includes('9')) output += character;\n }\n return output;\n};\n\nconst formatDateValue = ({\n value,\n format,\n range,\n separator,\n}: {\n value: string;\n format: string;\n range: boolean;\n separator: string;\n}): string => {\n if (!value) return '';\n if (!range) return formatIsoDate(value, format);\n if (!ISO_RANGE.test(value)) return value;\n const [start = '', end = ''] = value.split('/');\n return `${formatIsoDate(start, format)}${separator}${formatIsoDate(end, format)}`;\n};\n\nconst withinDateBounds = (value: string, min: string, max: string): boolean => {\n const dates = ISO_RANGE.test(value) ? value.split('/') : [value];\n return dates.every((date) => ISO_DATE.test(date) && (!min || date >= min) && (!max || date <= max));\n};\n\nexport {\n formatDatePlaceholder,\n formatDateValue,\n ISO_DATE,\n ISO_RANGE,\n maskDateInput,\n parseDateValue,\n sanitizeDateInput,\n withinDateBounds,\n};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n type MachineSnapshot,\n reflectSchemaProp,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {createAnchoredPopoverSurface, type AnchoredPopoverSurface} from '@client/runtime/anchored-popover';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {\n dispatchNativeControlChange,\n syncControlPresence,\n syncNativeControl,\n syncRepeatedHiddenInputs,\n} from '@client/runtime/form-control';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, asBool, dispatch, type CleanupStack, setPresence} from '@client/utils';\nimport {datePickerSchema, type DatePickerPreset, type DatePickerProps} from './contract';\nimport {\n createDatePickerMachine,\n type DatePickerContext,\n datePickerHooks,\n type SelectionSource,\n} from './machine';\nimport {datePickerStyles} from './styles';\nimport {\n formatDatePlaceholder,\n formatDateValue,\n ISO_DATE,\n ISO_RANGE,\n maskDateInput,\n parseDateValue,\n sanitizeDateInput,\n withinDateBounds,\n} from './value';\n\ntype CalendarElement = HTMLElement & {\n value: string;\n focus(options?: FocusOptions & {target?: 'day' | 'next' | 'previous'}): void;\n};\n\ntype PopoverElement = HTMLElement & {showPopover(): void; hidePopover(): void};\n\n/**\n * Public Alpine API for `ui.datePicker`.\n *\n * @public\n */\ninterface UiDatePickerApi {\n /** Whether the picker is opening or fully open. */\n readonly isOpen: boolean;\n /** Whether the user is editing an uncommitted value. */\n readonly isEditing: boolean;\n /** Canonical ISO date or ISO date range. */\n readonly value: string;\n /** Canonical value currently staged in confirm mode. */\n readonly pendingValue: string;\n /** Identifier of the selected preset, when one matches. */\n readonly preset: string;\n /** Opens the calendar unless the picker is disabled or readonly. */\n open(event?: Event): void;\n /** Closes the calendar and restores focus after keyboard dismissal. */\n close(event?: Event): void;\n /** Reverses the current disclosure lifecycle. */\n toggle(event?: Event): void;\n /** Selects a canonical ISO date or ISO range. */\n select(value: string, event?: Event): void;\n /** Selects the preset identified by its stable value. */\n selectPreset(value: string, event?: Event): void;\n /** Selects the configured today value. */\n selectToday(event?: Event): void;\n /** Clears the committed date, preset, and submitted controls. */\n clear(event?: Event): void;\n /** Discards a pending confirm-mode selection and closes the calendar. */\n cancel(event?: Event): void;\n}\n\ntype DatePickerData = AlpineMachine<DatePickerContext, DatePickerProps, typeof datePickerHooks>\n & UiDatePickerApi\n & {\n readonly root: BindingObject;\n effectivePlaceholder(): string;\n init(): void;\n destroy(): void;\n };\n\nconst YEAR_OPTION_PAST_OFFSET = 100;\nconst YEAR_OPTION_FUTURE_OFFSET = 10;\n\nconst splitRange = (value: string): [string, string] => {\n const [start = '', end = ''] = value.split('/');\n return [start, end];\n};\nconst currentYear = (): number => new Date().getFullYear();\nconst defaultMinDate = (): string => `${currentYear() - YEAR_OPTION_PAST_OFFSET}-01-01`;\nconst defaultMaxDate = (): string => `${currentYear() + YEAR_OPTION_FUTURE_OFFSET}-12-31`;\nconst todayIsoDate = (): string => new Date().toISOString().slice(0, 10);\n\nconst formatMonthHeading = (value: string, locale: string): string => {\n if (!ISO_DATE.test(value)) return '';\n return new Intl.DateTimeFormat(locale || undefined, {\n month: 'long',\n timeZone: 'UTC',\n year: 'numeric',\n }).format(new Date(`${value}T00:00:00.000Z`));\n};\n\nconst presetFromElement = (el: HTMLElement): DatePickerPreset => ({\n value: el.dataset.value ?? '',\n label: el.dataset.label ?? el.textContent?.trim() ?? '',\n start: el.dataset.start ?? '',\n end: el.dataset.end ?? '',\n disabled: asBool({value: el.dataset.disabled}),\n});\n\nconst UiDatePicker = (): TrellisAlpineComponent<DatePickerData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let triggerId = '';\n let popoverId = '';\n let popover: AnchoredPopoverSurface | null = null;\n let cleanup: CleanupStack = [];\n let hiddenInputsKey = '';\n let presetInputKey = '';\n let liveMessage = '';\n let lastInputValue = '';\n let restoreFocusAfterClose = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Date picker has not been initialized.');\n return rootEl;\n };\n const currentProps = (): Readonly<DatePickerProps> => bridge.getCommittedSnapshot().props;\n const currentContext = (): Readonly<DatePickerContext> => bridge.getCommittedSnapshot().context;\n const trigger = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-date-picker-trigger]');\n if (!el) throw new Error('Date picker requires a trigger.');\n return el;\n };\n const input = (): HTMLInputElement => {\n const el = root().querySelector<HTMLInputElement>('[data-ui-date-picker-input]');\n if (!el) throw new Error('Date picker requires an input.');\n return el;\n };\n const toggleButton = (): HTMLButtonElement | null => root().querySelector('[data-ui-date-picker-toggle]');\n const popoverEl = (): PopoverElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-date-picker-popover]');\n if (!el) throw new Error('Date picker requires a popover.');\n return el as PopoverElement;\n };\n const calendar = (): CalendarElement | null => root().querySelector('[data-ui-date-picker-calendar]');\n const hiddenInputsEl = (): HTMLElement | null => root().querySelector('[data-ui-date-picker-hidden-inputs]');\n const presetInputsEl = (): HTMLElement | null => root().querySelector('[data-ui-date-picker-preset-inputs]');\n const isRange = (): boolean => currentProps().mode === 'range';\n const effectiveMonths = (): number => currentProps().months || (isRange() ? 2 : 1);\n const presetItems = (): DatePickerPreset[] => {\n const items = Array.from(root().querySelectorAll<HTMLElement>('[data-ui-date-picker-preset]'))\n .map(presetFromElement)\n .filter((preset) => preset.value && preset.start && preset.end);\n return items.length ? items : currentProps().presets;\n };\n const formatted = (value: string): string => formatDateValue({\n value,\n format: currentProps().format,\n range: isRange(),\n separator: currentProps().rangeSeparator,\n });\n const selectedPreset = (value: string): string => {\n const match = presetItems().find((preset) => (\n isRange() ? `${preset.start}/${preset.end}` : preset.start\n ) === value);\n const custom = presetItems().find((preset) => preset.value === 'custom');\n return match?.value ?? (value && custom ? 'custom' : '');\n };\n const syncCalendarHeading = (focusedDate?: string): void => {\n const heading = root().querySelector<HTMLElement>('[data-ui-date-picker-calendar-heading]');\n if (!heading) return;\n const props = currentProps();\n const value = focusedDate || splitRange(currentContext().selection.value || props.openTo || props.today || todayIsoDate())[0];\n heading.textContent = formatMonthHeading(value, props.locale);\n };\n const syncCalendar = (): void => {\n const el = calendar();\n if (!el) return;\n const props = currentProps();\n const context = currentContext();\n const value = context.selection.pendingValue;\n if (customElements.get('calendar-date')) el.value = value;\n el.setAttribute('value', value);\n setPresence({el, attr: 'tentative', present: isRange() && Boolean(value) && !ISO_RANGE.test(value)});\n el.setAttribute('months', String(effectiveMonths()));\n el.style.setProperty('--ui-date-picker-month-columns', String(effectiveMonths()));\n el.setAttribute('min', props.min || defaultMinDate());\n el.setAttribute('max', props.max || defaultMaxDate());\n if (props.today) el.setAttribute('today', props.today); else el.removeAttribute('today');\n const focused = props.forceOpenTo ? props.openTo : context.selection.value || props.openTo || props.today || todayIsoDate();\n el.setAttribute('focused-date', splitRange(focused)[0]);\n if (props.locale) el.setAttribute('locale', props.locale); else el.removeAttribute('locale');\n if (props.firstDayOfWeek >= 0) el.setAttribute('first-day-of-week', String(props.firstDayOfWeek));\n const inlineHeading = !props.selectableHeader && effectiveMonths() === 1;\n setPresence({el, attr: 'data-inline-heading', present: inlineHeading, value: 'true'});\n setPresence({el, attr: 'data-hide-month-heading', present: (props.selectableHeader && !isRange()) || inlineHeading, value: 'true'});\n setPresence({el, attr: 'data-fixed-weeks', present: props.fixedWeeks, value: 'true'});\n setPresence({el, attr: 'show-outside-days', present: props.showOutsideDays || props.fixedWeeks});\n setPresence({el, attr: 'show-week-numbers', present: props.showWeekNumbers});\n };\n const syncPresets = (): void => {\n const value = currentContext().selection.pendingValue || currentContext().selection.value;\n root().querySelectorAll<HTMLElement>('[data-ui-date-picker-preset]').forEach((el) => {\n const preset = presetFromElement(el);\n const presetValue = isRange() ? `${preset.start}/${preset.end}` : preset.start;\n setPresence({el, attr: 'data-selected', present: presetValue === value, value: 'true'});\n setPresence({el, attr: 'data-disabled', present: preset.disabled ?? false, value: 'true'});\n });\n };\n const syncHiddenInputs = (): void => {\n const container = hiddenInputsEl();\n if (!container) return;\n const props = currentProps();\n const value = currentContext().selection.value;\n if (!isRange()) {\n hiddenInputsKey = syncRepeatedHiddenInputs({container, currentKey: hiddenInputsKey, state: {\n name: props.name,\n values: value ? [value] : [],\n required: props.required,\n form: props.form,\n marker: 'data-ui-date-picker-hidden-input',\n }});\n return;\n }\n const [start, end] = splitRange(value);\n if (props.startName || props.endName) {\n const key = JSON.stringify({startName: props.startName, endName: props.endName, start, end, form: props.form});\n if (key === hiddenInputsKey) return;\n container.replaceChildren();\n [[props.startName, start], [props.endName, end]].forEach(([name, itemValue]) => {\n if (!name) return;\n const hidden = document.createElement('input');\n hidden.type = 'hidden'; hidden.name = name; hidden.value = itemValue ?? '';\n hidden.setAttribute('data-ui-date-picker-hidden-input', '');\n if (props.form) hidden.setAttribute('form', props.form);\n container.append(hidden);\n });\n hiddenInputsKey = key;\n return;\n }\n hiddenInputsKey = syncRepeatedHiddenInputs({container, currentKey: hiddenInputsKey, state: {\n name: props.name, values: value ? [value] : [], required: props.required, form: props.form,\n marker: 'data-ui-date-picker-hidden-input',\n }});\n };\n const syncPresetInput = (): void => {\n const container = presetInputsEl();\n if (!container) return;\n const props = currentProps();\n const value = selectedPreset(currentContext().selection.value);\n presetInputKey = syncRepeatedHiddenInputs({container, currentKey: presetInputKey, state: {\n name: props.presetName, values: value ? [value] : [], form: props.form,\n marker: 'data-ui-date-picker-preset-input',\n }});\n };\n const syncControl = (): void => {\n const props = currentProps();\n const context = currentContext();\n const visible = bridge.hasTag('visible');\n const expanded = bridge.hasTag('expanded');\n const triggerEl = trigger();\n const inputEl = input();\n const floating = popoverEl();\n triggerEl.id = triggerId;\n floating.id = popoverId;\n floating.dataset.state = expanded ? 'open' : 'closed';\n floating.hidden = !visible;\n triggerEl.dataset.state = expanded ? 'open' : 'closed';\n syncControlPresence({el: triggerEl, state: props, value: 'true'});\n const toggle = toggleButton();\n const ariaOwner = toggle ?? triggerEl;\n ariaOwner.setAttribute('aria-haspopup', 'dialog');\n ariaOwner.setAttribute('aria-expanded', expanded ? 'true' : 'false');\n ariaOwner.setAttribute('aria-controls', popoverId);\n if (triggerEl instanceof HTMLButtonElement) triggerEl.disabled = props.disabled;\n const displayValue = bridge.hasTag('editing')\n ? context.input.value\n : formatted(context.selection.value);\n syncNativeControl({input: inputEl, state: {\n name: '',\n value: displayValue,\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required && props.mode === 'single',\n invalid: props.invalid || !context.input.valid,\n }});\n inputEl.placeholder = component.effectivePlaceholder();\n root().querySelectorAll<HTMLButtonElement>('[data-ui-date-picker-clear], [data-ui-date-picker-toggle]')\n .forEach((button) => { button.disabled = props.disabled; });\n lastInputValue = displayValue;\n const live = root().querySelector<HTMLElement>('[data-ui-date-picker-live]');\n if (live) live.textContent = liveMessage;\n };\n const syncToday = (): void => {\n const button = root().querySelector<HTMLElement>('[data-ui-date-picker-calendar-today]');\n const dayEl = root().querySelector<HTMLElement>('[data-ui-date-picker-today-day]');\n if (!button || !dayEl) return;\n const today = currentProps().today || todayIsoDate();\n const day = ISO_DATE.test(today) ? String(Number(today.slice(-2))) : '';\n dayEl.textContent = day;\n button.setAttribute('aria-label', day ? `Go to today, ${today}` : 'Go to today');\n };\n const syncSurface = (): void => {\n const props = currentProps();\n const floating = popoverEl();\n floating.dataset.uiSurface = props.surface;\n floating.dataset.uiElevation = props.elevation;\n };\n const syncAll = (): void => {\n reflectSchemaProp({\n el: root(),\n schema: datePickerSchema,\n key: 'value',\n value: currentContext().selection.value,\n });\n syncControl(); syncCalendar(); syncCalendarHeading(); syncToday(); syncSurface();\n syncHiddenInputs(); syncPresetInput(); syncPresets();\n if (bridge.hasTag('visible')) popover?.sync();\n };\n const notifyChange = (): void => {\n dispatchNativeControlChange({\n container: hiddenInputsEl(), fallback: root(), marker: 'data-ui-date-picker-hidden-input',\n });\n dispatch({el: root(), name: 'ui:change'});\n };\n const commit = (value: string, source: SelectionSource, preset = ''): void => {\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'SELECT', value, source, preset});\n };\n const parseInput = (raw: string): string | null => {\n const props = currentProps();\n const value = parseDateValue({input: raw, format: props.format, range: isRange(), separator: props.rangeSeparator});\n return value && withinDateBounds(value, props.min, props.max) ? value : null;\n };\n\n const bridge = createAlpineMachine({\n schema: datePickerSchema,\n hooks: datePickerHooks,\n createMachine: ({props}) => createDatePickerMachine({\n props,\n context: {\n selection: {value: props.value, pendingValue: props.value, previousValue: props.value, source: 'props'},\n input: {value: '', valid: true},\n preset: {value: props.preset},\n },\n effects: {\n prepareOpen: () => {\n const floating = popoverEl();\n floating.hidden = false;\n popover?.open();\n syncAll();\n },\n finishOpen: () => {\n if (restoreFocusAfterClose) calendar()?.focus({preventScroll: true});\n restoreFocusAfterClose = false;\n dispatch({el: root(), name: 'ui:open'});\n },\n prepareClose: syncAll,\n finishClose: () => {\n const floating = popoverEl();\n popover?.close();\n floating.hidden = true;\n if (restoreFocusAfterClose) trigger().focus({preventScroll: true});\n restoreFocusAfterClose = false;\n syncAll();\n dispatch({el: root(), name: 'ui:close'});\n },\n syncInput: syncControl,\n syncPending: () => { syncControl(); syncCalendar(); syncPresets(); },\n markInvalid: () => {\n input().setCustomValidity(`Enter a date in ${currentProps().format}`);\n syncControl();\n dispatch({el: root(), name: 'ui:invalid'});\n },\n commitSelection: () => {\n input().setCustomValidity('');\n const context = currentContext();\n liveMessage = context.selection.value ? (isRange() ? 'Range selected' : 'Date selected') : 'Date cleared';\n syncAll();\n notifyChange();\n dispatch({el: root(), name: context.selection.value ? 'ui:select' : 'ui:clear'});\n },\n syncProps: syncAll,\n syncPresets: () => { syncPresets(); syncPresetInput(); },\n },\n }),\n resolveTransitionElement: ({name, root: owner}) => {\n if (name === 'opening' || name === 'closing') return owner.querySelector('[data-ui-date-picker-popover]');\n if (name === 'parsing') return owner.querySelector('[data-ui-date-picker-input]');\n return owner;\n },\n });\n\n let component!: TrellisAlpineComponent<DatePickerData>;\n component = {\n ...bridge,\n get isOpen(): boolean { return bridge.hasTag('expanded'); },\n get isEditing(): boolean { return bridge.hasTag('editing'); },\n get value(): string { return bridge.getCommittedSnapshot().context.selection.value; },\n get pendingValue(): string { return bridge.getCommittedSnapshot().context.selection.pendingValue; },\n get preset(): string { return selectedPreset(bridge.getCommittedSnapshot().context.selection.value); },\n get root(): BindingObject {\n return mergeBindings({inputs: [resolveStyle({\n part: datePickerStyles.parts.root,\n props: bridge.getCommittedSnapshot().props,\n className: bridge.getCommittedSnapshot().props.class,\n }), {'data-ui-date-picker': '', ':data-state': () => (component.isOpen ? 'open' : 'closed')}]});\n },\n effectivePlaceholder(): string {\n const props = bridge.getCommittedSnapshot().props;\n if (props.placeholder) return props.placeholder;\n const placeholder = formatDatePlaceholder(props.format);\n return props.mode === 'range'\n ? `${placeholder}${props.rangeSeparator}${placeholder}`\n : placeholder;\n },\n open(event?: Event): void {\n event?.preventDefault();\n if (event instanceof KeyboardEvent) restoreFocusAfterClose = true;\n bridge.send('OPEN');\n },\n close(event?: Event): void {\n event?.preventDefault();\n if (event instanceof KeyboardEvent) restoreFocusAfterClose = true;\n bridge.send('CLOSE');\n },\n toggle(event?: Event): void {\n event?.preventDefault();\n bridge.send('TOGGLE');\n },\n select(value: string, event?: Event): void {\n event?.preventDefault();\n if (!withinDateBounds(value, currentProps().min, currentProps().max)) return;\n const valid = isRange() ? ISO_RANGE.test(value) : ISO_DATE.test(value);\n if (valid) commit(value, 'input');\n },\n selectPreset(value: string, event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n const preset = presetItems().find((item) => item.value === value);\n if (!preset || preset.disabled) return;\n const next = isRange() ? `${preset.start}/${preset.end}` : preset.start;\n if (currentProps().close === 'confirm') bridge.send({type: 'PENDING', value: next, source: 'preset', preset: value});\n else commit(next, 'preset', value);\n },\n selectToday(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n const today = currentProps().today || todayIsoDate();\n const value = isRange() ? `${today}/${today}` : today;\n if (currentProps().close === 'confirm') bridge.send({type: 'PENDING', value, source: 'today'});\n else commit(value, 'today');\n },\n clear(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send('CLEAR');\n },\n cancel(event?: Event): void { event?.preventDefault(); bridge.send('CANCEL'); bridge.send('CLOSE'); },\n init(): void {\n rootEl = this.$el;\n triggerId = this.$id('date-picker-trigger');\n popoverId = this.$id('date-picker-popover');\n bridge.connect(this.$el, this.snapshot);\n popover = createAnchoredPopoverSurface({\n reference: trigger,\n floating: popoverEl,\n position: () => currentProps().side,\n align: () => currentProps().align,\n gap: () => currentProps().gap,\n offset: () => currentProps().offset,\n matchReferenceWidth: false,\n });\n const triggerEl = trigger();\n const inputEl = input();\n const floating = popoverEl();\n addListener({target: triggerEl, event: 'click', cleanup, handler: (event) => {\n const target = event.target;\n if (target instanceof Element && target.closest('[data-ui-date-picker-clear]')) component.clear(event);\n else component.toggle(event);\n }});\n addListener({target: triggerEl, event: 'keydown', cleanup, handler: (raw) => {\n const event = raw as KeyboardEvent;\n if ((event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') && !component.isOpen) component.open(event);\n else if (event.key === 'Escape' && component.isOpen) component.close(event);\n }});\n addListener({target: root(), event: 'keydown', cleanup, handler: (raw) => {\n const event = raw as KeyboardEvent;\n if (event.key === 'Escape' && component.isOpen) component.close(event);\n }});\n addListener({target: inputEl, event: 'input', cleanup, handler: () => {\n const cursor = inputEl.selectionStart ?? inputEl.value.length;\n const digitsBeforeCursor = (inputEl.value.slice(0, cursor).match(/[0-9]/g) ?? []).length;\n let raw = sanitizeDateInput({\n input: inputEl.value,\n format: currentProps().format,\n separator: currentProps().rangeSeparator,\n });\n const deleting = lastInputValue.length - raw.length === 1;\n if (!deleting) raw = maskDateInput({\n input: raw,\n format: currentProps().format,\n range: isRange(),\n separator: currentProps().rangeSeparator,\n });\n if (inputEl.value !== raw) {\n inputEl.value = raw;\n let digitsSeen = 0;\n let nextCursor = raw.length;\n for (let index = 0; index < raw.length; index += 1) {\n if (/[0-9]/.test(raw[index] ?? '')) digitsSeen += 1;\n if (digitsSeen !== digitsBeforeCursor) continue;\n nextCursor = index + 1;\n while (nextCursor < raw.length && !/[0-9]/.test(raw[nextCursor] ?? '')) nextCursor += 1;\n break;\n }\n inputEl.setSelectionRange(nextCursor, nextCursor);\n }\n lastInputValue = raw;\n bridge.send({type: 'INPUT', input: raw});\n const parsed = parseInput(raw);\n if (parsed) commit(parsed, 'input');\n }});\n addListener({target: inputEl, event: 'change', cleanup, handler: () => {\n const parsed = parseInput(inputEl.value);\n if (parsed) commit(parsed, 'input');\n else if (inputEl.value.trim()) bridge.send({type: 'PARSE', input: inputEl.value});\n else bridge.send('CLEAR');\n }});\n addListener({target: floating, event: 'pointerdown', cleanup, handler: (event) => event.stopPropagation()});\n addListener({target: floating, event: 'click', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n const preset = target.closest<HTMLElement>('[data-ui-date-picker-preset]');\n if (preset) component.selectPreset(preset.dataset.value ?? '', event);\n else if (target.closest('[data-ui-date-picker-clear]')) component.clear(event);\n else if (target.closest('[data-ui-date-picker-cancel]')) component.cancel(event);\n else if (target.closest('[data-ui-date-picker-apply]')) bridge.send('APPLY');\n else if (target.closest('[data-ui-date-picker-today]')) component.selectToday(event);\n }});\n const calendarEl = calendar();\n if (calendarEl) {\n void customElements.whenDefined('calendar-date').then(() => {\n if (rootEl) syncCalendar();\n });\n addListener({target: calendarEl, event: 'change', cleanup, handler: () => {\n const value = calendarEl.value;\n if (isRange() && !ISO_RANGE.test(value)) {\n liveMessage = 'Start date selected';\n bridge.send({type: 'PENDING', value, source: 'calendar'});\n } else if (currentProps().close === 'confirm') {\n bridge.send({type: 'PENDING', value, source: 'calendar'});\n } else commit(value, 'calendar');\n }});\n addListener({target: calendarEl, event: 'focusday', cleanup, handler: (event) => {\n const detail = (event as CustomEvent<Date>).detail;\n if (detail instanceof Date) syncCalendarHeading(detail.toISOString().slice(0, 10));\n }});\n }\n cleanup.push(addDismissableLayer({\n isEnabled: () => component.isOpen,\n roots: () => [root(), floating],\n onDismiss: () => component.close(),\n }));\n const presetObserver = new MutationObserver(() => bridge.send('PRESETS_CHANGED'));\n presetObserver.observe(root(), {childList: true, subtree: true, attributes: true, attributeFilter: ['data-value', 'data-start', 'data-end', 'data-disabled']});\n cleanup.push(() => presetObserver.disconnect());\n syncAll();\n },\n destroy(): void {\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n popover?.destroy();\n popover = null;\n bridge.disconnect();\n rootEl = null;\n },\n };\n return component;\n};\n\nconst registerDatePicker = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.data('UiDatePicker', UiDatePicker);\n};\n\nexport {registerDatePicker, UiDatePicker};\nexport type {DatePickerData, UiDatePickerApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerMotionCapability} from '../../capabilities/motion';\nimport {registerCalendarCapability} from '../../capabilities/calendar';\nimport {registerDatePicker as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerDatePicker = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerCalendarCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerDatePicker};\nexport default registerDatePicker;\nexport * from './index';\n"],"file":"entry.generated-CtyXH8zf.js"}
@@ -1,2 +0,0 @@
1
- import{f as e,l as t,n,t as r}from"./codecs-Cb1ns_47.js";import{o as i,s as a,t as o}from"./dom-qAeVl7dc.js";import{n as s,t as c}from"./machine-CX3wFSoV.js";import{n as l,t as u}from"./props-change-2xfsIAEN.js";import{n as d,r as f}from"./form-control-BkVb2Qed.js";import{S as p,_ as m,o as h}from"./common-DAxHCzB-.js";var g=p,_=[`default`,`cards`,`pills`],v=m,y=h,b=[`default`,`cards`,`pills`],x={name:e,value:r(e,`prop-value`),orientation:t(g,`vertical`),variant:t(_,`default`),indicator:n.default(!0),placement:t(v,`leading`),disabled:r(n,`prop-disabled`),required:r(n,`prop-required`),invalid:r(n,`prop-invalid`),loop:n.default(!0),class:e},S={value:e,name:e,label:e,description:e,checked:r(n,`prop-checked`),disabled:r(n,`prop-disabled`),required:r(n,`prop-required`),invalid:r(n,`prop-invalid`),indicator:n.default(!0),placement:t(v,`leading`),icon:e,variant:t(b,`default`),size:t(y,`md`),inputClass:e,indicatorClass:e,iconClass:e,contentClass:e,labelClass:e,descriptionClass:e,class:e};t(y,`md`);var C=[],w=[],T=e=>typeof e.value==`string`?e.value:``,E=e=>{let t=e.item;if(!t||typeof t!=`object`)return null;let n=t;return typeof n.id!=`string`||typeof n.value!=`string`?null:{id:n.id,value:n.value,disabled:n.disabled===!0,checked:n.checked===!0}},D=e=>{let{context:t,event:n}=e;if(e.props.disabled)return!1;let r=T(n);return r?t.collection.items.some(e=>e.value===r&&!e.disabled):!e.props.required},O=e=>({event:t})=>!!T(t)===e,k=({event:e})=>u(e,`value`),A=e=>{let t=l(e.event)?.props;return!k(e)||!t?e.context.selection.value:t.value||e.context.collection.items.find(e=>e.checked)?.value||``},j=e=>t=>k(t)&&!!A(t)===e,M=e=>({context:{...e.context,selection:{value:T(e.event)}}}),N=e=>{let t=l(e.event)?.props;if(t)return{props:t,context:k(e)?{...e.context,selection:{value:A(e)}}:e.context}},P=e=>{let t=E(e.event);if(!t)return;let n=[...e.context.collection.items.filter(e=>e.id!==t.id),t];if(n.some(e=>e.id!==t.id&&e.value&&e.value===t.value))throw Error(`Radio group values must be unique: ${t.value}`);return{context:{selection:{value:e.props.value||e.context.selection.value||(t.checked?t.value:``)},collection:{items:n}}}},F=e=>{let t=typeof e.event.id==`string`?e.event.id:``,n=e.context.collection.items.find(e=>e.id===t),r=e.context.collection.items.filter(e=>e.id!==t);return{context:{selection:{value:n?.value===e.context.selection.value?``:e.context.selection.value},collection:{items:r}}}},I=e=>{let t=E(e.event);if(!t)return;let n=e.context.collection.items.find(e=>e.id===t.id),r=e.context.collection.items.map(e=>e.id===t.id?t:e);if(r.some(e=>e.id!==t.id&&e.value&&e.value===t.value))throw Error(`Radio group values must be unique: ${t.value}`);let i=e.context.selection.value;return!e.props.value&&t.checked?i=t.value:!e.props.value&&n?.checked&&!t.checked&&n.value===i?i=``:n?.value===i&&t.value!==n.value&&(i=t.value),{context:{selection:{value:i},collection:{items:r}}}},L=({props:e,effects:t})=>c({initial:e.value?`selected`:`empty`,on:{NATIVE_SELECTED:{target:`selected`,guard:D,reduce:`select`,effects:`sync`},SET_VALUE:[{target:`selected`,guard:e=>D(e)&&O(!0)(e),reduce:`select`,effects:[`sync`,`emitInput`,`emitChange`]},{target:`empty`,guard:e=>D(e)&&O(!1)(e),reduce:`select`,effects:`sync`}],NAVIGATE:{target:`selected`,guard:D,reduce:`select`,effects:[`sync`,`emitInput`,`emitChange`,`focus`]},ITEM_REGISTERED:{reduce:`registerItem`,effects:`sync`},ITEM_UPDATED:{reduce:`updateItem`,effects:`sync`},ITEM_UNREGISTERED:{reduce:`unregisterItem`,effects:`sync`},PROPS_CHANGED:[{target:`selected`,guard:j(!0),reduce:`reconcileProps`,effects:`sync`},{target:`empty`,guard:j(!1),reduce:`reconcileProps`,effects:`sync`},{reduce:`reconcileProps`,effects:`sync`}]},states:{empty:{tags:[`empty`]},selected:{tags:[`selected`]}}},{context:{selection:{value:e.value},collection:{items:[]}},props:e,reducers:{select:M,reconcileProps:N,registerItem:P,unregisterItem:F,updateItem:I},effects:t}),R=({props:e,effects:t})=>c({initial:`ready`,states:{ready:{on:{NATIVE_SELECTED:{reduce:`select`,effects:`sync`},PROPS_CHANGED:{reduce:`reconcileProps`,effects:`sync`}}}}},{context:{checked:e.checked},props:e,reducers:{select:e=>({context:{...e.context,checked:!0}}),reconcileProps:e=>{let t=l(e.event);if(!t)return;let n=t.changes.some(({key:e})=>e===`checked`);return{props:t.props,context:n?{...e.context,checked:t.props.checked}:e.context}}},effects:t}),z=new WeakMap,B=0,V=e=>{let t=e.parentElement?.closest(`[data-ui-radio-group]`)??null;return t?z.get(t)??null:null},H=()=>{let e=`ui-radio-${++B}`,t=null,n=null,r=[],c=null,l=null,u=!1,p=()=>{if(!t)throw Error(`Radio has not been initialized.`);return t},m=()=>{if(!n)throw Error(`Radio requires a native radio input.`);return n},h=()=>v.getCommittedSnapshot(),g=()=>({id:e,value:h().props.value||m().value||``,disabled:h().props.disabled,checked:h().props.checked}),_=e=>{let t=h().props,n=m(),r=e?.checked??h().context.checked,o=t.name||e?.name||``,s=t.disabled||e?.disabled===!0,c=t.required||e?.required===!0,l=t.invalid||e?.invalid===!0;n.checked=r,o||n.removeAttribute(`name`),f({input:n,state:{name:o,value:t.value,disabled:s,required:c,invalid:l}}),i({el:p(),attr:`data-state`,value:r?`checked`:`unchecked`}),a({el:p(),attr:`data-checked`,present:r}),d({el:p(),state:{disabled:s,required:c,invalid:l}}),a({el:n,attr:`data-checked`,present:r});let u=p().querySelector(`[data-ui-radio-indicator]`);u&&(a({el:u,attr:`data-checked`,present:r}),a({el:u,attr:`data-disabled`,present:s}),a({el:u,attr:`data-invalid`,present:l}));let g=p().querySelector(`[data-ui-radio-indicator-dot]`);g&&a({el:g,attr:`data-checked`,present:r})},v=s({schema:S,hooks:w,createMachine:({props:e})=>R({props:e,effects:{sync:()=>{c?.update(y),c||_()}}})}),y={record:g,input:m,sync:_,emit(e){u=!0;try{m().dispatchEvent(new Event(e,{bubbles:!0}))}finally{u=!1}},focus:()=>m().focus({preventScroll:!0})};return{...v,init(){if(t=this.$el,n=p().querySelector(`[data-ui-radio-input]`),!n)throw Error(`Radio requires a native radio input.`);v.connect(t,this.snapshot),c=V(p()),c&&(l=c.register(y)),o({target:n,event:`change`,handler:()=>{u||!m().checked||(c?c.nativeSelected(y):v.send(`NATIVE_SELECTED`))},cleanup:r}),o({target:n,event:`keydown`,handler:e=>{if(!c||!(e instanceof KeyboardEvent))return;let t=e.key===`ArrowUp`||e.key===`ArrowLeft`,n=e.key===`ArrowDown`||e.key===`ArrowRight`;!t&&!n||(e.preventDefault(),c.navigate(y,t?-1:1))},cleanup:r}),c||_()},destroy(){l?.(),l=null,c=null,r.splice(0).reverse().forEach(e=>e()),v.disconnect(),t=null,n=null}}},U=()=>{let e=null,t=new Map,n=()=>{if(!e)throw Error(`Radio group has not been initialized.`);return e},r=()=>l.getCommittedSnapshot(),o=()=>{let e=r(),o=e.props,s=e.context.selection.value;i({el:n(),attr:`data-orientation`,value:o.orientation}),i({el:n(),attr:`data-variant`,value:o.variant}),i({el:n(),attr:`data-placement`,value:o.placement}),i({el:n(),attr:`aria-orientation`,value:o.orientation}),a({el:n(),attr:`data-indicator`,present:!o.indicator,value:`false`}),d({el:n(),state:o});let c=e.context.collection.items.filter(e=>!e.disabled)[0]?.id??``;e.context.collection.items.forEach(e=>{let n=t.get(e.id);if(!n)return;let r=e.value===s;n.sync({checked:r,name:o.name,disabled:o.disabled,required:o.required,invalid:o.invalid}),n.input().tabIndex=e.disabled?-1:r||!s&&e.id===c?0:-1})},c=(e,n)=>{let r=typeof n==`string`?n:e.context.selection.value,i=e.context.collection.items.find(e=>e.value===r);return i?t.get(i.id)??null:null},l=s({schema:x,hooks:C,createMachine:({props:e})=>L({props:e,effects:{sync:o,emitInput:e=>c(e.snapshot,e.event.value)?.emit(`input`),emitChange:e=>c(e.snapshot,e.event.value)?.emit(`change`),focus:e=>c(e.snapshot,e.event.value)?.focus()}})}),u={register(e){let n=e.record();return t.set(n.id,e),l.send({type:`ITEM_REGISTERED`,item:n}),()=>{t.delete(n.id),l.send({type:`ITEM_UNREGISTERED`,id:n.id})}},update(e){l.send({type:`ITEM_UPDATED`,item:e.record()})},nativeSelected(e){l.send({type:`NATIVE_SELECTED`,value:e.record().value})},navigate(e,t){let n=l.getCommittedSnapshot(),r=n.context.collection.items.filter(e=>!e.disabled),i=r.findIndex(t=>t.id===e.record().id);if(i<0||r.length===0)return;let a=i+t;if(a<0||a>=r.length){if(!n.props.loop)return;a=a<0?r.length-1:0}let o=r[a];o&&l.send({type:`NAVIGATE`,value:o.value})}};return{...l,init(){e=this.$el,l.connect(e,this.snapshot),z.set(n(),u),o()},destroy(){z.delete(n()),t.clear(),l.disconnect(),e=null},get value(){return l.getCommittedSnapshot().context.selection.value},setValue(e){e!==l.getCommittedSnapshot().context.selection.value&&l.send({type:`SET_VALUE`,value:e})}}},W=e=>{e.data(`UiRadio`,()=>H()),e.data(`UiRadioGroup`,()=>U())},G=new WeakSet,K=e=>{G.has(e)||(G.add(e),W(e))};export{H as n,U as r,K as t};
2
- //# sourceMappingURL=entry.generated-DGrOItIx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.generated-DGrOItIx.js","names":[],"sources":["../../../../../../../../client/src/components/radio/contract.ts","../../../../../../../../client/src/components/radio/machine.ts","../../../../../../../../client/src/components/radio/index.ts","../../../../../../../../client/src/components/radio/entry.generated.ts"],"sourcesContent":["import {attribute, bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n CONTROL_SIZES,\n INDICATOR_PLACEMENTS,\n ORIENTATIONS,\n type ControlSize,\n type IndicatorPlacement,\n type Orientation,\n} from '../common';\n\nconst RADIO_GROUP_ORIENTATIONS = ORIENTATIONS;\nconst RADIO_GROUP_VARIANTS = ['default', 'cards', 'pills'] as const;\nconst RADIO_PLACEMENTS = INDICATOR_PLACEMENTS;\nconst RADIO_SIZES = CONTROL_SIZES;\nconst RADIO_VARIANTS = ['default', 'cards', 'pills'] as const;\n\ntype RadioGroupOrientation = Orientation;\ntype RadioGroupVariant = typeof RADIO_GROUP_VARIANTS[number];\ntype RadioPlacement = IndicatorPlacement;\ntype RadioSize = ControlSize;\ntype RadioVariant = typeof RADIO_VARIANTS[number];\n\nconst radioGroupSchema = {\n name: string,\n value: attribute(string, 'prop-value'),\n orientation: oneOf(RADIO_GROUP_ORIENTATIONS, 'vertical' as RadioGroupOrientation),\n variant: oneOf(RADIO_GROUP_VARIANTS, 'default' as RadioGroupVariant),\n indicator: bool.default(true),\n placement: oneOf(RADIO_PLACEMENTS, 'leading' as RadioPlacement),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n loop: bool.default(true),\n class: string,\n};\n\nconst radioSchema = {\n value: string,\n name: string,\n label: string,\n description: string,\n checked: attribute(bool, 'prop-checked'),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n indicator: bool.default(true),\n placement: oneOf(RADIO_PLACEMENTS, 'leading' as RadioPlacement),\n icon: string,\n variant: oneOf(RADIO_VARIANTS, 'default' as RadioVariant),\n size: oneOf(RADIO_SIZES, 'md' as RadioSize),\n inputClass: string,\n indicatorClass: string,\n iconClass: string,\n contentClass: string,\n labelClass: string,\n descriptionClass: string,\n class: string,\n};\n\nconst radioIndicatorSchema = {\n size: oneOf(RADIO_SIZES, 'md' as RadioSize),\n class: string,\n};\n\ntype RadioGroupProps = SchemaToProps<typeof radioGroupSchema>;\ntype RadioProps = SchemaToProps<typeof radioSchema>;\n\nexport {\n RADIO_GROUP_ORIENTATIONS,\n RADIO_GROUP_VARIANTS,\n RADIO_PLACEMENTS,\n RADIO_SIZES,\n RADIO_VARIANTS,\n radioGroupSchema,\n radioIndicatorSchema,\n radioSchema,\n};\nexport type {RadioGroupOrientation, RadioGroupProps, RadioGroupVariant, RadioPlacement, RadioProps, RadioSize, RadioVariant};\n","import {createMachine, propsChanged, propsChangedEvent, type Machine, type MachineEventObject, type MachineScope} from '../../runtime/state-machine';\nimport type {RadioGroupProps, RadioProps} from './contract';\n\ntype RadioItemRecord = {id: string; value: string; disabled: boolean; checked: boolean};\ntype RadioGroupContext = {\n selection: {value: string};\n collection: {items: RadioItemRecord[]};\n};\ntype RadioItemContext = {checked: boolean};\n\ntype RadioGroupEffects = {\n sync(scope: MachineScope<RadioGroupContext, RadioGroupProps>): void;\n emitInput(scope: MachineScope<RadioGroupContext, RadioGroupProps>): void;\n emitChange(scope: MachineScope<RadioGroupContext, RadioGroupProps>): void;\n focus(scope: MachineScope<RadioGroupContext, RadioGroupProps>): void;\n};\ntype RadioItemEffects = {sync(scope: MachineScope<RadioItemContext, RadioProps>): void};\n\nconst radioGroupHooks = [] as const;\nconst radioItemHooks = [] as const;\nconst eventValue = (event: MachineEventObject): string => typeof event.value === 'string' ? event.value : '';\nconst eventItem = (event: MachineEventObject): RadioItemRecord | null => {\n const item = event.item;\n if (!item || typeof item !== 'object') return null;\n const candidate = item as Partial<RadioItemRecord>;\n if (typeof candidate.id !== 'string' || typeof candidate.value !== 'string') return null;\n return {\n id: candidate.id,\n value: candidate.value,\n disabled: candidate.disabled === true,\n checked: candidate.checked === true,\n };\n};\nconst isSelectable = (scope: MachineScope<RadioGroupContext, RadioGroupProps>): boolean => {\n const {context, event} = scope;\n if (scope.props.disabled) return false;\n const value = eventValue(event);\n if (!value) return !scope.props.required;\n return context.collection.items.some((item) => item.value === value && !item.disabled);\n};\nconst hasValue = (value: boolean) => ({event}: MachineScope<RadioGroupContext, RadioGroupProps>): boolean => (\n Boolean(eventValue(event)) === value\n);\nconst changedGroupValue = ({event}: MachineScope<RadioGroupContext, RadioGroupProps>): boolean => (\n propsChanged<RadioGroupProps>(event, 'value')\n);\nconst nextGroupSelection = (scope: MachineScope<RadioGroupContext, RadioGroupProps>): string => {\n const next = propsChangedEvent<RadioGroupProps>(scope.event)?.props;\n if (!changedGroupValue(scope) || !next) return scope.context.selection.value;\n return next.value || scope.context.collection.items.find((item) => item.checked)?.value || '';\n};\nconst nextGroupHasValue = (value: boolean) => (scope: MachineScope<RadioGroupContext, RadioGroupProps>): boolean => {\n return changedGroupValue(scope) && Boolean(nextGroupSelection(scope)) === value;\n};\n\nconst select = (scope: MachineScope<RadioGroupContext, RadioGroupProps>) => ({\n context: {...scope.context, selection: {value: eventValue(scope.event)}},\n});\nconst reconcileProps = (scope: MachineScope<RadioGroupContext, RadioGroupProps>) => {\n const next = propsChangedEvent<RadioGroupProps>(scope.event)?.props;\n if (!next) return;\n return {\n props: next,\n context: changedGroupValue(scope)\n ? {...scope.context, selection: {value: nextGroupSelection(scope)}}\n : scope.context,\n };\n};\nconst registerItem = (scope: MachineScope<RadioGroupContext, RadioGroupProps>) => {\n const item = eventItem(scope.event);\n if (!item) return;\n const items = [...scope.context.collection.items.filter((candidate) => candidate.id !== item.id), item];\n const duplicate = items.some((candidate) => candidate.id !== item.id && candidate.value && candidate.value === item.value);\n if (duplicate) throw new Error(`Radio group values must be unique: ${item.value}`);\n const selected = scope.props.value || scope.context.selection.value || (item.checked ? item.value : '');\n return {context: {selection: {value: selected}, collection: {items}}};\n};\nconst unregisterItem = (scope: MachineScope<RadioGroupContext, RadioGroupProps>) => {\n const id = typeof scope.event.id === 'string' ? scope.event.id : '';\n const removed = scope.context.collection.items.find((item) => item.id === id);\n const items = scope.context.collection.items.filter((item) => item.id !== id);\n const value = removed?.value === scope.context.selection.value ? '' : scope.context.selection.value;\n return {context: {selection: {value}, collection: {items}}};\n};\nconst updateItem = (scope: MachineScope<RadioGroupContext, RadioGroupProps>) => {\n const item = eventItem(scope.event);\n if (!item) return;\n const previous = scope.context.collection.items.find((candidate) => candidate.id === item.id);\n const items = scope.context.collection.items.map((candidate) => candidate.id === item.id ? item : candidate);\n const duplicate = items.some((candidate) => candidate.id !== item.id && candidate.value && candidate.value === item.value);\n if (duplicate) throw new Error(`Radio group values must be unique: ${item.value}`);\n let value = scope.context.selection.value;\n if (!scope.props.value && item.checked) value = item.value;\n else if (!scope.props.value && previous?.checked && !item.checked && previous.value === value) value = '';\n else if (previous?.value === value && item.value !== previous.value) value = item.value;\n return {context: {selection: {value}, collection: {items}}};\n};\n\nconst createRadioGroupMachine = ({props, effects}: {props: RadioGroupProps; effects: RadioGroupEffects}): Machine<RadioGroupContext, RadioGroupProps> => createMachine<RadioGroupContext, RadioGroupProps>({\n initial: props.value ? 'selected' : 'empty',\n on: {\n NATIVE_SELECTED: {target: 'selected', guard: isSelectable, reduce: 'select', effects: 'sync'},\n SET_VALUE: [\n {target: 'selected', guard: (scope) => isSelectable(scope) && hasValue(true)(scope), reduce: 'select', effects: ['sync', 'emitInput', 'emitChange']},\n {target: 'empty', guard: (scope) => isSelectable(scope) && hasValue(false)(scope), reduce: 'select', effects: 'sync'},\n ],\n NAVIGATE: {target: 'selected', guard: isSelectable, reduce: 'select', effects: ['sync', 'emitInput', 'emitChange', 'focus']},\n ITEM_REGISTERED: {reduce: 'registerItem', effects: 'sync'},\n ITEM_UPDATED: {reduce: 'updateItem', effects: 'sync'},\n ITEM_UNREGISTERED: {reduce: 'unregisterItem', effects: 'sync'},\n PROPS_CHANGED: [\n {target: 'selected', guard: nextGroupHasValue(true), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'empty', guard: nextGroupHasValue(false), reduce: 'reconcileProps', effects: 'sync'},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {empty: {tags: ['empty']}, selected: {tags: ['selected']}},\n}, {\n context: {selection: {value: props.value}, collection: {items: []}},\n props,\n reducers: {select, reconcileProps, registerItem, unregisterItem, updateItem},\n effects,\n});\n\nconst createRadioItemMachine = ({props, effects}: {props: RadioProps; effects: RadioItemEffects}): Machine<RadioItemContext, RadioProps> => createMachine<RadioItemContext, RadioProps>({\n initial: 'ready',\n states: {ready: {on: {\n NATIVE_SELECTED: {reduce: 'select', effects: 'sync'},\n PROPS_CHANGED: {reduce: 'reconcileProps', effects: 'sync'},\n }}},\n}, {\n context: {checked: props.checked},\n props,\n reducers: {\n select: (scope) => ({context: {...scope.context, checked: true}}),\n reconcileProps: (scope) => {\n const event = propsChangedEvent<RadioProps>(scope.event);\n if (!event) return;\n const checkedChanged = event.changes.some(({key}) => key === 'checked');\n return {\n props: event.props,\n context: checkedChanged ? {...scope.context, checked: event.props.checked} : scope.context,\n };\n },\n },\n effects,\n});\n\nexport {createRadioGroupMachine, createRadioItemMachine, radioGroupHooks, radioItemHooks};\nexport type {RadioGroupContext, RadioGroupEffects, RadioItemContext, RadioItemEffects, RadioItemRecord};\n","import type Alpine from 'alpinejs';\n\nimport {type AlpineMachine, createAlpineMachine, type MachineSnapshot, type TrellisAlpineComponent} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {addListener, setAttribute, setPresence, type CleanupStack} from '@client/utils';\nimport {radioGroupSchema, radioSchema, type RadioGroupProps, type RadioProps} from './contract';\nimport {\n createRadioGroupMachine,\n createRadioItemMachine,\n radioGroupHooks,\n radioItemHooks,\n type RadioGroupContext,\n type RadioItemContext,\n type RadioItemRecord,\n} from './machine';\n\n/** Public Alpine API for `ui.radio.group`. @public */\ninterface UiRadioGroupApi {\n /** Current selected value, or an empty string when the group has no selection. */\n readonly value: string;\n /** Select a registered enabled value, or clear an optional group with an empty string. */\n setValue(value: string): void;\n}\n\ntype RadioGroupData = AlpineMachine<RadioGroupContext, RadioGroupProps, typeof radioGroupHooks> & UiRadioGroupApi & {\n init(): void;\n destroy(): void;\n};\ntype RadioData = AlpineMachine<RadioItemContext, RadioProps, typeof radioItemHooks> & {\n init(): void;\n destroy(): void;\n};\n\ntype ItemDomState = {checked: boolean; name: string; disabled: boolean; required: boolean; invalid: boolean};\ntype RadioItemOwner = {\n record(): RadioItemRecord;\n input(): HTMLInputElement;\n sync(state: ItemDomState): void;\n emit(type: 'input' | 'change'): void;\n focus(): void;\n};\ntype RadioGroupOwner = {\n register(item: RadioItemOwner): () => void;\n update(item: RadioItemOwner): void;\n nativeSelected(item: RadioItemOwner): void;\n navigate(item: RadioItemOwner, delta: 1 | -1): void;\n};\n\nconst groupOwners = new WeakMap<HTMLElement, RadioGroupOwner>();\nlet radioItemId = 0;\n\nconst closestGroupOwner = (element: HTMLElement): RadioGroupOwner | null => {\n const group = element.parentElement?.closest<HTMLElement>('[data-ui-radio-group]') ?? null;\n return group ? groupOwners.get(group) ?? null : null;\n};\n\nconst UiRadio = (): TrellisAlpineComponent<RadioData> => {\n const id = `ui-radio-${++radioItemId}`;\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let inputEl: HTMLInputElement | null = null;\n let listeners: CleanupStack = [];\n let group: RadioGroupOwner | null = null;\n let unregister: (() => void) | null = null;\n let dispatching = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Radio has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n if (!inputEl) throw new Error('Radio requires a native radio input.');\n return inputEl;\n };\n const snapshot = (): MachineSnapshot<RadioItemContext, RadioProps> => bridge.getCommittedSnapshot();\n const record = (): RadioItemRecord => ({\n id,\n value: snapshot().props.value || input().value || '',\n disabled: snapshot().props.disabled,\n checked: snapshot().props.checked,\n });\n const applyState = (state?: ItemDomState): void => {\n const props = snapshot().props;\n const native = input();\n const checked = state?.checked ?? snapshot().context.checked;\n const name = props.name || state?.name || '';\n const disabled = props.disabled || state?.disabled === true;\n const required = props.required || state?.required === true;\n const invalid = props.invalid || state?.invalid === true;\n\n native.checked = checked;\n if (!name) native.removeAttribute('name');\n syncNativeControl({input: native, state: {name, value: props.value, disabled, required, invalid}});\n setAttribute({el: root(), attr: 'data-state', value: checked ? 'checked' : 'unchecked'});\n setPresence({el: root(), attr: 'data-checked', present: checked});\n syncControlPresence({el: root(), state: {disabled, required, invalid}});\n setPresence({el: native, attr: 'data-checked', present: checked});\n const indicator = root().querySelector<HTMLElement>('[data-ui-radio-indicator]');\n if (indicator) {\n setPresence({el: indicator, attr: 'data-checked', present: checked});\n setPresence({el: indicator, attr: 'data-disabled', present: disabled});\n setPresence({el: indicator, attr: 'data-invalid', present: invalid});\n }\n const dot = root().querySelector<HTMLElement>('[data-ui-radio-indicator-dot]');\n if (dot) setPresence({el: dot, attr: 'data-checked', present: checked});\n };\n const bridge = createAlpineMachine({\n schema: radioSchema,\n hooks: radioItemHooks,\n createMachine: ({props}) => createRadioItemMachine({props, effects: {sync: () => {\n group?.update(owner);\n if (!group) applyState();\n }}}),\n });\n const owner: RadioItemOwner = {\n record,\n input,\n sync: applyState,\n emit(type): void {\n dispatching = true;\n try { input().dispatchEvent(new Event(type, {bubbles: true})); } finally { dispatching = false; }\n },\n focus: () => input().focus({preventScroll: true}),\n };\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n inputEl = root().querySelector<HTMLInputElement>('[data-ui-radio-input]');\n if (!inputEl) throw new Error('Radio requires a native radio input.');\n bridge.connect(rootEl, this.snapshot);\n group = closestGroupOwner(root());\n if (group) unregister = group.register(owner);\n addListener({target: inputEl, event: 'change', handler: () => {\n if (dispatching || !input().checked) return;\n if (group) group.nativeSelected(owner);\n else bridge.send('NATIVE_SELECTED');\n }, cleanup: listeners});\n addListener({target: inputEl, event: 'keydown', handler: (event) => {\n if (!group || !(event instanceof KeyboardEvent)) return;\n const previous = event.key === 'ArrowUp' || event.key === 'ArrowLeft';\n const next = event.key === 'ArrowDown' || event.key === 'ArrowRight';\n if (!previous && !next) return;\n event.preventDefault();\n group.navigate(owner, previous ? -1 : 1);\n }, cleanup: listeners});\n if (!group) applyState();\n },\n destroy(): void {\n unregister?.();\n unregister = null;\n group = null;\n listeners.splice(0).reverse().forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n inputEl = null;\n },\n };\n\n function standaloneState(): ItemDomState {\n const props = snapshot().props;\n return {checked: snapshot().context.checked, name: props.name, disabled: props.disabled, required: props.required, invalid: props.invalid};\n }\n};\n\nconst UiRadioGroup = (): TrellisAlpineComponent<RadioGroupData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n const members = new Map<string, RadioItemOwner>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Radio group has not been initialized.');\n return rootEl;\n };\n const snapshot = (): MachineSnapshot<RadioGroupContext, RadioGroupProps> => bridge.getCommittedSnapshot();\n const syncDom = (): void => {\n const current = snapshot();\n const props = current.props;\n const selected = current.context.selection.value;\n setAttribute({el: root(), attr: 'data-orientation', value: props.orientation});\n setAttribute({el: root(), attr: 'data-variant', value: props.variant});\n setAttribute({el: root(), attr: 'data-placement', value: props.placement});\n setAttribute({el: root(), attr: 'aria-orientation', value: props.orientation});\n setPresence({el: root(), attr: 'data-indicator', present: !props.indicator, value: 'false'});\n syncControlPresence({el: root(), state: props});\n\n const enabled = current.context.collection.items.filter((item) => !item.disabled);\n const firstEnabled = enabled[0]?.id ?? '';\n current.context.collection.items.forEach((item) => {\n const owner = members.get(item.id);\n if (!owner) return;\n const checked = item.value === selected;\n owner.sync({\n checked,\n name: props.name,\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n });\n owner.input().tabIndex = item.disabled ? -1 : checked || (!selected && item.id === firstEnabled) ? 0 : -1;\n });\n };\n const eventOwner = (current: MachineSnapshot<RadioGroupContext, RadioGroupProps>, eventValue?: unknown): RadioItemOwner | null => {\n const value = typeof eventValue === 'string' ? eventValue : current.context.selection.value;\n const item = current.context.collection.items.find((candidate) => candidate.value === value);\n return item ? members.get(item.id) ?? null : null;\n };\n const bridge = createAlpineMachine({\n schema: radioGroupSchema,\n hooks: radioGroupHooks,\n createMachine: ({props}) => createRadioGroupMachine({props, effects: {\n sync: syncDom,\n emitInput: (scope) => eventOwner(scope.snapshot, scope.event.value)?.emit('input'),\n emitChange: (scope) => eventOwner(scope.snapshot, scope.event.value)?.emit('change'),\n focus: (scope) => eventOwner(scope.snapshot, scope.event.value)?.focus(),\n }}),\n });\n const owner: RadioGroupOwner = {\n register(item): () => void {\n const record = item.record();\n members.set(record.id, item);\n bridge.send({type: 'ITEM_REGISTERED', item: record});\n return () => {\n members.delete(record.id);\n bridge.send({type: 'ITEM_UNREGISTERED', id: record.id});\n };\n },\n update(item): void {\n bridge.send({type: 'ITEM_UPDATED', item: item.record()});\n },\n nativeSelected(item): void {\n bridge.send({type: 'NATIVE_SELECTED', value: item.record().value});\n },\n navigate(item, delta): void {\n const current = bridge.getCommittedSnapshot();\n const enabled = current.context.collection.items.filter((candidate) => !candidate.disabled);\n const index = enabled.findIndex((candidate) => candidate.id === item.record().id);\n if (index < 0 || enabled.length === 0) return;\n let next = index + delta;\n if (next < 0 || next >= enabled.length) {\n if (!current.props.loop) return;\n next = next < 0 ? enabled.length - 1 : 0;\n }\n const target = enabled[next];\n if (target) bridge.send({type: 'NAVIGATE', value: target.value});\n },\n };\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n bridge.connect(rootEl, this.snapshot);\n groupOwners.set(root(), owner);\n syncDom();\n },\n destroy(): void {\n groupOwners.delete(root());\n members.clear();\n bridge.disconnect();\n rootEl = null;\n },\n get value(): string {\n return bridge.getCommittedSnapshot().context.selection.value;\n },\n setValue(value: string): void {\n if (value === bridge.getCommittedSnapshot().context.selection.value) return;\n bridge.send({type: 'SET_VALUE', value});\n },\n };\n};\n\nconst registerRadio = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.data('UiRadio', () => UiRadio());\n AlpineInstance.data('UiRadioGroup', () => UiRadioGroup());\n};\n\nexport {registerRadio, UiRadio, UiRadioGroup};\nexport type {RadioData, RadioGroupData, UiRadioGroupApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerRadio as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerRadio = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerRadio};\nexport default registerRadio;\nexport * from './index';\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{l as e,n as t,t as n}from"./codecs-Cb1ns_47.js";import{o as r,s as i}from"./dom-qAeVl7dc.js";import{n as a,t as o}from"./machine-CX3wFSoV.js";import{n as s}from"./props-change-2xfsIAEN.js";import{S as c}from"./common-DAxHCzB-.js";var l=[`stack`,`grid`,`inline`];e(c,`vertical`),e(l,`stack`),e([`default`,`trailing`],`default`),e([`stack`,`row`,`grid`],`stack`),e(l,`stack`);var u={invalid:n(t,`prop-invalid`)},d=[],f=e=>({event:t})=>s(t)?.props.invalid===e,p=e=>{let t=s(e.event)?.props;return t?{props:t}:void 0},m=({props:e,effects:t})=>o({initial:e.invalid?`invalid`:`valid`,on:{PROPS_CHANGED:[{target:`invalid`,guard:f(!0),reduce:`reconcileProps`,effects:`sync`},{target:`valid`,guard:f(!1),reduce:`reconcileProps`,effects:`sync`}],CONTENT_CHANGED:{effects:`sync`}},states:{valid:{tags:[`valid`]},invalid:{tags:[`invalid`]}}},{context:{},props:e,reducers:{reconcileProps:p},effects:t}),h=`input:not([type="hidden"]), textarea, select, button, [data-ui-control-target]`,g=(e,t)=>{let n=new Set((e??``).split(/\s+/).filter(Boolean));return n.add(t),Array.from(n).join(` `)},_=(e,t)=>(e??``).split(/\s+/).filter(e=>e&&!t.has(e)).join(` `),v=(e,t)=>(e.id||=`ui-${t}-${crypto.randomUUID()}`,e.id),y=()=>{let e=null,t=null,n=new WeakMap,o=new WeakMap,s=()=>{if(!e)throw Error(`Field has not been initialized.`);return e},c=()=>y.getCommittedSnapshot(),l=(e,t)=>{let i=n.get(e)??new Set,a=_(e.getAttribute(`aria-describedby`),i);t.forEach(e=>{a=g(a,e)}),a?r({el:e,attr:`aria-describedby`,value:a}):e.removeAttribute(`aria-describedby`),n.set(e,new Set(t))},f=(e,t)=>{if(t){e.hasAttribute(`data-ui-field-aria-invalid`)||(o.set(e,e.getAttribute(`aria-invalid`)),e.setAttribute(`data-ui-field-aria-invalid`,``)),e.setAttribute(`aria-invalid`,`true`);return}if(!e.hasAttribute(`data-ui-field-aria-invalid`))return;let n=o.get(e)??null;n===null?e.removeAttribute(`aria-invalid`):e.setAttribute(`aria-invalid`,n),e.removeAttribute(`data-ui-field-aria-invalid`),o.delete(e)},p=()=>{let e=s(),t=c().props.invalid;i({el:e,attr:`data-invalid`,present:t,value:`true`});let n=Array.from(e.querySelectorAll(h)).filter(t=>!t.closest(`[data-ui-field], [data-ui-fieldset]`)||t.closest(`[data-ui-field], [data-ui-fieldset]`)===e)[0],a=e.querySelector(`:scope > [data-ui-field-label]`),o=e.querySelector(`:scope > [data-ui-fieldset-legend]`),u=Array.from(e.querySelectorAll(`:scope > [data-ui-field-description]`)),d=Array.from(e.querySelectorAll(`:scope > [data-ui-field-error]`)),p=[...u,...d].filter(e=>!e.hasAttribute(`hidden`)).map(e=>v(e,e.hasAttribute(`data-ui-field-error`)?`field-error`:`field-description`));if(n){let e=v(n,`control`);if(a&&!a.htmlFor&&(a.htmlFor=e),o){let e=v(o,`fieldset-legend`);r({el:n,attr:`aria-labelledby`,value:g(n.getAttribute(`aria-labelledby`),e)})}l(n,p),f(n,t)}e.matches(`fieldset`)&&l(e,p)},y=a({schema:u,hooks:d,createMachine:({props:e})=>m({props:e,effects:{sync:p}})});return{...y,init(){e=this.$el,y.connect(e,this.snapshot),t=new MutationObserver(()=>y.send(`CONTENT_CHANGED`)),t.observe(s(),{childList:!0,subtree:!0}),p()},destroy(){t?.disconnect(),t=null,y.disconnect(),e=null}}},b=e=>{e.data(`UiField`,()=>y())},x=new WeakSet,S=e=>{x.has(e)||(x.add(e),b(e))};export{y as n,S as t};
2
- //# sourceMappingURL=entry.generated-DHMRhcYF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.generated-DHMRhcYF.js","names":[],"sources":["../../../../../../../../client/src/components/field/contract.ts","../../../../../../../../client/src/components/field/machine.ts","../../../../../../../../client/src/components/field/index.ts","../../../../../../../../client/src/components/field/entry.generated.ts"],"sourcesContent":["import {attribute, bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {ORIENTATIONS, type Orientation} from '../common';\n\nconst FIELD_LAYOUTS = ['stack', 'grid', 'inline'] as const;\nconst FIELD_GROUP_LAYOUTS = ['stack', 'row', 'grid'] as const;\nconst FIELD_ORIENTATIONS = ORIENTATIONS;\n\ntype FieldLayout = typeof FIELD_LAYOUTS[number];\ntype FieldGroupLayout = typeof FIELD_GROUP_LAYOUTS[number];\ntype FieldOrientation = Orientation;\n\nconst fieldSchema = {\n name: string,\n controlId: string,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n orientation: oneOf(FIELD_ORIENTATIONS, 'vertical' as FieldOrientation),\n layout: oneOf(FIELD_LAYOUTS, 'stack' as FieldLayout),\n disabled: bool,\n required: bool,\n invalid: bool,\n class: string,\n};\n\nconst fieldLabelSchema = {\n controlId: string,\n badge: string,\n required: bool,\n class: string,\n};\n\nconst fieldDescriptionSchema = {\n id: string,\n placement: oneOf(['default', 'trailing'] as const, 'default'),\n class: string,\n};\n\nconst fieldErrorSchema = {\n id: string,\n message: string,\n errors: string,\n class: string,\n};\n\nconst fieldGroupSchema = {\n layout: oneOf(FIELD_GROUP_LAYOUTS, 'stack' as FieldGroupLayout),\n class: string,\n};\n\nconst fieldsetSchema = {\n name: string,\n legend: string,\n description: string,\n error: string,\n errors: string,\n layout: oneOf(FIELD_LAYOUTS, 'stack' as FieldLayout),\n disabled: bool,\n required: bool,\n invalid: bool,\n class: string,\n};\n\nconst fieldsetLegendSchema = {\n badge: string,\n required: bool,\n class: string,\n};\n\nconst fieldRuntimeSchema = {\n invalid: attribute(bool, 'prop-invalid'),\n};\n\ntype FieldProps = SchemaToProps<typeof fieldSchema>;\ntype FieldGroupProps = SchemaToProps<typeof fieldGroupSchema>;\ntype FieldRuntimeProps = SchemaToProps<typeof fieldRuntimeSchema>;\ntype FieldsetProps = SchemaToProps<typeof fieldsetSchema>;\n\nexport {\n FIELD_GROUP_LAYOUTS,\n FIELD_LAYOUTS,\n FIELD_ORIENTATIONS,\n fieldDescriptionSchema,\n fieldErrorSchema,\n fieldGroupSchema,\n fieldLabelSchema,\n fieldRuntimeSchema,\n fieldSchema,\n fieldsetLegendSchema,\n fieldsetSchema,\n};\nexport type {FieldGroupLayout, FieldGroupProps, FieldLayout, FieldOrientation, FieldProps, FieldRuntimeProps, FieldsetProps};\n","import {createMachine, propsChangedEvent, type Machine, type MachineScope} from '../../runtime/state-machine';\nimport type {FieldRuntimeProps} from './contract';\n\ntype FieldContext = Record<string, never>;\ntype FieldEffects = {sync(scope: MachineScope<FieldContext, FieldRuntimeProps>): void};\nconst fieldHooks = [] as const;\nconst nextInvalidIs = (invalid: boolean) => ({event}: MachineScope<FieldContext, FieldRuntimeProps>): boolean => (\n propsChangedEvent<FieldRuntimeProps>(event)?.props.invalid === invalid\n);\nconst reconcileProps = (scope: MachineScope<FieldContext, FieldRuntimeProps>) => {\n const next = propsChangedEvent<FieldRuntimeProps>(scope.event)?.props;\n return next ? {props: next} : undefined;\n};\n\nconst createFieldMachine = ({props, effects}: {props: FieldRuntimeProps; effects: FieldEffects}): Machine<FieldContext, FieldRuntimeProps> => createMachine<FieldContext, FieldRuntimeProps>({\n initial: props.invalid ? 'invalid' : 'valid',\n on: {\n PROPS_CHANGED: [\n {target: 'invalid', guard: nextInvalidIs(true), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'valid', guard: nextInvalidIs(false), reduce: 'reconcileProps', effects: 'sync'},\n ],\n CONTENT_CHANGED: {effects: 'sync'},\n },\n states: {valid: {tags: ['valid']}, invalid: {tags: ['invalid']}},\n}, {context: {}, props, reducers: {reconcileProps}, effects});\n\nexport {createFieldMachine, fieldHooks};\nexport type {FieldContext, FieldEffects};\n","import type Alpine from 'alpinejs';\n\nimport {type AlpineMachine, createAlpineMachine, type MachineSnapshot, type TrellisAlpineComponent} from '@client/runtime';\nimport {setAttribute, setPresence} from '@client/utils';\nimport {fieldRuntimeSchema, type FieldRuntimeProps} from './contract';\nimport {createFieldMachine, fieldHooks, type FieldContext} from './machine';\n\ntype FieldData = AlpineMachine<FieldContext, FieldRuntimeProps, typeof fieldHooks> & {\n init(): void;\n destroy(): void;\n};\n\nconst controlSelector = 'input:not([type=\"hidden\"]), textarea, select, button, [data-ui-control-target]';\nconst appendId = (value: string | null, id: string): string => {\n const tokens = new Set((value ?? '').split(/\\s+/).filter(Boolean));\n tokens.add(id);\n return Array.from(tokens).join(' ');\n};\nconst withoutIds = (value: string | null, ids: Set<string>): string => (\n (value ?? '').split(/\\s+/).filter((token) => token && !ids.has(token)).join(' ')\n);\nconst ensureId = (el: HTMLElement, prefix: string): string => {\n if (el.id) return el.id;\n el.id = `ui-${prefix}-${crypto.randomUUID()}`;\n return el.id;\n};\n\nconst UiField = (): TrellisAlpineComponent<FieldData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let observer: MutationObserver | null = null;\n const ownedDescriptions = new WeakMap<HTMLElement, Set<string>>();\n const originalInvalid = new WeakMap<HTMLElement, string | null>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Field has not been initialized.');\n return rootEl;\n };\n const snapshot = (): MachineSnapshot<FieldContext, FieldRuntimeProps> => bridge.getCommittedSnapshot();\n const applyDescriptions = (el: HTMLElement, ids: string[]): void => {\n const previous = ownedDescriptions.get(el) ?? new Set<string>();\n let value = withoutIds(el.getAttribute('aria-describedby'), previous);\n ids.forEach((id) => { value = appendId(value, id); });\n if (value) setAttribute({el, attr: 'aria-describedby', value});\n else el.removeAttribute('aria-describedby');\n ownedDescriptions.set(el, new Set(ids));\n };\n const applyInvalid = (control: HTMLElement, invalid: boolean): void => {\n if (invalid) {\n if (!control.hasAttribute('data-ui-field-aria-invalid')) {\n originalInvalid.set(control, control.getAttribute('aria-invalid'));\n control.setAttribute('data-ui-field-aria-invalid', '');\n }\n control.setAttribute('aria-invalid', 'true');\n return;\n }\n if (!control.hasAttribute('data-ui-field-aria-invalid')) return;\n const original = originalInvalid.get(control) ?? null;\n if (original === null) control.removeAttribute('aria-invalid');\n else control.setAttribute('aria-invalid', original);\n control.removeAttribute('data-ui-field-aria-invalid');\n originalInvalid.delete(control);\n };\n const syncDom = (): void => {\n const field = root();\n const invalid = snapshot().props.invalid;\n setPresence({el: field, attr: 'data-invalid', present: invalid, value: 'true'});\n\n const controls = Array.from(field.querySelectorAll<HTMLElement>(controlSelector)).filter((control) => (\n !control.closest('[data-ui-field], [data-ui-fieldset]')\n || control.closest('[data-ui-field], [data-ui-fieldset]') === field\n ));\n const control = controls[0];\n const label = field.querySelector<HTMLLabelElement>(':scope > [data-ui-field-label]');\n const legend = field.querySelector<HTMLElement>(':scope > [data-ui-fieldset-legend]');\n const descriptions = Array.from(field.querySelectorAll<HTMLElement>(':scope > [data-ui-field-description]'));\n const errors = Array.from(field.querySelectorAll<HTMLElement>(':scope > [data-ui-field-error]'));\n const describedBy = [...descriptions, ...errors]\n .filter((el) => !el.hasAttribute('hidden'))\n .map((el) => ensureId(el, el.hasAttribute('data-ui-field-error') ? 'field-error' : 'field-description'));\n\n if (control) {\n const controlId = ensureId(control, 'control');\n if (label && !label.htmlFor) label.htmlFor = controlId;\n if (legend) {\n const legendId = ensureId(legend, 'fieldset-legend');\n setAttribute({el: control, attr: 'aria-labelledby', value: appendId(control.getAttribute('aria-labelledby'), legendId)});\n }\n applyDescriptions(control, describedBy);\n applyInvalid(control, invalid);\n }\n if (field.matches('fieldset')) applyDescriptions(field, describedBy);\n };\n const bridge = createAlpineMachine({\n schema: fieldRuntimeSchema,\n hooks: fieldHooks,\n createMachine: ({props}) => createFieldMachine({props, effects: {sync: syncDom}}),\n });\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n bridge.connect(rootEl, this.snapshot);\n observer = new MutationObserver(() => bridge.send('CONTENT_CHANGED'));\n observer.observe(root(), {childList: true, subtree: true});\n syncDom();\n },\n destroy(): void {\n observer?.disconnect();\n observer = null;\n bridge.disconnect();\n rootEl = null;\n },\n };\n};\n\nconst registerField = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.data('UiField', () => UiField());\n};\n\nexport {registerField, UiField};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerField as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerField = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerField};\nexport default registerField;\nexport * from './index';\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{f as e,l as t,n,t as r}from"./codecs-Cb1ns_47.js";import{o as i,s as a,t as o}from"./dom-qAeVl7dc.js";import{n as s,t as c}from"./machine-CX3wFSoV.js";import{n as l,t as u}from"./props-change-2xfsIAEN.js";import{n as d,r as f}from"./form-control-BkVb2Qed.js";import{c as p,o as m}from"./common-DAxHCzB-.js";var h=[`trailing`,`leading`],g=m,_=p,v={value:e.default(`on`),name:e,label:e,description:e,checked:r(n,`prop-checked`),disabled:r(n,`prop-disabled`),required:r(n,`prop-required`),invalid:r(n,`prop-invalid`),placement:t(h,`trailing`),variant:t(_,`default`),size:t(g,`md`),inputClass:e,trackClass:e,thumbClass:e,contentClass:e,labelClass:e,descriptionClass:e,class:e};({...v});var y=[],b=e=>e.checked===!0,x=e=>({event:t})=>b(t)===e,S=({event:e})=>u(e,`checked`),C=e=>t=>{let n=l(t.event)?.props;return S(t)&&n?.checked===e},w=e=>({context:{...e.context,selection:{checked:b(e.event)}}}),T=e=>({context:{...e.context,selection:{checked:!e.context.selection.checked}}}),E=e=>{let t=l(e.event)?.props;if(t)return{props:t,context:S(e)?{...e.context,selection:{checked:t.checked}}:e.context}},D=({props:e,effects:t})=>c({initial:e.checked?`checked`:`unchecked`,on:{NATIVE_CHANGED:[{target:`checked`,guard:x(!0),reduce:`setChecked`,effects:`sync`},{target:`unchecked`,guard:x(!1),reduce:`setChecked`,effects:`sync`}],SET_CHECKED:[{target:`checked`,guard:x(!0),reduce:`setChecked`,effects:[`sync`,`emitInput`,`emitChange`]},{target:`unchecked`,guard:x(!1),reduce:`setChecked`,effects:[`sync`,`emitInput`,`emitChange`]}],TOGGLE:[{target:`checked`,guard:({context:e})=>!e.selection.checked,reduce:`toggle`,effects:[`sync`,`emitInput`,`emitChange`]},{target:`unchecked`,guard:({context:e})=>e.selection.checked,reduce:`toggle`,effects:[`sync`,`emitInput`,`emitChange`]}],PROPS_CHANGED:[{target:`checked`,guard:C(!0),reduce:`reconcileProps`,effects:`sync`},{target:`unchecked`,guard:C(!1),reduce:`reconcileProps`,effects:`sync`},{reduce:`reconcileProps`,effects:`sync`}]},states:{unchecked:{tags:[`unchecked`]},checked:{tags:[`checked`]}}},{context:{selection:{checked:e.checked}},props:e,reducers:{setChecked:w,toggle:T,reconcileProps:E},effects:t}),O=()=>{let e=null,t=null,n=[],r=!1,c=()=>{if(!e)throw Error(`Switch has not been initialized.`);return e},l=()=>{if(!t)throw Error(`Switch requires a native checkbox input.`);return t},u=()=>h.getCommittedSnapshot(),p=()=>{let e=u(),t=e.props,n=e.context.selection.checked,r=n?`checked`:`unchecked`,o=l();o.checked=n,t.name||o.removeAttribute(`name`),f({input:o,state:{name:t.name,value:t.value,disabled:t.disabled,required:t.required,invalid:t.invalid}}),o.setAttribute(`role`,`switch`),i({el:o,attr:`aria-checked`,value:n?`true`:`false`}),i({el:c(),attr:`data-state`,value:r}),a({el:c(),attr:`data-checked`,present:n}),d({el:c(),state:t}),i({el:o,attr:`data-state`,value:r}),a({el:o,attr:`data-checked`,present:n});let s=c().querySelector(`[data-ui-switch-track]`);s&&(i({el:s,attr:`data-state`,value:r}),a({el:s,attr:`data-checked`,present:n}),d({el:s,state:{disabled:t.disabled,invalid:t.invalid}}));let p=c().querySelector(`[data-ui-switch-thumb]`);p&&(i({el:p,attr:`data-state`,value:r}),a({el:p,attr:`data-checked`,present:n}),a({el:p,attr:`data-disabled`,present:t.disabled}),a({el:p,attr:`data-invalid`,present:t.invalid}))},m=e=>{r=!0;try{l().dispatchEvent(new Event(e,{bubbles:!0}))}finally{r=!1}},h=s({schema:v,hooks:y,createMachine:({props:e})=>D({props:e,effects:{sync:p,emitInput:()=>m(`input`),emitChange:()=>m(`change`)}})});return{...h,init(){if(e=this.$el,t=c().querySelector(`[data-ui-switch-input]`),!t)throw Error(`Switch requires a native checkbox input.`);h.connect(e,this.snapshot),o({target:t,event:`change`,handler:()=>{r||h.send({type:`NATIVE_CHANGED`,checked:l().checked})},cleanup:n}),o({target:t,event:`keydown`,handler:e=>{!(e instanceof KeyboardEvent)||e.key!==`Enter`||l().disabled||(e.preventDefault(),h.send(`TOGGLE`))},cleanup:n}),p()},destroy(){n.splice(0).reverse().forEach(e=>e()),h.disconnect(),e=null,t=null},get checked(){return h.getCommittedSnapshot().context.selection.checked},setChecked(e){e!==h.getCommittedSnapshot().context.selection.checked&&h.send({type:`SET_CHECKED`,checked:e})}}},k=e=>{e.data(`UiSwitch`,()=>O())},A=new WeakSet,j=e=>{A.has(e)||(A.add(e),k(e))};export{O as n,j as t};
2
- //# sourceMappingURL=entry.generated-DgmqZx_W.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.generated-DgmqZx_W.js","names":[],"sources":["../../../../../../../../client/src/components/switch/contract.ts","../../../../../../../../client/src/components/switch/machine.ts","../../../../../../../../client/src/components/switch/index.ts","../../../../../../../../client/src/components/switch/entry.generated.ts"],"sourcesContent":["import {attribute, bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {CONTROL_SIZES, DEFAULT_VARIANTS, type ControlSize, type DefaultVariant} from '../common';\n\nconst SWITCH_PLACEMENTS = ['trailing', 'leading'] as const;\nconst SWITCH_SIZES = CONTROL_SIZES;\nconst SWITCH_VARIANTS = DEFAULT_VARIANTS;\n\ntype SwitchPlacement = typeof SWITCH_PLACEMENTS[number];\ntype SwitchSize = ControlSize;\ntype SwitchVariant = DefaultVariant;\n\nconst switchControlSchema = {\n value: string.default('on'),\n name: string,\n label: string,\n description: string,\n checked: attribute(bool, 'prop-checked'),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n placement: oneOf(SWITCH_PLACEMENTS, 'trailing' as SwitchPlacement),\n variant: oneOf(SWITCH_VARIANTS, 'default' as SwitchVariant),\n size: oneOf(SWITCH_SIZES, 'md' as SwitchSize),\n inputClass: string,\n trackClass: string,\n thumbClass: string,\n contentClass: string,\n labelClass: string,\n descriptionClass: string,\n class: string,\n};\n\nconst switchSchema = {\n ...switchControlSchema,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n fieldClass: string,\n};\n\ntype SwitchControlProps = SchemaToProps<typeof switchControlSchema>;\ntype SwitchProps = SchemaToProps<typeof switchSchema>;\n\nexport {\n SWITCH_PLACEMENTS,\n SWITCH_SIZES,\n SWITCH_VARIANTS,\n switchControlSchema,\n switchSchema,\n};\nexport type {\n SwitchPlacement,\n SwitchControlProps,\n SwitchProps,\n SwitchSize,\n SwitchVariant,\n};\n","import {createMachine, propsChanged, propsChangedEvent, type Machine, type MachineEventObject, type MachineScope} from '../../runtime/state-machine';\nimport type {SwitchControlProps} from './contract';\n\ntype SwitchContext = {selection: {checked: boolean}};\ntype SwitchEffects = {\n sync(scope: MachineScope<SwitchContext, SwitchControlProps>): void;\n emitInput(scope: MachineScope<SwitchContext, SwitchControlProps>): void;\n emitChange(scope: MachineScope<SwitchContext, SwitchControlProps>): void;\n};\nconst switchHooks = [] as const;\nconst eventChecked = (event: MachineEventObject): boolean => event.checked === true;\nconst eventIs = (checked: boolean) => ({event}: MachineScope<SwitchContext, SwitchControlProps>): boolean => (\n eventChecked(event) === checked\n);\nconst checkedPropChanged = ({event}: MachineScope<SwitchContext, SwitchControlProps>): boolean => (\n propsChanged<SwitchControlProps>(event, 'checked')\n);\nconst nextPropsAre = (checked: boolean) => (scope: MachineScope<SwitchContext, SwitchControlProps>): boolean => {\n const next = propsChangedEvent<SwitchControlProps>(scope.event)?.props;\n return checkedPropChanged(scope) && next?.checked === checked;\n};\nconst setChecked = (scope: MachineScope<SwitchContext, SwitchControlProps>) => ({\n context: {...scope.context, selection: {checked: eventChecked(scope.event)}},\n});\nconst toggle = (scope: MachineScope<SwitchContext, SwitchControlProps>) => ({\n context: {...scope.context, selection: {checked: !scope.context.selection.checked}},\n});\nconst reconcileProps = (scope: MachineScope<SwitchContext, SwitchControlProps>) => {\n const next = propsChangedEvent<SwitchControlProps>(scope.event)?.props;\n if (!next) return;\n return {\n props: next,\n context: checkedPropChanged(scope)\n ? {...scope.context, selection: {checked: next.checked}}\n : scope.context,\n };\n};\n\nconst createSwitchMachine = ({props, effects}: {props: SwitchControlProps; effects: SwitchEffects}): Machine<SwitchContext, SwitchControlProps> => createMachine<SwitchContext, SwitchControlProps>({\n initial: props.checked ? 'checked' : 'unchecked',\n on: {\n NATIVE_CHANGED: [\n {target: 'checked', guard: eventIs(true), reduce: 'setChecked', effects: 'sync'},\n {target: 'unchecked', guard: eventIs(false), reduce: 'setChecked', effects: 'sync'},\n ],\n SET_CHECKED: [\n {target: 'checked', guard: eventIs(true), reduce: 'setChecked', effects: ['sync', 'emitInput', 'emitChange']},\n {target: 'unchecked', guard: eventIs(false), reduce: 'setChecked', effects: ['sync', 'emitInput', 'emitChange']},\n ],\n TOGGLE: [\n {target: 'checked', guard: ({context}) => !context.selection.checked, reduce: 'toggle', effects: ['sync', 'emitInput', 'emitChange']},\n {target: 'unchecked', guard: ({context}) => context.selection.checked, reduce: 'toggle', effects: ['sync', 'emitInput', 'emitChange']},\n ],\n PROPS_CHANGED: [\n {target: 'checked', guard: nextPropsAre(true), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'unchecked', guard: nextPropsAre(false), reduce: 'reconcileProps', effects: 'sync'},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {unchecked: {tags: ['unchecked']}, checked: {tags: ['checked']}},\n}, {\n context: {selection: {checked: props.checked}},\n props,\n reducers: {setChecked, toggle, reconcileProps},\n effects,\n});\n\nexport {createSwitchMachine, switchHooks};\nexport type {SwitchContext, SwitchEffects};\n","import type Alpine from 'alpinejs';\n\nimport {type AlpineMachine, createAlpineMachine, type MachineSnapshot, type TrellisAlpineComponent} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {addListener, setAttribute, setPresence, type CleanupStack} from '@client/utils';\nimport {switchControlSchema, type SwitchControlProps} from './contract';\nimport {createSwitchMachine, switchHooks, type SwitchContext} from './machine';\n\n/** Public Alpine API for `ui.switch` and `ui.switch.control`. @public */\ninterface UiSwitchApi {\n /** Current settled checked state. */\n readonly checked: boolean;\n /** Set and commit the checked state. */\n setChecked(checked: boolean): void;\n}\n\ntype SwitchData = AlpineMachine<SwitchContext, SwitchControlProps, typeof switchHooks> & UiSwitchApi & {\n init(): void;\n destroy(): void;\n};\n\nconst UiSwitch = (): TrellisAlpineComponent<SwitchData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let inputEl: HTMLInputElement | null = null;\n let listeners: CleanupStack = [];\n let dispatching = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Switch has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n if (!inputEl) throw new Error('Switch requires a native checkbox input.');\n return inputEl;\n };\n const snapshot = (): MachineSnapshot<SwitchContext, SwitchControlProps> => bridge.getCommittedSnapshot();\n const syncDom = (): void => {\n const current = snapshot();\n const props = current.props;\n const checked = current.context.selection.checked;\n const state = checked ? 'checked' : 'unchecked';\n const native = input();\n\n native.checked = checked;\n if (!props.name) native.removeAttribute('name');\n syncNativeControl({input: native, state: {\n name: props.name,\n value: props.value,\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n }});\n native.setAttribute('role', 'switch');\n setAttribute({el: native, attr: 'aria-checked', value: checked ? 'true' : 'false'});\n\n setAttribute({el: root(), attr: 'data-state', value: state});\n setPresence({el: root(), attr: 'data-checked', present: checked});\n syncControlPresence({el: root(), state: props});\n setAttribute({el: native, attr: 'data-state', value: state});\n setPresence({el: native, attr: 'data-checked', present: checked});\n\n const track = root().querySelector<HTMLElement>('[data-ui-switch-track]');\n if (track) {\n setAttribute({el: track, attr: 'data-state', value: state});\n setPresence({el: track, attr: 'data-checked', present: checked});\n syncControlPresence({el: track, state: {disabled: props.disabled, invalid: props.invalid}});\n }\n const thumb = root().querySelector<HTMLElement>('[data-ui-switch-thumb]');\n if (thumb) {\n setAttribute({el: thumb, attr: 'data-state', value: state});\n setPresence({el: thumb, attr: 'data-checked', present: checked});\n setPresence({el: thumb, attr: 'data-disabled', present: props.disabled});\n setPresence({el: thumb, attr: 'data-invalid', present: props.invalid});\n }\n };\n const dispatchNative = (type: 'input' | 'change'): void => {\n dispatching = true;\n try { input().dispatchEvent(new Event(type, {bubbles: true})); } finally { dispatching = false; }\n };\n const bridge = createAlpineMachine({\n schema: switchControlSchema,\n hooks: switchHooks,\n createMachine: ({props}) => createSwitchMachine({props, effects: {\n sync: syncDom,\n emitInput: () => dispatchNative('input'),\n emitChange: () => dispatchNative('change'),\n }}),\n });\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n inputEl = root().querySelector<HTMLInputElement>('[data-ui-switch-input]');\n if (!inputEl) throw new Error('Switch requires a native checkbox input.');\n bridge.connect(rootEl, this.snapshot);\n addListener({target: inputEl, event: 'change', handler: () => {\n if (!dispatching) bridge.send({type: 'NATIVE_CHANGED', checked: input().checked});\n }, cleanup: listeners});\n addListener({target: inputEl, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent) || event.key !== 'Enter' || input().disabled) return;\n event.preventDefault();\n bridge.send('TOGGLE');\n }, cleanup: listeners});\n syncDom();\n },\n destroy(): void {\n listeners.splice(0).reverse().forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n inputEl = null;\n },\n get checked(): boolean {\n return bridge.getCommittedSnapshot().context.selection.checked;\n },\n setChecked(checked: boolean): void {\n if (checked === bridge.getCommittedSnapshot().context.selection.checked) return;\n bridge.send({type: 'SET_CHECKED', checked});\n },\n };\n};\n\nconst registerSwitch = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.data('UiSwitch', () => UiSwitch());\n};\n\nexport {registerSwitch, UiSwitch};\nexport type {SwitchData, UiSwitchApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerSwitch as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSwitch = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerSwitch};\nexport default registerSwitch;\nexport * from './index';\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{c as e,f as t,l as n,n as r,u as i}from"./codecs-Cb1ns_47.js";import{s as a,t as o}from"./dom-qAeVl7dc.js";import{n as s,t as c}from"./machine-CX3wFSoV.js";import{t as l}from"./number-BCZdoG0B.js";import{n as u,t as d}from"./props-change-2xfsIAEN.js";import{i as f,n as p,r as m}from"./form-control-BkVb2Qed.js";import{S as h,c as g,o as _}from"./common-DAxHCzB-.js";var v=_,y=g,b=h,x={name:t,value:t,defaultValue:t.default(`0`),min:e.default(0),max:e.default(100),step:e.default(1),bigStep:e.default(10),minStepsBetween:e.default(0),range:r,orientation:n(b,`horizontal`),size:n(v,`md`),variant:n(y,`default`),disabled:r,required:r,invalid:r,label:t,description:t,descriptionTrailing:t,error:t,errors:t,badge:t,valueText:t,lowerLabel:t.default(`Minimum`),upperLabel:t.default(`Maximum`),lowerValueText:t,upperValueText:t,showValue:r,format:n([`number`,`percent`],`number`),fieldClass:t,rootClass:t,trackClass:t,rangeClass:t,thumbClass:t,tickClass:t,class:t};e.default(0);var S=[],C=(e,t,n)=>{if(!Number.isFinite(n)||n<=0)return e;let r=Math.round((e-t)/n)*n+t,i=Math.max(0,`${n}`.split(`.`)[1]?.length??0);return Number(r.toFixed(i))},w=e=>{let t=Math.min(e.min,e.max),n=Math.max(e.min,e.max),r=e.step>0?e.step:1;return{min:t,max:n,step:r,bigStep:e.bigStep>0?e.bigStep:r*10}},T=(e,t)=>{let n=typeof e==`number`?e:Number(e);return Number.isFinite(n)?n:t},E=(e,t,n)=>{let{min:r,max:i,step:a}=w(e),o=C(l(T(t.lower,r),r,i),r,a),s=C(l(T(t.upper,i),r,i),r,a);if(!e.range)return{lower:o,upper:o};o>s&&([o,s]=[s,o]);let c=Math.max(0,e.minStepsBetween)*a;return s-o<c&&(n===`lower`?o=l(C(s-c,r,a),r,i):s=l(C(o+c,r,a),r,i)),{lower:o,upper:s}},D=(e,t)=>{let{min:n,max:r}=w(e),i=t.split(`,`).map(e=>e.trim());return E(e,{lower:T(i[0],n),upper:e.range?T(i[1],r):T(i[0],n)})},O=e=>D(e,e.value||e.defaultValue||String(w(e).min)),k=e=>e.thumb===`single`||e.thumb===`lower`||e.thumb===`upper`?e.thumb:null,A=e=>{if(Array.isArray(e.event.values))return E(e.props,{lower:T(e.event.values[0],e.context.value.lower),upper:T(e.event.values[1],e.context.value.upper)},k(e.event));let t=k(e.event)??e.context.interaction.activeThumb??`single`,n=T(e.event.value,t===`upper`?e.context.value.upper:e.context.value.lower);return E(e.props,{lower:t===`upper`?e.context.value.lower:n,upper:t===`upper`?n:e.context.value.upper},t)},j=e=>{let t=u(e.event)?.props;return t?{...t,range:e.props.range,defaultValue:e.props.defaultValue}:e.props},M=e=>{let t=j(e);return d(e.event,`value`)?D(t,t.value||t.defaultValue||String(w(t).min)):E(t,e.context.value)},N=e=>({event:t})=>t.thumb===e,P=e=>j(e).disabled,F=({props:e,context:t,effects:n})=>c({initial:`idle`,on:{INPUT_CHANGED:{reduce:`setEventValue`,effects:`sync`},INPUT_COMMITTED:{reduce:`setEventValue`,effects:`sync`},KEY_STEPPED:{reduce:`setEventValue`,effects:[`sync`,`emitInput`,`emitChange`]},API_SET:{reduce:`setEventValue`,effects:[`sync`,`emitInput`,`emitChange`]}},states:{idle:{tags:[`idle`],on:{POINTER_STARTED:[{target:`dragging.single`,guard:N(`single`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]},{target:`dragging.lower`,guard:N(`lower`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]},{target:`dragging.upper`,guard:N(`upper`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]}],PROPS_CHANGED:{reduce:`reconcileProps`,effects:`sync`}}},dragging:{initial:`single`,tags:[`dragging`],on:{POINTER_MOVED:{reduce:`setEventValue`,effects:[`sync`,`emitInput`]},POINTER_ENDED:{target:`idle`,reduce:`endDrag`,effects:[`endDrag`,`sync`,`emitChange`]},PROPS_CHANGED:[{target:`idle`,guard:P,reduce:`reconcileProps`,effects:[`endDrag`,`sync`]},{reduce:`reconcileProps`,effects:`sync`}]},states:{single:{tags:[`dragging-single`]},lower:{tags:[`dragging-lower`]},upper:{tags:[`dragging-upper`]}}}}},{context:t,props:e,reducers:{setEventValue:e=>({context:{...e.context,value:A(e)}}),startDrag:e=>({context:{value:A(e),interaction:{activeThumb:k(e.event)}}}),endDrag:e=>({context:{...e.context,interaction:{activeThumb:null}}}),reconcileProps:e=>({props:j(e),context:{...e.context,value:M(e)}})},effects:n}),I=(e,t)=>{let n=Number(e);return Number.isFinite(n)?n:t},L=(e,t,n)=>n<=t?0:l((e-t)/(n-t)*100,0,100),R=(e,t)=>{let n=t=>e.format===`percent`?`${Math.round(t)}%`:String(t);return e.range?`${n(t.lower)} - ${n(t.upper)}`:n(t.lower)},z=(e,t,n)=>{let{min:r,max:i,step:a}=w(n),o=e.getBoundingClientRect(),s=l(r+l(n.orientation===`vertical`?1-(t.clientY-o.top)/Math.max(o.height,1):(t.clientX-o.left)/Math.max(o.width,1),0,1)*(i-r),r,i),c=Math.round((s-r)/a)*a+r,u=Math.max(0,`${a}`.split(`.`)[1]?.length??0);return Number(c.toFixed(u))},B=(e,t)=>Math.abs(e-t.lower)<=Math.abs(e-t.upper)?`lower`:`upper`,V=(e,t,n,r)=>{e&&(a({el:e,attr:`data-focus`,present:t}),a({el:e,attr:`data-disabled`,present:n}),a({el:e,attr:`data-invalid`,present:r}))},H=({input:e,props:t,value:n,min:r,max:i,label:a,valueText:o,nativeRequired:s})=>{e&&(e.min=String(r),e.max=String(i),e.step=String(t.step>0?t.step:1),m({input:e,state:{name:t.range?``:t.name,value:String(n),disabled:t.disabled,required:t.required,nativeRequired:s,invalid:t.invalid}}),e.setAttribute(`aria-valuemin`,String(r)),e.setAttribute(`aria-valuemax`,String(i)),e.setAttribute(`aria-valuenow`,String(n)),o?e.setAttribute(`aria-valuetext`,o):e.removeAttribute(`aria-valuetext`),a&&e.setAttribute(`aria-label`,a),t.orientation===`vertical`?e.setAttribute(`aria-orientation`,`vertical`):e.removeAttribute(`aria-orientation`))},U=(e,t,n)=>{let{min:r,max:i}=w(e),a=L(n.lower,r,i),o=L(n.upper,r,i),s=e.range?a:0,c=e.range?o:a;t.root.style.setProperty(`--ui-slider-lower-percent`,`${a}%`),t.root.style.setProperty(`--ui-slider-upper-percent`,`${o}%`),e.orientation===`vertical`?(t.range&&(t.range.style.bottom=`${s}%`,t.range.style.height=`${Math.max(0,c-s)}%`,t.range.style.left=``,t.range.style.width=``),t.singleThumb&&(t.singleThumb.style.bottom=`${a}%`),t.lowerThumb&&(t.lowerThumb.style.bottom=`${a}%`),t.upperThumb&&(t.upperThumb.style.bottom=`${o}%`)):(t.range&&(t.range.style.left=`${s}%`,t.range.style.width=`${Math.max(0,c-s)}%`,t.range.style.bottom=``,t.range.style.height=``),t.singleThumb&&(t.singleThumb.style.left=`${a}%`),t.lowerThumb&&(t.lowerThumb.style.left=`${a}%`),t.upperThumb&&(t.upperThumb.style.left=`${o}%`)),t.ticks.forEach(t=>{let n=L(I(t.dataset.value??``,r),r,i);e.orientation===`vertical`?(t.style.bottom=`${n}%`,t.style.left=``):(t.style.left=`${n}%`,t.style.bottom=``)})},W=()=>{let e=null,t=[],n=``,r=null,a=!1,c=()=>{if(!e)throw Error(`Slider has not been initialized.`);return e},l=()=>T.getCommittedSnapshot(),u=()=>l().props,d=()=>l().context.value,m=()=>{let e=c(),t=e.querySelector(`[data-ui-slider-root]`);if(!t)throw Error(`Slider requires a root element.`);return{root:t,track:t.querySelector(`[data-ui-slider-track]`),range:t.querySelector(`[data-ui-slider-range]`),lowerInput:t.querySelector(`[data-ui-slider-input][data-thumb="lower"]`),upperInput:t.querySelector(`[data-ui-slider-input][data-thumb="upper"]`),singleInput:t.querySelector(`[data-ui-slider-input][data-thumb="single"]`),lowerThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="lower"]`),upperThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="upper"]`),singleThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="single"]`),value:e.querySelector(`[data-ui-slider-value]`),hiddenInputs:e.querySelector(`[data-ui-slider-hidden-inputs]`),ticks:Array.from(e.querySelectorAll(`[data-ui-slider-tick]`))}},h=(e,t=m())=>e===`upper`?t.upperInput:e===`lower`?t.lowerInput:t.singleInput,g=e=>e.dataset.thumb===`upper`?`upper`:e.dataset.thumb===`lower`?`lower`:`single`,_=()=>{let e=u(),t=d(),r=m(),{min:a,max:o}=w(e);i({el:c(),schema:x,key:`value`,value:e.range?`${t.lower},${t.upper}`:String(t.lower)}),H({input:r.singleInput,props:e,value:t.lower,min:a,max:o,label:e.label,valueText:e.valueText,nativeRequired:e.required}),H({input:r.lowerInput,props:e,value:t.lower,min:a,max:e.range?t.upper:o,label:e.lowerLabel,valueText:e.lowerValueText,nativeRequired:!1}),H({input:r.upperInput,props:e,value:t.upper,min:e.range?t.lower:a,max:o,label:e.upperLabel,valueText:e.upperValueText,nativeRequired:!1}),U(e,r,t),r.value&&(r.value.textContent=R(e,t)),p({el:c(),state:e}),p({el:r.root,state:e}),r.track&&p({el:r.track,state:{disabled:e.disabled,invalid:e.invalid}}),r.range&&p({el:r.range,state:{disabled:e.disabled,invalid:e.invalid}}),V(r.singleThumb,r.singleInput===document.activeElement,e.disabled,e.invalid),V(r.lowerThumb,r.lowerInput===document.activeElement,e.disabled,e.invalid),V(r.upperThumb,r.upperInput===document.activeElement,e.disabled,e.invalid),e.range&&r.hiddenInputs?n=f({container:r.hiddenInputs,currentKey:n,state:{name:e.name,values:[String(t.lower),String(t.upper)],required:e.required,marker:`data-ui-slider-hidden-input`}}):r.hiddenInputs&&(n=f({container:r.hiddenInputs,currentKey:n,state:{name:``,values:[],marker:`data-ui-slider-hidden-input`}}))},v=e=>e.thumb===`single`||e.thumb===`lower`||e.thumb===`upper`?e.thumb:null,y=(e,t,n)=>{let r=m(),i=n.type===`API_SET`&&u().range?[r.lowerInput,r.upperInput]:[h(v(n)??t.context.interaction.activeThumb,r)];a=!0;try{i.forEach(t=>t?.dispatchEvent(new Event(e,{bubbles:!0})))}finally{a=!1}},b=(e,t)=>{let n=m(),i=e.context.interaction.activeThumb;if(h(i,n)?.focus(),r=typeof t.pointerId==`number`?t.pointerId:null,r!==null)try{n.root.setPointerCapture(r)}catch{T.send({type:`POINTER_ENDED`,thumb:i})}},C=()=>{if(r!==null){try{m().root.releasePointerCapture(r)}catch{}r=null}},T=s({schema:x,hooks:S,createMachine:({props:e})=>F({props:e,context:{value:O(e),interaction:{activeThumb:null}},effects:{sync:_,beginDrag:({snapshot:e,event:t})=>b(e,t),endDrag:C,emitInput:({snapshot:e,event:t})=>y(`input`,e,t),emitChange:({snapshot:e,event:t})=>y(`change`,e,t)}})}),E=(e,t)=>{a||!(e.target instanceof HTMLInputElement)||T.send({type:t?`INPUT_COMMITTED`:`INPUT_CHANGED`,thumb:g(e.target),value:e.target.value})},D=e=>{if(!(e.target instanceof HTMLInputElement)||![`PageUp`,`PageDown`].includes(e.key)&&!(e.shiftKey&&e.key.startsWith(`Arrow`)))return;e.preventDefault();let t=[`PageDown`,`ArrowDown`,`ArrowLeft`].includes(e.key)?-1:1,n=g(e.target);T.send({type:`KEY_STEPPED`,thumb:n,value:I(e.target.value,w(u()).min)+t*w(u()).bigStep})},k=e=>{if(u().disabled)return;let t=z(m().root,e,u()),n=u().range?B(t,d()):`single`;T.send({type:`POINTER_STARTED`,value:t,thumb:n,pointerId:e.pointerId}),e.preventDefault()},A=e=>{r!==e.pointerId||!T.hasTag(`dragging`)||T.send({type:`POINTER_MOVED`,value:z(m().root,e,u()),thumb:l().context.interaction.activeThumb})},j=e=>{r!==e.pointerId||!T.hasTag(`dragging`)||T.send({type:`POINTER_ENDED`,thumb:l().context.interaction.activeThumb})},M;return M={...T,get values(){let e=this.snapshot.current;return e?e.props.range?[e.context.value.lower,e.context.value.upper]:[e.context.value.lower]:[]},setValue(e){T.send({type:`API_SET`,values:Array.isArray(e)?e:[e]})},init(){e=this.$el,T.connect(this.$el,this.snapshot);let n=m();[n.singleInput,n.lowerInput,n.upperInput].forEach(e=>{e&&(o({target:e,event:`input`,handler:e=>E(e,!1),cleanup:t}),o({target:e,event:`change`,handler:e=>E(e,!0),cleanup:t}),o({target:e,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&D(e)},cleanup:t}),o({target:e,event:`focus`,handler:_,cleanup:t}),o({target:e,event:`blur`,handler:_,cleanup:t}))}),o({target:n.root,event:`pointerdown`,handler:e=>{e instanceof PointerEvent&&k(e)},cleanup:t}),o({target:n.root,event:`pointermove`,handler:e=>{e instanceof PointerEvent&&A(e)},cleanup:t}),o({target:n.root,event:`pointerup`,handler:e=>{e instanceof PointerEvent&&j(e)},cleanup:t}),o({target:n.root,event:`pointercancel`,handler:e=>{e instanceof PointerEvent&&j(e)},cleanup:t}),_()},destroy(){C(),t.splice(0).forEach(e=>e()),T.disconnect(),e=null}},M},G=e=>{e.data(`UiSlider`,()=>W())},K=new WeakSet,q=e=>{K.has(e)||(K.add(e),G(e))};export{W as n,q as t};
2
- //# sourceMappingURL=entry.generated-DoOgk6l4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.generated-DoOgk6l4.js","names":[],"sources":["../../../../../../../../client/src/components/slider/contract.ts","../../../../../../../../client/src/components/slider/machine.ts","../../../../../../../../client/src/components/slider/index.ts","../../../../../../../../client/src/components/slider/entry.generated.ts"],"sourcesContent":["import {bool, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {CONTROL_SIZES, DEFAULT_VARIANTS, ORIENTATIONS, type ControlSize, type DefaultVariant, type Orientation} from '../common';\n\nconst SLIDER_SIZES = CONTROL_SIZES;\nconst SLIDER_VARIANTS = DEFAULT_VARIANTS;\nconst SLIDER_ORIENTATIONS = ORIENTATIONS;\nconst SLIDER_FORMATS = ['number', 'percent'] as const;\n\ntype SliderSize = ControlSize;\ntype SliderVariant = DefaultVariant;\ntype SliderOrientation = Orientation;\ntype SliderFormat = typeof SLIDER_FORMATS[number];\n\nconst sliderSchema = {\n name: string,\n value: string,\n defaultValue: string.default('0'),\n min: number.default(0),\n max: number.default(100),\n step: number.default(1),\n bigStep: number.default(10),\n minStepsBetween: number.default(0),\n range: bool,\n orientation: oneOf(SLIDER_ORIENTATIONS, 'horizontal' as SliderOrientation),\n size: oneOf(SLIDER_SIZES, 'md' as SliderSize),\n variant: oneOf(SLIDER_VARIANTS, 'default' as SliderVariant),\n disabled: bool,\n required: bool,\n invalid: bool,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n valueText: string,\n lowerLabel: string.default('Minimum'),\n upperLabel: string.default('Maximum'),\n lowerValueText: string,\n upperValueText: string,\n showValue: bool,\n format: oneOf(SLIDER_FORMATS, 'number' as SliderFormat),\n fieldClass: string,\n rootClass: string,\n trackClass: string,\n rangeClass: string,\n thumbClass: string,\n tickClass: string,\n class: string,\n};\n\nconst sliderTickSchema = {\n value: number.default(0),\n label: string,\n class: string,\n};\n\ntype SliderProps = SchemaToProps<typeof sliderSchema>;\ntype SliderTickProps = SchemaToProps<typeof sliderTickSchema>;\n\nexport {\n SLIDER_FORMATS,\n SLIDER_ORIENTATIONS,\n SLIDER_SIZES,\n SLIDER_VARIANTS,\n sliderSchema,\n sliderTickSchema,\n};\nexport type {\n SliderFormat,\n SliderOrientation,\n SliderProps,\n SliderSize,\n SliderTickProps,\n SliderVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {clamp} from '../../utils';\nimport type {SliderProps} from './contract';\n\ntype SliderThumbName = 'single' | 'lower' | 'upper';\ntype SliderValues = {lower: number; upper: number};\ntype SliderContext = {\n value: SliderValues;\n interaction: {activeThumb: SliderThumbName | null};\n};\n\ntype SliderMachineEffects = {\n sync(scope: MachineScope<SliderContext, SliderProps>): void;\n beginDrag(scope: MachineScope<SliderContext, SliderProps>): void;\n endDrag(scope: MachineScope<SliderContext, SliderProps>): void;\n emitInput(scope: MachineScope<SliderContext, SliderProps>): void;\n emitChange(scope: MachineScope<SliderContext, SliderProps>): void;\n};\n\ntype CreateSliderMachineOptions = {\n props: SliderProps;\n context: SliderContext;\n effects: SliderMachineEffects;\n};\n\nconst sliderHooks = [] as const;\n\nconst roundToStep = (value: number, min: number, step: number): number => {\n if (!Number.isFinite(step) || step <= 0) return value;\n const stepped = Math.round((value - min) / step) * step + min;\n const decimals = Math.max(0, `${step}`.split('.')[1]?.length ?? 0);\n return Number(stepped.toFixed(decimals));\n};\n\nconst sliderBounds = (props: SliderProps): {min: number; max: number; step: number; bigStep: number} => {\n const min = Math.min(props.min, props.max);\n const max = Math.max(props.min, props.max);\n const step = props.step > 0 ? props.step : 1;\n const bigStep = props.bigStep > 0 ? props.bigStep : step * 10;\n return {min, max, step, bigStep};\n};\n\nconst parseNumber = (value: unknown, fallback: number): number => {\n const parsed = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n};\n\nconst normalizeSliderValues = (\n props: SliderProps,\n values: SliderValues,\n changedThumb?: SliderThumbName | null,\n): SliderValues => {\n const {min, max, step} = sliderBounds(props);\n let lower = roundToStep(clamp(parseNumber(values.lower, min), min, max), min, step);\n let upper = roundToStep(clamp(parseNumber(values.upper, max), min, max), min, step);\n if (!props.range) return {lower, upper: lower};\n if (lower > upper) [lower, upper] = [upper, lower];\n\n const minDistance = Math.max(0, props.minStepsBetween) * step;\n if (upper - lower < minDistance) {\n if (changedThumb === 'lower') lower = clamp(roundToStep(upper - minDistance, min, step), min, max);\n else upper = clamp(roundToStep(lower + minDistance, min, step), min, max);\n }\n return {lower, upper};\n};\n\nconst sliderValuesFromString = (props: SliderProps, value: string): SliderValues => {\n const {min, max} = sliderBounds(props);\n const parts = value.split(',').map((part) => part.trim());\n return normalizeSliderValues(props, {\n lower: parseNumber(parts[0], min),\n upper: props.range ? parseNumber(parts[1], max) : parseNumber(parts[0], min),\n });\n};\n\nconst initialSliderValues = (props: SliderProps): SliderValues => (\n sliderValuesFromString(props, props.value || props.defaultValue || String(sliderBounds(props).min))\n);\n\nconst eventThumb = (event: MachineEventObject): SliderThumbName | null => (\n event.thumb === 'single' || event.thumb === 'lower' || event.thumb === 'upper' ? event.thumb : null\n);\nconst eventValues = (scope: MachineScope<SliderContext, SliderProps>): SliderValues => {\n if (Array.isArray(scope.event.values)) {\n return normalizeSliderValues(scope.props, {\n lower: parseNumber(scope.event.values[0], scope.context.value.lower),\n upper: parseNumber(scope.event.values[1], scope.context.value.upper),\n }, eventThumb(scope.event));\n }\n const thumb = eventThumb(scope.event) ?? scope.context.interaction.activeThumb ?? 'single';\n const value = parseNumber(scope.event.value, thumb === 'upper' ? scope.context.value.upper : scope.context.value.lower);\n return normalizeSliderValues(scope.props, {\n lower: thumb === 'upper' ? scope.context.value.lower : value,\n upper: thumb === 'upper' ? value : scope.context.value.upper,\n }, thumb);\n};\nconst nextProps = (scope: MachineScope<SliderContext, SliderProps>): SliderProps => {\n const next = propsChangedEvent<SliderProps>(scope.event)?.props;\n return next ? {...next, range: scope.props.range, defaultValue: scope.props.defaultValue} : scope.props;\n};\nconst propsValues = (scope: MachineScope<SliderContext, SliderProps>): SliderValues => {\n const props = nextProps(scope);\n return propsChanged<SliderProps>(scope.event, 'value')\n ? sliderValuesFromString(props, props.value || props.defaultValue || String(sliderBounds(props).min))\n : normalizeSliderValues(props, scope.context.value);\n};\nconst thumbIs = (thumb: SliderThumbName) => ({event}: MachineScope<SliderContext, SliderProps>): boolean => event.thumb === thumb;\nconst becomesDisabled = (scope: MachineScope<SliderContext, SliderProps>): boolean => nextProps(scope).disabled;\n\nconst createSliderMachine = ({props, context, effects}: CreateSliderMachineOptions): Machine<SliderContext, SliderProps> => createMachine<SliderContext, SliderProps>({\n initial: 'idle',\n on: {\n INPUT_CHANGED: {reduce: 'setEventValue', effects: 'sync'},\n INPUT_COMMITTED: {reduce: 'setEventValue', effects: 'sync'},\n KEY_STEPPED: {reduce: 'setEventValue', effects: ['sync', 'emitInput', 'emitChange']},\n API_SET: {reduce: 'setEventValue', effects: ['sync', 'emitInput', 'emitChange']},\n },\n states: {\n idle: {\n tags: ['idle'],\n on: {\n POINTER_STARTED: [\n {target: 'dragging.single', guard: thumbIs('single'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n {target: 'dragging.lower', guard: thumbIs('lower'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n {target: 'dragging.upper', guard: thumbIs('upper'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n ],\n PROPS_CHANGED: {reduce: 'reconcileProps', effects: 'sync'},\n },\n },\n dragging: {\n initial: 'single',\n tags: ['dragging'],\n on: {\n POINTER_MOVED: {reduce: 'setEventValue', effects: ['sync', 'emitInput']},\n POINTER_ENDED: {target: 'idle', reduce: 'endDrag', effects: ['endDrag', 'sync', 'emitChange']},\n PROPS_CHANGED: [\n {target: 'idle', guard: becomesDisabled, reduce: 'reconcileProps', effects: ['endDrag', 'sync']},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {\n single: {tags: ['dragging-single']},\n lower: {tags: ['dragging-lower']},\n upper: {tags: ['dragging-upper']},\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n setEventValue: (scope) => ({context: {...scope.context, value: eventValues(scope)}}),\n startDrag: (scope) => ({\n context: {\n value: eventValues(scope),\n interaction: {activeThumb: eventThumb(scope.event)},\n },\n }),\n endDrag: (scope) => ({context: {...scope.context, interaction: {activeThumb: null}}}),\n reconcileProps: (scope) => ({\n props: nextProps(scope),\n context: {...scope.context, value: propsValues(scope)},\n }),\n },\n effects,\n});\n\nexport {\n createSliderMachine,\n initialSliderValues,\n normalizeSliderValues,\n sliderBounds,\n sliderHooks,\n};\nexport type {\n CreateSliderMachineOptions,\n SliderContext,\n SliderMachineEffects,\n SliderThumbName,\n SliderValues,\n};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n type MachineSnapshot,\n reflectSchemaProp,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl, syncRepeatedHiddenInputs} from '@client/runtime/form-control';\nimport {addListener, clamp, setPresence, type CleanupStack} from '@client/utils';\nimport {sliderSchema, type SliderProps} from './contract';\nimport {\n createSliderMachine,\n initialSliderValues,\n sliderBounds,\n type SliderContext,\n sliderHooks,\n type SliderThumbName,\n type SliderValues,\n} from './machine';\n\ntype SliderElements = {\n root: HTMLElement;\n track: HTMLElement | null;\n range: HTMLElement | null;\n lowerInput: HTMLInputElement | null;\n upperInput: HTMLInputElement | null;\n singleInput: HTMLInputElement | null;\n lowerThumb: HTMLElement | null;\n upperThumb: HTMLElement | null;\n singleThumb: HTMLElement | null;\n value: HTMLElement | null;\n hiddenInputs: HTMLElement | null;\n ticks: HTMLElement[];\n};\n\n/**\n * Public Alpine API for `ui.slider`.\n *\n * @public\n */\ninterface UiSliderApi {\n /** Current normalized values: one item for single mode, lower and upper for range mode. */\n readonly values: readonly number[];\n /** Set and commit a normalized single value or lower/upper range. */\n setValue(value: number | readonly [number, number]): void;\n}\n\ntype SliderData = AlpineMachine<SliderContext, SliderProps, typeof sliderHooks> & UiSliderApi & {\n init(): void;\n destroy(): void;\n};\n\nconst parseValue = (value: string, fallback: number): number => {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n};\n\nconst percentFor = (value: number, min: number, max: number): number => {\n if (max <= min) return 0;\n return clamp(((value - min) / (max - min)) * 100, 0, 100);\n};\n\nconst formatValue = (props: SliderProps, values: SliderValues): string => {\n const formatOne = (value: number): string => props.format === 'percent' ? `${Math.round(value)}%` : String(value);\n return props.range ? `${formatOne(values.lower)} - ${formatOne(values.upper)}` : formatOne(values.lower);\n};\n\nconst valueFromPointer = (root: HTMLElement, event: PointerEvent, props: SliderProps): number => {\n const {min, max, step} = sliderBounds(props);\n const rect = root.getBoundingClientRect();\n const ratio = props.orientation === 'vertical'\n ? 1 - ((event.clientY - rect.top) / Math.max(rect.height, 1))\n : (event.clientX - rect.left) / Math.max(rect.width, 1);\n const value = clamp(min + clamp(ratio, 0, 1) * (max - min), min, max);\n const stepped = Math.round((value - min) / step) * step + min;\n const decimals = Math.max(0, `${step}`.split('.')[1]?.length ?? 0);\n return Number(stepped.toFixed(decimals));\n};\n\nconst nearestThumb = (value: number, values: SliderValues): SliderThumbName => (\n Math.abs(value - values.lower) <= Math.abs(value - values.upper) ? 'lower' : 'upper'\n);\n\nconst setThumbPresence = (thumb: HTMLElement | null, present: boolean, disabled: boolean, invalid: boolean): void => {\n if (!thumb) return;\n setPresence({el: thumb, attr: 'data-focus', present});\n setPresence({el: thumb, attr: 'data-disabled', present: disabled});\n setPresence({el: thumb, attr: 'data-invalid', present: invalid});\n};\n\nconst syncInput = ({\n input,\n props,\n value,\n min,\n max,\n label,\n valueText,\n nativeRequired,\n}: {\n input: HTMLInputElement | null;\n props: SliderProps;\n value: number;\n min: number;\n max: number;\n label: string;\n valueText: string;\n nativeRequired: boolean;\n}): void => {\n if (!input) return;\n input.min = String(min);\n input.max = String(max);\n input.step = String(props.step > 0 ? props.step : 1);\n syncNativeControl({input, state: {\n name: props.range ? '' : props.name,\n value: String(value),\n disabled: props.disabled,\n required: props.required,\n nativeRequired,\n invalid: props.invalid,\n }});\n input.setAttribute('aria-valuemin', String(min));\n input.setAttribute('aria-valuemax', String(max));\n input.setAttribute('aria-valuenow', String(value));\n if (valueText) input.setAttribute('aria-valuetext', valueText);\n else input.removeAttribute('aria-valuetext');\n if (label) input.setAttribute('aria-label', label);\n if (props.orientation === 'vertical') input.setAttribute('aria-orientation', 'vertical');\n else input.removeAttribute('aria-orientation');\n};\n\nconst writeGeometry = (props: SliderProps, elements: SliderElements, values: SliderValues): void => {\n const {min, max} = sliderBounds(props);\n const lowerPercent = percentFor(values.lower, min, max);\n const upperPercent = percentFor(values.upper, min, max);\n const start = props.range ? lowerPercent : 0;\n const end = props.range ? upperPercent : lowerPercent;\n\n elements.root.style.setProperty('--ui-slider-lower-percent', `${lowerPercent}%`);\n elements.root.style.setProperty('--ui-slider-upper-percent', `${upperPercent}%`);\n if (props.orientation === 'vertical') {\n if (elements.range) {\n elements.range.style.bottom = `${start}%`;\n elements.range.style.height = `${Math.max(0, end - start)}%`;\n elements.range.style.left = '';\n elements.range.style.width = '';\n }\n if (elements.singleThumb) elements.singleThumb.style.bottom = `${lowerPercent}%`;\n if (elements.lowerThumb) elements.lowerThumb.style.bottom = `${lowerPercent}%`;\n if (elements.upperThumb) elements.upperThumb.style.bottom = `${upperPercent}%`;\n } else {\n if (elements.range) {\n elements.range.style.left = `${start}%`;\n elements.range.style.width = `${Math.max(0, end - start)}%`;\n elements.range.style.bottom = '';\n elements.range.style.height = '';\n }\n if (elements.singleThumb) elements.singleThumb.style.left = `${lowerPercent}%`;\n if (elements.lowerThumb) elements.lowerThumb.style.left = `${lowerPercent}%`;\n if (elements.upperThumb) elements.upperThumb.style.left = `${upperPercent}%`;\n }\n\n elements.ticks.forEach((tick) => {\n const tickPercent = percentFor(parseValue(tick.dataset.value ?? '', min), min, max);\n if (props.orientation === 'vertical') {\n tick.style.bottom = `${tickPercent}%`;\n tick.style.left = '';\n } else {\n tick.style.left = `${tickPercent}%`;\n tick.style.bottom = '';\n }\n });\n};\n\nconst UiSlider = (): TrellisAlpineComponent<SliderData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let listeners: CleanupStack = [];\n let hiddenInputsKey = '';\n let pointerId: number | null = null;\n let dispatchingNative = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Slider has not been initialized.');\n return rootEl;\n };\n const currentSnapshot = (): MachineSnapshot<SliderContext, SliderProps> => bridge.getCommittedSnapshot();\n const currentProps = (): Readonly<SliderProps> => currentSnapshot().props;\n const currentValues = (): Readonly<SliderValues> => currentSnapshot().context.value;\n const elements = (): SliderElements => {\n const slider = root();\n const interactiveRoot = slider.querySelector<HTMLElement>('[data-ui-slider-root]');\n if (!interactiveRoot) throw new Error('Slider requires a root element.');\n return {\n root: interactiveRoot,\n track: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-track]'),\n range: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-range]'),\n lowerInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"lower\"]'),\n upperInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"upper\"]'),\n singleInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"single\"]'),\n lowerThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"lower\"]'),\n upperThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"upper\"]'),\n singleThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"single\"]'),\n value: slider.querySelector<HTMLElement>('[data-ui-slider-value]'),\n hiddenInputs: slider.querySelector<HTMLElement>('[data-ui-slider-hidden-inputs]'),\n ticks: Array.from(slider.querySelectorAll<HTMLElement>('[data-ui-slider-tick]')),\n };\n };\n const inputFor = (thumb: SliderThumbName | null, parts = elements()): HTMLInputElement | null => {\n if (thumb === 'upper') return parts.upperInput;\n if (thumb === 'lower') return parts.lowerInput;\n return parts.singleInput;\n };\n const thumbFromInput = (input: HTMLInputElement): SliderThumbName => {\n if (input.dataset.thumb === 'upper') return 'upper';\n if (input.dataset.thumb === 'lower') return 'lower';\n return 'single';\n };\n\n const syncDom = (): void => {\n const props = currentProps();\n const values = currentValues();\n const parts = elements();\n const {min, max} = sliderBounds(props);\n reflectSchemaProp({\n el: root(),\n schema: sliderSchema,\n key: 'value',\n value: props.range ? `${values.lower},${values.upper}` : String(values.lower),\n });\n syncInput({\n input: parts.singleInput,\n props,\n value: values.lower,\n min,\n max,\n label: props.label,\n valueText: props.valueText,\n nativeRequired: props.required,\n });\n syncInput({\n input: parts.lowerInput,\n props,\n value: values.lower,\n min,\n max: props.range ? values.upper : max,\n label: props.lowerLabel,\n valueText: props.lowerValueText,\n nativeRequired: false,\n });\n syncInput({\n input: parts.upperInput,\n props,\n value: values.upper,\n min: props.range ? values.lower : min,\n max,\n label: props.upperLabel,\n valueText: props.upperValueText,\n nativeRequired: false,\n });\n writeGeometry(props, parts, values as SliderValues);\n if (parts.value) parts.value.textContent = formatValue(props, values as SliderValues);\n syncControlPresence({el: root(), state: props});\n syncControlPresence({el: parts.root, state: props});\n if (parts.track) syncControlPresence({el: parts.track, state: {disabled: props.disabled, invalid: props.invalid}});\n if (parts.range) syncControlPresence({el: parts.range, state: {disabled: props.disabled, invalid: props.invalid}});\n setThumbPresence(parts.singleThumb, parts.singleInput === document.activeElement, props.disabled, props.invalid);\n setThumbPresence(parts.lowerThumb, parts.lowerInput === document.activeElement, props.disabled, props.invalid);\n setThumbPresence(parts.upperThumb, parts.upperInput === document.activeElement, props.disabled, props.invalid);\n if (props.range && parts.hiddenInputs) {\n hiddenInputsKey = syncRepeatedHiddenInputs({container: parts.hiddenInputs, currentKey: hiddenInputsKey, state: {\n name: props.name,\n values: [String(values.lower), String(values.upper)],\n required: props.required,\n marker: 'data-ui-slider-hidden-input',\n }});\n } else if (parts.hiddenInputs) {\n hiddenInputsKey = syncRepeatedHiddenInputs({container: parts.hiddenInputs, currentKey: hiddenInputsKey, state: {\n name: '',\n values: [],\n marker: 'data-ui-slider-hidden-input',\n }});\n }\n };\n\n const eventThumb = (event: {thumb?: unknown}): SliderThumbName | null => (\n event.thumb === 'single' || event.thumb === 'lower' || event.thumb === 'upper' ? event.thumb : null\n );\n const emitNative = (name: 'input' | 'change', snapshot: MachineSnapshot<SliderContext, SliderProps>, event: {thumb?: unknown; type: string}): void => {\n const parts = elements();\n const inputs = event.type === 'API_SET' && currentProps().range\n ? [parts.lowerInput, parts.upperInput]\n : [inputFor(eventThumb(event) ?? snapshot.context.interaction.activeThumb, parts)];\n dispatchingNative = true;\n try {\n inputs.forEach((input) => input?.dispatchEvent(new Event(name, {bubbles: true})));\n } finally {\n dispatchingNative = false;\n }\n };\n const beginDrag = (snapshot: MachineSnapshot<SliderContext, SliderProps>, event: {type: string; [key: string]: unknown}): void => {\n const parts = elements();\n const thumb = snapshot.context.interaction.activeThumb;\n inputFor(thumb, parts)?.focus();\n pointerId = typeof event.pointerId === 'number' ? event.pointerId : null;\n if (pointerId === null) return;\n try {\n parts.root.setPointerCapture(pointerId);\n } catch {\n bridge.send({type: 'POINTER_ENDED', thumb});\n }\n };\n const endDrag = (): void => {\n if (pointerId === null) return;\n try {\n elements().root.releasePointerCapture(pointerId);\n } catch {\n // Capture cleanup is best-effort after interruption.\n }\n pointerId = null;\n };\n\n const bridge = createAlpineMachine({\n schema: sliderSchema,\n hooks: sliderHooks,\n createMachine: ({props}) => createSliderMachine({\n props,\n context: {value: initialSliderValues(props), interaction: {activeThumb: null}},\n effects: {\n sync: syncDom,\n beginDrag: ({snapshot, event}) => beginDrag(snapshot, event),\n endDrag,\n emitInput: ({snapshot, event}) => emitNative('input', snapshot, event),\n emitChange: ({snapshot, event}) => emitNative('change', snapshot, event),\n },\n }),\n });\n\n const handleInput = (event: Event, committed: boolean): void => {\n if (dispatchingNative || !(event.target instanceof HTMLInputElement)) return;\n bridge.send({\n type: committed ? 'INPUT_COMMITTED' : 'INPUT_CHANGED',\n thumb: thumbFromInput(event.target),\n value: event.target.value,\n });\n };\n const handleKeydown = (event: KeyboardEvent): void => {\n if (!(event.target instanceof HTMLInputElement)) return;\n if (!['PageUp', 'PageDown'].includes(event.key) && !(event.shiftKey && event.key.startsWith('Arrow'))) return;\n event.preventDefault();\n const direction = ['PageDown', 'ArrowDown', 'ArrowLeft'].includes(event.key) ? -1 : 1;\n const thumb = thumbFromInput(event.target);\n bridge.send({\n type: 'KEY_STEPPED',\n thumb,\n value: parseValue(event.target.value, sliderBounds(currentProps()).min) + direction * sliderBounds(currentProps()).bigStep,\n });\n };\n const handlePointerDown = (event: PointerEvent): void => {\n if (currentProps().disabled) return;\n const value = valueFromPointer(elements().root, event, currentProps());\n const thumb = currentProps().range ? nearestThumb(value, currentValues() as SliderValues) : 'single';\n bridge.send({type: 'POINTER_STARTED', value, thumb, pointerId: event.pointerId});\n event.preventDefault();\n };\n const handlePointerMove = (event: PointerEvent): void => {\n if (pointerId !== event.pointerId || !bridge.hasTag('dragging')) return;\n bridge.send({\n type: 'POINTER_MOVED',\n value: valueFromPointer(elements().root, event, currentProps()),\n thumb: currentSnapshot().context.interaction.activeThumb,\n });\n };\n const handlePointerUp = (event: PointerEvent): void => {\n if (pointerId !== event.pointerId || !bridge.hasTag('dragging')) return;\n bridge.send({type: 'POINTER_ENDED', thumb: currentSnapshot().context.interaction.activeThumb});\n };\n\n let component!: TrellisAlpineComponent<SliderData>;\n component = {\n ...bridge,\n get values(): readonly number[] {\n const snapshot = this.snapshot.current;\n if (!snapshot) return [];\n return snapshot.props.range\n ? [snapshot.context.value.lower, snapshot.context.value.upper]\n : [snapshot.context.value.lower];\n },\n setValue(value: number | readonly [number, number]): void {\n bridge.send({type: 'API_SET', values: Array.isArray(value) ? value : [value]});\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n const parts = elements();\n [parts.singleInput, parts.lowerInput, parts.upperInput].forEach((input) => {\n if (!input) return;\n addListener({target: input, event: 'input', handler: (event) => handleInput(event, false), cleanup: listeners});\n addListener({target: input, event: 'change', handler: (event) => handleInput(event, true), cleanup: listeners});\n addListener({target: input, event: 'keydown', handler: (event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n }, cleanup: listeners});\n addListener({target: input, event: 'focus', handler: syncDom, cleanup: listeners});\n addListener({target: input, event: 'blur', handler: syncDom, cleanup: listeners});\n });\n addListener({target: parts.root, event: 'pointerdown', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerDown(event);\n }, cleanup: listeners});\n addListener({target: parts.root, event: 'pointermove', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerMove(event);\n }, cleanup: listeners});\n addListener({target: parts.root, event: 'pointerup', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerUp(event);\n }, cleanup: listeners});\n addListener({target: parts.root, event: 'pointercancel', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerUp(event);\n }, cleanup: listeners});\n syncDom();\n },\n destroy(): void {\n endDrag();\n listeners.splice(0).forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n },\n };\n return component;\n};\n\nconst registerSlider = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.data('UiSlider', () => UiSlider());\n};\n\nexport {registerSlider, UiSlider};\nexport type {SliderData, SliderElements, SliderThumbName, SliderValues, UiSliderApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerSlider as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSlider = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerSlider};\nexport default registerSlider;\nexport * from './index';\n"],"mappings":"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"}