@vireo-ai/trellis-ui 0.1.55 → 0.1.57

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 (183) hide show
  1. package/README.md +1 -23
  2. package/package.json +3 -2
  3. package/packages/client/src/components/data-grid/styles.css +0 -16
  4. package/packages/client/src/components/panels/styles.css +2 -10
  5. package/packages/client/src/styles/components.css +1 -1
  6. package/packages/client/src/styles/generated/theme-fonts.css +1 -1
  7. package/packages/client/src/styles/generated/theme-palette.css +275 -59
  8. package/packages/client/src/styles/generated/theme-runtime.css +1007 -24
  9. package/packages/client/src/styles/generated-sources.css +1 -1
  10. package/packages/client/src/styles/recipes/selection.css +62 -12
  11. package/packages/client/src/styles/theme-support.css +23 -2
  12. package/packages/client/types/components/accordion/index.d.ts +3 -3
  13. package/packages/client/types/components/accordion/machine.d.ts +11 -7
  14. package/packages/client/types/components/app/contract.d.ts +5 -5
  15. package/packages/client/types/components/badge/contract.d.ts +1 -1
  16. package/packages/client/types/components/box/contract.d.ts +5 -5
  17. package/packages/client/types/components/button/contract.d.ts +1 -1
  18. package/packages/client/types/components/card/contract.d.ts +2 -2
  19. package/packages/client/types/components/common.d.ts +3 -3
  20. package/packages/client/types/components/container/contract.d.ts +4 -4
  21. package/packages/client/types/components/date-picker/contract.d.ts +4 -4
  22. package/packages/client/types/components/date-picker/machine.d.ts +4 -4
  23. package/packages/client/types/components/flex/contract.d.ts +4 -4
  24. package/packages/client/types/components/frame/contract.d.ts +5 -5
  25. package/packages/client/types/components/grid/contract.d.ts +4 -4
  26. package/packages/client/types/components/input/contract.d.ts +2 -2
  27. package/packages/client/types/components/layout.d.ts +5 -5
  28. package/packages/client/types/components/menu/contract.d.ts +4 -2
  29. package/packages/client/types/components/modal/contract.d.ts +5 -4
  30. package/packages/client/types/components/modal/index.d.ts +1 -1
  31. package/packages/client/types/components/section/contract.d.ts +4 -4
  32. package/packages/client/types/components/select/contract.d.ts +3 -3
  33. package/packages/client/types/components/select/machine.d.ts +4 -4
  34. package/packages/client/types/components/sidebar/contract.d.ts +3 -3
  35. package/packages/client/types/components/stack/contract.d.ts +4 -4
  36. package/packages/client/types/components/table/contract.d.ts +1 -1
  37. package/packages/client/types/components/textarea/contract.d.ts +1 -1
  38. package/packages/client/types/components/tooltip/contract.d.ts +2 -2
  39. package/packages/client/types/runtime/engine/stream.d.ts +1 -0
  40. package/packages/client/types/runtime/focus-scope.d.ts +5 -6
  41. package/packages/client/types/runtime/focus.d.ts +9 -0
  42. package/packages/client/types/runtime/index.d.ts +2 -1
  43. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +3278 -265
  44. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  45. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +395 -379
  46. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
  47. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +1 -1
  48. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
  49. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-C3q5Xzv2.js → capability-motion-BGVnZE_T.js} +2 -2
  50. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-C3q5Xzv2.js.map → capability-motion-BGVnZE_T.js.map} +1 -1
  51. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js +2 -0
  52. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js.map +1 -0
  53. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-ehmPfdn1.js +5 -0
  54. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-Bh6pkITu.js.map → capability-sortable-ehmPfdn1.js.map} +1 -1
  55. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js +2 -0
  56. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js.map +1 -0
  57. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js +2 -0
  58. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js.map +1 -0
  59. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-crMEr9_l.js → controller-CalXJ5hB.js} +2 -2
  60. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-crMEr9_l.js.map → controller-CalXJ5hB.js.map} +1 -1
  61. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DOHj5fa1.js → core-Ybm_WmKr.js} +2 -2
  62. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DOHj5fa1.js.map → core-Ybm_WmKr.js.map} +1 -1
  63. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js +2 -0
  64. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js.map +1 -0
  65. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BAghaHV-.js +2 -0
  66. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BAghaHV-.js.map +1 -0
  67. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D8iA1e6i.js → entry.generated-BQNpmLZO.js} +2 -2
  68. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D8iA1e6i.js.map → entry.generated-BQNpmLZO.js.map} +1 -1
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BREj4oHG.js +2 -0
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BREj4oHG.js.map +1 -0
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js +2 -0
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js.map +1 -0
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CvL196IN.js → entry.generated-COp9wMCd.js} +2 -2
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CvL196IN.js.map → entry.generated-COp9wMCd.js.map} +1 -1
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BmVGptdJ.js → entry.generated-CVOYoh61.js} +2 -2
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BmVGptdJ.js.map → entry.generated-CVOYoh61.js.map} +1 -1
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js +2 -0
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js.map +1 -0
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_ObpRjR.js +2 -0
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_ObpRjR.js.map +1 -0
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BLduYCHm.js → entry.generated-C_SxTqg5.js} +2 -2
  82. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BLduYCHm.js.map → entry.generated-C_SxTqg5.js.map} +1 -1
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-ollD3I52.js → entry.generated-Cb-VMAE1.js} +2 -2
  84. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-ollD3I52.js.map → entry.generated-Cb-VMAE1.js.map} +1 -1
  85. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js +2 -0
  86. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js.map +1 -0
  87. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Dcm3s3ey.js → entry.generated-D2es_Wi2.js} +2 -2
  88. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Dcm3s3ey.js.map → entry.generated-D2es_Wi2.js.map} +1 -1
  89. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6ai6meC.js +2 -0
  90. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6ai6meC.js.map +1 -0
  91. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DYQxGle9.js +2 -0
  92. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DYQxGle9.js.map +1 -0
  93. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_jeOgRf.js +2 -0
  94. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_jeOgRf.js.map +1 -0
  95. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVOBR4CK.js → entry.generated-DaXIKPN9.js} +2 -2
  96. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVOBR4CK.js.map → entry.generated-DaXIKPN9.js.map} +1 -1
  97. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DqL-zI7j.js +2 -0
  98. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DqL-zI7j.js.map +1 -0
  99. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C3y5qBcc.js → entry.generated-EqHVGr1d.js} +2 -2
  100. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C3y5qBcc.js.map → entry.generated-EqHVGr1d.js.map} +1 -1
  101. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js +2 -0
  102. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js.map +1 -0
  103. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-z3EbXrD0.js +2 -0
  104. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-z3EbXrD0.js.map +1 -0
  105. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-XeJ05afl.js → flip-Bzn312Nc.js} +2 -2
  106. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-XeJ05afl.js.map → flip-Bzn312Nc.js.map} +1 -1
  107. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-pk_lz9sg.js +2 -0
  108. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-pk_lz9sg.js.map +1 -0
  109. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js +2 -0
  110. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js.map +1 -0
  111. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-CbwLBhMt.js → motion-DI5H1Js0.js} +3 -3
  112. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-CbwLBhMt.js.map → motion-DI5H1Js0.js.map} +1 -1
  113. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-C9PrQrca.js → styles-CQDZhwd_.js} +2 -2
  114. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-C9PrQrca.js.map → styles-CQDZhwd_.js.map} +1 -1
  115. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CTQoglp3.js +4 -0
  116. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CTQoglp3.js.map +1 -0
  117. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
  118. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -1
  119. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +1 -1
  120. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  121. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  122. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -1
  123. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +1 -1
  124. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
  125. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
  126. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +1 -1
  127. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  128. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  129. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
  130. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  131. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  132. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -1
  133. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
  134. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  135. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  136. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +1 -1
  137. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +1 -1
  138. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
  139. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  140. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +184 -170
  141. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +11 -11
  142. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +11 -11
  143. package/packages/client/src/styles/layout-participation.css +0 -17
  144. package/packages/client/types/runtime/focus-handoff.d.ts +0 -12
  145. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BwvEqEbL.js +0 -2
  146. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BwvEqEbL.js.map +0 -1
  147. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bh6pkITu.js +0 -5
  148. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-BbxUBQFs.js +0 -2
  149. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-BbxUBQFs.js.map +0 -1
  150. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-De1R7Xh6.js +0 -2
  151. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-De1R7Xh6.js.map +0 -1
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-FA9FLGtB.js +0 -2
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-FA9FLGtB.js.map +0 -1
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B41qiwNq.js +0 -2
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B41qiwNq.js.map +0 -1
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B7n4iFyw.js +0 -2
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B7n4iFyw.js.map +0 -1
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BeNK2EFl.js +0 -2
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BeNK2EFl.js.map +0 -1
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bq2KAnfO.js +0 -2
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bq2KAnfO.js.map +0 -1
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C3cRWutN.js +0 -2
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C3cRWutN.js.map +0 -1
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CGasYxmV.js +0 -2
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CGasYxmV.js.map +0 -1
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CyynUmGS.js +0 -2
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CyynUmGS.js.map +0 -1
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DScbsE6-.js +0 -2
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DScbsE6-.js.map +0 -1
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DjKX5KuB.js +0 -2
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DjKX5KuB.js.map +0 -1
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-R1BlPlZW.js +0 -2
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-R1BlPlZW.js.map +0 -1
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-iMJrYzAB.js +0 -2
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-iMJrYzAB.js.map +0 -1
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-n_t4T8XC.js +0 -2
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-n_t4T8XC.js.map +0 -1
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-BE3g0swK.js +0 -2
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-BE3g0swK.js.map +0 -1
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js +0 -2
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js.map +0 -1
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CGwc8KXJ.js +0 -4
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CGwc8KXJ.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{t as e}from"./styles-CX2j92ex.js";import{a as t}from"./common-De1R7Xh6.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-C9PrQrca.js.map
1
+ import{t as e}from"./styles-CX2j92ex.js";import{a as t}from"./common-CBK89mIt.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-CQDZhwd_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles-C9PrQrca.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"}
1
+ {"version":3,"file":"styles-CQDZhwd_.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{n as e}from"./object-SRW-YaCA.js";import{r as t,t as n}from"./bridge-DMrvM3JE.js";import{n as r,r as i}from"./morph-Cq3V_23_.js";import{n as a}from"./alpine-machine-CE2UN4Qu.js";import{t as o}from"./dom-invalidation-Dw6clnS4.js";import{t as s}from"./focus-pk_lz9sg.js";import{n as c}from"./fragment-9OT0mn7F.js";var l=(e,...t)=>{typeof console<`u`&&console.warn(e,...t)},u=`single-child`,d=(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`)!==u)return null;let i=r.getAttribute(`data-ui-key`)||r.id;return i?`${i}:single-child`:null},f=`data-ui-motion-key`,p=`data-ui-motion-layout`,m=e=>typeof e==`object`&&!!e&&Symbol.iterator in e,h=(e=document)=>typeof e==`string`?Array.from(document.querySelectorAll(e)):e instanceof Document||e instanceof Element?[e]:m(e)?Array.from(e):[document],g=(e=document,t={})=>{let n=h(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,p,``);let n=d(e,t.key);n&&!e.hasAttribute(`data-ui-motion-key`)&&i(e,f,n)}),()=>{r.reverse().forEach(({element:e,attr:t,previous:n})=>{if(n===null){e.removeAttribute(t);return}e.setAttribute(t,n)})}},_=new Set,v=!1,y=null,b=null,x=null,S=Promise.resolve(),C=0,w=e=>{for(let t of e)_.add(t);v||_.size===0||(v=!0,queueMicrotask(()=>{v=!1;let e=Array.from(_);_.clear(),e.forEach(e=>e.invalidateDom())}))},T=e=>{let t=document.createElement(`template`);return t.innerHTML=e,t},E=e=>Array.from(T(e).content.children).filter(e=>e instanceof HTMLElement),D=(e,t)=>{t.forEach(t=>e.initTree(t))},ee=(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)},ne=(e,t,n)=>{let r=ee(t,n.mode);if(r===`remove`){t.remove();return}if(!n.html){l(`x-ui-stream: received patch with no html`);return}if(r===`morph`||r===`outer`){if(typeof e.morph==`function`){let r=new Set;e.morph(t,n.html,{key(e){return d(e)},updating(e,t,r,a){if(e instanceof Element&&b?.(n.requestId??null,e)){a?.();return}i(e,t)},updated(t){if(!(t instanceof Element))return;let n=a(e,t);n&&r.add(n),o(t).forEach(e=>{r.add(e)})},removing(e){e instanceof Element&&o(e).forEach(e=>{r.add(e)})}}),w(r);return}l(`x-ui-stream: morph mode requires an Alpine morph implementation; falling back to replace`)}if(r===`replace`||r===`morph`||r===`outer`){let[r]=E(n.html);if(!r){l(`x-ui-stream: replace mode produced no element`);return}t.replaceWith(r),e.initTree(r);return}if(r===`update`){c(e,t,n.html);return}let s=T(n.html),u=Array.from(s.content.children).filter(e=>e instanceof HTMLElement);if(r===`append`){t.append(s.content),D(e,u);return}if(r===`prepend`){t.prepend(s.content),D(e,u);return}if(r===`before`){t.before(s.content),D(e,u);return}r===`after`&&(t.after(s.content),D(e,u))},O=(e,t)=>{let n=te(t);if(n){ne(e,n,t),t.focus&&s(document.querySelector(t.focus));return}if(t.selector||t.target){l(`x-ui-stream: target not found`,t.selector??t.target);return}if(!t.html){l(`x-ui-stream: received patch with no html`);return}E(t.html).forEach(n=>{if(!n.id){l(`x-ui-stream: top-level element has no id, skipping`,n);return}let r=document.getElementById(n.id);r&&ne(e,r,{...t,html:n.outerHTML})}),t.focus&&s(document.querySelector(t.focus))},k=(e,t)=>{let r=Array.isArray(t)?t:[t],i=()=>{r.forEach(t=>O(e,t))},a=()=>{let t=r.filter(e=>e.viewTransition===!0);if(t.length===0){i();return}x?x(e,t,i):i()},o=r.flatMap(e=>e.assets??[]);if(o.length===0&&C===0){a();return}C+=1;let s=async()=>{o.length>0&&await n(o,e),a()};S=S.then(s,s).catch(()=>void 0).finally(()=>{--C})},re=e=>{x=e},ie=e=>{document.dispatchEvent(new CustomEvent(e.event,{detail:e.detail??{},bubbles:!0,composed:!0}))},A=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 l(`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},j=(e,t)=>{let n=e.get(t);if(n?.length)return n.length>1&&l(`x-ui-stream: duplicate SSE command, using last value`,t),n.at(-1)},ae=(e,n)=>{let r=A(n);if(!r||r.size===0)return;let i=j(r,`request-id`);if(y&&!y(i??null))return;let a,o=j(r,`assets`);if(o!==void 0)try{let e=JSON.parse(o);a=t(e)}catch{l(`x-ui-stream: invalid patch assets JSON`,o);return}k(e,{mode:j(r,`mode`)??`replace`,target:j(r,`target`)??null,selector:j(r,`selector`)??null,html:r.get(`html`)?.join(`
3
+ `)??null,requestId:i??null,viewTransition:j(r,`view-transition`)===`true`,focus:j(r,`focus`)??null,...a?{assets:a}:{}})},oe=t=>{let n=A(t);if(!n)return;let r=j(n,`request-id`);if(y&&!y(r??null))return;let i=j(n,`event`);if(!i){l(`x-ui-stream: dispatch SSE frame missing event`);return}let a=j(n,`detail`),o={};if(a)try{let t=JSON.parse(a);e(t)&&(o=t)}catch{l(`x-ui-stream: invalid dispatch detail JSON`,a);return}ie({event:i,detail:o})},M={"trellis-ui-patch":ae,"trellis-ui-dispatch":(e,t)=>oe(t)},se=`trellis-ui-`,ce=(e,t)=>{let n=M[t.event];if(!n){t.event.startsWith(se)&&l(`x-ui-stream: unsupported SSE event`,t.event);return}n(e,t)},le=(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}`},ue=(e,t,n=``,r=``,i={})=>{let a=new EventSource(le(t,n,r,i.lastEventId)),o=!0,s=e=>{e.lastEventId&&i.eventId?.(e.lastEventId)};return Object.keys(M).forEach(t=>{a.addEventListener(t,t=>{o&&t instanceof MessageEvent&&(s(t),ce(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()}}},N=new Map,de=new Set,fe=e=>e instanceof HTMLElement&&e.id?e.id:e,pe=6e4,me=1e3,he=2e3,ge=1e3,_e=3e4,ve=(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)=>le(t,e.dataset.uiStreamScopes),be=e=>e.dataset.uiStreamOpenWhenHidden===`true`,xe=(e,t)=>JSON.stringify({openWhenHidden:be(e),url:ye(e,t)}),Se=e=>{let t=e.dataset.uiStreamClient,n=Number(e.dataset.uiStreamClientExpires);return!t||Number.isFinite(n)&&n>0&&n<=Date.now()?null:t},Ce=e=>{let t=Number(e.dataset.uiStreamTimeout);return Number.isFinite(t)&&t>=0?t:5e3},we=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},Te=(e,t,n)=>{let i=xe(t,n),a=null,o,s=null,c=null,u,d,f=!1,p=``,m=0,h=0,g=!1,_=!1,v=`connecting`,y=new Set,b=new Map,x=new Set,S=be(t),C=()=>!g&&(S||document.visibilityState===`visible`),w=()=>{window.clearTimeout(u),u=void 0},T=e=>{Array.from(y).forEach(t=>t.resolve(e))},E=(e,n={})=>{if(e!==`reset`&&(v=e),ve(t,e,n),e===`open`){let e=Se(t);e&&T({token:e})}else(e===`disconnected`||e===`error`)&&T(null)},D=()=>{t.dispatchEvent(new CustomEvent(`ui:stream:resumed`,{bubbles:!0,composed:!0}))},ee=r=>{a?.abort(),w();let o=++m;i=xe(t,n),E(`connecting`),a=ue(e,n,t.dataset.uiStreamScopes,r,{lastEventId:p,open:()=>{if(o!==m)return;let e=f;f=!0,h=0,E(`open`),e&&D()},disconnected:()=>{if(o!==m||_||(a=null,M.controller=null,E(`disconnected`),!C()))return;let e=Math.min(ge*2**h,_e);h+=1;let t=Math.floor(Math.random()*e);u=window.setTimeout(()=>{u=void 0,k()},t)},reset:e=>E(`reset`,{data:e}),eventId:e=>{o===m&&(p=e)},error:e=>{o!==m||_||(g=!0,a=null,M.controller=null,w(),E(`error`,{data:e}))}}),M.controller=a,M.configuration=i,te()},te=()=>{if(window.clearTimeout(o),o=void 0,!C())return;let e=Number(t.dataset.uiStreamClientExpires);if(!Number.isFinite(e)||e<=0)return;let n=e-Date.now()-pe;if(n<=0){O();return}o=window.setTimeout(()=>void O(),n)},ne=()=>{if(_)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 _?null:(t.dataset.uiStreamClient=n.token,t.dataset.uiStreamClientExpires=String(n.expiresAt),n.token)}).catch(e=>{l(`x-ui-stream: could not refresh ClientSession`,e);let n=Number(t.dataset.uiStreamClientExpires);return!Number.isFinite(n)||n<=Date.now()?(E(`error`,{error:e}),null):(C()&&(o=window.setTimeout(()=>void O(),5e3)),t.dataset.uiStreamClient??null)}).finally(()=>{s=null}),s):(E(`error`,{reason:`missing-refresh-url`}),Promise.resolve(null))},O=()=>C()?c||(c=ne().then(e=>{e&&C()&&!_&&ee(e)}).finally(()=>{c=null}),c):Promise.resolve(),k=async()=>{if(_||!C()||a)return;let e=Number(t.dataset.uiStreamClientExpires),n=t.dataset.uiStreamClient??``;if(Number.isFinite(e)&&e>0&&e-Date.now()<=pe){await O();return}let r=n;r&&C()&&!_&&!a&&ee(r)},re=()=>{d=void 0,!(_||S||document.visibilityState!==`hidden`)&&(x.size>0||(b.forEach(e=>e.abort(`Document suspended`)),b.clear(),window.clearTimeout(o),o=void 0,w(),a?.abort(),a=null,E(`suspended`),M.controller=null))},ie=e=>{window.clearTimeout(d),d=void 0,!(S||document.visibilityState!==`hidden`)&&(d=window.setTimeout(re,e))},A=()=>{g||O()},j=e=>{let t=we(e);if(t){if(t.method===`GET`){b.set(t.requestId,t.controller);return}x.add(t.requestId),document.visibilityState===`hidden`&&!S&&(window.clearTimeout(d),d=void 0)}},ae=e=>{let t=we(e);if(t){if(t.method===`GET`){b.delete(t.requestId);return}x.delete(t.requestId),document.visibilityState===`hidden`&&!S&&x.size===0&&ie(he)}},oe=()=>{if(!(S||g)){if(document.visibilityState===`hidden`){if(x.size>0)return;ie(me);return}window.clearTimeout(d),d=void 0,a||k()}},M={acquireClientSession(e){if(e.aborted||_||g)return Promise.resolve(null);let n=Se(t);if(v===`open`&&n)return Promise.resolve({token:n});if(v===`error`||v===`disconnected`)return Promise.resolve(null);let r=new Promise(n=>{let r=!1,i=t=>{r||(r=!0,window.clearTimeout(a.timeoutId),e.removeEventListener(`abort`,a.abort),y.delete(a),n(t))},a={abort:()=>i(null),resolve:i,timeoutId:window.setTimeout(()=>i(null),Ce(t))};y.add(a),e.addEventListener(`abort`,a.abort,{once:!0})});return n?!a&&C()&&k():O(),r},configuration:i,controller:null,element:t,dispose(){_||(_=!0,window.clearTimeout(o),window.clearTimeout(d),w(),T(null),t.removeEventListener(`ui:stream:refresh`,A),document.removeEventListener(`visibilitychange`,oe),document.removeEventListener(`ui:request:start`,j),document.removeEventListener(`ui:request:finish`,ae),a?.abort())},rescheduleRefresh:te};return r(t,`data-ui-stream-state`),t.addEventListener(`ui:stream:refresh`,A),document.addEventListener(`visibilitychange`,oe),document.addEventListener(`ui:request:start`,j),document.addEventListener(`ui:request:finish`,ae),C()?k():E(`suspended`),M},Ee=e=>Array.from(N.values()).find(e=>!!e.element.dataset.uiStreamClient)?.acquireClientSession(e)??Promise.resolve(null),De=(e,t)=>{t.dataset.uiStreamState=e.element.dataset.uiStreamState??`connecting`,t.dataset.uiStreamClient=e.element.dataset.uiStreamClient??``;let n=e.element.dataset.uiStreamClientExpires;n===void 0?delete t.dataset.uiStreamClientExpires:t.dataset.uiStreamClientExpires=n,r(t,`data-ui-stream-state`)},Oe=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){l(`x-ui-stream: missing signed ClientSession capability`);return}let a=fe(t),o=N.get(a),s=xe(t,n);if(o?.configuration===s){De(o,t),queueMicrotask(()=>o.rescheduleRefresh());return}if(!t.isConnected&&typeof a==`string`){de.has(a)||(de.add(a),queueMicrotask(()=>{de.delete(a);let t=document.getElementById(a);if(!t)return;let r=N.get(a),i=xe(t,n);if(r?.configuration===i){De(r,t),r.rescheduleRefresh();return}r?.dispose(),N.set(a,Te(e,t,n))}));return}o?.dispose(),N.set(a,Te(e,t,n)),r(()=>{let e=N.get(a);e?.element===t&&(e.dispose(),N.delete(a))})})},ke=e=>{y=e},Ae=e=>{b=e},je=`X-Trellis-UI-Request`,Me=`X-Trellis-Client`,Ne=`X-Trellis-Request-ID`,Pe=`X-Trellis-Navigate`,Fe=`X-Trellis-Navigate-History`,Ie=`meta[name="csrf-token"]`,Le=`text/event-stream`,Re=`data-ui-request-pending`,ze=`application/x-www-form-urlencoded`,Be=`multipart/form-data`,Ve=new Set([`GET`]),He=null,Ue=null,We=e=>{let t=(e||`GET`).toUpperCase();return t===`POST`||t===`PUT`||t===`PATCH`||t===`DELETE`?t:`GET`},Ge=(e,t,n)=>{if(e instanceof FormData){e.append(t,n);return}e.append(t,n instanceof File?n.name:String(n))},Ke=(e,t,n)=>{if(Array.isArray(n)){n.forEach(n=>Ke(e,t,n));return}n!=null&&Ge(e,t,n instanceof Blob?n:String(n))},qe=(e,t)=>{Object.entries(t).forEach(([t,n])=>Ke(e,t,n))},Je=(e,t)=>{if(t){if(t instanceof FormData||t instanceof URLSearchParams){for(let[n,r]of t.entries())Ge(e,n,r);return}qe(e,t)}},Ye=(e,t)=>{let n=new Headers(e);n.set(je,`true`);let r=document.querySelector(Ie)?.content;return r&&n.set(`X-CSRFToken`,r),t instanceof URLSearchParams&&!n.has(`Content-Type`)&&n.set(`Content-Type`,ze),n},Xe=(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)},Ze=(e,t)=>t?.getAttribute(`formenctype`)||e.enctype||ze,Qe=e=>{if(!(e instanceof HTMLButtonElement||e instanceof HTMLInputElement))return null;let t=e.getAttribute(`name`);return t?[t,e.value]:null},$e=(e,t)=>{let n=new FormData(e),r=Qe(t);return r&&n.append(...r),n},et=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},tt=(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 qe(n,e),{payload:n,explicit:!0}},nt=(e,t)=>{if(!t)return e;if(e instanceof FormData||e instanceof URLSearchParams)return Je(e,t),e;let n=new URLSearchParams;return typeof e==`string`&&n.append(`data`,e),Je(n,t),n},rt=(e,t)=>e instanceof HTMLFormElement?{payload:$e(e,t),enctype:Ze(e,t)}:{payload:new URLSearchParams,enctype:ze},it=(e,t,n)=>t?We(t):e instanceof HTMLFormElement?We(n?.getAttribute(`formmethod`)||e.getAttribute(`method`)):`GET`,at=(e,t={})=>{let n=t.source,r=t.submitter??null,i=it(n,t.method,r),a=Xe(e,n,r),o=rt(n,r),s=tt(t.data,o.payload),c=nt(s.payload,t.extra),l={method:i,...t.cache?{cache:t.cache}:{}},u=null;return Ve.has(i)?c instanceof FormData||c instanceof URLSearchParams?et(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===Be)?c:c instanceof FormData?et(c):c,l.headers=Ye(t.headers,u),u!=null&&(l.body=u),{url:a,method:i,init:l}},ot=e=>e?.isConnected?e:document,st=(e,t,n={})=>new CustomEvent(e,{bubbles:!0,composed:!0,cancelable:n.cancelable??!1,detail:t}),P=(e,t,n,r)=>ot(t).dispatchEvent(st(e,n,r)),F=new WeakMap,ct=e=>{if(!e)return;let t=F.get(e)??0;F.set(e,t+1),e.setAttribute(`aria-busy`,`true`),e.setAttribute(Re,`true`)},lt=e=>{if(!e)return;let t=(F.get(e)??1)-1;if(t>0){F.set(e,t);return}F.delete(e),e.removeAttribute(`aria-busy`),e.removeAttribute(Re)},ut=e=>e.headers.get(`Content-Type`)?.toLowerCase().includes(Le)??!1,dt=async e=>{let t=e.headers.get(Pe);if(t){let n=e.headers.get(Fe)??`auto`;return n!==`auto`&&n!==`push`&&n!==`replace`?(l(`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&&!ut(e)?(window.location.assign(e.url),{response:e,type:`redirect`,url:e.url}):(l(`x-ui-request: expected an empty response`,e),{response:e,type:`other`,url:e.url})},ft=(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)}},pt=(e,t)=>t.aborted||e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`AbortError`,mt=async(e,t,n={})=>{let r=n.source,i=new AbortController,a=n.requestId??crypto.randomUUID(),o=at(t,n),s=ft(i,n.signal),c=s.signal;o.init.signal=c,o.init.headers.set(Ne,a);let l=await Ee(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(Me,l.token);let u={source:r??document,url:o.url.toString(),method:o.method,requestInit:o.init,requestId:a,controller:i,signal:c};if(!P(`ui:request:before`,r,u,{cancelable:!0}))return s.cleanup(),{requestId:a,response:null,type:`cancelled`,url:o.url.toString()};ct(r),P(`ui:request:start`,r,u);try{let e=await fetch(o.url.toString(),o.init),t=await dt(e);u.response=e,u.responseType=t.type,e.ok&&t.type!==`other`||t.type===`redirect`?P(`ui:request:success`,r,u):P(`ui:request:error`,r,u);let n={...t,requestId:a};return n.type===`navigate`&&Ue?.(n),n}catch(e){if(pt(e,c))return u.responseType=`aborted`,{requestId:a,response:null,type:`aborted`,url:o.url.toString()};throw u.error=e,P(`ui:request:error`,r,u),e}finally{s.cleanup(),lt(r),P(`ui:request:finish`,r,u)}},ht=()=>{if(!He)throw Error(`Trellis request runtime has not been registered with Alpine.`);return He},I=(e,t={})=>mt(ht(),e,t),gt=(e,t={})=>I(e,{...t,method:`GET`}),_t=(e,t={})=>I(e,{...t,method:`POST`}),vt=(e,t={})=>I(e,{...t,method:`PUT`}),yt=(e,t={})=>I(e,{...t,method:`DELETE`}),bt=e=>{He=e},xt=e=>{Ue=e},St=`__trellis`,Ct=`[data-ui-scroll-restoration]`,wt=150,Tt=20,Et=100,Dt=!1,L=null,R=0,z=``,Ot=!1,B=null,V=new Map,H=new Set,U=new Map,W=()=>crypto.randomUUID(),kt=()=>({containers:{},window:{x:0,y:0}}),At=e=>e.getAttribute(`data-ui-scroll-restoration`)?.trim()||e.id||null,G=()=>{let e={};return document.querySelectorAll(Ct).forEach(t=>{let n=At(t);n&&(e[n]={x:t.scrollLeft,y:t.scrollTop})}),{containers:e,window:{x:window.scrollX,y:window.scrollY}}},jt=(e,t)=>{if(e.window.x!==t.window.x||e.window.y!==t.window.y)return!1;let n=Object.keys(e.containers),r=Object.keys(t.containers);return n.length===r.length&&n.every(n=>{let r=e.containers[n],i=t.containers[n];return!!(r&&i&&r.x===i.x&&r.y===i.y)})},K=t=>{if(!e(t))return null;let n=t[St];if(!e(n))return null;let r=n.navigate;return!e(r)||typeof r.id!=`string`||typeof r.index!=`number`||typeof r.url!=`string`||!e(r.scroll)?null:r},Mt=t=>{let n=e(window.history.state)?window.history.state:{},r=e(n.__trellis)?n[St]:{};return{...n,[St]:{...r,navigate:t}}},q=(e,t=e.url)=>{window.history.replaceState(Mt(e),``,t),z=new URL(t,document.baseURI).href},Nt=()=>{let e=K(window.history.state);if(!e)return;let t=G();V.set(e.id,t),!jt(e.scroll,t)&&q({...e,scroll:t})},J=()=>{B!==null&&(window.clearTimeout(B),B=null),Nt()},Pt=()=>{let e=K(window.history.state);if(!e)return;let t=G();V.set(e.id,t),!jt(e.scroll,t)&&(B!==null&&window.clearTimeout(B),B=window.setTimeout(()=>{B=null;let e=K(window.history.state);if(!e)return;let t=V.get(e.id);t&&!jt(e.scroll,t)&&q({...e,scroll:t})},wt))},Ft=e=>{requestAnimationFrame(()=>{window.scrollTo({left:e.window.x,top:e.window.y,behavior:`instant`}),document.querySelectorAll(Ct).forEach(t=>{let n=At(t),r=n?e.containers[n]:void 0;t.scrollTo({left:r?.x??0,top:r?.y??0,behavior:`instant`})})})},Y=(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}}))},It=e=>{for(U.set(e.requestId,e);U.size>Tt;){let e=U.keys().next().value;if(!e)break;U.delete(e)}},Lt=e=>{for(H.add(e);H.size>Et;){let e=H.values().next().value;if(!e)break;H.delete(e)}},Rt=()=>{L&&=(Lt(L.requestId),L.controller.abort(`Superseded by a newer Trellis navigation`),null)},zt=()=>{Rt(),U.forEach(e=>Lt(e.requestId)),U.clear()},X=e=>{window.location.assign(e.href)},Z=e=>{let t=new URL(e,document.baseURI);return t.origin===window.location.origin?t:null},Bt=e=>{J();let t={id:W(),index:R+1,scroll:kt(),url:e.destination.href};return R=t.index,window.history.pushState(Mt(t),``,e.destination),z=e.destination.href,e.entryId=t.id,t},Vt=e=>{let t={id:W(),index:R,scroll:kt(),url:e.destination.href};return q(t,e.destination),e.entryId=t.id,t},Ht=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},Ut=(e,t)=>{t?.type!==`aborted`&&t?.type!==`cancelled`&&t?.type!==`redirect`&&X(e.destination)},Wt=(e,t,n)=>{if(H.has(e.requestId))return;if(t.type!==`empty`){Ut(e,t);return}let r=n??(Ht(e)?Vt(e):Bt(e));if(n&&e.destination.href!==n.url){let t={...n,url:e.destination.href};q(t,e.destination),e.entryId=t.id}Ft(r.scroll),Y(`ui:navigated`,e)},Gt=(e,t,n)=>{let r={controller:new AbortController,destination:t,entryId:n.restoredState?.id??null,history:n.history,disposition:n.disposition??`auto`,requestId:W(),...n.requestOptions?{requestOptions:n.requestOptions}:{},...n.source?{source:n.source}:{}};if(n.preflight!==!1&&!Y(`ui:navigate`,r,!0))return Promise.resolve();J(),zt(),L=r,Y(`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 mt(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.type!==`navigate`)return s;let c=Z(s.navigation.url);return c?(r.destination=c,s.navigation.history!==`auto`&&(r.disposition=s.navigation.history),o()):(X(new URL(s.navigation.url,document.baseURI)),{requestId:s.requestId,response:s.response,type:`redirect`,url:s.url})};return o().then(e=>{(L?.requestId===r.requestId||U.has(r.requestId))&&Wt(r,e,n.restoredState)}).catch(e=>{r.controller.signal.aborted||(l(`x-ui-request.navigate: restoration failed`,e),Ut(r))}).finally(()=>{L?.requestId===r.requestId&&(L=null),H.has(r.requestId)||It(r)})},Kt=()=>{let e=K(window.history.state);e?R=e.index:q({id:W(),index:0,scroll:G(),url:window.location.href}),z=window.location.href,`scrollRestoration`in window.history&&(window.history.scrollRestoration=`manual`)},qt=()=>{if(K(window.history.state)?.url===window.location.href)return;let e={id:W(),index:R+1,scroll:G(),url:window.location.href};R=e.index,q(e)},Jt=(e,t)=>e.origin===t.origin&&e.pathname===t.pathname&&e.search===t.search,Yt=e=>{J(),z=e.href},Xt=e=>{Dt||(Dt=!0,Kt(),ke(e=>!e||!H.has(e)),Ae((e,t)=>t.matches(`[data-ui-stream]`)&&!(!e||L?.requestId!==e&&!U.has(e))),xt(t=>{if(t.type!==`navigate`)return!1;if(H.has(t.requestId)||L?.requestId===t.requestId)return!0;let n=Z(t.navigation.url);return n?(Gt(e,n,{history:!1,disposition:t.navigation.history}),!0):(X(new URL(t.navigation.url,document.baseURI)),!0)}),window.addEventListener(`scroll`,Pt,{passive:!0}),document.addEventListener(`scroll`,e=>{e.target instanceof Element&&e.target.matches(`[data-ui-scroll-restoration]`)&&Pt()},{capture:!0,passive:!0}),window.addEventListener(`pagehide`,J),window.addEventListener(`hashchange`,qt),window.addEventListener(`popstate`,t=>{if(Ot){Ot=!1;return}let n=K(t.state);if(!n){qt();return}let r=V.get(n.id),i=r?{...n,scroll:r}:n,a=Z(n.url),o=new URL(window.location.href);if(a&&a.href!==o.href&&Jt(a,o)){zt(),qt();return}if(!a||a.href!==o.href){X(o);return}let s=Z(z);if(s&&s.href!==a.href&&Jt(s,a)){zt(),R=n.index,z=a.href;return}let c=R;if(R=n.index,!Y(`ui:navigate`,{controller:new AbortController,destination:a,entryId:n.id,history:!0,disposition:`replace`,requestId:W()},!0)){Ot=!0,window.history.go(c-n.index),R=c;return}z=a.href,Gt(e,a,{history:!0,preflight:!1,restoredState:i})}))},Zt=(e,t,n,r)=>{let{history:i=`auto`,...a}=r??{};return Gt(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=new WeakMap,nn=(e,t={})=>{let{history:n,navigate:r=!1,...i}=t;if(!r)return gt(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}:{}})},rn=(e,t)=>(n,r={})=>{let{navigate:i=!1,...a}=r;return i&&l(`$ui.${e}: navigate is only supported for GET requests`),t(n,a)},an={get:nn,post:rn(`post`,_t),put:rn(`put`,vt),delete:rn(`delete`,yt),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}},on=()=>{$t||($t=!0,document.addEventListener(`ui:request:start`,()=>{Q.activeRequests+=1}),document.addEventListener(`ui:request:finish`,()=>{Q.activeRequests=Math.max(0,Q.activeRequests-1)}))},sn=e=>{en=e,Qt||=(Q=e.reactive(Q),!0),on();let t=Object.create(an,{sortable:{configurable:!1,enumerable:!0,get:()=>{let t=tn.get(e);if(!t)throw Error(`Trellis Sortable capability is not registered.`);return t}}});e.magic(`ui`,()=>t)},cn=e=>{$.motion=e},ln=(e,t)=>{tn.set(e,t),$.sortable=t};export{Zt as a,bt as c,re as d,f,l as g,d as h,an as i,mt as l,g as m,cn as n,Yt as o,p,ln as r,Xt as s,sn as t,Oe as u};
4
+ //# sourceMappingURL=ui-CTQoglp3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-CTQoglp3.js","names":[],"sources":["../../../../../../../../client/src/utils/warn.ts","../../../../../../../../client/src/runtime/identity.ts","../../../../../../../../client/src/runtime/layout-participant.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 warn = (message: string, ...args: unknown[]): void => {\n if (typeof console !== 'undefined') console.warn(message, ...args);\n};\n\nexport {warn};\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","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 {focusElement} from '../focus';\nimport {declareMorphAttributes, preserveDeclaredMorphAttributes} from '../morph';\nimport {isPlainRecord, warn} from '../../utils';\nimport {loadAssets, parseAssetDescriptors, 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 focus?: string | null;\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 removing?(node: 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 removing(node: Node): void {\n if (!(node instanceof Element)) return;\n findClosestDomInvalidationOwners(node).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 if (payload.focus) focusElement(document.querySelector<HTMLElement>(payload.focus));\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 if (payload.focus) focusElement(document.querySelector<HTMLElement>(payload.focus));\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 !== undefined) {\n try {\n const parsed: unknown = JSON.parse(rawAssets);\n assets = parseAssetDescriptors(parsed);\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 focus: scalarCommand(commands, 'focus') ?? null,\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 (isPlainRecord(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 acquireClientSession(signal: AbortSignal): Promise<ClientSessionCapability | null>;\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};\ntype ClientSessionCapability = {token: string};\ntype ClientSessionWaiter = {\n abort(): void;\n resolve(value: ClientSessionCapability | null): void;\n timeoutId: number;\n};\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)\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 clientSessionToken = (el: HTMLElement): string | null => {\n const token = el.dataset.uiStreamClient;\n const expiresAt = Number(el.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 clientSessionTimeout = (el: HTMLElement): number => {\n const configured = Number(el.dataset.uiStreamTimeout);\n return Number.isFinite(configured) && configured >= 0 ? configured : 5000;\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 rotationPromise: Promise<void> | 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 let lifecycleState: StreamLifecycleName = 'connecting';\n const clientSessionWaiters = new Set<ClientSessionWaiter>();\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 settleClientSessionWaiters = (value: ClientSessionCapability | null): void => {\n Array.from(clientSessionWaiters).forEach((waiter) => waiter.resolve(value));\n };\n\n const transition = (\n name: StreamLifecycleName,\n detail: Record<string, unknown> = {},\n ): void => {\n if (name !== 'reset') lifecycleState = name;\n dispatchStreamLifecycle(el, name, detail);\n if (name === 'open') {\n const token = clientSessionToken(el);\n if (token) settleClientSessionWaiters({token});\n } else if (name === 'disconnected' || name === 'error') {\n settleClientSessionWaiters(null);\n }\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 transition('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 transition('open');\n if (resumed) dispatchResumed();\n },\n disconnected: () => {\n if (generation !== connectionGeneration || disposed) return;\n controller = null;\n managed.controller = null;\n transition('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) => transition('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 transition('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 transition('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 transition('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 = (): Promise<void> => {\n if (!shouldBeConnected()) return Promise.resolve();\n if (rotationPromise) return rotationPromise;\n rotationPromise = refreshCapability()\n .then((token) => {\n if (token && shouldBeConnected() && !disposed) connect(token);\n })\n .finally(() => {\n rotationPromise = null;\n });\n return rotationPromise;\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 if (needsRefresh) {\n await rotateCapability();\n return;\n }\n const token = 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 transition('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 acquireClientSession(signal: AbortSignal): Promise<ClientSessionCapability | null> {\n if (signal.aborted || disposed || terminal) return Promise.resolve(null);\n const token = clientSessionToken(el);\n if (lifecycleState === 'open' && token) return Promise.resolve({token});\n if (lifecycleState === 'error' || lifecycleState === 'disconnected') return Promise.resolve(null);\n\n const acquisition = new Promise<ClientSessionCapability | null>((resolve) => {\n let settled = false;\n const finish = (value: ClientSessionCapability | null): void => {\n if (settled) return;\n settled = true;\n window.clearTimeout(waiter.timeoutId);\n signal.removeEventListener('abort', waiter.abort);\n clientSessionWaiters.delete(waiter);\n resolve(value);\n };\n const waiter: ClientSessionWaiter = {\n abort: () => finish(null),\n resolve: finish,\n timeoutId: window.setTimeout(() => finish(null), clientSessionTimeout(el)),\n };\n clientSessionWaiters.add(waiter);\n signal.addEventListener('abort', waiter.abort, {once: true});\n });\n\n if (!token) void rotateCapability();\n else if (!controller && shouldBeConnected()) void ensureConnected();\n return acquisition;\n },\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 settleClientSessionWaiters(null);\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 transition('suspended');\n }\n return managed;\n};\n\nconst acquireClientSession = (signal: AbortSignal): Promise<ClientSessionCapability | null> => {\n const managed = Array.from(streamControllers.values()).find((stream) => (\n Boolean(stream.element.dataset.uiStreamClient)\n ));\n return managed?.acquireClientSession(signal) ?? Promise.resolve(null);\n};\n\nconst projectManagedStream = (managed: ManagedStream, el: HTMLElement): void => {\n el.dataset.uiStreamState = managed.element.dataset.uiStreamState ?? 'connecting';\n el.dataset.uiStreamClient = managed.element.dataset.uiStreamClient ?? '';\n const expiresAt = managed.element.dataset.uiStreamClientExpires;\n if (expiresAt === undefined) delete el.dataset.uiStreamClientExpires;\n else el.dataset.uiStreamClientExpires = expiresAt;\n declareMorphAttributes(el, 'data-ui-stream-state');\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 projectManagedStream(existing, el);\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 projectManagedStream(current, live);\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 acquireClientSession,\n dispatchStreamEvent,\n registerStream,\n registerStreamPatchAnimator,\n setEffectRequestFilter,\n setMorphExclusionFilter,\n streamUrl,\n};\nexport type {\n PatchMode,\n ClientSessionCapability,\n SseFrame,\n StreamAlpine,\n StreamEventPayload,\n StreamPatchAnimator,\n StreamPatchPayload,\n UiEffectPayload,\n};\n","import type Alpine from 'alpinejs';\nimport {acquireClientSession, 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 RequestResultBase = {\n requestId: string;\n url: string;\n};\ntype NavigateRequestOutcome = {\n type: 'navigate';\n response: Response;\n navigation: {history: NavigationHistory; url: string};\n};\ntype ResponseRequestOutcome = {\n response: Response;\n navigation?: never;\n} & (\n {type: 'empty'}\n | {type: 'redirect'}\n | {type: 'other'}\n);\ntype NoResponseRequestOutcome = {\n response: null;\n navigation?: never;\n} & (\n {type: 'aborted'}\n | {type: 'cancelled'}\n | {type: 'unavailable'}\n);\ntype RequestResponseOutcome = NavigateRequestOutcome | ResponseRequestOutcome;\ntype RequestResult = RequestResultBase & (RequestResponseOutcome | NoResponseRequestOutcome);\ntype ClassifiedResponse = Pick<RequestResultBase, 'url'> & RequestResponseOutcome;\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 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<ClassifiedResponse> => {\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\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 = await acquireClientSession(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: RequestResult = {...result, requestId};\n if (requestResult.type === 'navigate') 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 {isPlainRecord, 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 SCROLL_SAVE_DELAY = 150;\nconst COMPLETED_SESSION_LIMIT = 20;\nconst CANCELLED_REQUEST_LIMIT = 100;\n\nlet registered = false;\nlet activeSession: NavigationSession | null = null;\nlet currentIndex = 0;\nlet currentUrl = '';\nlet ignoreNextPopstate = false;\nlet scrollSaveTimer: 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 equalScrollStates = (left: ScrollState, right: ScrollState): boolean => {\n if (left.window.x !== right.window.x || left.window.y !== right.window.y) return false;\n const leftKeys = Object.keys(left.containers);\n const rightKeys = Object.keys(right.containers);\n if (leftKeys.length !== rightKeys.length) return false;\n return leftKeys.every((key) => {\n const leftPosition = left.containers[key];\n const rightPosition = right.containers[key];\n return Boolean(\n leftPosition\n && rightPosition\n && leftPosition.x === rightPosition.x\n && leftPosition.y === rightPosition.y\n );\n });\n};\n\nconst navigateStateFrom = (state: unknown): NavigateHistoryState | null => {\n if (!isPlainRecord(state)) return null;\n const trellis = state[HISTORY_NAMESPACE];\n if (!isPlainRecord(trellis)) return null;\n const navigate = trellis.navigate;\n if (!isPlainRecord(navigate)) return null;\n if (\n typeof navigate.id !== 'string'\n || typeof navigate.index !== 'number'\n || typeof navigate.url !== 'string'\n || !isPlainRecord(navigate.scroll)\n ) return null;\n return navigate as NavigateHistoryState;\n};\n\nconst mergedHistoryState = (navigate: NavigateHistoryState): Record<string, unknown> => {\n const state = isPlainRecord(window.history.state) ? window.history.state : {};\n const namespace = isPlainRecord(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 currentUrl = new URL(url, document.baseURI).href;\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 if (equalScrollStates(navigate.scroll, scroll)) return;\n replaceEntry({...navigate, scroll});\n};\n\nconst flushCurrentScroll = (): void => {\n if (scrollSaveTimer !== null) {\n window.clearTimeout(scrollSaveTimer);\n scrollSaveTimer = null;\n }\n saveCurrentScroll();\n};\n\nconst scheduleCurrentScroll = (): void => {\n const navigate = navigateStateFrom(window.history.state);\n if (!navigate) return;\n const scroll = captureScroll();\n scrollSnapshots.set(navigate.id, scroll);\n if (equalScrollStates(navigate.scroll, scroll)) return;\n if (scrollSaveTimer !== null) window.clearTimeout(scrollSaveTimer);\n scrollSaveTimer = window.setTimeout(() => {\n scrollSaveTimer = null;\n const current = navigateStateFrom(window.history.state);\n if (!current) return;\n const latest = scrollSnapshots.get(current.id);\n if (latest && !equalScrollStates(current.scroll, latest)) {\n replaceEntry({...current, scroll: latest});\n }\n }, SCROLL_SAVE_DELAY);\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 currentUrl = session.destination.href;\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 flushCurrentScroll();\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.type !== 'navigate') return result;\n\n const redirected = internalUrl(result.navigation.url);\n if (!redirected) {\n nativeNavigate(new URL(result.navigation.url, document.baseURI));\n return {\n requestId: result.requestId,\n response: result.response,\n type: 'redirect',\n url: result.url,\n };\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 currentUrl = window.location.href;\n if ('scrollRestoration' in window.history) window.history.scrollRestoration = 'manual';\n};\n\nconst adoptNativeHistoryEntry = (): void => {\n const existing = navigateStateFrom(window.history.state);\n if (existing?.url === window.location.href) return;\n const navigate: NavigateHistoryState = {\n id: navigationId(),\n index: currentIndex + 1,\n scroll: captureScroll(),\n url: window.location.href,\n };\n currentIndex = navigate.index;\n replaceEntry(navigate);\n};\n\nconst sameDocument = (left: URL, right: URL): boolean => (\n left.origin === right.origin\n && left.pathname === right.pathname\n && left.search === right.search\n);\n\nconst prepareNativeFragmentNavigation = (destination: URL): void => {\n flushCurrentScroll();\n currentUrl = destination.href;\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.type !== 'navigate') 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', (event) => {\n if (event.target instanceof Element && event.target.matches(SCROLL_CONTAINER_SELECTOR)) {\n scheduleCurrentScroll();\n }\n }, {capture: true, passive: true});\n window.addEventListener('pagehide', flushCurrentScroll);\n window.addEventListener('hashchange', adoptNativeHistoryEntry);\n window.addEventListener('popstate', (event) => {\n if (ignoreNextPopstate) {\n ignoreNextPopstate = false;\n return;\n }\n const restoredState = navigateStateFrom(event.state);\n if (!restoredState) {\n adoptNativeHistoryEntry();\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 const location = new URL(window.location.href);\n if (destination && destination.href !== location.href && sameDocument(destination, location)) {\n supersedePriorNavigations();\n adoptNativeHistoryEntry();\n return;\n }\n if (!destination || destination.href !== location.href) {\n nativeNavigate(location);\n return;\n }\n\n const departed = internalUrl(currentUrl);\n if (departed && departed.href !== destination.href && sameDocument(departed, destination)) {\n supersedePriorNavigations();\n currentIndex = restoredState.index;\n currentUrl = destination.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 currentUrl = destination.href;\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 prepareNativeFragmentNavigation,\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 {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?: UiSortableService;\n};\n\nlet state: UiState = {activeRequests: 0};\nlet reactive = false;\nlet listening = false;\nlet capabilities: UiCapabilities = {};\nlet AlpineRuntime: Alpine.Alpine | null = null;\nconst alpineSortable = new WeakMap<Alpine.Alpine, UiSortableService>();\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 const runtime = Object.create(ui, {\n sortable: {\n configurable: false,\n enumerable: true,\n get: () => {\n const service = alpineSortable.get(AlpineInstance);\n if (!service) throw new Error('Trellis Sortable capability is not registered.');\n return service;\n },\n },\n }) as UiRuntime;\n AlpineInstance.magic('ui', () => runtime);\n};\nconst registerUiMotion = (value: typeof motion): void => {\n capabilities.motion = value;\n};\nconst registerUiSortable = (AlpineInstance: Alpine.Alpine, value: UiSortableService): void => {\n alpineSortable.set(AlpineInstance, value);\n capabilities.sortable = value;\n};\n\nexport {registerUiMagic, registerUiMotion, registerUiSortable, ui};\nexport type {UiCapabilities, UiGetOptions, UiRequestOptions, UiRuntime};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-BeNK2EFl.js";export{e as UiAccordion,t as default,t as registerAccordion};
1
+ import{n as e,t}from"../chunks/entry.generated-D6ai6meC.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-Dcm3s3ey.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-D2es_Wi2.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-CvL196IN.js";export{e as UiDataGrid,t as default,t as registerDataGrid};
1
+ import{n as e,t}from"../chunks/entry.generated-COp9wMCd.js";export{e as UiDataGrid,t as default,t as registerDataGrid};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-C3cRWutN.js";export{e as UiDatePicker,t as default,t as registerDatePicker};
1
+ import{n as e,t}from"../chunks/entry.generated-C_ObpRjR.js";export{e as UiDatePicker,t as default,t as registerDatePicker};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-CGasYxmV.js";export{e as UiDropdown,t as default,t as registerDropdown};
1
+ import{n as e,t}from"../chunks/entry.generated-BAghaHV-.js";export{e as UiDropdown,t as default,t as registerDropdown};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-BLduYCHm.js";export{e as UiField,t as default,t as registerField};
1
+ import{n as e,t}from"../chunks/entry.generated-C_SxTqg5.js";export{e as UiField,t as default,t as registerField};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-B7n4iFyw.js";export{e as UiFormset,t as default,t as registerFormset};
1
+ import{n as e,t}from"../chunks/entry.generated-xjydizn-.js";export{e as UiFormset,t as default,t as registerFormset};
@@ -1,2 +1,2 @@
1
- import{t as e}from"../chunks/motion-CbwLBhMt.js";import{n as ee,r as te,t}from"../chunks/entry.generated-BmVGptdJ.js";import{n as ne,t as n}from"../chunks/capability-motion-C3q5Xzv2.js";import{n as re,t as r}from"../chunks/entry.generated-CyynUmGS.js";import{n as i}from"../chunks/cursor-data-source-FA9FLGtB.js";import{n as a,r as o,t as s}from"../chunks/capability-sortable-Bh6pkITu.js";import{n as ie,t as c}from"../chunks/capability-resizable-ByUbMIHF.js";import{n as ae,t as l}from"../chunks/entry.generated-BeNK2EFl.js";import{n as u,t as d}from"../chunks/entry.generated-oJwO9fIY.js";import{n as f,r as p,t as m}from"../chunks/entry.generated-Dcm3s3ey.js";import{n as h,t as g}from"../chunks/entry.generated-C3cRWutN.js";import{n as oe,t as _}from"../chunks/entry.generated-CC6pQ0nu.js";import{n as se,t as v}from"../chunks/entry.generated-CGasYxmV.js";import{n as ce,t as y}from"../chunks/entry.generated-BLduYCHm.js";import{n as le,t as b}from"../chunks/entry.generated-DDJEGHq-.js";import{n as ue,t as x}from"../chunks/entry.generated-B7n4iFyw.js";import{n as de,r as fe,t as S}from"../chunks/entry.generated-BCTWp6Xu.js";import{n as C,t as w}from"../chunks/entry.generated-iMJrYzAB.js";import{a as T,i as E,n as D,o as O,r as k,t as A}from"../chunks/capability-shortcut-BwvEqEbL.js";import{t as j}from"../chunks/controller-crMEr9_l.js";import{t as M}from"../chunks/entry.generated-DVOBR4CK.js";import{n as N,r as P,t as F}from"../chunks/entry.generated-n_t4T8XC.js";import{n as I,r as L,t as R}from"../chunks/entry.generated-B41qiwNq.js";import{n as z,r as B,t as V}from"../chunks/entry.generated-Bq2KAnfO.js";import{n as pe,t as H}from"../chunks/entry.generated-BnqcHAaF.js";import{i as me,n as he,r as ge,t as U}from"../chunks/entry.generated-DjKX5KuB.js";import{n as _e,t as W}from"../chunks/entry.generated-R1BlPlZW.js";import{n as ve,t as G}from"../chunks/entry.generated-C3y5qBcc.js";import{n as ye,t as K}from"../chunks/entry.generated-ollD3I52.js";import{n as be,r as xe,t as q}from"../chunks/entry.generated-DScbsE6-.js";import{n as Se,t as J}from"../chunks/entry.generated-CvL196IN.js";import{n as Ce,t as Y}from"../chunks/entry.generated-D8iA1e6i.js";import{_ as we,a as Te,b as Ee,c as De,d as Oe,f as ke,g as Ae,h as je,i as Me,l as Ne,m as Pe,n as Fe,o as Ie,p as Le,r as X,s as Re,t as Z,u as ze,v as Be,x as Ve,y as He}from"../chunks/entry.generated-O0hEhk-2.js";var Q=new WeakSet,$=e=>{Q.has(e)||(Q.add(e),n(e),c(e),s(e),O(e),l(e),d(),m(e),g(e),_(e),v(e),y(e),b(e),x(e),S(e),w(e),M(e),F(e),R(e),V(e),H(e),r(e),U(e),W(e),G(e),K(e),t(e),q(e),J(e),Y(e),Z(e))};export{Fe as TABLE_ALIGNS,X as TABLE_BORDERS,Me as TABLE_COLUMN_SCOPES,Te as TABLE_DENSITIES,Ie as TABLE_FILTER_AS_VALUES,Re as TABLE_LAYOUTS,De as TABLE_ROW_HEADER_SCOPES,Ne as TABLE_SORTS,ze as TABLE_VALIGNS,Oe as TABLE_VARIANTS,ke as TABLE_WIDTHS,ae as UiAccordion,f as UiCheckbox,p as UiCheckboxGroup,Ce as UiCursorVirtualizer,Se as UiDataGrid,h as UiDatePicker,oe as UiDirectUpload,se as UiDropdown,ce as UiField,le as UiFileUpload,ue as UiFormset,de as UiImportMapper,C as UiInput,N as UiModal,P as UiModalTrigger,I as UiPanelToggle,L as UiPanels,z as UiRadio,B as UiRadioGroup,pe as UiScrollArea,re as UiSelect,he as UiSidebar,ge as UiSidebarEdge,me as UiSidebarToggle,_e as UiSlider,ve as UiSwitch,ye as UiTabs,ee as UiToast,te as UiToastOutlet,be as UiTooltip,i as UiVirtualizer,$ as components,$ as default,j as createKeybindingController,ie as createResizable,A as createShortcutMatcher,o as createSortableRegistry,D as formatShortcut,k as formatShortcutKeys,fe as mappingProjection,e as motion,E as observePressedShortcutKeys,T as parseShortcut,l as registerAccordion,ne as registerBoundsDirective,d as registerButton,m as registerCheckbox,J as registerDataGrid,g as registerDatePicker,_ as registerDirectUpload,v as registerDropdown,y as registerField,b as registerFileUpload,x as registerFormset,S as registerImportMapper,w as registerInput,M as registerKeybinding,F as registerModal,n as registerMotionCapability,R as registerPanels,V as registerRadio,c as registerResizableCapability,H as registerScrollArea,r as registerSelect,O as registerShortcutCapability,U as registerSidebar,W as registerSlider,s as registerSortableCapability,a as registerSortableDirective,G as registerSwitch,Z as registerTable,K as registerTabs,t as registerToast,q as registerTooltip,xe as registerTooltipDirective,Y as registerVirtualizer,Le as tableCaptionSchema,Pe as tableCellSchema,je as tableColumnFilterSchema,Ae as tableColumnSchema,we as tableEmptySchema,Be as tableRowHeaderSchema,He as tableRowSchema,Ee as tableSchema,Ve as tableSectionSchema,u as unregisterButton};
1
+ import{t as e}from"../chunks/motion-DI5H1Js0.js";import{n as ee,r as te,t}from"../chunks/entry.generated-CVOYoh61.js";import{n as ne,t as n}from"../chunks/capability-motion-BGVnZE_T.js";import{n as re,t as r}from"../chunks/entry.generated-DYQxGle9.js";import{n as i}from"../chunks/cursor-data-source-Do0FfF4Z.js";import{n as a,r as o,t as s}from"../chunks/capability-sortable-ehmPfdn1.js";import{n as ie,t as c}from"../chunks/capability-resizable-ByUbMIHF.js";import{n as ae,t as l}from"../chunks/entry.generated-D6ai6meC.js";import{n as u,t as d}from"../chunks/entry.generated-oJwO9fIY.js";import{n as f,r as p,t as m}from"../chunks/entry.generated-D2es_Wi2.js";import{n as h,t as g}from"../chunks/entry.generated-C_ObpRjR.js";import{n as oe,t as _}from"../chunks/entry.generated-CC6pQ0nu.js";import{n as se,t as v}from"../chunks/entry.generated-BAghaHV-.js";import{n as ce,t as y}from"../chunks/entry.generated-C_SxTqg5.js";import{n as le,t as b}from"../chunks/entry.generated-DDJEGHq-.js";import{n as ue,t as x}from"../chunks/entry.generated-xjydizn-.js";import{n as de,r as fe,t as S}from"../chunks/entry.generated-BCTWp6Xu.js";import{n as C,t as w}from"../chunks/entry.generated-BZWdGtgg.js";import{a as T,i as E,n as D,o as O,r as k,t as A}from"../chunks/capability-shortcut-DZUQHJ3A.js";import{t as j}from"../chunks/controller-CalXJ5hB.js";import{t as M}from"../chunks/entry.generated-DaXIKPN9.js";import{n as N,r as P,t as F}from"../chunks/entry.generated-DqL-zI7j.js";import{n as I,r as L,t as R}from"../chunks/entry.generated-D_jeOgRf.js";import{n as z,r as B,t as V}from"../chunks/entry.generated-CfYgsDun.js";import{n as pe,t as H}from"../chunks/entry.generated-BnqcHAaF.js";import{i as me,n as he,r as ge,t as U}from"../chunks/entry.generated-BREj4oHG.js";import{n as _e,t as W}from"../chunks/entry.generated-CVWqQEed.js";import{n as ve,t as G}from"../chunks/entry.generated-EqHVGr1d.js";import{n as ye,t as K}from"../chunks/entry.generated-Cb-VMAE1.js";import{n as be,r as xe,t as q}from"../chunks/entry.generated-z3EbXrD0.js";import{n as Se,t as J}from"../chunks/entry.generated-COp9wMCd.js";import{n as Ce,t as Y}from"../chunks/entry.generated-BQNpmLZO.js";import{_ as we,a as Te,b as Ee,c as De,d as Oe,f as ke,g as Ae,h as je,i as Me,l as Ne,m as Pe,n as Fe,o as Ie,p as Le,r as X,s as Re,t as Z,u as ze,v as Be,x as Ve,y as He}from"../chunks/entry.generated-O0hEhk-2.js";var Q=new WeakSet,$=e=>{Q.has(e)||(Q.add(e),n(e),c(e),s(e),O(e),l(e),d(),m(e),g(e),_(e),v(e),y(e),b(e),x(e),S(e),w(e),M(e),F(e),R(e),V(e),H(e),r(e),U(e),W(e),G(e),K(e),t(e),q(e),J(e),Y(e),Z(e))};export{Fe as TABLE_ALIGNS,X as TABLE_BORDERS,Me as TABLE_COLUMN_SCOPES,Te as TABLE_DENSITIES,Ie as TABLE_FILTER_AS_VALUES,Re as TABLE_LAYOUTS,De as TABLE_ROW_HEADER_SCOPES,Ne as TABLE_SORTS,ze as TABLE_VALIGNS,Oe as TABLE_VARIANTS,ke as TABLE_WIDTHS,ae as UiAccordion,f as UiCheckbox,p as UiCheckboxGroup,Ce as UiCursorVirtualizer,Se as UiDataGrid,h as UiDatePicker,oe as UiDirectUpload,se as UiDropdown,ce as UiField,le as UiFileUpload,ue as UiFormset,de as UiImportMapper,C as UiInput,N as UiModal,P as UiModalTrigger,I as UiPanelToggle,L as UiPanels,z as UiRadio,B as UiRadioGroup,pe as UiScrollArea,re as UiSelect,he as UiSidebar,ge as UiSidebarEdge,me as UiSidebarToggle,_e as UiSlider,ve as UiSwitch,ye as UiTabs,ee as UiToast,te as UiToastOutlet,be as UiTooltip,i as UiVirtualizer,$ as components,$ as default,j as createKeybindingController,ie as createResizable,A as createShortcutMatcher,o as createSortableRegistry,D as formatShortcut,k as formatShortcutKeys,fe as mappingProjection,e as motion,E as observePressedShortcutKeys,T as parseShortcut,l as registerAccordion,ne as registerBoundsDirective,d as registerButton,m as registerCheckbox,J as registerDataGrid,g as registerDatePicker,_ as registerDirectUpload,v as registerDropdown,y as registerField,b as registerFileUpload,x as registerFormset,S as registerImportMapper,w as registerInput,M as registerKeybinding,F as registerModal,n as registerMotionCapability,R as registerPanels,V as registerRadio,c as registerResizableCapability,H as registerScrollArea,r as registerSelect,O as registerShortcutCapability,U as registerSidebar,W as registerSlider,s as registerSortableCapability,a as registerSortableDirective,G as registerSwitch,Z as registerTable,K as registerTabs,t as registerToast,q as registerTooltip,xe as registerTooltipDirective,Y as registerVirtualizer,Le as tableCaptionSchema,Pe as tableCellSchema,je as tableColumnFilterSchema,Ae as tableColumnSchema,we as tableEmptySchema,Be as tableRowHeaderSchema,He as tableRowSchema,Ee as tableSchema,Ve as tableSectionSchema,u as unregisterButton};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-iMJrYzAB.js";export{e as UiInput,t as default,t as registerInput};
1
+ import{n as e,t}from"../chunks/entry.generated-BZWdGtgg.js";export{e as UiInput,t as default,t as registerInput};
@@ -1 +1 @@
1
- import{t as e}from"../chunks/controller-crMEr9_l.js";import{t}from"../chunks/entry.generated-DVOBR4CK.js";export{e as createKeybindingController,t as default,t as registerKeybinding};
1
+ import{t as e}from"../chunks/controller-CalXJ5hB.js";import{t}from"../chunks/entry.generated-DaXIKPN9.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-n_t4T8XC.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-DqL-zI7j.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-B41qiwNq.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-D_jeOgRf.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-Bq2KAnfO.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-CfYgsDun.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-CyynUmGS.js";export{e as UiSelect,t as default,t as registerSelect};
1
+ import{n as e,t}from"../chunks/entry.generated-DYQxGle9.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-DjKX5KuB.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/entry.generated-BREj4oHG.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/entry.generated-R1BlPlZW.js";export{e as UiSlider,t as default,t as registerSlider};
1
+ import{n as e,t}from"../chunks/entry.generated-CVWqQEed.js";export{e as UiSlider,t as default,t as registerSlider};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-C3y5qBcc.js";export{e as UiSwitch,t as default,t as registerSwitch};
1
+ import{n as e,t}from"../chunks/entry.generated-EqHVGr1d.js";export{e as UiSwitch,t as default,t as registerSwitch};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-ollD3I52.js";export{e as UiTabs,t as default,t as registerTabs};
1
+ import{n as e,t}from"../chunks/entry.generated-Cb-VMAE1.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-BmVGptdJ.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-CVOYoh61.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-DScbsE6-.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-z3EbXrD0.js";export{e as UiTooltip,n as default,n as registerTooltip,t as registerTooltipDirective};
@@ -1 +1 @@
1
- import{n as e}from"../chunks/cursor-data-source-FA9FLGtB.js";import{n as t,t as n}from"../chunks/entry.generated-D8iA1e6i.js";export{t as UiCursorVirtualizer,e as UiVirtualizer,n as default,n as registerVirtualizer};
1
+ import{n as e}from"../chunks/cursor-data-source-Do0FfF4Z.js";import{n as t,t as n}from"../chunks/entry.generated-BQNpmLZO.js";export{t as UiCursorVirtualizer,e as UiVirtualizer,n as default,n as registerVirtualizer};
@@ -1 +1 @@
1
- import{i as e}from"./chunks/ui-CGwc8KXJ.js";import{a as t,c as n,f as r,l as i,n as a,o,s}from"./chunks/codecs-CQ7olTJL.js";import{i as c,r as l,t as u}from"./chunks/alpine-machine-CE2UN4Qu.js";import{n as d}from"./chunks/alpine-data-Dvc_bXq6.js";import{a as f,i as p,n as m,r as h,t as g}from"./chunks/core-DOHj5fa1.js";import{n as _,t as v}from"./chunks/styles-CX2j92ex.js";import{t as y}from"./chunks/merge-bindings-BtqW3UgP.js";import{t as b}from"./chunks/machine-CNnHDbyo.js";export{a as bool,g as coreRuntime,g as default,u as createAlpineMachine,b as createMachine,l as createTransitionCoordinator,t as decodeProps,d as defineAlpineData,c as defineHook,h as defineManifest,o as defineProps,p as defineSchemaManifest,v as defineStyles,s as json,y as mergeBindings,n as number,i as oneOf,f as propsFromSchema,m as registerTransitionDirective,_ as resolveStyle,r as string,e as ui};
1
+ import{i as e}from"./chunks/ui-CTQoglp3.js";import{a as t,c as n,f as r,l as i,n as a,o,s}from"./chunks/codecs-CQ7olTJL.js";import{i as c,r as l,t as u}from"./chunks/alpine-machine-CE2UN4Qu.js";import{n as d}from"./chunks/alpine-data-Dvc_bXq6.js";import{a as f,i as p,n as m,r as h,t as g}from"./chunks/core-Ybm_WmKr.js";import{n as _,t as v}from"./chunks/styles-CX2j92ex.js";import{t as y}from"./chunks/merge-bindings-BtqW3UgP.js";import{t as b}from"./chunks/machine-CNnHDbyo.js";export{a as bool,g as coreRuntime,g as default,u as createAlpineMachine,b as createMachine,l as createTransitionCoordinator,t as decodeProps,d as defineAlpineData,c as defineHook,h as defineManifest,o as defineProps,p as defineSchemaManifest,v as defineStyles,s as json,y as mergeBindings,n as number,i as oneOf,f as propsFromSchema,m as registerTransitionDirective,_ as resolveStyle,r as string,e as ui};
@@ -1,2 +1,2 @@
1
- import{i as e}from"./chunks/ui-CGwc8KXJ.js";import{n as ee}from"./chunks/bridge-DMrvM3JE.js";import{t}from"./chunks/motion-CbwLBhMt.js";import{n as te,r as ne,t as re}from"./chunks/entry.generated-BmVGptdJ.js";import{n,t as r}from"./chunks/capability-motion-C3q5Xzv2.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-CQ7olTJL.js";import{i as d,r as f,t as p}from"./chunks/alpine-machine-CE2UN4Qu.js";import{n as m}from"./chunks/alpine-data-Dvc_bXq6.js";import{a as h,i as g,n as _,r as v,t as y}from"./chunks/core-DOHj5fa1.js";import{n as b,t as x}from"./chunks/styles-CX2j92ex.js";import{t as S}from"./chunks/merge-bindings-BtqW3UgP.js";import{t as C}from"./chunks/machine-CNnHDbyo.js";import{n as w,t as T}from"./chunks/entry.generated-CyynUmGS.js";import{n as E}from"./chunks/cursor-data-source-FA9FLGtB.js";import{n as D,r as O,t as k}from"./chunks/capability-sortable-Bh6pkITu.js";import{n as A,t as j}from"./chunks/capability-resizable-ByUbMIHF.js";import{n as M,t as N}from"./chunks/entry.generated-BeNK2EFl.js";import{n as P,t as F}from"./chunks/entry.generated-oJwO9fIY.js";import{n as I,r as L,t as R}from"./chunks/entry.generated-Dcm3s3ey.js";import{n as z,t as B}from"./chunks/entry.generated-C3cRWutN.js";import{n as V,t as H}from"./chunks/entry.generated-CC6pQ0nu.js";import{n as U,t as W}from"./chunks/entry.generated-CGasYxmV.js";import{n as G,t as K}from"./chunks/entry.generated-BLduYCHm.js";import{n as q,t as J}from"./chunks/entry.generated-DDJEGHq-.js";import{n as Y,t as X}from"./chunks/entry.generated-B7n4iFyw.js";import{n as ie,r as ae,t as oe}from"./chunks/entry.generated-BCTWp6Xu.js";import{n as se,t as ce}from"./chunks/entry.generated-iMJrYzAB.js";import{a as le,i as ue,n as de,o as fe,r as Z,t as pe}from"./chunks/capability-shortcut-BwvEqEbL.js";import{t as me}from"./chunks/controller-crMEr9_l.js";import{t as he}from"./chunks/entry.generated-DVOBR4CK.js";import{n as ge,r as _e,t as ve}from"./chunks/entry.generated-n_t4T8XC.js";import{n as ye,r as be,t as xe}from"./chunks/entry.generated-B41qiwNq.js";import{n as Se,r as Ce,t as we}from"./chunks/entry.generated-Bq2KAnfO.js";import{n as Te,t as Ee}from"./chunks/entry.generated-BnqcHAaF.js";import{i as De,n as Oe,r as ke,t as Ae}from"./chunks/entry.generated-DjKX5KuB.js";import{n as je,t as Me}from"./chunks/entry.generated-R1BlPlZW.js";import{n as Ne,t as Pe}from"./chunks/entry.generated-C3y5qBcc.js";import{n as Fe,t as Ie}from"./chunks/entry.generated-ollD3I52.js";import{n as Le,r as Re,t as ze}from"./chunks/entry.generated-DScbsE6-.js";import{n as Be,t as Ve}from"./chunks/entry.generated-CvL196IN.js";import{n as He,t as Ue}from"./chunks/entry.generated-D8iA1e6i.js";import{_ as We,a as Ge,b as Ke,c as qe,d as Je,f as Ye,g as Xe,h as Ze,i as Qe,l as $e,m as et,n as tt,o as nt,p as rt,r as it,s as at,t as ot,u as st,v as ct,x as lt,y as ut}from"./chunks/entry.generated-O0hEhk-2.js";import{components as Q}from"./components/index.js";var dt=`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:formset.trellis:import-mapper.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=>{y(e),Q(e),ee(dt,e)};export{tt as TABLE_ALIGNS,it as TABLE_BORDERS,Qe as TABLE_COLUMN_SCOPES,Ge as TABLE_DENSITIES,nt as TABLE_FILTER_AS_VALUES,at as TABLE_LAYOUTS,qe as TABLE_ROW_HEADER_SCOPES,$e as TABLE_SORTS,st as TABLE_VALIGNS,Je as TABLE_VARIANTS,Ye as TABLE_WIDTHS,M as UiAccordion,I as UiCheckbox,L as UiCheckboxGroup,He as UiCursorVirtualizer,Be as UiDataGrid,z as UiDatePicker,V as UiDirectUpload,U as UiDropdown,G as UiField,q as UiFileUpload,Y as UiFormset,ie as UiImportMapper,se as UiInput,ge as UiModal,_e as UiModalTrigger,ye as UiPanelToggle,be as UiPanels,Se as UiRadio,Ce as UiRadioGroup,Te as UiScrollArea,w as UiSelect,Oe as UiSidebar,ke as UiSidebarEdge,De as UiSidebarToggle,je as UiSlider,Ne as UiSwitch,Fe as UiTabs,te as UiToast,ne as UiToastOutlet,Le as UiTooltip,E as UiVirtualizer,c as bool,Q as components,y as coreRuntime,p as createAlpineMachine,me as createKeybindingController,C as createMachine,A as createResizable,pe as createShortcutMatcher,O as createSortableRegistry,f as createTransitionCoordinator,i as decodeProps,$ as default,$ as trellisUi,m as defineAlpineData,d as defineHook,v as defineManifest,l as defineProps,g as defineSchemaManifest,x as defineStyles,de as formatShortcut,Z as formatShortcutKeys,u as json,ae as mappingProjection,S as mergeBindings,t as motion,a as number,ue as observePressedShortcutKeys,s as oneOf,le as parseShortcut,h as propsFromSchema,N as registerAccordion,n as registerBoundsDirective,F as registerButton,R as registerCheckbox,Ve as registerDataGrid,B as registerDatePicker,H as registerDirectUpload,W as registerDropdown,K as registerField,J as registerFileUpload,X as registerFormset,oe as registerImportMapper,ce as registerInput,he as registerKeybinding,ve as registerModal,r as registerMotionCapability,xe as registerPanels,we as registerRadio,j as registerResizableCapability,Ee as registerScrollArea,T as registerSelect,fe as registerShortcutCapability,Ae as registerSidebar,Me as registerSlider,k as registerSortableCapability,D as registerSortableDirective,Pe as registerSwitch,ot as registerTable,Ie as registerTabs,re as registerToast,ze as registerTooltip,Re as registerTooltipDirective,_ as registerTransitionDirective,Ue as registerVirtualizer,b as resolveStyle,o as string,rt as tableCaptionSchema,et as tableCellSchema,Ze as tableColumnFilterSchema,Xe as tableColumnSchema,We as tableEmptySchema,ct as tableRowHeaderSchema,ut as tableRowSchema,Ke as tableSchema,lt as tableSectionSchema,e as ui,P as unregisterButton};
1
+ import{i as e}from"./chunks/ui-CTQoglp3.js";import{n as ee}from"./chunks/bridge-DMrvM3JE.js";import{t}from"./chunks/motion-DI5H1Js0.js";import{n as te,r as ne,t as re}from"./chunks/entry.generated-CVOYoh61.js";import{n,t as r}from"./chunks/capability-motion-BGVnZE_T.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-CQ7olTJL.js";import{i as d,r as f,t as p}from"./chunks/alpine-machine-CE2UN4Qu.js";import{n as m}from"./chunks/alpine-data-Dvc_bXq6.js";import{a as h,i as g,n as _,r as v,t as y}from"./chunks/core-Ybm_WmKr.js";import{n as b,t as x}from"./chunks/styles-CX2j92ex.js";import{t as S}from"./chunks/merge-bindings-BtqW3UgP.js";import{t as C}from"./chunks/machine-CNnHDbyo.js";import{n as w,t as T}from"./chunks/entry.generated-DYQxGle9.js";import{n as E}from"./chunks/cursor-data-source-Do0FfF4Z.js";import{n as D,r as O,t as k}from"./chunks/capability-sortable-ehmPfdn1.js";import{n as A,t as j}from"./chunks/capability-resizable-ByUbMIHF.js";import{n as M,t as N}from"./chunks/entry.generated-D6ai6meC.js";import{n as P,t as F}from"./chunks/entry.generated-oJwO9fIY.js";import{n as I,r as L,t as R}from"./chunks/entry.generated-D2es_Wi2.js";import{n as z,t as B}from"./chunks/entry.generated-C_ObpRjR.js";import{n as V,t as H}from"./chunks/entry.generated-CC6pQ0nu.js";import{n as U,t as W}from"./chunks/entry.generated-BAghaHV-.js";import{n as G,t as K}from"./chunks/entry.generated-C_SxTqg5.js";import{n as q,t as J}from"./chunks/entry.generated-DDJEGHq-.js";import{n as Y,t as X}from"./chunks/entry.generated-xjydizn-.js";import{n as ie,r as ae,t as oe}from"./chunks/entry.generated-BCTWp6Xu.js";import{n as se,t as ce}from"./chunks/entry.generated-BZWdGtgg.js";import{a as le,i as ue,n as de,o as fe,r as Z,t as pe}from"./chunks/capability-shortcut-DZUQHJ3A.js";import{t as me}from"./chunks/controller-CalXJ5hB.js";import{t as he}from"./chunks/entry.generated-DaXIKPN9.js";import{n as ge,r as _e,t as ve}from"./chunks/entry.generated-DqL-zI7j.js";import{n as ye,r as be,t as xe}from"./chunks/entry.generated-D_jeOgRf.js";import{n as Se,r as Ce,t as we}from"./chunks/entry.generated-CfYgsDun.js";import{n as Te,t as Ee}from"./chunks/entry.generated-BnqcHAaF.js";import{i as De,n as Oe,r as ke,t as Ae}from"./chunks/entry.generated-BREj4oHG.js";import{n as je,t as Me}from"./chunks/entry.generated-CVWqQEed.js";import{n as Ne,t as Pe}from"./chunks/entry.generated-EqHVGr1d.js";import{n as Fe,t as Ie}from"./chunks/entry.generated-Cb-VMAE1.js";import{n as Le,r as Re,t as ze}from"./chunks/entry.generated-z3EbXrD0.js";import{n as Be,t as Ve}from"./chunks/entry.generated-COp9wMCd.js";import{n as He,t as Ue}from"./chunks/entry.generated-BQNpmLZO.js";import{_ as We,a as Ge,b as Ke,c as qe,d as Je,f as Ye,g as Xe,h as Ze,i as Qe,l as $e,m as et,n as tt,o as nt,p as rt,r as it,s as at,t as ot,u as st,v as ct,x as lt,y as ut}from"./chunks/entry.generated-O0hEhk-2.js";import{components as Q}from"./components/index.js";var dt=`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:formset.trellis:import-mapper.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=>{y(e),Q(e),ee(dt,e)};export{tt as TABLE_ALIGNS,it as TABLE_BORDERS,Qe as TABLE_COLUMN_SCOPES,Ge as TABLE_DENSITIES,nt as TABLE_FILTER_AS_VALUES,at as TABLE_LAYOUTS,qe as TABLE_ROW_HEADER_SCOPES,$e as TABLE_SORTS,st as TABLE_VALIGNS,Je as TABLE_VARIANTS,Ye as TABLE_WIDTHS,M as UiAccordion,I as UiCheckbox,L as UiCheckboxGroup,He as UiCursorVirtualizer,Be as UiDataGrid,z as UiDatePicker,V as UiDirectUpload,U as UiDropdown,G as UiField,q as UiFileUpload,Y as UiFormset,ie as UiImportMapper,se as UiInput,ge as UiModal,_e as UiModalTrigger,ye as UiPanelToggle,be as UiPanels,Se as UiRadio,Ce as UiRadioGroup,Te as UiScrollArea,w as UiSelect,Oe as UiSidebar,ke as UiSidebarEdge,De as UiSidebarToggle,je as UiSlider,Ne as UiSwitch,Fe as UiTabs,te as UiToast,ne as UiToastOutlet,Le as UiTooltip,E as UiVirtualizer,c as bool,Q as components,y as coreRuntime,p as createAlpineMachine,me as createKeybindingController,C as createMachine,A as createResizable,pe as createShortcutMatcher,O as createSortableRegistry,f as createTransitionCoordinator,i as decodeProps,$ as default,$ as trellisUi,m as defineAlpineData,d as defineHook,v as defineManifest,l as defineProps,g as defineSchemaManifest,x as defineStyles,de as formatShortcut,Z as formatShortcutKeys,u as json,ae as mappingProjection,S as mergeBindings,t as motion,a as number,ue as observePressedShortcutKeys,s as oneOf,le as parseShortcut,h as propsFromSchema,N as registerAccordion,n as registerBoundsDirective,F as registerButton,R as registerCheckbox,Ve as registerDataGrid,B as registerDatePicker,H as registerDirectUpload,W as registerDropdown,K as registerField,J as registerFileUpload,X as registerFormset,oe as registerImportMapper,ce as registerInput,he as registerKeybinding,ve as registerModal,r as registerMotionCapability,xe as registerPanels,we as registerRadio,j as registerResizableCapability,Ee as registerScrollArea,T as registerSelect,fe as registerShortcutCapability,Ae as registerSidebar,Me as registerSlider,k as registerSortableCapability,D as registerSortableDirective,Pe as registerSwitch,ot as registerTable,Ie as registerTabs,re as registerToast,ze as registerTooltip,Re as registerTooltipDirective,_ as registerTransitionDirective,Ue as registerVirtualizer,b as resolveStyle,o as string,rt as tableCaptionSchema,et as tableCellSchema,Ze as tableColumnFilterSchema,Xe as tableColumnSchema,We as tableEmptySchema,ct as tableRowHeaderSchema,ut as tableRowSchema,Ke as tableSchema,lt as tableSectionSchema,e as ui,P as unregisterButton};
2
2
  //# sourceMappingURL=index.js.map