@vireo-ai/trellis-ui 0.1.43 → 0.1.47

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 (187) hide show
  1. package/package.json +2 -2
  2. package/packages/client/src/components/toast/styles.css +0 -1
  3. package/packages/client/src/styles/generated/theme-fonts.css +1 -1
  4. package/packages/client/src/styles/generated/theme-palette.css +99 -99
  5. package/packages/client/src/styles/generated/theme-runtime.css +229 -128
  6. package/packages/client/src/styles/generated-sources.css +1 -1
  7. package/packages/client/src/styles/motion.css +26 -0
  8. package/packages/client/src/styles/recipes/option.css +4 -2
  9. package/packages/client/src/styles/recipes/selection.css +4 -0
  10. package/packages/client/src/styles/static.css +1 -0
  11. package/packages/client/src/styles/theme.css +0 -4
  12. package/packages/client/types/capabilities/motion.d.ts +2 -1
  13. package/packages/client/types/components/app/contract.d.ts +8 -8
  14. package/packages/client/types/components/box/contract.d.ts +3 -3
  15. package/packages/client/types/components/card/contract.d.ts +4 -4
  16. package/packages/client/types/components/checkbox/contract.d.ts +5 -5
  17. package/packages/client/types/components/checkbox/machine.d.ts +1 -0
  18. package/packages/client/types/components/container/contract.d.ts +2 -2
  19. package/packages/client/types/components/date-picker/contract.d.ts +2 -2
  20. package/packages/client/types/components/date-picker/machine.d.ts +4 -4
  21. package/packages/client/types/components/dropdown/machine.d.ts +4 -1
  22. package/packages/client/types/components/dropdown/safe-area.d.ts +19 -0
  23. package/packages/client/types/components/field/contract.d.ts +1 -1
  24. package/packages/client/types/components/file-upload/contract.d.ts +2 -2
  25. package/packages/client/types/components/file-upload/index.d.ts +2 -0
  26. package/packages/client/types/components/file-upload/machine.d.ts +3 -2
  27. package/packages/client/types/components/flex/contract.d.ts +3 -3
  28. package/packages/client/types/components/frame/contract.d.ts +3 -3
  29. package/packages/client/types/components/grid/contract.d.ts +4 -4
  30. package/packages/client/types/components/layout.d.ts +3 -3
  31. package/packages/client/types/components/menu/contract.d.ts +11 -4
  32. package/packages/client/types/components/modal/contract.d.ts +2 -2
  33. package/packages/client/types/components/radio/contract.d.ts +4 -4
  34. package/packages/client/types/components/section/contract.d.ts +2 -2
  35. package/packages/client/types/components/select/contract.d.ts +3 -3
  36. package/packages/client/types/components/select/machine.d.ts +6 -6
  37. package/packages/client/types/components/sidebar/contract.d.ts +3 -3
  38. package/packages/client/types/components/stack/contract.d.ts +3 -3
  39. package/packages/client/types/components/tooltip/contract.d.ts +4 -4
  40. package/packages/client/types/directives/bounds.d.ts +4 -0
  41. package/packages/client/types/directives/index.d.ts +1 -0
  42. package/packages/client/types/motion/bounds.d.ts +20 -0
  43. package/packages/client/types/motion/flip.d.ts +14 -0
  44. package/packages/client/types/motion/index.d.ts +60 -4
  45. package/packages/client/types/motion/plan.d.ts +7 -1
  46. package/packages/client/types/motion/recipe.d.ts +64 -7
  47. package/packages/client/types/motion/resize.d.ts +3 -1
  48. package/packages/client/types/motion/size.d.ts +25 -0
  49. package/packages/client/types/runtime/collection-navigation.d.ts +2 -1
  50. package/packages/client/types/runtime/identity.d.ts +2 -1
  51. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +293 -179
  52. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  53. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +365 -328
  54. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
  55. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js.map +1 -1
  56. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +1 -1
  57. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
  58. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-DCacA4wj.js +2 -0
  59. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-DCacA4wj.js.map +1 -0
  60. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-Z-__iteD.js +2 -0
  61. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-Z-__iteD.js.map +1 -0
  62. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BnB9Wz0E.js +3 -0
  63. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BnB9Wz0E.js.map +1 -0
  64. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-CfTZUJrL.js +2 -0
  65. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-CfTZUJrL.js.map +1 -0
  66. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-Dfj6NCjU.js +2 -0
  67. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{common-fH2NGblC.js.map → common-Dfj6NCjU.js.map} +1 -1
  68. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-DsXbNzqk.js → controller-BOf7dxV2.js} +2 -2
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-DsXbNzqk.js.map → controller-BOf7dxV2.js.map} +1 -1
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-Bmzg6DLB.js → core-DBX5qDXb.js} +2 -2
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-Bmzg6DLB.js.map → core-DBX5qDXb.js.map} +1 -1
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-invalidation-Dw6clnS4.js +2 -0
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-invalidation-Dw6clnS4.js.map +1 -0
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B8aXTJK6.js +2 -0
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B8aXTJK6.js.map +1 -0
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BEjAV5NT.js +2 -0
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BEjAV5NT.js.map +1 -0
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Ck7bhyzz.js → entry.generated-BUbxiHwA.js} +2 -2
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Ck7bhyzz.js.map → entry.generated-BUbxiHwA.js.map} +1 -1
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BV49EHah.js +2 -0
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BV49EHah.js.map +1 -0
  82. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CEGLKsEl.js → entry.generated-B_e0djHK.js} +2 -2
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CEGLKsEl.js.map → entry.generated-B_e0djHK.js.map} +1 -1
  84. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BdiyPh0p.js +2 -0
  85. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BdiyPh0p.js.map +1 -0
  86. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-By9j8PrV.js +2 -0
  87. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-By9j8PrV.js.map +1 -0
  88. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C0S3uZrm.js +2 -0
  89. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C0S3uZrm.js.map +1 -0
  90. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C5kjUnFe.js +2 -0
  91. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C5kjUnFe.js.map +1 -0
  92. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSgqcIg6.js +2 -0
  93. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSgqcIg6.js.map +1 -0
  94. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Gl6wz0Oh.js → entry.generated-Cekl4pYo.js} +2 -2
  95. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Gl6wz0Oh.js.map → entry.generated-Cekl4pYo.js.map} +1 -1
  96. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-e3bTOzUi.js → entry.generated-Cj1CmH13.js} +2 -2
  97. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cj1CmH13.js.map +1 -0
  98. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DcXzHGIV.js +2 -0
  99. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DcXzHGIV.js.map +1 -0
  100. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DeXEkXMW.js +2 -0
  101. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DeXEkXMW.js.map +1 -0
  102. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dqyot6vM.js +2 -0
  103. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BbQ_TNRI.js.map → entry.generated-Dqyot6vM.js.map} +1 -1
  104. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CYHiRVjx.js → entry.generated-EAAmcnsg.js} +2 -2
  105. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CYHiRVjx.js.map → entry.generated-EAAmcnsg.js.map} +1 -1
  106. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-F2czAXCg.js +2 -0
  107. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-F2czAXCg.js.map +1 -0
  108. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BwAge51I.js → entry.generated-f6HGqvQY.js} +2 -2
  109. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BwAge51I.js.map → entry.generated-f6HGqvQY.js.map} +1 -1
  110. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-QspMEPHx.js → entry2.generated-QspMEPHx.js} +1 -1
  111. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-QspMEPHx.js.map +1 -0
  112. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-a2NebZsn.js +2 -0
  113. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-a2NebZsn.js.map +1 -0
  114. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-DT-Hq9qe.js +3 -0
  115. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-DT-Hq9qe.js.map +1 -0
  116. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-CpTCQjY5.js +2 -0
  117. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-CpTCQjY5.js.map +1 -0
  118. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CfByjNaO.js +4 -0
  119. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CfByjNaO.js.map +1 -0
  120. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
  121. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -1
  122. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +1 -1
  123. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  124. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  125. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -1
  126. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -1
  127. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
  128. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js.map +1 -1
  129. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
  130. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +1 -1
  131. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  132. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  133. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
  134. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  135. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  136. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -1
  137. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
  138. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +1 -1
  139. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  140. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  141. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +1 -1
  142. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
  143. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  144. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
  145. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +169 -145
  146. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
  147. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
  148. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-C_8mc71v.js +0 -2
  149. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-C_8mc71v.js.map +0 -1
  150. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-Br_XBf7u.js +0 -2
  151. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-Br_XBf7u.js.map +0 -1
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-aY5GWxrK.js +0 -3
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-aY5GWxrK.js.map +0 -1
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-CtNDGKcQ.js +0 -2
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-CtNDGKcQ.js.map +0 -1
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-fH2NGblC.js +0 -2
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B74OtpL2.js +0 -2
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B74OtpL2.js.map +0 -1
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZXp8Edl.js +0 -2
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZXp8Edl.js.map +0 -1
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BbQ_TNRI.js +0 -2
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C1JdfrdC.js +0 -2
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C1JdfrdC.js.map +0 -1
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtoSPDoI.js +0 -2
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtoSPDoI.js.map +0 -1
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D0Av2Aiw.js +0 -2
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D0Av2Aiw.js.map +0 -1
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DJMDdEtO.js +0 -2
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DJMDdEtO.js.map +0 -1
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DNtvOM3X.js +0 -2
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DNtvOM3X.js.map +0 -1
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DSyiRko7.js +0 -2
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DSyiRko7.js.map +0 -1
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dd04OzRH.js +0 -2
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dd04OzRH.js.map +0 -1
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-QspMEPHx.js.map +0 -1
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-jP0UEZIS.js +0 -2
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-jP0UEZIS.js.map +0 -1
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-vM-5KVaL.js +0 -2
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-vM-5KVaL.js.map +0 -1
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjDWyE7q.js +0 -2
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjDWyE7q.js.map +0 -1
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-e3bTOzUi.js.map +0 -1
  184. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BhADgUVd.js +0 -3
  185. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BhADgUVd.js.map +0 -1
  186. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-egQWc4ws.js +0 -4
  187. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-egQWc4ws.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./styles-TfvwVPGw.js";import{a as t}from"./common-Dfj6NCjU.js";var n=[`inline-flex min-w-0 shrink-0 select-none items-center justify-center gap-1 whitespace-nowrap font-badge outline-none`,`data-disabled:pointer-events-none`],r={soft:``,surface:``,outline:``,solid:``},i={xs:`min-h-control-xs px-badge-padding-xs text-badge-xs [font-weight:var(--font-weight-badge-xs)]`,sm:`min-h-control-sm px-badge-padding-sm text-badge-sm [font-weight:var(--font-weight-badge-sm)]`,md:`min-h-control-md px-badge-padding-md text-badge-md [font-weight:var(--font-weight-badge-md)]`,lg:`min-h-control-lg px-badge-padding-lg text-badge-lg [font-weight:var(--font-weight-badge-lg)]`,xlg:`min-h-control-xlg px-badge-padding-xlg text-badge-xlg [font-weight:var(--font-weight-badge-xlg)]`},a={xs:`size-icon-xs`,sm:`size-icon-xs`,md:`size-icon-sm`,lg:`size-icon-sm`,xlg:`size-icon`},o=e({definition:{component:`ui.badge`,parts:{root:{base:n,variants:{variant:r,color:{neutral:``,accent:``,success:``,warning:``,danger:``},size:i,radius:t,insetLeft:{true:``,false:``},insetRight:{true:``,false:``},insetTop:{true:`-mt-1`,false:``},insetBottom:{true:`-mb-1`,false:``}},compounds:[{when:{insetLeft:!0,size:`xs`},class:`-ml-1.5`},{when:{insetLeft:!0,size:`sm`},class:`-ml-2`},{when:{insetLeft:!0,size:`md`},class:`-ml-2.5`},{when:{insetRight:!0,size:`xs`},class:`-mr-1.5`},{when:{insetRight:!0,size:`sm`},class:`-mr-2`},{when:{insetRight:!0,size:`md`},class:`-mr-2.5`}],defaults:{variant:`soft`,color:`neutral`,size:`sm`,radius:`sm`,insetLeft:!1,insetRight:!1,insetTop:!1,insetBottom:!1}},label:{base:`contents`},icon:{base:`shrink-0 fill-current text-current`,variants:{size:a,position:{leading:``,trailing:``}},defaults:{size:`sm`,position:`leading`}},close:{base:[`-mr-1 inline-flex shrink-0 items-center justify-center rounded-full text-current outline-none`,`data-disabled:pointer-events-none`],variants:{size:{xs:`size-badge-close-xs`,sm:`size-badge-close-sm`,md:`size-badge-close-md`,lg:`size-badge-close-lg`,xlg:`size-badge-close-xlg`}},defaults:{size:`sm`}},closeIcon:{base:`size-icon-xs shrink-0 fill-current text-current`}}}});export{o as a,r as i,n,i as r,a as t};
