@vireo-ai/trellis-ui 0.1.25 → 0.1.29

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 (195) hide show
  1. package/package.json +6 -1
  2. package/packages/client/src/components/checkbox/styles.css +7 -0
  3. package/packages/client/src/components/radio/styles.css +2 -8
  4. package/packages/client/src/styles/components.css +1 -0
  5. package/packages/client/src/styles/generated/theme-fonts.css +1 -1
  6. package/packages/client/src/styles/generated/theme-palette.css +7 -4
  7. package/packages/client/src/styles/generated/theme-runtime.css +1791 -452
  8. package/packages/client/src/styles/generated-sources.css +1 -1
  9. package/packages/client/src/styles/theme.css +161 -43
  10. package/packages/client/types/assets/full-runtime.generated.d.ts +1 -1
  11. package/packages/client/types/capabilities/motion.entry.generated.d.ts +3 -0
  12. package/packages/client/types/capabilities/resizable.entry.generated.d.ts +3 -0
  13. package/packages/client/types/capabilities/sortable.entry.generated.d.ts +3 -0
  14. package/packages/client/types/component-api.d.ts +10 -10
  15. package/packages/client/types/components/accordion/index.d.ts +7 -4
  16. package/packages/client/types/components/accordion/machine.d.ts +51 -57
  17. package/packages/client/types/components/card/contract.d.ts +9 -3
  18. package/packages/client/types/components/checkbox/contract.d.ts +20 -10
  19. package/packages/client/types/components/common.d.ts +6 -1
  20. package/packages/client/types/components/date-picker/index.d.ts +7 -4
  21. package/packages/client/types/components/date-picker/machine.d.ts +46 -362
  22. package/packages/client/types/components/dropdown/index.d.ts +7 -4
  23. package/packages/client/types/components/dropdown/machine.d.ts +5 -67
  24. package/packages/client/types/components/field/index.d.ts +1 -2
  25. package/packages/client/types/components/file-upload/index.d.ts +7 -4
  26. package/packages/client/types/components/file-upload/machine.d.ts +17 -39
  27. package/packages/client/types/components/input/index.d.ts +1 -2
  28. package/packages/client/types/components/modal/index.d.ts +6 -2
  29. package/packages/client/types/components/modal/machine.d.ts +5 -103
  30. package/packages/client/types/components/panels/index.d.ts +6 -2
  31. package/packages/client/types/components/panels/machine.d.ts +59 -81
  32. package/packages/client/types/components/radio/contract.d.ts +10 -2
  33. package/packages/client/types/components/runtime.d.ts +10 -10
  34. package/packages/client/types/components/scroll-area/index.d.ts +1 -2
  35. package/packages/client/types/components/select/index.d.ts +7 -4
  36. package/packages/client/types/components/select/machine.d.ts +37 -331
  37. package/packages/client/types/components/sidebar/index.d.ts +6 -2
  38. package/packages/client/types/components/sidebar/machine.d.ts +11 -47
  39. package/packages/client/types/components/slider/index.d.ts +1 -2
  40. package/packages/client/types/components/switch/index.d.ts +1 -2
  41. package/packages/client/types/components/tabs/contract.d.ts +6 -2
  42. package/packages/client/types/components/tabs/index.d.ts +7 -4
  43. package/packages/client/types/components/tabs/machine.d.ts +11 -29
  44. package/packages/client/types/components/toast/index.d.ts +6 -2
  45. package/packages/client/types/components/toast/machine.d.ts +7 -66
  46. package/packages/client/types/core.d.ts +2 -2
  47. package/packages/client/types/runtime/alpine-data.d.ts +6 -0
  48. package/packages/client/types/runtime/alpine-machine.d.ts +3 -8
  49. package/packages/client/types/runtime/engine/request.d.ts +1 -0
  50. package/packages/client/types/runtime/index.d.ts +7 -3
  51. package/packages/client/types/runtime/transition-coordinator.d.ts +41 -7
  52. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +2226 -512
  53. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  54. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +488 -372
  55. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +2 -0
  56. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js.map +1 -0
  57. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +2 -0
  58. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js.map +1 -0
  59. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +2 -0
  60. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js.map +1 -0
  61. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-DZ17j0jc.js +2 -0
  62. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-DZ17j0jc.js.map +1 -0
  63. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-D0Kqjm-1.js +2 -0
  64. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-D0Kqjm-1.js.map +1 -0
  65. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-Cog7tKk0.js +2 -0
  66. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-Cog7tKk0.js.map +1 -0
  67. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-C6LKIbpv.js +2 -0
  68. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-C6LKIbpv.js.map +1 -0
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-k107A8WE.js +3 -0
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-k107A8WE.js.map +1 -0
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{common-DAxHCzB-.js → common-BOd_thC-.js} +2 -2
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{common-DAxHCzB-.js.map → common-BOd_thC-.js.map} +1 -1
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-vW9Cglw8.js +2 -0
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DjoX4J-6.js.map → core-vW9Cglw8.js.map} +1 -1
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-BV6kB47L.js +2 -0
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-BV6kB47L.js.map +1 -0
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bbm6qhVl.js +2 -0
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bbm6qhVl.js.map +1 -0
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BgnZZd0A.js +2 -0
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BgnZZd0A.js.map +1 -0
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BhPEF6oz.js +2 -0
  82. 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
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bhvs_TUM.js +2 -0
  84. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bhvs_TUM.js.map +1 -0
  85. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CGgRCeB5.js +2 -0
  86. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CGgRCeB5.js.map +1 -0
  87. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CgO0b8V6.js +2 -0
  88. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CgO0b8V6.js.map +1 -0
  89. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cvgc61x9.js +2 -0
  90. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cvgc61x9.js.map +1 -0
  91. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DFITIl56.js +2 -0
  92. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DFITIl56.js.map +1 -0
  93. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DMK37KS0.js +2 -0
  94. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DMK37KS0.js.map +1 -0
  95. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DMre0DbH.js +2 -0
  96. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DMre0DbH.js.map +1 -0
  97. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DOV8BDMY.js +2 -0
  98. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DOV8BDMY.js.map +1 -0
  99. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DT70Lo44.js +2 -0
  100. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DT70Lo44.js.map +1 -0
  101. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DVPnOfPb.js +2 -0
  102. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DVPnOfPb.js.map +1 -0
  103. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DiG5fS1F.js +2 -0
  104. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DiG5fS1F.js.map +1 -0
  105. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DnSxEcns.js +2 -0
  106. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DnSxEcns.js.map +1 -0
  107. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-JnbQA47P.js +2 -0
  108. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-JnbQA47P.js.map +1 -0
  109. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-byAFfb_v.js +2 -0
  110. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-byAFfb_v.js.map +1 -0
  111. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dTc38DPe.js +2 -0
  112. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dTc38DPe.js.map +1 -0
  113. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js +2 -0
  114. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js.map +1 -0
  115. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BRaHJwNf.js +3 -0
  116. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BRaHJwNf.js.map +1 -0
  117. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-DS2ew4dT.js +2 -0
  118. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{semantic-observer-9VxzbQBi.js.map → semantic-observer-DS2ew4dT.js.map} +1 -1
  119. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/stream-uyKKe0QF.js +4 -0
  120. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/stream-uyKKe0QF.js.map +1 -0
  121. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-H3t7UHMs.js +2 -0
  122. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-H3t7UHMs.js.map +1 -0
  123. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
  124. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -1
  125. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  126. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  127. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -1
  128. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -1
  129. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +2 -1
  130. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js.map +1 -0
  131. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
  132. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  133. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  134. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
  135. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -1
  136. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  137. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  138. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -1
  139. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
  140. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +1 -1
  141. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  142. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  143. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
  144. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  145. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
  146. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +232 -127
  147. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
  148. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
  149. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DjoX4J-6.js +0 -2
  150. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js +0 -2
  151. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js.map +0 -1
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js +0 -2
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js.map +0 -1
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js +0 -2
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js.map +0 -1
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js +0 -2
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js.map +0 -1
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js +0 -2
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js.map +0 -1
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js +0 -2
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js.map +0 -1
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js +0 -2
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js.map +0 -1
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js +0 -2
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js.map +0 -1
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js +0 -2
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js.map +0 -1
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js +0 -2
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js.map +0 -1
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De12QrT5.js +0 -3
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De12QrT5.js.map +0 -1
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js +0 -2
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js.map +0 -1
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dn6MRCe0.js +0 -2
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dn6MRCe0.js.map +0 -1
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js +0 -2
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js.map +0 -1
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js +0 -2
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js.map +0 -1
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js +0 -2
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js.map +0 -1
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js +0 -2
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js.map +0 -1
  184. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js +0 -2
  185. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js.map +0 -1
  186. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xcXw-cEl.js +0 -2
  187. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js +0 -2
  188. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js.map +0 -1
  189. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js +0 -3
  190. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js.map +0 -1
  191. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js +0 -2
  192. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js.map +0 -1
  193. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-9VxzbQBi.js +0 -2
  194. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js +0 -4
  195. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.generated-DOV8BDMY.js","names":[],"sources":["../../../../../../../../client/src/runtime/option-data.ts","../../../../../../../../client/src/components/badge/styles.ts","../../../../../../../../client/src/components/badge/contract.ts","../../../../../../../../client/src/components/select/contract.ts","../../../../../../../../client/src/components/select/machine.ts","../../../../../../../../client/src/components/select/presentation.ts","../../../../../../../../client/src/components/select/styles.ts","../../../../../../../../client/src/components/select/index.ts","../../../../../../../../client/src/components/select/entry.generated.ts"],"sourcesContent":["const normalizeOptionText = (value: string): string => value.trim().toLowerCase();\n\nconst splitControlValues = (value: string): string[] => value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n\nconst parseItemData = (raw: string | undefined): unknown => {\n if (!raw) return undefined;\n\n try {\n return JSON.parse(raw);\n } catch {\n return undefined;\n }\n};\n\nconst getPathValue = (item: unknown, path: string): unknown => {\n if (!path || item === null || item === undefined) return undefined;\n\n return path.split('.').reduce<unknown>((value, key) => {\n if (value === null || value === undefined || typeof value !== 'object') return undefined;\n return (value as Record<string, unknown>)[key];\n }, item);\n};\n\nexport {getPathValue, normalizeOptionText, parseItemData, splitControlValues};\n","import {defineStyles} from '../../runtime';\nimport {CONTROL_RADIUS_CLASSES} from '../common';\n\nconst BADGE_ROOT_BASE_CLASSES = [\n 'inline-flex min-w-0 shrink-0 select-none items-center justify-center gap-1 whitespace-nowrap font-badge outline-none',\n 'data-disabled:pointer-events-none',\n];\n\nconst BADGE_VARIANT_CLASSES = {\n soft: '',\n surface: '',\n outline: '',\n solid: '',\n} as const;\n\nconst BADGE_SIZE_CLASSES = {\n xs: 'min-h-control-xs px-badge-padding-xs text-badge-xs [font-weight:var(--font-weight-badge-xs)]',\n sm: 'min-h-control-sm px-badge-padding-sm text-badge-sm [font-weight:var(--font-weight-badge-sm)]',\n md: 'min-h-control-md px-badge-padding-md text-badge-md [font-weight:var(--font-weight-badge-md)]',\n lg: 'min-h-control-lg px-badge-padding-lg text-badge-lg [font-weight:var(--font-weight-badge-lg)]',\n xlg: 'min-h-control-xlg px-badge-padding-xlg text-badge-xlg [font-weight:var(--font-weight-badge-xlg)]',\n} as const;\n\nconst BADGE_ICON_SIZE_CLASSES = {\n xs: 'size-icon-xs',\n sm: 'size-icon-xs',\n md: 'size-icon-sm',\n lg: 'size-icon-sm',\n xlg: 'size-icon',\n} as const;\n\nconst badgeStyles = defineStyles({definition: {\n component: 'ui.badge',\n parts: {\n root: {\n base: BADGE_ROOT_BASE_CLASSES,\n variants: {\n variant: BADGE_VARIANT_CLASSES,\n color: {\n neutral: '',\n accent: '',\n success: '',\n warning: '',\n danger: '',\n },\n size: BADGE_SIZE_CLASSES,\n radius: CONTROL_RADIUS_CLASSES,\n insetLeft: {\n true: '',\n false: '',\n },\n insetRight: {\n true: '',\n false: '',\n },\n insetTop: {\n true: '-mt-1',\n false: '',\n },\n insetBottom: {\n true: '-mb-1',\n false: '',\n },\n },\n compounds: [\n {when: {insetLeft: true, size: 'xs'}, class: '-ml-1.5'},\n {when: {insetLeft: true, size: 'sm'}, class: '-ml-2'},\n {when: {insetLeft: true, size: 'md'}, class: '-ml-2.5'},\n {when: {insetRight: true, size: 'xs'}, class: '-mr-1.5'},\n {when: {insetRight: true, size: 'sm'}, class: '-mr-2'},\n {when: {insetRight: true, size: 'md'}, class: '-mr-2.5'},\n ],\n defaults: {\n variant: 'soft',\n color: 'neutral',\n size: 'sm',\n radius: 'sm',\n insetLeft: false,\n insetRight: false,\n insetTop: false,\n insetBottom: false,\n },\n },\n label: {\n base: 'contents',\n },\n icon: {\n base: 'shrink-0 fill-current text-current',\n variants: {\n size: BADGE_ICON_SIZE_CLASSES,\n position: {\n leading: '',\n trailing: '',\n },\n },\n defaults: {\n size: 'sm',\n position: 'leading',\n },\n },\n close: {\n base: [\n '-mr-1 inline-flex shrink-0 items-center justify-center rounded-full text-current outline-none',\n 'data-disabled:pointer-events-none',\n ],\n variants: {\n size: {\n xs: 'size-badge-close-xs',\n sm: 'size-badge-close-sm',\n md: 'size-badge-close-md',\n lg: 'size-badge-close-lg',\n xlg: 'size-badge-close-xlg',\n },\n },\n defaults: {\n size: 'sm',\n },\n },\n closeIcon: {\n base: 'size-icon-xs shrink-0 fill-current text-current',\n },\n },\n}});\n\nexport {\n BADGE_ICON_SIZE_CLASSES,\n BADGE_ROOT_BASE_CLASSES,\n BADGE_SIZE_CLASSES,\n BADGE_VARIANT_CLASSES,\n badgeStyles,\n};\n","import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n BUTTON_TYPES,\n COMPONENT_RADII,\n CONTROL_SIZES,\n ICON_VARIANTS,\n type CommonButtonType,\n type ComponentRadius,\n type ControlSize,\n type IconVariant,\n} from '../common';\n\nconst BADGE_VARIANTS = ['soft', 'surface', 'outline', 'solid'] as const;\nconst BADGE_COLORS = ['neutral', 'accent', 'success', 'warning', 'danger'] as const;\nconst BADGE_SIZES = CONTROL_SIZES;\nconst BADGE_AS_VALUES = ['span', 'button'] as const;\nconst BADGE_TYPES = BUTTON_TYPES;\nconst BADGE_ICON_VARIANTS = ICON_VARIANTS;\nconst BADGE_RADII = COMPONENT_RADII;\n\nconst badgeSchema = {\n variant: oneOf(BADGE_VARIANTS, 'soft'),\n color: oneOf(BADGE_COLORS, 'neutral'),\n size: oneOf(BADGE_SIZES, 'sm'),\n radius: oneOf(BADGE_RADII, 'sm'),\n href: string,\n as: oneOf(BADGE_AS_VALUES, 'span'),\n type: oneOf(BADGE_TYPES, 'button'),\n disabled: bool,\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(BADGE_ICON_VARIANTS, 'mini'),\n inset: string,\n class: string,\n};\n\nconst badgeCloseSchema = {\n type: oneOf(BADGE_TYPES, 'button'),\n disabled: bool,\n icon: string.default('close'),\n iconVariant: oneOf(BADGE_ICON_VARIANTS, 'mini'),\n size: oneOf(BADGE_SIZES, 'sm'),\n label: string.default('Remove'),\n class: string,\n};\n\ntype BadgeVariant = typeof BADGE_VARIANTS[number];\ntype BadgeColor = typeof BADGE_COLORS[number];\ntype BadgeSize = ControlSize;\ntype BadgeRadius = ComponentRadius;\ntype BadgeAs = typeof BADGE_AS_VALUES[number];\ntype BadgeType = CommonButtonType;\ntype BadgeIconVariant = IconVariant;\ntype BadgeProps = SchemaToProps<typeof badgeSchema>;\ntype BadgeCloseProps = SchemaToProps<typeof badgeCloseSchema>;\n\nexport {\n BADGE_AS_VALUES,\n BADGE_COLORS,\n BADGE_ICON_VARIANTS,\n BADGE_RADII,\n BADGE_SIZES,\n BADGE_TYPES,\n BADGE_VARIANTS,\n badgeCloseSchema,\n badgeSchema,\n};\nexport type {\n BadgeAs,\n BadgeCloseProps,\n BadgeColor,\n BadgeIconVariant,\n BadgeProps,\n BadgeRadius,\n BadgeSize,\n BadgeType,\n BadgeVariant,\n};\n","import {bool, json, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ALIGNMENTS,\n COMPONENT_RADII,\n CONTROL_SIZES,\n CONTROL_VARIANTS,\n ELEVATION_REFERENCES,\n ICON_VARIANTS,\n POSITIONS,\n SURFACE_REFERENCES,\n type Alignment,\n type ComponentRadius,\n type ControlSize,\n type ControlVariant,\n type ElevationReference,\n type IconVariant,\n type Position,\n type SurfaceReference,\n} from '../common';\nimport {\n BADGE_COLORS,\n BADGE_VARIANTS,\n type BadgeColor,\n type BadgeVariant,\n} from '../badge/contract';\n\nconst SELECT_MODES = ['listbox', 'combobox', 'pillbox', 'native'] as const;\nconst SELECT_VARIANTS = CONTROL_VARIANTS;\nconst SELECT_SIZES = CONTROL_SIZES;\nconst SELECT_RADII = COMPONENT_RADII;\nconst SELECT_SIDES = POSITIONS;\nconst SELECT_ALIGNS = ALIGNMENTS;\nconst SELECT_ICON_VARIANTS = ICON_VARIANTS;\nconst SELECT_CLEARS = ['stay', 'close'] as const;\nconst SELECT_MARKS = ['check', 'checkbox', 'none'] as const;\nconst SELECT_SURFACES = SURFACE_REFERENCES;\nconst SELECT_ELEVATIONS = ELEVATION_REFERENCES;\n\ntype SelectMode = typeof SELECT_MODES[number];\ntype SelectVariant = ControlVariant;\ntype SelectSize = ControlSize;\ntype SelectRadius = ComponentRadius;\ntype SelectSide = Position;\ntype SelectAlign = Alignment;\ntype SelectIconVariant = IconVariant;\ntype SelectClear = typeof SELECT_CLEARS[number];\ntype SelectMark = typeof SELECT_MARKS[number];\ntype SelectSurface = SurfaceReference;\ntype SelectElevation = ElevationReference;\ntype SelectChipVariant = BadgeVariant;\ntype SelectChipColor = BadgeColor;\n\nconst selectSchema = {\n name: string,\n optionsId: string,\n value: string,\n values: json.array<string>([]),\n placeholder: string,\n mode: oneOf(SELECT_MODES, 'listbox' as SelectMode),\n multiple: bool,\n searchable: bool,\n creatable: bool,\n filter: bool.default(true),\n clearable: bool,\n clear: oneOf(SELECT_CLEARS, 'stay' as SelectClear),\n suffix: string.default('selected'),\n mark: oneOf(SELECT_MARKS, 'check' as SelectMark),\n open: bool,\n disabled: bool,\n readonly: bool,\n required: bool,\n invalid: bool,\n autoHighlight: bool.default(true),\n loop: bool.default(true),\n path: string,\n size: oneOf(SELECT_SIZES, 'lg' as SelectSize),\n variant: oneOf(SELECT_VARIANTS, 'outline' as SelectVariant),\n radius: oneOf(SELECT_RADII, 'md' as SelectRadius),\n surface: oneOf(SELECT_SURFACES, '+2' as SelectSurface),\n elevation: oneOf(SELECT_ELEVATIONS, '3' as SelectElevation),\n side: oneOf(SELECT_SIDES, 'bottom' as SelectSide),\n align: oneOf(SELECT_ALIGNS, 'start' as SelectAlign),\n offset: number.clamp(-100, 100).default(0),\n gap: number.clamp(0, 50).default(4),\n empty: string.default('No results found.'),\n icon: string,\n iconTrailing: string.default('chevron__down'),\n iconVariant: oneOf(SELECT_ICON_VARIANTS, 'outline' as SelectIconVariant),\n buttonClass: string,\n inputClass: string,\n listboxClass: string,\n optionClass: string,\n chipVariant: oneOf(BADGE_VARIANTS, 'soft' as SelectChipVariant),\n chipColor: oneOf(BADGE_COLORS, 'neutral' as SelectChipColor),\n chipClass: string,\n class: string,\n};\n\nconst selectOptionSchema = {\n value: string,\n label: string,\n selectedLabel: string,\n textValue: string,\n disabled: bool,\n selected: bool,\n item: string,\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(SELECT_ICON_VARIANTS, 'outline' as SelectIconVariant),\n suffix: string,\n class: string,\n};\n\nconst selectCreateOptionSchema = {\n minLength: number.clamp(0, 100).default(0),\n modal: string,\n disabled: bool,\n value: string,\n class: string,\n};\n\ntype SelectProps = SchemaToProps<typeof selectSchema>;\ntype SelectOptionProps = SchemaToProps<typeof selectOptionSchema>;\ntype SelectCreateOptionProps = SchemaToProps<typeof selectCreateOptionSchema>;\n\nexport {\n SELECT_ALIGNS,\n SELECT_CLEARS,\n SELECT_ELEVATIONS,\n BADGE_COLORS as SELECT_CHIP_COLORS,\n BADGE_VARIANTS as SELECT_CHIP_VARIANTS,\n SELECT_ICON_VARIANTS,\n SELECT_MARKS,\n SELECT_MODES,\n SELECT_RADII,\n SELECT_SIDES,\n SELECT_SIZES,\n SELECT_SURFACES,\n SELECT_VARIANTS,\n selectCreateOptionSchema,\n selectOptionSchema,\n selectSchema,\n};\nexport type {\n SelectAlign,\n SelectClear,\n SelectChipColor,\n SelectChipVariant,\n SelectCreateOptionProps,\n SelectElevation,\n SelectIconVariant,\n SelectMark,\n SelectOptionProps,\n SelectSide,\n SelectProps,\n SelectRadius,\n SelectSize,\n SelectSurface,\n SelectMode,\n SelectVariant,\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, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {SelectProps} from './contract';\n\ntype SelectContext = {\n selection: {values: string[]; labels: string[]};\n search: {query: string; optionsId: string};\n navigation: {activeValue: string};\n creation: {value: string};\n};\n\ntype SelectMachineEffects = {\n prepareOpen(scope: MachineScope<SelectContext, SelectProps>): void;\n finishOpen(scope: MachineScope<SelectContext, SelectProps>): void;\n prepareClose(scope: MachineScope<SelectContext, SelectProps>): void;\n finishClose(scope: MachineScope<SelectContext, SelectProps>): void;\n commitSelection(scope: MachineScope<SelectContext, SelectProps>): void;\n commitSearch(scope: MachineScope<SelectContext, SelectProps>): void;\n prepareCreate(scope: MachineScope<SelectContext, SelectProps>): void;\n syncProps(scope: MachineScope<SelectContext, SelectProps>): void;\n syncOptions(scope: MachineScope<SelectContext, SelectProps>): void;\n syncActive(scope: MachineScope<SelectContext, SelectProps>): void;\n};\n\ntype CreateSelectMachineOptions = {\n props: SelectProps;\n context: SelectContext;\n effects: SelectMachineEffects;\n};\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'disclosure.opening',\n project: () => ({}),\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n sends: {\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<SelectContext, SelectProps, Record<string, never>, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'disclosure.closing',\n project: () => ({}),\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n sends: {\n open: () => ({type: 'OPEN'}),\n },\n} satisfies TransitionHookDefinition<SelectContext, SelectProps, Record<string, never>, 'closing'>);\n\nconst searchingHook = defineHook({\n name: 'searching',\n state: 'feature.searching',\n project: (snapshot) => ({\n query: snapshot.context.search.query,\n optionsId: snapshot.context.search.optionsId,\n }),\n onDone: 'SEARCHING_DONE',\n onError: 'SEARCHING_ERROR',\n sends: {\n search: (query: string) => ({type: 'SEARCH', query}),\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<\n SelectContext,\n SelectProps,\n {query: string; optionsId: string},\n 'searching'\n>);\n\nconst creatingHook = defineHook({\n name: 'creating',\n state: 'feature.creating',\n project: (snapshot) => ({\n query: snapshot.context.search.query,\n value: snapshot.context.creation.value,\n }),\n onDone: 'CREATING_DONE',\n onError: 'CREATING_ERROR',\n sends: {\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<\n SelectContext,\n SelectProps,\n {query: string; value: string},\n 'creating'\n>);\n\nconst selectHooks = [openingHook, closingHook, searchingHook, creatingHook] as const;\n\nconst nextProps = (event: MachineEventObject): SelectProps | null => propsChangedEvent<SelectProps>(event)?.props ?? null;\nconst blocked = (props: SelectProps): boolean => props.disabled || props.readonly;\n\nconst shouldOpenFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n if (!props || blocked(props) || !props.open) return false;\n return propsChanged<SelectProps>(event, 'open', 'disabled', 'readonly');\n};\n\nconst shouldCloseFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n if (!props) return false;\n return (propsChanged<SelectProps>(event, 'open') && !props.open)\n || (propsChanged<SelectProps>(event, 'disabled') && props.disabled)\n || (propsChanged<SelectProps>(event, 'readonly') && props.readonly);\n};\n\nconst shouldStopFeatureFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n return Boolean(props && (\n (propsChanged<SelectProps>(event, 'disabled') && props.disabled)\n || (propsChanged<SelectProps>(event, 'readonly') && props.readonly)\n || (propsChanged<SelectProps>(event, 'searchable') && !props.searchable)\n ));\n};\n\nconst nextSelection = (event: MachineEventObject): SelectContext['selection'] | null => {\n if (!Array.isArray(event.values) || !Array.isArray(event.labels)) return null;\n return {\n values: event.values.filter((value): value is string => typeof value === 'string'),\n labels: event.labels.filter((label): label is string => typeof label === 'string'),\n };\n};\n\nconst createSelectMachine = ({\n props,\n context,\n effects,\n}: CreateSelectMachineOptions): Machine<SelectContext, SelectProps> => createMachine<SelectContext, SelectProps>({\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', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n SEARCH: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: {target: 'opening', guard: shouldOpenFromProps, 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 CREATE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: 'single', effects: 'prepareClose'},\n CLEAR: {target: 'closing', guard: 'clearCloses', 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 CREATE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: 'single', effects: 'prepareClose'},\n CLEAR: {target: 'closing', guard: 'clearCloses', 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', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n SEARCH: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: {target: 'opening', guard: shouldOpenFromProps, effects: 'prepareOpen'},\n },\n },\n },\n },\n feature: {\n initial: 'idle',\n on: {\n SELECT: {reduce: 'replaceSelection', effects: 'commitSelection'},\n DESELECT: {reduce: 'replaceSelection', effects: 'commitSelection'},\n SELECT_ALL: {reduce: 'replaceSelection', effects: 'commitSelection'},\n RECONCILE_SELECTION: {reduce: 'replaceSelection', effects: 'syncActive'},\n CLEAR: {reduce: 'clear', effects: 'commitSelection'},\n ACTIVE: {reduce: 'setActive', effects: 'syncActive'},\n OPTIONS_CHANGED: {effects: 'syncOptions'},\n CLOSING_DONE: {reduce: 'resetTransient', effects: 'syncActive'},\n CLOSING_ERROR: {reduce: 'resetTransient', effects: 'syncActive'},\n },\n states: {\n idle: {\n on: {\n CLOSE: {},\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'syncProps'},\n },\n },\n searching: {\n tags: ['searching'],\n on: {\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n CLOSE: {target: 'idle'},\n SEARCHING_DONE: 'idle',\n SEARCHING_ERROR: 'idle',\n PROPS_CHANGED: [\n {target: 'idle', guard: shouldStopFeatureFromProps, reduce: 'replaceProps', effects: 'syncProps'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n creating: {\n tags: ['creating'],\n on: {\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n CLOSE: {target: 'idle'},\n CREATING_DONE: {target: 'idle'},\n CREATING_ERROR: {target: 'idle'},\n PROPS_CHANGED: [\n {target: 'idle', guard: shouldStopFeatureFromProps, reduce: 'replaceProps', effects: 'syncProps'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n replaceProps: ({event}) => {\n const next = nextProps(event);\n return next ? {props: next} : undefined;\n },\n replaceSelection: ({context: current, event}) => {\n const selection = nextSelection(event);\n if (!selection) return undefined;\n return {context: {\n ...current,\n selection,\n }};\n },\n clear: ({context: current}) => ({context: {\n ...current,\n selection: {values: [], labels: []},\n search: {...current.search, query: ''},\n navigation: {activeValue: ''},\n }}),\n setSearch: ({context: current, event}) => ({context: {\n ...current,\n search: {\n query: typeof event.query === 'string' ? event.query : '',\n optionsId: typeof event.optionsId === 'string' ? event.optionsId : current.search.optionsId,\n },\n navigation: {\n activeValue: typeof event.activeValue === 'string'\n ? event.activeValue\n : current.navigation.activeValue,\n },\n }}),\n setActive: ({context: current, event}) => ({context: {\n ...current,\n navigation: {activeValue: typeof event.value === 'string' ? event.value : ''},\n }}),\n setCreation: ({context: current, event}) => ({context: {\n ...current,\n creation: {value: typeof event.value === 'string' ? event.value : current.search.query},\n }}),\n resetTransient: ({context: current}) => ({context: {\n ...current,\n search: {...current.search, query: ''},\n navigation: {activeValue: ''},\n creation: {value: ''},\n }}),\n },\n guards: {\n canOpen: ({props: current}) => !blocked(current),\n single: ({props: current}) => !current.multiple,\n clearCloses: ({props: current}) => current.clear === 'close',\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n commitSelection: effects.commitSelection,\n commitSearch: effects.commitSearch,\n prepareCreate: effects.prepareCreate,\n syncProps: effects.syncProps,\n syncOptions: effects.syncOptions,\n syncActive: effects.syncActive,\n },\n});\n\nexport {createSelectMachine, selectHooks};\nexport type {\n CreateSelectMachineOptions,\n SelectContext,\n SelectMachineEffects,\n};\n","import {\n createAnchoredPopover,\n type AnchoredPopoverOptions,\n} from '@client/runtime/anchored-popover';\nimport {lockDocumentScroll, unlockDocumentScroll} from '@client/runtime/scroll-lock';\n\ntype SelectPresentation = 'anchored' | 'dialog' | 'fullscreen';\n\ntype SelectPresentationMetrics = {\n viewportWidth: number;\n viewportHeight: number;\n layoutViewportHeight: number;\n referenceTop: number;\n referenceBottom: number;\n touch: boolean;\n};\n\ntype SelectSurfaceOptions = AnchoredPopoverOptions & {\n labelId: () => string;\n};\n\ntype SelectSurface = {\n opened(): boolean;\n open(): void;\n close(): void;\n sync(): void;\n destroy(): void;\n presentation(): SelectPresentation;\n};\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\nconst PHONE_MAX_WIDTH = 640;\nconst MIN_ANCHORED_RESULTS_HEIGHT = 256;\nconst TABLET_KEYBOARD_HEIGHT = 520;\nconst KEYBOARD_VIEWPORT_RATIO = 0.72;\nconst FULLSCREEN_DIALOG_MARGIN = 12;\nconst DIALOG_MARGIN = 16;\nconst DIALOG_MAX_WIDTH = 720;\nconst DIALOG_MAX_HEIGHT = 720;\n\nconst resolveSelectPresentation = ({\n viewportWidth,\n viewportHeight,\n layoutViewportHeight,\n referenceTop,\n referenceBottom,\n touch,\n}: SelectPresentationMetrics): SelectPresentation => {\n if (viewportWidth <= PHONE_MAX_WIDTH) return 'fullscreen';\n\n const keyboardConstrained = viewportHeight < TABLET_KEYBOARD_HEIGHT\n || viewportHeight < layoutViewportHeight * KEYBOARD_VIEWPORT_RATIO;\n if (touch && keyboardConstrained) return 'fullscreen';\n if (touch) return 'dialog';\n\n const spaceAbove = Math.max(0, referenceTop);\n const spaceBelow = Math.max(0, viewportHeight - referenceBottom);\n return Math.max(spaceAbove, spaceBelow) < MIN_ANCHORED_RESULTS_HEIGHT ? 'dialog' : 'anchored';\n};\n\nconst viewportMetrics = (): {\n width: number;\n height: number;\n offsetTop: number;\n offsetLeft: number;\n} => {\n const viewport = window.visualViewport;\n return viewport\n ? {\n width: viewport.width,\n height: viewport.height,\n offsetTop: viewport.offsetTop,\n offsetLeft: viewport.offsetLeft,\n }\n : {width: window.innerWidth, height: window.innerHeight, offsetTop: 0, offsetLeft: 0};\n};\n\nconst hasTouchPointer = (): boolean => (\n window.matchMedia?.('(any-pointer: coarse)').matches === true\n || navigator.maxTouchPoints > 0\n);\n\nconst createSelectSurface = (options: SelectSurfaceOptions): SelectSurface => {\n const anchored = createAnchoredPopover(options);\n let open = false;\n let currentPresentation: SelectPresentation = 'anchored';\n let hasScrollLock = false;\n let stopViewportListeners: (() => void) | null = null;\n\n const surface = (): PopoverElement => options.floating() as PopoverElement;\n\n const setScrollLock = (locked: boolean): void => {\n if (locked === hasScrollLock) return;\n hasScrollLock = locked;\n if (locked) lockDocumentScroll();\n else unlockDocumentScroll();\n };\n\n const clearModalGeometry = (element: HTMLElement): void => {\n element.style.removeProperty('border-radius');\n element.style.removeProperty('height');\n element.style.removeProperty('inset');\n element.style.removeProperty('max-height');\n element.style.removeProperty('max-width');\n element.style.removeProperty('position');\n element.style.removeProperty('transform-origin');\n element.style.removeProperty('width');\n };\n\n const applyDialogGeometry = (\n element: HTMLElement,\n presentation: Exclude<SelectPresentation, 'anchored'>,\n ): void => {\n const viewport = viewportMetrics();\n const margin = presentation === 'dialog'\n ? DIALOG_MARGIN\n : FULLSCREEN_DIALOG_MARGIN;\n const maxWidth = presentation === 'dialog' ? DIALOG_MAX_WIDTH : Number.POSITIVE_INFINITY;\n const maxHeight = presentation === 'dialog' ? DIALOG_MAX_HEIGHT : Number.POSITIVE_INFINITY;\n const width = Math.min(maxWidth, Math.max(0, viewport.width - margin * 2));\n const height = Math.min(maxHeight, Math.max(0, viewport.height - margin * 2));\n const left = viewport.offsetLeft + (viewport.width - width) / 2;\n const top = viewport.offsetTop + (viewport.height - height) / 2;\n\n Object.assign(element.style, {\n borderRadius: 'var(--radius-overlay-md)',\n position: 'fixed',\n inset: `${top}px auto auto ${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n maxWidth: 'none',\n maxHeight: 'none',\n transformOrigin: 'center',\n });\n };\n\n const resolveCurrentPresentation = (): SelectPresentation => {\n const viewport = viewportMetrics();\n const reference = options.reference().getBoundingClientRect();\n return resolveSelectPresentation({\n viewportWidth: viewport.width,\n viewportHeight: viewport.height,\n layoutViewportHeight: window.innerHeight,\n referenceTop: reference.top - viewport.offsetTop,\n referenceBottom: reference.bottom - viewport.offsetTop,\n touch: hasTouchPointer(),\n });\n };\n\n const applyPresentation = (): void => {\n if (!open) return;\n const element = surface();\n const next = resolveCurrentPresentation();\n currentPresentation = next;\n element.dataset.presentation = next;\n const heading = element.querySelector<HTMLElement>('[data-ui-select-sheet-heading]');\n if (heading) heading.style.display = next === 'anchored' ? 'none' : 'flex';\n\n if (next === 'anchored') {\n element.removeAttribute('aria-modal');\n element.removeAttribute('aria-labelledby');\n element.removeAttribute('role');\n setScrollLock(false);\n clearModalGeometry(element);\n anchored.mount();\n return;\n }\n\n anchored.unmount();\n element.setAttribute('role', 'dialog');\n element.setAttribute('aria-modal', 'true');\n element.setAttribute('aria-labelledby', options.labelId());\n setScrollLock(true);\n applyDialogGeometry(element, next);\n };\n\n const listenToViewport = (): (() => void) => {\n const update = (): void => applyPresentation();\n const viewport = window.visualViewport;\n const pointer = window.matchMedia?.('(any-pointer: coarse)');\n window.addEventListener('resize', update);\n window.addEventListener('orientationchange', update);\n viewport?.addEventListener('resize', update);\n viewport?.addEventListener('scroll', update);\n pointer?.addEventListener('change', update);\n return () => {\n window.removeEventListener('resize', update);\n window.removeEventListener('orientationchange', update);\n viewport?.removeEventListener('resize', update);\n viewport?.removeEventListener('scroll', update);\n pointer?.removeEventListener('change', update);\n };\n };\n\n const show = (): void => {\n if (open) return;\n open = true;\n try {\n surface().showPopover();\n } catch {\n // Reversal may find the native surface already in the top layer.\n }\n applyPresentation();\n stopViewportListeners = listenToViewport();\n };\n\n const hide = (): void => {\n if (!open) return;\n open = false;\n stopViewportListeners?.();\n stopViewportListeners = null;\n anchored.unmount();\n setScrollLock(false);\n try {\n surface().hidePopover();\n } catch {\n // Native teardown may already have removed the surface from the top layer.\n }\n };\n\n return {\n opened: () => open,\n open: show,\n close: hide,\n sync: applyPresentation,\n destroy: hide,\n presentation: () => currentPresentation,\n };\n};\n\nexport {createSelectSurface, resolveSelectPresentation};\nexport type {SelectPresentation, SelectPresentationMetrics, SelectSurface};\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_ICON_CLASSES,\n OPTION_INDICATOR_CLASSES,\n OPTION_ITEM_CLASSES,\n POPOVER_GEOMETRY_CLASSES,\n} from '../common';\n\nconst selectStyles = defineStyles({definition: {\n component: 'ui.select',\n parts: {\n root: {\n base: 'relative inline-grid w-full min-w-0',\n },\n control: {\n base: FIELD_CONTROL_ROOT_CLASSES,\n variants: {\n size: CONTROL_MIN_SIZE_CLASSES,\n radius: CONTROL_RADIUS_CLASSES,\n variant: {\n outline: '',\n filled: '',\n },\n mode: {\n listbox: '',\n combobox: '',\n pillbox: 'flex-wrap gap-1 py-0.5',\n native: '',\n },\n empty: {\n true: '',\n false: '',\n },\n },\n compounds: [\n {when: {mode: 'pillbox', empty: false}, class: '!pl-1.5'},\n ],\n defaults: {\n size: 'lg',\n variant: 'outline',\n radius: 'md',\n mode: 'listbox',\n empty: false,\n },\n },\n button: {\n base: [\n 'flex min-w-0 flex-1 items-center gap-2 border-0 bg-transparent p-0 text-left text-inherit outline-none',\n ],\n },\n pillboxTrigger: {\n base: 'min-w-16 self-stretch',\n },\n value: {\n base: 'min-w-0 flex-1',\n },\n placeholder: {\n base: 'min-w-0 flex-1 text-surface-ink-muted',\n },\n input: {\n base: [\n 'w-full min-w-16 flex-1',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n search: {\n base: [\n 'flex min-h-control-xlg shrink-0 items-center gap-2 px-3',\n 'text-sm',\n ],\n },\n searchInput: {\n base: [\n 'min-w-0 flex-1 text-sm',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n sheetHeader: {\n base: '',\n },\n sheetHeading: {\n base: 'min-w-0 items-center gap-3 px-4 pt-4',\n },\n sheetTitle: {\n base: 'min-w-0 flex-1 truncate text-base font-medium',\n },\n sheetClose: {\n base: [\n 'inline-flex size-control-md shrink-0 items-center justify-center rounded-control-sm border-0 bg-transparent',\n 'text-surface-ink-muted outline-none focus-visible:ui-focus-ring',\n ],\n },\n chips: {\n base: 'flex min-w-0 flex-wrap items-center gap-1',\n },\n chip: {\n base: [\n 'max-w-64',\n ],\n },\n chipLabel: {\n base: 'block min-w-0 flex-1 truncate',\n },\n chipRemove: {\n base: '',\n },\n icon: {\n base: 'size-icon shrink-0 fill-current text-surface-ink-muted',\n variants: {\n position: {\n leading: '',\n trailing: '',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n action: {\n base: FIELD_CONTROL_ACTION_CLASSES,\n },\n popover: {\n base: [\n POPOVER_GEOMETRY_CLASSES,\n 'overflow-hidden rounded-overlay-sm',\n ],\n },\n listbox: {\n base: 'min-h-0 outline-none',\n },\n viewport: {\n base: 'min-h-0 max-h-select-listbox',\n },\n options: {\n base: 'grid auto-rows-min content-start gap-1 p-popover-padding',\n },\n create: {\n base: 'shrink-0 p-popover-padding',\n },\n option: {\n base: [\n OPTION_ITEM_CLASSES,\n '[&:has([data-ui-select-option-label]>*+*)]:h-auto',\n '[&:has([data-ui-select-option-label]>*+*)]:items-start',\n '[&:has([data-ui-select-option-label]>*+*)]:py-2',\n ],\n },\n optionLabel: {\n base: 'min-w-0 flex-1 truncate',\n },\n optionMeta: {\n base: 'ml-auto text-current opacity-70',\n },\n optionIcon: {\n base: OPTION_ICON_CLASSES,\n variants: {\n position: {\n leading: '',\n trailing: 'ml-auto',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n optionIndicator: {\n base: OPTION_INDICATOR_CLASSES,\n },\n group: {\n base: 'grid auto-rows-min content-start gap-1',\n },\n label: {\n base: 'px-menu-item-padding-inline py-1',\n },\n empty: {\n base: 'px-menu-item-padding-inline py-2 text-sm text-surface-ink-muted',\n },\n separatorRoot: {\n base: '-mx-popover my-popover h-[var(--border-width-edge-separator)]',\n },\n separatorRule: {\n base: 'h-[var(--border-width-edge-separator)] w-full border-0',\n },\n nativeWrapper: {\n base: 'relative w-full min-w-0',\n },\n native: {\n base: [\n FIELD_CONTROL_NATIVE_CLASSES,\n 'appearance-none pe-10',\n ],\n variants: {\n size: CONTROL_MIN_SIZE_CLASSES,\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n size: 'lg',\n radius: 'md',\n },\n },\n nativeIcon: {\n base: 'pointer-events-none absolute right-3 top-1/2 size-icon -translate-y-1/2 fill-current text-icon',\n },\n },\n}});\n\nexport {selectStyles};\n","import type Alpine from 'alpinejs';\n\nimport {badgeStyles} from '@client/components/badge/styles';\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineSnapshot,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {trapFocus} from '@client/runtime/focus-scope';\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 {getPathValue, normalizeOptionText, parseItemData} from '@client/runtime/option-data';\nimport {observeSemanticChanges} from '@client/runtime/semantic-observer';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, asBool, dispatch, type CleanupStack, setPresence} from '@client/utils';\nimport {selectSchema, type SelectProps} from './contract';\nimport {\n createSelectMachine,\n type SelectContext,\n selectHooks,\n} from './machine';\nimport {createSelectSurface, type SelectSurface} from './presentation';\nimport {selectStyles} from './styles';\n\ntype SelectTransitionName = (typeof selectHooks)[number]['name'];\ntype SelectTransition<TName extends SelectTransitionName = SelectTransitionName> = TransitionForHook<\n Extract<(typeof selectHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\ntype SelectOption = {\n el: HTMLElement;\n id: string;\n value: string;\n label: string;\n selectedLabel: string;\n disabled: boolean;\n selected: boolean;\n visible: boolean;\n create: boolean;\n};\n\n/**\n * Public Alpine API for `ui.select`.\n *\n * @public\n */\ninterface UiSelectApi {\n /** Whether the select is opening or fully open. */\n readonly isOpen: boolean;\n\n /** Whether a searching transition hook is pending. */\n readonly isSearching: boolean;\n\n /** First selected value, or an empty string. */\n readonly value: string;\n\n /** Selected values in committed order. */\n readonly values: readonly string[];\n\n /** Display labels corresponding to the selected values. */\n readonly selectedLabels: readonly string[];\n\n /** Current search query. */\n readonly search: string;\n\n /** Value of the currently highlighted option. */\n readonly activeValue: string;\n\n /** Opens the listbox unless the select is disabled or readonly. */\n open(event?: Event): void;\n\n /** Closes the listbox. Keyboard dismissal restores focus to the trigger. */\n close(event?: Event): void;\n\n /** Reverses the current disclosure lifecycle. */\n toggle(event?: Event): void;\n\n /** Selects the rendered option with this value. */\n select(value: string, event?: Event): void;\n\n /** Removes a selected value. */\n deselect(value: string, event?: Event): void;\n\n /** Selects every rendered, visible, enabled option in multiple mode. */\n selectAll(event?: Event): void;\n\n /** Clears search, selection, highlight, and submitted values. */\n clear(event?: Event): void;\n\n /** Sets the query and enters the searching feature state. */\n setSearch(query: string): void;\n}\n\ntype SelectData = AlpineMachine<SelectContext, SelectProps, typeof selectHooks> & UiSelectApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n};\n\nconst optionSelector = '[data-ui-select-option], [data-ui-select-option-create]';\nconst selectedTemplateSelector = 'template[data-ui-select-option-selected-template]';\n\nconst sanitizeSelectedContent = (node: Node): void => {\n if (!(node instanceof Element)) {\n node.childNodes.forEach(sanitizeSelectedContent);\n return;\n }\n\n Array.from(node.attributes).forEach((attribute) => {\n const name = attribute.name;\n if (\n name === 'id'\n || name === 'role'\n || name === 'tabindex'\n || name.startsWith('aria-selected')\n || name.startsWith('aria-disabled')\n || name.startsWith('data-ui-select-option')\n || name.startsWith('data-selected')\n || name.startsWith('data-highlighted')\n || name.startsWith('data-disabled')\n || name.startsWith('x-')\n || name.startsWith('@')\n || name.startsWith(':')\n || name.startsWith('on')\n ) node.removeAttribute(name);\n });\n\n node.childNodes.forEach(sanitizeSelectedContent);\n node.setAttribute('x-ignore', 'true');\n};\n\nconst cloneSelectedNodes = (nodes: Iterable<Node>): DocumentFragment => {\n const fragment = document.createDocumentFragment();\n Array.from(nodes).forEach((node) => {\n if (node instanceof HTMLTemplateElement && node.matches(selectedTemplateSelector)) return;\n const clone = node.cloneNode(true);\n sanitizeSelectedContent(clone);\n fragment.append(clone);\n });\n return fragment;\n};\n\nconst sameStrings = (left: readonly string[], right: readonly string[]): boolean => (\n left.length === right.length && left.every((value, index) => value === right[index])\n);\n\nconst UiSelect = (): TrellisAlpineComponent<SelectData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let reflectControlledState = false;\n let buttonId = '';\n let inputId = '';\n let listboxId = '';\n let optionsId = '';\n let popover: SelectSurface | null = null;\n let disconnectObserver: (() => void) | null = null;\n let cleanup: CleanupStack = [];\n let hiddenInputsKey = '';\n let chipsKey = '';\n let inputSearching = false;\n let restoreFocusAfterClose = false;\n let lastOptionEl: HTMLElement | null = null;\n let typeahead = '';\n let typeaheadTimer = 0;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Select has not been initialized.');\n return rootEl;\n };\n\n const control = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-control]');\n if (!el) throw new Error('Select requires a control element.');\n return el;\n };\n\n const trigger = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-trigger], [data-ui-select-button], [data-ui-select-input]');\n if (!el) throw new Error('Select requires a trigger element.');\n return el;\n };\n\n const input = (): HTMLInputElement | null => root().querySelector<HTMLInputElement>('[data-ui-select-input]');\n const searchInput = (): HTMLInputElement | null => root().querySelector<HTMLInputElement>('[data-ui-select-search-input]');\n const sheetTitle = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-sheet-title]');\n if (!el) throw new Error('Select requires an adaptive picker title.');\n return el;\n };\n\n const popoverEl = (): PopoverElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-popover]');\n if (!el) throw new Error('Select requires a popover element.');\n return el as PopoverElement;\n };\n\n const listbox = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-listbox]');\n if (!el) throw new Error('Select requires a listbox element.');\n return el;\n };\n\n const optionsEl = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-options]');\n if (!el) throw new Error('Select requires an options element.');\n return el;\n };\n\n const chipsEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-select-chips]');\n const hiddenInputsEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-select-hidden-inputs]');\n const currentProps = (): Readonly<SelectProps> => bridge.getCommittedSnapshot().props;\n const currentContext = (): Readonly<SelectContext> => bridge.getCommittedSnapshot().context;\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isVisible = (): boolean => bridge.hasTag('visible');\n\n const resolveOptionLabel = (el: HTMLElement, props: Readonly<SelectProps>): string => {\n const explicit = el.dataset.label || el.getAttribute('aria-label') || '';\n if (explicit) return explicit;\n if (el.dataset.textValue) return el.dataset.textValue;\n const itemValue = getPathValue(parseItemData(el.dataset.item), props.path);\n if (itemValue !== undefined && itemValue !== null) return String(itemValue);\n const label = el.querySelector<HTMLElement>('[data-ui-select-option-label]');\n return (label?.textContent ?? el.textContent ?? '').trim();\n };\n\n const readOptions = ({\n props,\n query,\n selectedValues,\n }: {\n props: Readonly<SelectProps>;\n query: string;\n selectedValues: readonly string[];\n }): SelectOption[] => {\n const normalizedQuery = normalizeOptionText(query);\n const records = Array.from(root().querySelectorAll<HTMLElement>(optionSelector)).map((el, index) => {\n const label = resolveOptionLabel(el, props);\n const value = el.dataset.value || label;\n const create = el.hasAttribute('data-ui-select-option-create');\n const exact = normalizedQuery !== '' && normalizeOptionText(label) === normalizedQuery;\n const matches = !props.filter\n || normalizedQuery === ''\n || normalizeOptionText(`${label} ${el.dataset.suffix ?? ''}`).includes(normalizedQuery);\n const minLength = Number(el.dataset.minLength ?? '0');\n return {\n el,\n id: el.id || `${listboxId}-option-${index}`,\n value: create ? el.dataset.value || query : value,\n label,\n selectedLabel: el.dataset.selectedLabel || label,\n disabled: asBool({value: el.dataset.disabled}),\n selected: selectedValues.includes(value),\n visible: create ? query.length >= minLength && !exact : matches,\n create,\n };\n });\n const exact = records.some((option) => !option.create && normalizeOptionText(option.label) === normalizedQuery);\n return exact ? records.map((option) => option.create ? {...option, visible: false} : option) : records;\n };\n\n const options = (query = currentContext().search.query): SelectOption[] => readOptions({\n props: currentProps(),\n query,\n selectedValues: currentContext().selection.values,\n });\n\n const enabledVisibleOptions = (query = currentContext().search.query): SelectOption[] => (\n options(query).filter((option) => option.visible && !option.disabled && !option.create)\n );\n\n const selectionForValues = (\n values: readonly string[],\n props: Readonly<SelectProps> = currentProps(),\n ): SelectContext['selection'] => {\n const unique = Array.from(new Set(values.filter(Boolean)));\n const normalized = props.multiple ? unique : unique.slice(0, 1);\n const records = readOptions({props, query: '', selectedValues: normalized});\n return {\n values: normalized,\n labels: normalized.map((value) => records.find((option) => option.value === value)?.selectedLabel ?? value),\n };\n };\n\n const valuesFromProps = (props: Readonly<SelectProps>): string[] => (\n props.multiple\n ? Array.from(new Set([...props.values, ...(props.value ? [props.value] : [])]))\n : props.value ? [props.value] : props.values.slice(0, 1)\n );\n\n const initialContext = (props: SelectProps): SelectContext => {\n const explicit = valuesFromProps(props);\n const selectedFromOptions = readOptions({props, query: '', selectedValues: []})\n .filter((option) => asBool({value: option.el.dataset.selected}))\n .map((option) => option.value);\n return {\n selection: selectionForValues(explicit.length > 0 ? explicit : selectedFromOptions, props),\n search: {query: '', optionsId: ''},\n navigation: {activeValue: ''},\n creation: {value: ''},\n };\n };\n\n const selectedSummary = (): string => {\n const {selection} = currentContext();\n const props = currentProps();\n if (selection.values.length === 0 || (props.mode === 'pillbox' && props.multiple)) return '';\n if (props.multiple && selection.values.length > 1) return `${selection.values.length} ${props.suffix}`;\n return selection.labels[0] ?? selection.values[0] ?? '';\n };\n\n const selectedContent = (option: SelectOption): DocumentFragment => {\n const template = option.el.querySelector<HTMLTemplateElement>(selectedTemplateSelector);\n if (template) return cloneSelectedNodes(template.content.childNodes);\n const source = option.el.querySelector<HTMLElement>('[data-ui-select-option-selected-content]')\n ?? option.el.querySelector<HTMLElement>('[data-ui-select-option-label]');\n if (source) return cloneSelectedNodes(source.childNodes);\n const fragment = document.createDocumentFragment();\n fragment.append(document.createTextNode(option.selectedLabel));\n return fragment;\n };\n\n const syncRoot = (): void => {\n const props = currentProps();\n if (reflectControlledState) {\n const values = currentContext().selection.values;\n if (isExpanded() || !props.open || (!props.disabled && !props.readonly)) {\n reflectSchemaProp({el: root(), schema: selectSchema, key: 'open', value: isExpanded()});\n }\n reflectSchemaProp({\n el: root(),\n schema: selectSchema,\n key: 'value',\n value: props.multiple ? '' : values[0] ?? '',\n });\n reflectSchemaProp({\n el: root(),\n schema: selectSchema,\n key: 'values',\n value: props.multiple ? [...values] : [],\n });\n }\n root().dataset.state = isExpanded() ? 'open' : 'closed';\n root().dataset.mark = props.mark;\n syncControlPresence({el: root(), state: {\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n }, value: 'true'});\n };\n\n const isPillbox = (): boolean => currentProps().mode === 'pillbox' && currentProps().multiple;\n\n const syncControl = (): void => {\n const props = currentProps();\n const empty = isPillbox() && currentContext().selection.values.length === 0;\n const el = control();\n el.className = resolveStyle({\n part: selectStyles.parts.control,\n props: {...props, mode: isPillbox() ? 'pillbox' : props.mode === 'combobox' ? 'combobox' : 'listbox', empty},\n });\n el.dataset.state = isExpanded() ? 'open' : 'closed';\n el.dataset.mode = isPillbox() ? 'pillbox' : props.mode;\n setPresence({el, attr: 'data-ui-select-pillbox-control', present: isPillbox(), value: ''});\n setPresence({el, attr: 'data-empty', present: empty, value: 'true'});\n syncControlPresence({el, state: {disabled: props.disabled, invalid: props.invalid}, value: 'true'});\n };\n\n const syncTrigger = (): void => {\n const props = currentProps();\n const el = trigger();\n el.id ||= buttonId;\n el.dataset.state = isExpanded() ? 'open' : 'closed';\n el.setAttribute('aria-haspopup', 'listbox');\n el.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n el.setAttribute('aria-controls', listboxId);\n setPresence({el, attr: 'aria-invalid', present: props.invalid, value: 'true'});\n if (el instanceof HTMLButtonElement) el.disabled = props.disabled;\n\n const summary = selectedSummary();\n const valueEl = root().querySelector<HTMLElement>('[data-ui-select-button-value]');\n const placeholder = root().querySelector<HTMLElement>('[data-ui-select-button-placeholder]');\n if (valueEl) {\n valueEl.replaceChildren();\n const selected = currentContext().selection.values.length === 1 && summary\n ? options('').find((option) => option.value === currentContext().selection.values[0])\n : undefined;\n if (selected) valueEl.append(selectedContent(selected));\n else valueEl.textContent = summary;\n valueEl.hidden = summary === '';\n }\n if (placeholder) {\n placeholder.hidden = isPillbox()\n ? currentContext().selection.values.length > 0\n : summary !== '';\n }\n\n root().querySelectorAll<HTMLElement>('[data-ui-select-clear], [data-ui-select-button-clear]').forEach((clear) => {\n clear.hidden = props.disabled || !props.clearable || currentContext().selection.values.length === 0;\n if (clear instanceof HTMLButtonElement) clear.disabled = props.disabled;\n });\n root().querySelectorAll<HTMLElement>('[data-ui-select-search-clear]').forEach((clear) => {\n clear.hidden = props.disabled || !currentContext().search.query;\n if (clear instanceof HTMLButtonElement) clear.disabled = props.disabled;\n });\n };\n\n const syncInputs = (): void => {\n const props = currentProps();\n const context = currentContext();\n const inputEl = input();\n if (inputEl) {\n inputEl.id ||= inputId;\n inputEl.className = resolveStyle({part: selectStyles.parts.input, className: props.inputClass});\n inputEl.value = isPillbox()\n ? context.search.query\n : isExpanded() && inputSearching ? context.search.query : selectedSummary();\n inputEl.placeholder = isPillbox() && context.selection.values.length > 0 ? '' : props.placeholder;\n inputEl.setAttribute('role', 'combobox');\n inputEl.setAttribute('autocomplete', 'off');\n inputEl.setAttribute('aria-autocomplete', 'list');\n inputEl.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n inputEl.setAttribute('aria-controls', listboxId);\n syncNativeControl({input: inputEl, state: {\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required,\n nativeRequired: false,\n invalid: props.invalid,\n ariaRequired: props.required,\n }});\n }\n\n const search = searchInput();\n if (search) {\n search.value = context.search.query;\n search.disabled = props.disabled;\n search.readOnly = props.readonly;\n }\n\n const active = options().find((option) => option.value === context.navigation.activeValue);\n [trigger(), inputEl, search, listbox()].forEach((element) => {\n if (active?.id) element?.setAttribute('aria-activedescendant', active.id);\n else element?.removeAttribute('aria-activedescendant');\n });\n };\n\n const syncListbox = (): void => {\n const props = currentProps();\n const surface = popoverEl();\n const box = listbox();\n surface.id = `${listboxId}-popover`;\n surface.className = resolveStyle({part: selectStyles.parts.popover, props, className: props.listboxClass});\n surface.dataset.uiSurface = props.surface;\n surface.dataset.uiElevation = props.elevation;\n surface.setAttribute('popover', 'manual');\n surface.dataset.state = isExpanded() ? 'open' : 'closed';\n surface.hidden = !isVisible();\n box.id = listboxId;\n box.setAttribute('role', 'listbox');\n box.tabIndex = -1;\n box.setAttribute('aria-labelledby', trigger().id);\n setPresence({el: box, attr: 'aria-multiselectable', present: props.multiple, value: 'true'});\n };\n\n const syncOptions = (): void => {\n const context = currentContext();\n root().querySelectorAll<HTMLElement>('[data-ui-select-create-query]').forEach((query) => {\n query.textContent = context.search.query;\n });\n const records = options();\n records.forEach((option) => {\n option.el.id = option.id;\n option.el.hidden = !option.visible;\n option.el.setAttribute('role', 'option');\n option.el.setAttribute('aria-selected', option.selected ? 'true' : 'false');\n if (!option.create) option.el.dataset.value = option.value;\n if (!option.create) option.el.dataset.label = option.label;\n setPresence({el: option.el, attr: 'data-selected', present: option.selected, value: 'true'});\n setPresence({el: option.el, attr: 'data-highlighted', present: option.value === context.navigation.activeValue, value: 'true'});\n setPresence({el: option.el, attr: 'data-disabled', present: option.disabled, value: 'true'});\n setPresence({el: option.el, attr: 'aria-disabled', present: option.disabled, value: 'true'});\n option.el.querySelectorAll<HTMLElement>('[data-ui-select-option-indicator]').forEach((indicator) => {\n setPresence({el: indicator, attr: 'data-selected', present: option.selected, value: 'true'});\n });\n });\n const empty = root().querySelector<HTMLElement>('[data-ui-select-option-empty]');\n if (empty) empty.hidden = records.some((option) => option.visible && !option.create);\n };\n\n const optionDomSignature = (): string => JSON.stringify(\n Array.from(root().querySelectorAll<HTMLElement>(optionSelector)).map((option) => ({\n create: option.hasAttribute('data-ui-select-option-create'),\n value: option.dataset.value ?? '',\n label: option.hasAttribute('data-ui-select-option-create')\n ? option.textContent?.trim() ?? ''\n : option.dataset.label ?? option.textContent?.trim() ?? '',\n disabled: option.dataset.disabled ?? '',\n selected: option.dataset.selected ?? '',\n })),\n );\n\n const syncChips = (): void => {\n const container = chipsEl();\n if (!container) return;\n const props = currentProps();\n const context = currentContext();\n const records = options('');\n const chips = context.selection.values.map((value, index) => ({\n value,\n label: context.selection.labels[index] ?? value,\n disabled: records.find((option) => option.value === value)?.disabled ?? false,\n }));\n const key = JSON.stringify({chips, pillbox: isPillbox(), disabled: props.disabled, readonly: props.readonly,\n variant: props.chipVariant, color: props.chipColor, className: props.chipClass});\n if (key === chipsKey) return;\n chipsKey = key;\n container.replaceChildren();\n container.hidden = !isPillbox() || chips.length === 0;\n if (container.hidden) return;\n\n const chipClass = resolveStyle({\n part: badgeStyles.parts.root,\n props: {variant: props.chipVariant, color: props.chipColor, size: 'sm', radius: 'sm'},\n className: resolveStyle({part: selectStyles.parts.chip, props: {}, className: props.chipClass}),\n });\n const labelClass = resolveStyle({part: selectStyles.parts.chipLabel});\n const removeClass = resolveStyle({\n part: badgeStyles.parts.close,\n props: {size: 'sm'},\n className: resolveStyle({part: selectStyles.parts.chipRemove}),\n });\n\n chips.forEach((chipData) => {\n const chip = document.createElement('span');\n chip.className = chipClass;\n chip.setAttribute('data-ui-badge', '');\n chip.setAttribute('data-ui-action-recipe', 'badge');\n chip.setAttribute('data-ui-select-chip', '');\n chip.dataset.value = chipData.value;\n chip.dataset.variant = props.chipVariant;\n chip.dataset.color = props.chipColor;\n chip.dataset.size = 'sm';\n chip.dataset.radius = 'sm';\n const label = document.createElement('span');\n label.className = labelClass;\n label.setAttribute('data-ui-select-chip-label', '');\n label.textContent = chipData.label;\n chip.append(label);\n const remove = document.createElement('button');\n remove.type = 'button';\n remove.className = removeClass;\n remove.setAttribute('data-ui-badge-close', '');\n remove.setAttribute('data-ui-select-chip-remove', '');\n remove.dataset.value = chipData.value;\n remove.setAttribute('aria-label', `Remove ${chipData.label}`);\n remove.disabled = props.disabled || props.readonly || chipData.disabled;\n const icon = root().querySelector<HTMLTemplateElement>('[data-ui-select-chip-remove-icon]');\n if (icon) remove.append(icon.content.cloneNode(true));\n else remove.textContent = 'x';\n chip.append(remove);\n container.append(chip);\n });\n };\n\n const syncHiddenInputs = (): void => {\n const container = hiddenInputsEl();\n if (!container) return;\n const props = currentProps();\n hiddenInputsKey = syncRepeatedHiddenInputs({container, state: {\n name: props.name,\n required: props.required,\n values: props.disabled ? [] : [...currentContext().selection.values],\n form: root().dataset.form ?? '',\n marker: 'data-ui-select-hidden-input',\n }, currentKey: hiddenInputsKey});\n };\n\n const syncAll = (): void => {\n syncRoot();\n syncControl();\n syncTrigger();\n syncInputs();\n syncListbox();\n syncOptions();\n syncChips();\n syncHiddenInputs();\n };\n\n const focusForOpen = (): void => {\n if (!bridge.hasTag('interactive')) return;\n const props = currentProps();\n if (popover?.presentation() !== 'anchored') {\n (searchInput() ?? root().querySelector<HTMLElement>('[data-ui-select-sheet-close]') ?? listbox())\n .focus({preventScroll: true});\n } else if (props.mode === 'combobox') input()?.focus({preventScroll: true});\n else if ((props.searchable || isPillbox()) && searchInput()) searchInput()?.focus({preventScroll: true});\n else trigger().focus({preventScroll: true});\n };\n\n const reconcileOptions = (): void => {\n const context = currentContext();\n const selection = selectionForValues(context.selection.values);\n if (!sameStrings(selection.labels, context.selection.labels)) {\n bridge.send({type: 'RECONCILE_SELECTION', ...selection});\n }\n const enabled = enabledVisibleOptions();\n if (context.navigation.activeValue && !enabled.some((option) => option.value === context.navigation.activeValue)) {\n bridge.send({type: 'ACTIVE', value: currentProps().autoHighlight ? enabled[0]?.value ?? '' : ''});\n }\n syncAll();\n };\n\n const propsChanged = (event: Record<string, unknown>): void => {\n const changes = Array.isArray(event.changes) ? event.changes : [];\n const keys = changes.flatMap((change) => (\n change && typeof change === 'object' && 'key' in change ? [String(change.key)] : []\n ));\n if (keys.some((key) => key === 'value' || key === 'values' || key === 'multiple')) {\n const selection = selectionForValues(valuesFromProps(currentProps()));\n bridge.send({type: 'RECONCILE_SELECTION', ...selection});\n }\n syncAll();\n };\n\n const bridge = createAlpineMachine({\n schema: selectSchema,\n hooks: selectHooks,\n createMachine: ({props}) => createSelectMachine({\n props,\n context: initialContext(props),\n effects: {\n prepareOpen: () => {\n restoreFocusAfterClose = false;\n popover?.open();\n syncAll();\n queueMicrotask(focusForOpen);\n },\n finishOpen: () => {\n syncAll();\n dispatch({el: root(), name: 'ui:open'});\n },\n prepareClose: ({event}) => {\n inputSearching = false;\n restoreFocusAfterClose = event.restoreFocus === true\n || event.type === 'SELECT'\n || event.type === 'CREATE';\n if (restoreFocusAfterClose) trigger().focus({preventScroll: true});\n syncAll();\n },\n finishClose: () => {\n popover?.close();\n syncAll();\n if (restoreFocusAfterClose) trigger().focus({preventScroll: true});\n restoreFocusAfterClose = false;\n dispatch({el: root(), name: 'ui:close'});\n },\n commitSelection: ({event}) => {\n syncAll();\n dispatchNativeControlChange({\n container: hiddenInputsEl(),\n fallback: root(),\n marker: 'data-ui-select-hidden-input',\n });\n const {selection} = currentContext();\n if (event.type === 'CLEAR') dispatch({el: root(), name: 'ui:clear'});\n dispatch({el: root(), name: 'ui:change', detail: {\n value: selection.values[0] ?? '',\n values: [...selection.values],\n label: selection.labels[0] ?? '',\n labels: [...selection.labels],\n option: lastOptionEl,\n }});\n lastOptionEl = null;\n },\n commitSearch: () => {\n syncAll();\n dispatch({el: root(), name: 'ui:search', detail: {search: currentContext().search.query}});\n },\n prepareCreate: ({event}) => {\n syncAll();\n dispatch({el: root(), name: 'ui:create', detail: {\n search: currentContext().search.query,\n value: currentContext().creation.value,\n modal: typeof event.modal === 'string' ? event.modal : '',\n }});\n },\n syncProps: ({event}) => propsChanged(event),\n syncOptions: reconcileOptions,\n syncActive: syncAll,\n },\n }),\n });\n\n const sendSelection = (\n type: 'SELECT' | 'DESELECT' | 'SELECT_ALL',\n selection: SelectContext['selection'],\n ): void => bridge.send({type, ...selection});\n\n const selectOption = (option: SelectOption, event?: Event): void => {\n event?.preventDefault();\n const props = currentProps();\n if (props.disabled || props.readonly || option.disabled) return;\n if (option.create) {\n bridge.send({\n type: 'CREATE',\n value: option.value || currentContext().search.query,\n modal: option.el.dataset.modal ?? '',\n });\n return;\n }\n\n lastOptionEl = option.el;\n inputSearching = false;\n const values = props.multiple\n ? currentContext().selection.values.includes(option.value)\n ? currentContext().selection.values.filter((value) => value !== option.value)\n : [...currentContext().selection.values, option.value]\n : [option.value];\n sendSelection('SELECT', selectionForValues(values));\n };\n\n const setActive = (value: string): void => {\n if (value === currentContext().navigation.activeValue) return;\n bridge.send({type: 'ACTIVE', value});\n const option = options().find((candidate) => candidate.value === value);\n dispatch({el: root(), name: 'ui:highlight', detail: {value, option: option?.el ?? null}});\n };\n\n const moveActive = (delta: 1 | -1): void => {\n const records = enabledVisibleOptions();\n if (records.length === 0) return;\n const current = records.findIndex((option) => option.value === currentContext().navigation.activeValue);\n let index = current < 0 ? delta > 0 ? 0 : records.length - 1 : current + delta;\n if (index >= records.length) index = currentProps().loop ? 0 : records.length - 1;\n if (index < 0) index = currentProps().loop ? records.length - 1 : 0;\n setActive(records[index]?.value ?? '');\n };\n\n const setSearch = (query: string): void => {\n const props = currentProps();\n if (props.disabled || props.readonly) return;\n inputSearching = true;\n const first = props.autoHighlight ? enabledVisibleOptions(query)[0]?.value ?? '' : '';\n bridge.send({type: 'SEARCH', query, optionsId, activeValue: first});\n };\n\n const handleKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Tab' && popover?.presentation() !== 'anchored') {\n trapFocus(event, popoverEl());\n return;\n }\n const textInput = event.target instanceof HTMLInputElement;\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (!isExpanded()) bridge.send({type: 'OPEN'});\n moveActive(event.key === 'ArrowDown' ? 1 : -1);\n return;\n }\n if (!textInput && isExpanded() && (event.key === 'Home' || event.key === 'End')) {\n event.preventDefault();\n const records = enabledVisibleOptions();\n setActive(event.key === 'Home' ? records[0]?.value ?? '' : records.at(-1)?.value ?? '');\n return;\n }\n if (isExpanded() && (event.key === 'Enter' || (!textInput && event.key === ' '))) {\n const option = options().find((candidate) => candidate.value === currentContext().navigation.activeValue);\n if (option) selectOption(option, event);\n return;\n }\n if ((event.key === 'Backspace' || event.key === 'Delete') && isPillbox() && !currentContext().search.query) {\n const inputEl = input();\n if (inputEl && (inputEl.selectionStart !== 0 || inputEl.selectionEnd !== 0)) return;\n const value = [...currentContext().selection.values].reverse().find((candidate) => (\n !options('').find((option) => option.value === candidate)?.disabled\n ));\n if (value) {\n event.preventDefault();\n component.deselect(value, event);\n }\n return;\n }\n if (event.key === 'Escape' && isVisible()) {\n event.preventDefault();\n event.stopPropagation();\n bridge.send({type: 'CLOSE', restoreFocus: true});\n return;\n }\n if (!textInput && !currentProps().searchable && event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n typeahead += event.key.toLowerCase();\n window.clearTimeout(typeaheadTimer);\n typeaheadTimer = window.setTimeout(() => { typeahead = ''; }, 500);\n const match = enabledVisibleOptions().find((option) => normalizeOptionText(option.label).startsWith(typeahead));\n if (match) setActive(match.value);\n }\n };\n\n const setup = (): void => {\n const el = root();\n const activateControl = (event: Event, target: Element): boolean => {\n if (!target.closest('[data-ui-select-trigger], [data-ui-select-icon=\"trailing\"], [data-ui-select-control]')) {\n return false;\n }\n event.preventDefault();\n trigger().focus({preventScroll: true});\n if (trigger() instanceof HTMLInputElement) {\n if (!isExpanded()) bridge.send({type: 'OPEN'});\n } else component.toggle(event);\n return true;\n };\n\n addListener({target: el, event: 'click', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (target.closest('[data-ui-select-sheet-close]')) {\n component.close(event);\n return;\n }\n const searchClear = target.closest('[data-ui-select-search-clear]');\n if (searchClear) {\n event.preventDefault();\n setSearch('');\n return;\n }\n const clear = target.closest('[data-ui-select-clear], [data-ui-select-button-clear]');\n if (clear) {\n component.clear(event);\n return;\n }\n const chipRemove = target.closest<HTMLElement>('[data-ui-select-chip-remove]');\n if (chipRemove) {\n component.deselect(chipRemove.dataset.value ?? '', event);\n return;\n }\n const optionEl = target.closest<HTMLElement>(optionSelector);\n if (optionEl) {\n const option = options().find((candidate) => candidate.el === optionEl);\n if (option) selectOption(option, event);\n return;\n }\n if (!(event instanceof MouseEvent) || event.detail === 0) activateControl(event, target);\n }});\n addListener({target: el, event: 'input', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) return;\n if (target.matches('[data-ui-select-input], [data-ui-select-search-input]')) setSearch(target.value);\n }});\n addListener({target: el, event: 'keydown', cleanup, handler: (event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n }});\n addListener({target: el, event: 'pointerdown', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (\n target.closest(optionSelector)\n || target.closest('[data-ui-select-search-clear]')\n || target.closest('[data-ui-select-clear], [data-ui-select-button-clear], [data-ui-select-chip-remove]')\n ) {\n event.preventDefault();\n return;\n }\n activateControl(event, target);\n }});\n addListener({target: el, event: 'pointerover', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n const optionEl = target.closest<HTMLElement>(optionSelector);\n const option = optionEl ? options().find((candidate) => candidate.el === optionEl) : undefined;\n if (option && option.visible && !option.disabled) setActive(option.value);\n }});\n addListener({target: el, event: 'focusout', cleanup, handler: (event) => {\n if (!(event instanceof FocusEvent)) return;\n const next = event.relatedTarget;\n if (next instanceof Node && el.contains(next)) return;\n if (isVisible()) bridge.send({type: 'CLOSE'});\n }});\n addListener({target: popoverEl(), event: 'toggle', cleanup, handler: (event) => {\n if (!('newState' in event) || event.newState !== 'closed' || !isVisible()) return;\n bridge.send({type: 'CLOSE'});\n }});\n cleanup.push(addDismissableLayer({\n isEnabled: () => bridge.hasTag('interactive'),\n roots: () => [root(), popoverEl()],\n onDismiss: () => bridge.send({type: 'CLOSE'}),\n }));\n\n disconnectObserver = observeSemanticChanges({\n targets: listbox(),\n read: optionDomSignature,\n onChange: () => bridge.send({type: 'OPTIONS_CHANGED'}),\n observer: {childList: true, subtree: true},\n });\n };\n\n let component!: TrellisAlpineComponent<SelectData>;\n component = {\n ...bridge,\n get isOpen(): boolean {\n return this.snapshot.current?.tags.includes('expanded') ?? false;\n },\n get isSearching(): boolean {\n return this.snapshot.current?.tags.includes('searching') ?? false;\n },\n get value(): string {\n return this.snapshot.current?.context.selection.values[0] ?? '';\n },\n get values(): readonly string[] {\n return [...this.snapshot.current?.context.selection.values ?? []];\n },\n get selectedLabels(): readonly string[] {\n return [...this.snapshot.current?.context.selection.labels ?? []];\n },\n get search(): string {\n return this.snapshot.current?.context.search.query ?? '';\n },\n get activeValue(): string {\n return this.snapshot.current?.context.navigation.activeValue ?? '';\n },\n init(): void {\n rootEl = this.$el;\n buttonId = this.$id('select-button');\n inputId = this.$id('select-input');\n listboxId = this.$id('select-listbox');\n optionsId = optionsEl().id || root().dataset.optionsId || this.$id('select-options');\n optionsEl().id = optionsId;\n bridge.connect(this.$el, this.snapshot);\n sheetTitle().id ||= `${listboxId}-title`;\n popover = createSelectSurface({\n reference: control,\n floating: popoverEl,\n labelId: () => sheetTitle().id,\n position: () => currentProps().side,\n align: () => currentProps().align,\n gap: () => currentProps().gap,\n offset: () => currentProps().offset,\n matchReferenceWidth: true,\n });\n setup();\n syncAll();\n reflectControlledState = true;\n if (currentProps().open && !currentProps().disabled && !currentProps().readonly) {\n queueMicrotask(() => bridge.send({type: 'OPEN'}));\n }\n },\n destroy(): void {\n window.clearTimeout(typeaheadTimer);\n disconnectObserver?.();\n disconnectObserver = null;\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n popover?.destroy();\n popover = null;\n bridge.disconnect();\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: selectStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-select': '',\n ':data-state': () => (bridge.hasTag('expanded') ? 'open' : 'closed'),\n },\n ]});\n },\n open(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'OPEN'});\n },\n close(event?: Event): void {\n event?.preventDefault();\n bridge.send({type: 'CLOSE', restoreFocus: event instanceof KeyboardEvent});\n },\n toggle(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'TOGGLE'});\n },\n select(value: string, event?: Event): void {\n const option = options('').find((candidate) => !candidate.create && candidate.value === value);\n if (option) selectOption(option, event);\n },\n deselect(value: string, event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n const option = options('').find((candidate) => candidate.value === value);\n if (option?.disabled) return;\n sendSelection('DESELECT', selectionForValues(\n currentContext().selection.values.filter((candidate) => candidate !== value),\n ));\n },\n selectAll(event?: Event): void {\n event?.preventDefault();\n if (!currentProps().multiple || currentProps().disabled || currentProps().readonly) return;\n const records = enabledVisibleOptions();\n sendSelection('SELECT_ALL', {\n values: records.map((option) => option.value),\n labels: records.map((option) => option.selectedLabel),\n });\n },\n clear(event?: Event): void {\n event?.preventDefault();\n event?.stopPropagation();\n if (currentProps().disabled || currentProps().readonly) return;\n inputSearching = false;\n bridge.send({type: 'CLEAR'});\n },\n setSearch,\n };\n\n return component;\n};\n\nconst registerSelect = defineAlpineData('UiSelect', UiSelect);\n\nexport {registerSelect, UiSelect};\nexport type {SelectData, SelectTransition, UiSelectApi};\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 {registerSelect as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSelect = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerSelect};\nexport default registerSelect;\nexport * from './index';\n"],"mappings":"w9BAAA,IAAM,EAAuB,GAA0B,EAAM,KAAK,EAAE,YAAY,EAO1E,GAAiB,GAAqC,CACnD,KAEL,GAAI,CACA,OAAO,KAAK,MAAM,CAAG,CACzB,MAAQ,CACJ,MACJ,CACJ,EAEM,IAAgB,EAAe,IAA0B,CACvD,MAAC,GAAQ,GAAS,MAEtB,OAAO,EAAK,MAAM,GAAG,EAAE,QAAiB,EAAO,IAAQ,CAC/C,KAAyC,OAAO,GAAU,WAA1D,GACJ,OAAQ,EAAkC,EAC9C,EAAG,CAAI,CACX,ECOM,GAAc,EAAa,CAAC,WAAY,CAC1C,UAAW,WACX,MAAO,CACH,KAAM,CACF,KAAM,CA/Bd,uHACA,mCA8Bc,EACN,SAAU,CACN,QAAS,CA5BrB,KAAM,GACN,QAAS,GACT,QAAS,GACT,MAAO,EAyBc,EACT,MAAO,CACH,QAAS,GACT,OAAQ,GACR,QAAS,GACT,QAAS,GACT,OAAQ,EACZ,EACA,KAAM,CA7BlB,GAAI,+FACJ,GAAI,+FACJ,GAAI,+FACJ,GAAI,+FACJ,IAAK,kGAyBa,EACN,OAAQ,EACR,UAAW,CACP,KAAM,GACN,MAAO,EACX,EACA,WAAY,CACR,KAAM,GACN,MAAO,EACX,EACA,SAAU,CACN,KAAM,QACN,MAAO,EACX,EACA,YAAa,CACT,KAAM,QACN,MAAO,EACX,CACJ,EACA,UAAW,CACP,CAAC,KAAM,CAAC,UAAW,GAAM,KAAM,IAAI,EAAG,MAAO,SAAS,EACtD,CAAC,KAAM,CAAC,UAAW,GAAM,KAAM,IAAI,EAAG,MAAO,OAAO,EACpD,CAAC,KAAM,CAAC,UAAW,GAAM,KAAM,IAAI,EAAG,MAAO,SAAS,EACtD,CAAC,KAAM,CAAC,WAAY,GAAM,KAAM,IAAI,EAAG,MAAO,SAAS,EACvD,CAAC,KAAM,CAAC,WAAY,GAAM,KAAM,IAAI,EAAG,MAAO,OAAO,EACrD,CAAC,KAAM,CAAC,WAAY,GAAM,KAAM,IAAI,EAAG,MAAO,SAAS,CAC3D,EACA,SAAU,CACN,QAAS,OACT,MAAO,UACP,KAAM,KACN,OAAQ,KACR,UAAW,GACX,WAAY,GACZ,SAAU,GACV,YAAa,EACjB,CACJ,EACA,MAAO,CACH,KAAM,UACV,EACA,KAAM,CACF,KAAM,qCACN,SAAU,CACN,KAAM,CAjElB,GAAI,eACJ,GAAI,eACJ,GAAI,eACJ,GAAI,eACJ,IAAK,WA6Da,EACN,SAAU,CACN,QAAS,GACT,SAAU,EACd,CACJ,EACA,SAAU,CACN,KAAM,KACN,SAAU,SACd,CACJ,EACA,MAAO,CACH,KAAM,CACF,gGACA,mCACJ,EACA,SAAU,CACN,KAAM,CACF,GAAI,sBACJ,GAAI,sBACJ,GAAI,sBACJ,GAAI,sBACJ,IAAK,sBACT,CACJ,EACA,SAAU,CACN,KAAM,IACV,CACJ,EACA,UAAW,CACP,KAAM,iDACV,CACJ,CACJ,CAAC,CAAC,EC9GI,EAAiB,CAAC,OAAQ,UAAW,UAAW,OAAO,EACvD,EAAe,CAAC,UAAW,SAAU,UAAW,UAAW,QAAQ,EACnE,EAAc,EACd,GAAkB,CAAC,OAAQ,QAAQ,EACnC,EAAc,GACd,EAAsB,EACtB,GAAc,EAGP,EAAM,EAAgB,MAAM,EAC9B,EAAM,EAAc,SAAS,EAC9B,EAAM,EAAa,IAAI,EACrB,EAAM,GAAa,IAAI,EAE3B,EAAM,GAAiB,MAAM,EAC3B,EAAM,EAAa,QAAQ,EAIpB,EAAM,EAAqB,MAAM,EAMxC,EAAM,EAAa,QAAQ,EAE3B,EAAO,QAAQ,OAAO,EACf,EAAM,EAAqB,MAAM,EACxC,EAAM,EAAa,IAAI,EACtB,EAAO,QAAQ,QAAQ,EChBlC,IAAM,EAAe,CAAC,UAAW,WAAY,UAAW,QAAQ,EAC1D,GAAkB,EAClB,GAAe,EACf,GAAe,EACf,GAAe,EACf,GAAgB,EAChB,GAAuB,EACvB,GAAgB,CAAC,OAAQ,OAAO,EAChC,GAAe,CAAC,QAAS,WAAY,MAAM,EAC3C,EAAkB,EAClB,GAAoB,GAgBpB,EAAe,CACjB,KAAM,EACN,UAAW,EACX,MAAO,EACP,OAAQ,EAAK,MAAc,CAAC,CAAC,EAC7B,YAAa,EACb,KAAM,EAAM,EAAc,SAAuB,EACjD,SAAU,EACV,WAAY,EACZ,UAAW,EACX,OAAQ,EAAK,QAAQ,EAAI,EACzB,UAAW,EACX,MAAO,EAAM,GAAe,MAAqB,EACjD,OAAQ,EAAO,QAAQ,UAAU,EACjC,KAAM,EAAM,GAAc,OAAqB,EAC/C,KAAM,EACN,SAAU,EACV,SAAU,EACV,SAAU,EACV,QAAS,EACT,cAAe,EAAK,QAAQ,EAAI,EAChC,KAAM,EAAK,QAAQ,EAAI,EACvB,KAAM,EACN,KAAM,EAAM,GAAc,IAAkB,EAC5C,QAAS,EAAM,GAAiB,SAA0B,EAC1D,OAAQ,EAAM,GAAc,IAAoB,EAChD,QAAS,EAAM,EAAiB,IAAqB,EACrD,UAAW,EAAM,GAAmB,GAAsB,EAC1D,KAAM,EAAM,GAAc,QAAsB,EAChD,MAAO,EAAM,GAAe,OAAsB,EAClD,OAAQ,EAAO,MAAM,KAAM,GAAG,EAAE,QAAQ,CAAC,EACzC,IAAK,EAAO,MAAM,EAAG,EAAE,EAAE,QAAQ,CAAC,EAClC,MAAO,EAAO,QAAQ,mBAAmB,EACzC,KAAM,EACN,aAAc,EAAO,QAAQ,eAAe,EAC5C,YAAa,EAAM,GAAsB,SAA8B,EACvE,YAAa,EACb,WAAY,EACZ,aAAc,EACd,YAAa,EACb,YAAa,EAAM,EAAgB,MAA2B,EAC9D,UAAW,EAAM,EAAc,SAA4B,EAC3D,UAAW,EACX,MAAO,CACX,EAYiB,EAAM,GAAsB,SAA8B,EAM5D,EAAO,MAAM,EAAG,GAAG,EAAE,QAAQ,CAAC,EChB7C,IAAM,GAAc,CA7DA,EAAW,CAC3B,KAAM,UACN,MAAO,qBACP,aAAgB,CAAC,GACjB,OAAQ,eACR,QAAS,gBACT,MAAO,CACH,WAAc,CAAC,KAAM,OAAO,EAChC,CACJ,CAoDqB,EAlDD,EAAW,CAC3B,KAAM,UACN,MAAO,qBACP,aAAgB,CAAC,GACjB,OAAQ,eACR,QAAS,gBACT,MAAO,CACH,UAAa,CAAC,KAAM,MAAM,EAC9B,CACJ,CAyCkC,EAvCZ,EAAW,CAC7B,KAAM,YACN,MAAO,oBACP,QAAU,IAAc,CACpB,MAAO,EAAS,QAAQ,OAAO,MAC/B,UAAW,EAAS,QAAQ,OAAO,SACvC,GACA,OAAQ,iBACR,QAAS,kBACT,MAAO,CACH,OAAS,IAAmB,CAAC,KAAM,SAAU,OAAK,GAClD,WAAc,CAAC,KAAM,OAAO,EAChC,CACJ,CA0B+C,EAnB1B,EAAW,CAC5B,KAAM,WACN,MAAO,mBACP,QAAU,IAAc,CACpB,MAAO,EAAS,QAAQ,OAAO,MAC/B,MAAO,EAAS,QAAQ,SAAS,KACrC,GACA,OAAQ,gBACR,QAAS,iBACT,MAAO,CACH,WAAc,CAAC,KAAM,OAAO,EAChC,CACJ,CAO8D,CAAY,EAEpE,EAAa,GAAkD,EAA+B,CAAK,GAAG,OAAS,KAC/G,GAAW,GAAgC,EAAM,UAAY,EAAM,SAEnE,GAAuB,CAAC,WAA8D,CACxF,IAAM,EAAQ,EAAU,CAAK,EAE7B,MADI,CAAC,GAAS,GAAQ,CAAK,GAAK,CAAC,EAAM,KAAa,GAC7C,EAA0B,EAAO,OAAQ,WAAY,UAAU,CAC1E,EAEM,GAAwB,CAAC,WAA8D,CACzF,IAAM,EAAQ,EAAU,CAAK,EAE7B,OADK,EACG,EAA0B,EAAO,MAAM,GAAK,CAAC,EAAM,MACnD,EAA0B,EAAO,UAAU,GAAK,EAAM,UACtD,EAA0B,EAAO,UAAU,GAAK,EAAM,SAH3C,EAIvB,EAEM,GAA8B,CAAC,WAA8D,CAC/F,IAAM,EAAQ,EAAU,CAAK,EAC7B,MAAO,GAAQ,IACV,EAA0B,EAAO,UAAU,GAAK,EAAM,UACnD,EAA0B,EAAO,UAAU,GAAK,EAAM,UACtD,EAA0B,EAAO,YAAY,GAAK,CAAC,EAAM,YAErE,EAEM,EAAiB,GACf,CAAC,MAAM,QAAQ,EAAM,MAAM,GAAK,CAAC,MAAM,QAAQ,EAAM,MAAM,EAAU,KAClE,CACH,OAAQ,EAAM,OAAO,OAAQ,GAA2B,OAAO,GAAU,QAAQ,EACjF,OAAQ,EAAM,OAAO,OAAQ,GAA2B,OAAO,GAAU,QAAQ,CACrF,EAGE,IAAuB,CACzB,QACA,UACA,aACmE,GAA0C,CAC7G,KAAM,WACN,OAAQ,CACJ,WAAY,CACR,QAAS,SACT,OAAQ,CACJ,OAAQ,CACJ,KAAM,CAAC,QAAQ,EACf,GAAI,CACA,KAAM,CAAC,OAAQ,UAAW,MAAO,UAAW,QAAS,aAAa,EAClE,OAAQ,CAAC,OAAQ,UAAW,MAAO,UAAW,QAAS,aAAa,EACpE,OAAQ,CAAC,OAAQ,UAAW,MAAO,UAAW,QAAS,aAAa,EACpE,cAAe,CAAC,OAAQ,UAAW,MAAO,EAAqB,QAAS,aAAa,CACzF,CACJ,EACA,QAAS,CACL,KAAM,CAAC,UAAW,WAAY,cAAe,eAAe,EAC5D,GAAI,CACA,aAAc,CAAC,OAAQ,OAAQ,QAAS,YAAY,EACpD,cAAe,CAAC,OAAQ,OAAQ,QAAS,YAAY,EACrD,MAAO,CAAC,OAAQ,UAAW,QAAS,cAAc,EAClD,OAAQ,CAAC,OAAQ,UAAW,QAAS,cAAc,EACnD,OAAQ,CAAC,OAAQ,UAAW,QAAS,cAAc,EACnD,OAAQ,CAAC,OAAQ,UAAW,MAAO,SAAU,QAAS,cAAc,EACpE,MAAO,CAAC,OAAQ,UAAW,MAAO,cAAe,QAAS,cAAc,EACxE,cAAe,CAAC,OAAQ,UAAW,MAAO,EAAsB,QAAS,cAAc,CAC3F,CACJ,EACA,KAAM,CACF,KAAM,CAAC,UAAW,WAAY,cAAe,MAAM,EACnD,GAAI,CACA,MAAO,CAAC,OAAQ,UAAW,QAAS,cAAc,EAClD,OAAQ,CAAC,OAAQ,UAAW,QAAS,cAAc,EACnD,OAAQ,CAAC,OAAQ,UAAW,QAAS,cAAc,EACnD,OAAQ,CAAC,OAAQ,UAAW,MAAO,SAAU,QAAS,cAAc,EACpE,MAAO,CAAC,OAAQ,UAAW,MAAO,cAAe,QAAS,cAAc,EACxE,cAAe,CAAC,OAAQ,UAAW,MAAO,EAAsB,QAAS,cAAc,CAC3F,CACJ,EACA,QAAS,CACL,KAAM,CAAC,UAAW,eAAe,EACjC,GAAI,CACA,aAAc,CAAC,OAAQ,SAAU,QAAS,aAAa,EACvD,cAAe,CAAC,OAAQ,SAAU,QAAS,aAAa,EACxD,KAAM,CAAC,OAAQ,UAAW,MAAO,UAAW,QAAS,aAAa,EAClE,OAAQ,CAAC,OAAQ,UAAW,MAAO,UAAW,QAAS,aAAa,EACpE,OAAQ,CAAC,OAAQ,UAAW,MAAO,UAAW,QAAS,aAAa,EACpE,cAAe,CAAC,OAAQ,UAAW,MAAO,EAAqB,QAAS,aAAa,CACzF,CACJ,CACJ,CACJ,EACA,QAAS,CACL,QAAS,OACT,GAAI,CACA,OAAQ,CAAC,OAAQ,mBAAoB,QAAS,iBAAiB,EAC/D,SAAU,CAAC,OAAQ,mBAAoB,QAAS,iBAAiB,EACjE,WAAY,CAAC,OAAQ,mBAAoB,QAAS,iBAAiB,EACnE,oBAAqB,CAAC,OAAQ,mBAAoB,QAAS,YAAY,EACvE,MAAO,CAAC,OAAQ,QAAS,QAAS,iBAAiB,EACnD,OAAQ,CAAC,OAAQ,YAAa,QAAS,YAAY,EACnD,gBAAiB,CAAC,QAAS,aAAa,EACxC,aAAc,CAAC,OAAQ,iBAAkB,QAAS,YAAY,EAC9D,cAAe,CAAC,OAAQ,iBAAkB,QAAS,YAAY,CACnE,EACA,OAAQ,CACJ,KAAM,CACF,GAAI,CACA,MAAO,CAAC,EACR,OAAQ,CAAC,OAAQ,YAAa,OAAQ,YAAa,QAAS,cAAc,EAC1E,OAAQ,CAAC,OAAQ,WAAY,OAAQ,cAAe,QAAS,eAAe,EAC5E,cAAe,CAAC,OAAQ,eAAgB,QAAS,WAAW,CAChE,CACJ,EACA,UAAW,CACP,KAAM,CAAC,WAAW,EAClB,GAAI,CACA,OAAQ,CAAC,OAAQ,YAAa,OAAQ,YAAa,QAAS,cAAc,EAC1E,OAAQ,CAAC,OAAQ,WAAY,OAAQ,cAAe,QAAS,eAAe,EAC5E,MAAO,CAAC,OAAQ,MAAM,EACtB,eAAgB,OAChB,gBAAiB,OACjB,cAAe,CACX,CAAC,OAAQ,OAAQ,MAAO,EAA4B,OAAQ,eAAgB,QAAS,WAAW,EAChG,CAAC,OAAQ,eAAgB,QAAS,WAAW,CACjD,CACJ,CACJ,EACA,SAAU,CACN,KAAM,CAAC,UAAU,EACjB,GAAI,CACA,OAAQ,CAAC,OAAQ,YAAa,OAAQ,YAAa,QAAS,cAAc,EAC1E,OAAQ,CAAC,OAAQ,WAAY,OAAQ,cAAe,QAAS,eAAe,EAC5E,MAAO,CAAC,OAAQ,MAAM,EACtB,cAAe,CAAC,OAAQ,MAAM,EAC9B,eAAgB,CAAC,OAAQ,MAAM,EAC/B,cAAe,CACX,CAAC,OAAQ,OAAQ,MAAO,EAA4B,OAAQ,eAAgB,QAAS,WAAW,EAChG,CAAC,OAAQ,eAAgB,QAAS,WAAW,CACjD,CACJ,CACJ,CACJ,CACJ,CACJ,CACJ,EAAG,CACC,UACA,QACA,SAAU,CACN,cAAe,CAAC,WAAW,CACvB,IAAM,EAAO,EAAU,CAAK,EAC5B,OAAO,EAAO,CAAC,MAAO,CAAI,EAAI,IAAA,EAClC,EACA,kBAAmB,CAAC,QAAS,EAAS,WAAW,CAC7C,IAAM,EAAY,EAAc,CAAK,EAChC,KACL,MAAO,CAAC,QAAS,CACb,GAAG,EACH,WACJ,CAAC,CACL,EACA,OAAQ,CAAC,QAAS,MAAc,CAAC,QAAS,CACtC,GAAG,EACH,UAAW,CAAC,OAAQ,CAAC,EAAG,OAAQ,CAAC,CAAC,EAClC,OAAQ,CAAC,GAAG,EAAQ,OAAQ,MAAO,EAAE,EACrC,WAAY,CAAC,YAAa,EAAE,CAChC,CAAC,GACD,WAAY,CAAC,QAAS,EAAS,YAAY,CAAC,QAAS,CACjD,GAAG,EACH,OAAQ,CACJ,MAAO,OAAO,EAAM,OAAU,SAAW,EAAM,MAAQ,GACvD,UAAW,OAAO,EAAM,WAAc,SAAW,EAAM,UAAY,EAAQ,OAAO,SACtF,EACA,WAAY,CACR,YAAa,OAAO,EAAM,aAAgB,SACpC,EAAM,YACN,EAAQ,WAAW,WAC7B,CACJ,CAAC,GACD,WAAY,CAAC,QAAS,EAAS,YAAY,CAAC,QAAS,CACjD,GAAG,EACH,WAAY,CAAC,YAAa,OAAO,EAAM,OAAU,SAAW,EAAM,MAAQ,EAAE,CAChF,CAAC,GACD,aAAc,CAAC,QAAS,EAAS,YAAY,CAAC,QAAS,CACnD,GAAG,EACH,SAAU,CAAC,MAAO,OAAO,EAAM,OAAU,SAAW,EAAM,MAAQ,EAAQ,OAAO,KAAK,CAC1F,CAAC,GACD,gBAAiB,CAAC,QAAS,MAAc,CAAC,QAAS,CAC/C,GAAG,EACH,OAAQ,CAAC,GAAG,EAAQ,OAAQ,MAAO,EAAE,EACrC,WAAY,CAAC,YAAa,EAAE,EAC5B,SAAU,CAAC,MAAO,EAAE,CACxB,CAAC,EACL,EACA,OAAQ,CACJ,SAAU,CAAC,MAAO,KAAa,CAAC,GAAQ,CAAO,EAC/C,QAAS,CAAC,MAAO,KAAa,CAAC,EAAQ,SACvC,aAAc,CAAC,MAAO,KAAa,EAAQ,QAAU,OACzD,EACA,QAAS,CACL,YAAa,EAAQ,YACrB,WAAY,EAAQ,WACpB,aAAc,EAAQ,aACtB,YAAa,EAAQ,YACrB,gBAAiB,EAAQ,gBACzB,aAAc,EAAQ,aACtB,cAAe,EAAQ,cACvB,UAAW,EAAQ,UACnB,YAAa,EAAQ,YACrB,WAAY,EAAQ,UACxB,CACJ,CAAC,EClRK,GAAkB,IAClB,EAA8B,IAC9B,GAAyB,IACzB,GAA0B,IAC1B,EAA2B,GAC3B,GAAgB,GAChB,GAAmB,IACnB,GAAoB,IAEpB,IAA6B,CAC/B,gBACA,iBACA,uBACA,eACA,kBACA,WACiD,CACjD,GAAI,GAAiB,GAAiB,MAAO,aAE7C,IAAM,EAAsB,EAAiB,IACtC,EAAiB,EAAuB,GAC/C,GAAI,GAAS,EAAqB,MAAO,aACzC,GAAI,EAAO,MAAO,SAElB,IAAM,EAAa,KAAK,IAAI,EAAG,CAAY,EACrC,EAAa,KAAK,IAAI,EAAG,EAAiB,CAAe,EAC/D,OAAO,KAAK,IAAI,EAAY,CAAU,EAAI,EAA8B,SAAW,UACvF,EAEM,OAKD,CACD,IAAM,EAAW,OAAO,eACxB,OAAO,EACD,CACE,MAAO,EAAS,MAChB,OAAQ,EAAS,OACjB,UAAW,EAAS,UACpB,WAAY,EAAS,UACzB,EACE,CAAC,MAAO,OAAO,WAAY,OAAQ,OAAO,YAAa,UAAW,EAAG,WAAY,CAAC,CAC5F,EAEM,OACF,OAAO,aAAa,uBAAuB,EAAE,UAAY,IACtD,UAAU,eAAiB,EAG5B,GAAuB,GAAiD,CAC1E,IAAM,EAAW,EAAsB,CAAO,EAC1C,EAAO,GACP,EAA0C,WAC1C,EAAgB,GAChB,EAA6C,KAE3C,MAAgC,EAAQ,SAAS,EAEjD,EAAiB,GAA0B,CACzC,IAAW,IACf,EAAgB,EACZ,EAAQ,EAAmB,EAC1B,EAAqB,EAC9B,EAEM,EAAsB,GAA+B,CACvD,EAAQ,MAAM,eAAe,eAAe,EAC5C,EAAQ,MAAM,eAAe,QAAQ,EACrC,EAAQ,MAAM,eAAe,OAAO,EACpC,EAAQ,MAAM,eAAe,YAAY,EACzC,EAAQ,MAAM,eAAe,WAAW,EACxC,EAAQ,MAAM,eAAe,UAAU,EACvC,EAAQ,MAAM,eAAe,kBAAkB,EAC/C,EAAQ,MAAM,eAAe,OAAO,CACxC,EAEM,GACF,EACA,IACO,CACP,IAAM,EAAW,GAAgB,EAC3B,EAAS,IAAiB,SAC1B,GACA,EACA,EAAW,IAAiB,SAAW,GAAmB,IAC1D,EAAY,IAAiB,SAAW,GAAoB,IAC5D,EAAQ,KAAK,IAAI,EAAU,KAAK,IAAI,EAAG,EAAS,MAAQ,EAAS,CAAC,CAAC,EACnE,EAAS,KAAK,IAAI,EAAW,KAAK,IAAI,EAAG,EAAS,OAAS,EAAS,CAAC,CAAC,EACtE,EAAO,EAAS,YAAc,EAAS,MAAQ,GAAS,EACxD,EAAM,EAAS,WAAa,EAAS,OAAS,GAAU,EAE9D,OAAO,OAAO,EAAQ,MAAO,CACzB,aAAc,2BACd,SAAU,QACV,MAAO,GAAG,EAAI,eAAe,EAAK,IAClC,MAAO,GAAG,EAAM,IAChB,OAAQ,GAAG,EAAO,IAClB,SAAU,OACV,UAAW,OACX,gBAAiB,QACrB,CAAC,CACL,EAEM,MAAuD,CACzD,IAAM,EAAW,GAAgB,EAC3B,EAAY,EAAQ,UAAU,EAAE,sBAAsB,EAC5D,OAAO,GAA0B,CAC7B,cAAe,EAAS,MACxB,eAAgB,EAAS,OACzB,qBAAsB,OAAO,YAC7B,aAAc,EAAU,IAAM,EAAS,UACvC,gBAAiB,EAAU,OAAS,EAAS,UAC7C,MAAO,GAAgB,CAC3B,CAAC,CACL,EAEM,MAAgC,CAClC,GAAI,CAAC,EAAM,OACX,IAAM,EAAU,EAAQ,EAClB,EAAO,EAA2B,EACxC,EAAsB,EACtB,EAAQ,QAAQ,aAAe,EAC/B,IAAM,EAAU,EAAQ,cAA2B,gCAAgC,EAGnF,GAFI,IAAS,EAAQ,MAAM,QAAU,IAAS,WAAa,OAAS,QAEhE,IAAS,WAAY,CACrB,EAAQ,gBAAgB,YAAY,EACpC,EAAQ,gBAAgB,iBAAiB,EACzC,EAAQ,gBAAgB,MAAM,EAC9B,EAAc,EAAK,EACnB,EAAmB,CAAO,EAC1B,EAAS,MAAM,EACf,MACJ,CAEA,EAAS,QAAQ,EACjB,EAAQ,aAAa,OAAQ,QAAQ,EACrC,EAAQ,aAAa,aAAc,MAAM,EACzC,EAAQ,aAAa,kBAAmB,EAAQ,QAAQ,CAAC,EACzD,EAAc,EAAI,EAClB,EAAoB,EAAS,CAAI,CACrC,EAEM,OAAuC,CACzC,IAAM,MAAqB,EAAkB,EACvC,EAAW,OAAO,eAClB,EAAU,OAAO,aAAa,uBAAuB,EAM3D,OALA,OAAO,iBAAiB,SAAU,CAAM,EACxC,OAAO,iBAAiB,oBAAqB,CAAM,EACnD,GAAU,iBAAiB,SAAU,CAAM,EAC3C,GAAU,iBAAiB,SAAU,CAAM,EAC3C,GAAS,iBAAiB,SAAU,CAAM,MAC7B,CACT,OAAO,oBAAoB,SAAU,CAAM,EAC3C,OAAO,oBAAoB,oBAAqB,CAAM,EACtD,GAAU,oBAAoB,SAAU,CAAM,EAC9C,GAAU,oBAAoB,SAAU,CAAM,EAC9C,GAAS,oBAAoB,SAAU,CAAM,CACjD,CACJ,EAEM,MAAmB,CACjB,MACJ,GAAO,GACP,GAAI,CACA,EAAQ,EAAE,YAAY,CAC1B,MAAQ,CAER,CACA,EAAkB,EAClB,EAAwB,GAAiB,CAPlC,CAQX,EAEM,MAAmB,CAChB,KAKL,CAJA,EAAO,GACP,IAAwB,EACxB,EAAwB,KACxB,EAAS,QAAQ,EACjB,EAAc,EAAK,EACnB,GAAI,CACA,EAAQ,EAAE,YAAY,CAC1B,MAAQ,CAER,CALmB,CAMvB,EAEA,MAAO,CACH,WAAc,EACd,KAAM,EACN,MAAO,EACP,KAAM,EACN,QAAS,EACT,iBAAoB,CACxB,CACJ,EC1NM,EAAe,EAAa,CAAC,WAAY,CAC3C,UAAW,YACX,MAAO,CACH,KAAM,CACF,KAAM,qCACV,EACA,QAAS,CACL,KAAM,GACN,SAAU,CACN,KAAM,EACN,OAAQ,EACR,QAAS,CACL,QAAS,GACT,OAAQ,EACZ,EACA,KAAM,CACF,QAAS,GACT,SAAU,GACV,QAAS,yBACT,OAAQ,EACZ,EACA,MAAO,CACH,KAAM,GACN,MAAO,EACX,CACJ,EACA,UAAW,CACP,CAAC,KAAM,CAAC,KAAM,UAAW,MAAO,EAAK,EAAG,MAAO,SAAS,CAC5D,EACA,SAAU,CACN,KAAM,KACN,QAAS,UACT,OAAQ,KACR,KAAM,UACN,MAAO,EACX,CACJ,EACA,OAAQ,CACJ,KAAM,CACF,wGACJ,CACJ,EACA,eAAgB,CACZ,KAAM,uBACV,EACA,MAAO,CACH,KAAM,gBACV,EACA,YAAa,CACT,KAAM,uCACV,EACA,MAAO,CACH,KAAM,CACF,yBACA,CACJ,CACJ,EACA,OAAQ,CACJ,KAAM,CACF,0DACA,SACJ,CACJ,EACA,YAAa,CACT,KAAM,CACF,yBACA,CACJ,CACJ,EACA,YAAa,CACT,KAAM,EACV,EACA,aAAc,CACV,KAAM,sCACV,EACA,WAAY,CACR,KAAM,+CACV,EACA,WAAY,CACR,KAAM,CACF,8GACA,iEACJ,CACJ,EACA,MAAO,CACH,KAAM,2CACV,EACA,KAAM,CACF,KAAM,CACF,UACJ,CACJ,EACA,UAAW,CACP,KAAM,+BACV,EACA,WAAY,CACR,KAAM,EACV,EACA,KAAM,CACF,KAAM,yDACN,SAAU,CACN,SAAU,CACN,QAAS,GACT,SAAU,EACd,CACJ,EACA,SAAU,CACN,SAAU,SACd,CACJ,EACA,OAAQ,CACJ,KAAM,CACV,EACA,QAAS,CACL,KAAM,CACF,EACA,oCACJ,CACJ,EACA,QAAS,CACL,KAAM,sBACV,EACA,SAAU,CACN,KAAM,8BACV,EACA,QAAS,CACL,KAAM,0DACV,EACA,OAAQ,CACJ,KAAM,4BACV,EACA,OAAQ,CACJ,KAAM,CACF,EACA,oDACA,yDACA,iDACJ,CACJ,EACA,YAAa,CACT,KAAM,yBACV,EACA,WAAY,CACR,KAAM,iCACV,EACA,WAAY,CACR,KAAM,EACN,SAAU,CACN,SAAU,CACN,QAAS,GACT,SAAU,SACd,CACJ,EACA,SAAU,CACN,SAAU,SACd,CACJ,EACA,gBAAiB,CACb,KAAM,CACV,EACA,MAAO,CACH,KAAM,wCACV,EACA,MAAO,CACH,KAAM,kCACV,EACA,MAAO,CACH,KAAM,iEACV,EACA,cAAe,CACX,KAAM,+DACV,EACA,cAAe,CACX,KAAM,wDACV,EACA,cAAe,CACX,KAAM,yBACV,EACA,OAAQ,CACJ,KAAM,CACF,EACA,uBACJ,EACA,SAAU,CACN,KAAM,EACN,OAAQ,CACZ,EACA,SAAU,CACN,KAAM,KACN,OAAQ,IACZ,CACJ,EACA,WAAY,CACR,KAAM,gGACV,CACJ,CACJ,CAAC,CAAC,EC/FI,EAAiB,0DACjB,GAA2B,oDAE3B,GAA2B,GAAqB,CAClD,GAAI,EAAE,aAAgB,SAAU,CAC5B,EAAK,WAAW,QAAQ,EAAuB,EAC/C,MACJ,CAEA,MAAM,KAAK,EAAK,UAAU,EAAE,QAAS,GAAc,CAC/C,IAAM,EAAO,EAAU,MAEnB,IAAS,MACN,IAAS,QACT,IAAS,YACT,EAAK,WAAW,eAAe,GAC/B,EAAK,WAAW,eAAe,GAC/B,EAAK,WAAW,uBAAuB,GACvC,EAAK,WAAW,eAAe,GAC/B,EAAK,WAAW,kBAAkB,GAClC,EAAK,WAAW,eAAe,GAC/B,EAAK,WAAW,IAAI,GACpB,EAAK,WAAW,GAAG,GACnB,EAAK,WAAW,GAAG,GACnB,EAAK,WAAW,IAAI,IACzB,EAAK,gBAAgB,CAAI,CAC/B,CAAC,EAED,EAAK,WAAW,QAAQ,EAAuB,EAC/C,EAAK,aAAa,WAAY,MAAM,CACxC,EAEM,GAAsB,GAA4C,CACpE,IAAM,EAAW,SAAS,uBAAuB,EAOjD,OANA,MAAM,KAAK,CAAK,EAAE,QAAS,GAAS,CAChC,GAAI,aAAgB,qBAAuB,EAAK,QAAQ,EAAwB,EAAG,OACnF,IAAM,EAAQ,EAAK,UAAU,EAAI,EACjC,GAAwB,CAAK,EAC7B,EAAS,OAAO,CAAK,CACzB,CAAC,EACM,CACX,EAEM,IAAe,EAAyB,IAC1C,EAAK,SAAW,EAAM,QAAU,EAAK,OAAO,EAAO,IAAU,IAAU,EAAM,EAAM,EAGjF,OAAqD,CACvD,IAAI,EAA+D,KAC/D,EAAyB,GACzB,EAAW,GACX,EAAU,GACV,EAAY,GACZ,EAAY,GACZ,EAAgC,KAChC,EAA0C,KAC1C,EAAwB,CAAC,EACzB,EAAkB,GAClB,GAAW,GACX,EAAiB,GACjB,EAAyB,GACzB,EAAmC,KACnC,EAAY,GACZ,EAAiB,EAEf,MAA0B,CAC5B,GAAI,CAAC,EAAQ,MAAU,MAAM,kCAAkC,EAC/D,OAAO,CACX,EAEM,MAA6B,CAC/B,IAAM,EAAK,EAAK,EAAE,cAA2B,0BAA0B,EACvE,GAAI,CAAC,EAAI,MAAU,MAAM,oCAAoC,EAC7D,OAAO,CACX,EAEM,MAA6B,CAC/B,IAAM,EAAK,EAAK,EAAE,cAA2B,2EAA2E,EACxH,GAAI,CAAC,EAAI,MAAU,MAAM,oCAAoC,EAC7D,OAAO,CACX,EAEM,MAAuC,EAAK,EAAE,cAAgC,wBAAwB,EACtG,MAA6C,EAAK,EAAE,cAAgC,+BAA+B,EACnH,MAAgC,CAClC,IAAM,EAAK,EAAK,EAAE,cAA2B,8BAA8B,EAC3E,GAAI,CAAC,EAAI,MAAU,MAAM,2CAA2C,EACpE,OAAO,CACX,EAEM,MAAkC,CACpC,IAAM,EAAK,EAAK,EAAE,cAA2B,0BAA0B,EACvE,GAAI,CAAC,EAAI,MAAU,MAAM,oCAAoC,EAC7D,OAAO,CACX,EAEM,MAA6B,CAC/B,IAAM,EAAK,EAAK,EAAE,cAA2B,0BAA0B,EACvE,GAAI,CAAC,EAAI,MAAU,MAAM,oCAAoC,EAC7D,OAAO,CACX,EAEM,OAA+B,CACjC,IAAM,EAAK,EAAK,EAAE,cAA2B,0BAA0B,EACvE,GAAI,CAAC,EAAI,MAAU,MAAM,qCAAqC,EAC9D,OAAO,CACX,EAEM,OAAoC,EAAK,EAAE,cAA2B,wBAAwB,EAC9F,MAA2C,EAAK,EAAE,cAA2B,gCAAgC,EAC7G,MAA4C,EAAO,qBAAqB,EAAE,MAC1E,MAAgD,EAAO,qBAAqB,EAAE,QAC9E,MAA4B,EAAO,OAAO,UAAU,EACpD,MAA2B,EAAO,OAAO,SAAS,EAElD,IAAsB,EAAiB,IAAyC,CAClF,IAAM,EAAW,EAAG,QAAQ,OAAS,EAAG,aAAa,YAAY,GAAK,GACtE,GAAI,EAAU,OAAO,EACrB,GAAI,EAAG,QAAQ,UAAW,OAAO,EAAG,QAAQ,UAC5C,IAAM,EAAY,GAAa,GAAc,EAAG,QAAQ,IAAI,EAAG,EAAM,IAAI,EAGzE,OAFI,GAAyC,MAC/B,EAAG,cAA2B,+BACpC,GAAO,aAAe,EAAG,aAAe,IAAI,KAAK,EAFC,OAAO,CAAS,CAG9E,EAEM,GAAe,CACjB,QACA,QACA,oBAKkB,CAClB,IAAM,EAAkB,EAAoB,CAAK,EAC3C,EAAU,MAAM,KAAK,EAAK,EAAE,iBAA8B,CAAc,CAAC,EAAE,KAAK,EAAI,IAAU,CAChG,IAAM,EAAQ,GAAmB,EAAI,CAAK,EACpC,EAAQ,EAAG,QAAQ,OAAS,EAC5B,EAAS,EAAG,aAAa,8BAA8B,EACvD,EAAQ,IAAoB,IAAM,EAAoB,CAAK,IAAM,EACjE,GAAU,CAAC,EAAM,QAChB,IAAoB,IACpB,EAAoB,GAAG,EAAM,GAAG,EAAG,QAAQ,QAAU,IAAI,EAAE,SAAS,CAAe,EACpF,EAAY,OAAO,EAAG,QAAQ,WAAa,GAAG,EACpD,MAAO,CACH,KACA,GAAI,EAAG,IAAM,GAAG,EAAU,UAAU,IACpC,MAAO,EAAS,EAAG,QAAQ,OAAS,EAAQ,EAC5C,QACA,cAAe,EAAG,QAAQ,eAAiB,EAC3C,SAAU,EAAO,CAAC,MAAO,EAAG,QAAQ,QAAQ,CAAC,EAC7C,SAAU,EAAe,SAAS,CAAK,EACvC,QAAS,EAAS,EAAM,QAAU,GAAa,CAAC,EAAQ,GACxD,QACJ,CACJ,CAAC,EAED,OADc,EAAQ,KAAM,GAAW,CAAC,EAAO,QAAU,EAAoB,EAAO,KAAK,IAAM,CACxF,EAAQ,EAAQ,IAAK,GAAW,EAAO,OAAS,CAAC,GAAG,EAAQ,QAAS,EAAK,EAAI,CAAM,EAAI,CACnG,EAEM,GAAW,EAAQ,EAAe,EAAE,OAAO,QAA0B,EAAY,CACnF,MAAO,EAAa,EACpB,QACA,eAAgB,EAAe,EAAE,UAAU,MAC/C,CAAC,EAEK,GAAyB,EAAQ,EAAe,EAAE,OAAO,QAC3D,EAAQ,CAAK,EAAE,OAAQ,GAAW,EAAO,SAAW,CAAC,EAAO,UAAY,CAAC,EAAO,MAAM,EAGpF,GACF,EACA,EAA+B,EAAa,IACf,CAC7B,IAAM,EAAS,MAAM,KAAK,IAAI,IAAI,EAAO,OAAO,OAAO,CAAC,CAAC,EACnD,EAAa,EAAM,SAAW,EAAS,EAAO,MAAM,EAAG,CAAC,EACxD,EAAU,EAAY,CAAC,QAAO,MAAO,GAAI,eAAgB,CAAU,CAAC,EAC1E,MAAO,CACH,OAAQ,EACR,OAAQ,EAAW,IAAK,GAAU,EAAQ,KAAM,GAAW,EAAO,QAAU,CAAK,GAAG,eAAiB,CAAK,CAC9G,CACJ,EAEM,EAAmB,GACrB,EAAM,SACA,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,EAAM,OAAQ,GAAI,EAAM,MAAQ,CAAC,EAAM,KAAK,EAAI,CAAC,CAAE,CAAC,CAAC,EAC5E,EAAM,MAAQ,CAAC,EAAM,KAAK,EAAI,EAAM,OAAO,MAAM,EAAG,CAAC,EAGzD,GAAkB,GAAsC,CAC1D,IAAM,EAAW,EAAgB,CAAK,EAChC,EAAsB,EAAY,CAAC,QAAO,MAAO,GAAI,eAAgB,CAAC,CAAC,CAAC,EACzE,OAAQ,GAAW,EAAO,CAAC,MAAO,EAAO,GAAG,QAAQ,QAAQ,CAAC,CAAC,EAC9D,IAAK,GAAW,EAAO,KAAK,EACjC,MAAO,CACH,UAAW,EAAmB,EAAS,OAAS,EAAI,EAAW,EAAqB,CAAK,EACzF,OAAQ,CAAC,MAAO,GAAI,UAAW,EAAE,EACjC,WAAY,CAAC,YAAa,EAAE,EAC5B,SAAU,CAAC,MAAO,EAAE,CACxB,CACJ,EAEM,MAAgC,CAClC,GAAM,CAAC,aAAa,EAAe,EAC7B,EAAQ,EAAa,EAG3B,OAFI,EAAU,OAAO,SAAW,GAAM,EAAM,OAAS,WAAa,EAAM,SAAkB,GACtF,EAAM,UAAY,EAAU,OAAO,OAAS,EAAU,GAAG,EAAU,OAAO,OAAO,GAAG,EAAM,SACvF,EAAU,OAAO,IAAM,EAAU,OAAO,IAAM,EACzD,EAEM,EAAmB,GAA2C,CAChE,IAAM,EAAW,EAAO,GAAG,cAAmC,EAAwB,EACtF,GAAI,EAAU,OAAO,GAAmB,EAAS,QAAQ,UAAU,EACnE,IAAM,EAAS,EAAO,GAAG,cAA2B,0CAA0C,GACvF,EAAO,GAAG,cAA2B,+BAA+B,EAC3E,GAAI,EAAQ,OAAO,GAAmB,EAAO,UAAU,EACvD,IAAM,EAAW,SAAS,uBAAuB,EAEjD,OADA,EAAS,OAAO,SAAS,eAAe,EAAO,aAAa,CAAC,EACtD,CACX,EAEM,OAAuB,CACzB,IAAM,EAAQ,EAAa,EAC3B,GAAI,EAAwB,CACxB,IAAM,EAAS,EAAe,EAAE,UAAU,QACtC,EAAW,GAAK,CAAC,EAAM,MAAS,CAAC,EAAM,UAAY,CAAC,EAAM,WAC1D,EAAkB,CAAC,GAAI,EAAK,EAAG,OAAQ,EAAc,IAAK,OAAQ,MAAO,EAAW,CAAC,CAAC,EAE1F,EAAkB,CACd,GAAI,EAAK,EACT,OAAQ,EACR,IAAK,QACL,MAAO,EAAM,SAAW,GAAK,EAAO,IAAM,EAC9C,CAAC,EACD,EAAkB,CACd,GAAI,EAAK,EACT,OAAQ,EACR,IAAK,SACL,MAAO,EAAM,SAAW,CAAC,GAAG,CAAM,EAAI,CAAC,CAC3C,CAAC,CACL,CACA,EAAK,EAAE,QAAQ,MAAQ,EAAW,EAAI,OAAS,SAC/C,EAAK,EAAE,QAAQ,KAAO,EAAM,KAC5B,GAAoB,CAAC,GAAI,EAAK,EAAG,MAAO,CACpC,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,QAAS,EAAM,OACnB,EAAG,MAAO,MAAM,CAAC,CACrB,EAEM,MAA2B,EAAa,EAAE,OAAS,WAAa,EAAa,EAAE,SAE/E,OAA0B,CAC5B,IAAM,EAAQ,EAAa,EACrB,EAAQ,EAAU,GAAK,EAAe,EAAE,UAAU,OAAO,SAAW,EACpE,EAAK,EAAQ,EACnB,EAAG,UAAY,EAAa,CACxB,KAAM,EAAa,MAAM,QACzB,MAAO,CAAC,GAAG,EAAO,KAAM,EAAU,EAAI,UAAY,EAAM,OAAS,WAAa,WAAa,UAAW,OAAK,CAC/G,CAAC,EACD,EAAG,QAAQ,MAAQ,EAAW,EAAI,OAAS,SAC3C,EAAG,QAAQ,KAAO,EAAU,EAAI,UAAY,EAAM,KAClD,EAAY,CAAC,KAAI,KAAM,iCAAkC,QAAS,EAAU,EAAG,MAAO,EAAE,CAAC,EACzF,EAAY,CAAC,KAAI,KAAM,aAAc,QAAS,EAAO,MAAO,MAAM,CAAC,EACnE,GAAoB,CAAC,KAAI,MAAO,CAAC,SAAU,EAAM,SAAU,QAAS,EAAM,OAAO,EAAG,MAAO,MAAM,CAAC,CACtG,EAEM,OAA0B,CAC5B,IAAM,EAAQ,EAAa,EACrB,EAAK,EAAQ,EACnB,EAAG,KAAO,EACV,EAAG,QAAQ,MAAQ,EAAW,EAAI,OAAS,SAC3C,EAAG,aAAa,gBAAiB,SAAS,EAC1C,EAAG,aAAa,gBAAiB,EAAW,EAAI,OAAS,OAAO,EAChE,EAAG,aAAa,gBAAiB,CAAS,EAC1C,EAAY,CAAC,KAAI,KAAM,eAAgB,QAAS,EAAM,QAAS,MAAO,MAAM,CAAC,EACzE,aAAc,oBAAmB,EAAG,SAAW,EAAM,UAEzD,IAAM,EAAU,EAAgB,EAC1B,EAAU,EAAK,EAAE,cAA2B,+BAA+B,EAC3E,EAAc,EAAK,EAAE,cAA2B,qCAAqC,EAC3F,GAAI,EAAS,CACT,EAAQ,gBAAgB,EACxB,IAAM,EAAW,EAAe,EAAE,UAAU,OAAO,SAAW,GAAK,EAC7D,EAAQ,EAAE,EAAE,KAAM,GAAW,EAAO,QAAU,EAAe,EAAE,UAAU,OAAO,EAAE,EAClF,IAAA,GACF,EAAU,EAAQ,OAAO,EAAgB,CAAQ,CAAC,EACjD,EAAQ,YAAc,EAC3B,EAAQ,OAAS,IAAY,EACjC,CACI,IACA,EAAY,OAAS,EAAU,EACzB,EAAe,EAAE,UAAU,OAAO,OAAS,EAC3C,IAAY,IAGtB,EAAK,EAAE,iBAA8B,uDAAuD,EAAE,QAAS,GAAU,CAC7G,EAAM,OAAS,EAAM,UAAY,CAAC,EAAM,WAAa,EAAe,EAAE,UAAU,OAAO,SAAW,EAC9F,aAAiB,oBAAmB,EAAM,SAAW,EAAM,SACnE,CAAC,EACD,EAAK,EAAE,iBAA8B,+BAA+B,EAAE,QAAS,GAAU,CACrF,EAAM,OAAS,EAAM,UAAY,CAAC,EAAe,EAAE,OAAO,MACtD,aAAiB,oBAAmB,EAAM,SAAW,EAAM,SACnE,CAAC,CACL,EAEM,OAAyB,CAC3B,IAAM,EAAQ,EAAa,EACrB,EAAU,EAAe,EACzB,EAAU,EAAM,EAClB,IACA,EAAQ,KAAO,EACf,EAAQ,UAAY,EAAa,CAAC,KAAM,EAAa,MAAM,MAAO,UAAW,EAAM,UAAU,CAAC,EAC9F,EAAQ,MAAQ,EAAU,GAEpB,EAAW,GAAK,EADhB,EAAQ,OAAO,MACyC,EAAgB,EAC9E,EAAQ,YAAc,EAAU,GAAK,EAAQ,UAAU,OAAO,OAAS,EAAI,GAAK,EAAM,YACtF,EAAQ,aAAa,OAAQ,UAAU,EACvC,EAAQ,aAAa,eAAgB,KAAK,EAC1C,EAAQ,aAAa,oBAAqB,MAAM,EAChD,EAAQ,aAAa,gBAAiB,EAAW,EAAI,OAAS,OAAO,EACrE,EAAQ,aAAa,gBAAiB,CAAS,EAC/C,GAAkB,CAAC,MAAO,EAAS,MAAO,CACtC,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,eAAgB,GAChB,QAAS,EAAM,QACf,aAAc,EAAM,QACxB,CAAC,CAAC,GAGN,IAAM,EAAS,EAAY,EACvB,IACA,EAAO,MAAQ,EAAQ,OAAO,MAC9B,EAAO,SAAW,EAAM,SACxB,EAAO,SAAW,EAAM,UAG5B,IAAM,EAAS,EAAQ,EAAE,KAAM,GAAW,EAAO,QAAU,EAAQ,WAAW,WAAW,EACzF,CAAC,EAAQ,EAAG,EAAS,EAAQ,EAAQ,CAAC,EAAE,QAAS,GAAY,CACrD,GAAQ,GAAI,GAAS,aAAa,wBAAyB,EAAO,EAAE,EACnE,GAAS,gBAAgB,uBAAuB,CACzD,CAAC,CACL,EAEM,OAA0B,CAC5B,IAAM,EAAQ,EAAa,EACrB,EAAU,EAAU,EACpB,EAAM,EAAQ,EACpB,EAAQ,GAAK,GAAG,EAAU,UAC1B,EAAQ,UAAY,EAAa,CAAC,KAAM,EAAa,MAAM,QAAS,QAAO,UAAW,EAAM,YAAY,CAAC,EACzG,EAAQ,QAAQ,UAAY,EAAM,QAClC,EAAQ,QAAQ,YAAc,EAAM,UACpC,EAAQ,aAAa,UAAW,QAAQ,EACxC,EAAQ,QAAQ,MAAQ,EAAW,EAAI,OAAS,SAChD,EAAQ,OAAS,CAAC,EAAU,EAC5B,EAAI,GAAK,EACT,EAAI,aAAa,OAAQ,SAAS,EAClC,EAAI,SAAW,GACf,EAAI,aAAa,kBAAmB,EAAQ,EAAE,EAAE,EAChD,EAAY,CAAC,GAAI,EAAK,KAAM,uBAAwB,QAAS,EAAM,SAAU,MAAO,MAAM,CAAC,CAC/F,EAEM,OAA0B,CAC5B,IAAM,EAAU,EAAe,EAC/B,EAAK,EAAE,iBAA8B,+BAA+B,EAAE,QAAS,GAAU,CACrF,EAAM,YAAc,EAAQ,OAAO,KACvC,CAAC,EACD,IAAM,EAAU,EAAQ,EACxB,EAAQ,QAAS,GAAW,CACxB,EAAO,GAAG,GAAK,EAAO,GACtB,EAAO,GAAG,OAAS,CAAC,EAAO,QAC3B,EAAO,GAAG,aAAa,OAAQ,QAAQ,EACvC,EAAO,GAAG,aAAa,gBAAiB,EAAO,SAAW,OAAS,OAAO,EACrE,EAAO,SAAQ,EAAO,GAAG,QAAQ,MAAQ,EAAO,OAChD,EAAO,SAAQ,EAAO,GAAG,QAAQ,MAAQ,EAAO,OACrD,EAAY,CAAC,GAAI,EAAO,GAAI,KAAM,gBAAiB,QAAS,EAAO,SAAU,MAAO,MAAM,CAAC,EAC3F,EAAY,CAAC,GAAI,EAAO,GAAI,KAAM,mBAAoB,QAAS,EAAO,QAAU,EAAQ,WAAW,YAAa,MAAO,MAAM,CAAC,EAC9H,EAAY,CAAC,GAAI,EAAO,GAAI,KAAM,gBAAiB,QAAS,EAAO,SAAU,MAAO,MAAM,CAAC,EAC3F,EAAY,CAAC,GAAI,EAAO,GAAI,KAAM,gBAAiB,QAAS,EAAO,SAAU,MAAO,MAAM,CAAC,EAC3F,EAAO,GAAG,iBAA8B,mCAAmC,EAAE,QAAS,GAAc,CAChG,EAAY,CAAC,GAAI,EAAW,KAAM,gBAAiB,QAAS,EAAO,SAAU,MAAO,MAAM,CAAC,CAC/F,CAAC,CACL,CAAC,EACD,IAAM,EAAQ,EAAK,EAAE,cAA2B,+BAA+B,EAC3E,IAAO,EAAM,OAAS,EAAQ,KAAM,GAAW,EAAO,SAAW,CAAC,EAAO,MAAM,EACvF,EAEM,OAAmC,KAAK,UAC1C,MAAM,KAAK,EAAK,EAAE,iBAA8B,CAAc,CAAC,EAAE,IAAK,IAAY,CAC9E,OAAQ,EAAO,aAAa,8BAA8B,EAC1D,MAAO,EAAO,QAAQ,OAAS,GAC/B,MAAO,EAAO,aAAa,8BAA8B,EACnD,EAAO,aAAa,KAAK,GAAK,GAC9B,EAAO,QAAQ,OAAS,EAAO,aAAa,KAAK,GAAK,GAC5D,SAAU,EAAO,QAAQ,UAAY,GACrC,SAAU,EAAO,QAAQ,UAAY,EACzC,EAAE,CACN,EAEM,OAAwB,CAC1B,IAAM,EAAY,GAAQ,EAC1B,GAAI,CAAC,EAAW,OAChB,IAAM,EAAQ,EAAa,EACrB,EAAU,EAAe,EACzB,EAAU,EAAQ,EAAE,EACpB,EAAQ,EAAQ,UAAU,OAAO,KAAK,EAAO,KAAW,CAC1D,QACA,MAAO,EAAQ,UAAU,OAAO,IAAU,EAC1C,SAAU,EAAQ,KAAM,GAAW,EAAO,QAAU,CAAK,GAAG,UAAY,EAC5E,EAAE,EACI,EAAM,KAAK,UAAU,CAAC,QAAO,QAAS,EAAU,EAAG,SAAU,EAAM,SAAU,SAAU,EAAM,SAC/F,QAAS,EAAM,YAAa,MAAO,EAAM,UAAW,UAAW,EAAM,SAAS,CAAC,EAKnF,GAJI,IAAQ,KACZ,GAAW,EACX,EAAU,gBAAgB,EAC1B,EAAU,OAAS,CAAC,EAAU,GAAK,EAAM,SAAW,EAChD,EAAU,QAAQ,OAEtB,IAAM,EAAY,EAAa,CAC3B,KAAM,GAAY,MAAM,KACxB,MAAO,CAAC,QAAS,EAAM,YAAa,MAAO,EAAM,UAAW,KAAM,KAAM,OAAQ,IAAI,EACpF,UAAW,EAAa,CAAC,KAAM,EAAa,MAAM,KAAM,MAAO,CAAC,EAAG,UAAW,EAAM,SAAS,CAAC,CAClG,CAAC,EACK,EAAa,EAAa,CAAC,KAAM,EAAa,MAAM,SAAS,CAAC,EAC9D,EAAc,EAAa,CAC7B,KAAM,GAAY,MAAM,MACxB,MAAO,CAAC,KAAM,IAAI,EAClB,UAAW,EAAa,CAAC,KAAM,EAAa,MAAM,UAAU,CAAC,CACjE,CAAC,EAED,EAAM,QAAS,GAAa,CACxB,IAAM,EAAO,SAAS,cAAc,MAAM,EAC1C,EAAK,UAAY,EACjB,EAAK,aAAa,gBAAiB,EAAE,EACrC,EAAK,aAAa,wBAAyB,OAAO,EAClD,EAAK,aAAa,sBAAuB,EAAE,EAC3C,EAAK,QAAQ,MAAQ,EAAS,MAC9B,EAAK,QAAQ,QAAU,EAAM,YAC7B,EAAK,QAAQ,MAAQ,EAAM,UAC3B,EAAK,QAAQ,KAAO,KACpB,EAAK,QAAQ,OAAS,KACtB,IAAM,EAAQ,SAAS,cAAc,MAAM,EAC3C,EAAM,UAAY,EAClB,EAAM,aAAa,4BAA6B,EAAE,EAClD,EAAM,YAAc,EAAS,MAC7B,EAAK,OAAO,CAAK,EACjB,IAAM,EAAS,SAAS,cAAc,QAAQ,EAC9C,EAAO,KAAO,SACd,EAAO,UAAY,EACnB,EAAO,aAAa,sBAAuB,EAAE,EAC7C,EAAO,aAAa,6BAA8B,EAAE,EACpD,EAAO,QAAQ,MAAQ,EAAS,MAChC,EAAO,aAAa,aAAc,UAAU,EAAS,OAAO,EAC5D,EAAO,SAAW,EAAM,UAAY,EAAM,UAAY,EAAS,SAC/D,IAAM,EAAO,EAAK,EAAE,cAAmC,mCAAmC,EACtF,EAAM,EAAO,OAAO,EAAK,QAAQ,UAAU,EAAI,CAAC,EAC/C,EAAO,YAAc,IAC1B,EAAK,OAAO,CAAM,EAClB,EAAU,OAAO,CAAI,CACzB,CAAC,CACL,EAEM,OAA+B,CACjC,IAAM,EAAY,EAAe,EACjC,GAAI,CAAC,EAAW,OAChB,IAAM,EAAQ,EAAa,EAC3B,EAAkB,GAAyB,CAAC,YAAW,MAAO,CAC1D,KAAM,EAAM,KACZ,SAAU,EAAM,SAChB,OAAQ,EAAM,SAAW,CAAC,EAAI,CAAC,GAAG,EAAe,EAAE,UAAU,MAAM,EACnE,KAAM,EAAK,EAAE,QAAQ,MAAQ,GAC7B,OAAQ,6BACZ,EAAG,WAAY,CAAe,CAAC,CACnC,EAEM,MAAsB,CACxB,GAAS,EACT,GAAY,EACZ,GAAY,EACZ,GAAW,EACX,GAAY,EACZ,GAAY,EACZ,GAAU,EACV,GAAiB,CACrB,EAEM,OAA2B,CAC7B,GAAI,CAAC,EAAO,OAAO,aAAa,EAAG,OACnC,IAAM,EAAQ,EAAa,EACvB,GAAS,aAAa,IAAM,WAGrB,EAAM,OAAS,WAAY,EAAM,GAAG,MAAM,CAAC,cAAe,EAAI,CAAC,GAChE,EAAM,YAAc,EAAU,IAAM,EAAY,EAAG,EAAY,GAAG,MAAM,CAAC,cAAe,EAAI,CAAC,EAClG,EAAQ,EAAE,MAAM,CAAC,cAAe,EAAI,CAAC,GAJrC,EAAY,GAAK,EAAK,EAAE,cAA2B,8BAA8B,GAAK,EAAQ,GAC1F,MAAM,CAAC,cAAe,EAAI,CAAC,CAIxC,EAEM,MAA+B,CACjC,IAAM,EAAU,EAAe,EACzB,EAAY,EAAmB,EAAQ,UAAU,MAAM,EACxD,GAAY,EAAU,OAAQ,EAAQ,UAAU,MAAM,GACvD,EAAO,KAAK,CAAC,KAAM,sBAAuB,GAAG,CAAS,CAAC,EAE3D,IAAM,EAAU,EAAsB,EAClC,EAAQ,WAAW,aAAe,CAAC,EAAQ,KAAM,GAAW,EAAO,QAAU,EAAQ,WAAW,WAAW,GAC3G,EAAO,KAAK,CAAC,KAAM,SAAU,MAAO,EAAa,EAAE,cAAgB,EAAQ,IAAI,OAAS,GAAK,EAAE,CAAC,EAEpG,EAAQ,CACZ,EAEM,GAAgB,GAAyC,CAK3D,IAJgB,MAAM,QAAQ,EAAM,OAAO,EAAI,EAAM,QAAU,CAAC,GAC3C,QAAS,GAC1B,GAAU,OAAO,GAAW,UAAY,QAAS,EAAS,CAAC,OAAO,EAAO,GAAG,CAAC,EAAI,CAAC,CAElF,EAAK,KAAM,GAAQ,IAAQ,SAAW,IAAQ,UAAY,IAAQ,UAAU,EAAG,CAC/E,IAAM,EAAY,EAAmB,EAAgB,EAAa,CAAC,CAAC,EACpE,EAAO,KAAK,CAAC,KAAM,sBAAuB,GAAG,CAAS,CAAC,CAC3D,CACA,EAAQ,CACZ,EAEM,EAAS,GAAoB,CAC/B,OAAQ,EACR,MAAO,GACP,eAAgB,CAAC,WAAW,GAAoB,CAC5C,QACA,QAAS,GAAe,CAAK,EAC7B,QAAS,CACL,gBAAmB,CACf,EAAyB,GACzB,GAAS,KAAK,EACd,EAAQ,EACR,eAAe,EAAY,CAC/B,EACA,eAAkB,CACd,EAAQ,EACR,EAAS,CAAC,GAAI,EAAK,EAAG,KAAM,SAAS,CAAC,CAC1C,EACA,cAAe,CAAC,WAAW,CACvB,EAAiB,GACjB,EAAyB,EAAM,eAAiB,IACzC,EAAM,OAAS,UACf,EAAM,OAAS,SAClB,GAAwB,EAAQ,EAAE,MAAM,CAAC,cAAe,EAAI,CAAC,EACjE,EAAQ,CACZ,EACA,gBAAmB,CACf,GAAS,MAAM,EACf,EAAQ,EACJ,GAAwB,EAAQ,EAAE,MAAM,CAAC,cAAe,EAAI,CAAC,EACjE,EAAyB,GACzB,EAAS,CAAC,GAAI,EAAK,EAAG,KAAM,UAAU,CAAC,CAC3C,EACA,iBAAkB,CAAC,WAAW,CAC1B,EAAQ,EACR,GAA4B,CACxB,UAAW,EAAe,EAC1B,SAAU,EAAK,EACf,OAAQ,6BACZ,CAAC,EACD,GAAM,CAAC,aAAa,EAAe,EAC/B,EAAM,OAAS,SAAS,EAAS,CAAC,GAAI,EAAK,EAAG,KAAM,UAAU,CAAC,EACnE,EAAS,CAAC,GAAI,EAAK,EAAG,KAAM,YAAa,OAAQ,CAC7C,MAAO,EAAU,OAAO,IAAM,GAC9B,OAAQ,CAAC,GAAG,EAAU,MAAM,EAC5B,MAAO,EAAU,OAAO,IAAM,GAC9B,OAAQ,CAAC,GAAG,EAAU,MAAM,EAC5B,OAAQ,CACZ,CAAC,CAAC,EACF,EAAe,IACnB,EACA,iBAAoB,CAChB,EAAQ,EACR,EAAS,CAAC,GAAI,EAAK,EAAG,KAAM,YAAa,OAAQ,CAAC,OAAQ,EAAe,EAAE,OAAO,KAAK,CAAC,CAAC,CAC7F,EACA,eAAgB,CAAC,WAAW,CACxB,EAAQ,EACR,EAAS,CAAC,GAAI,EAAK,EAAG,KAAM,YAAa,OAAQ,CAC7C,OAAQ,EAAe,EAAE,OAAO,MAChC,MAAO,EAAe,EAAE,SAAS,MACjC,MAAO,OAAO,EAAM,OAAU,SAAW,EAAM,MAAQ,EAC3D,CAAC,CAAC,CACN,EACA,WAAY,CAAC,WAAW,GAAa,CAAK,EAC1C,YAAa,EACb,WAAY,CAChB,CACJ,CAAC,CACL,CAAC,EAEK,GACF,EACA,IACO,EAAO,KAAK,CAAC,OAAM,GAAG,CAAS,CAAC,EAErC,GAAgB,EAAsB,IAAwB,CAChE,GAAO,eAAe,EACtB,IAAM,EAAQ,EAAa,EACvB,OAAM,UAAY,EAAM,UAAY,EAAO,UAC/C,IAAI,EAAO,OAAQ,CACf,EAAO,KAAK,CACR,KAAM,SACN,MAAO,EAAO,OAAS,EAAe,EAAE,OAAO,MAC/C,MAAO,EAAO,GAAG,QAAQ,OAAS,EACtC,CAAC,EACD,MACJ,CAEA,EAAe,EAAO,GACtB,EAAiB,GAMjB,EAAc,SAAU,EALT,EAAM,SACf,EAAe,EAAE,UAAU,OAAO,SAAS,EAAO,KAAK,EACnD,EAAe,EAAE,UAAU,OAAO,OAAQ,GAAU,IAAU,EAAO,KAAK,EAC1E,CAAC,GAAG,EAAe,EAAE,UAAU,OAAQ,EAAO,KAAK,EACvD,CAAC,EAAO,KAAK,CAC8B,CAAC,CATlD,CAUJ,EAEM,EAAa,GAAwB,CACvC,GAAI,IAAU,EAAe,EAAE,WAAW,YAAa,OACvD,EAAO,KAAK,CAAC,KAAM,SAAU,OAAK,CAAC,EACnC,IAAM,EAAS,EAAQ,EAAE,KAAM,GAAc,EAAU,QAAU,CAAK,EACtE,EAAS,CAAC,GAAI,EAAK,EAAG,KAAM,eAAgB,OAAQ,CAAC,QAAO,OAAQ,GAAQ,IAAM,IAAI,CAAC,CAAC,CAC5F,EAEM,GAAc,GAAwB,CACxC,IAAM,EAAU,EAAsB,EACtC,GAAI,EAAQ,SAAW,EAAG,OAC1B,IAAM,EAAU,EAAQ,UAAW,GAAW,EAAO,QAAU,EAAe,EAAE,WAAW,WAAW,EAClG,EAAQ,EAAU,EAAI,EAAQ,EAAI,EAAI,EAAQ,OAAS,EAAI,EAAU,EACrE,GAAS,EAAQ,SAAQ,EAAQ,EAAa,EAAE,KAAO,EAAI,EAAQ,OAAS,GAC5E,EAAQ,IAAG,EAAQ,EAAa,EAAE,KAAO,EAAQ,OAAS,EAAI,GAClE,EAAU,EAAQ,IAAQ,OAAS,EAAE,CACzC,EAEM,EAAa,GAAwB,CACvC,IAAM,EAAQ,EAAa,EAC3B,GAAI,EAAM,UAAY,EAAM,SAAU,OACtC,EAAiB,GACjB,IAAM,EAAQ,EAAM,cAAgB,EAAsB,CAAK,EAAE,IAAI,OAAS,GAAK,GACnF,EAAO,KAAK,CAAC,KAAM,SAAU,QAAO,YAAW,YAAa,CAAK,CAAC,CACtE,EAEM,GAAiB,GAA+B,CAClD,GAAI,EAAM,MAAQ,OAAS,GAAS,aAAa,IAAM,WAAY,CAC/D,GAAU,EAAO,EAAU,CAAC,EAC5B,MACJ,CACA,IAAM,EAAY,EAAM,kBAAkB,iBAC1C,GAAI,EAAM,MAAQ,aAAe,EAAM,MAAQ,UAAW,CACtD,EAAM,eAAe,EAChB,EAAW,GAAG,EAAO,KAAK,CAAC,KAAM,MAAM,CAAC,EAC7C,GAAW,EAAM,MAAQ,YAAc,EAAI,EAAE,EAC7C,MACJ,CACA,GAAI,CAAC,GAAa,EAAW,IAAM,EAAM,MAAQ,QAAU,EAAM,MAAQ,OAAQ,CAC7E,EAAM,eAAe,EACrB,IAAM,EAAU,EAAsB,EACtC,EAAU,EAAM,MAAQ,OAAS,EAAQ,IAAI,OAAS,GAAK,EAAQ,GAAG,EAAE,GAAG,OAAS,EAAE,EACtF,MACJ,CACA,GAAI,EAAW,IAAM,EAAM,MAAQ,SAAY,CAAC,GAAa,EAAM,MAAQ,KAAO,CAC9E,IAAM,EAAS,EAAQ,EAAE,KAAM,GAAc,EAAU,QAAU,EAAe,EAAE,WAAW,WAAW,EACpG,GAAQ,EAAa,EAAQ,CAAK,EACtC,MACJ,CACA,IAAK,EAAM,MAAQ,aAAe,EAAM,MAAQ,WAAa,EAAU,GAAK,CAAC,EAAe,EAAE,OAAO,MAAO,CACxG,IAAM,EAAU,EAAM,EACtB,GAAI,IAAY,EAAQ,iBAAmB,GAAK,EAAQ,eAAiB,GAAI,OAC7E,IAAM,EAAQ,CAAC,GAAG,EAAe,EAAE,UAAU,MAAM,EAAE,QAAQ,EAAE,KAAM,GACjE,CAAC,EAAQ,EAAE,EAAE,KAAM,GAAW,EAAO,QAAU,CAAS,GAAG,QAC9D,EACG,IACA,EAAM,eAAe,EACrB,EAAU,SAAS,EAAO,CAAK,GAEnC,MACJ,CACA,GAAI,EAAM,MAAQ,UAAY,EAAU,EAAG,CACvC,EAAM,eAAe,EACrB,EAAM,gBAAgB,EACtB,EAAO,KAAK,CAAC,KAAM,QAAS,aAAc,EAAI,CAAC,EAC/C,MACJ,CACA,GAAI,CAAC,GAAa,CAAC,EAAa,EAAE,YAAc,EAAM,IAAI,SAAW,GAAK,CAAC,EAAM,SAAW,CAAC,EAAM,SAAW,CAAC,EAAM,OAAQ,CACzH,GAAa,EAAM,IAAI,YAAY,EACnC,OAAO,aAAa,CAAc,EAClC,EAAiB,OAAO,eAAiB,CAAE,EAAY,EAAI,EAAG,GAAG,EACjE,IAAM,EAAQ,EAAsB,EAAE,KAAM,GAAW,EAAoB,EAAO,KAAK,EAAE,WAAW,CAAS,CAAC,EAC1G,GAAO,EAAU,EAAM,KAAK,CACpC,CACJ,EAEM,OAAoB,CACtB,IAAM,EAAK,EAAK,EACV,GAAmB,EAAc,IAC9B,EAAO,QAAQ,sFAAsF,GAG1G,EAAM,eAAe,EACrB,EAAQ,EAAE,MAAM,CAAC,cAAe,EAAI,CAAC,EACjC,EAAQ,YAAa,iBAChB,EAAW,GAAG,EAAO,KAAK,CAAC,KAAM,MAAM,CAAC,EAC1C,EAAU,OAAO,CAAK,EACtB,IAPI,GAUf,EAAY,CAAC,OAAQ,EAAI,MAAO,QAAS,UAAS,QAAU,GAAU,CAClE,IAAM,EAAS,EAAM,OACrB,GAAI,EAAE,aAAkB,SAAU,OAClC,GAAI,EAAO,QAAQ,8BAA8B,EAAG,CAChD,EAAU,MAAM,CAAK,EACrB,MACJ,CAEA,GADoB,EAAO,QAAQ,+BAC/B,EAAa,CACb,EAAM,eAAe,EACrB,EAAU,EAAE,EACZ,MACJ,CAEA,GADc,EAAO,QAAQ,uDACzB,EAAO,CACP,EAAU,MAAM,CAAK,EACrB,MACJ,CACA,IAAM,EAAa,EAAO,QAAqB,8BAA8B,EAC7E,GAAI,EAAY,CACZ,EAAU,SAAS,EAAW,QAAQ,OAAS,GAAI,CAAK,EACxD,MACJ,CACA,IAAM,EAAW,EAAO,QAAqB,CAAc,EAC3D,GAAI,EAAU,CACV,IAAM,EAAS,EAAQ,EAAE,KAAM,GAAc,EAAU,KAAO,CAAQ,EAClE,GAAQ,EAAa,EAAQ,CAAK,EACtC,MACJ,EACI,EAAE,aAAiB,aAAe,EAAM,SAAW,IAAG,EAAgB,EAAO,CAAM,CAC3F,CAAC,CAAC,EACF,EAAY,CAAC,OAAQ,EAAI,MAAO,QAAS,UAAS,QAAU,GAAU,CAClE,IAAM,EAAS,EAAM,OACf,aAAkB,kBACpB,EAAO,QAAQ,uDAAuD,GAAG,EAAU,EAAO,KAAK,CACvG,CAAC,CAAC,EACF,EAAY,CAAC,OAAQ,EAAI,MAAO,UAAW,UAAS,QAAU,GAAU,CAChE,aAAiB,eAAe,GAAc,CAAK,CAC3D,CAAC,CAAC,EACF,EAAY,CAAC,OAAQ,EAAI,MAAO,cAAe,UAAS,QAAU,GAAU,CACxE,IAAM,EAAS,EAAM,OACf,gBAAkB,QACxB,IACI,EAAO,QAAQ,CAAc,GAC1B,EAAO,QAAQ,+BAA+B,GAC9C,EAAO,QAAQ,qFAAqF,EACzG,CACE,EAAM,eAAe,EACrB,MACJ,CACA,EAAgB,EAAO,CAAM,CAD7B,CAEJ,CAAC,CAAC,EACF,EAAY,CAAC,OAAQ,EAAI,MAAO,cAAe,UAAS,QAAU,GAAU,CACxE,IAAM,EAAS,EAAM,OACrB,GAAI,EAAE,aAAkB,SAAU,OAClC,IAAM,EAAW,EAAO,QAAqB,CAAc,EACrD,EAAS,EAAW,EAAQ,EAAE,KAAM,GAAc,EAAU,KAAO,CAAQ,EAAI,IAAA,GACjF,GAAU,EAAO,SAAW,CAAC,EAAO,UAAU,EAAU,EAAO,KAAK,CAC5E,CAAC,CAAC,EACF,EAAY,CAAC,OAAQ,EAAI,MAAO,WAAY,UAAS,QAAU,GAAU,CACrE,GAAI,EAAE,aAAiB,YAAa,OACpC,IAAM,EAAO,EAAM,cACf,aAAgB,MAAQ,EAAG,SAAS,CAAI,GACxC,EAAU,GAAG,EAAO,KAAK,CAAC,KAAM,OAAO,CAAC,CAChD,CAAC,CAAC,EACF,EAAY,CAAC,OAAQ,EAAU,EAAG,MAAO,SAAU,UAAS,QAAU,GAAU,CACxE,EAAE,aAAc,IAAU,EAAM,WAAa,UAAY,CAAC,EAAU,GACxE,EAAO,KAAK,CAAC,KAAM,OAAO,CAAC,CAC/B,CAAC,CAAC,EACF,EAAQ,KAAK,GAAoB,CAC7B,cAAiB,EAAO,OAAO,aAAa,EAC5C,UAAa,CAAC,EAAK,EAAG,EAAU,CAAC,EACjC,cAAiB,EAAO,KAAK,CAAC,KAAM,OAAO,CAAC,CAChD,CAAC,CAAC,EAEF,EAAqB,GAAuB,CACxC,QAAS,EAAQ,EACjB,KAAM,GACN,aAAgB,EAAO,KAAK,CAAC,KAAM,iBAAiB,CAAC,EACrD,SAAU,CAAC,UAAW,GAAM,QAAS,EAAI,CAC7C,CAAC,CACL,EAEI,EAqHJ,MApHA,GAAY,CACR,GAAG,EACH,IAAI,QAAkB,CAClB,OAAO,KAAK,SAAS,SAAS,KAAK,SAAS,UAAU,GAAK,EAC/D,EACA,IAAI,aAAuB,CACvB,OAAO,KAAK,SAAS,SAAS,KAAK,SAAS,WAAW,GAAK,EAChE,EACA,IAAI,OAAgB,CAChB,OAAO,KAAK,SAAS,SAAS,QAAQ,UAAU,OAAO,IAAM,EACjE,EACA,IAAI,QAA4B,CAC5B,MAAO,CAAC,GAAG,KAAK,SAAS,SAAS,QAAQ,UAAU,QAAU,CAAC,CAAC,CACpE,EACA,IAAI,gBAAoC,CACpC,MAAO,CAAC,GAAG,KAAK,SAAS,SAAS,QAAQ,UAAU,QAAU,CAAC,CAAC,CACpE,EACA,IAAI,QAAiB,CACjB,OAAO,KAAK,SAAS,SAAS,QAAQ,OAAO,OAAS,EAC1D,EACA,IAAI,aAAsB,CACtB,OAAO,KAAK,SAAS,SAAS,QAAQ,WAAW,aAAe,EACpE,EACA,MAAa,CACT,EAAS,KAAK,IACd,EAAW,KAAK,IAAI,eAAe,EACnC,EAAU,KAAK,IAAI,cAAc,EACjC,EAAY,KAAK,IAAI,gBAAgB,EACrC,EAAY,GAAU,EAAE,IAAM,EAAK,EAAE,QAAQ,WAAa,KAAK,IAAI,gBAAgB,EACnF,GAAU,EAAE,GAAK,EACjB,EAAO,QAAQ,KAAK,IAAK,KAAK,QAAQ,EACtC,EAAW,EAAE,KAAO,GAAG,EAAU,QACjC,EAAU,GAAoB,CAC1B,UAAW,EACX,SAAU,EACV,YAAe,EAAW,EAAE,GAC5B,aAAgB,EAAa,EAAE,KAC/B,UAAa,EAAa,EAAE,MAC5B,QAAW,EAAa,EAAE,IAC1B,WAAc,EAAa,EAAE,OAC7B,oBAAqB,EACzB,CAAC,EACD,GAAM,EACN,EAAQ,EACR,EAAyB,GACrB,EAAa,EAAE,MAAQ,CAAC,EAAa,EAAE,UAAY,CAAC,EAAa,EAAE,UACnE,mBAAqB,EAAO,KAAK,CAAC,KAAM,MAAM,CAAC,CAAC,CAExD,EACA,SAAgB,CACZ,OAAO,aAAa,CAAc,EAClC,IAAqB,EACrB,EAAqB,KACrB,EAAQ,QAAS,GAAY,EAAQ,CAAC,EACtC,EAAU,CAAC,EACX,GAAS,QAAQ,EACjB,EAAU,KACV,EAAO,WAAW,EAClB,EAAS,IACb,EACA,IAAI,MAAsB,CACtB,IAAM,EAAQ,KAAK,SAAS,SAAS,OAAS,EAAa,EAC3D,OAAO,GAAc,CAAC,OAAQ,CAC1B,EAAa,CAAC,KAAM,EAAa,MAAM,KAAM,QAAO,UAAW,EAAM,KAAK,CAAC,EAC3E,CACI,iBAAkB,GAClB,kBAAsB,EAAO,OAAO,UAAU,EAAI,OAAS,QAC/D,CACJ,CAAC,CAAC,CACN,EACA,KAAK,EAAqB,CACtB,GAAO,eAAe,EAClB,IAAa,EAAE,UAAY,EAAa,EAAE,WAC9C,EAAO,KAAK,CAAC,KAAM,MAAM,CAAC,CAC9B,EACA,MAAM,EAAqB,CACvB,GAAO,eAAe,EACtB,EAAO,KAAK,CAAC,KAAM,QAAS,aAAc,aAAiB,aAAa,CAAC,CAC7E,EACA,OAAO,EAAqB,CACxB,GAAO,eAAe,EAClB,IAAa,EAAE,UAAY,EAAa,EAAE,WAC9C,EAAO,KAAK,CAAC,KAAM,QAAQ,CAAC,CAChC,EACA,OAAO,EAAe,EAAqB,CACvC,IAAM,EAAS,EAAQ,EAAE,EAAE,KAAM,GAAc,CAAC,EAAU,QAAU,EAAU,QAAU,CAAK,EACzF,GAAQ,EAAa,EAAQ,CAAK,CAC1C,EACA,SAAS,EAAe,EAAqB,CACzC,GAAO,eAAe,EAClB,IAAa,EAAE,UAAY,EAAa,EAAE,YAC/B,EAAQ,EAAE,EAAE,KAAM,GAAc,EAAU,QAAU,CAC/D,GAAQ,UACZ,EAAc,WAAY,EACtB,EAAe,EAAE,UAAU,OAAO,OAAQ,GAAc,IAAc,CAAK,CAC/E,CAAC,EACL,EACA,UAAU,EAAqB,CAE3B,GADA,GAAO,eAAe,EAClB,CAAC,EAAa,EAAE,UAAY,EAAa,EAAE,UAAY,EAAa,EAAE,SAAU,OACpF,IAAM,EAAU,EAAsB,EACtC,EAAc,aAAc,CACxB,OAAQ,EAAQ,IAAK,GAAW,EAAO,KAAK,EAC5C,OAAQ,EAAQ,IAAK,GAAW,EAAO,aAAa,CACxD,CAAC,CACL,EACA,MAAM,EAAqB,CACvB,GAAO,eAAe,EACtB,GAAO,gBAAgB,EACnB,IAAa,EAAE,UAAY,EAAa,EAAE,YAC9C,EAAiB,GACjB,EAAO,KAAK,CAAC,KAAM,OAAO,CAAC,EAC/B,EACA,WACJ,EAEO,CACX,EAEM,GAAiB,EAAiB,WAAY,EAAQ,EC9/BtD,GAAa,IAAI,QAEjB,GAAkB,GAAqC,CACrD,GAAW,IAAI,CAAc,IACjC,GAAW,IAAI,CAAc,EAC7B,EAAyB,CAAc,EACvC,GAAkB,CAAc,EACpC"}
@@ -0,0 +1,2 @@
1
+ import{c as e,g as t,h as n,m as r,o as i,s as a,u as o}from"./motion-BRaHJwNf.js";import{t as s}from"./capability-motion-Cog7tKk0.js";import{c,f as l,l as u,n as d,o as f}from"./codecs-Cb1ns_47.js";import{r as p,t as m}from"./dom-qAeVl7dc.js";import{i as h,t as g}from"./alpine-machine-D0Kqjm-1.js";import{t as _}from"./alpine-data-DZ17j0jc.js";import{n as v,t as y}from"./styles-TfvwVPGw.js";import{t as b}from"./machine-Dqut4h89.js";var x={x:!1,y:!1};function S(){return x.x||x.y}function C(e,t){let r=n(e),i=new AbortController;return[r,{passive:!0,...t,signal:i.signal},()=>i.abort()]}function w(e){return!(e.pointerType===`touch`||S())}function T(e,t,n={}){let[r,i,a]=C(e,n);return r.forEach(e=>{let n=!1,r=!1,a,o=()=>{e.removeEventListener(`pointerleave`,u)},s=e=>{a&&=(a(e),void 0),o()},c=e=>{n=!1,window.removeEventListener(`pointerup`,c),window.removeEventListener(`pointercancel`,c),r&&(r=!1,s(e))},l=()=>{n=!0,window.addEventListener(`pointerup`,c,i),window.addEventListener(`pointercancel`,c,i)},u=e=>{if(e.pointerType!==`touch`){if(n){r=!0;return}s(e)}};e.addEventListener(`pointerenter`,n=>{if(!w(n))return;r=!1;let o=t(e,n);typeof o==`function`&&(a=o,e.addEventListener(`pointerleave`,u,i))},i),e.addEventListener(`pointerdown`,l,i)}),a}var E=[`info`,`success`,`warning`,`danger`,`debug`],D=[`auto`,`neutral`,`accent`,`success`,`warning`,`danger`],O=[`default`,`soft`,`surface`,`solid`,`outline`],k=[`top-right`,`top-left`,`top-center`,`bottom-right`,`bottom-left`,`bottom-center`],A={level:u(E,`info`),color:u(D,`auto`),variant:u(O,`default`),title:l,description:l,duration:c.default(5e3).min(0),dismissible:d.default(!0),class:l,contentClass:l,closeClass:l},j={id:l.default(`ui-toast-root`),position:u(k,`top-right`),duration:c.default(5e3).min(0),includeMessages:d.default(!0),maxItems:c.default(3).min(0),class:l},M=[h({name:`opening`,state:`opening`,project:()=>({}),onDone:`OPENING_DONE`,onError:`OPENING_ERROR`}),h({name:`closing`,state:`closing`,project:({context:e})=>({reason:e.dismissal.reason}),onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`})],N=(e,t)=>b({initial:`idle`,on:{PROPS_CHANGED:{reduce:`replaceProps`,effects:`syncProps`}},states:{idle:{on:{OPEN:{target:`opening`,effects:`prepareOpen`}}},opening:{tags:[`visible`,`expanded`,`transitioning`],on:{OPENING_DONE:[{target:`open.persistent`,guard:`isPersistent`,effects:`finishOpen`},{target:`open.paused`,guard:`isPaused`,effects:`finishOpen`},{target:`open.running`,effects:`finishOpen`}],OPENING_ERROR:[{target:`open.persistent`,guard:`isPersistent`,effects:`finishOpen`},{target:`open.paused`,guard:`isPaused`,effects:`finishOpen`},{target:`open.running`,effects:`finishOpen`}],PAUSE:{reduce:`pause`},RESUME:{reduce:`resume`},DISMISS:{target:`closing`,reduce:`dismiss`,effects:`prepareClose`}}},open:{id:`open`,initial:`running`,tags:[`visible`,`expanded`,`open`],on:{DISMISS:{target:`closing`,reduce:`dismiss`,effects:`prepareClose`}},states:{persistent:{on:{PAUSE:{reduce:`pause`},RESUME:{reduce:`resume`},DURATION_CHANGED:{target:`running`,guard:`hasDuration`,reduce:`resetDuration`}}},running:{entry:`startTimer`,exit:`stopTimer`,on:{PAUSE:{target:`paused`,reduce:`pause`},TICK:{reduce:`tick`},DURATION_CHANGED:[{target:`persistent`,guard:`isPersistent`},{target:`running`,reduce:`resetDuration`}]}},paused:{tags:[`paused`],on:{RESUME:{target:`running`,reduce:`resume`},DURATION_CHANGED:[{target:`persistent`,guard:`isPersistent`},{reduce:`resetDuration`}]}}}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:{target:`removed`,effects:`finishClose`},CLOSING_ERROR:{target:`removed`,effects:`finishClose`}}},removed:{tags:[`removed`]}}},{context:{timer:{remaining:e.duration,paused:!1},dismissal:{reason:`api`}},props:e,reducers:{replaceProps:({context:e,event:t,props:n})=>({context:e,props:t.props??n}),pause:({context:e,event:t})=>({context:{...e,timer:{remaining:typeof t.remaining==`number`?t.remaining:e.timer.remaining,paused:!0}}}),resume:({context:e})=>({context:{...e,timer:{...e.timer,paused:!1}}}),tick:({context:e,event:t})=>({context:{...e,timer:{...e.timer,remaining:Math.max(0,Number(t.remaining)||0)}}}),resetDuration:({context:e,props:t})=>({context:{...e,timer:{...e.timer,remaining:t.duration}}}),dismiss:({context:e,event:t})=>({context:{...e,dismissal:{reason:t.reason===`timeout`||t.reason===`close`||t.reason===`swipe`?t.reason:`api`}}})},guards:{isPersistent:({props:e})=>e.duration===0,hasDuration:({props:e})=>e.duration>0,isPaused:({context:e})=>e.timer.paused},effects:{prepareOpen:t.prepareOpen,finishOpen:t.finishOpen,startTimer:t.startTimer,stopTimer:t.stopTimer,prepareClose:t.prepareClose,syncProps:t.syncProps,finishClose:({context:e})=>t.finishClose(e.dismissal.reason)}}),P=y({definition:{component:`ui.toast`,parts:{root:{base:[`group/toast pointer-events-auto relative grid w-full min-w-0 items-center gap-x-3 gap-y-1 overflow-hidden rounded-overlay-md px-3 py-2.5 outline-none`,`data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0`],variants:{variant:{default:``,soft:``,surface:``,solid:``,outline:``},color:{neutral:``,accent:``,success:``,warning:``,danger:``},hasMarker:{true:`grid-cols-[auto_minmax(0,1fr)_auto]`,false:`grid-cols-[minmax(0,1fr)_auto]`},hasDescription:{true:``,false:``}},defaults:{variant:`default`,color:`neutral`,hasMarker:!1,hasDescription:!1}},marker:{base:`size-2 self-center rounded-full`,variants:{color:{neutral:`hidden`,accent:``,success:``,warning:``,danger:``},variant:{default:`hidden`,soft:``,surface:``,solid:`hidden`,outline:``}},defaults:{color:`neutral`,variant:`default`}},content:{base:`grid min-w-0 gap-0.5 self-center`},title:{base:`min-w-0`},description:{base:`min-w-0`},close:{base:[`-mr-1 inline-flex size-control-md shrink-0 items-center justify-center self-center rounded-control-sm outline-none`]},closeIcon:{base:`size-icon fill-current`},outlet:{base:[`pointer-events-none fixed z-toast flex w-[min(24rem,calc(100vw-2rem))] flex-col gap-2`],variants:{position:{"top-right":`right-4 top-4 justify-items-end`,"top-left":`left-4 top-4 justify-items-start`,"top-center":`left-1/2 top-4 -translate-x-1/2 justify-items-center`,"bottom-right":`bottom-4 right-4 justify-items-end`,"bottom-left":`bottom-4 left-4 justify-items-start`,"bottom-center":`bottom-4 left-1/2 -translate-x-1/2 justify-items-center`}},defaults:{position:`top-right`}}}}}),F=e=>[`info`,`success`,`warning`,`danger`,`debug`].includes(String(e)),I=e=>[`auto`,`neutral`,`accent`,`success`,`warning`,`danger`].includes(String(e)),L=e=>[`default`,`soft`,`surface`,`solid`,`outline`].includes(String(e)),R=e=>e===`info`?`accent`:e===`success`||e===`warning`||e===`danger`?e:`neutral`,z=(e,t)=>I(e)&&e!==`auto`?e:R(t),B=(e,t)=>{let n=typeof e==`number`?e:Number(e);return Number.isFinite(n)&&n>=0?n:t},V=e=>{let t=e.style;return`translateY(${Number.parseFloat(t.getPropertyValue(`--ui-toast-stack-offset`))||0}px) scale(${Number.parseFloat(t.getPropertyValue(`--ui-toast-stack-scale`))||1})`},H=e=>Array.from(e.querySelectorAll(`:scope > [data-ui-toast]`)).filter(e=>e.dataset.state!==`closing`&&e.dataset.state!==`closed`),U=(e,t=!1)=>{let n=Array.from(e.querySelectorAll(`:scope > [data-ui-toast]`));e.dataset.stack=n.length>1?`collapsed`:`single`;let r=getComputedStyle(e),a=Number.parseFloat(r.rowGap||r.gap||`0`)||0,o=n.map(e=>Math.ceil(e.scrollHeight||e.getBoundingClientRect().height)),s=Number.parseFloat(r.getPropertyValue(`--ui-toast-stack-peek`))||8,c=e.dataset.position?.startsWith(`bottom`)?-1:1,l=e.dataset.stackExpanded===`true`,u=Math.min(Math.max(0,n.length-1),3);e.style.setProperty(`--ui-toast-front-height`,`${o[0]??0}px`),e.style.setProperty(`--ui-toast-stack-height`,`${(o[0]??0)+u*s}px`),e.style.setProperty(`--ui-toast-stack-expanded-height`,`${o.reduce((e,t)=>e+t,0)+Math.max(0,n.length-1)*a}px`);let d=0;n.forEach((r,u)=>{let f=Math.min(u,3),p=l?d*c:f*s*c,m=l?1:Math.max(.91,1-f*.03),h=l?1:Math.max(.72,1-f*.08);l&&(d+=(o[u]??0)+a),r.dataset.stackIndex=String(u),r.dataset.swipeAxis=e.dataset.position?.endsWith(`left`)||e.dataset.position?.endsWith(`right`)?`x`:`y`,r.style.setProperty(`--ui-toast-stack-index`,String(u)),r.style.setProperty(`--ui-toast-stack-depth`,String(f)),r.style.setProperty(`--ui-toast-stack-direction`,String(c)),r.style.setProperty(`--ui-toast-outside`,c>0?`-100%`:`100%`),r.style.setProperty(`--ui-toast-stack-offset`,`${p}px`),r.style.setProperty(`--ui-toast-stack-scale`,String(m)),r.style.setProperty(`--ui-toast-stack-opacity`,String(h)),r.style.zIndex=String(n.length-u);let g=`translateY(${p}px) scale(${m})`;r.dataset.swiping!==`true`&&(t&&r.dataset.state===`open`?i(r).animate({opacity:h,transform:g}).speed(`moderate`).play():r.dataset.state===`open`&&(r.style.opacity=String(h),r.style.transform=g))})},W=(e,t)=>{e.dispatchEvent(new CustomEvent(`ui:toast-dismiss-request`,{detail:{reason:t}}))},G=(e,t)=>{t!==0&&H(e).slice(t).forEach(e=>W(e,`api`))},K=(e,t)=>{let n=z(t.color,t.level),r=e.dataset.description===`true`||!!t.description.trim(),i=n!==`neutral`&&t.variant!==`solid`&&t.variant!=="default",a=t.level===`danger`||t.level===`warning`;Object.assign(e.dataset,{level:t.level,color:n,variant:t.variant,duration:String(t.duration),dismissible:String(t.dismissible)}),e.setAttribute(`role`,a?`alert`:`status`),e.setAttribute(`aria-live`,a?`assertive`:`polite`),e.className=v({part:P.parts.root,props:{variant:t.variant,color:n,hasDescription:r,hasMarker:i},className:t.class}),e.querySelector(`[data-ui-toast-marker]`)?.setAttribute(`class`,v({part:P.parts.marker,props:{variant:t.variant,color:n}})),e.querySelectorAll(`[data-ui-toast-content]`).forEach(e=>{e.className=v({part:P.parts.content,className:t.contentClass})}),e.querySelectorAll(`[data-ui-toast-title]`).forEach(e=>{e.className=`text-sm font-medium ${v({part:P.parts.title})}`}),e.querySelectorAll(`[data-ui-toast-description]`).forEach(e=>{e.className=`text-sm ${v({part:P.parts.description})}`}),e.querySelectorAll(`[data-ui-toast-close]`).forEach(e=>{e.hidden=!t.dismissible,e.className=v({part:P.parts.close,className:t.closeClass})})},q=()=>{let n=null,i=[],s=0,c=null,l=null,u=0,d=new Set,f=()=>{if(!n)throw Error(`Toast has not been initialized.`);return n},h=()=>f().parentElement?.matches(`[data-ui-toast-outlet]`)?f().parentElement:null,_=()=>c===null?y.getSnapshot().context.timer.remaining:Math.max(0,s-performance.now()),v=()=>{c!==null&&clearTimeout(c),l!==null&&clearInterval(l),c=l=null},y=g({schema:A,hooks:M,createMachine:({props:e})=>N(e,{prepareOpen:()=>{f().dataset.state=`opening`,K(f(),y.getSnapshot().props),h()&&U(h(),!0)},finishOpen:()=>{f().dataset.state=`open`,h()&&U(h(),!0)},startTimer:()=>{let e=y.getSnapshot().context.timer.remaining;e<=0||(s=performance.now()+e,c=window.setTimeout(()=>y.send({type:`DISMISS`,reason:`timeout`}),e),l=window.setInterval(()=>y.send({type:`TICK`,remaining:_()}),100))},stopTimer:v,prepareClose:()=>{v(),f().dataset.state=`closing`,h()&&U(h(),!0)},finishClose:e=>{let t=f(),n=h();t.dataset.state=`closed`,p({el:t,name:`ui:dismiss`,detail:{reason:e}}),t.remove(),n&&U(n,!0)},syncProps:()=>{let e=y.getSnapshot().props;K(f(),e),e.duration!==u&&(u=e.duration,y.send(`DURATION_CHANGED`)),h()&&U(h())}})}),b=e=>{let t=d.size===0;d.add(e),t&&y.send({type:`PAUSE`,remaining:_()})},x=e=>{d.delete(e),d.size===0&&y.send(`RESUME`)};return{...y,get isOpen(){return this.snapshot.current?.tags.includes(`open`)??!1},get isPaused(){return this.snapshot.current?.tags.includes(`paused`)??!1},get remaining(){return this.snapshot.current?.context.timer.remaining??0},init(){n=this.$el,y.connect(this.$el,this.snapshot),u=y.getSnapshot().props.duration,document.hidden&&d.add(`visibility`),m({target:f(),event:`click`,handler:e=>{let t=e.target;y.getSnapshot().props.dismissible&&t instanceof Element&&t.closest(`[data-ui-toast-close]`)&&y.send({type:`DISMISS`,reason:`close`})},cleanup:i}),m({target:f(),event:`ui:toast-dismiss-request`,handler:e=>{let t=e instanceof CustomEvent?e.detail?.reason:`api`;y.send({type:`DISMISS`,reason:t})},cleanup:i}),m({target:f(),event:`ui:toast-pause-request`,handler:e=>{e instanceof CustomEvent&&e.detail?.paused===!0?b(`outlet`):x(`outlet`)},cleanup:i}),m({target:document,event:`visibilitychange`,handler:()=>document.hidden?b(`visibility`):x(`visibility`),cleanup:i}),m({target:f(),event:`pointerdown`,handler:n=>{if(!(n instanceof PointerEvent)||!n.isPrimary||n.button!==0||!y.getSnapshot().props.dismissible||n.target instanceof Element&&n.target.closest(`button, a, input, select, textarea`))return;let i=f(),s=h()?.dataset.position??`bottom-right`,c=s.endsWith(`left`)||s.endsWith(`right`),l=c?s.endsWith(`left`)?-1:1:s.startsWith(`top`)?-1:1,u=c?n.clientX:n.clientY,d=performance.now(),p=V(i),m=Number.parseFloat(i.style.getPropertyValue(`--ui-toast-stack-opacity`))||1,g=t(0);o(i),b(`gesture`),i.dataset.swiping=`true`,i.setPointerCapture(n.pointerId);let _=g.on(`change`,e=>{let t=c?`translateX(${e}px)`:`translateY(${e}px)`;i.style.transform=`${p} ${t}`;let n=Math.abs(e),r=c?i.offsetWidth:i.offsetHeight;i.style.opacity=String(Math.max(.35,m*(1-n/Math.max(r*2,1))))}),v=e=>{if(e.pointerId!==n.pointerId)return;e.preventDefault();let t=(c?e.clientX:e.clientY)-u;g.set(t*l>=0?t:t*.2)},S=(t,o=!1)=>{if(t.pointerId!==n.pointerId)return;window.removeEventListener(`pointermove`,v),window.removeEventListener(`pointerup`,S),window.removeEventListener(`pointercancel`,C);let s=g.get(),u=Math.max(1,performance.now()-d),f=Math.abs(s)/u,h=!o&&s*l>0&&(Math.abs(s)>=45||f>.11),y=h?r(g,l*(c?window.innerWidth:window.innerHeight),{duration:e.moderate.duration,ease:a.out}):r(g,0,{type:`spring`,...e.slow,bounce:.12}),b=r(i,{opacity:h?0:m},{duration:e.moderate.duration,ease:a.out});Promise.allSettled([y.finished,b.finished]).then(()=>{_(),delete i.dataset.swiping,x(`gesture`),h?W(i,`swipe`):(i.style.opacity=String(m),i.style.transform=p)})},C=e=>S(e,!0);window.addEventListener(`pointermove`,v),window.addEventListener(`pointerup`,S),window.addEventListener(`pointercancel`,C)},cleanup:i}),y.send(`OPEN`)},destroy(){v(),i.forEach(e=>e()),i=[],y.disconnect(),n=null},dismiss(){y.send({type:`DISMISS`,reason:`api`})},pause(){b(`consumer`)},resume(){x(`consumer`)}}},J=e=>{let t=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);t.setAttribute(`viewBox`,`0 0 32 32`),t.setAttribute(`aria-hidden`,`true`),t.dataset.uiToastCloseIcon=``,t.setAttribute(`class`,e);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`polygon`);return n.setAttribute(`points`,`17.4141 16 24 9.4141 22.5859 8 16 14.5859 9.4143 8 8 9.4141 14.5859 16 8 22.5859 9.4143 24 16 17.4141 22.5859 24 24 22.5859 17.4141 16`),t.append(n),t},Y=(e,t)=>{let n=F(e.level)?e.level:`info`,r=L(e.variant)?e.variant:`default`,i=typeof e.title==`string`?e.title:``,a=typeof e.description==`string`?e.description:``,o=B(e.duration,t),s=typeof e.dismissible==`boolean`?e.dismissible:!0,c=document.createElement(`div`);c.setAttribute(`x-data`,`UiToast`),c.setAttribute(`x-ui-transition:opening`,`$ui.motion($transition).animate($ui.motion.presets.toast.in).speed('moderate').play()`),c.setAttribute(`x-ui-transition:closing`,`$transition.data.reason === 'swipe' ? null : $ui.motion($transition).animate($ui.motion.presets.toast.out).speed('moderate').play()`),Object.assign(c.dataset,{uiToast:``,uiToastRecipe:``,uiSurface:`+3`,uiElevation:`4`,level:n,color:I(e.color)?e.color:`auto`,variant:r,duration:String(o),dismissible:String(s),description:String(!!a.trim()),state:`closed`}),c.setAttribute(`aria-atomic`,`true`),c.style.opacity=`0`;let l=document.createElement(`span`);l.dataset.uiToastMarker=``,l.setAttribute(`aria-hidden`,`true`),c.append(l);let u=document.createElement(`div`);if(u.dataset.uiToastContent=``,i){let e=document.createElement(`strong`);e.dataset.uiToastTitle=``,e.textContent=i,u.append(e)}if(a){let e=document.createElement(`div`);e.dataset.uiToastDescription=``,e.textContent=a,u.append(e)}if(c.append(u),s){let e=document.createElement(`button`);e.type=`button`,e.dataset.uiToastClose=``,e.setAttribute(`aria-label`,`Dismiss notification`),e.append(J(v({part:P.parts.closeIcon}))),c.append(e)}return c},X=e=>{let t=new Set,n=null,r=e=>{n?.querySelectorAll(`:scope > [data-ui-toast]`).forEach(t=>{t.dispatchEvent(new CustomEvent(`ui:toast-pause-request`,{detail:{paused:e}}))})},i=e=>{let i=t.size===0;t.add(e),!(!n||!i)&&(n.dataset.stackExpanded=`true`,r(!0),U(n,!0))},a=e=>{t.delete(e),!(!n||t.size>0)&&(delete n.dataset.stackExpanded,r(!1),U(n,!0))};return{props:null,cleanup:[],init(){this.props=f({el:this.$el,schema:j,onChange:()=>this.sync()});let e=this.$el;n=e,this.sync(),this.cleanup.push(T(e,()=>(i(`pointer`),()=>a(`pointer`)))),m({target:e,event:`focusin`,handler:()=>i(`focus`),cleanup:this.cleanup}),m({target:e,event:`focusout`,handler:()=>queueMicrotask(()=>{e.contains(document.activeElement)||a(`focus`)}),cleanup:this.cleanup}),m({target:document,event:`ui:toast`,handler:e=>this.add(e instanceof CustomEvent?e.detail:{}),cleanup:this.cleanup}),queueMicrotask(()=>G(e,this.props.maxItems))},destroy(){this.props.disconnect(),this.cleanup.forEach(e=>e()),this.cleanup=[],t.clear(),n=null},sync(){let e=this.$el;e.id=this.props.id,e.dataset.position=this.props.position,e.dataset.duration=String(this.props.duration),e.dataset.maxItems=String(this.props.maxItems),e.className=v({part:P.parts.outlet,props:{position:this.props.position},className:this.props.class}),U(e),G(e,this.props.maxItems)},add(n){let r=typeof n.title==`string`?n.title:``,i=typeof n.description==`string`?n.description:``;if(!r.trim()&&!i.trim())return;let a=this.$el,o=Y(n,this.props.duration);a.prepend(o),e.initTree(o),t.size>0&&o.dispatchEvent(new CustomEvent(`ui:toast-pause-request`,{detail:{paused:!0}})),U(a),G(a,this.props.maxItems)}}},Z=e=>{_(`UiToast`,q)(e),_(`UiToastOutlet`,()=>X(e))(e)},Q=new WeakSet,$=e=>{Q.has(e)||(Q.add(e),s(e),Z(e))};export{q as n,X as r,$ as t};
2
+ //# sourceMappingURL=entry.generated-DT70Lo44.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.generated-DT70Lo44.js","names":[],"sources":["../../../../../../../../../node_modules/.pnpm/motion-dom@12.42.0/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.mjs","../../../../../../../../../node_modules/.pnpm/motion-dom@12.42.0/node_modules/motion-dom/dist/es/gestures/utils/setup.mjs","../../../../../../../../../node_modules/.pnpm/motion-dom@12.42.0/node_modules/motion-dom/dist/es/gestures/hover.mjs","../../../../../../../../client/src/components/toast/contract.ts","../../../../../../../../client/src/components/toast/machine.ts","../../../../../../../../client/src/components/toast/styles.ts","../../../../../../../../client/src/components/toast/index.ts","../../../../../../../../client/src/components/toast/entry.generated.ts"],"sourcesContent":["const isDragging = {\n x: false,\n y: false,\n};\nfunction isDragActive() {\n return isDragging.x || isDragging.y;\n}\n\nexport { isDragActive, isDragging };\n//# sourceMappingURL=is-active.mjs.map\n","import { resolveElements } from '../../utils/resolve-elements.mjs';\n\nfunction setupGesture(elementOrSelector, options) {\n const elements = resolveElements(elementOrSelector);\n const gestureAbortController = new AbortController();\n const eventOptions = {\n passive: true,\n ...options,\n signal: gestureAbortController.signal,\n };\n const cancel = () => gestureAbortController.abort();\n return [elements, eventOptions, cancel];\n}\n\nexport { setupGesture };\n//# sourceMappingURL=setup.mjs.map\n","import { isDragActive } from './drag/state/is-active.mjs';\nimport { setupGesture } from './utils/setup.mjs';\n\nfunction isValidHover(event) {\n return !(event.pointerType === \"touch\" || isDragActive());\n}\n/**\n * Create a hover gesture. hover() is different to .addEventListener(\"pointerenter\")\n * in that it has an easier syntax, filters out polyfilled touch events, interoperates\n * with drag gestures, and automatically removes the \"pointerennd\" event listener when the hover ends.\n *\n * @public\n */\nfunction hover(elementOrSelector, onHoverStart, options = {}) {\n const [elements, eventOptions, cancel] = setupGesture(elementOrSelector, options);\n elements.forEach((element) => {\n let isPressed = false;\n let deferredHoverEnd = false;\n let hoverEndCallback;\n const removePointerLeave = () => {\n element.removeEventListener(\"pointerleave\", onPointerLeave);\n };\n const endHover = (event) => {\n if (hoverEndCallback) {\n hoverEndCallback(event);\n hoverEndCallback = undefined;\n }\n removePointerLeave();\n };\n const onPointerUp = (event) => {\n isPressed = false;\n window.removeEventListener(\"pointerup\", onPointerUp);\n window.removeEventListener(\"pointercancel\", onPointerUp);\n if (deferredHoverEnd) {\n deferredHoverEnd = false;\n endHover(event);\n }\n };\n const onPointerDown = () => {\n isPressed = true;\n window.addEventListener(\"pointerup\", onPointerUp, eventOptions);\n window.addEventListener(\"pointercancel\", onPointerUp, eventOptions);\n };\n const onPointerLeave = (leaveEvent) => {\n if (leaveEvent.pointerType === \"touch\")\n return;\n if (isPressed) {\n deferredHoverEnd = true;\n return;\n }\n endHover(leaveEvent);\n };\n const onPointerEnter = (enterEvent) => {\n if (!isValidHover(enterEvent))\n return;\n deferredHoverEnd = false;\n const onHoverEnd = onHoverStart(element, enterEvent);\n if (typeof onHoverEnd !== \"function\")\n return;\n hoverEndCallback = onHoverEnd;\n element.addEventListener(\"pointerleave\", onPointerLeave, eventOptions);\n };\n element.addEventListener(\"pointerenter\", onPointerEnter, eventOptions);\n element.addEventListener(\"pointerdown\", onPointerDown, eventOptions);\n });\n return cancel;\n}\n\nexport { hover };\n//# sourceMappingURL=hover.mjs.map\n","import {bool, number, oneOf, string, type PropState, type SchemaToProps} from '../../runtime';\n\nconst TOAST_LEVELS = ['info', 'success', 'warning', 'danger', 'debug'] as const;\nconst TOAST_COLORS = ['auto', 'neutral', 'accent', 'success', 'warning', 'danger'] as const;\nconst TOAST_RESOLVED_COLORS = ['neutral', 'accent', 'success', 'warning', 'danger'] as const;\nconst TOAST_VARIANTS = ['default', 'soft', 'surface', 'solid', 'outline'] as const;\nconst TOAST_POSITIONS = ['top-right', 'top-left', 'top-center', 'bottom-right', 'bottom-left', 'bottom-center'] as const;\n\nconst toastSchema = {\n level: oneOf(TOAST_LEVELS, 'info'),\n color: oneOf(TOAST_COLORS, 'auto'),\n variant: oneOf(TOAST_VARIANTS, 'default'),\n title: string,\n description: string,\n duration: number.default(5000).min(0),\n dismissible: bool.default(true),\n class: string,\n contentClass: string,\n closeClass: string,\n};\n\nconst toastOutletSchema = {\n id: string.default('ui-toast-root'),\n position: oneOf(TOAST_POSITIONS, 'top-right'),\n duration: number.default(5000).min(0),\n includeMessages: bool.default(true),\n maxItems: number.default(3).min(0),\n class: string,\n};\n\ntype ToastLevel = typeof TOAST_LEVELS[number];\ntype ToastColor = typeof TOAST_COLORS[number];\ntype ToastResolvedColor = typeof TOAST_RESOLVED_COLORS[number];\ntype ToastVariant = typeof TOAST_VARIANTS[number];\ntype ToastPosition = typeof TOAST_POSITIONS[number];\ntype ToastProps = SchemaToProps<typeof toastSchema>;\ntype ToastOutletProps = PropState<typeof toastOutletSchema>;\n\nexport {TOAST_COLORS, TOAST_LEVELS, TOAST_POSITIONS, TOAST_RESOLVED_COLORS, TOAST_VARIANTS, toastOutletSchema, toastSchema};\nexport type {ToastColor, ToastLevel, ToastOutletProps, ToastPosition, ToastProps, ToastResolvedColor, ToastVariant};\n","import {createMachine, type Machine} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {ToastProps} from './contract';\n\ntype ToastDismissReason = 'timeout' | 'close' | 'api' | 'swipe';\n\ntype ToastContext = {\n timer: {remaining: number; paused: boolean};\n dismissal: {reason: ToastDismissReason};\n};\n\ntype ToastMachineEffects = {\n prepareOpen(): void;\n finishOpen(): void;\n startTimer(): void;\n stopTimer(): void;\n prepareClose(): void;\n finishClose(reason: ToastDismissReason): void;\n syncProps(): void;\n};\n\nconst openingHook = defineHook({\n name: 'opening', state: 'opening', project: () => ({}), onDone: 'OPENING_DONE', onError: 'OPENING_ERROR',\n} satisfies TransitionHookDefinition<ToastContext, ToastProps, Record<string, never>, 'opening'>);\nconst closingHook = defineHook({\n name: 'closing', state: 'closing', project: ({context}) => ({reason: context.dismissal.reason}),\n onDone: 'CLOSING_DONE', onError: 'CLOSING_ERROR',\n} satisfies TransitionHookDefinition<ToastContext, ToastProps, {reason: ToastDismissReason}, 'closing'>);\nconst toastHooks = [openingHook, closingHook] as const;\n\nconst createToastMachine = (props: ToastProps, effects: ToastMachineEffects): Machine<ToastContext, ToastProps> => createMachine<ToastContext, ToastProps>({\n initial: 'idle',\n on: {\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'syncProps'},\n },\n states: {\n idle: {on: {OPEN: {target: 'opening', effects: 'prepareOpen'}}},\n opening: {\n tags: ['visible', 'expanded', 'transitioning'],\n on: {\n OPENING_DONE: [\n {target: 'open.persistent', guard: 'isPersistent', effects: 'finishOpen'},\n {target: 'open.paused', guard: 'isPaused', effects: 'finishOpen'},\n {target: 'open.running', effects: 'finishOpen'},\n ],\n OPENING_ERROR: [\n {target: 'open.persistent', guard: 'isPersistent', effects: 'finishOpen'},\n {target: 'open.paused', guard: 'isPaused', effects: 'finishOpen'},\n {target: 'open.running', effects: 'finishOpen'},\n ],\n PAUSE: {reduce: 'pause'},\n RESUME: {reduce: 'resume'},\n DISMISS: {target: 'closing', reduce: 'dismiss', effects: 'prepareClose'},\n },\n },\n open: {\n id: 'open', initial: 'running', tags: ['visible', 'expanded', 'open'],\n on: {DISMISS: {target: 'closing', reduce: 'dismiss', effects: 'prepareClose'}},\n states: {\n persistent: {on: {PAUSE: {reduce: 'pause'}, RESUME: {reduce: 'resume'}, DURATION_CHANGED: {target: 'running', guard: 'hasDuration', reduce: 'resetDuration'}}},\n running: {entry: 'startTimer', exit: 'stopTimer', on: {PAUSE: {target: 'paused', reduce: 'pause'}, TICK: {reduce: 'tick'}, DURATION_CHANGED: [{target: 'persistent', guard: 'isPersistent'}, {target: 'running', reduce: 'resetDuration'}]}},\n paused: {tags: ['paused'], on: {RESUME: {target: 'running', reduce: 'resume'}, DURATION_CHANGED: [{target: 'persistent', guard: 'isPersistent'}, {reduce: 'resetDuration'}]}},\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: {target: 'removed', effects: 'finishClose'},\n CLOSING_ERROR: {target: 'removed', effects: 'finishClose'},\n },\n },\n removed: {tags: ['removed']},\n },\n}, {\n context: {timer: {remaining: props.duration, paused: false}, dismissal: {reason: 'api'}}, props,\n reducers: {\n replaceProps: ({context, event, props: currentProps}) => {\n const nextProps = event.props as ToastProps | undefined;\n return {context, props: nextProps ?? currentProps};\n },\n pause: ({context, event}) => ({context: {...context, timer: {remaining: typeof event.remaining === 'number' ? event.remaining : context.timer.remaining, paused: true}}}),\n resume: ({context}) => ({context: {...context, timer: {...context.timer, paused: false}}}),\n tick: ({context, event}) => ({context: {...context, timer: {...context.timer, remaining: Math.max(0, Number(event.remaining) || 0)}}}),\n resetDuration: ({context, props: currentProps}) => ({context: {...context, timer: {...context.timer, remaining: currentProps.duration}}}),\n dismiss: ({context, event}) => ({context: {...context, dismissal: {\n reason: event.reason === 'timeout' || event.reason === 'close' || event.reason === 'swipe'\n ? event.reason\n : 'api' as ToastDismissReason,\n }}}),\n },\n guards: {\n isPersistent: ({props: currentProps}) => currentProps.duration === 0,\n hasDuration: ({props: currentProps}) => currentProps.duration > 0,\n isPaused: ({context}) => context.timer.paused,\n },\n effects: {\n prepareOpen: effects.prepareOpen, finishOpen: effects.finishOpen,\n startTimer: effects.startTimer, stopTimer: effects.stopTimer,\n prepareClose: effects.prepareClose, syncProps: effects.syncProps,\n finishClose: ({context}) => effects.finishClose(context.dismissal.reason),\n },\n});\n\nexport {createToastMachine, toastHooks};\nexport type {ToastContext, ToastDismissReason, ToastMachineEffects};\n","import {defineStyles} from '../../runtime';\n\nconst toastStyles = defineStyles({definition: {\n component: 'ui.toast',\n parts: {\n root: {\n base: [\n 'group/toast pointer-events-auto relative grid w-full min-w-0 items-center gap-x-3 gap-y-1 overflow-hidden rounded-overlay-md px-3 py-2.5 outline-none',\n 'data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0',\n ],\n variants: {\n variant: {\n default: '',\n soft: '',\n surface: '',\n solid: '',\n outline: '',\n },\n color: {\n neutral: '',\n accent: '',\n success: '',\n warning: '',\n danger: '',\n },\n hasMarker: {\n true: 'grid-cols-[auto_minmax(0,1fr)_auto]',\n false: 'grid-cols-[minmax(0,1fr)_auto]',\n },\n hasDescription: {\n true: '',\n false: '',\n },\n },\n defaults: {\n variant: 'default',\n color: 'neutral',\n hasMarker: false,\n hasDescription: false,\n },\n },\n marker: {\n base: 'size-2 self-center rounded-full',\n variants: {\n color: {\n neutral: 'hidden',\n accent: '',\n success: '',\n warning: '',\n danger: '',\n },\n variant: {\n default: 'hidden',\n soft: '',\n surface: '',\n solid: 'hidden',\n outline: '',\n },\n },\n defaults: {\n color: 'neutral',\n variant: 'default',\n },\n },\n content: {\n base: 'grid min-w-0 gap-0.5 self-center',\n },\n title: {\n base: 'min-w-0',\n },\n description: {\n base: 'min-w-0',\n },\n close: {\n base: [\n '-mr-1 inline-flex size-control-md shrink-0 items-center justify-center self-center rounded-control-sm outline-none',\n ],\n },\n closeIcon: {\n base: 'size-icon fill-current',\n },\n outlet: {\n base: [\n 'pointer-events-none fixed z-toast flex w-[min(24rem,calc(100vw-2rem))] flex-col gap-2',\n ],\n variants: {\n position: {\n 'top-right': 'right-4 top-4 justify-items-end',\n 'top-left': 'left-4 top-4 justify-items-start',\n 'top-center': 'left-1/2 top-4 -translate-x-1/2 justify-items-center',\n 'bottom-right': 'bottom-4 right-4 justify-items-end',\n 'bottom-left': 'bottom-4 left-4 justify-items-start',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2 justify-items-center',\n },\n },\n defaults: {\n position: 'top-right',\n },\n },\n },\n}});\n\nexport {toastStyles};\n","import type Alpine from 'alpinejs';\nimport {animate, hover, motionValue} from 'motion';\n\nimport {\n createAlpineMachine,\n defineAlpineData,\n type AlpineMachine,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {defineProps} from '@client/runtime/codecs';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {createMotionPlan} from '@client/motion';\nimport {easings} from '@client/motion/recipe';\nimport {speeds} from '@client/motion/recipe';\nimport {replaceMotion} from '@client/motion/registry';\nimport {addListener, dispatch, type CleanupStack} from '@client/utils';\nimport {\n toastOutletSchema, toastSchema, type ToastColor, type ToastLevel, type ToastOutletProps,\n type ToastProps, type ToastResolvedColor, type ToastVariant,\n} from './contract';\nimport {createToastMachine, toastHooks, type ToastContext, type ToastDismissReason} from './machine';\nimport {toastStyles} from './styles';\n\ntype ToastTransitionName = (typeof toastHooks)[number]['name'];\ntype ToastTransition<TName extends ToastTransitionName = ToastTransitionName> = TransitionForHook<\n Extract<(typeof toastHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype ToastDetail = {description?: unknown; title?: unknown; color?: unknown; level?: unknown; variant?: unknown; duration?: unknown; dismissible?: unknown};\ntype ToastPauseSource = 'outlet' | 'visibility' | 'consumer' | 'gesture';\n\n/**\n * Public Alpine API for `ui.toast`.\n *\n * @public\n */\ninterface UiToastApi {\n /** Whether the opening transition has settled. */\n readonly isOpen: boolean;\n /** Whether any pause source currently holds the lifetime timer. */\n readonly isPaused: boolean;\n /** Auto-dismiss lifetime remaining in milliseconds. */\n readonly remaining: number;\n /** Dismisses the notification through its closing transition. */\n dismiss(): void;\n /** Adds the consumer pause source. */\n pause(): void;\n /** Releases the consumer pause source. */\n resume(): void;\n}\n\n/**\n * Public Alpine API for `ui.toast.outlet`.\n *\n * @public\n */\ninterface UiToastOutletApi {\n /** Adds a notification using the same lifecycle as server-rendered markup. */\n add(detail: ToastDetail): void;\n}\n\ntype ToastData = AlpineMachine<ToastContext, ToastProps, typeof toastHooks> & UiToastApi & {init(): void; destroy(): void};\ntype ToastOutletData = UiToastOutletApi & {props: ToastOutletProps; cleanup: CleanupStack; sync(): void; init(): void; destroy(): void};\n\nconst isToastLevel = (value: unknown): value is ToastLevel => ['info', 'success', 'warning', 'danger', 'debug'].includes(String(value));\nconst isToastColor = (value: unknown): value is ToastColor => ['auto', 'neutral', 'accent', 'success', 'warning', 'danger'].includes(String(value));\nconst isToastVariant = (value: unknown): value is ToastVariant => ['default', 'soft', 'surface', 'solid', 'outline'].includes(String(value));\nconst toastColorForLevel = (level: ToastLevel): ToastResolvedColor => level === 'info' ? 'accent' : level === 'success' || level === 'warning' || level === 'danger' ? level : 'neutral';\nconst resolveToastColor = (color: unknown, level: ToastLevel): ToastResolvedColor => isToastColor(color) && color !== 'auto' ? color : toastColorForLevel(level);\nconst normalizedDuration = (value: unknown, fallback: number): number => {\n const duration = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(duration) && duration >= 0 ? duration : fallback;\n};\n\nconst toastRestTransform = (toast: HTMLElement): string => {\n const style = toast.style;\n const offset = Number.parseFloat(style.getPropertyValue('--ui-toast-stack-offset')) || 0;\n const scale = Number.parseFloat(style.getPropertyValue('--ui-toast-stack-scale')) || 1;\n return `translateY(${offset}px) scale(${scale})`;\n};\n\nconst activeToasts = (outlet: HTMLElement): HTMLElement[] => Array.from(outlet.querySelectorAll<HTMLElement>(':scope > [data-ui-toast]'))\n .filter((toast) => toast.dataset.state !== 'closing' && toast.dataset.state !== 'closed');\n\nconst syncToastStack = (outlet: HTMLElement, animateStack = false): void => {\n const toasts = Array.from(outlet.querySelectorAll<HTMLElement>(':scope > [data-ui-toast]'));\n outlet.dataset.stack = toasts.length > 1 ? 'collapsed' : 'single';\n const style = getComputedStyle(outlet);\n const gap = Number.parseFloat(style.rowGap || style.gap || '0') || 0;\n const heights = toasts.map((toast) => Math.ceil(toast.scrollHeight || toast.getBoundingClientRect().height));\n const peek = Number.parseFloat(style.getPropertyValue('--ui-toast-stack-peek')) || 8;\n const direction = outlet.dataset.position?.startsWith('bottom') ? -1 : 1;\n const expanded = outlet.dataset.stackExpanded === 'true';\n const depth = Math.min(Math.max(0, toasts.length - 1), 3);\n outlet.style.setProperty('--ui-toast-front-height', `${heights[0] ?? 0}px`);\n outlet.style.setProperty('--ui-toast-stack-height', `${(heights[0] ?? 0) + depth * peek}px`);\n outlet.style.setProperty('--ui-toast-stack-expanded-height', `${heights.reduce((sum, height) => sum + height, 0) + Math.max(0, toasts.length - 1) * gap}px`);\n let expandedOffset = 0;\n toasts.forEach((toast, index) => {\n const itemDepth = Math.min(index, 3);\n const offset = expanded ? expandedOffset * direction : itemDepth * peek * direction;\n const scale = expanded ? 1 : Math.max(0.91, 1 - itemDepth * 0.03);\n const opacity = expanded ? 1 : Math.max(0.72, 1 - itemDepth * 0.08);\n if (expanded) expandedOffset += (heights[index] ?? 0) + gap;\n toast.dataset.stackIndex = String(index);\n toast.dataset.swipeAxis = outlet.dataset.position?.endsWith('left') || outlet.dataset.position?.endsWith('right') ? 'x' : 'y';\n toast.style.setProperty('--ui-toast-stack-index', String(index));\n toast.style.setProperty('--ui-toast-stack-depth', String(itemDepth));\n toast.style.setProperty('--ui-toast-stack-direction', String(direction));\n toast.style.setProperty('--ui-toast-outside', direction > 0 ? '-100%' : '100%');\n toast.style.setProperty('--ui-toast-stack-offset', `${offset}px`);\n toast.style.setProperty('--ui-toast-stack-scale', String(scale));\n toast.style.setProperty('--ui-toast-stack-opacity', String(opacity));\n toast.style.zIndex = String(toasts.length - index);\n const transform = `translateY(${offset}px) scale(${scale})`;\n if (toast.dataset.swiping === 'true') return;\n if (animateStack && toast.dataset.state === 'open') {\n createMotionPlan(toast).animate({opacity, transform}).speed('moderate').play();\n } else if (toast.dataset.state === 'open') {\n toast.style.opacity = String(opacity);\n toast.style.transform = transform;\n }\n });\n};\n\nconst requestDismiss = (toast: HTMLElement, reason: ToastDismissReason): void => {\n toast.dispatchEvent(new CustomEvent('ui:toast-dismiss-request', {detail: {reason}}));\n};\n\nconst enforceLimit = (outlet: HTMLElement, maxItems: number): void => {\n if (maxItems === 0) return;\n const active = activeToasts(outlet);\n active.slice(maxItems).forEach((toast) => requestDismiss(toast, 'api'));\n};\n\nconst syncToast = (root: HTMLElement, props: ToastProps): void => {\n const color = resolveToastColor(props.color, props.level);\n const hasDescription = root.dataset.description === 'true' || Boolean(props.description.trim());\n const hasMarker = color !== 'neutral' && props.variant !== 'solid' && props.variant !== 'default';\n const urgent = props.level === 'danger' || props.level === 'warning';\n Object.assign(root.dataset, {level: props.level, color, variant: props.variant, duration: String(props.duration), dismissible: String(props.dismissible)});\n root.setAttribute('role', urgent ? 'alert' : 'status');\n root.setAttribute('aria-live', urgent ? 'assertive' : 'polite');\n root.className = resolveStyle({part: toastStyles.parts.root, props: {variant: props.variant, color, hasDescription, hasMarker}, className: props.class});\n root.querySelector<HTMLElement>('[data-ui-toast-marker]')?.setAttribute('class', resolveStyle({part: toastStyles.parts.marker, props: {variant: props.variant, color}}));\n root.querySelectorAll<HTMLElement>('[data-ui-toast-content]').forEach((el) => { el.className = resolveStyle({part: toastStyles.parts.content, className: props.contentClass}); });\n root.querySelectorAll<HTMLElement>('[data-ui-toast-title]').forEach((el) => { el.className = `text-sm font-medium ${resolveStyle({part: toastStyles.parts.title})}`; });\n root.querySelectorAll<HTMLElement>('[data-ui-toast-description]').forEach((el) => { el.className = `text-sm ${resolveStyle({part: toastStyles.parts.description})}`; });\n root.querySelectorAll<HTMLElement>('[data-ui-toast-close]').forEach((el) => { el.hidden = !props.dismissible; el.className = resolveStyle({part: toastStyles.parts.close, className: props.closeClass}); });\n};\n\nconst UiToast = (): TrellisAlpineComponent<ToastData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let cleanup: CleanupStack = [];\n let deadline = 0;\n let timeout: number | null = null;\n let ticker: number | null = null;\n let previousDuration = 0;\n const pauseSources = new Set<ToastPauseSource>();\n const root = (): HTMLElement => { if (!rootEl) throw new Error('Toast has not been initialized.'); return rootEl; };\n const outlet = (): HTMLElement | null => root().parentElement?.matches('[data-ui-toast-outlet]') ? root().parentElement : null;\n const remainingNow = (): number => timeout === null ? bridge.getSnapshot().context.timer.remaining : Math.max(0, deadline - performance.now());\n const stopTimer = (): void => {\n if (timeout !== null) clearTimeout(timeout);\n if (ticker !== null) clearInterval(ticker);\n timeout = ticker = null;\n };\n const bridge = createAlpineMachine({\n schema: toastSchema, hooks: toastHooks,\n createMachine: ({props}) => createToastMachine(props, {\n prepareOpen: () => { root().dataset.state = 'opening'; syncToast(root(), bridge.getSnapshot().props); outlet() && syncToastStack(outlet()!, true); },\n finishOpen: () => { root().dataset.state = 'open'; outlet() && syncToastStack(outlet()!, true); },\n startTimer: () => {\n const remaining = bridge.getSnapshot().context.timer.remaining;\n if (remaining <= 0) return;\n deadline = performance.now() + remaining;\n timeout = window.setTimeout(() => bridge.send({type: 'DISMISS', reason: 'timeout'}), remaining);\n ticker = window.setInterval(() => bridge.send({type: 'TICK', remaining: remainingNow()}), 100);\n },\n stopTimer,\n prepareClose: () => { stopTimer(); root().dataset.state = 'closing'; outlet() && syncToastStack(outlet()!, true); },\n finishClose: (reason) => {\n const el = root();\n const parent = outlet();\n el.dataset.state = 'closed';\n dispatch({el, name: 'ui:dismiss', detail: {reason}});\n el.remove();\n if (parent) syncToastStack(parent, true);\n },\n syncProps: () => {\n const props = bridge.getSnapshot().props;\n syncToast(root(), props);\n if (props.duration !== previousDuration) { previousDuration = props.duration; bridge.send('DURATION_CHANGED'); }\n outlet() && syncToastStack(outlet()!);\n },\n }),\n });\n const addPause = (source: ToastPauseSource): void => {\n const wasEmpty = pauseSources.size === 0;\n pauseSources.add(source);\n if (wasEmpty) bridge.send({type: 'PAUSE', remaining: remainingNow()});\n };\n const removePause = (source: ToastPauseSource): void => {\n pauseSources.delete(source);\n if (pauseSources.size === 0) bridge.send('RESUME');\n };\n const component: TrellisAlpineComponent<ToastData> = {\n ...bridge,\n get isOpen() { return this.snapshot.current?.tags.includes('open') ?? false; },\n get isPaused() { return this.snapshot.current?.tags.includes('paused') ?? false; },\n get remaining() { return this.snapshot.current?.context.timer.remaining ?? 0; },\n init() {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n previousDuration = bridge.getSnapshot().props.duration;\n if (document.hidden) pauseSources.add('visibility');\n addListener({target: root(), event: 'click', handler: (event) => { const target = event.target; if (bridge.getSnapshot().props.dismissible && target instanceof Element && target.closest('[data-ui-toast-close]')) bridge.send({type: 'DISMISS', reason: 'close'}); }, cleanup});\n addListener({target: root(), event: 'ui:toast-dismiss-request', handler: (event) => { const reason = event instanceof CustomEvent ? event.detail?.reason : 'api'; bridge.send({type: 'DISMISS', reason}); }, cleanup});\n addListener({target: root(), event: 'ui:toast-pause-request', handler: (event) => {\n const paused = event instanceof CustomEvent && event.detail?.paused === true;\n paused ? addPause('outlet') : removePause('outlet');\n }, cleanup});\n addListener({target: document, event: 'visibilitychange', handler: () => document.hidden ? addPause('visibility') : removePause('visibility'), cleanup});\n addListener({target: root(), event: 'pointerdown', handler: (event) => {\n if (!(event instanceof PointerEvent) || !event.isPrimary || event.button !== 0) return;\n if (!bridge.getSnapshot().props.dismissible) return;\n if (event.target instanceof Element && event.target.closest('button, a, input, select, textarea')) return;\n const toast = root();\n const position = outlet()?.dataset.position ?? 'bottom-right';\n const horizontal = position.endsWith('left') || position.endsWith('right');\n const sign = horizontal\n ? position.endsWith('left') ? -1 : 1\n : position.startsWith('top') ? -1 : 1;\n const start = horizontal ? event.clientX : event.clientY;\n const startedAt = performance.now();\n const base = toastRestTransform(toast);\n const stackOpacity = Number.parseFloat(toast.style.getPropertyValue('--ui-toast-stack-opacity')) || 1;\n const delta = motionValue(0);\n replaceMotion(toast);\n addPause('gesture');\n toast.dataset.swiping = 'true';\n toast.setPointerCapture(event.pointerId);\n const unsubscribe = delta.on('change', (value) => {\n const translation = horizontal ? `translateX(${value}px)` : `translateY(${value}px)`;\n toast.style.transform = `${base} ${translation}`;\n const distance = Math.abs(value);\n const extent = horizontal ? toast.offsetWidth : toast.offsetHeight;\n toast.style.opacity = String(Math.max(0.35, stackOpacity * (1 - distance / Math.max(extent * 2, 1))));\n });\n const move = (moveEvent: PointerEvent): void => {\n if (moveEvent.pointerId !== event.pointerId) return;\n moveEvent.preventDefault();\n const positionNow = horizontal ? moveEvent.clientX : moveEvent.clientY;\n const raw = positionNow - start;\n delta.set(raw * sign >= 0 ? raw : raw * 0.2);\n };\n const finish = (endEvent: PointerEvent, cancelled = false): void => {\n if (endEvent.pointerId !== event.pointerId) return;\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', finish);\n window.removeEventListener('pointercancel', cancel);\n const distance = delta.get();\n const elapsed = Math.max(1, performance.now() - startedAt);\n const velocity = Math.abs(distance) / elapsed;\n const dismiss = !cancelled && distance * sign > 0 && (Math.abs(distance) >= 45 || velocity > 0.11);\n const settle = dismiss\n ? animate(delta, sign * (horizontal ? window.innerWidth : window.innerHeight), {\n duration: speeds.moderate.duration,\n ease: easings.out,\n })\n : animate(delta, 0, {type: 'spring', ...speeds.slow, bounce: 0.12});\n const opacity = animate(toast, {opacity: dismiss ? 0 : stackOpacity}, {\n duration: speeds.moderate.duration,\n ease: easings.out,\n });\n void Promise.allSettled([settle.finished, opacity.finished]).then(() => {\n unsubscribe();\n delete toast.dataset.swiping;\n removePause('gesture');\n if (dismiss) requestDismiss(toast, 'swipe');\n else {\n toast.style.opacity = String(stackOpacity);\n toast.style.transform = base;\n }\n });\n };\n const cancel = (cancelEvent: PointerEvent): void => finish(cancelEvent, true);\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', finish);\n window.addEventListener('pointercancel', cancel);\n }, cleanup});\n bridge.send('OPEN');\n },\n destroy() { stopTimer(); cleanup.forEach((dispose) => dispose()); cleanup = []; bridge.disconnect(); rootEl = null; },\n dismiss() { bridge.send({type: 'DISMISS', reason: 'api'}); },\n pause() { addPause('consumer'); },\n resume() { removePause('consumer'); },\n };\n return component;\n};\n\nconst closeIconSvg = (className: string): SVGSVGElement => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 32 32'); svg.setAttribute('aria-hidden', 'true'); svg.dataset.uiToastCloseIcon = ''; svg.setAttribute('class', className);\n const polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');\n polygon.setAttribute('points', '17.4141 16 24 9.4141 22.5859 8 16 14.5859 9.4143 8 8 9.4141 14.5859 16 8 22.5859 9.4143 24 16 17.4141 22.5859 24 24 22.5859 17.4141 16'); svg.append(polygon);\n return svg;\n};\n\nconst buildToast = (detail: ToastDetail, fallbackDuration: number): HTMLElement => {\n const level = isToastLevel(detail.level) ? detail.level : 'info';\n const variant = isToastVariant(detail.variant) ? detail.variant : 'default';\n const title = typeof detail.title === 'string' ? detail.title : '';\n const description = typeof detail.description === 'string' ? detail.description : '';\n const duration = normalizedDuration(detail.duration, fallbackDuration);\n const dismissible = typeof detail.dismissible === 'boolean' ? detail.dismissible : true;\n const root = document.createElement('div');\n root.setAttribute('x-data', 'UiToast');\n root.setAttribute('x-ui-transition:opening', \"$ui.motion($transition).animate($ui.motion.presets.toast.in).speed('moderate').play()\");\n root.setAttribute('x-ui-transition:closing', \"$transition.data.reason === 'swipe' ? null : $ui.motion($transition).animate($ui.motion.presets.toast.out).speed('moderate').play()\");\n Object.assign(root.dataset, {uiToast: '', uiToastRecipe: '', uiSurface: '+3', uiElevation: '4', level, color: isToastColor(detail.color) ? detail.color : 'auto', variant, duration: String(duration), dismissible: String(dismissible), description: String(Boolean(description.trim())), state: 'closed'});\n root.setAttribute('aria-atomic', 'true');\n root.style.opacity = '0';\n const marker = document.createElement('span'); marker.dataset.uiToastMarker = ''; marker.setAttribute('aria-hidden', 'true'); root.append(marker);\n const content = document.createElement('div'); content.dataset.uiToastContent = '';\n if (title) { const el = document.createElement('strong'); el.dataset.uiToastTitle = ''; el.textContent = title; content.append(el); }\n if (description) { const el = document.createElement('div'); el.dataset.uiToastDescription = ''; el.textContent = description; content.append(el); }\n root.append(content);\n if (dismissible) { const close = document.createElement('button'); close.type = 'button'; close.dataset.uiToastClose = ''; close.setAttribute('aria-label', 'Dismiss notification'); close.append(closeIconSvg(resolveStyle({part: toastStyles.parts.closeIcon}))); root.append(close); }\n return root;\n};\n\nconst UiToastOutlet = (AlpineInstance: Alpine.Alpine): TrellisAlpineComponent<ToastOutletData> => {\n const expandedSources = new Set<'pointer' | 'focus'>();\n let rootEl: HTMLElement | null = null;\n const broadcastPause = (paused: boolean): void => {\n rootEl?.querySelectorAll<HTMLElement>(':scope > [data-ui-toast]').forEach((toast) => {\n toast.dispatchEvent(new CustomEvent('ui:toast-pause-request', {detail: {paused}}));\n });\n };\n const addExpandedSource = (source: 'pointer' | 'focus'): void => {\n const wasEmpty = expandedSources.size === 0;\n expandedSources.add(source);\n if (!rootEl || !wasEmpty) return;\n rootEl.dataset.stackExpanded = 'true';\n broadcastPause(true);\n syncToastStack(rootEl, true);\n };\n const removeExpandedSource = (source: 'pointer' | 'focus'): void => {\n expandedSources.delete(source);\n if (!rootEl || expandedSources.size > 0) return;\n delete rootEl.dataset.stackExpanded;\n broadcastPause(false);\n syncToastStack(rootEl, true);\n };\n return ({\n props: null as unknown as ToastOutletProps, cleanup: [],\n init() {\n this.props = defineProps({el: this.$el, schema: toastOutletSchema, onChange: () => this.sync()});\n const root = this.$el as HTMLElement;\n rootEl = root;\n this.sync();\n this.cleanup.push(hover(root, () => {\n addExpandedSource('pointer');\n return () => removeExpandedSource('pointer');\n }));\n addListener({target: root, event: 'focusin', handler: () => addExpandedSource('focus'), cleanup: this.cleanup});\n addListener({target: root, event: 'focusout', handler: () => queueMicrotask(() => { if (!root.contains(document.activeElement)) removeExpandedSource('focus'); }), cleanup: this.cleanup});\n addListener({target: document, event: 'ui:toast', handler: (event) => this.add(event instanceof CustomEvent ? event.detail as ToastDetail : {}), cleanup: this.cleanup});\n queueMicrotask(() => enforceLimit(root, this.props.maxItems));\n },\n destroy() { this.props.disconnect(); this.cleanup.forEach((dispose) => dispose()); this.cleanup = []; expandedSources.clear(); rootEl = null; },\n sync() {\n const root = this.$el as HTMLElement;\n root.id = this.props.id; root.dataset.position = this.props.position; root.dataset.duration = String(this.props.duration); root.dataset.maxItems = String(this.props.maxItems);\n root.className = resolveStyle({part: toastStyles.parts.outlet, props: {position: this.props.position}, className: this.props.class});\n syncToastStack(root); enforceLimit(root, this.props.maxItems);\n },\n add(detail) {\n const title = typeof detail.title === 'string' ? detail.title : '';\n const description = typeof detail.description === 'string' ? detail.description : '';\n if (!title.trim() && !description.trim()) return;\n const root = this.$el as HTMLElement;\n const toast = buildToast(detail, this.props.duration);\n root.prepend(toast);\n AlpineInstance.initTree(toast as HTMLElement & Alpine.ElementWithXAttributes);\n if (expandedSources.size > 0) toast.dispatchEvent(new CustomEvent('ui:toast-pause-request', {detail: {paused: true}}));\n syncToastStack(root); enforceLimit(root, this.props.maxItems);\n },\n });\n};\n\nconst registerToast = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiToast', UiToast)(AlpineInstance);\n defineAlpineData(\n 'UiToastOutlet',\n () => UiToastOutlet(AlpineInstance),\n )(AlpineInstance);\n};\n\nexport {registerToast, UiToast, UiToastOutlet};\nexport type {ToastData, ToastDetail, ToastOutletData, ToastTransition, UiToastApi, UiToastOutletApi};\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 {registerToast as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerToast = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerToast};\nexport default registerToast;\nexport * from './index';\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
@@ -0,0 +1,2 @@
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{t as a}from"./alpine-machine-D0Kqjm-1.js";import{t as o}from"./alpine-data-DZ17j0jc.js";import{t as s}from"./machine-Dqut4h89.js";import{n as c}from"./props-change-2xfsIAEN.js";import{C as l}from"./common-BOd_thC-.js";var u=[`stack`,`grid`,`inline`];e(l,`vertical`),e(u,`stack`),e([`default`,`trailing`],`default`),e([`stack`,`row`,`grid`],`stack`),e(u,`stack`);var d={invalid:n(t,`prop-invalid`)},f=[],p=e=>({event:t})=>c(t)?.props.invalid===e,m=e=>{let t=c(e.event)?.props;return t?{props:t}:void 0},h=({props:e,effects:t})=>s({initial:e.invalid?`invalid`:`valid`,on:{PROPS_CHANGED:[{target:`invalid`,guard:p(!0),reduce:`reconcileProps`,effects:`sync`},{target:`valid`,guard:p(!1),reduce:`reconcileProps`,effects:`sync`}],CONTENT_CHANGED:{effects:`sync`}},states:{valid:{tags:[`valid`]},invalid:{tags:[`invalid`]}}},{context:{},props:e,reducers:{reconcileProps:m},effects:t}),g=`input:not([type="hidden"]), textarea, select, button, [data-ui-control-target]`,_=(e,t)=>{let n=new Set((e??``).split(/\s+/).filter(Boolean));return n.add(t),Array.from(n).join(` `)},v=(e,t)=>(e??``).split(/\s+/).filter(e=>e&&!t.has(e)).join(` `),y=(e,t)=>(e.id||=`ui-${t}-${crypto.randomUUID()}`,e.id),b=()=>{let e=null,t=null,n=new WeakMap,o=new WeakMap,s=()=>{if(!e)throw Error(`Field has not been initialized.`);return e},c=()=>m.getCommittedSnapshot(),l=(e,t)=>{let i=n.get(e)??new Set,a=v(e.getAttribute(`aria-describedby`),i);t.forEach(e=>{a=_(a,e)}),a?r({el:e,attr:`aria-describedby`,value:a}):e.removeAttribute(`aria-describedby`),n.set(e,new Set(t))},u=(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(g)).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]`),d=Array.from(e.querySelectorAll(`:scope > [data-ui-field-description]`)),f=Array.from(e.querySelectorAll(`:scope > [data-ui-field-error]`)),p=[...d,...f].filter(e=>!e.hasAttribute(`hidden`)).map(e=>y(e,e.hasAttribute(`data-ui-field-error`)?`field-error`:`field-description`));if(n){let e=y(n,`control`);if(a&&!a.htmlFor&&(a.htmlFor=e),o){let e=y(o,`fieldset-legend`);r({el:n,attr:`aria-labelledby`,value:_(n.getAttribute(`aria-labelledby`),e)})}l(n,p),u(n,t)}e.matches(`fieldset`)&&l(e,p)},m=a({schema:d,hooks:f,createMachine:({props:e})=>h({props:e,effects:{sync:p}})});return{...m,init(){e=this.$el,m.connect(e,this.snapshot),t=new MutationObserver(()=>m.send(`CONTENT_CHANGED`)),t.observe(s(),{childList:!0,subtree:!0}),p()},destroy(){t?.disconnect(),t=null,m.disconnect(),e=null}}},x=o(`UiField`,b),S=new WeakSet,C=e=>{S.has(e)||(S.add(e),x(e))};export{b as n,C as t};
2
+ //# sourceMappingURL=entry.generated-DVPnOfPb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.generated-DVPnOfPb.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, defineAlpineData, 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 = defineAlpineData('UiField', UiField);\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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"}
@@ -0,0 +1,2 @@
1
+ import{f as e,l as t,n}from"./codecs-Cb1ns_47.js";import{i as r,o as i,s as a,t as o}from"./dom-qAeVl7dc.js";import{t as s}from"./alpine-machine-D0Kqjm-1.js";import{t as c}from"./number-BCZdoG0B.js";import{t as l}from"./alpine-data-DZ17j0jc.js";import{n as u,t as d}from"./styles-TfvwVPGw.js";import{t as f}from"./merge-bindings-C8ewA_FD.js";import{t as p}from"./machine-Dqut4h89.js";import{n as m}from"./props-change-2xfsIAEN.js";var h={orientation:t([`vertical`,`horizontal`,`both`],`vertical`),type:t([`hover`,`always`,`scroll`],`hover`),fill:n,hideNative:n.default(!0),disabled:n,class:e,viewportClass:e,scrollbarClass:e,thumbClass:e,cornerClass:e},g=e=>({event:t})=>t.axis===e,_=[],v=({props:e,context:t,effects:n})=>p({type:`parallel`,on:{PROPS_CHANGED:{reduce:`replaceProps`,effects:`sync`},MEASURED:{reduce:`setOverflow`,effects:`sync`}},states:{pointer:{initial:`outside`,states:{outside:{on:{POINTER_ENTERED:{target:`inside`,effects:`sync`}}},inside:{tags:[`hovered`],on:{POINTER_LEFT:{target:`outside`,effects:`sync`}}}}},focus:{initial:`outside`,states:{outside:{on:{FOCUS_ENTERED:{target:`inside`,effects:`sync`}}},inside:{tags:[`focused`],on:{FOCUS_LEFT:{target:`outside`,effects:`sync`}}}}},scrolling:{initial:`idle`,states:{idle:{on:{SCROLLED:{target:`active`,effects:`sync`}}},active:{tags:[`scrolling`],on:{SCROLL_SETTLED:{target:`idle`,effects:`sync`}}}}},dragging:{initial:`idle`,states:{idle:{on:{DRAG_STARTED:[{target:`vertical`,guard:g(`y`),effects:`sync`},{target:`horizontal`,guard:g(`x`),effects:`sync`}]}},vertical:{tags:[`dragging`,`dragging-y`],on:{DRAG_ENDED:{target:`idle`,effects:`sync`}}},horizontal:{tags:[`dragging`,`dragging-x`],on:{DRAG_ENDED:{target:`idle`,effects:`sync`}}}}}}},{context:t,props:e,reducers:{replaceProps:({event:e})=>{let t=m(e);return t?{props:t.props}:{}},setOverflow:({context:e,event:t})=>({context:{...e,overflow:{x:t.overflowX===!0,y:t.overflowY===!0}}})},effects:{sync:n.sync}}),y=d({definition:{component:`ui.scroll-area`,parts:{root:{base:[`relative min-w-0 overflow-hidden text-surface-ink`,`data-disabled:opacity-60`],variants:{fill:{true:`flex min-h-0 flex-1 flex-col`,false:``}},defaults:{fill:!1}},viewport:{base:[`min-h-0 min-w-0 outline-none`,`focus-visible:ui-focus-ring`],variants:{orientation:{vertical:`h-full w-full overflow-x-hidden overflow-y-auto`,horizontal:`h-full w-full overflow-x-auto overflow-y-hidden`,both:`size-full overflow-auto`},fill:{true:`flex-1`,false:``}},defaults:{orientation:`vertical`,fill:!1}},content:{base:`min-w-0`,variants:{orientation:{vertical:``,horizontal:`w-max min-w-full`,both:`min-w-full`}},defaults:{orientation:`vertical`}},scrollbar:{base:[`pointer-events-none absolute z-10 rounded-scrollbar-thumb opacity-0`,`data-visible:pointer-events-auto data-visible:opacity-100 data-disabled:pointer-events-none`],variants:{orientation:{vertical:`bottom-scrollbar-inset right-scrollbar-inset top-scrollbar-inset w-scrollbar`,horizontal:`bottom-scrollbar-inset left-scrollbar-inset right-scrollbar-inset h-scrollbar`}},defaults:{orientation:`vertical`}},thumb:{base:[`absolute rounded-scrollbar-thumb bg-scrollbar-thumb`,`hover:bg-scrollbar-thumb-hover data-dragging:bg-scrollbar-thumb-hover`],variants:{orientation:{vertical:`left-0 top-0 w-full`,horizontal:`left-0 top-0 h-full`}},defaults:{orientation:`vertical`}},corner:{base:[`pointer-events-none absolute bottom-scrollbar-inset right-scrollbar-inset z-10 size-scrollbar rounded-scrollbar-thumb`,`bg-transparent opacity-0`,`data-visible:opacity-100`]}}}}),b=18,x=1e3,S=null,C=(e,t)=>e===`both`||e===`horizontal`&&t===`x`||e===`vertical`&&t===`y`,w=()=>{if(S)return S;let e=document.createElement(`div`),t=document.createElement(`div`);return e.dir=`rtl`,e.style.cssText=`position:absolute;left:-9999px;width:4px;height:1px;overflow:scroll;`,t.style.cssText=`width:8px;height:1px;`,e.append(t),document.body.append(e),e.scrollLeft=1,e.scrollLeft===0?S=`negative`:(e.scrollLeft=0,S=e.scrollLeft===0?`reverse`:`default`),e.remove(),S},T=e=>{let t=Math.max(0,e.scrollWidth-e.clientWidth);if(!r({el:e}))return e.scrollLeft;let n=w();return n===`negative`?-e.scrollLeft:n===`reverse`?t-e.scrollLeft:e.scrollLeft},E=(e,t)=>{let n=Math.max(0,e.scrollWidth-e.clientWidth),i=c(t,0,n);if(!r({el:e})){e.scrollLeft=i;return}let a=w();a===`negative`?e.scrollLeft=-i:a===`reverse`?e.scrollLeft=n-i:e.scrollLeft=i},D=e=>e.dataset.orientation===`horizontal`?`x`:`y`,O=e=>e instanceof HTMLElement,k=(e,t)=>{let n=e.querySelector(`:scope > ${t}`);return O(n)?n:null},A=()=>{let e=null,t=[],n=null,r=null,l=0,d=0,p=0,m=null,g=null,S=null,w=()=>{if(!e)throw Error(`Scroll Area has not been initialized.`);return e},O=()=>K.getCommittedSnapshot(),A=()=>O().props,j=e=>O().tags.includes(e),M=()=>{let e=w(),t=k(e,`[data-ui-scroll-area-viewport]`)??e;return{root:e,viewport:t,content:k(t,`[data-ui-scroll-area-content]`),verticalScrollbar:k(e,`[data-ui-scroll-area-scrollbar][data-orientation="vertical"]`),horizontalScrollbar:k(e,`[data-ui-scroll-area-scrollbar][data-orientation="horizontal"]`),verticalThumb:k(e,`[data-ui-scroll-area-scrollbar][data-orientation="vertical"] > [data-ui-scroll-area-thumb][data-orientation="vertical"]`),horizontalThumb:k(e,`[data-ui-scroll-area-scrollbar][data-orientation="horizontal"] > [data-ui-scroll-area-thumb][data-orientation="horizontal"]`),corner:k(e,`[data-ui-scroll-area-corner]`)}},N=()=>{p&&=(window.clearTimeout(p),0)},P=()=>{N(),p=window.setTimeout(()=>{p=0,K.send(`SCROLL_SETTLED`)},x)},F=(e=M())=>{let{viewport:t}=e;if(e.verticalThumb&&g){let n=g.maxOffset*c(t.scrollTop/g.maxScroll,0,1);e.verticalThumb.style.transform=`translate3d(0, ${n}px, 0)`}if(e.horizontalThumb&&S){let n=S.maxOffset*c(T(t)/S.maxScroll,0,1);e.horizontalThumb.style.transform=`translate3d(${n}px, 0, 0)`}},I=e=>{let{viewport:t}=e,n=(e,n,r,i)=>{if(!n||!r||!i)return r&&(r.style.width=``,r.style.height=``,r.style.transform=``),null;let a=e===`y`?n.clientHeight:n.clientWidth,o=e===`y`?t.clientHeight:t.clientWidth,s=e===`y`?t.scrollHeight:t.scrollWidth,c=Math.max(1,s-o),l=Math.min(a,Math.max(b,o/s*a)),u=Math.max(0,a-l);return e===`y`?(r.style.height=`${l}px`,r.style.width=``):(r.style.width=`${l}px`,r.style.height=``),{trackLength:a,thumbLength:l,maxOffset:u,maxScroll:c}},{overflow:r}=O().context;g=n(`y`,e.verticalScrollbar,e.verticalThumb,r.y),S=n(`x`,e.horizontalScrollbar,e.horizontalThumb,r.x),F(e)},L=e=>{let t=A(),{overflow:n}=O().context,r=j(`hovered`)||j(`focused`)||j(`scrolling`)||j(`dragging`),i=e=>e?t.type===`always`?!0:t.type===`scroll`?j(`scrolling`)||j(`dragging`):r:!1,o=i(n.y),s=i(n.x);[e.verticalScrollbar,e.verticalThumb].forEach(e=>{e&&a({el:e,attr:`data-visible`,present:o})}),[e.horizontalScrollbar,e.horizontalThumb].forEach(e=>{e&&a({el:e,attr:`data-visible`,present:s})}),[e.verticalScrollbar,e.horizontalScrollbar].forEach(e=>{e&&a({el:e,attr:`data-disabled`,present:t.disabled})}),e.verticalThumb&&a({el:e.verticalThumb,attr:`data-dragging`,present:j(`dragging-y`)}),e.horizontalThumb&&a({el:e.horizontalThumb,attr:`data-dragging`,present:j(`dragging-x`)}),e.corner&&a({el:e.corner,attr:`data-visible`,present:o&&s})},R=()=>{if(!m)return;let e=m;m=null;let t=M(),n=e.axis===`y`?t.verticalThumb:t.horizontalThumb;try{n?.releasePointerCapture?.(e.pointerId)}catch{}K.send({type:`DRAG_ENDED`,axis:e.axis})},z=()=>{let e=M(),t=A(),{overflow:n}=O().context;t.disabled&&m&&R(),a({el:e.root,attr:`data-overflow-x`,present:n.x}),a({el:e.root,attr:`data-overflow-y`,present:n.y}),a({el:e.root,attr:`data-scrolling`,present:j(`scrolling`)}),a({el:e.root,attr:`data-dragging`,present:j(`dragging`)}),a({el:e.root,attr:`data-disabled`,present:t.disabled}),i({el:e.viewport,attr:`data-orientation`,value:t.orientation}),a({el:e.viewport,attr:`data-hide-native`,present:t.hideNative}),I(e),L(e)},B=()=>{l||=requestAnimationFrame(()=>{l=0;let e=M(),t=A(),n=C(t.orientation,`x`)&&e.viewport.scrollWidth>e.viewport.clientWidth+1,r=C(t.orientation,`y`)&&e.viewport.scrollHeight>e.viewport.clientHeight+1,i=O().context.overflow;n!==i.x||r!==i.y?K.send({type:`MEASURED`,overflowX:n,overflowY:r}):(I(e),L(e))})},V=()=>{d||=requestAnimationFrame(()=>{d=0,F()})},H=()=>{V(),j(`scrolling`)||K.send(`SCROLLED`),(O().context.overflow.y&&!g||O().context.overflow.x&&!S)&&B(),P()},U=(e,t)=>{if(A().disabled)return;let n=M(),r=n.viewport,i=t===`y`?n.verticalScrollbar:n.horizontalScrollbar,a=t===`y`?n.verticalThumb:n.horizontalThumb,o=t===`y`?O().context.overflow.y:O().context.overflow.x;if(!i||!a||!o)return;let s=t===`y`?i.clientHeight:i.clientWidth,c=t===`y`?a.offsetHeight:a.offsetWidth,l=t===`y`?Math.max(0,r.scrollHeight-r.clientHeight):Math.max(0,r.scrollWidth-r.clientWidth);m={axis:t,pointerId:e.pointerId,startPointer:t===`y`?e.clientY:e.clientX,startScroll:t===`y`?r.scrollTop:T(r),trackLength:s,thumbLength:c,maxScroll:l};try{a.setPointerCapture?.(e.pointerId)}catch{m=null;return}N(),K.send({type:`DRAG_STARTED`,axis:t})},W=e=>{if(!m||m.pointerId!==e.pointerId)return;e.preventDefault();let{viewport:t}=M(),n=(m.axis===`y`?e.clientY:e.clientX)-m.startPointer,r=Math.max(1,m.trackLength-m.thumbLength),i=m.startScroll+n/r*m.maxScroll;m.axis===`y`?t.scrollTop=c(i,0,m.maxScroll):E(t,i),V()},G=e=>{!m||m.pointerId!==e.pointerId||(R(),P())},K=s({schema:h,hooks:_,createMachine:({props:e})=>v({props:e,context:{overflow:{x:!1,y:!1}},effects:{sync:z}})}),q;return q={...K,get overflowX(){return this.snapshot.current?.context.overflow.x??!1},get overflowY(){return this.snapshot.current?.context.overflow.y??!1},get isScrolling(){return this.snapshot.current?.tags.includes(`scrolling`)??!1},get isDragging(){return this.snapshot.current?.tags.includes(`dragging`)??!1},init(){e=this.$el,K.connect(this.$el,this.snapshot);let i=M();n=new ResizeObserver(B),n.observe(i.viewport),i.content&&n.observe(i.content),r=new MutationObserver(B),i.content&&r.observe(i.content,{childList:!0,subtree:!0,characterData:!0}),o({target:i.viewport,event:`scroll`,handler:H,cleanup:t,options:{passive:!0}}),o({target:document,event:`pointermove`,handler:e=>W(e),cleanup:t}),o({target:document,event:`pointerup`,handler:e=>G(e),cleanup:t}),o({target:document,event:`pointercancel`,handler:e=>G(e),cleanup:t}),B()},destroy(){R(),N(),l&&cancelAnimationFrame(l),d&&cancelAnimationFrame(d),l=0,d=0,n?.disconnect(),r?.disconnect(),n=null,r=null,t.splice(0).forEach(e=>e()),K.disconnect(),e=null},get root(){let e=this.snapshot.current?.props??A();return f({inputs:[u({part:y.parts.root,props:e,className:e.class}),{"data-ui-scroll-area":``,":data-orientation":()=>A().orientation,":data-type":()=>A().type,":data-fill":()=>A().fill?``:void 0,":data-disabled":()=>A().disabled?``:void 0,"@pointerenter":()=>K.send(`POINTER_ENTERED`),"@pointerleave":()=>K.send(`POINTER_LEFT`),"@focusin":()=>K.send(`FOCUS_ENTERED`),"@focusout":e=>{(!(e.relatedTarget instanceof Node)||!w().contains(e.relatedTarget))&&K.send(`FOCUS_LEFT`)}}]})},viewport(e){return f({inputs:[u({part:y.parts.viewport,props:{orientation:A().orientation,fill:A().fill},className:e.dataset.class}),{tabindex:`0`,"data-ui-scroll-area-viewport":``,":data-orientation":()=>A().orientation,":data-hide-native":()=>A().hideNative?``:void 0}]})},scrollbar(e){let t=D(e)===`x`?`horizontal`:`vertical`;return f({inputs:[u({part:y.parts.scrollbar,props:{orientation:t},className:e.dataset.class}),{"data-ui-scroll-area-scrollbar":``,"aria-hidden":`true`,":data-disabled":()=>A().disabled?``:void 0}]})},thumb(e){let t=D(e),n=t===`x`?`horizontal`:`vertical`;return f({inputs:[u({part:y.parts.thumb,props:{orientation:n},className:e.dataset.class}),{"data-ui-scroll-area-thumb":``,"aria-hidden":`true`,"@pointerdown.prevent":e=>U(e,t),":data-dragging":()=>j(t===`x`?`dragging-x`:`dragging-y`)?``:void 0}]})},corner(e){return f({inputs:[u({part:y.parts.corner,className:e.dataset.class}),{"data-ui-scroll-area-corner":``,"aria-hidden":`true`}]})}},q},j=l(`UiScrollArea`,A),M=new WeakSet,N=e=>{M.has(e)||(M.add(e),j(e))};export{A as n,N as t};
2
+ //# sourceMappingURL=entry.generated-DiG5fS1F.js.map