2
+ //# sourceMappingURL=styles-CpTCQjY5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles-CpTCQjY5.js","names":[],"sources":["../../../../../../../../client/src/components/badge/styles.ts"],"sourcesContent":["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"],"mappings":"kFAGA,IAAM,EAA0B,CAC5B,uHACA,mCACJ,EAEM,EAAwB,CAC1B,KAAM,GACN,QAAS,GACT,QAAS,GACT,MAAO,EACX,EAEM,EAAqB,CACvB,GAAI,+FACJ,GAAI,+FACJ,GAAI,+FACJ,GAAI,+FACJ,IAAK,kGACT,EAEM,EAA0B,CAC5B,GAAI,eACJ,GAAI,eACJ,GAAI,eACJ,GAAI,eACJ,IAAK,WACT,EAEM,EAAc,EAAa,CAAC,WAAY,CAC1C,UAAW,WACX,MAAO,CACH,KAAM,CACF,KAAM,EACN,SAAU,CACN,QAAS,EACT,MAAO,CACH,QAAS,GACT,OAAQ,GACR,QAAS,GACT,QAAS,GACT,OAAQ,EACZ,EACA,KAAM,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,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"}
@@ -0,0 +1,4 @@
1
+ import{t as e}from"./bridge-B4S_D6hV.js";import{a as t,n}from"./alpine-machine-BS13dbK4.js";import{t as r}from"./dom-invalidation-Dw6clnS4.js";import{n as i}from"./fragment-Bl3Rq38L.js";var a=`data-ui-preserve-attr`,o=(e,...t)=>{let n=new Set((e.getAttribute(`data-ui-preserve-attr`)??``).split(/\s+/).filter(Boolean));t.filter(Boolean).forEach(e=>n.add(e)),n.size>0&&e.setAttribute(a,Array.from(n).join(` `))},s=(e,t)=>{if(!(e instanceof Element)||!(t instanceof Element))return;let n=new Set([...(e.getAttribute(`data-ui-preserve-attr`)??``).split(/\s+/),...(t.getAttribute(`data-ui-preserve-attr`)??``).split(/\s+/)].filter(Boolean));if(n.size!==0){t.setAttribute(a,Array.from(n).join(` `));for(let r of n)e.hasAttribute(r)?t.setAttribute(r,e.getAttribute(r)??``):t.removeAttribute(r)}},c=`single-child`,l=(e,t)=>{if(typeof t==`string`&&t)return t;let n=e.getAttribute(`data-ui-key`)||e.id;if(n)return n;let r=e.parentElement;if(r?.getAttribute(`data-ui-key-scope`)!==c)return null;let i=r.getAttribute(`data-ui-key`)||r.id;return i?`${i}:single-child`:null},u=`data-ui-motion-key`,d=`data-ui-motion-layout`,f=e=>typeof e==`object`&&!!e&&Symbol.iterator in e,p=(e=document)=>typeof e==`string`?Array.from(document.querySelectorAll(e)):e instanceof Document||e instanceof Element?[e]:f(e)?Array.from(e):[document],m=(e=document,t={})=>{let n=p(e).filter(e=>e instanceof Element),r=[],i=(e,t,n)=>{r.push({element:e,attr:t,previous:e.getAttribute(t)}),e.setAttribute(t,n)};return n.forEach(e=>{(t.layout??!0)&&i(e,d,``);let n=l(e,t.key);n&&!e.hasAttribute(`data-ui-motion-key`)&&i(e,u,n)}),()=>{r.reverse().forEach(({element:e,attr:t,previous:n})=>{if(n===null){e.removeAttribute(t);return}e.setAttribute(t,n)})}},h=(e,...t)=>{typeof console<`u`&&console.warn(e,...t)},g=new Set,_=!1,v=null,y=null,b=null,x=Promise.resolve(),S=0,ee=e=>{for(let t of e)g.add(t);_||g.size===0||(_=!0,queueMicrotask(()=>{_=!1;let e=Array.from(g);g.clear(),e.forEach(e=>e.invalidateDom())}))},C=e=>{let t=document.createElement(`template`);return t.innerHTML=e,t},w=e=>Array.from(C(e).content.children).filter(e=>e instanceof HTMLElement),T=(e,t)=>{t.forEach(t=>e.initTree(t))},E=(e,t)=>t||e.getAttribute(`x-merge`)||`replace`,te=e=>{if(e.selector)return document.querySelector(e.selector);if(!e.target)return null;let t=e.target.startsWith(`#`)?e.target.slice(1):e.target;return document.getElementById(t)},D=(e,t,a)=>{let o=E(t,a.mode);if(o===`remove`){t.remove();return}if(!a.html){h(`x-ui-stream: received patch with no html`);return}if(o===`morph`||o===`outer`){if(typeof e.morph==`function`){let i=new Set;e.morph(t,a.html,{key(e){return l(e)},updating(e,t,n,r){if(e instanceof Element&&y?.(a.requestId??null,e)){r?.();return}s(e,t)},updated(t){if(!(t instanceof Element))return;let a=n(e,t);a&&i.add(a),r(t).forEach(e=>{i.add(e)})}}),ee(i);return}h(`x-ui-stream: morph mode requires an Alpine morph implementation; falling back to replace`)}if(o===`replace`||o===`morph`||o===`outer`){let[n]=w(a.html);if(!n){h(`x-ui-stream: replace mode produced no element`);return}t.replaceWith(n),e.initTree(n);return}if(o===`update`){i(e,t,a.html);return}let c=C(a.html),u=Array.from(c.content.children).filter(e=>e instanceof HTMLElement);if(o===`append`){t.append(c.content),T(e,u);return}if(o===`prepend`){t.prepend(c.content),T(e,u);return}if(o===`before`){t.before(c.content),T(e,u);return}o===`after`&&(t.after(c.content),T(e,u))},ne=(e,t)=>{let n=te(t);if(n){D(e,n,t);return}if(t.selector||t.target){h(`x-ui-stream: target not found`,t.selector??t.target);return}if(!t.html){h(`x-ui-stream: received patch with no html`);return}w(t.html).forEach(n=>{if(!n.id){h(`x-ui-stream: top-level element has no id, skipping`,n);return}let r=document.getElementById(n.id);r&&D(e,r,{...t,html:n.outerHTML})})},re=(t,n)=>{let r=Array.isArray(n)?n:[n],i=()=>{r.forEach(e=>ne(t,e))},a=()=>{let e=r.filter(e=>e.viewTransition===!0);if(e.length===0){i();return}b?b(t,e,i):i()},o=r.flatMap(e=>e.assets??[]);if(o.length===0&&S===0){a();return}S+=1;let s=async()=>{o.length>0&&await e(o,t),a()};x=x.then(s,s).catch(()=>void 0).finally(()=>{--S})},ie=e=>{b=e},O=e=>{document.dispatchEvent(new CustomEvent(e.event,{detail:e.detail??{},bubbles:!0,composed:!0}))},k=e=>{let t=new Map;for(let n of e.data.split(`
2
+ `)){let e=n.indexOf(` `),r=e>0,i=r?n.slice(0,e):n;if(!r&&i!==`html`)return h(`x-ui-stream: invalid SSE command line`,i),null;let a=r?n.slice(e+1):``,o=t.get(i);o?o.push(a):t.set(i,[a])}return t},A=(e,t)=>{let n=e.get(t);if(n?.length)return n.length>1&&h(`x-ui-stream: duplicate SSE command, using last value`,t),n.at(-1)},ae=(e,t)=>{let n=k(t);if(!n||n.size===0)return;let r=A(n,`request-id`);if(v&&!v(r??null))return;let i,a=A(n,`assets`);if(a)try{let e=JSON.parse(a);if(!Array.isArray(e))throw TypeError(`assets must be an array`);i=e}catch{h(`x-ui-stream: invalid patch assets JSON`,a);return}re(e,{mode:A(n,`mode`)??`replace`,target:A(n,`target`)??null,selector:A(n,`selector`)??null,html:n.get(`html`)?.join(`
3
+ `)??null,requestId:r??null,viewTransition:A(n,`view-transition`)===`true`,...i?{assets:i}:{}})},oe=e=>{let n=k(e);if(!n)return;let r=A(n,`request-id`);if(v&&!v(r??null))return;let i=A(n,`event`);if(!i){h(`x-ui-stream: dispatch SSE frame missing event`);return}let a=A(n,`detail`),o={};if(a)try{let e=JSON.parse(a);t(e)&&(o=e)}catch{h(`x-ui-stream: invalid dispatch detail JSON`,a);return}O({event:i,detail:o})},se={"trellis-ui-patch":ae,"trellis-ui-dispatch":(e,t)=>oe(t)},ce=`trellis-ui-`,le=(e,t)=>{let n=se[t.event];if(!n){t.event.startsWith(ce)&&h(`x-ui-stream: unsupported SSE event`,t.event);return}n(e,t)},ue=(e,t=``,n=``,r=``)=>{let i=new URL(e,document.baseURI),a=[...new Set(t.split(/\s+/).filter(Boolean))];return n&&i.searchParams.set(`client`,n),r&&i.searchParams.set(`lastEventId`,r),a.length>0&&(i.searchParams.delete(`channel`),a.forEach(e=>i.searchParams.append(`channel`,e))),/^[a-z][a-z\d+.-]*:/i.test(e)||e.startsWith(`//`)?i.href:`${i.pathname}${i.search}${i.hash}`},de=(e,t,n=``,r=``,i={})=>{let a=new EventSource(ue(t,n,r,i.lastEventId)),o=!0,s=e=>{e.lastEventId&&i.eventId?.(e.lastEventId)};return Object.keys(se).forEach(t=>{a.addEventListener(t,t=>{!o||!(t instanceof MessageEvent)||(s(t),le(e,{event:t.type,data:String(t.data)}))})}),a.addEventListener(`stream-open`,()=>{o&&i.open?.()}),a.addEventListener(`stream-reset`,e=>{o&&(e instanceof MessageEvent&&s(e),i.reset?.(e instanceof MessageEvent?String(e.data):``))}),a.addEventListener(`stream-error`,e=>{o&&(o=!1,a.close(),i.error?.(e instanceof MessageEvent?String(e.data):``))}),a.addEventListener(`error`,()=>{o&&(o=!1,a.close(),i.disconnected?.())}),{abort(){o=!1,a.close()}}},j=new Map,fe=new Set,pe=e=>e instanceof HTMLElement&&e.id?e.id:e,me=6e4,he=1e3,ge=2e3,_e=1e3,ve=3e4,M=(e,t,n={})=>{t!==`reset`&&(e.dataset.uiStreamState=t),e.dispatchEvent(new CustomEvent(`ui:stream:${t}`,{bubbles:!0,composed:!0,detail:{source:e,...n}}))},ye=(e,t)=>ue(t,e.dataset.uiStreamScopes,e.dataset.uiStreamClient),be=e=>e.dataset.uiStreamOpenWhenHidden===`true`,N=(e,t)=>JSON.stringify({openWhenHidden:be(e),url:ye(e,t)}),xe=e=>{if(!(e instanceof CustomEvent))return null;let t=e.detail;return!t||typeof t.requestId!=`string`||typeof t.method!=`string`||!(t.controller instanceof AbortController)?null:t},Se=(e,t,n)=>{let r=N(t,n),i=null,a,s=null,c,l,u=!1,d=``,f=0,p=0,m=!1,g=!1,_=new Map,v=new Set,y=be(t),b=()=>!m&&(y||document.visibilityState===`visible`),x=()=>{window.clearTimeout(c),c=void 0},S=()=>{t.dispatchEvent(new CustomEvent(`ui:stream:resumed`,{bubbles:!0,composed:!0}))},ee=a=>{i?.abort(),x();let o=++f;r=N(t,n),M(t,`connecting`),i=de(e,n,t.dataset.uiStreamScopes,a,{lastEventId:d,open:()=>{if(o!==f)return;let e=u;u=!0,p=0,M(t,`open`),e&&S()},disconnected:()=>{if(o!==f||g||(i=null,k.controller=null,M(t,`disconnected`),!b()))return;let e=Math.min(_e*2**p,ve);p+=1;let n=Math.floor(Math.random()*e);c=window.setTimeout(()=>{c=void 0,E()},n)},reset:e=>M(t,`reset`,{data:e}),eventId:e=>{o===f&&(d=e)},error:e=>{o!==f||g||(m=!0,i=null,k.controller=null,x(),M(t,`error`,{data:e}))}}),k.controller=i,k.configuration=r,C()},C=()=>{if(window.clearTimeout(a),a=void 0,!b())return;let e=Number(t.dataset.uiStreamClientExpires);if(!Number.isFinite(e)||e<=0)return;let n=e-Date.now()-me;if(n<=0){T();return}a=window.setTimeout(()=>void T(),n)},w=()=>{if(g)return Promise.resolve(null);if(s)return s;let e=t.dataset.uiStreamClientRefresh;return e?(s=fetch(e,{headers:{Accept:`application/json`,"X-Trellis-Client":t.dataset.uiStreamClient??``}}).then(async e=>{if(!e.ok)throw Error(`ClientSession refresh failed (${e.status})`);let n=await e.json();if(typeof n.token!=`string`||typeof n.expiresAt!=`number`)throw Error(`ClientSession refresh returned an invalid payload`);return g?null:(t.dataset.uiStreamClient=n.token,t.dataset.uiStreamClientExpires=String(n.expiresAt),n.token)}).catch(e=>{h(`x-ui-stream: could not refresh ClientSession`,e);let n=Number(t.dataset.uiStreamClientExpires);return!Number.isFinite(n)||n<=Date.now()?(M(t,`error`,{error:e}),null):(b()&&(a=window.setTimeout(()=>void T(),5e3)),t.dataset.uiStreamClient??null)}).finally(()=>{s=null}),s):(M(t,`error`,{reason:`missing-refresh-url`}),Promise.resolve(null))},T=async()=>{if(!b())return;let e=await w();e&&b()&&!g&&ee(e)},E=async()=>{if(g||!b()||i)return;let e=Number(t.dataset.uiStreamClientExpires),n=t.dataset.uiStreamClient??``,r=Number.isFinite(e)&&e>0&&e-Date.now()<=me?await w():n;r&&b()&&!g&&!i&&ee(r)},te=()=>{l=void 0,!(g||y||document.visibilityState!==`hidden`)&&(v.size>0||(_.forEach(e=>e.abort(`Document suspended`)),_.clear(),window.clearTimeout(a),a=void 0,x(),i?.abort(),i=null,M(t,`suspended`),k.controller=null))},D=e=>{window.clearTimeout(l),l=void 0,!(y||document.visibilityState!==`hidden`)&&(l=window.setTimeout(te,e))},ne=()=>{m||T()},re=e=>{let t=xe(e);if(t){if(t.method===`GET`){_.set(t.requestId,t.controller);return}v.add(t.requestId),document.visibilityState===`hidden`&&!y&&(window.clearTimeout(l),l=void 0)}},ie=e=>{let t=xe(e);if(t){if(t.method===`GET`){_.delete(t.requestId);return}v.delete(t.requestId),document.visibilityState===`hidden`&&!y&&v.size===0&&D(ge)}},O=()=>{if(!(y||m)){if(document.visibilityState===`hidden`){if(v.size>0)return;D(he);return}window.clearTimeout(l),l=void 0,i||E()}},k={configuration:r,controller:null,element:t,dispose(){g||(g=!0,window.clearTimeout(a),window.clearTimeout(l),x(),t.removeEventListener(`ui:stream:refresh`,ne),document.removeEventListener(`visibilitychange`,O),document.removeEventListener(`ui:request:start`,re),document.removeEventListener(`ui:request:finish`,ie),i?.abort())},rescheduleRefresh:C};return o(t,`data-ui-stream-state`),t.addEventListener(`ui:stream:refresh`,ne),document.addEventListener(`visibilitychange`,O),document.addEventListener(`ui:request:start`,re),document.addEventListener(`ui:request:finish`,ie),b()?E():M(t,`suspended`),k},Ce=e=>{typeof e.directive==`function`&&e.directive(`ui-stream`,(t,{expression:n},{cleanup:r})=>{if(!n)return;let i=t instanceof HTMLElement?t.dataset.uiStreamClient:``;if(!(t instanceof HTMLElement)||!i){h(`x-ui-stream: missing signed ClientSession capability`);return}let a=pe(t),s=j.get(a),c=N(t,n);if(s?.configuration===c){t.dataset.uiStreamState=s.element.dataset.uiStreamState??`connecting`,o(t,`data-ui-stream-state`),queueMicrotask(()=>s.rescheduleRefresh());return}if(!t.isConnected&&typeof a==`string`){fe.has(a)||(fe.add(a),queueMicrotask(()=>{fe.delete(a);let t=document.getElementById(a);if(!t)return;let r=j.get(a),i=N(t,n);if(r?.configuration===i){r.rescheduleRefresh();return}r?.dispose(),j.set(a,Se(e,t,n))}));return}s?.dispose(),j.set(a,Se(e,t,n)),r(()=>{let e=j.get(a);e?.element===t&&(e.dispose(),j.delete(a))})})},we=e=>{v=e},Te=e=>{y=e},Ee=`X-Trellis-UI-Request`,De=`X-Trellis-Client`,Oe=`X-Trellis-Request-ID`,ke=`X-Trellis-Navigate`,Ae=`X-Trellis-Navigate-History`,P=`[data-ui-stream][data-ui-stream-client]`,je=`ui:stream:open`,Me=`ui:stream:error`,Ne=`ui:stream:disconnected`,Pe=`ui:stream:refresh`,Fe=`meta[name="csrf-token"]`,Ie=`text/event-stream`,Le=`data-ui-request-pending`,F=`application/x-www-form-urlencoded`,Re=`multipart/form-data`,ze=new Set([`GET`]),I=null,Be=null,Ve=e=>{let t=(e||`GET`).toUpperCase();return t===`POST`||t===`PUT`||t===`PATCH`||t===`DELETE`?t:`GET`},He=(e,t,n)=>{if(e instanceof FormData){e.append(t,n);return}e.append(t,n instanceof File?n.name:String(n))},Ue=(e,t,n)=>{if(Array.isArray(n)){n.forEach(n=>Ue(e,t,n));return}n!=null&&He(e,t,n instanceof Blob?n:String(n))},We=(e,t)=>{Object.entries(t).forEach(([t,n])=>Ue(e,t,n))},Ge=(e,t)=>{if(t){if(t instanceof FormData||t instanceof URLSearchParams){for(let[n,r]of t.entries())He(e,n,r);return}We(e,t)}},Ke=(e,t)=>{let n=new Headers(e);n.set(Ee,`true`);let r=document.querySelector(Fe)?.content;return r&&n.set(`X-CSRFToken`,r),t instanceof URLSearchParams&&!n.has(`Content-Type`)&&n.set(`Content-Type`,F),n},qe=(e,t,n)=>{if(e)return new URL(e,document.baseURI);if(t instanceof HTMLFormElement){let e=n?.getAttribute(`formaction`)||t.getAttribute(`action`)||window.location.href;return new URL(e,document.baseURI)}return t instanceof HTMLAnchorElement?new URL(t.href,document.baseURI):new URL(window.location.href)},Je=(e,t)=>t?.getAttribute(`formenctype`)||e.enctype||F,Ye=e=>{if(!(e instanceof HTMLButtonElement||e instanceof HTMLInputElement))return null;let t=e.getAttribute(`name`);return t?[t,e.value]:null},Xe=(e,t)=>{let n=new FormData(e),r=Ye(t);return r&&n.append(...r),n},Ze=e=>{let t=new URLSearchParams;for(let[n,r]of e.entries())r instanceof File?t.append(n,r.name):t.append(n,r);return t},Qe=(e,t)=>{if(e===void 0)return{payload:t,explicit:!1};if(e instanceof HTMLFormElement)return{payload:new FormData(e),explicit:!0};if(e instanceof FormData||e instanceof URLSearchParams||typeof e==`string`||e instanceof Blob||e instanceof ArrayBuffer)return{payload:e,explicit:!0};let n=new URLSearchParams;return We(n,e),{payload:n,explicit:!0}},$e=(e,t)=>{if(!t)return e;if(e instanceof FormData||e instanceof URLSearchParams)return Ge(e,t),e;let n=new URLSearchParams;return typeof e==`string`&&n.append(`data`,e),Ge(n,t),n},et=(e,t)=>e instanceof HTMLFormElement?{payload:Xe(e,t),enctype:Je(e,t)}:{payload:new URLSearchParams,enctype:F},tt=(e,t,n)=>t?Ve(t):e instanceof HTMLFormElement?Ve(n?.getAttribute(`formmethod`)||e.getAttribute(`method`)):`GET`,nt=(e,t={})=>{let n=t.source,r=t.submitter??null,i=tt(n,t.method,r),a=qe(e,n,r),o=et(n,r),s=Qe(t.data,o.payload),c=$e(s.payload,t.extra),l={method:i,...t.cache?{cache:t.cache}:{}},u=null;return ze.has(i)?c instanceof FormData||c instanceof URLSearchParams?Ze(c).forEach((e,t)=>a.searchParams.append(t,e)):typeof c==`string`&&a.searchParams.append(`data`,c):u=c instanceof FormData&&(s.explicit||o.enctype===Re)?c:c instanceof FormData?Ze(c):c,l.headers=Ke(t.headers,u),u!=null&&(l.body=u),{url:a,method:i,init:l}},rt=e=>e?.isConnected?e:document,it=(e,t,n={})=>new CustomEvent(e,{bubbles:!0,composed:!0,cancelable:n.cancelable??!1,detail:t}),L=(e,t,n,r)=>rt(t).dispatchEvent(it(e,n,r)),R=new WeakMap,at=e=>{if(!e)return;let t=R.get(e)??0;R.set(e,t+1),e.setAttribute(`aria-busy`,`true`),e.setAttribute(Le,`true`)},ot=e=>{if(!e)return;let t=(R.get(e)??1)-1;if(t>0){R.set(e,t);return}R.delete(e),e.removeAttribute(`aria-busy`),e.removeAttribute(Le)},st=e=>e.headers.get(`Content-Type`)?.toLowerCase().includes(Ie)??!1,ct=async e=>{let t=e.headers.get(ke);if(t){let n=e.headers.get(Ae)??`auto`;return n!==`auto`&&n!==`push`&&n!==`replace`?(h(`x-ui-request: invalid navigation history`,n),{response:e,type:`other`,url:e.url}):{response:e,type:`navigate`,url:e.url,navigation:{history:n,url:t}}}return e.status===204||e.body===null||e.headers.get(`X-Trellis-UI-Response`)===`empty`?{response:e,type:`empty`,url:e.url}:e.redirected&&!st(e)?(window.location.assign(e.url),{response:e,type:`redirect`,url:e.url}):(h(`x-ui-request: expected an empty response`,e),{response:e,type:`other`,url:e.url})},lt=new WeakMap,z=e=>{let t=e.dataset.uiStreamClient,n=Number(e.dataset.uiStreamClientExpires);return!t||Number.isFinite(n)&&n>0&&n<=Date.now()?null:t},ut=()=>{let e=document.querySelector(P),t=e?z(e):null;return!e||!t||e.dataset.uiStreamState!==`open`?null:{token:t}},dt=e=>{let t=Number(e.dataset.uiStreamTimeout);return Number.isFinite(t)&&t>=0?t:5e3},ft=e=>{let t=document.querySelector(P),n=t?z(t):null;if(!t)return Promise.resolve(null);if(n&&t.dataset.uiStreamState===`open`)return Promise.resolve({token:n});if(t.dataset.uiStreamState===`error`||t.dataset.uiStreamState===`disconnected`||e.aborted)return Promise.resolve(null);let r=lt.get(t),i=r??new Promise(e=>{let n=n=>{window.clearTimeout(a),t.removeEventListener(je,r),t.removeEventListener(Me,i),t.removeEventListener(Ne,i),e(n)},r=()=>{let e=z(t);n(e?{token:e}:null)},i=()=>n(null),a=window.setTimeout(i,dt(t));t.addEventListener(je,r,{once:!0}),t.addEventListener(Me,i,{once:!0}),t.addEventListener(Ne,i,{once:!0})}).finally(()=>{lt.delete(t)});return r||lt.set(t,i),new Promise(t=>{let n=()=>t(null);e.addEventListener(`abort`,n,{once:!0}),i.then(r=>{e.removeEventListener(`abort`,n),t(r)})})},pt=async e=>{let t=ut();if(t)return t;let n=document.querySelector(P);if(!n)return null;if(!z(n)){n.dispatchEvent(new CustomEvent(Pe));let e=ut();if(e)return e}return ft(e)},mt=(e,t)=>{if(!t)return{signal:e.signal,cleanup:()=>void 0};let n=()=>e.abort(t.reason);return t.aborted?n():t.addEventListener(`abort`,n,{once:!0}),{signal:e.signal,cleanup:()=>t.removeEventListener(`abort`,n)}},ht=(e,t)=>t.aborted||e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`AbortError`,gt=async(e,t,n={})=>{let r=n.source,i=new AbortController,a=n.requestId??crypto.randomUUID(),o=nt(t,n),s=mt(i,n.signal),c=s.signal;o.init.signal=c,o.init.headers.set(Oe,a);let l=ut()??await pt(c);if(c.aborted)return s.cleanup(),{requestId:a,response:null,type:`aborted`,url:o.url.toString()};if(!l)return s.cleanup(),{requestId:a,response:null,type:c.aborted?`aborted`:`unavailable`,url:o.url.toString()};o.init.headers.set(De,l.token);let u={source:r??document,url:o.url.toString(),method:o.method,requestInit:o.init,requestId:a,controller:i,signal:c};if(!L(`ui:request:before`,r,u,{cancelable:!0}))return s.cleanup(),{requestId:a,response:null,type:`cancelled`,url:o.url.toString()};at(r),L(`ui:request:start`,r,u);try{let e=await fetch(o.url.toString(),o.init),t=await ct(e);u.response=e,u.responseType=t.type,e.ok&&t.type!==`other`||t.type===`redirect`?L(`ui:request:success`,r,u):L(`ui:request:error`,r,u);let n={...t,requestId:a};return n.navigation&&Be?.(n),n}catch(e){if(ht(e,c))return u.responseType=`aborted`,{requestId:a,response:null,type:`aborted`,url:o.url.toString()};throw u.error=e,L(`ui:request:error`,r,u),e}finally{s.cleanup(),ot(r),L(`ui:request:finish`,r,u)}},_t=()=>{if(!I)throw Error(`Trellis request runtime has not been registered with Alpine.`);return I},B=(e,t={})=>gt(_t(),e,t),vt=(e,t={})=>B(e,{...t,method:`GET`}),yt=(e,t={})=>B(e,{...t,method:`POST`}),bt=(e,t={})=>B(e,{...t,method:`PUT`}),xt=(e,t={})=>B(e,{...t,method:`DELETE`}),St=e=>{I=e},Ct=e=>{Be=e},wt=`__trellis`,Tt=`[data-ui-scroll-restoration]`,Et=20,Dt=100,Ot=!1,V=null,H=0,kt=!1,U=null,W=new Map,G=new Set,K=new Map,q=()=>crypto.randomUUID(),At=()=>({containers:{},window:{x:0,y:0}}),jt=e=>e.getAttribute(`data-ui-scroll-restoration`)?.trim()||e.id||null,Mt=()=>{let e={};return document.querySelectorAll(Tt).forEach(t=>{let n=jt(t);n&&(e[n]={x:t.scrollLeft,y:t.scrollTop})}),{containers:e,window:{x:window.scrollX,y:window.scrollY}}},J=e=>{if(!t(e))return null;let n=e[wt];if(!t(n))return null;let r=n.navigate;return!t(r)||typeof r.id!=`string`||typeof r.index!=`number`||typeof r.url!=`string`||!t(r.scroll)?null:r},Nt=e=>{let n=t(window.history.state)?window.history.state:{},r=t(n.__trellis)?n[wt]:{};return{...n,[wt]:{...r,navigate:e}}},Y=(e,t=e.url)=>{window.history.replaceState(Nt(e),``,t)},Pt=()=>{let e=J(window.history.state);if(!e)return;let t=Mt();W.set(e.id,t),Y({...e,scroll:t})},Ft=()=>{U!==null&&(cancelAnimationFrame(U),U=null),Pt()},It=()=>{let e=J(window.history.state);e&&(W.set(e.id,Mt()),U===null&&(U=requestAnimationFrame(()=>{U=null;let e=J(window.history.state);if(!e)return;let t=W.get(e.id);t&&Y({...e,scroll:t})})))},Lt=e=>{requestAnimationFrame(()=>{window.scrollTo({left:e.window.x,top:e.window.y,behavior:`instant`}),document.querySelectorAll(Tt).forEach(t=>{let n=jt(t),r=n?e.containers[n]:void 0;t.scrollTo({left:r?.x??0,top:r?.y??0,behavior:`instant`})})})},X=(e,t,n=!1)=>{let r=t.source?.isConnected?t.source:document;return r.dispatchEvent(new CustomEvent(e,{bubbles:!0,cancelable:n,composed:!0,detail:{history:t.history,source:r,url:t.destination}}))},Rt=e=>{for(K.set(e.requestId,e);K.size>Et;){let e=K.keys().next().value;if(!e)break;K.delete(e)}},zt=e=>{for(G.add(e);G.size>Dt;){let e=G.values().next().value;if(!e)break;G.delete(e)}},Bt=()=>{V&&=(zt(V.requestId),V.controller.abort(`Superseded by a newer Trellis navigation`),null)},Vt=()=>{Bt(),K.forEach(e=>zt(e.requestId)),K.clear()},Z=e=>{window.location.assign(e.href)},Ht=e=>{let t=new URL(e,document.baseURI);return t.origin===window.location.origin?t:null},Ut=e=>{Ft();let t={id:q(),index:H+1,scroll:At(),url:e.destination.href};return H=t.index,window.history.pushState(Nt(t),``,e.destination),e.entryId=t.id,t},Wt=e=>{let t={id:q(),index:H,scroll:At(),url:e.destination.href};return Y(t,e.destination),e.entryId=t.id,t},Gt=e=>{if(e.disposition===`replace`)return!0;if(e.disposition===`push`)return!1;let t=new URL(window.location.href);return t.origin===e.destination.origin&&t.pathname===e.destination.pathname},Kt=(e,t)=>{t?.type===`aborted`||t?.type===`cancelled`||t?.type===`redirect`||Z(e.destination)},qt=(e,t,n)=>{if(G.has(e.requestId))return;if(t.type!==`empty`){Kt(e,t);return}let r=n??(Gt(e)?Wt(e):Ut(e));if(n&&e.destination.href!==n.url){let t={...n,url:e.destination.href};Y(t,e.destination),e.entryId=t.id}Lt(r.scroll),X(`ui:navigated`,e)},Jt=(e,t,n)=>{let r={controller:new AbortController,destination:t,entryId:n.restoredState?.id??null,history:n.history,disposition:n.disposition??`auto`,requestId:q(),...n.requestOptions?{requestOptions:n.requestOptions}:{},...n.source?{source:n.source}:{}};if(n.preflight!==!1&&!X(`ui:navigate`,r,!0))return Promise.resolve();Vt(),V=r,X(`ui:navigating`,r);let i=new Headers(r.requestOptions?.headers);i.set(`X-Trellis-Navigation`,r.history?`restore`:`navigate`);let a=!0,o=async()=>{let t=a?r.requestOptions:void 0,n=a?r.source:void 0;a=!1;let s=await gt(e,r.destination,{...t,headers:i,method:`GET`,requestId:r.requestId,signal:r.controller.signal,...n?{source:n}:{}});if(r.destination=new URL(s.url,document.baseURI),!s.navigation)return s;let c=Ht(s.navigation.url);return c?(r.destination=c,s.navigation.history!==`auto`&&(r.disposition=s.navigation.history),o()):(Z(new URL(s.navigation.url,document.baseURI)),{...s,type:`redirect`})};return o().then(e=>{V?.requestId!==r.requestId&&!K.has(r.requestId)||qt(r,e,n.restoredState)}).catch(e=>{r.controller.signal.aborted||(h(`x-ui-request.navigate: restoration failed`,e),Kt(r))}).finally(()=>{V?.requestId===r.requestId&&(V=null),G.has(r.requestId)||Rt(r)})},Yt=()=>{let e=J(window.history.state);e?H=e.index:Y({id:q(),index:0,scroll:Mt(),url:window.location.href}),`scrollRestoration`in window.history&&(window.history.scrollRestoration=`manual`)},Xt=e=>{Ot||(Ot=!0,Yt(),we(e=>!e||!G.has(e)),Te((e,t)=>t.matches(`[data-ui-stream]`)&&!!(e&&(V?.requestId===e||K.has(e)))),Ct(t=>{if(!t.navigation)return!1;if(G.has(t.requestId)||V?.requestId===t.requestId)return!0;let n=Ht(t.navigation.url);return n?(Jt(e,n,{history:!1,disposition:t.navigation.history}),!0):(Z(new URL(t.navigation.url,document.baseURI)),!0)}),window.addEventListener(`scroll`,It,{passive:!0}),document.addEventListener(`scroll`,It,{capture:!0,passive:!0}),window.addEventListener(`pagehide`,Ft),window.addEventListener(`popstate`,t=>{if(kt){kt=!1;return}let n=J(t.state);if(!n){Z(new URL(window.location.href));return}let r=W.get(n.id),i=r?{...n,scroll:r}:n,a=Ht(n.url);if(!a||a.href!==window.location.href){Z(new URL(window.location.href));return}let o=H;if(H=n.index,!X(`ui:navigate`,{controller:new AbortController,destination:a,entryId:n.id,history:!0,disposition:`replace`,requestId:q()},!0)){kt=!0,window.history.go(o-n.index),H=o;return}Jt(e,a,{history:!0,preflight:!1,restoredState:i})}))},Zt=(e,t,n,r)=>{let{history:i=`auto`,...a}=r??{};return Jt(e,new URL(t,document.baseURI),{history:!1,disposition:i,requestOptions:a,...n?{source:n}:{}})},Q={activeRequests:0},Qt=!1,$t=!1,$={},en=null,tn=(e,t={})=>{let{history:n,navigate:r=!1,...i}=t;if(!r)return vt(e,i);if(!en)throw Error(`Trellis UI runtime has not been registered with Alpine.`);let{source:a,...o}=i;return Zt(en,e,a,{...o,...n?{history:n}:{}})},nn=(e,t)=>(n,r={})=>{let{navigate:i=!1,...a}=r;return i&&h(`$ui.${e}: navigate is only supported for GET requests`),t(n,a)},rn={get:tn,post:nn(`post`,yt),put:nn(`put`,bt),delete:nn(`delete`,xt),get motion(){if(!$.motion)throw Error(`Trellis Motion capability is not registered.`);return $.motion},get sortable(){if(!$.sortable)throw Error(`Trellis Sortable capability is not registered.`);return $.sortable},get isFetching(){return Q.activeRequests>0}},an=()=>{$t||($t=!0,document.addEventListener(`ui:request:start`,()=>{Q.activeRequests+=1}),document.addEventListener(`ui:request:finish`,()=>{Q.activeRequests=Math.max(0,Q.activeRequests-1)}))},on=e=>{en=e,Qt||=(Q=e.reactive(Q),!0),an(),e.magic(`ui`,()=>rn)},sn=e=>{$.motion=e},cn=e=>{$.sortable=e};export{Zt as a,gt as c,h as d,u as f,o as g,l as h,rn as i,Ce as l,m,sn as n,Xt as o,d as p,cn as r,St as s,on as t,ie as u};
4
+ //# sourceMappingURL=ui-CfByjNaO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-CfByjNaO.js","names":[],"sources":["../../../../../../../../client/src/runtime/morph.ts","../../../../../../../../client/src/runtime/identity.ts","../../../../../../../../client/src/runtime/layout-participant.ts","../../../../../../../../client/src/utils/warn.ts","../../../../../../../../client/src/runtime/engine/stream.ts","../../../../../../../../client/src/runtime/engine/request.ts","../../../../../../../../client/src/runtime/engine/navigation.ts","../../../../../../../../client/src/runtime/ui.ts"],"sourcesContent":["const PRESERVE_MORPH_ATTRIBUTES = 'data-ui-preserve-attr';\n\nconst declareMorphAttributes = (element: Element, ...names: string[]): void => {\n const declared = new Set(\n (element.getAttribute(PRESERVE_MORPH_ATTRIBUTES) ?? '')\n .split(/\\s+/)\n .filter(Boolean),\n );\n names.filter(Boolean).forEach((name) => declared.add(name));\n if (declared.size > 0) {\n element.setAttribute(PRESERVE_MORPH_ATTRIBUTES, Array.from(declared).join(' '));\n }\n};\n\nconst preserveDeclaredMorphAttributes = (from: Node, to: Node): void => {\n if (!(from instanceof Element) || !(to instanceof Element)) return;\n const preserved = new Set([\n ...(from.getAttribute(PRESERVE_MORPH_ATTRIBUTES) ?? '').split(/\\s+/),\n ...(to.getAttribute(PRESERVE_MORPH_ATTRIBUTES) ?? '').split(/\\s+/),\n ].filter(Boolean));\n if (preserved.size === 0) return;\n to.setAttribute(PRESERVE_MORPH_ATTRIBUTES, Array.from(preserved).join(' '));\n\n for (const name of preserved) {\n if (from.hasAttribute(name)) {\n to.setAttribute(name, from.getAttribute(name) ?? '');\n } else {\n to.removeAttribute(name);\n }\n }\n};\n\nexport {\n PRESERVE_MORPH_ATTRIBUTES,\n declareMorphAttributes,\n preserveDeclaredMorphAttributes,\n};\n","const STABLE_KEY_ATTR = 'data-ui-key';\nconst STABLE_KEY_SCOPE_ATTR = 'data-ui-key-scope';\nconst SINGLE_CHILD_SCOPE = 'single-child';\n\nconst stableIdentity = (element: Element, explicit?: unknown): string | null => {\n if (typeof explicit === 'string' && explicit) return explicit;\n const authored = element.getAttribute(STABLE_KEY_ATTR) || element.id;\n if (authored) return authored;\n\n const parent = element.parentElement;\n if (parent?.getAttribute(STABLE_KEY_SCOPE_ATTR) !== SINGLE_CHILD_SCOPE) return null;\n const parentIdentity = parent.getAttribute(STABLE_KEY_ATTR) || parent.id;\n return parentIdentity ? `${parentIdentity}:single-child` : null;\n};\n\nexport {STABLE_KEY_ATTR, STABLE_KEY_SCOPE_ATTR, stableIdentity};\n","import {stableIdentity} from './identity';\n\ntype LayoutScope = Element | Document | string | Iterable<Element>;\n\nconst MOTION_KEY_ATTR = 'data-ui-motion-key';\nconst MOTION_LAYOUT_ATTR = 'data-ui-motion-layout';\n\nconst isIterable = (value: unknown): value is Iterable<Element> => (\n typeof value === 'object'\n && value !== null\n && Symbol.iterator in value\n);\n\nconst scopeRoots = (scope: LayoutScope = document): Array<Element | Document> => {\n if (typeof scope === 'string') return Array.from(document.querySelectorAll(scope));\n if (scope instanceof Document || scope instanceof Element) return [scope];\n if (isIterable(scope)) return Array.from(scope);\n return [document];\n};\n\nconst markLayoutParticipant = (\n scope: LayoutScope = document,\n options: {key?: string; layout?: boolean} = {},\n): (() => void) => {\n const elements = scopeRoots(scope).filter((root): root is Element => root instanceof Element);\n const changed: Array<{element: Element; attr: string; previous: string | null}> = [];\n const setTemporaryAttr = (element: Element, attr: string, value: string): void => {\n changed.push({element, attr, previous: element.getAttribute(attr)});\n element.setAttribute(attr, value);\n };\n\n elements.forEach((element) => {\n if (options.layout ?? true) setTemporaryAttr(element, MOTION_LAYOUT_ATTR, '');\n const identity = stableIdentity(element, options.key);\n if (identity && !element.hasAttribute(MOTION_KEY_ATTR)) {\n setTemporaryAttr(element, MOTION_KEY_ATTR, identity);\n }\n });\n\n return () => {\n changed.reverse().forEach(({element, attr, previous}) => {\n if (previous === null) {\n element.removeAttribute(attr);\n return;\n }\n element.setAttribute(attr, previous);\n });\n };\n};\n\nexport {MOTION_KEY_ATTR, MOTION_LAYOUT_ATTR, markLayoutParticipant};\nexport type {LayoutScope};\n","const warn = (message: string, ...args: unknown[]): void => {\n if (typeof console !== 'undefined') console.warn(message, ...args);\n};\n\nexport {warn};\n","import type Alpine from 'alpinejs';\nimport {\n findAlpineMachineOwner,\n} from '../alpine-machine';\nimport {\n findClosestDomInvalidationOwners,\n type DomInvalidationOwner,\n} from '../dom-invalidation';\nimport {stableIdentity} from '../identity';\nimport {declareMorphAttributes, preserveDeclaredMorphAttributes} from '../morph';\nimport {isRecord, warn} from '../../utils';\nimport {loadAssets, type AssetDescriptor} from '../../assets/bridge';\nimport type {RequestLifecycleDetail} from './request';\nimport {replaceFragmentChildrenNow} from './fragment';\n\ntype PatchMode = 'morph' | 'outer' | 'replace' | 'update' | 'append' | 'prepend' | 'before' | 'after' | 'remove';\n\ntype StreamPatchPayload = {\n html?: string | null;\n target?: string | null;\n selector?: string | null;\n mode?: PatchMode | null;\n requestId?: string | null;\n viewTransition?: boolean;\n assets?: AssetDescriptor[];\n};\n\ntype StreamEventPayload = {\n event: string;\n detail?: Record<string, unknown>;\n};\n\ntype UiEffectPayload =\n | ({type: 'patch'} & StreamPatchPayload)\n | ({type: 'dispatch'} & StreamEventPayload);\n\ntype SseFrame = {\n event: string;\n data: string;\n};\n\ntype StreamController = {\n abort(reason?: string): void;\n};\n\ntype StreamLifecycle = {\n lastEventId?: string;\n open?(): void;\n disconnected?(): void;\n eventId?(value: string): void;\n reset?(data: string): void;\n error?(data: string): void;\n};\ntype StreamPatchAnimator = (\n AlpineInstance: StreamAlpine,\n patches: StreamPatchPayload[],\n update: () => void,\n) => void;\n\ntype MorphOptions = {\n key?(el: HTMLElement): string | null;\n updating?(\n from: Node,\n to: Node,\n childrenOnly?: () => void,\n skip?: () => void,\n skipChildren?: () => void,\n skipUntil?: (predicate: (node: Node) => boolean) => void,\n ): void;\n updated?(from: Node, to: Node): void;\n};\n\ntype StreamAlpine = Pick<Alpine.Alpine, 'initTree'> & Partial<Pick<Alpine.Alpine, 'findClosest'>> & {\n morph?: (\n target: HTMLElement,\n html: string,\n options?: MorphOptions,\n ) => void;\n};\n\nconst pendingDomInvalidations = new Set<DomInvalidationOwner>();\nlet domInvalidationQueued = false;\nlet effectRequestFilter: ((requestId: string | null) => boolean) | null = null;\nlet morphExclusionFilter: ((requestId: string | null, element: Element) => boolean) | null = null;\nlet streamPatchAnimator: StreamPatchAnimator | null = null;\nlet patchQueue = Promise.resolve();\nlet queuedPatches = 0;\n\nconst queueDomInvalidation = (owners: Iterable<DomInvalidationOwner>): void => {\n for (const owner of owners) pendingDomInvalidations.add(owner);\n if (domInvalidationQueued || pendingDomInvalidations.size === 0) return;\n domInvalidationQueued = true;\n queueMicrotask(() => {\n domInvalidationQueued = false;\n const queued = Array.from(pendingDomInvalidations);\n pendingDomInvalidations.clear();\n queued.forEach((owner) => owner.invalidateDom());\n });\n};\n\nconst parseHtml = (html: string): HTMLTemplateElement => {\n const template = document.createElement('template');\n template.innerHTML = html;\n return template;\n};\n\nconst elementsFromHtml = (html: string): HTMLElement[] => (\n Array.from(parseHtml(html).content.children)\n .filter((child): child is HTMLElement => child instanceof HTMLElement)\n);\n\nconst initInserted = (AlpineInstance: StreamAlpine, elements: HTMLElement[]): void => {\n elements.forEach((element) => AlpineInstance.initTree(element));\n};\n\nconst resolvedMode = (target: Element, payloadMode?: PatchMode | null): PatchMode => {\n if (payloadMode) return payloadMode;\n const merge = target.getAttribute('x-merge');\n if (merge) return merge as PatchMode;\n return 'replace';\n};\n\nconst targetFromPayload = (payload: StreamPatchPayload): Element | null => {\n if (payload.selector) return document.querySelector(payload.selector);\n if (!payload.target) return null;\n\n const id = payload.target.startsWith('#') ? payload.target.slice(1) : payload.target;\n return document.getElementById(id);\n};\n\nconst applyPatchToTarget = (\n AlpineInstance: StreamAlpine,\n target: Element,\n payload: StreamPatchPayload,\n): void => {\n const mode = resolvedMode(target, payload.mode);\n\n if (mode === 'remove') {\n target.remove();\n return;\n }\n\n if (!payload.html) {\n warn('x-ui-stream: received patch with no html');\n return;\n }\n\n if (mode === 'morph' || mode === 'outer') {\n if (typeof AlpineInstance.morph === 'function') {\n const affectedOwners = new Set<DomInvalidationOwner>();\n AlpineInstance.morph(target as HTMLElement, payload.html, {\n key(el: HTMLElement): string | null {\n return stableIdentity(el);\n },\n updating(from: Node, to: Node, _childrenOnly?: () => void, skip?: () => void): void {\n if (\n from instanceof Element\n && morphExclusionFilter?.(payload.requestId ?? null, from)\n ) {\n skip?.();\n return;\n }\n preserveDeclaredMorphAttributes(from, to);\n },\n updated(from: Node): void {\n if (!(from instanceof Element)) return;\n const owner = findAlpineMachineOwner(AlpineInstance as Alpine.Alpine, from);\n if (owner) affectedOwners.add(owner);\n findClosestDomInvalidationOwners(from).forEach((candidate) => {\n affectedOwners.add(candidate);\n });\n },\n });\n queueDomInvalidation(affectedOwners);\n return;\n }\n\n warn('x-ui-stream: morph mode requires an Alpine morph implementation; falling back to replace');\n }\n\n if (mode === 'replace' || mode === 'morph' || mode === 'outer') {\n const [newEl] = elementsFromHtml(payload.html);\n if (!newEl) {\n warn('x-ui-stream: replace mode produced no element');\n return;\n }\n target.replaceWith(newEl);\n AlpineInstance.initTree(newEl);\n return;\n }\n\n if (mode === 'update') {\n replaceFragmentChildrenNow(AlpineInstance, target, payload.html);\n return;\n }\n\n const template = parseHtml(payload.html);\n const inserted = Array.from(template.content.children)\n .filter((child): child is HTMLElement => child instanceof HTMLElement);\n\n if (mode === 'append') {\n target.append(template.content);\n initInserted(AlpineInstance, inserted);\n return;\n }\n\n if (mode === 'prepend') {\n target.prepend(template.content);\n initInserted(AlpineInstance, inserted);\n return;\n }\n\n if (mode === 'before') {\n target.before(template.content);\n initInserted(AlpineInstance, inserted);\n return;\n }\n\n if (mode === 'after') {\n target.after(template.content);\n initInserted(AlpineInstance, inserted);\n }\n};\n\nconst applyStreamPatchNow = (AlpineInstance: StreamAlpine, payload: StreamPatchPayload): void => {\n const target = targetFromPayload(payload);\n\n if (target) {\n applyPatchToTarget(AlpineInstance, target, payload);\n return;\n }\n\n if (payload.selector || payload.target) {\n warn('x-ui-stream: target not found', payload.selector ?? payload.target);\n return;\n }\n\n if (!payload.html) {\n warn('x-ui-stream: received patch with no html');\n return;\n }\n\n elementsFromHtml(payload.html).forEach((child) => {\n if (!child.id) {\n warn('x-ui-stream: top-level element has no id, skipping', child);\n return;\n }\n\n const inferredTarget = document.getElementById(child.id);\n if (!inferredTarget) return;\n applyPatchToTarget(AlpineInstance, inferredTarget, {...payload, html: child.outerHTML});\n });\n};\n\nconst applyStreamPatches = (AlpineInstance: StreamAlpine, payload: StreamPatchPayload | StreamPatchPayload[]): void => {\n const patches = Array.isArray(payload) ? payload : [payload];\n const apply = (): void => {\n patches.forEach((patch) => applyStreamPatchNow(AlpineInstance, patch));\n };\n\n const applyWithAnimation = (): void => {\n const animatedPatches = patches.filter((patch) => patch.viewTransition === true);\n if (animatedPatches.length === 0) {\n apply();\n return;\n }\n if (streamPatchAnimator) streamPatchAnimator(AlpineInstance, animatedPatches, apply);\n else apply();\n };\n const assets = patches.flatMap((patch) => patch.assets ?? []);\n\n if (assets.length === 0 && queuedPatches === 0) {\n applyWithAnimation();\n return;\n }\n\n queuedPatches += 1;\n const run = async (): Promise<void> => {\n if (assets.length > 0) {\n await loadAssets(assets, AlpineInstance as Alpine.Alpine);\n }\n applyWithAnimation();\n };\n const task = patchQueue.then(run, run);\n patchQueue = task\n .catch(() => undefined)\n .finally(() => {\n queuedPatches -= 1;\n });\n};\n\nconst registerStreamPatchAnimator = (animator: StreamPatchAnimator): void => {\n streamPatchAnimator = animator;\n};\n\nconst applyStreamPatch = (AlpineInstance: StreamAlpine, payload: StreamPatchPayload): void => {\n applyStreamPatchNow(AlpineInstance, payload);\n};\n\nconst dispatchStreamEvent = (payload: StreamEventPayload): void => {\n document.dispatchEvent(new CustomEvent(payload.event, {\n detail: payload.detail ?? {},\n bubbles: true,\n composed: true,\n }));\n};\n\nconst applyUiEffect = (AlpineInstance: StreamAlpine, effect: UiEffectPayload): void => {\n if (effect.type === 'patch') {\n const {type: _type, ...payload} = effect;\n applyStreamPatches(AlpineInstance, payload);\n return;\n }\n\n if (effect.type === 'dispatch') {\n const {type: _type, ...payload} = effect;\n dispatchStreamEvent(payload);\n return;\n }\n\n warn('x-ui-stream: unknown UI effect', effect);\n};\n\nconst applyUiEffects = (AlpineInstance: StreamAlpine, effects: UiEffectPayload | UiEffectPayload[]): void => {\n const events = Array.isArray(effects) ? effects : [effects];\n\n events.forEach((effect) => applyUiEffect(AlpineInstance, effect));\n};\n\nconst commandLines = (frame: SseFrame): Map<string, string[]> | null => {\n const commands = new Map<string, string[]>();\n for (const line of frame.data.split('\\n')) {\n const space = line.indexOf(' ');\n const hasValue = space > 0;\n const key = hasValue ? line.slice(0, space) : line;\n\n if (!hasValue && key !== 'html') {\n warn('x-ui-stream: invalid SSE command line', key);\n return null;\n }\n\n const value = hasValue ? line.slice(space + 1) : '';\n const values = commands.get(key);\n if (values) values.push(value);\n else commands.set(key, [value]);\n }\n\n return commands;\n};\n\nconst scalarCommand = (commands: Map<string, string[]>, key: string): string | undefined => {\n const values = commands.get(key);\n if (!values?.length) return undefined;\n if (values.length > 1) warn('x-ui-stream: duplicate SSE command, using last value', key);\n return values.at(-1);\n};\n\nconst applyPatchFrame = (AlpineInstance: StreamAlpine, frame: SseFrame): void => {\n const commands = commandLines(frame);\n if (!commands || commands.size === 0) return;\n const requestId = scalarCommand(commands, 'request-id');\n if (effectRequestFilter && !effectRequestFilter(requestId ?? null)) return;\n\n let assets: AssetDescriptor[] | undefined;\n const rawAssets = scalarCommand(commands, 'assets');\n if (rawAssets) {\n try {\n const parsed: unknown = JSON.parse(rawAssets);\n if (!Array.isArray(parsed)) throw new TypeError('assets must be an array');\n assets = parsed as AssetDescriptor[];\n } catch {\n warn('x-ui-stream: invalid patch assets JSON', rawAssets);\n return;\n }\n }\n\n const payload: StreamPatchPayload = {\n mode: (scalarCommand(commands, 'mode') ?? 'replace') as PatchMode,\n target: scalarCommand(commands, 'target') ?? null,\n selector: scalarCommand(commands, 'selector') ?? null,\n html: commands.get('html')?.join('\\n') ?? null,\n requestId: requestId ?? null,\n viewTransition: scalarCommand(commands, 'view-transition') === 'true',\n ...(assets ? {assets} : {}),\n };\n\n applyStreamPatches(AlpineInstance, payload);\n};\n\nconst applyDispatchFrame = (frame: SseFrame): void => {\n const commands = commandLines(frame);\n if (!commands) return;\n const requestId = scalarCommand(commands, 'request-id');\n if (effectRequestFilter && !effectRequestFilter(requestId ?? null)) return;\n const event = scalarCommand(commands, 'event');\n if (!event) {\n warn('x-ui-stream: dispatch SSE frame missing event');\n return;\n }\n\n const rawDetail = scalarCommand(commands, 'detail');\n let detail: Record<string, unknown> = {};\n if (rawDetail) {\n try {\n const parsed: unknown = JSON.parse(rawDetail);\n if (isRecord(parsed)) detail = parsed;\n } catch {\n warn('x-ui-stream: invalid dispatch detail JSON', rawDetail);\n return;\n }\n }\n\n dispatchStreamEvent({event, detail});\n};\n\nconst SSE_FRAME_HANDLERS: Record<string, (AlpineInstance: StreamAlpine, frame: SseFrame) => void> = {\n 'trellis-ui-patch': applyPatchFrame,\n 'trellis-ui-dispatch': (_AlpineInstance, frame) => applyDispatchFrame(frame),\n};\n\nconst TRELLIS_SSE_EVENT_PREFIX = 'trellis-ui-';\n\nconst applySseFrame = (AlpineInstance: StreamAlpine, frame: SseFrame): void => {\n const handler = SSE_FRAME_HANDLERS[frame.event];\n if (!handler) {\n if (frame.event.startsWith(TRELLIS_SSE_EVENT_PREFIX)) {\n warn('x-ui-stream: unsupported SSE event', frame.event);\n }\n return;\n }\n handler(AlpineInstance, frame);\n};\n\nconst streamUrl = (url: string, scopes = '', client = '', lastEventId = ''): string => {\n const parsed = new URL(url, document.baseURI);\n const normalizedScopes = [...new Set(scopes.split(/\\s+/).filter(Boolean))];\n if (client) parsed.searchParams.set('client', client);\n if (lastEventId) parsed.searchParams.set('lastEventId', lastEventId);\n if (normalizedScopes.length > 0) {\n parsed.searchParams.delete('channel');\n normalizedScopes.forEach((scope) => parsed.searchParams.append('channel', scope));\n }\n\n return /^[a-z][a-z\\d+.-]*:/i.test(url) || url.startsWith('//')\n ? parsed.href\n : `${parsed.pathname}${parsed.search}${parsed.hash}`;\n};\n\nconst connectStream = (\n AlpineInstance: StreamAlpine,\n url: string,\n scopes = '',\n client = '',\n lifecycle: StreamLifecycle = {},\n): StreamController => {\n const source = new EventSource(streamUrl(url, scopes, client, lifecycle.lastEventId));\n let active = true;\n const rememberEventId = (event: MessageEvent): void => {\n if (event.lastEventId) lifecycle.eventId?.(event.lastEventId);\n };\n Object.keys(SSE_FRAME_HANDLERS).forEach((eventName) => {\n source.addEventListener(eventName, (event) => {\n if (!active || !(event instanceof MessageEvent)) return;\n rememberEventId(event);\n applySseFrame(AlpineInstance, {\n event: event.type,\n data: String(event.data),\n });\n });\n });\n source.addEventListener('stream-open', () => {\n if (!active) return;\n lifecycle.open?.();\n });\n source.addEventListener('stream-reset', (event) => {\n if (!active) return;\n if (event instanceof MessageEvent) rememberEventId(event);\n lifecycle.reset?.(event instanceof MessageEvent ? String(event.data) : '');\n });\n source.addEventListener('stream-error', (event) => {\n if (!active) return;\n active = false;\n source.close();\n lifecycle.error?.(event instanceof MessageEvent ? String(event.data) : '');\n });\n source.addEventListener('error', () => {\n if (!active) return;\n active = false;\n source.close();\n lifecycle.disconnected?.();\n });\n\n return {\n abort() {\n active = false;\n source.close();\n },\n };\n};\n\ntype StreamControllerKey = Element | string;\n\ntype ManagedStream = {\n configuration: string;\n controller: StreamController | null;\n element: HTMLElement;\n dispose(): void;\n rescheduleRefresh(): void;\n};\n\nconst streamControllers = new Map<StreamControllerKey, ManagedStream>();\nconst pendingStreamReconciliations = new Set<StreamControllerKey>();\n\nconst streamControllerKey = (el: Element): StreamControllerKey => (\n el instanceof HTMLElement && el.id ? el.id : el\n);\n\ntype StreamLifecycleName = 'connecting' | 'open' | 'disconnected' | 'suspended' | 'reset' | 'error';\ntype ClientSessionRefresh = {token: string; expiresAt: number};\n\nconst CLIENT_SESSION_REFRESH_LEAD_MS = 60_000;\nconst STREAM_IDLE_SUSPEND_DELAY_MS = 1_000;\nconst STREAM_MUTATION_DELIVERY_TAIL_MS = 2_000;\nconst STREAM_RETRY_BASE_MS = 1_000;\nconst STREAM_RETRY_MAX_MS = 30_000;\n\nconst dispatchStreamLifecycle = (\n el: HTMLElement,\n name: StreamLifecycleName,\n detail: Record<string, unknown> = {},\n): void => {\n if (name !== 'reset') el.dataset.uiStreamState = name;\n el.dispatchEvent(new CustomEvent(`ui:stream:${name}`, {\n bubbles: true,\n composed: true,\n detail: {source: el, ...detail},\n }));\n};\n\nconst configuredStreamUrl = (el: HTMLElement, expression: string): string => (\n streamUrl(expression, el.dataset.uiStreamScopes, el.dataset.uiStreamClient)\n);\n\nconst streamOpenWhenHidden = (el: HTMLElement): boolean => (\n el.dataset.uiStreamOpenWhenHidden === 'true'\n);\n\nconst configuredStream = (el: HTMLElement, expression: string): string => (\n JSON.stringify({\n openWhenHidden: streamOpenWhenHidden(el),\n url: configuredStreamUrl(el, expression),\n })\n);\n\nconst requestLifecycleDetail = (event: Event): RequestLifecycleDetail | null => {\n if (!(event instanceof CustomEvent)) return null;\n const detail = event.detail as Partial<RequestLifecycleDetail> | null;\n if (\n !detail\n || typeof detail.requestId !== 'string'\n || typeof detail.method !== 'string'\n || !(detail.controller instanceof AbortController)\n ) return null;\n return detail as RequestLifecycleDetail;\n};\n\nconst createManagedStream = (\n AlpineInstance: Alpine.Alpine,\n el: HTMLElement,\n expression: string,\n): ManagedStream => {\n let configuration = configuredStream(el, expression);\n let controller: StreamController | null = null;\n let refreshTimer: number | undefined;\n let refreshPromise: Promise<string | null> | null = null;\n let reconnectTimer: number | undefined;\n let suspendTimer: number | undefined;\n let connectedOnce = false;\n let lastEventId = '';\n let connectionGeneration = 0;\n let reconnectAttempts = 0;\n let terminal = false;\n let disposed = false;\n const activeGets = new Map<string, AbortController>();\n const activeMutations = new Set<string>();\n const openWhenHidden = streamOpenWhenHidden(el);\n\n const shouldBeConnected = (): boolean => (\n !terminal && (openWhenHidden || document.visibilityState === 'visible')\n );\n\n const clearReconnectTimer = (): void => {\n window.clearTimeout(reconnectTimer);\n reconnectTimer = undefined;\n };\n\n const dispatchResumed = (): void => {\n el.dispatchEvent(new CustomEvent('ui:stream:resumed', {\n bubbles: true,\n composed: true,\n }));\n };\n\n const connect = (token: string): void => {\n controller?.abort();\n clearReconnectTimer();\n const generation = ++connectionGeneration;\n configuration = configuredStream(el, expression);\n dispatchStreamLifecycle(el, 'connecting');\n controller = connectStream(\n AlpineInstance,\n expression,\n el.dataset.uiStreamScopes,\n token,\n {\n lastEventId,\n open: () => {\n if (generation !== connectionGeneration) return;\n const resumed = connectedOnce;\n connectedOnce = true;\n reconnectAttempts = 0;\n dispatchStreamLifecycle(el, 'open');\n if (resumed) dispatchResumed();\n },\n disconnected: () => {\n if (generation !== connectionGeneration || disposed) return;\n controller = null;\n managed.controller = null;\n dispatchStreamLifecycle(el, 'disconnected');\n if (!shouldBeConnected()) return;\n const ceiling = Math.min(\n STREAM_RETRY_BASE_MS * (2 ** reconnectAttempts),\n STREAM_RETRY_MAX_MS,\n );\n reconnectAttempts += 1;\n const delay = Math.floor(Math.random() * ceiling);\n reconnectTimer = window.setTimeout(() => {\n reconnectTimer = undefined;\n void ensureConnected();\n }, delay);\n },\n reset: (data) => dispatchStreamLifecycle(el, 'reset', {data}),\n eventId: (value) => {\n if (generation === connectionGeneration) lastEventId = value;\n },\n error: (data) => {\n if (generation !== connectionGeneration || disposed) return;\n terminal = true;\n controller = null;\n managed.controller = null;\n clearReconnectTimer();\n dispatchStreamLifecycle(el, 'error', {data});\n },\n },\n );\n managed.controller = controller;\n managed.configuration = configuration;\n scheduleRefresh();\n };\n\n const scheduleRefresh = (): void => {\n window.clearTimeout(refreshTimer);\n refreshTimer = undefined;\n if (!shouldBeConnected()) return;\n const expiresAt = Number(el.dataset.uiStreamClientExpires);\n if (!Number.isFinite(expiresAt) || expiresAt <= 0) return;\n const delay = expiresAt - Date.now() - CLIENT_SESSION_REFRESH_LEAD_MS;\n if (delay <= 0) {\n void rotateCapability();\n return;\n }\n refreshTimer = window.setTimeout(() => void rotateCapability(), delay);\n };\n\n const refreshCapability = (): Promise<string | null> => {\n if (disposed) return Promise.resolve(null);\n if (refreshPromise) return refreshPromise;\n const refreshUrl = el.dataset.uiStreamClientRefresh;\n if (!refreshUrl) {\n dispatchStreamLifecycle(el, 'error', {reason: 'missing-refresh-url'});\n return Promise.resolve(null);\n }\n\n refreshPromise = fetch(refreshUrl, {\n headers: {\n Accept: 'application/json',\n 'X-Trellis-Client': el.dataset.uiStreamClient ?? '',\n },\n }).then(async (response) => {\n if (!response.ok) throw new Error(`ClientSession refresh failed (${response.status})`);\n const payload = await response.json() as Partial<ClientSessionRefresh>;\n if (typeof payload.token !== 'string' || typeof payload.expiresAt !== 'number') {\n throw new Error('ClientSession refresh returned an invalid payload');\n }\n if (disposed) return null;\n el.dataset.uiStreamClient = payload.token;\n el.dataset.uiStreamClientExpires = String(payload.expiresAt);\n return payload.token;\n }).catch((error: unknown) => {\n warn('x-ui-stream: could not refresh ClientSession', error);\n const expiresAt = Number(el.dataset.uiStreamClientExpires);\n if (!Number.isFinite(expiresAt) || expiresAt <= Date.now()) {\n dispatchStreamLifecycle(el, 'error', {error});\n return null;\n }\n if (shouldBeConnected()) {\n refreshTimer = window.setTimeout(() => void rotateCapability(), 5000);\n }\n return el.dataset.uiStreamClient ?? null;\n }).finally(() => {\n refreshPromise = null;\n });\n return refreshPromise;\n };\n\n const rotateCapability = async (): Promise<void> => {\n if (!shouldBeConnected()) return;\n const token = await refreshCapability();\n if (token && shouldBeConnected() && !disposed) connect(token);\n };\n\n const ensureConnected = async (): Promise<void> => {\n if (disposed || !shouldBeConnected() || controller) return;\n const expiresAt = Number(el.dataset.uiStreamClientExpires);\n const currentToken = el.dataset.uiStreamClient ?? '';\n const needsRefresh = Number.isFinite(expiresAt)\n && expiresAt > 0\n && expiresAt - Date.now() <= CLIENT_SESSION_REFRESH_LEAD_MS;\n const token = needsRefresh\n ? await refreshCapability()\n : currentToken;\n if (token && shouldBeConnected() && !disposed && !controller) connect(token);\n };\n\n const suspend = (): void => {\n suspendTimer = undefined;\n if (disposed || openWhenHidden || document.visibilityState !== 'hidden') return;\n if (activeMutations.size > 0) return;\n activeGets.forEach((requestController) => requestController.abort('Document suspended'));\n activeGets.clear();\n window.clearTimeout(refreshTimer);\n refreshTimer = undefined;\n clearReconnectTimer();\n controller?.abort();\n controller = null;\n dispatchStreamLifecycle(el, 'suspended');\n managed.controller = null;\n };\n\n const scheduleSuspend = (delay: number): void => {\n window.clearTimeout(suspendTimer);\n suspendTimer = undefined;\n if (openWhenHidden || document.visibilityState !== 'hidden') return;\n suspendTimer = window.setTimeout(suspend, delay);\n };\n\n const onRefresh = (): void => {\n if (terminal) return;\n void rotateCapability();\n };\n\n const onRequestStart = (event: Event): void => {\n const detail = requestLifecycleDetail(event);\n if (!detail) return;\n if (detail.method === 'GET') {\n activeGets.set(detail.requestId, detail.controller);\n return;\n }\n activeMutations.add(detail.requestId);\n if (document.visibilityState === 'hidden' && !openWhenHidden) {\n window.clearTimeout(suspendTimer);\n suspendTimer = undefined;\n }\n };\n\n const onRequestFinish = (event: Event): void => {\n const detail = requestLifecycleDetail(event);\n if (!detail) return;\n if (detail.method === 'GET') {\n activeGets.delete(detail.requestId);\n return;\n }\n activeMutations.delete(detail.requestId);\n if (document.visibilityState === 'hidden' && !openWhenHidden) {\n if (activeMutations.size === 0) {\n scheduleSuspend(STREAM_MUTATION_DELIVERY_TAIL_MS);\n }\n }\n };\n\n const onVisibilityChange = (): void => {\n if (openWhenHidden || terminal) return;\n if (document.visibilityState === 'hidden') {\n if (activeMutations.size > 0) {\n return;\n }\n scheduleSuspend(STREAM_IDLE_SUSPEND_DELAY_MS);\n return;\n }\n window.clearTimeout(suspendTimer);\n suspendTimer = undefined;\n if (!controller) void ensureConnected();\n };\n\n const managed: ManagedStream = {\n configuration,\n controller: null,\n element: el,\n dispose(): void {\n if (disposed) return;\n disposed = true;\n window.clearTimeout(refreshTimer);\n window.clearTimeout(suspendTimer);\n clearReconnectTimer();\n el.removeEventListener('ui:stream:refresh', onRefresh);\n document.removeEventListener('visibilitychange', onVisibilityChange);\n document.removeEventListener('ui:request:start', onRequestStart);\n document.removeEventListener('ui:request:finish', onRequestFinish);\n controller?.abort();\n },\n rescheduleRefresh: scheduleRefresh,\n };\n\n declareMorphAttributes(el, 'data-ui-stream-state');\n el.addEventListener('ui:stream:refresh', onRefresh);\n document.addEventListener('visibilitychange', onVisibilityChange);\n document.addEventListener('ui:request:start', onRequestStart);\n document.addEventListener('ui:request:finish', onRequestFinish);\n if (shouldBeConnected()) {\n void ensureConnected();\n } else {\n dispatchStreamLifecycle(el, 'suspended');\n }\n return managed;\n};\n\nconst registerStream = (AlpineInstance: Alpine.Alpine): void => {\n if (typeof AlpineInstance.directive !== 'function') return;\n\n AlpineInstance.directive('ui-stream', (el, {expression}, {cleanup}) => {\n if (!expression) return;\n\n const client = el instanceof HTMLElement ? el.dataset.uiStreamClient : '';\n if (!(el instanceof HTMLElement) || !client) {\n warn('x-ui-stream: missing signed ClientSession capability');\n return;\n }\n const key = streamControllerKey(el);\n const existing = streamControllers.get(key);\n const configuration = configuredStream(el, expression);\n if (existing?.configuration === configuration) {\n el.dataset.uiStreamState = existing.element.dataset.uiStreamState ?? 'connecting';\n declareMorphAttributes(el, 'data-ui-stream-state');\n queueMicrotask(() => existing.rescheduleRefresh());\n return;\n }\n\n if (!el.isConnected && typeof key === 'string') {\n if (!pendingStreamReconciliations.has(key)) {\n pendingStreamReconciliations.add(key);\n queueMicrotask(() => {\n pendingStreamReconciliations.delete(key);\n const live = document.getElementById(key);\n if (!live) return;\n const current = streamControllers.get(key);\n const liveConfiguration = configuredStream(live, expression);\n if (current?.configuration === liveConfiguration) {\n current.rescheduleRefresh();\n return;\n }\n current?.dispose();\n streamControllers.set(key, createManagedStream(AlpineInstance, live, expression));\n });\n }\n return;\n }\n\n existing?.dispose();\n streamControllers.set(key, createManagedStream(AlpineInstance, el, expression));\n\n cleanup(() => {\n const current = streamControllers.get(key);\n if (current?.element !== el) return;\n current.dispose();\n streamControllers.delete(key);\n });\n });\n};\n\nconst setEffectRequestFilter = (filter: ((requestId: string | null) => boolean) | null): void => {\n effectRequestFilter = filter;\n};\n\nconst setMorphExclusionFilter = (\n filter: ((requestId: string | null, element: Element) => boolean) | null,\n): void => {\n morphExclusionFilter = filter;\n};\n\nexport {\n applyUiEffect,\n applyUiEffects,\n applyStreamPatch,\n applyStreamPatchNow,\n applyStreamPatches,\n applySseFrame,\n connectStream,\n dispatchStreamEvent,\n registerStream,\n registerStreamPatchAnimator,\n setEffectRequestFilter,\n setMorphExclusionFilter,\n streamUrl,\n};\nexport type {\n PatchMode,\n SseFrame,\n StreamAlpine,\n StreamEventPayload,\n StreamPatchAnimator,\n StreamPatchPayload,\n UiEffectPayload,\n};\n","import type Alpine from 'alpinejs';\nimport type {StreamAlpine} from './stream';\nimport {warn} from '../../utils';\n\ntype RequestMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\ntype RequestData = FormData | URLSearchParams | HTMLFormElement | Record<string, unknown> | string | Blob | ArrayBuffer;\ntype RequestExtra = Record<string, unknown> | FormData | URLSearchParams;\ntype RequestSource = Element;\ntype NavigationHistory = 'auto' | 'push' | 'replace';\n\ntype RequestOptions = {\n method?: RequestMethod | Lowercase<RequestMethod>;\n cache?: RequestCache;\n data?: RequestData;\n extra?: RequestExtra;\n headers?: HeadersInit;\n requestId?: string;\n signal?: AbortSignal;\n source?: RequestSource;\n submitter?: HTMLElement | null;\n};\n\ntype PreparedRequest = {\n url: URL;\n method: RequestMethod;\n init: RequestInit;\n};\n\ntype RequestResult = {\n requestId: string;\n response: Response | null;\n type: 'empty' | 'navigate' | 'redirect' | 'other' | 'aborted' | 'cancelled' | 'unavailable';\n url: string;\n navigation?: {history: NavigationHistory; url: string};\n};\n\ntype RequestLifecycleDetail = {\n source: Element | Document;\n url: string;\n method: RequestMethod;\n requestInit: RequestInit;\n requestId: string;\n response?: Response | null;\n responseType?: RequestResult['type'];\n error?: unknown;\n controller: AbortController;\n signal: AbortSignal;\n};\n\ntype BoundAbortSignal = {\n signal: AbortSignal;\n cleanup(): void;\n};\n\nconst REQUEST_HEADER = 'X-Trellis-UI-Request';\nconst CLIENT_SESSION_HEADER = 'X-Trellis-Client';\nconst REQUEST_ID_HEADER = 'X-Trellis-Request-ID';\nconst NAVIGATE_HEADER = 'X-Trellis-Navigate';\nconst NAVIGATE_HISTORY_HEADER = 'X-Trellis-Navigate-History';\nconst CLIENT_STREAM_SELECTOR = '[data-ui-stream][data-ui-stream-client]';\nconst CLIENT_STREAM_OPEN_EVENT = 'ui:stream:open';\nconst CLIENT_STREAM_ERROR_EVENT = 'ui:stream:error';\nconst CLIENT_STREAM_DISCONNECTED_EVENT = 'ui:stream:disconnected';\nconst CLIENT_STREAM_REFRESH_EVENT = 'ui:stream:refresh';\nconst CSRF_META_SELECTOR = 'meta[name=\"csrf-token\"]';\nconst SSE_CONTENT_TYPE = 'text/event-stream';\nconst PENDING_ATTRIBUTE = 'data-ui-request-pending';\nconst FORM_URL_ENCODED = 'application/x-www-form-urlencoded';\nconst FORM_MULTIPART = 'multipart/form-data';\n// GET is the only bodyless helper. DELETE remains body-capable for API symmetry;\n// Django apps may still prefer POST intents or URL-specific delete routes.\nconst METHODS_WITHOUT_BODY = new Set<RequestMethod>(['GET']);\n\nlet AlpineRuntime: StreamAlpine | null = null;\nlet navigateResponseHandler: ((result: RequestResult) => boolean) | null = null;\n\nconst normalizeMethod = (method: string | null | undefined): RequestMethod => {\n const value = (method || 'GET').toUpperCase();\n if (value === 'POST' || value === 'PUT' || value === 'PATCH' || value === 'DELETE') return value;\n return 'GET';\n};\n\nconst appendEntry = (target: FormData | URLSearchParams, key: string, value: string | Blob): void => {\n if (target instanceof FormData) {\n target.append(key, value);\n return;\n }\n target.append(key, value instanceof File ? value.name : String(value));\n};\n\nconst addValue = (target: FormData | URLSearchParams, key: string, value: unknown): void => {\n if (Array.isArray(value)) {\n value.forEach((item) => addValue(target, key, item));\n return;\n }\n if (value === undefined || value === null) return;\n appendEntry(target, key, value instanceof Blob ? value : String(value));\n};\n\nconst appendRecord = (target: FormData | URLSearchParams, record: Record<string, unknown>): void => {\n Object.entries(record).forEach(([key, value]) => addValue(target, key, value));\n};\n\nconst appendExtra = (target: FormData | URLSearchParams, extra: RequestExtra | undefined): void => {\n if (!extra) return;\n if (extra instanceof FormData || extra instanceof URLSearchParams) {\n for (const [key, value] of extra.entries()) appendEntry(target, key, value);\n return;\n }\n appendRecord(target, extra);\n};\n\nconst headersWithDefaults = (headersInit: HeadersInit | undefined, body: BodyInit | null): Headers => {\n const headers = new Headers(headersInit);\n headers.set(REQUEST_HEADER, 'true');\n\n const csrf = document.querySelector<HTMLMetaElement>(CSRF_META_SELECTOR)?.content;\n if (csrf) headers.set('X-CSRFToken', csrf);\n\n if (body instanceof URLSearchParams && !headers.has('Content-Type')) {\n headers.set('Content-Type', FORM_URL_ENCODED);\n }\n\n return headers;\n};\n\nconst urlFor = (url: string | URL | undefined, source: RequestSource | undefined, submitter: HTMLElement | null): URL => {\n if (url) return new URL(url, document.baseURI);\n\n if (source instanceof HTMLFormElement) {\n const action = submitter?.getAttribute('formaction') || source.getAttribute('action') || window.location.href;\n return new URL(action, document.baseURI);\n }\n\n if (source instanceof HTMLAnchorElement) return new URL(source.href, document.baseURI);\n\n return new URL(window.location.href);\n};\n\nconst formEnctype = (form: HTMLFormElement, submitter: HTMLElement | null): string => (\n submitter?.getAttribute('formenctype') || form.enctype || FORM_URL_ENCODED\n);\n\nconst submitterNameValue = (submitter: HTMLElement | null): [string, string] | null => {\n if (!(submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement)) return null;\n const name = submitter.getAttribute('name');\n if (!name) return null;\n return [name, submitter.value];\n};\n\nconst formPayload = (form: HTMLFormElement, submitter: HTMLElement | null): FormData => {\n const payload = new FormData(form);\n const pair = submitterNameValue(submitter);\n if (pair) payload.append(...pair);\n return payload;\n};\n\nconst paramsFrom = (payload: FormData | URLSearchParams): URLSearchParams => {\n const params = new URLSearchParams();\n for (const [key, value] of payload.entries()) {\n if (value instanceof File) {\n params.append(key, value.name);\n } else {\n params.append(key, value);\n }\n }\n return params;\n};\n\nconst payloadFromData = (data: RequestData | undefined, natural: FormData | URLSearchParams): {payload: FormData | URLSearchParams | BodyInit | null; explicit: boolean} => {\n if (data === undefined) return {payload: natural, explicit: false};\n if (data instanceof HTMLFormElement) return {payload: new FormData(data), explicit: true};\n if (data instanceof FormData || data instanceof URLSearchParams || typeof data === 'string' || data instanceof Blob || data instanceof ArrayBuffer) {\n return {payload: data, explicit: true};\n }\n const params = new URLSearchParams();\n appendRecord(params, data);\n return {payload: params, explicit: true};\n};\n\nconst mergePayload = (\n payload: FormData | URLSearchParams | BodyInit | null,\n extra: RequestExtra | undefined,\n): FormData | URLSearchParams | BodyInit | null => {\n if (!extra) return payload;\n\n if (payload instanceof FormData || payload instanceof URLSearchParams) {\n appendExtra(payload, extra);\n return payload;\n }\n\n const params = new URLSearchParams();\n if (typeof payload === 'string') params.append('data', payload);\n appendExtra(params, extra);\n return params;\n};\n\nconst naturalPayload = (\n source: RequestSource | undefined,\n submitter: HTMLElement | null,\n): {payload: FormData | URLSearchParams; enctype: string} => {\n if (source instanceof HTMLFormElement) {\n return {\n payload: formPayload(source, submitter),\n enctype: formEnctype(source, submitter),\n };\n }\n return {payload: new URLSearchParams(), enctype: FORM_URL_ENCODED};\n};\n\nconst resolveMethod = (source: RequestSource | undefined, optionMethod: string | undefined, submitter: HTMLElement | null): RequestMethod => {\n if (optionMethod) return normalizeMethod(optionMethod);\n if (source instanceof HTMLFormElement) {\n return normalizeMethod(submitter?.getAttribute('formmethod') || source.getAttribute('method'));\n }\n return 'GET';\n};\n\nconst prepareRequest = (url: string | URL | undefined, options: RequestOptions = {}): PreparedRequest => {\n const source = options.source;\n const submitter = options.submitter ?? null;\n const method = resolveMethod(source, options.method, submitter);\n const resolvedUrl = urlFor(url, source, submitter);\n const natural = naturalPayload(source, submitter);\n const basePayload = payloadFromData(options.data, natural.payload);\n const payload = mergePayload(basePayload.payload, options.extra);\n\n const init: RequestInit = {\n method,\n ...(options.cache ? {cache: options.cache} : {}),\n };\n let body: BodyInit | null = null;\n\n if (METHODS_WITHOUT_BODY.has(method)) {\n if (payload instanceof FormData || payload instanceof URLSearchParams) {\n paramsFrom(payload).forEach((value, key) => resolvedUrl.searchParams.append(key, value));\n } else if (typeof payload === 'string') {\n resolvedUrl.searchParams.append('data', payload);\n }\n } else if (payload instanceof FormData && (basePayload.explicit || natural.enctype === FORM_MULTIPART)) {\n body = payload;\n } else if (payload instanceof FormData) {\n body = paramsFrom(payload);\n } else {\n body = payload;\n }\n\n init.headers = headersWithDefaults(options.headers, body);\n if (body !== null && body !== undefined) init.body = body;\n\n return {url: resolvedUrl, method, init};\n};\n\nconst eventTargetFor = (source: Element | undefined): Element | Document => (\n source?.isConnected ? source : document\n);\n\nconst lifecycleEvent = (\n name: string,\n detail: RequestLifecycleDetail,\n options: {cancelable?: boolean} = {},\n): CustomEvent<RequestLifecycleDetail> => new CustomEvent<RequestLifecycleDetail>(name, {\n bubbles: true,\n composed: true,\n cancelable: options.cancelable ?? false,\n detail,\n});\n\nconst dispatchLifecycle = (name: string, source: Element | undefined, detail: RequestLifecycleDetail, options?: {cancelable?: boolean}): boolean => (\n eventTargetFor(source).dispatchEvent(lifecycleEvent(name, detail, options))\n);\n\nconst pendingCounts = new WeakMap<Element, number>();\n\nconst setPending = (source: Element | undefined): void => {\n if (!source) return;\n const count = pendingCounts.get(source) ?? 0;\n pendingCounts.set(source, count + 1);\n source.setAttribute('aria-busy', 'true');\n source.setAttribute(PENDING_ATTRIBUTE, 'true');\n};\n\nconst clearPending = (source: Element | undefined): void => {\n if (!source) return;\n const nextCount = (pendingCounts.get(source) ?? 1) - 1;\n if (nextCount > 0) {\n pendingCounts.set(source, nextCount);\n return;\n }\n pendingCounts.delete(source);\n source.removeAttribute('aria-busy');\n source.removeAttribute(PENDING_ATTRIBUTE);\n};\n\nconst isSseResponse = (response: Response): boolean => (\n response.headers.get('Content-Type')?.toLowerCase().includes(SSE_CONTENT_TYPE) ?? false\n);\n\nconst handleResponse = async (response: Response): Promise<Omit<RequestResult, 'requestId'>> => {\n const navigate = response.headers.get(NAVIGATE_HEADER);\n if (navigate) {\n const history = response.headers.get(NAVIGATE_HISTORY_HEADER) ?? 'auto';\n if (history !== 'auto' && history !== 'push' && history !== 'replace') {\n warn('x-ui-request: invalid navigation history', history);\n return {response, type: 'other', url: response.url};\n }\n return {response, type: 'navigate', url: response.url, navigation: {history, url: navigate}};\n }\n if (\n response.status === 204\n || response.body === null\n || response.headers.get('X-Trellis-UI-Response') === 'empty'\n ) return {response, type: 'empty', url: response.url};\n\n if (response.redirected && !isSseResponse(response)) {\n window.location.assign(response.url);\n return {response, type: 'redirect', url: response.url};\n }\n\n warn('x-ui-request: expected an empty response', response);\n return {response, type: 'other', url: response.url};\n};\n\ntype ClientStreamReady = {token: string} | null;\nconst streamReadiness = new WeakMap<HTMLElement, Promise<ClientStreamReady>>();\n\nconst streamClientToken = (stream: HTMLElement): string | null => {\n const token = stream.dataset.uiStreamClient;\n const expiresAt = Number(stream.dataset.uiStreamClientExpires);\n if (!token) return null;\n if (Number.isFinite(expiresAt) && expiresAt > 0 && expiresAt <= Date.now()) return null;\n return token;\n};\n\nconst readyClientStream = (): ClientStreamReady => {\n const stream = document.querySelector<HTMLElement>(CLIENT_STREAM_SELECTOR);\n const token = stream ? streamClientToken(stream) : null;\n if (!stream || !token || stream.dataset.uiStreamState !== 'open') return null;\n return {token};\n};\n\nconst streamTimeout = (stream: HTMLElement): number => {\n const configured = Number(stream.dataset.uiStreamTimeout);\n return Number.isFinite(configured) && configured >= 0 ? configured : 5000;\n};\n\nconst waitForClientStream = (signal: AbortSignal): Promise<ClientStreamReady> => {\n const stream = document.querySelector<HTMLElement>(CLIENT_STREAM_SELECTOR);\n const token = stream ? streamClientToken(stream) : null;\n if (!stream) return Promise.resolve(null);\n if (token && stream.dataset.uiStreamState === 'open') return Promise.resolve({token});\n if (\n stream.dataset.uiStreamState === 'error'\n || stream.dataset.uiStreamState === 'disconnected'\n || signal.aborted\n ) return Promise.resolve(null);\n\n const existingReadiness = streamReadiness.get(stream);\n const readiness: Promise<ClientStreamReady> = existingReadiness ?? new Promise<ClientStreamReady>((resolve) => {\n const finish = (value: ClientStreamReady): void => {\n window.clearTimeout(timeoutId);\n stream.removeEventListener(CLIENT_STREAM_OPEN_EVENT, onOpen);\n stream.removeEventListener(CLIENT_STREAM_ERROR_EVENT, onError);\n stream.removeEventListener(CLIENT_STREAM_DISCONNECTED_EVENT, onError);\n resolve(value);\n };\n const onOpen = (): void => {\n const currentToken = streamClientToken(stream);\n finish(currentToken ? {token: currentToken} : null);\n };\n const onError = (): void => finish(null);\n const timeoutId = window.setTimeout(onError, streamTimeout(stream));\n\n stream.addEventListener(CLIENT_STREAM_OPEN_EVENT, onOpen, {once: true});\n stream.addEventListener(CLIENT_STREAM_ERROR_EVENT, onError, {once: true});\n stream.addEventListener(CLIENT_STREAM_DISCONNECTED_EVENT, onError, {once: true});\n }).finally(() => {\n streamReadiness.delete(stream);\n });\n if (!existingReadiness) streamReadiness.set(stream, readiness);\n\n return new Promise((resolve) => {\n const onAbort = (): void => resolve(null);\n signal.addEventListener('abort', onAbort, {once: true});\n void readiness.then((result) => {\n signal.removeEventListener('abort', onAbort);\n resolve(result);\n });\n });\n};\n\nconst prepareClientStream = async (signal: AbortSignal): Promise<ClientStreamReady> => {\n const ready = readyClientStream();\n if (ready) return ready;\n\n const stream = document.querySelector<HTMLElement>(CLIENT_STREAM_SELECTOR);\n if (!stream) return null;\n if (!streamClientToken(stream)) {\n stream.dispatchEvent(new CustomEvent(CLIENT_STREAM_REFRESH_EVENT));\n const refreshed = readyClientStream();\n if (refreshed) return refreshed;\n }\n return waitForClientStream(signal);\n};\n\nconst bindExternalAbort = (controller: AbortController, externalSignal: AbortSignal | undefined): BoundAbortSignal => {\n if (!externalSignal) {\n return {\n signal: controller.signal,\n cleanup: () => undefined,\n };\n }\n\n const abort = (): void => controller.abort(externalSignal.reason);\n if (externalSignal.aborted) {\n abort();\n } else {\n externalSignal.addEventListener('abort', abort, {once: true});\n }\n\n return {\n signal: controller.signal,\n cleanup: () => externalSignal.removeEventListener('abort', abort),\n };\n};\n\nconst isAbortError = (error: unknown, signal: AbortSignal): boolean => (\n signal.aborted\n || (error instanceof DOMException && error.name === 'AbortError')\n || (error instanceof Error && error.name === 'AbortError')\n);\n\nconst requestWithAlpine = async (\n AlpineInstance: StreamAlpine,\n url: string | URL | undefined,\n options: RequestOptions = {},\n): Promise<RequestResult> => {\n const source = options.source;\n const controller = new AbortController();\n const requestId = options.requestId ?? crypto.randomUUID();\n const prepared = prepareRequest(url, options);\n const boundAbort = bindExternalAbort(controller, options.signal);\n const signal = boundAbort.signal;\n prepared.init.signal = signal;\n (prepared.init.headers as Headers).set(REQUEST_ID_HEADER, requestId);\n const clientStream = readyClientStream() ?? await prepareClientStream(signal);\n if (signal.aborted) {\n boundAbort.cleanup();\n return {requestId, response: null, type: 'aborted', url: prepared.url.toString()};\n }\n if (!clientStream) {\n boundAbort.cleanup();\n return {requestId, response: null, type: signal.aborted ? 'aborted' : 'unavailable', url: prepared.url.toString()};\n }\n (prepared.init.headers as Headers).set(CLIENT_SESSION_HEADER, clientStream.token);\n\n const detail: RequestLifecycleDetail = {\n source: source ?? document,\n url: prepared.url.toString(),\n method: prepared.method,\n requestInit: prepared.init,\n requestId,\n controller,\n signal,\n };\n\n if (!dispatchLifecycle('ui:request:before', source, detail, {cancelable: true})) {\n boundAbort.cleanup();\n return {requestId, response: null, type: 'cancelled', url: prepared.url.toString()};\n }\n\n setPending(source);\n dispatchLifecycle('ui:request:start', source, detail);\n\n try {\n const response = await fetch(prepared.url.toString(), prepared.init);\n const result = await handleResponse(response);\n detail.response = response;\n detail.responseType = result.type;\n\n if ((response.ok && result.type !== 'other') || result.type === 'redirect') {\n dispatchLifecycle('ui:request:success', source, detail);\n } else {\n dispatchLifecycle('ui:request:error', source, detail);\n }\n\n const requestResult = {...result, requestId};\n if (requestResult.navigation) navigateResponseHandler?.(requestResult);\n return requestResult;\n } catch (error) {\n if (isAbortError(error, signal)) {\n detail.responseType = 'aborted';\n return {requestId, response: null, type: 'aborted', url: prepared.url.toString()};\n }\n\n detail.error = error;\n dispatchLifecycle('ui:request:error', source, detail);\n throw error;\n } finally {\n boundAbort.cleanup();\n clearPending(source);\n dispatchLifecycle('ui:request:finish', source, detail);\n }\n};\n\nconst requireAlpine = (): StreamAlpine => {\n if (!AlpineRuntime) {\n throw new Error('Trellis request runtime has not been registered with Alpine.');\n }\n return AlpineRuntime;\n};\n\nconst request = (url: string | URL, options: RequestOptions = {}): Promise<RequestResult> => (\n requestWithAlpine(requireAlpine(), url, options)\n);\n\nconst get = (url: string | URL, options: RequestOptions = {}): Promise<RequestResult> => (\n request(url, {...options, method: 'GET'})\n);\n\nconst post = (url: string | URL, options: RequestOptions = {}): Promise<RequestResult> => (\n request(url, {...options, method: 'POST'})\n);\n\nconst put = (url: string | URL, options: RequestOptions = {}): Promise<RequestResult> => (\n request(url, {...options, method: 'PUT'})\n);\n\nconst del = (url: string | URL, options: RequestOptions = {}): Promise<RequestResult> => (\n request(url, {...options, method: 'DELETE'})\n);\n\nconst registerRequestRuntime = (AlpineInstance: Alpine.Alpine | StreamAlpine): void => {\n AlpineRuntime = AlpineInstance as StreamAlpine;\n};\n\nconst setNavigateResponseHandler = (handler: ((result: RequestResult) => boolean) | null): void => {\n navigateResponseHandler = handler;\n};\n\nexport {\n del,\n get,\n post,\n put,\n registerRequestRuntime,\n request,\n requestWithAlpine,\n setNavigateResponseHandler,\n};\nexport type {NavigationHistory, RequestLifecycleDetail, RequestMethod, RequestOptions, RequestResult};\n","import type Alpine from 'alpinejs';\nimport {\n requestWithAlpine,\n setNavigateResponseHandler,\n type NavigationHistory,\n type RequestOptions,\n type RequestResult,\n} from './request';\nimport {\n setEffectRequestFilter,\n setMorphExclusionFilter,\n type StreamAlpine,\n} from './stream';\nimport {isRecord, warn} from '../../utils';\n\ntype ScrollPosition = {x: number; y: number};\ntype NavigationOptions = RequestOptions & {history?: NavigationHistory};\ntype ScrollState = {\n containers: Record<string, ScrollPosition>;\n window: ScrollPosition;\n};\ntype NavigateHistoryState = {\n id: string;\n index: number;\n scroll: ScrollState;\n url: string;\n};\ntype TrellisHistoryState = {\n navigate: NavigateHistoryState;\n};\ntype NavigationDetail = {\n history: boolean;\n source: Element | Document;\n url: URL;\n};\ntype NavigationSession = {\n controller: AbortController;\n destination: URL;\n entryId: string | null;\n history: boolean;\n disposition: NavigationHistory;\n requestId: string;\n requestOptions?: RequestOptions;\n source?: Element;\n};\n\nconst HISTORY_NAMESPACE = '__trellis';\nconst SCROLL_CONTAINER_SELECTOR = '[data-ui-scroll-restoration]';\nconst COMPLETED_SESSION_LIMIT = 20;\nconst CANCELLED_REQUEST_LIMIT = 100;\n\nlet registered = false;\nlet activeSession: NavigationSession | null = null;\nlet currentIndex = 0;\nlet ignoreNextPopstate = false;\nlet scrollSaveFrame: number | null = null;\nconst scrollSnapshots = new Map<string, ScrollState>();\nconst cancelledRequestIds = new Set<string>();\nconst completedSessions = new Map<string, NavigationSession>();\n\nconst navigationId = (): string => crypto.randomUUID();\n\nconst emptyScrollState = (): ScrollState => ({\n containers: {},\n window: {x: 0, y: 0},\n});\n\nconst scrollContainerKey = (element: Element): string | null => {\n const declared = element.getAttribute('data-ui-scroll-restoration')?.trim();\n if (declared) return declared;\n return element.id || null;\n};\n\nconst captureScroll = (): ScrollState => {\n const containers: Record<string, ScrollPosition> = {};\n document.querySelectorAll<HTMLElement>(SCROLL_CONTAINER_SELECTOR).forEach((element) => {\n const key = scrollContainerKey(element);\n if (!key) return;\n containers[key] = {x: element.scrollLeft, y: element.scrollTop};\n });\n return {\n containers,\n window: {x: window.scrollX, y: window.scrollY},\n };\n};\n\nconst navigateStateFrom = (state: unknown): NavigateHistoryState | null => {\n if (!isRecord(state)) return null;\n const trellis = state[HISTORY_NAMESPACE];\n if (!isRecord(trellis)) return null;\n const navigate = trellis.navigate;\n if (!isRecord(navigate)) return null;\n if (\n typeof navigate.id !== 'string'\n || typeof navigate.index !== 'number'\n || typeof navigate.url !== 'string'\n || !isRecord(navigate.scroll)\n ) return null;\n return navigate as NavigateHistoryState;\n};\n\nconst mergedHistoryState = (navigate: NavigateHistoryState): Record<string, unknown> => {\n const state = isRecord(window.history.state) ? window.history.state : {};\n const namespace = isRecord(state[HISTORY_NAMESPACE])\n ? state[HISTORY_NAMESPACE] as Record<string, unknown>\n : {};\n return {\n ...state,\n [HISTORY_NAMESPACE]: {\n ...namespace,\n navigate,\n } satisfies TrellisHistoryState,\n };\n};\n\nconst replaceEntry = (navigate: NavigateHistoryState, url: string | URL = navigate.url): void => {\n window.history.replaceState(mergedHistoryState(navigate), '', url);\n};\n\nconst saveCurrentScroll = (): void => {\n const navigate = navigateStateFrom(window.history.state);\n if (!navigate) return;\n const scroll = captureScroll();\n scrollSnapshots.set(navigate.id, scroll);\n replaceEntry({...navigate, scroll});\n};\n\nconst flushCurrentScroll = (): void => {\n if (scrollSaveFrame !== null) {\n cancelAnimationFrame(scrollSaveFrame);\n scrollSaveFrame = null;\n }\n saveCurrentScroll();\n};\n\nconst scheduleCurrentScroll = (): void => {\n const navigate = navigateStateFrom(window.history.state);\n if (!navigate) return;\n scrollSnapshots.set(navigate.id, captureScroll());\n if (scrollSaveFrame !== null) return;\n scrollSaveFrame = requestAnimationFrame(() => {\n scrollSaveFrame = null;\n const current = navigateStateFrom(window.history.state);\n if (!current) return;\n const scroll = scrollSnapshots.get(current.id);\n if (scroll) replaceEntry({...current, scroll});\n });\n};\n\nconst restoreScroll = (scroll: ScrollState): void => {\n requestAnimationFrame(() => {\n window.scrollTo({left: scroll.window.x, top: scroll.window.y, behavior: 'instant'});\n document.querySelectorAll<HTMLElement>(SCROLL_CONTAINER_SELECTOR).forEach((element) => {\n const key = scrollContainerKey(element);\n const position = key ? scroll.containers[key] : undefined;\n element.scrollTo({\n left: position?.x ?? 0,\n top: position?.y ?? 0,\n behavior: 'instant',\n });\n });\n });\n};\n\nconst dispatchNavigation = (\n name: string,\n session: Pick<NavigationSession, 'destination' | 'history' | 'source'>,\n cancelable = false,\n): boolean => {\n const source = session.source?.isConnected ? session.source : document;\n return source.dispatchEvent(new CustomEvent<NavigationDetail>(name, {\n bubbles: true,\n cancelable,\n composed: true,\n detail: {\n history: session.history,\n source,\n url: session.destination,\n },\n }));\n};\n\nconst rememberCompleted = (session: NavigationSession): void => {\n completedSessions.set(session.requestId, session);\n while (completedSessions.size > COMPLETED_SESSION_LIMIT) {\n const oldest = completedSessions.keys().next().value as string | undefined;\n if (!oldest) break;\n completedSessions.delete(oldest);\n }\n};\n\nconst rejectRequestId = (requestId: string): void => {\n cancelledRequestIds.add(requestId);\n while (cancelledRequestIds.size > CANCELLED_REQUEST_LIMIT) {\n const oldest = cancelledRequestIds.values().next().value as string | undefined;\n if (!oldest) break;\n cancelledRequestIds.delete(oldest);\n }\n};\n\nconst cancelActive = (): void => {\n if (!activeSession) return;\n rejectRequestId(activeSession.requestId);\n activeSession.controller.abort('Superseded by a newer Trellis navigation');\n activeSession = null;\n};\n\nconst supersedePriorNavigations = (): void => {\n cancelActive();\n completedSessions.forEach((session) => rejectRequestId(session.requestId));\n completedSessions.clear();\n};\n\nconst nativeNavigate = (url: URL): void => {\n window.location.assign(url.href);\n};\n\nconst internalUrl = (value: string): URL | null => {\n const url = new URL(value, document.baseURI);\n return url.origin === window.location.origin ? url : null;\n};\n\nconst pushDestination = (session: NavigationSession): NavigateHistoryState => {\n flushCurrentScroll();\n const navigate: NavigateHistoryState = {\n id: navigationId(),\n index: currentIndex + 1,\n scroll: emptyScrollState(),\n url: session.destination.href,\n };\n currentIndex = navigate.index;\n window.history.pushState(mergedHistoryState(navigate), '', session.destination);\n session.entryId = navigate.id;\n return navigate;\n};\n\nconst replaceDestination = (session: NavigationSession): NavigateHistoryState => {\n const navigate: NavigateHistoryState = {\n id: navigationId(),\n index: currentIndex,\n scroll: emptyScrollState(),\n url: session.destination.href,\n };\n replaceEntry(navigate, session.destination);\n session.entryId = navigate.id;\n return navigate;\n};\n\nconst commitsWithReplace = (session: NavigationSession): boolean => {\n if (session.disposition === 'replace') return true;\n if (session.disposition === 'push') return false;\n const current = new URL(window.location.href);\n return current.origin === session.destination.origin && current.pathname === session.destination.pathname;\n};\n\nconst fallbackFor = (session: NavigationSession, result?: RequestResult): void => {\n if (\n result?.type === 'aborted'\n || result?.type === 'cancelled'\n || result?.type === 'redirect'\n ) return;\n nativeNavigate(session.destination);\n};\n\nconst finishSession = (\n session: NavigationSession,\n result: RequestResult,\n restoredState?: NavigateHistoryState,\n): void => {\n if (cancelledRequestIds.has(session.requestId)) return;\n if (result.type !== 'empty') {\n fallbackFor(session, result);\n return;\n }\n\n const destinationState = restoredState ?? (\n commitsWithReplace(session) ? replaceDestination(session) : pushDestination(session)\n );\n if (restoredState && session.destination.href !== restoredState.url) {\n const redirected = {...restoredState, url: session.destination.href};\n replaceEntry(redirected, session.destination);\n session.entryId = redirected.id;\n }\n restoreScroll(destinationState.scroll);\n dispatchNavigation('ui:navigated', session);\n};\n\nconst performNavigation = (\n AlpineInstance: StreamAlpine,\n destination: URL,\n options: {\n history: boolean;\n disposition?: NavigationHistory;\n preflight?: boolean;\n requestOptions?: RequestOptions;\n source?: Element;\n restoredState?: NavigateHistoryState;\n },\n): Promise<void> => {\n const session: NavigationSession = {\n controller: new AbortController(),\n destination,\n entryId: options.restoredState?.id ?? null,\n history: options.history,\n disposition: options.disposition ?? 'auto',\n requestId: navigationId(),\n ...(options.requestOptions ? {requestOptions: options.requestOptions} : {}),\n ...(options.source ? {source: options.source} : {}),\n };\n\n if (options.preflight !== false && !dispatchNavigation('ui:navigate', session, true)) return Promise.resolve();\n supersedePriorNavigations();\n activeSession = session;\n dispatchNavigation('ui:navigating', session);\n\n const headers = new Headers(session.requestOptions?.headers);\n headers.set('X-Trellis-Navigation', session.history ? 'restore' : 'navigate');\n let initialRequest = true;\n const requestDestination = async (): Promise<RequestResult> => {\n const requestOptions = initialRequest ? session.requestOptions : undefined;\n const source = initialRequest ? session.source : undefined;\n initialRequest = false;\n const result = await requestWithAlpine(AlpineInstance, session.destination, {\n ...requestOptions,\n headers,\n method: 'GET',\n requestId: session.requestId,\n signal: session.controller.signal,\n ...(source ? {source} : {}),\n });\n session.destination = new URL(result.url, document.baseURI);\n if (!result.navigation) return result;\n\n const redirected = internalUrl(result.navigation.url);\n if (!redirected) {\n nativeNavigate(new URL(result.navigation.url, document.baseURI));\n return {...result, type: 'redirect'};\n }\n session.destination = redirected;\n if (result.navigation.history !== 'auto') session.disposition = result.navigation.history;\n return requestDestination();\n };\n\n return requestDestination().then((result) => {\n if (activeSession?.requestId !== session.requestId && !completedSessions.has(session.requestId)) return;\n finishSession(session, result, options.restoredState);\n }).catch((error: unknown) => {\n if (!session.controller.signal.aborted) {\n warn('x-ui-request.navigate: restoration failed', error);\n fallbackFor(session);\n }\n }).finally(() => {\n if (activeSession?.requestId === session.requestId) activeSession = null;\n if (!cancelledRequestIds.has(session.requestId)) rememberCompleted(session);\n });\n};\n\nconst initializeHistory = (): void => {\n const existing = navigateStateFrom(window.history.state);\n if (existing) {\n currentIndex = existing.index;\n } else {\n const navigate: NavigateHistoryState = {\n id: navigationId(),\n index: 0,\n scroll: captureScroll(),\n url: window.location.href,\n };\n replaceEntry(navigate);\n }\n if ('scrollRestoration' in window.history) window.history.scrollRestoration = 'manual';\n};\n\nconst registerNavigationRuntime = (AlpineInstance: Alpine.Alpine | StreamAlpine): void => {\n if (registered) return;\n registered = true;\n initializeHistory();\n setEffectRequestFilter((requestId) => !requestId || !cancelledRequestIds.has(requestId));\n setMorphExclusionFilter((requestId, element) => (\n element.matches('[data-ui-stream]')\n && Boolean(\n requestId\n && (\n activeSession?.requestId === requestId\n || completedSessions.has(requestId)\n )\n )\n ));\n setNavigateResponseHandler((result) => {\n if (!result.navigation) return false;\n if (cancelledRequestIds.has(result.requestId)) return true;\n if (activeSession?.requestId === result.requestId) return true;\n const destination = internalUrl(result.navigation.url);\n if (!destination) {\n nativeNavigate(new URL(result.navigation.url, document.baseURI));\n return true;\n }\n performNavigation(AlpineInstance as StreamAlpine, destination, {\n history: false,\n disposition: result.navigation.history,\n });\n return true;\n });\n\n window.addEventListener('scroll', scheduleCurrentScroll, {passive: true});\n document.addEventListener('scroll', scheduleCurrentScroll, {capture: true, passive: true});\n window.addEventListener('pagehide', flushCurrentScroll);\n window.addEventListener('popstate', (event) => {\n if (ignoreNextPopstate) {\n ignoreNextPopstate = false;\n return;\n }\n const restoredState = navigateStateFrom(event.state);\n if (!restoredState) {\n nativeNavigate(new URL(window.location.href));\n return;\n }\n const restoredScroll = scrollSnapshots.get(restoredState.id);\n const effectiveState = restoredScroll\n ? {...restoredState, scroll: restoredScroll}\n : restoredState;\n const destination = internalUrl(restoredState.url);\n if (!destination || destination.href !== window.location.href) {\n nativeNavigate(new URL(window.location.href));\n return;\n }\n\n const previousIndex = currentIndex;\n currentIndex = restoredState.index;\n const probe: NavigationSession = {\n controller: new AbortController(),\n destination,\n entryId: restoredState.id,\n history: true,\n disposition: 'replace',\n requestId: navigationId(),\n };\n if (!dispatchNavigation('ui:navigate', probe, true)) {\n ignoreNextPopstate = true;\n window.history.go(previousIndex - restoredState.index);\n currentIndex = previousIndex;\n return;\n }\n performNavigation(AlpineInstance as StreamAlpine, destination, {\n history: true,\n preflight: false,\n restoredState: effectiveState,\n });\n });\n};\n\nconst navigateWithAlpine = (\n AlpineInstance: Alpine.Alpine | StreamAlpine,\n url: string | URL,\n source?: Element,\n options?: NavigationOptions,\n): Promise<void> => {\n const {history = 'auto', ...requestOptions} = options ?? {};\n return performNavigation(AlpineInstance as StreamAlpine, new URL(url, document.baseURI), {\n history: false,\n disposition: history,\n requestOptions,\n ...(source ? {source} : {}),\n });\n};\n\nexport {\n HISTORY_NAMESPACE,\n SCROLL_CONTAINER_SELECTOR,\n navigateWithAlpine,\n registerNavigationRuntime,\n};\nexport type {NavigationOptions};\n","import type Alpine from 'alpinejs';\nimport type {motion} from '../motion';\nimport {\n del as requestDelete,\n get as requestGet,\n post as requestPost,\n put as requestPut,\n type NavigationHistory,\n type RequestOptions,\n type RequestResult,\n} from './engine/request';\nimport {navigateWithAlpine} from './engine/navigation';\nimport type {sortable, UiSortableService} from './drag-and-drop/sortable';\nimport {warn} from '../utils';\n\ntype UiState = {\n activeRequests: number;\n};\n\ntype UiRequestOptions = RequestOptions & {\n navigate?: boolean;\n};\ntype UiGetOptions = UiRequestOptions & {\n history?: NavigationHistory;\n};\ntype UiGet = (url: string | URL, options?: UiGetOptions) => Promise<RequestResult | void>;\ntype UiMutation = (url: string | URL, options?: UiRequestOptions) => Promise<RequestResult>;\n\ntype UiRuntime = {\n readonly delete: UiMutation;\n readonly get: UiGet;\n readonly post: UiMutation;\n readonly put: UiMutation;\n readonly isFetching: boolean;\n readonly motion: typeof motion;\n readonly sortable: UiSortableService;\n};\ntype UiCapabilities = {\n motion?: typeof motion;\n sortable?: typeof sortable;\n};\n\nlet state: UiState = {activeRequests: 0};\nlet reactive = false;\nlet listening = false;\nlet capabilities: UiCapabilities = {};\nlet AlpineRuntime: Alpine.Alpine | null = null;\n\nconst get: UiGet = (url, options = {}) => {\n const {history, navigate = false, ...requestOptions} = options;\n if (!navigate) return requestGet(url, requestOptions);\n if (!AlpineRuntime) throw new Error('Trellis UI runtime has not been registered with Alpine.');\n const {source, ...navigationOptions} = requestOptions;\n\n return navigateWithAlpine(AlpineRuntime, url, source, {\n ...navigationOptions,\n ...(history ? {history} : {}),\n });\n};\n\nconst mutationMethod = (\n name: 'delete' | 'post' | 'put',\n request: (url: string | URL, options?: RequestOptions) => Promise<RequestResult>,\n): UiMutation => (url, options = {}) => {\n const {navigate = false, ...requestOptions} = options;\n if (navigate) warn(`$ui.${name}: navigate is only supported for GET requests`);\n return request(url, requestOptions);\n};\n\nconst post = mutationMethod('post', requestPost);\nconst put = mutationMethod('put', requestPut);\nconst del = mutationMethod('delete', requestDelete);\n\nconst ui: UiRuntime = {\n get,\n post,\n put,\n delete: del,\n get motion(): typeof motion {\n if (!capabilities.motion) throw new Error('Trellis Motion capability is not registered.');\n return capabilities.motion;\n },\n get sortable(): UiSortableService {\n if (!capabilities.sortable) throw new Error('Trellis Sortable capability is not registered.');\n return capabilities.sortable;\n },\n get isFetching(): boolean {\n return state.activeRequests > 0;\n },\n};\n\nconst registerRequestState = (): void => {\n if (listening) return;\n listening = true;\n\n document.addEventListener('ui:request:start', () => {\n state.activeRequests += 1;\n });\n document.addEventListener('ui:request:finish', () => {\n state.activeRequests = Math.max(0, state.activeRequests - 1);\n });\n};\n\nconst registerUiMagic = (AlpineInstance: Alpine.Alpine): void => {\n AlpineRuntime = AlpineInstance;\n if (!reactive) {\n state = AlpineInstance.reactive(state);\n reactive = true;\n }\n registerRequestState();\n AlpineInstance.magic('ui', () => ui);\n};\nconst registerUiMotion = (value: typeof motion): void => {\n capabilities.motion = value;\n};\nconst registerUiSortable = (value: typeof sortable): void => {\n capabilities.sortable = value;\n};\n\nexport {registerUiMagic, registerUiMotion, registerUiSortable, ui};\nexport type {UiCapabilities, UiGetOptions, UiRequestOptions, UiRuntime};\n"],"mappings":"0LAAA,IAAM,EAA4B,wBAE5B,GAA0B,EAAkB,GAAG,IAA0B,CAC3E,IAAM,EAAW,IAAI,KAChB,EAAQ,aAAA,uBAAsC,GAAK,IAC/C,MAAM,KAAK,EACX,OAAO,OAAO,CACvB,EACA,EAAM,OAAO,OAAO,EAAE,QAAS,GAAS,EAAS,IAAI,CAAI,CAAC,EACtD,EAAS,KAAO,GAChB,EAAQ,aAAa,EAA2B,MAAM,KAAK,CAAQ,EAAE,KAAK,GAAG,CAAC,CAEtF,EAEM,GAAmC,EAAY,IAAmB,CACpE,GAAI,EAAE,aAAgB,UAAY,EAAE,aAAc,SAAU,OAC5D,IAAM,EAAY,IAAI,IAAI,CACtB,IAAI,EAAK,aAAA,uBAAsC,GAAK,IAAI,MAAM,KAAK,EACnE,IAAI,EAAG,aAAA,uBAAsC,GAAK,IAAI,MAAM,KAAK,CACrE,EAAE,OAAO,OAAO,CAAC,EACb,KAAU,OAAS,EACvB,GAAG,aAAa,EAA2B,MAAM,KAAK,CAAS,EAAE,KAAK,GAAG,CAAC,EAE1E,IAAK,IAAM,KAAQ,EACX,EAAK,aAAa,CAAI,EACtB,EAAG,aAAa,EAAM,EAAK,aAAa,CAAI,GAAK,EAAE,EAEnD,EAAG,gBAAgB,CAAI,CAN2C,CAS9E,EC5BM,EAAqB,eAErB,GAAkB,EAAkB,IAAsC,CAC5E,GAAI,OAAO,GAAa,UAAY,EAAU,OAAO,EACrD,IAAM,EAAW,EAAQ,aAAA,aAA4B,GAAK,EAAQ,GAClE,GAAI,EAAU,OAAO,EAErB,IAAM,EAAS,EAAQ,cACvB,GAAI,GAAQ,aAAA,mBAAkC,IAAM,EAAoB,OAAO,KAC/E,IAAM,EAAiB,EAAO,aAAA,aAA4B,GAAK,EAAO,GACtE,OAAO,EAAiB,GAAG,EAAe,eAAiB,IAC/D,ECTM,EAAkB,qBAClB,EAAqB,wBAErB,EAAc,GAChB,OAAO,GAAU,YACd,GACA,OAAO,YAAY,EAGpB,GAAc,EAAqB,WACjC,OAAO,GAAU,SAAiB,MAAM,KAAK,SAAS,iBAAiB,CAAK,CAAC,EAC7E,aAAiB,UAAY,aAAiB,QAAgB,CAAC,CAAK,EACpE,EAAW,CAAK,EAAU,MAAM,KAAK,CAAK,EACvC,CAAC,QAAQ,EAGd,GACF,EAAqB,SACrB,EAA4C,CAAC,IAC9B,CACf,IAAM,EAAW,EAAW,CAAK,EAAE,OAAQ,GAA0B,aAAgB,OAAO,EACtF,EAA4E,CAAC,EAC7E,GAAoB,EAAkB,EAAc,IAAwB,CAC9E,EAAQ,KAAK,CAAC,UAAS,OAAM,SAAU,EAAQ,aAAa,CAAI,CAAC,CAAC,EAClE,EAAQ,aAAa,EAAM,CAAK,CACpC,EAUA,OARA,EAAS,QAAS,GAAY,EACtB,EAAQ,QAAU,KAAM,EAAiB,EAAS,EAAoB,EAAE,EAC5E,IAAM,EAAW,EAAe,EAAS,EAAQ,GAAG,EAChD,GAAY,CAAC,EAAQ,aAAA,oBAA4B,GACjD,EAAiB,EAAS,EAAiB,CAAQ,CAE3D,CAAC,MAEY,CACT,EAAQ,QAAQ,EAAE,SAAS,CAAC,UAAS,OAAM,cAAc,CACrD,GAAI,IAAa,KAAM,CACnB,EAAQ,gBAAgB,CAAI,EAC5B,MACJ,CACA,EAAQ,aAAa,EAAM,CAAQ,CACvC,CAAC,CACL,CACJ,EChDM,GAAQ,EAAiB,GAAG,IAA0B,CACpD,OAAO,QAAY,KAAa,QAAQ,KAAK,EAAS,GAAG,CAAI,CACrE,EC8EM,EAA0B,IAAI,IAChC,EAAwB,GACxB,EAAsE,KACtE,EAAyF,KACzF,EAAkD,KAClD,EAAa,QAAQ,QAAQ,EAC7B,EAAgB,EAEd,GAAwB,GAAiD,CAC3E,IAAK,IAAM,KAAS,EAAQ,EAAwB,IAAI,CAAK,EACzD,GAAyB,EAAwB,OAAS,IAC9D,EAAwB,GACxB,mBAAqB,CACjB,EAAwB,GACxB,IAAM,EAAS,MAAM,KAAK,CAAuB,EACjD,EAAwB,MAAM,EAC9B,EAAO,QAAS,GAAU,EAAM,cAAc,CAAC,CACnD,CAAC,EACL,EAEM,EAAa,GAAsC,CACrD,IAAM,EAAW,SAAS,cAAc,UAAU,EAElD,MADA,GAAS,UAAY,EACd,CACX,EAEM,EAAoB,GACtB,MAAM,KAAK,EAAU,CAAI,EAAE,QAAQ,QAAQ,EACtC,OAAQ,GAAgC,aAAiB,WAAW,EAGvE,GAAgB,EAA8B,IAAkC,CAClF,EAAS,QAAS,GAAY,EAAe,SAAS,CAAO,CAAC,CAClE,EAEM,GAAgB,EAAiB,IAC/B,GACU,EAAO,aAAa,SAC9B,GACG,UAGL,GAAqB,GAAgD,CACvE,GAAI,EAAQ,SAAU,OAAO,SAAS,cAAc,EAAQ,QAAQ,EACpE,GAAI,CAAC,EAAQ,OAAQ,OAAO,KAE5B,IAAM,EAAK,EAAQ,OAAO,WAAW,GAAG,EAAI,EAAQ,OAAO,MAAM,CAAC,EAAI,EAAQ,OAC9E,OAAO,SAAS,eAAe,CAAE,CACrC,EAEM,GACF,EACA,EACA,IACO,CACP,IAAM,EAAO,EAAa,EAAQ,EAAQ,IAAI,EAE9C,GAAI,IAAS,SAAU,CACnB,EAAO,OAAO,EACd,MACJ,CAEA,GAAI,CAAC,EAAQ,KAAM,CACf,EAAK,0CAA0C,EAC/C,MACJ,CAEA,GAAI,IAAS,SAAW,IAAS,QAAS,CACtC,GAAI,OAAO,EAAe,OAAU,WAAY,CAC5C,IAAM,EAAiB,IAAI,IAC3B,EAAe,MAAM,EAAuB,EAAQ,KAAM,CACtD,IAAI,EAAgC,CAChC,OAAO,EAAe,CAAE,CAC5B,EACA,SAAS,EAAY,EAAU,EAA4B,EAAyB,CAChF,GACI,aAAgB,SACb,IAAuB,EAAQ,WAAa,KAAM,CAAI,EAC3D,CACE,IAAO,EACP,MACJ,CACA,EAAgC,EAAM,CAAE,CAC5C,EACA,QAAQ,EAAkB,CACtB,GAAI,EAAE,aAAgB,SAAU,OAChC,IAAM,EAAQ,EAAuB,EAAiC,CAAI,EACtE,GAAO,EAAe,IAAI,CAAK,EACnC,EAAiC,CAAI,EAAE,QAAS,GAAc,CAC1D,EAAe,IAAI,CAAS,CAChC,CAAC,CACL,CACJ,CAAC,EACD,GAAqB,CAAc,EACnC,MACJ,CAEA,EAAK,0FAA0F,CACnG,CAEA,GAAI,IAAS,WAAa,IAAS,SAAW,IAAS,QAAS,CAC5D,GAAM,CAAC,GAAS,EAAiB,EAAQ,IAAI,EAC7C,GAAI,CAAC,EAAO,CACR,EAAK,+CAA+C,EACpD,MACJ,CACA,EAAO,YAAY,CAAK,EACxB,EAAe,SAAS,CAAK,EAC7B,MACJ,CAEA,GAAI,IAAS,SAAU,CACnB,EAA2B,EAAgB,EAAQ,EAAQ,IAAI,EAC/D,MACJ,CAEA,IAAM,EAAW,EAAU,EAAQ,IAAI,EACjC,EAAW,MAAM,KAAK,EAAS,QAAQ,QAAQ,EAChD,OAAQ,GAAgC,aAAiB,WAAW,EAEzE,GAAI,IAAS,SAAU,CACnB,EAAO,OAAO,EAAS,OAAO,EAC9B,EAAa,EAAgB,CAAQ,EACrC,MACJ,CAEA,GAAI,IAAS,UAAW,CACpB,EAAO,QAAQ,EAAS,OAAO,EAC/B,EAAa,EAAgB,CAAQ,EACrC,MACJ,CAEA,GAAI,IAAS,SAAU,CACnB,EAAO,OAAO,EAAS,OAAO,EAC9B,EAAa,EAAgB,CAAQ,EACrC,MACJ,CAEI,IAAS,UACT,EAAO,MAAM,EAAS,OAAO,EAC7B,EAAa,EAAgB,CAAQ,EAE7C,EAEM,IAAuB,EAA8B,IAAsC,CAC7F,IAAM,EAAS,GAAkB,CAAO,EAExC,GAAI,EAAQ,CACR,EAAmB,EAAgB,EAAQ,CAAO,EAClD,MACJ,CAEA,GAAI,EAAQ,UAAY,EAAQ,OAAQ,CACpC,EAAK,gCAAiC,EAAQ,UAAY,EAAQ,MAAM,EACxE,MACJ,CAEA,GAAI,CAAC,EAAQ,KAAM,CACf,EAAK,0CAA0C,EAC/C,MACJ,CAEA,EAAiB,EAAQ,IAAI,EAAE,QAAS,GAAU,CAC9C,GAAI,CAAC,EAAM,GAAI,CACX,EAAK,qDAAsD,CAAK,EAChE,MACJ,CAEA,IAAM,EAAiB,SAAS,eAAe,EAAM,EAAE,EAClD,GACL,EAAmB,EAAgB,EAAgB,CAAC,GAAG,EAAS,KAAM,EAAM,SAAS,CAAC,CAC1F,CAAC,CACL,EAEM,IAAsB,EAA8B,IAA6D,CACnH,IAAM,EAAU,MAAM,QAAQ,CAAO,EAAI,EAAU,CAAC,CAAO,EACrD,MAAoB,CACtB,EAAQ,QAAS,GAAU,GAAoB,EAAgB,CAAK,CAAC,CACzE,EAEM,MAAiC,CACnC,IAAM,EAAkB,EAAQ,OAAQ,GAAU,EAAM,iBAAmB,EAAI,EAC/E,GAAI,EAAgB,SAAW,EAAG,CAC9B,EAAM,EACN,MACJ,CACI,EAAqB,EAAoB,EAAgB,EAAiB,CAAK,EAC9E,EAAM,CACf,EACM,EAAS,EAAQ,QAAS,GAAU,EAAM,QAAU,CAAC,CAAC,EAE5D,GAAI,EAAO,SAAW,GAAK,IAAkB,EAAG,CAC5C,EAAmB,EACnB,MACJ,CAEA,GAAiB,EACjB,IAAM,EAAM,SAA2B,CAC/B,EAAO,OAAS,GAChB,MAAM,EAAW,EAAQ,CAA+B,EAE5D,EAAmB,CACvB,EAEA,EADa,EAAW,KAAK,EAAK,CACrB,EACR,UAAY,IAAA,EAAS,EACrB,YAAc,CACX,GACJ,CAAC,CACT,EAEM,GAA+B,GAAwC,CACzE,EAAsB,CAC1B,EAMM,EAAuB,GAAsC,CAC/D,SAAS,cAAc,IAAI,YAAY,EAAQ,MAAO,CAClD,OAAQ,EAAQ,QAAU,CAAC,EAC3B,QAAS,GACT,SAAU,EACd,CAAC,CAAC,CACN,EAwBM,EAAgB,GAAkD,CACpE,IAAM,EAAW,IAAI,IACrB,IAAK,IAAM,KAAQ,EAAM,KAAK,MAAM;CAAI,EAAG,CACvC,IAAM,EAAQ,EAAK,QAAQ,GAAG,EACxB,EAAW,EAAQ,EACnB,EAAM,EAAW,EAAK,MAAM,EAAG,CAAK,EAAI,EAE9C,GAAI,CAAC,GAAY,IAAQ,OAErB,OADA,EAAK,wCAAyC,CAAG,EAC1C,KAGX,IAAM,EAAQ,EAAW,EAAK,MAAM,EAAQ,CAAC,EAAI,GAC3C,EAAS,EAAS,IAAI,CAAG,EAC3B,EAAQ,EAAO,KAAK,CAAK,EACxB,EAAS,IAAI,EAAK,CAAC,CAAK,CAAC,CAClC,CAEA,OAAO,CACX,EAEM,GAAiB,EAAiC,IAAoC,CACxF,IAAM,EAAS,EAAS,IAAI,CAAG,EAC1B,MAAQ,OAEb,OADI,EAAO,OAAS,GAAG,EAAK,uDAAwD,CAAG,EAChF,EAAO,GAAG,EAAE,CACvB,EAEM,IAAmB,EAA8B,IAA0B,CAC7E,IAAM,EAAW,EAAa,CAAK,EACnC,GAAI,CAAC,GAAY,EAAS,OAAS,EAAG,OACtC,IAAM,EAAY,EAAc,EAAU,YAAY,EACtD,GAAI,GAAuB,CAAC,EAAoB,GAAa,IAAI,EAAG,OAEpE,IAAI,EACE,EAAY,EAAc,EAAU,QAAQ,EAClD,GAAI,EACA,GAAI,CACA,IAAM,EAAkB,KAAK,MAAM,CAAS,EAC5C,GAAI,CAAC,MAAM,QAAQ,CAAM,EAAG,MAAU,UAAU,yBAAyB,EACzE,EAAS,CACb,MAAQ,CACJ,EAAK,yCAA0C,CAAS,EACxD,MACJ,CAaJ,GAAmB,EAAgB,CAT/B,KAAO,EAAc,EAAU,MAAM,GAAK,UAC1C,OAAQ,EAAc,EAAU,QAAQ,GAAK,KAC7C,SAAU,EAAc,EAAU,UAAU,GAAK,KACjD,KAAM,EAAS,IAAI,MAAM,GAAG,KAAK;CAAI,GAAK,KAC1C,UAAW,GAAa,KACxB,eAAgB,EAAc,EAAU,iBAAiB,IAAM,OAC/D,GAAI,EAAS,CAAC,QAAM,EAAI,CAAC,CAGM,CAAO,CAC9C,EAEM,GAAsB,GAA0B,CAClD,IAAM,EAAW,EAAa,CAAK,EACnC,GAAI,CAAC,EAAU,OACf,IAAM,EAAY,EAAc,EAAU,YAAY,EACtD,GAAI,GAAuB,CAAC,EAAoB,GAAa,IAAI,EAAG,OACpE,IAAM,EAAQ,EAAc,EAAU,OAAO,EAC7C,GAAI,CAAC,EAAO,CACR,EAAK,+CAA+C,EACpD,MACJ,CAEA,IAAM,EAAY,EAAc,EAAU,QAAQ,EAC9C,EAAkC,CAAC,EACvC,GAAI,EACA,GAAI,CACA,IAAM,EAAkB,KAAK,MAAM,CAAS,EACxC,EAAS,CAAM,IAAG,EAAS,EACnC,MAAQ,CACJ,EAAK,4CAA6C,CAAS,EAC3D,MACJ,CAGJ,EAAoB,CAAC,QAAO,QAAM,CAAC,CACvC,EAEM,GAA8F,CAChG,mBAAoB,GACpB,uBAAwB,EAAiB,IAAU,GAAmB,CAAK,CAC/E,EAEM,GAA2B,cAE3B,IAAiB,EAA8B,IAA0B,CAC3E,IAAM,EAAU,GAAmB,EAAM,OACzC,GAAI,CAAC,EAAS,CACN,EAAM,MAAM,WAAW,EAAwB,GAC/C,EAAK,qCAAsC,EAAM,KAAK,EAE1D,MACJ,CACA,EAAQ,EAAgB,CAAK,CACjC,EAEM,IAAa,EAAa,EAAS,GAAI,EAAS,GAAI,EAAc,KAAe,CACnF,IAAM,EAAS,IAAI,IAAI,EAAK,SAAS,OAAO,EACtC,EAAmB,CAAC,GAAG,IAAI,IAAI,EAAO,MAAM,KAAK,EAAE,OAAO,OAAO,CAAC,CAAC,EAQzE,OAPI,GAAQ,EAAO,aAAa,IAAI,SAAU,CAAM,EAChD,GAAa,EAAO,aAAa,IAAI,cAAe,CAAW,EAC/D,EAAiB,OAAS,IAC1B,EAAO,aAAa,OAAO,SAAS,EACpC,EAAiB,QAAS,GAAU,EAAO,aAAa,OAAO,UAAW,CAAK,CAAC,GAG7E,sBAAsB,KAAK,CAAG,GAAK,EAAI,WAAW,IAAI,EACvD,EAAO,KACP,GAAG,EAAO,WAAW,EAAO,SAAS,EAAO,MACtD,EAEM,IACF,EACA,EACA,EAAS,GACT,EAAS,GACT,EAA6B,CAAC,IACX,CACnB,IAAM,EAAS,IAAI,YAAY,GAAU,EAAK,EAAQ,EAAQ,EAAU,WAAW,CAAC,EAChF,EAAS,GACP,EAAmB,GAA8B,CAC/C,EAAM,aAAa,EAAU,UAAU,EAAM,WAAW,CAChE,EAiCA,OAhCA,OAAO,KAAK,EAAkB,EAAE,QAAS,GAAc,CACnD,EAAO,iBAAiB,EAAY,GAAU,CACtC,CAAC,GAAU,EAAE,aAAiB,gBAClC,EAAgB,CAAK,EACrB,GAAc,EAAgB,CAC1B,MAAO,EAAM,KACb,KAAM,OAAO,EAAM,IAAI,CAC3B,CAAC,EACL,CAAC,CACL,CAAC,EACD,EAAO,iBAAiB,kBAAqB,CACpC,GACL,EAAU,OAAO,CACrB,CAAC,EACD,EAAO,iBAAiB,eAAiB,GAAU,CAC1C,IACD,aAAiB,cAAc,EAAgB,CAAK,EACxD,EAAU,QAAQ,aAAiB,aAAe,OAAO,EAAM,IAAI,EAAI,EAAE,EAC7E,CAAC,EACD,EAAO,iBAAiB,eAAiB,GAAU,CAC1C,IACL,EAAS,GACT,EAAO,MAAM,EACb,EAAU,QAAQ,aAAiB,aAAe,OAAO,EAAM,IAAI,EAAI,EAAE,EAC7E,CAAC,EACD,EAAO,iBAAiB,YAAe,CAC9B,IACL,EAAS,GACT,EAAO,MAAM,EACb,EAAU,eAAe,EAC7B,CAAC,EAEM,CACH,OAAQ,CACJ,EAAS,GACT,EAAO,MAAM,CACjB,CACJ,CACJ,EAYM,EAAoB,IAAI,IACxB,GAA+B,IAAI,IAEnC,GAAuB,GACzB,aAAc,aAAe,EAAG,GAAK,EAAG,GAAK,EAM3C,GAAiC,IACjC,GAA+B,IAC/B,GAAmC,IACnC,GAAuB,IACvB,GAAsB,IAEtB,GACF,EACA,EACA,EAAkC,CAAC,IAC5B,CACH,IAAS,UAAS,EAAG,QAAQ,cAAgB,GACjD,EAAG,cAAc,IAAI,YAAY,aAAa,IAAQ,CAClD,QAAS,GACT,SAAU,GACV,OAAQ,CAAC,OAAQ,EAAI,GAAG,CAAM,CAClC,CAAC,CAAC,CACN,EAEM,IAAuB,EAAiB,IAC1C,GAAU,EAAY,EAAG,QAAQ,eAAgB,EAAG,QAAQ,cAAc,EAGxE,GAAwB,GAC1B,EAAG,QAAQ,yBAA2B,OAGpC,GAAoB,EAAiB,IACvC,KAAK,UAAU,CACX,eAAgB,GAAqB,CAAE,EACvC,IAAK,GAAoB,EAAI,CAAU,CAC3C,CAAC,EAGC,GAA0B,GAAgD,CAC5E,GAAI,EAAE,aAAiB,aAAc,OAAO,KAC5C,IAAM,EAAS,EAAM,OAOrB,MALI,CAAC,GACE,OAAO,EAAO,WAAc,UAC5B,OAAO,EAAO,QAAW,UACzB,EAAE,EAAO,sBAAsB,iBAC7B,KACF,CACX,EAEM,IACF,EACA,EACA,IACgB,CAChB,IAAI,EAAgB,EAAiB,EAAI,CAAU,EAC/C,EAAsC,KACtC,EACA,EAAgD,KAChD,EACA,EACA,EAAgB,GAChB,EAAc,GACd,EAAuB,EACvB,EAAoB,EACpB,EAAW,GACX,EAAW,GACT,EAAa,IAAI,IACjB,EAAkB,IAAI,IACtB,EAAiB,GAAqB,CAAE,EAExC,MACF,CAAC,IAAa,GAAkB,SAAS,kBAAoB,WAG3D,MAAkC,CACpC,OAAO,aAAa,CAAc,EAClC,EAAiB,IAAA,EACrB,EAEM,MAA8B,CAChC,EAAG,cAAc,IAAI,YAAY,oBAAqB,CAClD,QAAS,GACT,SAAU,EACd,CAAC,CAAC,CACN,EAEM,GAAW,GAAwB,CACrC,GAAY,MAAM,EAClB,EAAoB,EACpB,IAAM,EAAa,EAAE,EACrB,EAAgB,EAAiB,EAAI,CAAU,EAC/C,EAAwB,EAAI,YAAY,EACxC,EAAa,GACT,EACA,EACA,EAAG,QAAQ,eACX,EACA,CACI,cACA,SAAY,CACR,GAAI,IAAe,EAAsB,OACzC,IAAM,EAAU,EAChB,EAAgB,GAChB,EAAoB,EACpB,EAAwB,EAAI,MAAM,EAC9B,GAAS,EAAgB,CACjC,EACA,iBAAoB,CAKhB,GAJI,IAAe,GAAwB,IAC3C,EAAa,KACb,EAAQ,WAAa,KACrB,EAAwB,EAAI,cAAc,EACtC,CAAC,EAAkB,GAAG,OAC1B,IAAM,EAAU,KAAK,IACjB,GAAwB,GAAK,EAC7B,EACJ,EACA,GAAqB,EACrB,IAAM,EAAQ,KAAK,MAAM,KAAK,OAAO,EAAI,CAAO,EAChD,EAAiB,OAAO,eAAiB,CACrC,EAAiB,IAAA,GACjB,EAAqB,CACzB,EAAG,CAAK,CACZ,EACA,MAAQ,GAAS,EAAwB,EAAI,QAAS,CAAC,MAAI,CAAC,EAC5D,QAAU,GAAU,CACZ,IAAe,IAAsB,EAAc,EAC3D,EACA,MAAQ,GAAS,CACT,IAAe,GAAwB,IAC3C,EAAW,GACX,EAAa,KACb,EAAQ,WAAa,KACrB,EAAoB,EACpB,EAAwB,EAAI,QAAS,CAAC,MAAI,CAAC,EAC/C,CACJ,CACJ,EACA,EAAQ,WAAa,EACrB,EAAQ,cAAgB,EACxB,EAAgB,CACpB,EAEM,MAA8B,CAGhC,GAFA,OAAO,aAAa,CAAY,EAChC,EAAe,IAAA,GACX,CAAC,EAAkB,EAAG,OAC1B,IAAM,EAAY,OAAO,EAAG,QAAQ,qBAAqB,EACzD,GAAI,CAAC,OAAO,SAAS,CAAS,GAAK,GAAa,EAAG,OACnD,IAAM,EAAQ,EAAY,KAAK,IAAI,EAAI,GACvC,GAAI,GAAS,EAAG,CACZ,EAAsB,EACtB,MACJ,CACA,EAAe,OAAO,eAAiB,KAAK,EAAiB,EAAG,CAAK,CACzE,EAEM,MAAkD,CACpD,GAAI,EAAU,OAAO,QAAQ,QAAQ,IAAI,EACzC,GAAI,EAAgB,OAAO,EAC3B,IAAM,EAAa,EAAG,QAAQ,sBAmC9B,OAlCK,GAKL,EAAiB,MAAM,EAAY,CAC/B,QAAS,CACL,OAAQ,mBACR,mBAAoB,EAAG,QAAQ,gBAAkB,EACrD,CACJ,CAAC,EAAE,KAAK,KAAO,IAAa,CACxB,GAAI,CAAC,EAAS,GAAI,MAAU,MAAM,iCAAiC,EAAS,OAAO,EAAE,EACrF,IAAM,EAAU,MAAM,EAAS,KAAK,EACpC,GAAI,OAAO,EAAQ,OAAU,UAAY,OAAO,EAAQ,WAAc,SAClE,MAAU,MAAM,mDAAmD,EAKvE,OAHI,EAAiB,MACrB,EAAG,QAAQ,eAAiB,EAAQ,MACpC,EAAG,QAAQ,sBAAwB,OAAO,EAAQ,SAAS,EACpD,EAAQ,MACnB,CAAC,EAAE,MAAO,GAAmB,CACzB,EAAK,+CAAgD,CAAK,EAC1D,IAAM,EAAY,OAAO,EAAG,QAAQ,qBAAqB,EAQzD,MAPI,CAAC,OAAO,SAAS,CAAS,GAAK,GAAa,KAAK,IAAI,GACrD,EAAwB,EAAI,QAAS,CAAC,OAAK,CAAC,EACrC,OAEP,EAAkB,IAClB,EAAe,OAAO,eAAiB,KAAK,EAAiB,EAAG,GAAI,GAEjE,EAAG,QAAQ,gBAAkB,KACxC,CAAC,EAAE,YAAc,CACb,EAAiB,IACrB,CAAC,EACM,IAjCH,EAAwB,EAAI,QAAS,CAAC,OAAQ,qBAAqB,CAAC,EAC7D,QAAQ,QAAQ,IAAI,EAiCnC,EAEM,EAAmB,SAA2B,CAChD,GAAI,CAAC,EAAkB,EAAG,OAC1B,IAAM,EAAQ,MAAM,EAAkB,EAClC,GAAS,EAAkB,GAAK,CAAC,GAAU,GAAQ,CAAK,CAChE,EAEM,EAAkB,SAA2B,CAC/C,GAAI,GAAY,CAAC,EAAkB,GAAK,EAAY,OACpD,IAAM,EAAY,OAAO,EAAG,QAAQ,qBAAqB,EACnD,EAAe,EAAG,QAAQ,gBAAkB,GAI5C,EAHe,OAAO,SAAS,CAAS,GACvC,EAAY,GACZ,EAAY,KAAK,IAAI,GAAK,GAE3B,MAAM,EAAkB,EACxB,EACF,GAAS,EAAkB,GAAK,CAAC,GAAY,CAAC,GAAY,GAAQ,CAAK,CAC/E,EAEM,OAAsB,CACxB,EAAe,IAAA,GACX,KAAY,GAAkB,SAAS,kBAAoB,YAC3D,EAAgB,KAAO,IAC3B,EAAW,QAAS,GAAsB,EAAkB,MAAM,oBAAoB,CAAC,EACvF,EAAW,MAAM,EACjB,OAAO,aAAa,CAAY,EAChC,EAAe,IAAA,GACf,EAAoB,EACpB,GAAY,MAAM,EAClB,EAAa,KACb,EAAwB,EAAI,WAAW,EACvC,EAAQ,WAAa,MACzB,EAEM,EAAmB,GAAwB,CAC7C,OAAO,aAAa,CAAY,EAChC,EAAe,IAAA,GACX,KAAkB,SAAS,kBAAoB,YACnD,EAAe,OAAO,WAAW,GAAS,CAAK,EACnD,EAEM,OAAwB,CACtB,GACJ,EAAsB,CAC1B,EAEM,GAAkB,GAAuB,CAC3C,IAAM,EAAS,GAAuB,CAAK,EACtC,KACL,IAAI,EAAO,SAAW,MAAO,CACzB,EAAW,IAAI,EAAO,UAAW,EAAO,UAAU,EAClD,MACJ,CACA,EAAgB,IAAI,EAAO,SAAS,EAChC,SAAS,kBAAoB,UAAY,CAAC,IAC1C,OAAO,aAAa,CAAY,EAChC,EAAe,IAAA,GAJnB,CAMJ,EAEM,GAAmB,GAAuB,CAC5C,IAAM,EAAS,GAAuB,CAAK,EACtC,KACL,IAAI,EAAO,SAAW,MAAO,CACzB,EAAW,OAAO,EAAO,SAAS,EAClC,MACJ,CACA,EAAgB,OAAO,EAAO,SAAS,EACnC,SAAS,kBAAoB,UAAY,CAAC,GACtC,EAAgB,OAAS,GACzB,EAAgB,EAAgC,CAJxD,CAOJ,EAEM,MAAiC,CAC/B,QAAkB,GACtB,IAAI,SAAS,kBAAoB,SAAU,CACvC,GAAI,EAAgB,KAAO,EACvB,OAEJ,EAAgB,EAA4B,EAC5C,MACJ,CACA,OAAO,aAAa,CAAY,EAChC,EAAe,IAAA,GACV,GAAY,EAAqB,CAHtC,CAIJ,EAEM,EAAyB,CAC3B,gBACA,WAAY,KACZ,QAAS,EACT,SAAgB,CACR,IACJ,EAAW,GACX,OAAO,aAAa,CAAY,EAChC,OAAO,aAAa,CAAY,EAChC,EAAoB,EACpB,EAAG,oBAAoB,oBAAqB,EAAS,EACrD,SAAS,oBAAoB,mBAAoB,CAAkB,EACnE,SAAS,oBAAoB,mBAAoB,EAAc,EAC/D,SAAS,oBAAoB,oBAAqB,EAAe,EACjE,GAAY,MAAM,EACtB,EACA,kBAAmB,CACvB,EAYA,OAVA,EAAuB,EAAI,sBAAsB,EACjD,EAAG,iBAAiB,oBAAqB,EAAS,EAClD,SAAS,iBAAiB,mBAAoB,CAAkB,EAChE,SAAS,iBAAiB,mBAAoB,EAAc,EAC5D,SAAS,iBAAiB,oBAAqB,EAAe,EAC1D,EAAkB,EAClB,EAAqB,EAErB,EAAwB,EAAI,WAAW,EAEpC,CACX,EAEM,GAAkB,GAAwC,CACxD,OAAO,EAAe,WAAc,YAExC,EAAe,UAAU,aAAc,EAAI,CAAC,cAAa,CAAC,aAAa,CACnE,GAAI,CAAC,EAAY,OAEjB,IAAM,EAAS,aAAc,YAAc,EAAG,QAAQ,eAAiB,GACvE,GAAI,EAAE,aAAc,cAAgB,CAAC,EAAQ,CACzC,EAAK,sDAAsD,EAC3D,MACJ,CACA,IAAM,EAAM,GAAoB,CAAE,EAC5B,EAAW,EAAkB,IAAI,CAAG,EACpC,EAAgB,EAAiB,EAAI,CAAU,EACrD,GAAI,GAAU,gBAAkB,EAAe,CAC3C,EAAG,QAAQ,cAAgB,EAAS,QAAQ,QAAQ,eAAiB,aACrE,EAAuB,EAAI,sBAAsB,EACjD,mBAAqB,EAAS,kBAAkB,CAAC,EACjD,MACJ,CAEA,GAAI,CAAC,EAAG,aAAe,OAAO,GAAQ,SAAU,CACvC,GAA6B,IAAI,CAAG,IACrC,GAA6B,IAAI,CAAG,EACpC,mBAAqB,CACjB,GAA6B,OAAO,CAAG,EACvC,IAAM,EAAO,SAAS,eAAe,CAAG,EACxC,GAAI,CAAC,EAAM,OACX,IAAM,EAAU,EAAkB,IAAI,CAAG,EACnC,EAAoB,EAAiB,EAAM,CAAU,EAC3D,GAAI,GAAS,gBAAkB,EAAmB,CAC9C,EAAQ,kBAAkB,EAC1B,MACJ,CACA,GAAS,QAAQ,EACjB,EAAkB,IAAI,EAAK,GAAoB,EAAgB,EAAM,CAAU,CAAC,CACpF,CAAC,GAEL,MACJ,CAEA,GAAU,QAAQ,EAClB,EAAkB,IAAI,EAAK,GAAoB,EAAgB,EAAI,CAAU,CAAC,EAE9E,MAAc,CACV,IAAM,EAAU,EAAkB,IAAI,CAAG,EACrC,GAAS,UAAY,IACzB,EAAQ,QAAQ,EAChB,EAAkB,OAAO,CAAG,EAChC,CAAC,CACL,CAAC,CACL,EAEM,GAA0B,GAAiE,CAC7F,EAAsB,CAC1B,EAEM,GACF,GACO,CACP,EAAuB,CAC3B,EC30BM,GAAiB,uBACjB,GAAwB,mBACxB,GAAoB,uBACpB,GAAkB,qBAClB,GAA0B,6BAC1B,EAAyB,0CACzB,GAA2B,iBAC3B,GAA4B,kBAC5B,GAAmC,yBACnC,GAA8B,oBAC9B,GAAqB,0BACrB,GAAmB,oBACnB,GAAoB,0BACpB,EAAmB,oCACnB,GAAiB,sBAGjB,GAAuB,IAAI,IAAmB,CAAC,KAAK,CAAC,EAEvD,EAAqC,KACrC,GAAuE,KAErE,GAAmB,GAAqD,CAC1E,IAAM,GAAS,GAAU,OAAO,YAAY,EAE5C,OADI,IAAU,QAAU,IAAU,OAAS,IAAU,SAAW,IAAU,SAAiB,EACpF,KACX,EAEM,IAAe,EAAoC,EAAa,IAA+B,CACjG,GAAI,aAAkB,SAAU,CAC5B,EAAO,OAAO,EAAK,CAAK,EACxB,MACJ,CACA,EAAO,OAAO,EAAK,aAAiB,KAAO,EAAM,KAAO,OAAO,CAAK,CAAC,CACzE,EAEM,IAAY,EAAoC,EAAa,IAAyB,CACxF,GAAI,MAAM,QAAQ,CAAK,EAAG,CACtB,EAAM,QAAS,GAAS,GAAS,EAAQ,EAAK,CAAI,CAAC,EACnD,MACJ,CACI,GAAiC,MACrC,GAAY,EAAQ,EAAK,aAAiB,KAAO,EAAQ,OAAO,CAAK,CAAC,CAC1E,EAEM,IAAgB,EAAoC,IAA0C,CAChG,OAAO,QAAQ,CAAM,EAAE,SAAS,CAAC,EAAK,KAAW,GAAS,EAAQ,EAAK,CAAK,CAAC,CACjF,EAEM,IAAe,EAAoC,IAA0C,CAC1F,KACL,IAAI,aAAiB,UAAY,aAAiB,gBAAiB,CAC/D,IAAK,GAAM,CAAC,EAAK,KAAU,EAAM,QAAQ,EAAG,GAAY,EAAQ,EAAK,CAAK,EAC1E,MACJ,CACA,GAAa,EAAQ,CAAK,CAD1B,CAEJ,EAEM,IAAuB,EAAsC,IAAmC,CAClG,IAAM,EAAU,IAAI,QAAQ,CAAW,EACvC,EAAQ,IAAI,GAAgB,MAAM,EAElC,IAAM,EAAO,SAAS,cAA+B,EAAkB,GAAG,QAO1E,OANI,GAAM,EAAQ,IAAI,cAAe,CAAI,EAErC,aAAgB,iBAAmB,CAAC,EAAQ,IAAI,cAAc,GAC9D,EAAQ,IAAI,eAAgB,CAAgB,EAGzC,CACX,EAEM,IAAU,EAA+B,EAAmC,IAAuC,CACrH,GAAI,EAAK,OAAO,IAAI,IAAI,EAAK,SAAS,OAAO,EAE7C,GAAI,aAAkB,gBAAiB,CACnC,IAAM,EAAS,GAAW,aAAa,YAAY,GAAK,EAAO,aAAa,QAAQ,GAAK,OAAO,SAAS,KACzG,OAAO,IAAI,IAAI,EAAQ,SAAS,OAAO,CAC3C,CAIA,OAFI,aAAkB,kBAA0B,IAAI,IAAI,EAAO,KAAM,SAAS,OAAO,EAE9E,IAAI,IAAI,OAAO,SAAS,IAAI,CACvC,EAEM,IAAe,EAAuB,IACxC,GAAW,aAAa,aAAa,GAAK,EAAK,SAAW,EAGxD,GAAsB,GAA2D,CACnF,GAAI,EAAE,aAAqB,mBAAqB,aAAqB,kBAAmB,OAAO,KAC/F,IAAM,EAAO,EAAU,aAAa,MAAM,EAE1C,OADK,EACE,CAAC,EAAM,EAAU,KAAK,EADX,IAEtB,EAEM,IAAe,EAAuB,IAA4C,CACpF,IAAM,EAAU,IAAI,SAAS,CAAI,EAC3B,EAAO,GAAmB,CAAS,EAEzC,OADI,GAAM,EAAQ,OAAO,GAAG,CAAI,EACzB,CACX,EAEM,GAAc,GAAyD,CACzE,IAAM,EAAS,IAAI,gBACnB,IAAK,GAAM,CAAC,EAAK,KAAU,EAAQ,QAAQ,EACnC,aAAiB,KACjB,EAAO,OAAO,EAAK,EAAM,IAAI,EAE7B,EAAO,OAAO,EAAK,CAAK,EAGhC,OAAO,CACX,EAEM,IAAmB,EAA+B,IAAoH,CACxK,GAAI,IAAS,IAAA,GAAW,MAAO,CAAC,QAAS,EAAS,SAAU,EAAK,EACjE,GAAI,aAAgB,gBAAiB,MAAO,CAAC,QAAS,IAAI,SAAS,CAAI,EAAG,SAAU,EAAI,EACxF,GAAI,aAAgB,UAAY,aAAgB,iBAAmB,OAAO,GAAS,UAAY,aAAgB,MAAQ,aAAgB,YACnI,MAAO,CAAC,QAAS,EAAM,SAAU,EAAI,EAEzC,IAAM,EAAS,IAAI,gBAEnB,OADA,GAAa,EAAQ,CAAI,EAClB,CAAC,QAAS,EAAQ,SAAU,EAAI,CAC3C,EAEM,IACF,EACA,IAC+C,CAC/C,GAAI,CAAC,EAAO,OAAO,EAEnB,GAAI,aAAmB,UAAY,aAAmB,gBAElD,OADA,GAAY,EAAS,CAAK,EACnB,EAGX,IAAM,EAAS,IAAI,gBAGnB,OAFI,OAAO,GAAY,UAAU,EAAO,OAAO,OAAQ,CAAO,EAC9D,GAAY,EAAQ,CAAK,EAClB,CACX,EAEM,IACF,EACA,IAEI,aAAkB,gBACX,CACH,QAAS,GAAY,EAAQ,CAAS,EACtC,QAAS,GAAY,EAAQ,CAAS,CAC1C,EAEG,CAAC,QAAS,IAAI,gBAAmB,QAAS,CAAgB,EAG/D,IAAiB,EAAmC,EAAkC,IACpF,EAAqB,GAAgB,CAAY,EACjD,aAAkB,gBACX,GAAgB,GAAW,aAAa,YAAY,GAAK,EAAO,aAAa,QAAQ,CAAC,EAE1F,MAGL,IAAkB,EAA+B,EAA0B,CAAC,IAAuB,CACrG,IAAM,EAAS,EAAQ,OACjB,EAAY,EAAQ,WAAa,KACjC,EAAS,GAAc,EAAQ,EAAQ,OAAQ,CAAS,EACxD,EAAc,GAAO,EAAK,EAAQ,CAAS,EAC3C,EAAU,GAAe,EAAQ,CAAS,EAC1C,EAAc,GAAgB,EAAQ,KAAM,EAAQ,OAAO,EAC3D,EAAU,GAAa,EAAY,QAAS,EAAQ,KAAK,EAEzD,EAAoB,CACtB,SACA,GAAI,EAAQ,MAAQ,CAAC,MAAO,EAAQ,KAAK,EAAI,CAAC,CAClD,EACI,EAAwB,KAmB5B,OAjBI,GAAqB,IAAI,CAAM,EAC3B,aAAmB,UAAY,aAAmB,gBAClD,GAAW,CAAO,EAAE,SAAS,EAAO,IAAQ,EAAY,aAAa,OAAO,EAAK,CAAK,CAAC,EAChF,OAAO,GAAY,UAC1B,EAAY,aAAa,OAAO,OAAQ,CAAO,EAEhD,AAKH,EALO,aAAmB,WAAa,EAAY,UAAY,EAAQ,UAAY,IAC5E,EACA,aAAmB,SACnB,GAAW,CAAO,EAElB,EAGX,EAAK,QAAU,GAAoB,EAAQ,QAAS,CAAI,EACpD,GAAS,OAA4B,EAAK,KAAO,GAE9C,CAAC,IAAK,EAAa,SAAQ,MAAI,CAC1C,EAEM,GAAkB,GACpB,GAAQ,YAAc,EAAS,SAG7B,IACF,EACA,EACA,EAAkC,CAAC,IACG,IAAI,YAAoC,EAAM,CACpF,QAAS,GACT,SAAU,GACV,WAAY,EAAQ,YAAc,GAClC,QACJ,CAAC,EAEK,GAAqB,EAAc,EAA6B,EAAgC,IAClG,GAAe,CAAM,EAAE,cAAc,GAAe,EAAM,EAAQ,CAAO,CAAC,EAGxE,EAAgB,IAAI,QAEpB,GAAc,GAAsC,CACtD,GAAI,CAAC,EAAQ,OACb,IAAM,EAAQ,EAAc,IAAI,CAAM,GAAK,EAC3C,EAAc,IAAI,EAAQ,EAAQ,CAAC,EACnC,EAAO,aAAa,YAAa,MAAM,EACvC,EAAO,aAAa,GAAmB,MAAM,CACjD,EAEM,GAAgB,GAAsC,CACxD,GAAI,CAAC,EAAQ,OACb,IAAM,GAAa,EAAc,IAAI,CAAM,GAAK,GAAK,EACrD,GAAI,EAAY,EAAG,CACf,EAAc,IAAI,EAAQ,CAAS,EACnC,MACJ,CACA,EAAc,OAAO,CAAM,EAC3B,EAAO,gBAAgB,WAAW,EAClC,EAAO,gBAAgB,EAAiB,CAC5C,EAEM,GAAiB,GACnB,EAAS,QAAQ,IAAI,cAAc,GAAG,YAAY,EAAE,SAAS,EAAgB,GAAK,GAGhF,GAAiB,KAAO,IAAkE,CAC5F,IAAM,EAAW,EAAS,QAAQ,IAAI,EAAe,EACrD,GAAI,EAAU,CACV,IAAM,EAAU,EAAS,QAAQ,IAAI,EAAuB,GAAK,OAKjE,OAJI,IAAY,QAAU,IAAY,QAAU,IAAY,WACxD,EAAK,2CAA4C,CAAO,EACjD,CAAC,WAAU,KAAM,QAAS,IAAK,EAAS,GAAG,GAE/C,CAAC,WAAU,KAAM,WAAY,IAAK,EAAS,IAAK,WAAY,CAAC,UAAS,IAAK,CAAQ,CAAC,CAC/F,CAaA,OAXI,EAAS,SAAW,KACjB,EAAS,OAAS,MAClB,EAAS,QAAQ,IAAI,uBAAuB,IAAM,QAChD,CAAC,WAAU,KAAM,QAAS,IAAK,EAAS,GAAG,EAEhD,EAAS,YAAc,CAAC,GAAc,CAAQ,GAC9C,OAAO,SAAS,OAAO,EAAS,GAAG,EAC5B,CAAC,WAAU,KAAM,WAAY,IAAK,EAAS,GAAG,IAGzD,EAAK,2CAA4C,CAAQ,EAClD,CAAC,WAAU,KAAM,QAAS,IAAK,EAAS,GAAG,EACtD,EAGM,GAAkB,IAAI,QAEtB,EAAqB,GAAuC,CAC9D,IAAM,EAAQ,EAAO,QAAQ,eACvB,EAAY,OAAO,EAAO,QAAQ,qBAAqB,EAG7D,MAFI,CAAC,GACD,OAAO,SAAS,CAAS,GAAK,EAAY,GAAK,GAAa,KAAK,IAAI,EAAU,KAC5E,CACX,EAEM,OAA6C,CAC/C,IAAM,EAAS,SAAS,cAA2B,CAAsB,EACnE,EAAQ,EAAS,EAAkB,CAAM,EAAI,KAEnD,MADI,CAAC,GAAU,CAAC,GAAS,EAAO,QAAQ,gBAAkB,OAAe,KAClE,CAAC,OAAK,CACjB,EAEM,GAAiB,GAAgC,CACnD,IAAM,EAAa,OAAO,EAAO,QAAQ,eAAe,EACxD,OAAO,OAAO,SAAS,CAAU,GAAK,GAAc,EAAI,EAAa,GACzE,EAEM,GAAuB,GAAoD,CAC7E,IAAM,EAAS,SAAS,cAA2B,CAAsB,EACnE,EAAQ,EAAS,EAAkB,CAAM,EAAI,KACnD,GAAI,CAAC,EAAQ,OAAO,QAAQ,QAAQ,IAAI,EACxC,GAAI,GAAS,EAAO,QAAQ,gBAAkB,OAAQ,OAAO,QAAQ,QAAQ,CAAC,OAAK,CAAC,EACpF,GACI,EAAO,QAAQ,gBAAkB,SAC9B,EAAO,QAAQ,gBAAkB,gBACjC,EAAO,QACZ,OAAO,QAAQ,QAAQ,IAAI,EAE7B,IAAM,EAAoB,GAAgB,IAAI,CAAM,EAC9C,EAAwC,GAAqB,IAAI,QAA4B,GAAY,CAC3G,IAAM,EAAU,GAAmC,CAC/C,OAAO,aAAa,CAAS,EAC7B,EAAO,oBAAoB,GAA0B,CAAM,EAC3D,EAAO,oBAAoB,GAA2B,CAAO,EAC7D,EAAO,oBAAoB,GAAkC,CAAO,EACpE,EAAQ,CAAK,CACjB,EACM,MAAqB,CACvB,IAAM,EAAe,EAAkB,CAAM,EAC7C,EAAO,EAAe,CAAC,MAAO,CAAY,EAAI,IAAI,CACtD,EACM,MAAsB,EAAO,IAAI,EACjC,EAAY,OAAO,WAAW,EAAS,GAAc,CAAM,CAAC,EAElE,EAAO,iBAAiB,GAA0B,EAAQ,CAAC,KAAM,EAAI,CAAC,EACtE,EAAO,iBAAiB,GAA2B,EAAS,CAAC,KAAM,EAAI,CAAC,EACxE,EAAO,iBAAiB,GAAkC,EAAS,CAAC,KAAM,EAAI,CAAC,CACnF,CAAC,EAAE,YAAc,CACb,GAAgB,OAAO,CAAM,CACjC,CAAC,EAGD,OAFK,GAAmB,GAAgB,IAAI,EAAQ,CAAS,EAEtD,IAAI,QAAS,GAAY,CAC5B,IAAM,MAAsB,EAAQ,IAAI,EACxC,EAAO,iBAAiB,QAAS,EAAS,CAAC,KAAM,EAAI,CAAC,EACtD,EAAe,KAAM,GAAW,CAC5B,EAAO,oBAAoB,QAAS,CAAO,EAC3C,EAAQ,CAAM,CAClB,CAAC,CACL,CAAC,CACL,EAEM,GAAsB,KAAO,IAAoD,CACnF,IAAM,EAAQ,GAAkB,EAChC,GAAI,EAAO,OAAO,EAElB,IAAM,EAAS,SAAS,cAA2B,CAAsB,EACzE,GAAI,CAAC,EAAQ,OAAO,KACpB,GAAI,CAAC,EAAkB,CAAM,EAAG,CAC5B,EAAO,cAAc,IAAI,YAAY,EAA2B,CAAC,EACjE,IAAM,EAAY,GAAkB,EACpC,GAAI,EAAW,OAAO,CAC1B,CACA,OAAO,GAAoB,CAAM,CACrC,EAEM,IAAqB,EAA6B,IAA8D,CAClH,GAAI,CAAC,EACD,MAAO,CACH,OAAQ,EAAW,OACnB,YAAe,IAAA,EACnB,EAGJ,IAAM,MAAoB,EAAW,MAAM,EAAe,MAAM,EAOhE,OANI,EAAe,QACf,EAAM,EAEN,EAAe,iBAAiB,QAAS,EAAO,CAAC,KAAM,EAAI,CAAC,EAGzD,CACH,OAAQ,EAAW,OACnB,YAAe,EAAe,oBAAoB,QAAS,CAAK,CACpE,CACJ,EAEM,IAAgB,EAAgB,IAClC,EAAO,SACH,aAAiB,cAAgB,EAAM,OAAS,cAChD,aAAiB,OAAS,EAAM,OAAS,aAG3C,GAAoB,MACtB,EACA,EACA,EAA0B,CAAC,IACF,CACzB,IAAM,EAAS,EAAQ,OACjB,EAAa,IAAI,gBACjB,EAAY,EAAQ,WAAa,OAAO,WAAW,EACnD,EAAW,GAAe,EAAK,CAAO,EACtC,EAAa,GAAkB,EAAY,EAAQ,MAAM,EACzD,EAAS,EAAW,OAC1B,EAAS,KAAK,OAAS,EACvB,EAAU,KAAK,QAAoB,IAAI,GAAmB,CAAS,EACnE,IAAM,EAAe,GAAkB,GAAK,MAAM,GAAoB,CAAM,EAC5E,GAAI,EAAO,QAEP,OADA,EAAW,QAAQ,EACZ,CAAC,YAAW,SAAU,KAAM,KAAM,UAAW,IAAK,EAAS,IAAI,SAAS,CAAC,EAEpF,GAAI,CAAC,EAED,OADA,EAAW,QAAQ,EACZ,CAAC,YAAW,SAAU,KAAM,KAAM,EAAO,QAAU,UAAY,cAAe,IAAK,EAAS,IAAI,SAAS,CAAC,EAErH,EAAU,KAAK,QAAoB,IAAI,GAAuB,EAAa,KAAK,EAEhF,IAAM,EAAiC,CACnC,OAAQ,GAAU,SAClB,IAAK,EAAS,IAAI,SAAS,EAC3B,OAAQ,EAAS,OACjB,YAAa,EAAS,KACtB,YACA,aACA,QACJ,EAEA,GAAI,CAAC,EAAkB,oBAAqB,EAAQ,EAAQ,CAAC,WAAY,EAAI,CAAC,EAE1E,OADA,EAAW,QAAQ,EACZ,CAAC,YAAW,SAAU,KAAM,KAAM,YAAa,IAAK,EAAS,IAAI,SAAS,CAAC,EAGtF,GAAW,CAAM,EACjB,EAAkB,mBAAoB,EAAQ,CAAM,EAEpD,GAAI,CACA,IAAM,EAAW,MAAM,MAAM,EAAS,IAAI,SAAS,EAAG,EAAS,IAAI,EAC7D,EAAS,MAAM,GAAe,CAAQ,EAC5C,EAAO,SAAW,EAClB,EAAO,aAAe,EAAO,KAExB,EAAS,IAAM,EAAO,OAAS,SAAY,EAAO,OAAS,WAC5D,EAAkB,qBAAsB,EAAQ,CAAM,EAEtD,EAAkB,mBAAoB,EAAQ,CAAM,EAGxD,IAAM,EAAgB,CAAC,GAAG,EAAQ,WAAS,EAE3C,OADI,EAAc,YAAY,KAA0B,CAAa,EAC9D,CACX,OAAS,EAAO,CACZ,GAAI,GAAa,EAAO,CAAM,EAE1B,MADA,GAAO,aAAe,UACf,CAAC,YAAW,SAAU,KAAM,KAAM,UAAW,IAAK,EAAS,IAAI,SAAS,CAAC,EAKpF,KAFA,GAAO,MAAQ,EACf,EAAkB,mBAAoB,EAAQ,CAAM,EAC9C,CACV,QAAU,CACN,EAAW,QAAQ,EACnB,GAAa,CAAM,EACnB,EAAkB,oBAAqB,EAAQ,CAAM,CACzD,CACJ,EAEM,OAAoC,CACtC,GAAI,CAAC,EACD,MAAU,MAAM,8DAA8D,EAElF,OAAO,CACX,EAEM,GAAW,EAAmB,EAA0B,CAAC,IAC3D,GAAkB,GAAc,EAAG,EAAK,CAAO,EAG7C,IAAO,EAAmB,EAA0B,CAAC,IACvD,EAAQ,EAAK,CAAC,GAAG,EAAS,OAAQ,KAAK,CAAC,EAGtC,IAAQ,EAAmB,EAA0B,CAAC,IACxD,EAAQ,EAAK,CAAC,GAAG,EAAS,OAAQ,MAAM,CAAC,EAGvC,IAAO,EAAmB,EAA0B,CAAC,IACvD,EAAQ,EAAK,CAAC,GAAG,EAAS,OAAQ,KAAK,CAAC,EAGtC,IAAO,EAAmB,EAA0B,CAAC,IACvD,EAAQ,EAAK,CAAC,GAAG,EAAS,OAAQ,QAAQ,CAAC,EAGzC,GAA0B,GAAuD,CACnF,EAAgB,CACpB,EAEM,GAA8B,GAA+D,CAC/F,GAA0B,CAC9B,EC5eM,GAAoB,YACpB,GAA4B,+BAC5B,GAA0B,GAC1B,GAA0B,IAE5B,GAAa,GACb,EAA0C,KAC1C,EAAe,EACf,GAAqB,GACrB,EAAiC,KAC/B,EAAkB,IAAI,IACtB,EAAsB,IAAI,IAC1B,EAAoB,IAAI,IAExB,MAA6B,OAAO,WAAW,EAE/C,QAAuC,CACzC,WAAY,CAAC,EACb,OAAQ,CAAC,EAAG,EAAG,EAAG,CAAC,CACvB,GAEM,GAAsB,GACP,EAAQ,aAAa,4BAA4B,GAAG,KAAK,GAEnE,EAAQ,IAAM,KAGnB,OAAmC,CACrC,IAAM,EAA6C,CAAC,EAMpD,OALA,SAAS,iBAA8B,EAAyB,EAAE,QAAS,GAAY,CACnF,IAAM,EAAM,GAAmB,CAAO,EACjC,IACL,EAAW,GAAO,CAAC,EAAG,EAAQ,WAAY,EAAG,EAAQ,SAAS,EAClE,CAAC,EACM,CACH,aACA,OAAQ,CAAC,EAAG,OAAO,QAAS,EAAG,OAAO,OAAO,CACjD,CACJ,EAEM,EAAqB,GAAgD,CACvE,GAAI,CAAC,EAAS,CAAK,EAAG,OAAO,KAC7B,IAAM,EAAU,EAAM,IACtB,GAAI,CAAC,EAAS,CAAO,EAAG,OAAO,KAC/B,IAAM,EAAW,EAAQ,SAQzB,MAPI,CAAC,EAAS,CAAQ,GAElB,OAAO,EAAS,IAAO,UACpB,OAAO,EAAS,OAAU,UAC1B,OAAO,EAAS,KAAQ,UACxB,CAAC,EAAS,EAAS,MAAM,EACvB,KACF,CACX,EAEM,GAAsB,GAA4D,CACpF,IAAM,EAAQ,EAAS,OAAO,QAAQ,KAAK,EAAI,OAAO,QAAQ,MAAQ,CAAC,EACjE,EAAY,EAAS,EAAA,SAAwB,EAC7C,EAAM,IACN,CAAC,EACP,MAAO,CACH,GAAG,GACF,IAAoB,CACjB,GAAG,EACH,UACJ,CACJ,CACJ,EAEM,GAAgB,EAAgC,EAAoB,EAAS,MAAc,CAC7F,OAAO,QAAQ,aAAa,GAAmB,CAAQ,EAAG,GAAI,CAAG,CACrE,EAEM,OAAgC,CAClC,IAAM,EAAW,EAAkB,OAAO,QAAQ,KAAK,EACvD,GAAI,CAAC,EAAU,OACf,IAAM,EAAS,GAAc,EAC7B,EAAgB,IAAI,EAAS,GAAI,CAAM,EACvC,EAAa,CAAC,GAAG,EAAU,QAAM,CAAC,CACtC,EAEM,OAAiC,CAC/B,IAAoB,OACpB,qBAAqB,CAAe,EACpC,EAAkB,MAEtB,GAAkB,CACtB,EAEM,OAAoC,CACtC,IAAM,EAAW,EAAkB,OAAO,QAAQ,KAAK,EAClD,IACL,EAAgB,IAAI,EAAS,GAAI,GAAc,CAAC,EAC5C,IAAoB,OACxB,EAAkB,0BAA4B,CAC1C,EAAkB,KAClB,IAAM,EAAU,EAAkB,OAAO,QAAQ,KAAK,EACtD,GAAI,CAAC,EAAS,OACd,IAAM,EAAS,EAAgB,IAAI,EAAQ,EAAE,EACzC,GAAQ,EAAa,CAAC,GAAG,EAAS,QAAM,CAAC,CACjD,CAAC,GACL,EAEM,GAAiB,GAA8B,CACjD,0BAA4B,CACxB,OAAO,SAAS,CAAC,KAAM,EAAO,OAAO,EAAG,IAAK,EAAO,OAAO,EAAG,SAAU,SAAS,CAAC,EAClF,SAAS,iBAA8B,EAAyB,EAAE,QAAS,GAAY,CACnF,IAAM,EAAM,GAAmB,CAAO,EAChC,EAAW,EAAM,EAAO,WAAW,GAAO,IAAA,GAChD,EAAQ,SAAS,CACb,KAAM,GAAU,GAAK,EACrB,IAAK,GAAU,GAAK,EACpB,SAAU,SACd,CAAC,CACL,CAAC,CACL,CAAC,CACL,EAEM,GACF,EACA,EACA,EAAa,KACH,CACV,IAAM,EAAS,EAAQ,QAAQ,YAAc,EAAQ,OAAS,SAC9D,OAAO,EAAO,cAAc,IAAI,YAA8B,EAAM,CAChE,QAAS,GACT,aACA,SAAU,GACV,OAAQ,CACJ,QAAS,EAAQ,QACjB,SACA,IAAK,EAAQ,WACjB,CACJ,CAAC,CAAC,CACN,EAEM,GAAqB,GAAqC,CAE5D,IADA,EAAkB,IAAI,EAAQ,UAAW,CAAO,EACzC,EAAkB,KAAO,IAAyB,CACrD,IAAM,EAAS,EAAkB,KAAK,EAAE,KAAK,EAAE,MAC/C,GAAI,CAAC,EAAQ,MACb,EAAkB,OAAO,CAAM,CACnC,CACJ,EAEM,GAAmB,GAA4B,CAEjD,IADA,EAAoB,IAAI,CAAS,EAC1B,EAAoB,KAAO,IAAyB,CACvD,IAAM,EAAS,EAAoB,OAAO,EAAE,KAAK,EAAE,MACnD,GAAI,CAAC,EAAQ,MACb,EAAoB,OAAO,CAAM,CACrC,CACJ,EAEM,OAA2B,CACxB,AAGL,KAFA,GAAgB,EAAc,SAAS,EACvC,EAAc,WAAW,MAAM,0CAA0C,EACzD,KACpB,EAEM,OAAwC,CAC1C,GAAa,EACb,EAAkB,QAAS,GAAY,GAAgB,EAAQ,SAAS,CAAC,EACzE,EAAkB,MAAM,CAC5B,EAEM,EAAkB,GAAmB,CACvC,OAAO,SAAS,OAAO,EAAI,IAAI,CACnC,EAEM,GAAe,GAA8B,CAC/C,IAAM,EAAM,IAAI,IAAI,EAAO,SAAS,OAAO,EAC3C,OAAO,EAAI,SAAW,OAAO,SAAS,OAAS,EAAM,IACzD,EAEM,GAAmB,GAAqD,CAC1E,GAAmB,EACnB,IAAM,EAAiC,CACnC,GAAI,EAAa,EACjB,MAAO,EAAe,EACtB,OAAQ,GAAiB,EACzB,IAAK,EAAQ,YAAY,IAC7B,EAIA,MAHA,GAAe,EAAS,MACxB,OAAO,QAAQ,UAAU,GAAmB,CAAQ,EAAG,GAAI,EAAQ,WAAW,EAC9E,EAAQ,QAAU,EAAS,GACpB,CACX,EAEM,GAAsB,GAAqD,CAC7E,IAAM,EAAiC,CACnC,GAAI,EAAa,EACjB,MAAO,EACP,OAAQ,GAAiB,EACzB,IAAK,EAAQ,YAAY,IAC7B,EAGA,OAFA,EAAa,EAAU,EAAQ,WAAW,EAC1C,EAAQ,QAAU,EAAS,GACpB,CACX,EAEM,GAAsB,GAAwC,CAChE,GAAI,EAAQ,cAAgB,UAAW,MAAO,GAC9C,GAAI,EAAQ,cAAgB,OAAQ,MAAO,GAC3C,IAAM,EAAU,IAAI,IAAI,OAAO,SAAS,IAAI,EAC5C,OAAO,EAAQ,SAAW,EAAQ,YAAY,QAAU,EAAQ,WAAa,EAAQ,YAAY,QACrG,EAEM,IAAe,EAA4B,IAAiC,CAE1E,GAAQ,OAAS,WACd,GAAQ,OAAS,aACjB,GAAQ,OAAS,YAExB,EAAe,EAAQ,WAAW,CACtC,EAEM,IACF,EACA,EACA,IACO,CACP,GAAI,EAAoB,IAAI,EAAQ,SAAS,EAAG,OAChD,GAAI,EAAO,OAAS,QAAS,CACzB,GAAY,EAAS,CAAM,EAC3B,MACJ,CAEA,IAAM,EAAmB,IACrB,GAAmB,CAAO,EAAI,GAAmB,CAAO,EAAI,GAAgB,CAAO,GAEvF,GAAI,GAAiB,EAAQ,YAAY,OAAS,EAAc,IAAK,CACjE,IAAM,EAAa,CAAC,GAAG,EAAe,IAAK,EAAQ,YAAY,IAAI,EACnE,EAAa,EAAY,EAAQ,WAAW,EAC5C,EAAQ,QAAU,EAAW,EACjC,CACA,GAAc,EAAiB,MAAM,EACrC,EAAmB,eAAgB,CAAO,CAC9C,EAEM,IACF,EACA,EACA,IAQgB,CAChB,IAAM,EAA6B,CAC/B,WAAY,IAAI,gBAChB,cACA,QAAS,EAAQ,eAAe,IAAM,KACtC,QAAS,EAAQ,QACjB,YAAa,EAAQ,aAAe,OACpC,UAAW,EAAa,EACxB,GAAI,EAAQ,eAAiB,CAAC,eAAgB,EAAQ,cAAc,EAAI,CAAC,EACzE,GAAI,EAAQ,OAAS,CAAC,OAAQ,EAAQ,MAAM,EAAI,CAAC,CACrD,EAEA,GAAI,EAAQ,YAAc,IAAS,CAAC,EAAmB,cAAe,EAAS,EAAI,EAAG,OAAO,QAAQ,QAAQ,EAC7G,GAA0B,EAC1B,EAAgB,EAChB,EAAmB,gBAAiB,CAAO,EAE3C,IAAM,EAAU,IAAI,QAAQ,EAAQ,gBAAgB,OAAO,EAC3D,EAAQ,IAAI,uBAAwB,EAAQ,QAAU,UAAY,UAAU,EAC5E,IAAI,EAAiB,GACf,EAAqB,SAAoC,CAC3D,IAAM,EAAiB,EAAiB,EAAQ,eAAiB,IAAA,GAC3D,EAAS,EAAiB,EAAQ,OAAS,IAAA,GACjD,EAAiB,GACjB,IAAM,EAAS,MAAM,GAAkB,EAAgB,EAAQ,YAAa,CACxE,GAAG,EACH,UACA,OAAQ,MACR,UAAW,EAAQ,UACnB,OAAQ,EAAQ,WAAW,OAC3B,GAAI,EAAS,CAAC,QAAM,EAAI,CAAC,CAC7B,CAAC,EAED,GADA,EAAQ,YAAc,IAAI,IAAI,EAAO,IAAK,SAAS,OAAO,EACtD,CAAC,EAAO,WAAY,OAAO,EAE/B,IAAM,EAAa,GAAY,EAAO,WAAW,GAAG,EAOpD,OANK,GAIL,EAAQ,YAAc,EAClB,EAAO,WAAW,UAAY,SAAQ,EAAQ,YAAc,EAAO,WAAW,SAC3E,EAAmB,IALtB,EAAe,IAAI,IAAI,EAAO,WAAW,IAAK,SAAS,OAAO,CAAC,EACxD,CAAC,GAAG,EAAQ,KAAM,UAAU,EAK3C,EAEA,OAAO,EAAmB,EAAE,KAAM,GAAW,CACrC,GAAe,YAAc,EAAQ,WAAa,CAAC,EAAkB,IAAI,EAAQ,SAAS,GAC9F,GAAc,EAAS,EAAQ,EAAQ,aAAa,CACxD,CAAC,EAAE,MAAO,GAAmB,CACpB,EAAQ,WAAW,OAAO,UAC3B,EAAK,4CAA6C,CAAK,EACvD,GAAY,CAAO,EAE3B,CAAC,EAAE,YAAc,CACT,GAAe,YAAc,EAAQ,YAAW,EAAgB,MAC/D,EAAoB,IAAI,EAAQ,SAAS,GAAG,GAAkB,CAAO,CAC9E,CAAC,CACL,EAEM,OAAgC,CAClC,IAAM,EAAW,EAAkB,OAAO,QAAQ,KAAK,EACnD,EACA,EAAe,EAAS,MAQxB,EAAa,CALT,GAAI,EAAa,EACjB,MAAO,EACP,OAAQ,GAAc,EACtB,IAAK,OAAO,SAAS,IAEZ,CAAQ,EAErB,sBAAuB,OAAO,UAAS,OAAO,QAAQ,kBAAoB,SAClF,EAEM,GAA6B,GAAuD,CAClF,KACJ,GAAa,GACb,GAAkB,EAClB,GAAwB,GAAc,CAAC,GAAa,CAAC,EAAoB,IAAI,CAAS,CAAC,EACvF,IAAyB,EAAW,IAChC,EAAQ,QAAQ,kBAAkB,GAC/B,GACC,IAEI,GAAe,YAAc,GAC1B,EAAkB,IAAI,CAAS,GAG7C,EACD,GAA4B,GAAW,CACnC,GAAI,CAAC,EAAO,WAAY,MAAO,GAE/B,GADI,EAAoB,IAAI,EAAO,SAAS,GACxC,GAAe,YAAc,EAAO,UAAW,MAAO,GAC1D,IAAM,EAAc,GAAY,EAAO,WAAW,GAAG,EASrD,OARK,GAIL,GAAkB,EAAgC,EAAa,CAC3D,QAAS,GACT,YAAa,EAAO,WAAW,OACnC,CAAC,EACM,KAPH,EAAe,IAAI,IAAI,EAAO,WAAW,IAAK,SAAS,OAAO,CAAC,EACxD,GAOf,CAAC,EAED,OAAO,iBAAiB,SAAU,GAAuB,CAAC,QAAS,EAAI,CAAC,EACxE,SAAS,iBAAiB,SAAU,GAAuB,CAAC,QAAS,GAAM,QAAS,EAAI,CAAC,EACzF,OAAO,iBAAiB,WAAY,EAAkB,EACtD,OAAO,iBAAiB,WAAa,GAAU,CAC3C,GAAI,GAAoB,CACpB,GAAqB,GACrB,MACJ,CACA,IAAM,EAAgB,EAAkB,EAAM,KAAK,EACnD,GAAI,CAAC,EAAe,CAChB,EAAe,IAAI,IAAI,OAAO,SAAS,IAAI,CAAC,EAC5C,MACJ,CACA,IAAM,EAAiB,EAAgB,IAAI,EAAc,EAAE,EACrD,EAAiB,EACjB,CAAC,GAAG,EAAe,OAAQ,CAAc,EACzC,EACA,EAAc,GAAY,EAAc,GAAG,EACjD,GAAI,CAAC,GAAe,EAAY,OAAS,OAAO,SAAS,KAAM,CAC3D,EAAe,IAAI,IAAI,OAAO,SAAS,IAAI,CAAC,EAC5C,MACJ,CAEA,IAAM,EAAgB,EAUtB,GATA,EAAe,EAAc,MASzB,CAAC,EAAmB,cAAe,CAPnC,WAAY,IAAI,gBAChB,cACA,QAAS,EAAc,GACvB,QAAS,GACT,YAAa,UACb,UAAW,EAAa,CAEW,EAAO,EAAI,EAAG,CACjD,GAAqB,GACrB,OAAO,QAAQ,GAAG,EAAgB,EAAc,KAAK,EACrD,EAAe,EACf,MACJ,CACA,GAAkB,EAAgC,EAAa,CAC3D,QAAS,GACT,UAAW,GACX,cAAe,CACnB,CAAC,CACL,CAAC,EACL,EAEM,IACF,EACA,EACA,EACA,IACgB,CAChB,GAAM,CAAC,UAAU,OAAQ,GAAG,GAAkB,GAAW,CAAC,EAC1D,OAAO,GAAkB,EAAgC,IAAI,IAAI,EAAK,SAAS,OAAO,EAAG,CACrF,QAAS,GACT,YAAa,EACb,iBACA,GAAI,EAAS,CAAC,QAAM,EAAI,CAAC,CAC7B,CAAC,CACL,ECtaI,EAAiB,CAAC,eAAgB,CAAC,EACnC,GAAW,GACX,GAAY,GACZ,EAA+B,CAAC,EAChC,GAAsC,KAEpC,IAAc,EAAK,EAAU,CAAC,IAAM,CACtC,GAAM,CAAC,UAAS,WAAW,GAAO,GAAG,GAAkB,EACvD,GAAI,CAAC,EAAU,OAAO,GAAW,EAAK,CAAc,EACpD,GAAI,CAAC,GAAe,MAAU,MAAM,yDAAyD,EAC7F,GAAM,CAAC,SAAQ,GAAG,GAAqB,EAEvC,OAAO,GAAmB,GAAe,EAAK,EAAQ,CAClD,GAAG,EACH,GAAI,EAAU,CAAC,SAAO,EAAI,CAAC,CAC/B,CAAC,CACL,EAEM,IACF,EACA,KACc,EAAK,EAAU,CAAC,IAAM,CACpC,GAAM,CAAC,WAAW,GAAO,GAAG,GAAkB,EAE9C,OADI,GAAU,EAAK,OAAO,EAAK,8CAA8C,EACtE,EAAQ,EAAK,CAAc,CACtC,EAMM,GAAgB,CAClB,OACA,KANS,GAAe,OAAQ,EAMhC,EACA,IANQ,GAAe,MAAO,EAM9B,EACA,OANQ,GAAe,SAAU,EAMzB,EACR,IAAI,QAAwB,CACxB,GAAI,CAAC,EAAa,OAAQ,MAAU,MAAM,8CAA8C,EACxF,OAAO,EAAa,MACxB,EACA,IAAI,UAA8B,CAC9B,GAAI,CAAC,EAAa,SAAU,MAAU,MAAM,gDAAgD,EAC5F,OAAO,EAAa,QACxB,EACA,IAAI,YAAsB,CACtB,OAAO,EAAM,eAAiB,CAClC,CACJ,EAEM,OAAmC,CACjC,KACJ,GAAY,GAEZ,SAAS,iBAAiB,uBAA0B,CAChD,EAAM,gBAAkB,CAC5B,CAAC,EACD,SAAS,iBAAiB,wBAA2B,CACjD,EAAM,eAAiB,KAAK,IAAI,EAAG,EAAM,eAAiB,CAAC,CAC/D,CAAC,EACL,EAEM,GAAmB,GAAwC,CAC7D,GAAgB,EAChB,AAEI,MADA,EAAQ,EAAe,SAAS,CAAK,EAC1B,IAEf,GAAqB,EACrB,EAAe,MAAM,SAAY,EAAE,CACvC,EACM,GAAoB,GAA+B,CACrD,EAAa,OAAS,CAC1B,EACM,GAAsB,GAAiC,CACzD,EAAa,SAAW,CAC5B"}
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-CYHiRVjx.js";export{e as UiAccordion,t as default,t as registerAccordion};
1
+ import{n as e,t}from"../chunks/entry.generated-EAAmcnsg.js";export{e as UiAccordion,t as default,t as registerAccordion};
@@ -1 +1 @@
1
- import{n as e,r as t,t as n}from"../chunks/entry.generated-D0Av2Aiw.js";export{e as UiCheckbox,t as UiCheckboxGroup,n as default,n as registerCheckbox};
1
+ import{n as e,r as t,t as n}from"../chunks/entry.generated-CSgqcIg6.js";export{e as UiCheckbox,t as UiCheckboxGroup,n as default,n as registerCheckbox};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-Ck7bhyzz.js";export{e as UiDataGrid,t as default,t as registerDataGrid};
1
+ import{n as e,t}from"../chunks/entry.generated-BUbxiHwA.js";export{e as UiDataGrid,t as default,t as registerDataGrid};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-BbQ_TNRI.js";export{e as UiDatePicker,t as default,t as registerDatePicker};
1
+ import{n as e,t}from"../chunks/entry.generated-Dqyot6vM.js";export{e as UiDatePicker,t as default,t as registerDatePicker};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-DSyiRko7.js";export{e as UiDropdown,t as default,t as registerDropdown};
1
+ import{n as e,t}from"../chunks/entry.generated-C0S3uZrm.js";export{e as UiDropdown,t as default,t as registerDropdown};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-BwAge51I.js";export{e as UiField,t as default,t as registerField};
1
+ import{n as e,t}from"../chunks/entry.generated-f6HGqvQY.js";export{e as UiField,t as default,t as registerField};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-DNtvOM3X.js";export{e as UiFileUpload,t as default,t as registerFileUpload};
1
+ import{n as e,t}from"../chunks/entry.generated-BV49EHah.js";export{e as UiFileUpload,t as default,t as registerFileUpload};
@@ -1,2 +1,2 @@
1
- import{t as e}from"../chunks/motion-BhADgUVd.js";import{n as ee,r as te,t}from"../chunks/entry.generated-DJMDdEtO.js";import{t as n}from"../chunks/capability-motion-C_8mc71v.js";import{n as ne,t as r}from"../chunks/entry.generated-vM-5KVaL.js";import{t as i}from"../chunks/drag-and-drop-DHq3udf7.js";import{i as a,n as o,r as s,t as c}from"../chunks/capability-sortable-aY5GWxrK.js";import{n as re,t as l}from"../chunks/entry.generated-CYHiRVjx.js";import{n as ie,t as u}from"../chunks/entry.generated-C-lyYGbo.js";import{n as d,r as f,t as p}from"../chunks/entry.generated-D0Av2Aiw.js";import{n as m,t as h}from"../chunks/entry.generated-BbQ_TNRI.js";import{n as g,t as _}from"../chunks/entry.generated-B_xTkYSB.js";import{n as ae,t as v}from"../chunks/entry.generated-DSyiRko7.js";import{n as oe,t as y}from"../chunks/entry.generated-BwAge51I.js";import{n as se,t as b}from"../chunks/entry.generated-DNtvOM3X.js";import{n as ce,t as x}from"../chunks/entry.generated-CEGLKsEl.js";import{a as le,i as ue,n as S,o as C,r as w,t as T}from"../chunks/capability-shortcut-Br_XBf7u.js";import{t as E}from"../chunks/controller-DsXbNzqk.js";import{t as D}from"../chunks/entry.generated-jP0UEZIS.js";import{n as O,r as k,t as A}from"../chunks/entry.generated-BZXp8Edl.js";import{t as j}from"../chunks/capability-resizable-Bga8TngJ.js";import{n as M,r as N,t as P}from"../chunks/entry.generated-C1JdfrdC.js";import{n as F,r as I,t as L}from"../chunks/entry.generated-xjDWyE7q.js";import{n as R,t as z}from"../chunks/entry.generated-CPbvsglm.js";import{i as B,n as V,r as H,t as U}from"../chunks/entry.generated-Dd04OzRH.js";import{n as de,t as W}from"../chunks/entry2.generated-e3bTOzUi.js";import{n as fe,t as G}from"../chunks/entry.generated-Gl6wz0Oh.js";import{n as pe,t as K}from"../chunks/entry.generated-CtoSPDoI.js";import{n as me,r as he,t as q}from"../chunks/entry.generated-B74OtpL2.js";import{n as ge,t as J}from"../chunks/entry.generated-Ck7bhyzz.js";import{n as _e,t as Y}from"../chunks/entry.generated-B2rTvkxi.js";import{_ as ve,a as ye,b as be,c as xe,d as Se,f as Ce,g as we,h as Te,i as Ee,l as De,m as Oe,n as ke,o as Ae,p as X,r as je,s as Me,t as Z,u as Ne,v as Pe,x as Fe,y as Ie}from"../chunks/entry.generated-QspMEPHx.js";var Q=new WeakSet,$=e=>{Q.has(e)||(Q.add(e),n(e),j(e),c(e),C(e),l(e),u(),p(e),h(e),_(e),v(e),y(e),b(e),x(e),D(e),A(e),P(e),L(e),z(e),r(e),U(e),W(e),G(e),K(e),t(e),q(e),J(e),Y(e),Z(e))};export{ke as TABLE_ALIGNS,je as TABLE_BORDERS,Ee as TABLE_COLUMN_SCOPES,ye as TABLE_DENSITIES,Ae as TABLE_FILTER_AS_VALUES,Me as TABLE_LAYOUTS,xe as TABLE_ROW_HEADER_SCOPES,De as TABLE_SORTS,Ne as TABLE_VALIGNS,Se as TABLE_VARIANTS,Ce as TABLE_WIDTHS,re as UiAccordion,d as UiCheckbox,f as UiCheckboxGroup,ge as UiDataGrid,m as UiDatePicker,g as UiDirectUpload,ae as UiDropdown,oe as UiField,se as UiFileUpload,ce as UiInput,O as UiModal,k as UiModalTrigger,M as UiPanelToggle,N as UiPanels,F as UiRadio,I as UiRadioGroup,R as UiScrollArea,ne as UiSelect,V as UiSidebar,H as UiSidebarEdge,B as UiSidebarToggle,de as UiSlider,fe as UiSwitch,pe as UiTabs,ee as UiToast,te as UiToastOutlet,me as UiTooltip,_e as UiVirtualizer,$ as components,$ as default,E as createKeybindingController,i as createResizable,T as createShortcutMatcher,s as createSortableRegistry,S as formatShortcut,w as formatShortcutKeys,e as motion,ue as observePressedShortcutKeys,le as parseShortcut,l as registerAccordion,u as registerButton,p as registerCheckbox,J as registerDataGrid,h as registerDatePicker,_ as registerDirectUpload,v as registerDropdown,y as registerField,b as registerFileUpload,x as registerInput,D as registerKeybinding,A as registerModal,n as registerMotionCapability,P as registerPanels,L as registerRadio,j as registerResizableCapability,z as registerScrollArea,r as registerSelect,C as registerShortcutCapability,U as registerSidebar,W as registerSlider,c as registerSortableCapability,o as registerSortableDirective,G as registerSwitch,Z as registerTable,K as registerTabs,t as registerToast,q as registerTooltip,he as registerTooltipDirective,Y as registerVirtualizer,a as sortable,X as tableCaptionSchema,Oe as tableCellSchema,Te as tableColumnFilterSchema,we as tableColumnSchema,ve as tableEmptySchema,Pe as tableRowHeaderSchema,Ie as tableRowSchema,be as tableSchema,Fe as tableSectionSchema,ie as unregisterButton};
1
+ import{t as e}from"../chunks/motion-DT-Hq9qe.js";import{n as ee,r as te,t}from"../chunks/entry.generated-DcXzHGIV.js";import{n,t as r}from"../chunks/capability-motion-DCacA4wj.js";import{n as ne,t as i}from"../chunks/entry.generated-By9j8PrV.js";import{t as a}from"../chunks/drag-and-drop-DHq3udf7.js";import{i as o,n as re,r as ie,t as s}from"../chunks/capability-sortable-BnB9Wz0E.js";import{n as ae,t as c}from"../chunks/entry.generated-EAAmcnsg.js";import{n as l,t as u}from"../chunks/entry.generated-C-lyYGbo.js";import{n as d,r as f,t as p}from"../chunks/entry.generated-CSgqcIg6.js";import{n as m,t as h}from"../chunks/entry.generated-Dqyot6vM.js";import{n as oe,t as g}from"../chunks/entry.generated-B_xTkYSB.js";import{n as se,t as _}from"../chunks/entry.generated-C0S3uZrm.js";import{n as ce,t as v}from"../chunks/entry.generated-f6HGqvQY.js";import{n as le,t as y}from"../chunks/entry.generated-BV49EHah.js";import{n as ue,t as b}from"../chunks/entry.generated-B_e0djHK.js";import{a as de,i as x,n as S,o as C,r as w,t as T}from"../chunks/capability-shortcut-Z-__iteD.js";import{t as E}from"../chunks/controller-BOf7dxV2.js";import{t as D}from"../chunks/entry.generated-C5kjUnFe.js";import{n as O,r as k,t as A}from"../chunks/entry.generated-BEjAV5NT.js";import{t as j}from"../chunks/capability-resizable-Bga8TngJ.js";import{n as M,r as N,t as P}from"../chunks/entry.generated-BdiyPh0p.js";import{n as F,r as I,t as L}from"../chunks/entry.generated-B8aXTJK6.js";import{n as R,t as z}from"../chunks/entry.generated-CPbvsglm.js";import{i as B,n as V,r as H,t as U}from"../chunks/entry2.generated-a2NebZsn.js";import{n as fe,t as W}from"../chunks/entry.generated-Cj1CmH13.js";import{n as pe,t as G}from"../chunks/entry.generated-Cekl4pYo.js";import{n as me,t as K}from"../chunks/entry.generated-F2czAXCg.js";import{n as he,r as ge,t as q}from"../chunks/entry.generated-DeXEkXMW.js";import{n as _e,t as J}from"../chunks/entry.generated-BUbxiHwA.js";import{n as ve,t as Y}from"../chunks/entry.generated-B2rTvkxi.js";import{_ as ye,a as be,b as xe,c as Se,d as Ce,f as we,g as Te,h as Ee,i as De,l as Oe,m as ke,n as Ae,o as X,p as je,r as Me,s as Ne,t as Z,u as Pe,v as Fe,x as Ie,y as Le}from"../chunks/entry2.generated-QspMEPHx.js";var Q=new WeakSet,$=e=>{Q.has(e)||(Q.add(e),r(e),j(e),s(e),C(e),c(e),u(),p(e),h(e),g(e),_(e),v(e),y(e),b(e),D(e),A(e),P(e),L(e),z(e),i(e),U(e),W(e),G(e),K(e),t(e),q(e),J(e),Y(e),Z(e))};export{Ae as TABLE_ALIGNS,Me as TABLE_BORDERS,De as TABLE_COLUMN_SCOPES,be as TABLE_DENSITIES,X as TABLE_FILTER_AS_VALUES,Ne as TABLE_LAYOUTS,Se as TABLE_ROW_HEADER_SCOPES,Oe as TABLE_SORTS,Pe as TABLE_VALIGNS,Ce as TABLE_VARIANTS,we as TABLE_WIDTHS,ae as UiAccordion,d as UiCheckbox,f as UiCheckboxGroup,_e as UiDataGrid,m as UiDatePicker,oe as UiDirectUpload,se as UiDropdown,ce as UiField,le as UiFileUpload,ue as UiInput,O as UiModal,k as UiModalTrigger,M as UiPanelToggle,N as UiPanels,F as UiRadio,I as UiRadioGroup,R as UiScrollArea,ne as UiSelect,V as UiSidebar,H as UiSidebarEdge,B as UiSidebarToggle,fe as UiSlider,pe as UiSwitch,me as UiTabs,ee as UiToast,te as UiToastOutlet,he as UiTooltip,ve as UiVirtualizer,$ as components,$ as default,E as createKeybindingController,a as createResizable,T as createShortcutMatcher,ie as createSortableRegistry,S as formatShortcut,w as formatShortcutKeys,e as motion,x as observePressedShortcutKeys,de as parseShortcut,c as registerAccordion,n as registerBoundsDirective,u as registerButton,p as registerCheckbox,J as registerDataGrid,h as registerDatePicker,g as registerDirectUpload,_ as registerDropdown,v as registerField,y as registerFileUpload,b as registerInput,D as registerKeybinding,A as registerModal,r as registerMotionCapability,P as registerPanels,L as registerRadio,j as registerResizableCapability,z as registerScrollArea,i as registerSelect,C as registerShortcutCapability,U as registerSidebar,W as registerSlider,s as registerSortableCapability,re as registerSortableDirective,G as registerSwitch,Z as registerTable,K as registerTabs,t as registerToast,q as registerTooltip,ge as registerTooltipDirective,Y as registerVirtualizer,o as sortable,je as tableCaptionSchema,ke as tableCellSchema,Ee as tableColumnFilterSchema,Te as tableColumnSchema,ye as tableEmptySchema,Fe as tableRowHeaderSchema,Le as tableRowSchema,xe as tableSchema,Ie as tableSectionSchema,l as unregisterButton};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../../../../client/src/components/entry.generated.ts"],"sourcesContent":["// 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 {registerAccordion} from './accordion/entry.generated';\nimport {registerButton} from './button/entry.generated';\nimport {registerCheckbox} from './checkbox/entry.generated';\nimport {registerDatePicker} from './date-picker/entry.generated';\nimport {registerDirectUpload} from './direct-upload/entry.generated';\nimport {registerDropdown} from './dropdown/entry.generated';\nimport {registerField} from './field/entry.generated';\nimport {registerFileUpload} from './file-upload/entry.generated';\nimport {registerInput} from './input/entry.generated';\nimport {registerKeybinding} from './keybinding/entry.generated';\nimport {registerModal} from './modal/entry.generated';\nimport {registerPanels} from './panels/entry.generated';\nimport {registerRadio} from './radio/entry.generated';\nimport {registerScrollArea} from './scroll-area/entry.generated';\nimport {registerSelect} from './select/entry.generated';\nimport {registerSidebar} from './sidebar/entry.generated';\nimport {registerSlider} from './slider/entry.generated';\nimport {registerSwitch} from './switch/entry.generated';\nimport {registerTabs} from './tabs/entry.generated';\nimport {registerToast} from './toast/entry.generated';\nimport {registerTooltip} from './tooltip/entry.generated';\nimport {registerDataGrid} from './data-grid/entry.generated';\nimport {registerVirtualizer} from './virtualizer/entry.generated';\nimport {registerTable} from './table/entry.generated';\nimport {registerMotionCapability} from '../capabilities/motion';\nimport {registerResizableCapability} from '../capabilities/resizable';\nimport {registerSortableCapability} from '../capabilities/sortable';\nimport {registerShortcutCapability} from '../capabilities/shortcut';\n\ntype ComponentsPlugin = (AlpineInstance: AlpineType) => void;\nconst registered = new WeakSet<AlpineType>();\n\nconst components: ComponentsPlugin = (AlpineInstance): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerResizableCapability(AlpineInstance);\n registerSortableCapability(AlpineInstance);\n registerShortcutCapability(AlpineInstance);\n registerAccordion(AlpineInstance);\n registerButton();\n registerCheckbox(AlpineInstance);\n registerDatePicker(AlpineInstance);\n registerDirectUpload(AlpineInstance);\n registerDropdown(AlpineInstance);\n registerField(AlpineInstance);\n registerFileUpload(AlpineInstance);\n registerInput(AlpineInstance);\n registerKeybinding(AlpineInstance);\n registerModal(AlpineInstance);\n registerPanels(AlpineInstance);\n registerRadio(AlpineInstance);\n registerScrollArea(AlpineInstance);\n registerSelect(AlpineInstance);\n registerSidebar(AlpineInstance);\n registerSlider(AlpineInstance);\n registerSwitch(AlpineInstance);\n registerTabs(AlpineInstance);\n registerToast(AlpineInstance);\n registerTooltip(AlpineInstance);\n registerDataGrid(AlpineInstance);\n registerVirtualizer(AlpineInstance);\n registerTable(AlpineInstance);\n};\n\nexport {components};\nexport default components;\nexport type {ComponentsPlugin};\nexport * from './accordion/entry.generated';\nexport * from './button/entry.generated';\nexport * from './checkbox/entry.generated';\nexport * from './date-picker/entry.generated';\nexport * from './direct-upload/entry.generated';\nexport * from './dropdown/entry.generated';\nexport * from './field/entry.generated';\nexport * from './file-upload/entry.generated';\nexport * from './input/entry.generated';\nexport * from './keybinding/entry.generated';\nexport * from './modal/entry.generated';\nexport * from './panels/entry.generated';\nexport * from './radio/entry.generated';\nexport * from './scroll-area/entry.generated';\nexport * from './select/entry.generated';\nexport * from './sidebar/entry.generated';\nexport * from './slider/entry.generated';\nexport * from './switch/entry.generated';\nexport * from './tabs/entry.generated';\nexport * from './toast/entry.generated';\nexport * from './tooltip/entry.generated';\nexport * from './data-grid/entry.generated';\nexport * from './virtualizer/entry.generated';\nexport * from './table/entry.generated';\nexport * from '../capabilities/motion';\nexport * from '../capabilities/resizable';\nexport * from '../capabilities/sortable';\nexport * from '../capabilities/shortcut';\n"],"mappings":"4rEAiCA,IAAM,EAAa,IAAI,QAEjB,EAAgC,GAAyB,CACvD,EAAW,IAAI,CAAc,IACjC,EAAW,IAAI,CAAc,EAC7B,EAAyB,CAAc,EACvC,EAA4B,CAAc,EAC1C,EAA2B,CAAc,EACzC,EAA2B,CAAc,EACzC,EAAkB,CAAc,EAChC,EAAe,EACf,EAAiB,CAAc,EAC/B,EAAmB,CAAc,EACjC,EAAqB,CAAc,EACnC,EAAiB,CAAc,EAC/B,EAAc,CAAc,EAC5B,EAAmB,CAAc,EACjC,EAAc,CAAc,EAC5B,EAAmB,CAAc,EACjC,EAAc,CAAc,EAC5B,EAAe,CAAc,EAC7B,EAAc,CAAc,EAC5B,EAAmB,CAAc,EACjC,EAAe,CAAc,EAC7B,EAAgB,CAAc,EAC9B,EAAe,CAAc,EAC7B,EAAe,CAAc,EAC7B,EAAa,CAAc,EAC3B,EAAc,CAAc,EAC5B,EAAgB,CAAc,EAC9B,EAAiB,CAAc,EAC/B,EAAoB,CAAc,EAClC,EAAc,CAAc,EAChC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../../../../client/src/components/entry.generated.ts"],"sourcesContent":["// 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 {registerAccordion} from './accordion/entry.generated';\nimport {registerButton} from './button/entry.generated';\nimport {registerCheckbox} from './checkbox/entry.generated';\nimport {registerDatePicker} from './date-picker/entry.generated';\nimport {registerDirectUpload} from './direct-upload/entry.generated';\nimport {registerDropdown} from './dropdown/entry.generated';\nimport {registerField} from './field/entry.generated';\nimport {registerFileUpload} from './file-upload/entry.generated';\nimport {registerInput} from './input/entry.generated';\nimport {registerKeybinding} from './keybinding/entry.generated';\nimport {registerModal} from './modal/entry.generated';\nimport {registerPanels} from './panels/entry.generated';\nimport {registerRadio} from './radio/entry.generated';\nimport {registerScrollArea} from './scroll-area/entry.generated';\nimport {registerSelect} from './select/entry.generated';\nimport {registerSidebar} from './sidebar/entry.generated';\nimport {registerSlider} from './slider/entry.generated';\nimport {registerSwitch} from './switch/entry.generated';\nimport {registerTabs} from './tabs/entry.generated';\nimport {registerToast} from './toast/entry.generated';\nimport {registerTooltip} from './tooltip/entry.generated';\nimport {registerDataGrid} from './data-grid/entry.generated';\nimport {registerVirtualizer} from './virtualizer/entry.generated';\nimport {registerTable} from './table/entry.generated';\nimport {registerMotionCapability} from '../capabilities/motion';\nimport {registerResizableCapability} from '../capabilities/resizable';\nimport {registerSortableCapability} from '../capabilities/sortable';\nimport {registerShortcutCapability} from '../capabilities/shortcut';\n\ntype ComponentsPlugin = (AlpineInstance: AlpineType) => void;\nconst registered = new WeakSet<AlpineType>();\n\nconst components: ComponentsPlugin = (AlpineInstance): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerResizableCapability(AlpineInstance);\n registerSortableCapability(AlpineInstance);\n registerShortcutCapability(AlpineInstance);\n registerAccordion(AlpineInstance);\n registerButton();\n registerCheckbox(AlpineInstance);\n registerDatePicker(AlpineInstance);\n registerDirectUpload(AlpineInstance);\n registerDropdown(AlpineInstance);\n registerField(AlpineInstance);\n registerFileUpload(AlpineInstance);\n registerInput(AlpineInstance);\n registerKeybinding(AlpineInstance);\n registerModal(AlpineInstance);\n registerPanels(AlpineInstance);\n registerRadio(AlpineInstance);\n registerScrollArea(AlpineInstance);\n registerSelect(AlpineInstance);\n registerSidebar(AlpineInstance);\n registerSlider(AlpineInstance);\n registerSwitch(AlpineInstance);\n registerTabs(AlpineInstance);\n registerToast(AlpineInstance);\n registerTooltip(AlpineInstance);\n registerDataGrid(AlpineInstance);\n registerVirtualizer(AlpineInstance);\n registerTable(AlpineInstance);\n};\n\nexport {components};\nexport default components;\nexport type {ComponentsPlugin};\nexport * from './accordion/entry.generated';\nexport * from './button/entry.generated';\nexport * from './checkbox/entry.generated';\nexport * from './date-picker/entry.generated';\nexport * from './direct-upload/entry.generated';\nexport * from './dropdown/entry.generated';\nexport * from './field/entry.generated';\nexport * from './file-upload/entry.generated';\nexport * from './input/entry.generated';\nexport * from './keybinding/entry.generated';\nexport * from './modal/entry.generated';\nexport * from './panels/entry.generated';\nexport * from './radio/entry.generated';\nexport * from './scroll-area/entry.generated';\nexport * from './select/entry.generated';\nexport * from './sidebar/entry.generated';\nexport * from './slider/entry.generated';\nexport * from './switch/entry.generated';\nexport * from './tabs/entry.generated';\nexport * from './toast/entry.generated';\nexport * from './tooltip/entry.generated';\nexport * from './data-grid/entry.generated';\nexport * from './virtualizer/entry.generated';\nexport * from './table/entry.generated';\nexport * from '../capabilities/motion';\nexport * from '../capabilities/resizable';\nexport * from '../capabilities/sortable';\nexport * from '../capabilities/shortcut';\n"],"mappings":"gsEAiCA,IAAM,EAAa,IAAI,QAEjB,EAAgC,GAAyB,CACvD,EAAW,IAAI,CAAc,IACjC,EAAW,IAAI,CAAc,EAC7B,EAAyB,CAAc,EACvC,EAA4B,CAAc,EAC1C,EAA2B,CAAc,EACzC,EAA2B,CAAc,EACzC,EAAkB,CAAc,EAChC,EAAe,EACf,EAAiB,CAAc,EAC/B,EAAmB,CAAc,EACjC,EAAqB,CAAc,EACnC,EAAiB,CAAc,EAC/B,EAAc,CAAc,EAC5B,EAAmB,CAAc,EACjC,EAAc,CAAc,EAC5B,EAAmB,CAAc,EACjC,EAAc,CAAc,EAC5B,EAAe,CAAc,EAC7B,EAAc,CAAc,EAC5B,EAAmB,CAAc,EACjC,EAAe,CAAc,EAC7B,EAAgB,CAAc,EAC9B,EAAe,CAAc,EAC7B,EAAe,CAAc,EAC7B,EAAa,CAAc,EAC3B,EAAc,CAAc,EAC5B,EAAgB,CAAc,EAC9B,EAAiB,CAAc,EAC/B,EAAoB,CAAc,EAClC,EAAc,CAAc,EAChC"}
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-CEGLKsEl.js";export{e as UiInput,t as default,t as registerInput};
1
+ import{n as e,t}from"../chunks/entry.generated-B_e0djHK.js";export{e as UiInput,t as default,t as registerInput};
@@ -1 +1 @@
1
- import{t as e}from"../chunks/controller-DsXbNzqk.js";import{t}from"../chunks/entry.generated-jP0UEZIS.js";export{e as createKeybindingController,t as default,t as registerKeybinding};
1
+ import{t as e}from"../chunks/controller-BOf7dxV2.js";import{t}from"../chunks/entry.generated-C5kjUnFe.js";export{e as createKeybindingController,t as default,t as registerKeybinding};
@@ -1 +1 @@
1
- import{n as e,r as t,t as n}from"../chunks/entry.generated-BZXp8Edl.js";export{e as UiModal,t as UiModalTrigger,n as default,n as registerModal};
1
+ import{n as e,r as t,t as n}from"../chunks/entry.generated-BEjAV5NT.js";export{e as UiModal,t as UiModalTrigger,n as default,n as registerModal};
@@ -1 +1 @@
1
- import{n as e,r as t,t as n}from"../chunks/entry.generated-C1JdfrdC.js";export{e as UiPanelToggle,t as UiPanels,n as default,n as registerPanels};
1
+ import{n as e,r as t,t as n}from"../chunks/entry.generated-BdiyPh0p.js";export{e as UiPanelToggle,t as UiPanels,n as default,n as registerPanels};
@@ -1 +1 @@
1
- import{n as e,r as t,t as n}from"../chunks/entry.generated-xjDWyE7q.js";export{e as UiRadio,t as UiRadioGroup,n as default,n as registerRadio};
1
+ import{n as e,r as t,t as n}from"../chunks/entry.generated-B8aXTJK6.js";export{e as UiRadio,t as UiRadioGroup,n as default,n as registerRadio};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-vM-5KVaL.js";export{e as UiSelect,t as default,t as registerSelect};
1
+ import{n as e,t}from"../chunks/entry.generated-By9j8PrV.js";export{e as UiSelect,t as default,t as registerSelect};
@@ -1 +1 @@
1
- import{i as e,n as t,r as n,t as r}from"../chunks/entry.generated-Dd04OzRH.js";export{t as UiSidebar,n as UiSidebarEdge,e as UiSidebarToggle,r as default,r as registerSidebar};
1
+ import{i as e,n as t,r as n,t as r}from"../chunks/entry2.generated-a2NebZsn.js";export{t as UiSidebar,n as UiSidebarEdge,e as UiSidebarToggle,r as default,r as registerSidebar};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry2.generated-e3bTOzUi.js";export{e as UiSlider,t as default,t as registerSlider};
1
+ import{n as e,t}from"../chunks/entry.generated-Cj1CmH13.js";export{e as UiSlider,t as default,t as registerSlider};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-Gl6wz0Oh.js";export{e as UiSwitch,t as default,t as registerSwitch};
1
+ import{n as e,t}from"../chunks/entry.generated-Cekl4pYo.js";export{e as UiSwitch,t as default,t as registerSwitch};
@@ -1 +1 @@
1
- import{_ as e,a as t,b as n,c as r,d as i,f as a,g as o,h as s,i as c,l,m as u,n as d,o as f,p,r as m,s as h,t as g,u as _,v,x as y,y as b}from"../chunks/entry.generated-QspMEPHx.js";export{d as TABLE_ALIGNS,m as TABLE_BORDERS,c as TABLE_COLUMN_SCOPES,t as TABLE_DENSITIES,f as TABLE_FILTER_AS_VALUES,h as TABLE_LAYOUTS,r as TABLE_ROW_HEADER_SCOPES,l as TABLE_SORTS,_ as TABLE_VALIGNS,i as TABLE_VARIANTS,a as TABLE_WIDTHS,g as default,g as registerTable,p as tableCaptionSchema,u as tableCellSchema,s as tableColumnFilterSchema,o as tableColumnSchema,e as tableEmptySchema,v as tableRowHeaderSchema,b as tableRowSchema,n as tableSchema,y as tableSectionSchema};
1
+ import{_ as e,a as t,b as n,c as r,d as i,f as a,g as o,h as s,i as c,l,m as u,n as d,o as f,p,r as m,s as h,t as g,u as _,v,x as y,y as b}from"../chunks/entry2.generated-QspMEPHx.js";export{d as TABLE_ALIGNS,m as TABLE_BORDERS,c as TABLE_COLUMN_SCOPES,t as TABLE_DENSITIES,f as TABLE_FILTER_AS_VALUES,h as TABLE_LAYOUTS,r as TABLE_ROW_HEADER_SCOPES,l as TABLE_SORTS,_ as TABLE_VALIGNS,i as TABLE_VARIANTS,a as TABLE_WIDTHS,g as default,g as registerTable,p as tableCaptionSchema,u as tableCellSchema,s as tableColumnFilterSchema,o as tableColumnSchema,e as tableEmptySchema,v as tableRowHeaderSchema,b as tableRowSchema,n as tableSchema,y as tableSectionSchema};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-CtoSPDoI.js";export{e as UiTabs,t as default,t as registerTabs};
1
+ import{n as e,t}from"../chunks/entry.generated-F2czAXCg.js";export{e as UiTabs,t as default,t as registerTabs};
@@ -1 +1 @@
1
- import{n as e,r as t,t as n}from"../chunks/entry.generated-DJMDdEtO.js";export{e as UiToast,t as UiToastOutlet,n as default,n as registerToast};
1
+ import{n as e,r as t,t as n}from"../chunks/entry.generated-DcXzHGIV.js";export{e as UiToast,t as UiToastOutlet,n as default,n as registerToast};
@@ -1 +1 @@
1
- import{n as e,r as t,t as n}from"../chunks/entry.generated-B74OtpL2.js";export{e as UiTooltip,n as default,n as registerTooltip,t as registerTooltipDirective};
1
+ import{n as e,r as t,t as n}from"../chunks/entry.generated-DeXEkXMW.js";export{e as UiTooltip,n as default,n as registerTooltip,t as registerTooltipDirective};
@@ -1 +1 @@
1
- import{i as e}from"./chunks/ui-egQWc4ws.js";import{a as t,c as n,f as r,l as i,n as a,o,s}from"./chunks/codecs-Cb1ns_47.js";import{i as c,r as l,t as u}from"./chunks/alpine-machine-BS13dbK4.js";import{t as d}from"./chunks/alpine-data-CytyCyfk.js";import{i as f,n as p,r as m,t as h}from"./chunks/core-Bmzg6DLB.js";import{n as g,t as _}from"./chunks/styles-TfvwVPGw.js";import{t as v}from"./chunks/merge-bindings-C8ewA_FD.js";import{t as y}from"./chunks/machine-Dqut4h89.js";export{a as bool,h as coreRuntime,h as default,u as createAlpineMachine,y as createMachine,l as createTransitionCoordinator,t as decodeProps,d as defineAlpineData,c as defineHook,m as defineManifest,o as defineProps,_ as defineStyles,s as json,v as mergeBindings,n as number,i as oneOf,f as propsFromSchema,p as registerTransitionDirective,g as resolveStyle,r as string,e as ui};
1
+ import{i as e}from"./chunks/ui-CfByjNaO.js";import{a as t,c as n,f as r,l as i,n as a,o,s}from"./chunks/codecs-Cb1ns_47.js";import{i as c,r as l,t as u}from"./chunks/alpine-machine-BS13dbK4.js";import{t as d}from"./chunks/alpine-data-CytyCyfk.js";import{i as f,n as p,r as m,t as h}from"./chunks/core-DBX5qDXb.js";import{n as g,t as _}from"./chunks/styles-TfvwVPGw.js";import{t as v}from"./chunks/merge-bindings-C8ewA_FD.js";import{t as y}from"./chunks/machine-Dqut4h89.js";export{a as bool,h as coreRuntime,h as default,u as createAlpineMachine,y as createMachine,l as createTransitionCoordinator,t as decodeProps,d as defineAlpineData,c as defineHook,m as defineManifest,o as defineProps,_ as defineStyles,s as json,v as mergeBindings,n as number,i as oneOf,f as propsFromSchema,p as registerTransitionDirective,g as resolveStyle,r as string,e as ui};
@@ -1,2 +1,2 @@
1
- import{n as ee}from"./chunks/bridge-B4S_D6hV.js";import{t as e}from"./chunks/motion-BhADgUVd.js";import{n as t,r as te,t as ne}from"./chunks/entry.generated-DJMDdEtO.js";import{i as re}from"./chunks/ui-egQWc4ws.js";import{t as n}from"./chunks/capability-motion-C_8mc71v.js";import{a as r,c as i,f as a,l as o,n as s,o as c,s as l}from"./chunks/codecs-Cb1ns_47.js";import{i as u,r as d,t as f}from"./chunks/alpine-machine-BS13dbK4.js";import{t as p}from"./chunks/alpine-data-CytyCyfk.js";import{i as m,n as h,r as g,t as _}from"./chunks/core-Bmzg6DLB.js";import{n as v,t as y}from"./chunks/styles-TfvwVPGw.js";import{t as b}from"./chunks/merge-bindings-C8ewA_FD.js";import{t as x}from"./chunks/machine-Dqut4h89.js";import{n as S,t as C}from"./chunks/entry.generated-vM-5KVaL.js";import{t as w}from"./chunks/drag-and-drop-DHq3udf7.js";import{i as T,n as E,r as D,t as O}from"./chunks/capability-sortable-aY5GWxrK.js";import{n as k,t as A}from"./chunks/entry.generated-CYHiRVjx.js";import{n as j,t as M}from"./chunks/entry.generated-C-lyYGbo.js";import{n as N,r as P,t as F}from"./chunks/entry.generated-D0Av2Aiw.js";import{n as I,t as L}from"./chunks/entry.generated-BbQ_TNRI.js";import{n as R,t as z}from"./chunks/entry.generated-B_xTkYSB.js";import{n as B,t as V}from"./chunks/entry.generated-DSyiRko7.js";import{n as H,t as U}from"./chunks/entry.generated-BwAge51I.js";import{n as W,t as G}from"./chunks/entry.generated-DNtvOM3X.js";import{n as K,t as q}from"./chunks/entry.generated-CEGLKsEl.js";import{a as J,i as Y,n as X,o as ie,r as ae,t as oe}from"./chunks/capability-shortcut-Br_XBf7u.js";import{t as se}from"./chunks/controller-DsXbNzqk.js";import{t as ce}from"./chunks/entry.generated-jP0UEZIS.js";import{n as Z,r as le,t as ue}from"./chunks/entry.generated-BZXp8Edl.js";import{t as de}from"./chunks/capability-resizable-Bga8TngJ.js";import{n as fe,r as pe,t as me}from"./chunks/entry.generated-C1JdfrdC.js";import{n as he,r as ge,t as _e}from"./chunks/entry.generated-xjDWyE7q.js";import{n as ve,t as ye}from"./chunks/entry.generated-CPbvsglm.js";import{i as be,n as xe,r as Se,t as Ce}from"./chunks/entry.generated-Dd04OzRH.js";import{n as we,t as Te}from"./chunks/entry2.generated-e3bTOzUi.js";import{n as Ee,t as De}from"./chunks/entry.generated-Gl6wz0Oh.js";import{n as Oe,t as ke}from"./chunks/entry.generated-CtoSPDoI.js";import{n as Ae,r as je,t as Me}from"./chunks/entry.generated-B74OtpL2.js";import{n as Ne,t as Pe}from"./chunks/entry.generated-Ck7bhyzz.js";import{n as Fe,t as Ie}from"./chunks/entry.generated-B2rTvkxi.js";import{_ as Le,a as Re,b as ze,c as Be,d as Ve,f as He,g as Ue,h as We,i as Ge,l as Ke,m as qe,n as Je,o as Ye,p as Xe,r as Ze,s as Qe,t as $e,u as et,v as tt,x as nt,y as rt}from"./chunks/entry.generated-QspMEPHx.js";import{components as Q}from"./components/index.js";var it=`trellis:core.trellis:motion.trellis:resizable.trellis:sortable.trellis:shortcut.trellis:accordion.trellis:button.trellis:checkbox.trellis:date-picker.trellis:direct-upload.trellis:dropdown.trellis:field.trellis:file-upload.trellis:input.trellis:keybinding.trellis:modal.trellis:panels.trellis:radio.trellis:scroll-area.trellis:select.trellis:sidebar.trellis:slider.trellis:switch.trellis:tabs.trellis:toast.trellis:tooltip.trellis:data-grid.trellis:virtualizer.trellis:table`.split(`.`),$=e=>{_(e),Q(e),ee(it,e)};export{Je as TABLE_ALIGNS,Ze as TABLE_BORDERS,Ge as TABLE_COLUMN_SCOPES,Re as TABLE_DENSITIES,Ye as TABLE_FILTER_AS_VALUES,Qe as TABLE_LAYOUTS,Be as TABLE_ROW_HEADER_SCOPES,Ke as TABLE_SORTS,et as TABLE_VALIGNS,Ve as TABLE_VARIANTS,He as TABLE_WIDTHS,k as UiAccordion,N as UiCheckbox,P as UiCheckboxGroup,Ne as UiDataGrid,I as UiDatePicker,R as UiDirectUpload,B as UiDropdown,H as UiField,W as UiFileUpload,K as UiInput,Z as UiModal,le as UiModalTrigger,fe as UiPanelToggle,pe as UiPanels,he as UiRadio,ge as UiRadioGroup,ve as UiScrollArea,S as UiSelect,xe as UiSidebar,Se as UiSidebarEdge,be as UiSidebarToggle,we as UiSlider,Ee as UiSwitch,Oe as UiTabs,t as UiToast,te as UiToastOutlet,Ae as UiTooltip,Fe as UiVirtualizer,s as bool,Q as components,_ as coreRuntime,f as createAlpineMachine,se as createKeybindingController,x as createMachine,w as createResizable,oe as createShortcutMatcher,D as createSortableRegistry,d as createTransitionCoordinator,r as decodeProps,$ as default,$ as trellisUi,p as defineAlpineData,u as defineHook,g as defineManifest,c as defineProps,y as defineStyles,X as formatShortcut,ae as formatShortcutKeys,l as json,b as mergeBindings,e as motion,i as number,Y as observePressedShortcutKeys,o as oneOf,J as parseShortcut,m as propsFromSchema,A as registerAccordion,M as registerButton,F as registerCheckbox,Pe as registerDataGrid,L as registerDatePicker,z as registerDirectUpload,V as registerDropdown,U as registerField,G as registerFileUpload,q as registerInput,ce as registerKeybinding,ue as registerModal,n as registerMotionCapability,me as registerPanels,_e as registerRadio,de as registerResizableCapability,ye as registerScrollArea,C as registerSelect,ie as registerShortcutCapability,Ce as registerSidebar,Te as registerSlider,O as registerSortableCapability,E as registerSortableDirective,De as registerSwitch,$e as registerTable,ke as registerTabs,ne as registerToast,Me as registerTooltip,je as registerTooltipDirective,h as registerTransitionDirective,Ie as registerVirtualizer,v as resolveStyle,T as sortable,a as string,Xe as tableCaptionSchema,qe as tableCellSchema,We as tableColumnFilterSchema,Ue as tableColumnSchema,Le as tableEmptySchema,tt as tableRowHeaderSchema,rt as tableRowSchema,ze as tableSchema,nt as tableSectionSchema,re as ui,j as unregisterButton};
1
+ import{n as ee}from"./chunks/bridge-B4S_D6hV.js";import{t as e}from"./chunks/motion-DT-Hq9qe.js";import{n as t,r as te,t as ne}from"./chunks/entry.generated-DcXzHGIV.js";import{i as re}from"./chunks/ui-CfByjNaO.js";import{n,t as r}from"./chunks/capability-motion-DCacA4wj.js";import{a as i,c as a,f as o,l as s,n as c,o as l,s as u}from"./chunks/codecs-Cb1ns_47.js";import{i as d,r as f,t as p}from"./chunks/alpine-machine-BS13dbK4.js";import{t as m}from"./chunks/alpine-data-CytyCyfk.js";import{i as h,n as g,r as _,t as v}from"./chunks/core-DBX5qDXb.js";import{n as y,t as b}from"./chunks/styles-TfvwVPGw.js";import{t as x}from"./chunks/merge-bindings-C8ewA_FD.js";import{t as S}from"./chunks/machine-Dqut4h89.js";import{n as C,t as w}from"./chunks/entry.generated-By9j8PrV.js";import{t as T}from"./chunks/drag-and-drop-DHq3udf7.js";import{i as E,n as D,r as O,t as k}from"./chunks/capability-sortable-BnB9Wz0E.js";import{n as A,t as j}from"./chunks/entry.generated-EAAmcnsg.js";import{n as M,t as N}from"./chunks/entry.generated-C-lyYGbo.js";import{n as P,r as F,t as I}from"./chunks/entry.generated-CSgqcIg6.js";import{n as L,t as R}from"./chunks/entry.generated-Dqyot6vM.js";import{n as z,t as B}from"./chunks/entry.generated-B_xTkYSB.js";import{n as V,t as H}from"./chunks/entry.generated-C0S3uZrm.js";import{n as U,t as W}from"./chunks/entry.generated-f6HGqvQY.js";import{n as G,t as K}from"./chunks/entry.generated-BV49EHah.js";import{n as q,t as J}from"./chunks/entry.generated-B_e0djHK.js";import{a as Y,i as X,n as ie,o as ae,r as oe,t as se}from"./chunks/capability-shortcut-Z-__iteD.js";import{t as ce}from"./chunks/controller-BOf7dxV2.js";import{t as Z}from"./chunks/entry.generated-C5kjUnFe.js";import{n as le,r as ue,t as de}from"./chunks/entry.generated-BEjAV5NT.js";import{t as fe}from"./chunks/capability-resizable-Bga8TngJ.js";import{n as pe,r as me,t as he}from"./chunks/entry.generated-BdiyPh0p.js";import{n as ge,r as _e,t as ve}from"./chunks/entry.generated-B8aXTJK6.js";import{n as ye,t as be}from"./chunks/entry.generated-CPbvsglm.js";import{i as xe,n as Se,r as Ce,t as we}from"./chunks/entry2.generated-a2NebZsn.js";import{n as Te,t as Ee}from"./chunks/entry.generated-Cj1CmH13.js";import{n as De,t as Oe}from"./chunks/entry.generated-Cekl4pYo.js";import{n as ke,t as Ae}from"./chunks/entry.generated-F2czAXCg.js";import{n as je,r as Me,t as Ne}from"./chunks/entry.generated-DeXEkXMW.js";import{n as Pe,t as Fe}from"./chunks/entry.generated-BUbxiHwA.js";import{n as Ie,t as Le}from"./chunks/entry.generated-B2rTvkxi.js";import{_ as Re,a as ze,b as Be,c as Ve,d as He,f as Ue,g as We,h as Ge,i as Ke,l as qe,m as Je,n as Ye,o as Xe,p as Ze,r as Qe,s as $e,t as et,u as tt,v as nt,x as rt,y as it}from"./chunks/entry2.generated-QspMEPHx.js";import{components as Q}from"./components/index.js";var at=`trellis:core.trellis:motion.trellis:resizable.trellis:sortable.trellis:shortcut.trellis:accordion.trellis:button.trellis:checkbox.trellis:date-picker.trellis:direct-upload.trellis:dropdown.trellis:field.trellis:file-upload.trellis:input.trellis:keybinding.trellis:modal.trellis:panels.trellis:radio.trellis:scroll-area.trellis:select.trellis:sidebar.trellis:slider.trellis:switch.trellis:tabs.trellis:toast.trellis:tooltip.trellis:data-grid.trellis:virtualizer.trellis:table`.split(`.`),$=e=>{v(e),Q(e),ee(at,e)};export{Ye as TABLE_ALIGNS,Qe as TABLE_BORDERS,Ke as TABLE_COLUMN_SCOPES,ze as TABLE_DENSITIES,Xe as TABLE_FILTER_AS_VALUES,$e as TABLE_LAYOUTS,Ve as TABLE_ROW_HEADER_SCOPES,qe as TABLE_SORTS,tt as TABLE_VALIGNS,He as TABLE_VARIANTS,Ue as TABLE_WIDTHS,A as UiAccordion,P as UiCheckbox,F as UiCheckboxGroup,Pe as UiDataGrid,L as UiDatePicker,z as UiDirectUpload,V as UiDropdown,U as UiField,G as UiFileUpload,q as UiInput,le as UiModal,ue as UiModalTrigger,pe as UiPanelToggle,me as UiPanels,ge as UiRadio,_e as UiRadioGroup,ye as UiScrollArea,C as UiSelect,Se as UiSidebar,Ce as UiSidebarEdge,xe as UiSidebarToggle,Te as UiSlider,De as UiSwitch,ke as UiTabs,t as UiToast,te as UiToastOutlet,je as UiTooltip,Ie as UiVirtualizer,c as bool,Q as components,v as coreRuntime,p as createAlpineMachine,ce as createKeybindingController,S as createMachine,T as createResizable,se as createShortcutMatcher,O as createSortableRegistry,f as createTransitionCoordinator,i as decodeProps,$ as default,$ as trellisUi,m as defineAlpineData,d as defineHook,_ as defineManifest,l as defineProps,b as defineStyles,ie as formatShortcut,oe as formatShortcutKeys,u as json,x as mergeBindings,e as motion,a as number,X as observePressedShortcutKeys,s as oneOf,Y as parseShortcut,h as propsFromSchema,j as registerAccordion,n as registerBoundsDirective,N as registerButton,I as registerCheckbox,Fe as registerDataGrid,R as registerDatePicker,B as registerDirectUpload,H as registerDropdown,W as registerField,K as registerFileUpload,J as registerInput,Z as registerKeybinding,de as registerModal,r as registerMotionCapability,he as registerPanels,ve as registerRadio,fe as registerResizableCapability,be as registerScrollArea,w as registerSelect,ae as registerShortcutCapability,we as registerSidebar,Ee as registerSlider,k as registerSortableCapability,D as registerSortableDirective,Oe as registerSwitch,et as registerTable,Ae as registerTabs,ne as registerToast,Ne as registerTooltip,Me as registerTooltipDirective,g as registerTransitionDirective,Le as registerVirtualizer,y as resolveStyle,E as sortable,o as string,Ze as tableCaptionSchema,Je as tableCellSchema,Ge as tableColumnFilterSchema,We as tableColumnSchema,Re as tableEmptySchema,nt as tableRowHeaderSchema,it as tableRowSchema,Be as tableSchema,rt as tableSectionSchema,re as ui,M as unregisterButton};
2
2
  //# sourceMappingURL=index.js.map